diff --git a/build.json b/build.json
new file mode 100644
index 0000000..d957ebb
--- /dev/null
+++ b/build.json
@@ -0,0 +1,5 @@
+[
+ "src/Parser.js",
+ "src/HTMLImports.js",
+ "src/boot.js"
+]
diff --git a/conf/karma.conf.js b/conf/karma.conf.js
index a204c98..8cdb5af 100644
--- a/conf/karma.conf.js
+++ b/conf/karma.conf.js
@@ -1,88 +1,84 @@
-// Sample Karma configuration file, that contain pretty much all the available options
-// It's used for running client tests on Travis (http://travis-ci.org/#!/karma-runner/karma)
-// Most of the options can be overriden by cli arguments (see karma --help)
-//
-// For all available config options and default values, see:
-// https://github.com/karma-runner/karma/blob/stable/lib/config.js#L54
-
-
-// base path, that will be used to resolve files and exclude
-basePath = '../';
-
-// list of files / patterns to load in the browser
-files = [
- 'tools/test/mocha-htmltest.js',
- 'conf/mocha.conf.js',
- 'node_modules/chai/chai.js',
- 'test/js/*.js',
- 'html-imports.js',
- {pattern: 'tools/**/*.js', included: false},
- {pattern: 'src/*', included: false},
- {pattern: 'test/**/*', included: false}
-];
-
-// list of files to exclude
-exclude = [];
-
-frameworks = ['mocha'];
-
-// use dots reporter, as travis terminal does not support escaping sequences
-// possible values: 'dots', 'progress', 'junit', 'teamcity'
-// CLI --reporters progress
-reporters = ['progress'];
-
-// web server port
-// CLI --port 9876
-port = 9876;
-
-// cli runner port
-// CLI --runner-port 9100
-runnerPort = 9100;
-
-// enable / disable colors in the output (reporters and logs)
-// CLI --colors --no-colors
-colors = true;
-
-// level of logging
-// possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
-// CLI --log-level debug
-logLevel = LOG_INFO;
-
-// enable / disable watching file and executing tests whenever any file changes
-// CLI --auto-watch --no-auto-watch
-autoWatch = true;
-
-// Start these browsers, currently available:
-// - Chrome
-// - ChromeCanary
-// - Firefox
-// - Opera
-// - Safari (only Mac)
-// - PhantomJS
-// - IE (only Windows)
-// CLI --browsers Chrome,Firefox,Safari
-browsers = ['ChromeCanary'];
-
-// If browser does not capture in given timeout [ms], kill it
-// CLI --capture-timeout 5000
-captureTimeout = 50000;
-
-// Auto run tests on start (when browsers are captured) and exit
-// CLI --single-run --no-single-run
-singleRun = true;
-
-// report which specs are slower than 500ms
-// CLI --report-slower-than 500
-reportSlowerThan = 500;
-
-// compile coffee scripts
-preprocessors = {
+module.exports = function(karma) {
+ karma.configure({
+ // base path, that will be used to resolve files and exclude
+ basePath: '../',
+
+ // list of files / patterns to load in the browser
+ files: [
+ 'tools/test/mocha-htmltest.js',
+ 'conf/mocha.conf.js',
+ 'node_modules/chai/chai.js',
+ 'test/js/*.js',
+ 'html-imports.js',
+ {pattern: 'tools/**/*.js', included: false},
+ {pattern: 'src/*', included: false},
+ {pattern: 'test/**/*', included: false}
+ ],
+
+ // list of files to exclude
+ exclude: [],
+
+ frameworks: ['mocha'],
+
+ // use dots reporter, as travis terminal does not support escaping sequences
+ // possible values: 'dots', 'progress', 'junit', 'teamcity'
+ // CLI --reporters progress
+ reporters: ['progress'],
+
+ // web server port
+ // CLI --port 9876
+ port: 9876,
+
+ // cli runner port
+ // CLI --runner-port 9100
+ runnerPort: 9100,
+
+ // enable / disable colors in the output (reporters and logs)
+ // CLI --colors --no-colors
+ colors: true,
+
+ // level of logging
+ // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
+ // CLI --log-level debug
+ logLevel: LOG_INFO,
+
+ // enable / disable watching file and executing tests whenever any file changes
+ // CLI --auto-watch --no-auto-watch
+ autoWatch: true,
+
+ // Start these browsers, currently available:
+ // - Chrome
+ // - ChromeCanary
+ // - Firefox
+ // - Opera
+ // - Safari (only Mac)
+ // - PhantomJS
+ // - IE (only Windows)
+ // CLI --browsers Chrome,Firefox,Safari
+ browsers: ['ChromeCanary'],
+
+ // If browser does not capture in given timeout [ms], kill it
+ // CLI --capture-timeout 5000
+ captureTimeout: 50000,
+
+ // Auto run tests on start (when browsers are captured) and exit
+ // CLI --single-run --no-single-run
+ singleRun: true,
+
+ // report which specs are slower than 500ms
+ // CLI --report-slower-than 500
+ reportSlowerThan: 500,
+
+ // compile coffee scripts
+ preprocessors: {
+ },
+
+ plugins: [
+ 'karma-mocha',
+ 'karma-chrome-launcher',
+ 'karma-firefox-launcher',
+ 'karma-script-launcher',
+ 'karma-crbot-reporter'
+ ]
+ });
};
-
-plugins = [
- 'karma-mocha',
- 'karma-chrome-launcher',
- 'karma-firefox-launcher',
- 'karma-script-launcher',
- 'karma-crbot-reporter'
-]
diff --git a/gruntfile.js b/gruntfile.js
index 45668fa..f1e9236 100644
--- a/gruntfile.js
+++ b/gruntfile.js
@@ -4,9 +4,7 @@
* license that can be found in the LICENSE file.
*/
module.exports = function(grunt) {
- HTMLComponents = [
- 'src/HTMLImports.js'
- ];
+ HTMLComponents = grunt.file.readJSON('build.json');
// karma setup
var browsers;
(function() {
@@ -44,11 +42,10 @@ module.exports = function(grunt) {
},
uglify: {
HTMLComponents: {
- /*
options: {
- sourceMap: 'html-components.min.source-map.js'
+ sourceMap: 'html-components.min.source-map.js',
+ banner: grunt.file.read('LICENSE')
},
- */
files: {
'html-imports.min.js': HTMLComponents
}
@@ -76,7 +73,7 @@ module.exports = function(grunt) {
// plugins
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-yuidoc');
- grunt.loadNpmTasks('grunt-karma-0.9.1');
+ grunt.loadNpmTasks('grunt-karma');
// tasks
grunt.registerTask('default', ['uglify']);
diff --git a/package.json b/package.json
index 6a523d4..6240e88 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,7 @@
"grunt": "*",
"grunt-contrib-uglify": "*",
"grunt-contrib-yuidoc": "~0.4.0",
- "grunt-karma-0.9.1": "~0.4.3",
+ "grunt-karma": "~0.5.0",
"karma-mocha": "*",
"karma-script-launcher": "*",
"karma-crbot-reporter": "*"
diff --git a/src/HTMLImports.js b/src/HTMLImports.js
index 5c9c418..db0239d 100644
--- a/src/HTMLImports.js
+++ b/src/HTMLImports.js
@@ -43,7 +43,8 @@ var importer = {
'link[rel=' + IMPORT_LINK_TYPE + ']',
'element link[rel=' + STYLE_LINK_TYPE + ']',
'template',
- 'script[src]'
+ 'script[src]:not([type])',
+ 'script[src][type="text/javascript"]'
].join(','),
loader: function(inNext) {
// construct a loader instance
@@ -82,10 +83,10 @@ var importer = {
nodes = Array.prototype.filter.call(nodes, function(n) {
if (n.localName === 'template') {
if (n.content) {
- var l$ = n.content.querySelectorAll('link[rel=' + STYLE_LINK_TYPE +
+ var l$ = n.content.querySelectorAll('link[rel=' + STYLE_LINK_TYPE +
']');
if (l$.length) {
- extra = extra.concat(Array.prototype.slice.call(l$, 0));
+ extra = extra.concat(Array.prototype.slice.call(l$, 0));
}
}
return false;
@@ -105,7 +106,7 @@ var importer = {
// generate an HTMLDocument from data
document = makeDocument(resource, url);
// resolve resource paths relative to host document
- path.resolvePathsInHTML(document.body);
+ path.resolvePathsInHTML(document);
// cache document
importer.documents[url] = document;
// add nodes from this document to the loader queue
@@ -147,17 +148,20 @@ function isScript(elt) {
return elt.localName === 'script';
}
-function makeDocument(inHTML, inUrl) {
+function makeDocument(resource, url) {
// create a new HTML document
- var doc = document.implementation.createHTMLDocument(IMPORT_LINK_TYPE);
+ var doc = resource;
+ if (!(doc instanceof Document)) {
+ doc = document.implementation.createHTMLDocument(IMPORT_LINK_TYPE);
+ // install html
+ doc.body.innerHTML = resource;
+ }
// cache the new document's source url
- doc._URL = inUrl;
+ doc._URL = url;
// establish a relative path via