diff options
Diffstat (limited to 'includes/js/dojox/wire/TextAdapter.js')
-rw-r--r-- | includes/js/dojox/wire/TextAdapter.js | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/includes/js/dojox/wire/TextAdapter.js b/includes/js/dojox/wire/TextAdapter.js new file mode 100644 index 0000000..36e7f1d --- /dev/null +++ b/includes/js/dojox/wire/TextAdapter.js @@ -0,0 +1,88 @@ +if(!dojo._hasResource["dojox.wire.TextAdapter"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. +dojo._hasResource["dojox.wire.TextAdapter"] = true; +dojo.provide("dojox.wire.TextAdapter"); + +dojo.require("dojox.wire.CompositeWire"); + +dojo.declare("dojox.wire.TextAdapter", dojox.wire.CompositeWire, { + // summary: + // A composite Wire for a concatenated text + // description: + // This class has multiple child Wires for text segment values. + // Wires in 'segments' property are used to get text segments and + // values are concatenated with an optional delimiter string specified + // to 'delimiter' property. + + _wireClass: "dojox.wire.TextAdapter", + + constructor: function(/*Object*/args){ + // summary: + // Initialize properties + // description: + // If array elements specified in 'segments' are not Wires, Wires + // are created from them as arguments, with 'parent' property set + // to this Wire instance. + // args: + // Arguments to initialize properties + // segments: + // An array containing child Wires for text segment values + // delimiter: + // A delimiter string + this._initializeChildren(this.segments); + if(!this.delimiter){ + this.delimiter = ""; + } + }, + + _getValue: function(/*Object||Array*/object){ + // summary: + // Return a concatenated text + // description: + // This method calls getValue() method of the child Wires wuth + // 'object' argument and concatenate the values with 'delimiter' + // property to return. + // arg: + // A root object + // returns: + // A concatinated text + if(!object || !this.segments){ + return object; //Object||Array + } + + var text = ""; + for(var i in this.segments){ + var segment = this.segments[i].getValue(object); + text = this._addSegment(text, segment); + } + return text; //String + }, + + _setValue: function(/*Object||Array*/object, /*String*/value){ + // summary: + // Not supported + throw new Error("Unsupported API: " + this._wireClass + "._setValue"); + }, + + _addSegment: function(/*String*/text, /*String*/segment){ + // summary: + // Return a concatenated text + // description: + // This method add a text segment specified to 'segment' argument + // to a base text specified to 'text', with 'delimiter' property. + // text: + // A base text + // segment: + // A text segment to add + // returns: + // A concatinated text + if(!segment){ + return text; //String + }else if(!text){ + return segment; //String + }else{ + return text + this.delimiter + segment; //String + } + } +}); + +} |