metalsmith-jstransformer
Advanced tools
Comparing version 0.3.0 to 0.4.0
# Changelog | ||
## v0.4.0: 2015-07-08 | ||
- Added processing on `inputFormats` rather than using the Transformer name | ||
- Added Transformer outputFormat support | ||
## v0.3.0: 2015-07-06 | ||
@@ -4,0 +9,0 @@ |
83
index.js
var jstransformer = require('jstransformer') | ||
var listOfJsTransformers = require('list-of-jstransformers') | ||
var toTransformer = require('inputformat-to-jstransformer') | ||
var transformers = {} | ||
var path = require('path') | ||
var extend = require('extend') | ||
@@ -11,16 +13,11 @@ /** | ||
function getTransformer (name) { | ||
if (listOfJsTransformers.indexOf(name) >= 0) { | ||
if (transformers[name]) { | ||
return transformers[name] | ||
} | ||
var transform = null | ||
try { | ||
transform = jstransformer(require('jstransformer-' + name)) | ||
} catch (e) { | ||
// Do nothing. | ||
} | ||
transformers[name] = transform | ||
if (transformers[name]) { | ||
return transformers[name] | ||
} | ||
var transformer = toTransformer(name) | ||
if (transformer) { | ||
transformer = jstransformer(transformer) | ||
} | ||
transformers[name] = transformer | ||
return transformer | ||
} | ||
@@ -32,25 +29,45 @@ | ||
for (var file in files) { | ||
// Get all the transforming extensions. | ||
var extensions = file.split('.') | ||
// Do not process partials. | ||
if (path.basename(file).charAt(0) !== '_') { | ||
// Get all the transforming extensions. | ||
var extensions = file.split('.') | ||
// Prepare what the default output format should be. | ||
var outputFormat = '' | ||
// Loop through all the extensions in reverse order. | ||
for (var i = extensions.length - 1; i > 0; i--) { | ||
// Retrieve the transformer. | ||
var transformer = getTransformer(extensions[i]) | ||
if (transformer) { | ||
// Process the content of the file with the transformer. | ||
var input = files[file].contents.toString() | ||
for (var i = extensions.length - 1; i > 0; i--) { | ||
// Retrieve the transformer. | ||
var transformer = getTransformer(extensions[i]) | ||
if (transformer) { | ||
// Process the content of the file with the transformer. | ||
var input = files[file].contents.toString() | ||
// TODO: Figure out what to do for options. | ||
var output = transformer.render(input, files[file], files[file]) | ||
files[file].contents = new Buffer(output.body) | ||
// Construct the options. | ||
// TODO: Figure out what other options to inject. | ||
var options = extend({}, metalsmith.metadata(), files[file], { | ||
filename: metalsmith.source() + '/' + file | ||
}) | ||
// Rename the file, removing the extension. | ||
var data = files[file] | ||
var output = transformer.render(input, options, options) | ||
files[file].contents = new Buffer(output.body) | ||
// Rename the file, removing the extension. | ||
var data = files[file] | ||
delete files[file] | ||
var filepath = extensions | ||
filepath.pop() | ||
file = filepath.join('.') | ||
files[file] = data | ||
// Retrieve the new output format for the given transformer. | ||
outputFormat = transformer.outputFormat | ||
} else { | ||
// Skip the rest of the file transformations. | ||
break | ||
} | ||
} | ||
// Rename the file to the output format, if no extension was provided. | ||
if (path.extname(file) === '' && outputFormat !== '') { | ||
var newFile = files[file] | ||
delete files[file] | ||
var filepath = extensions | ||
filepath.pop() | ||
file = filepath.join('.') | ||
files[file] = data | ||
} else { | ||
// Skip the rest of the file transformations. | ||
break | ||
files[file + '.' + outputFormat] = newFile | ||
} | ||
@@ -57,0 +74,0 @@ } |
{ | ||
"name": "metalsmith-jstransformer", | ||
"version": "0.3.0", | ||
"version": "0.4.0", | ||
"description": "Metalsmith JSTransformer Plugin", | ||
@@ -26,15 +26,17 @@ "main": "index.js", | ||
"dependencies": { | ||
"jstransformer": "^0.0.2", | ||
"list-of-jstransformers": "0.0.2" | ||
"extend": "^3.0.0", | ||
"inputformat-to-jstransformer": "^1.1.0", | ||
"jstransformer": "^0.0.2" | ||
}, | ||
"devDependencies": { | ||
"assert-dir-equal": "^1.0.1", | ||
"jstransformer-coffee-script": "^0.1.0", | ||
"jstransformer-jade": "0.0.3", | ||
"jstransformer-styl": "^0.1.0", | ||
"jstransformer-uglify-js": "^0.0.4", | ||
"metalsmith": "^1.7.0", | ||
"assert-dir-equal": "1.*", | ||
"jstransformer-coffee-script": "0.*", | ||
"jstransformer-jade": "0.*", | ||
"jstransformer-marked": "0.0.2", | ||
"jstransformer-styl": "0.*", | ||
"jstransformer-uglify-js": "0.*", | ||
"metalsmith": "1.*", | ||
"mocha": "*", | ||
"standard": "^4.3.3" | ||
"standard": "4.*" | ||
} | ||
} |
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
6869
70
0
3
9
+ Addedextend@^3.0.0
+ Addedextend@3.0.2(transitive)
+ Addedinputformat-to-jstransformer@1.4.0(transitive)
+ Addedrequire-one@1.0.3(transitive)
- Removedlist-of-jstransformers@0.0.2
- Removedlist-of-jstransformers@0.0.2(transitive)