diff --git a/compiler/index.js b/compiler/index.js index 29e47fcd3..17f642ee7 100644 --- a/compiler/index.js +++ b/compiler/index.js @@ -127,13 +127,16 @@ exports.createWalker = createWalker; exports.builder = Builder.DEFAULT_BUILDER; var taglibLookup = require('./taglib-lookup'); +exports.taglibLookup = taglibLookup; +exports.taglibLoader = require('./taglib-loader'); + taglibLookup.registerTaglib(require.resolve('../taglibs/core/marko-taglib.json')); taglibLookup.registerTaglib(require.resolve('../taglibs/layout/marko-taglib.json')); taglibLookup.registerTaglib(require.resolve('../taglibs/html/marko-taglib.json')); /* exports.Taglib = require('./Taglib'); -exports.loader = require('./taglib-loader'); + exports.lookup = require('./taglib-lookup'); exports.buildLookup = exports.lookup.buildLookup; exports.registerTaglib = exports.lookup.registerTaglib; diff --git a/compiler/taglib-lookup/index.js b/compiler/taglib-lookup/index.js index 12a5c77a8..2cc74642f 100644 --- a/compiler/taglib-lookup/index.js +++ b/compiler/taglib-lookup/index.js @@ -14,6 +14,9 @@ * limitations under the License. */ 'use strict'; +exports.registerTaglib = registerTaglib; +exports.buildLookup = buildLookup; +exports.clearCaches = clearCaches; var taglibLoader = require('../taglib-loader'); var taglibFinder = require('../taglib-finder'); @@ -74,9 +77,4 @@ function registerTaglib(taglib) { function clearCaches() { lookupCache = {}; -} - -exports.excludeDir = taglibFinder.excludeDir; -exports.registerTaglib = registerTaglib; -exports.buildLookup = buildLookup; -exports.clearCaches = clearCaches; \ No newline at end of file +} \ No newline at end of file diff --git a/taglibs/core/marko-taglib.json b/taglibs/core/marko-taglib.json index 6558f4cbe..b2904d01b 100644 --- a/taglibs/core/marko-taglib.json +++ b/taglibs/core/marko-taglib.json @@ -47,6 +47,9 @@ "@else-if": "argument", "@else": "argument", "@for": "argument", - "transformer": "./core-transformer" + "transformer": { + "path": "./core-transformer", + "priority": 0 + } } } \ No newline at end of file diff --git a/test/fixtures/taglib-custom-attribute/marko-taglib.json b/test/fixtures/taglib-custom-attribute/marko-taglib.json new file mode 100644 index 000000000..9acdd3ce6 --- /dev/null +++ b/test/fixtures/taglib-custom-attribute/marko-taglib.json @@ -0,0 +1,5 @@ +{ + "<*>": { + "@global-attribute": "boolean" + } +} \ No newline at end of file diff --git a/test/fixtures/taglib-duplicate/foo-renderer.js b/test/fixtures/taglib-duplicate/foo-renderer.js new file mode 100644 index 000000000..ddb02a748 --- /dev/null +++ b/test/fixtures/taglib-duplicate/foo-renderer.js @@ -0,0 +1,3 @@ +exports.render = function(input, out) { + +}; \ No newline at end of file diff --git a/test/fixtures/taglib-duplicate/marko-taglib.json b/test/fixtures/taglib-duplicate/marko-taglib.json new file mode 100644 index 000000000..abe89e11c --- /dev/null +++ b/test/fixtures/taglib-duplicate/marko-taglib.json @@ -0,0 +1,6 @@ +{ + "taglib-id": "taglib-duplicate", + "": { + "renderer": "./foo-renderer.js" + } +} \ No newline at end of file diff --git a/test/fixtures/taglib-duplicate/taglib-duplicate/bar-renderer.js b/test/fixtures/taglib-duplicate/taglib-duplicate/bar-renderer.js new file mode 100644 index 000000000..ddb02a748 --- /dev/null +++ b/test/fixtures/taglib-duplicate/taglib-duplicate/bar-renderer.js @@ -0,0 +1,3 @@ +exports.render = function(input, out) { + +}; \ No newline at end of file diff --git a/test/fixtures/taglib-duplicate/taglib-duplicate/marko-taglib.json b/test/fixtures/taglib-duplicate/taglib-duplicate/marko-taglib.json new file mode 100644 index 000000000..b9bd03fdf --- /dev/null +++ b/test/fixtures/taglib-duplicate/taglib-duplicate/marko-taglib.json @@ -0,0 +1,6 @@ +{ + "taglib-id": "taglib-duplicate", + "": { + "renderer": "./bar-renderer.js" + } +} \ No newline at end of file diff --git a/test/fixtures/taglib-dynamic-attribute/marko-taglib.json b/test/fixtures/taglib-dynamic-attribute/marko-taglib.json new file mode 100644 index 000000000..5a1c3270f --- /dev/null +++ b/test/fixtures/taglib-dynamic-attribute/marko-taglib.json @@ -0,0 +1,7 @@ +{ + "": { + "renderer": "./renderer.js", + "@foo": "string", + "@*": "boolean" + } +} \ No newline at end of file diff --git a/test/fixtures/taglib-dynamic-attribute/renderer.js b/test/fixtures/taglib-dynamic-attribute/renderer.js new file mode 100644 index 000000000..c3b42bc5b --- /dev/null +++ b/test/fixtures/taglib-dynamic-attribute/renderer.js @@ -0,0 +1 @@ +module.exports = function() {}; \ No newline at end of file diff --git a/test/fixtures/taglib-nested/foo-renderer.js b/test/fixtures/taglib-nested/foo-renderer.js new file mode 100644 index 000000000..7ba89a90b --- /dev/null +++ b/test/fixtures/taglib-nested/foo-renderer.js @@ -0,0 +1,3 @@ +exports.render = function(input, out) { + out.write('nested/a'); +}; \ No newline at end of file diff --git a/test/fixtures/taglib-nested/marko-taglib.json b/test/fixtures/taglib-nested/marko-taglib.json new file mode 100644 index 000000000..db511eda3 --- /dev/null +++ b/test/fixtures/taglib-nested/marko-taglib.json @@ -0,0 +1,10 @@ +{ + "tags": { + "nested-foo": { + "renderer": "./foo-renderer.js", + "attributes": { + "attr1": "string" + } + } + } +} \ No newline at end of file diff --git a/test/fixtures/taglib-shorthand/marko-taglib.json b/test/fixtures/taglib-shorthand/marko-taglib.json new file mode 100644 index 000000000..9fc49894f --- /dev/null +++ b/test/fixtures/taglib-shorthand/marko-taglib.json @@ -0,0 +1,25 @@ +{ + "": { + "@label