silk.drivers = ( xb.core.object.extend( { ctor: function() { this.library = silk.html.selector.library(); } } ) )(); silk.drivers.accessors = {}; silk.drivers.accessors.base = xb.core.object.extend( { ctor: function( object, parent ) { this.__object = object; this.__parent = ( typeof( parent ) === "object" ) ? parent : null; }, parent: function() { return this.__object.parent( this ); }, properties: function() { return this.__object.properties( this ); }, get: function() { debugger; return null; } } ); silk.drivers.accessors.struct = xb.core.object.extend( silk.drivers.accessors.base, { ctor: function( context, offset ) { silk.drivers.accessors.base.prototype.ctor.call( this, context, offset ); }, } ); silk.drivers.accessors.field = xb.core.object.extend( silk.drivers.accessors.base, { ctor: function( context, offset ) { silk.drivers.accessors.base.prototype.ctor.call( this, context, offset ); }, get: function() { var name = this.properties()[ "name" ]; var parent = this.parent(); var data = parent.get(); return data[ name ]; }, } ); silk.drivers.accessors.list = xb.core.object.extend( silk.drivers.accessors.base, { ctor: function( context, offset ) { silk.drivers.accessors.base.prototype.ctor.call( this, context, offset ); }, get: function() { var name = this.properties()[ "name" ]; var parent = this.parent(); var data = parent.get(); return data[ name ]; }, } ); silk.drivers.accessors.listItem = xb.core.object.extend( silk.drivers.accessors.struct, { ctor: function( context, offset ) { silk.drivers.accessors.base.prototype.ctor.call( this, context, offset ); }, get: function() { var name = this.properties()[ "index" ]; var parent = this.parent(); var data = parent.get(); return data[ name ]; }, } ); silk.drivers.accessors.resource = xb.core.object.extend( silk.drivers.accessors.base, { ctor: function( context, offset ) { silk.drivers.accessors.base.prototype.ctor.call( this, context, offset ); }, get: function() { var data = dispatcher.getResource( this.properties()[ "resource" ] ).data; var name = this.properties()[ "name" ]; var list = data[ name ].getArray(); var result = {}; result[ name ] = list; return result; }, } ); // resource, resourceList // list, struct, index, field silk.drivers.objects = {}; silk.html .query( "body := object" ) .select( function( m ) { return ( { path: "" + window.location.pathname , } ); } ) .publish( [ "silk/html/properties" ] ) ; silk.html .query( "[data-simply-path] := object" ) .select( function( m ) { return ( { path: m.object.domNode.getAttribute( "data-simply-path" ) } ); } ) .publish( [ "silk/html/properties" ] ) ; silk.html .query( "[data-simply-data][data-simply-list] := object" ) .select( function( m ) { return ( { resource: m.object.domNode.getAttribute( "data-simply-data" ) , accessors: [ silk.drivers.accessors.resource ] } ); } ) .publish( [ "silk/html/properties" ] ) ; silk.html .query( "[data-silk-mount] := object" ) .select( function( m ) { return ( { mount: m.object.domNode.getAttribute( "data-silk-mount" ) } ); } ) .publish( [ "silk/html/properties" ] ) ; silk.html .query( [ "[data-simply-list] := object" ] ) .select( function( m ) { return ( { name: m.object.domNode.getAttribute( "data-simply-list" ) , accessors: [ silk.drivers.accessors.list ] } ); } ) .publish( [ "silk/html/properties" ] ) ; silk.html .query( "[data-simply-list] := list > * := object" ) .select( function( m ) { return ( { index: m.list.domNode.indexOf( m.object.domNode ) , accessors: [ silk.drivers.accessors.listItem ] } ); } ) .publish( [ "silk/html/properties" ] ) ; silk.html .query( [ "[data-simply-template] := object" ] ) .select( function( m ) { return ( { template: m.object.domNode.getAttribute( "data-simply-template" ) } ); } ) .publish( [ "silk/html/properties" ] ) ; silk.html .query( [ "[data-simply-field] := object" ] ) .select( function( m ) { return ( { name: m.object.domNode.getAttribute( "data-simply-field" ) , accessors: [ silk.drivers.accessors.field ] } ); } ) .publish( [ "silk/html/properties" ] ) ;