前端代码
This commit is contained in:
86
node_modules/browser-sync-ui/lib/directive-stripper.js
generated
vendored
Normal file
86
node_modules/browser-sync-ui/lib/directive-stripper.js
generated
vendored
Normal file
@ -0,0 +1,86 @@
|
||||
var tokenize = require("html-tokenize");
|
||||
var through2 = require("through2");
|
||||
var vinyl = require("vinyl");
|
||||
var select = require("html-select");
|
||||
|
||||
/**
|
||||
* @param config
|
||||
* @param item
|
||||
* @param markup
|
||||
* @param done
|
||||
*/
|
||||
function directiveStripper(config, item, markup, done) {
|
||||
|
||||
var replacer = getReplacer(item, config);
|
||||
var chunks = [];
|
||||
|
||||
new vinyl({
|
||||
contents: new Buffer(markup)
|
||||
})
|
||||
.pipe(tokenize())
|
||||
.pipe(replacer)
|
||||
.pipe(through2.obj(function (row, buf, next) {
|
||||
chunks.push(row[1]);
|
||||
next();
|
||||
}, function () {
|
||||
done(null, chunks.join(""));
|
||||
}));
|
||||
|
||||
replacer.resume();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param name
|
||||
* @param item
|
||||
* @returns {*|exports}
|
||||
*/
|
||||
function getReplacer (name, markup) {
|
||||
|
||||
return select(name, function (e) {
|
||||
|
||||
var tr = through2.obj(function (row, buf, next) {
|
||||
|
||||
if (row[0] === "open") {
|
||||
this.push([row[0], directive(name, String(row[1]), markup)]);
|
||||
} else {
|
||||
this.push([ row[0], "" ]);
|
||||
}
|
||||
|
||||
next();
|
||||
});
|
||||
|
||||
tr.pipe(e.createStream()).pipe(tr);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param name
|
||||
* @param content
|
||||
* @param item
|
||||
* @returns {*|string}
|
||||
*/
|
||||
function directive (name, content, item) {
|
||||
|
||||
var angularDir;
|
||||
try {
|
||||
angularDir = require("../src/scripts/directives/" + name)();
|
||||
} catch (e) {
|
||||
console.log("Directive not found, cannot re-use");
|
||||
return content;
|
||||
}
|
||||
|
||||
var scope = item;
|
||||
|
||||
scope = angularDir.link(scope, {}, {});
|
||||
|
||||
return angularDir.template.replace(/\{\{(.+?)\}\}/, function ($1, $2) {
|
||||
if ($2 in scope) {
|
||||
return scope[$2];
|
||||
}
|
||||
return $1;
|
||||
});
|
||||
}
|
||||
|
||||
module.exports.getReplacer = getReplacer;
|
||||
module.exports.directive = directive;
|
||||
module.exports.directiveStripper = directiveStripper;
|
Reference in New Issue
Block a user