API Reference 0.3.24uibinderParser<O>

Parser<O> class

Owner class parser. It looks UiField anotations of fields and collect them in variables. It keeps instance mirror of owner in ownerInstance.

class Parser<O> {

 Map<String, VariableMirror> variables = new Map<String, VariableMirror>();
 InstanceMirror ownerInstance;
 
 /**
  * Parse owner class to find UiFields.
  */
 void parse(O owner) {
   ownerInstance = reflect(owner);
   _findVariables();
 }
 
 /**
  * Find all UiField variables. 
  */
 void _findVariables() {
   _uiFieldVariables(ownerInstance.type).forEach((VariableMirror variable){
     variables[_symbolAsString(variable.simpleName)] = variable;
   });
 }
 
 /**
  * Returns ui field variables from [clazz].
  */
 Iterable<VariableMirror> _uiFieldVariables(ClassMirror clazz) => 
     clazz.variables.values.where(_testUiField);
 
 /**
  * Test method returns true if the declared [element] is UiField
  */
 bool _testUiField(DeclarationMirror element) => 
     element.metadata.any((InstanceMirror im) => im.reflectee is _UiField);
 
 //********
 // Utility
 //********
 
 String _symbolAsString(Symbol symbol) => MirrorSystem.getName(symbol);
}

Properties

InstanceMirror ownerInstance #

InstanceMirror ownerInstance

Map<String, VariableMirror> variables #

Map<String, VariableMirror> variables = new Map<String, VariableMirror>()

Methods

void parse(O owner) #

Parse owner class to find UiFields.

void parse(O owner) {
 ownerInstance = reflect(owner);
 _findVariables();
}