module.exports = function(source){ var result; var transform = ''; this.cacheable && this.cacheable(); var filepath = loaderUtils.getRemainingRequest(this).replace(/^!/, ""); var query = loaderUtils.parseQuery(this.query); if(query.split){ var chunks = source.split(/\n*?\/\/ react: (\w+)\s*\n/); chunks.shift(); if(!chunks.length) return single(); for(var i=0; i < chunks.length-1; i += 2){ transform += "exports['" + chunks[i] + "'] = " + jade.compile(chunks[i+1], {filename: filepath}).toString() + ";\n"; } result = transform; } else { result = transform + "module.exports= " + jade.compile(source, {filename: filepath}).toString(); } // hoist requires result = uglify.parse(result); result.figure_out_scope(); result = result.transform(new Hoister()); result = result.print_to_string({ beautify: true, comments: true, indent_level: 2 }); return "var React = require('react');\n" + result; }
module.exports = function(source){ var transform = "var React = require('react');\n"; this.cacheable && this.cacheable(); var filepath = loaderUtils.getRemainingRequest(this).replace(/^!/, ""); var query = loaderUtils.parseQuery(this.query); if(query.split){ var chunks = source.split(/\n*?\/\/ react: (\w+)\s*\n/); chunks.shift(); if(!chunks.length) return single(); for(var i=0; i < chunks.length-1; i += 2){ transform += "exports['" + chunks[i] + "'] = " + jade.compile(chunks[i+1], {filename: filepath}).toString() + ";\n"; } return transform; } return single(); function single(){ return transform + "module.exports= " + jade.compile(source, {filename: filepath}).toString(); } }
'use strict'; var assert = require('assert'); var React = require('react'); var ReactDOM= require('react-dom/server'); var jade = require('react-jade'); var test = /^\<div id\=\"container\".*\>Some Text\<\/div\>$/; var templateA = jade` #container Some Text `; assert(test.test(ReactDOM.renderToString(templateA()))); var templateB = jade.compile('#container Some Text'); assert(test.test(ReactDOM.renderToString(templateB())));
function single(){ return transform + "module.exports= " + jade.compile(source, {filename: filepath}).toString(); }