source index.js
Full url: ./modules/prototype/index.js
/**
* Prototype Module
* @module Prototype
* @memberof smx
* @description
*
* The Prototype module provides a customizable XML transformation
* layer.
*
* Using the key tag `<prototype>` you can define a collection of
* transformation rules based on CSS selectors. The rules cannot modify the
* tree, transformations are limited to attributes only. You can add,
* remove and override attributes.
*
* The transformations are applied after the XML tree completes the
* loading, while smx parsing process. `<prototype>` tags are removed once
* they get parsed. No footprints on resultant working XML tree.
*
* You can think of it as CSS for XML attributes, kind of XSLT but using CSS
* selectors instead of XSLT patterns.
*
* ### Reserved XML: `<prototype>`.
*
* @example
* <!-- source library.xml -->
* <library>
*
* <prototype>
* <![CDATA[
*
* //all nodes named 'book' will have a
* //'type' attribute with 'html' as value
* book{
* type: txt;
* }
*
* //all nodes named 'book' having the class 'markdown' will have
* //an attribute 'type' with the value 'html' and
* //an attribute 'formatted' with the value 'true'
* book.markdown{
* type: md;
* formatted: true;
* }
* ]]>
* </prototype>
*
* <book>..</book>
* <book>..</book>
* <book class="markdown">..</book>
*
* <library>
*
* <!-- processed library.xml -->
* <library>
* <book type="html">..</book>
* <book type="html">..</book>
* <book class="markdown" type="md" formatted="true">..</book>
* <library>
*/
import PrototypeProcessor from './PrototypeProcessor.js';
var Processor = function(xmlDocument, _callback){
var doc = xmlDocument;
var __callback = _callback || function(){};
PrototypeProcessor.processXMLDocument(xmlDocument, {
callback: function(xmlDocument, data){
__callback({
proto: data
});
}
});
};
export default {
Processor: Processor
};