diff --git a/README.md b/README.md index bfd1a73..10bfd47 100644 --- a/README.md +++ b/README.md @@ -45,9 +45,11 @@ use: [ loader: 'sxml-loader', options: { interpreter: 'guile', - flags: ['-c'], // "eval" flag (in Guile case "-c") should be last. - // SXML_LOADER_CONTENT will be replaced with processing SXML markup. + // The "eval" flag (in the case of Guile "-c") must come last. + flags: ['-c'], + + // SXML_LOADER_CONTENT will be replaced with SXML markup. expr: '(use-modules (sxml simple))(sxml->xml SXML_LOADER_CONTENT)', }, }, diff --git a/example/src/index.sxml b/example/src/index.sxml index 576f853..310561e 100644 --- a/example/src/index.sxml +++ b/example/src/index.sxml @@ -1,5 +1,11 @@ -'((html +`((html (@ (lang en)) (head - (title "Hello")) + (meta (@ (charset utf-8))) + (title "sxml-loader example")) (body - (h1 "Hello World!")))) + (h1 "sxml-loader example") + + (h2 "List rendering") + ,(map + (lambda (num) `(article "Article " ,num)) + '(1 2 3))))) diff --git a/example/webpack.config.js b/example/webpack.config.js index 85bfc3e..fd5a0e3 100644 --- a/example/webpack.config.js +++ b/example/webpack.config.js @@ -6,7 +6,19 @@ module.exports = { rules: [ { test: /\.sxml$/, - use: ['html-loader', 'sxml-loader'], + use: [ + 'html-loader', + { + loader: 'sxml-loader', + /* + options: { + interpreter: 'guile', + flags: ['-c'], + expr: '(use-modules (sxml simple))(sxml->xml SXML_LOADER_CONTENT)', + }, + */ + }, + ], }, ], }, diff --git a/package.json b/package.json index e34c329..3ace95e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sxml-loader", - "version": "0.2.0", + "version": "0.2.1", "description": "Scheme XML loader for webpack", "main": "src/loader.js", "bugs": "http://git.vilor.one/vilor/sxml-loader/issues", diff --git a/src/loader.js b/src/loader.js index c0a3914..dea7cc6 100644 --- a/src/loader.js +++ b/src/loader.js @@ -18,6 +18,10 @@ const schema = { type: 'string', default: '(import sxml-serializer)(display (serialize-sxml SXML_LOADER_CONTENT))', }, + doctype: { + type: 'string', + default: '', + }, }, }; @@ -42,9 +46,13 @@ module.exports = function(content, map, meta) { expr = expr.replace('SXML_LOADER_CONTENT', content); flags.push(expr); + let doctype = schema.properties.doctype.default; + if (options.doctype) + doctype = options.doctype; + const cb = this.async(); runScheme(interpreter, flags).then(data => { - cb(null, data, map, meta); + cb(null, `${doctype}\n${data}`, map, meta); }).catch(err => { console.error(err); });