finished support for jsrt

This commit is contained in:
avim 2015-04-02 16:00:38 +03:00
parent 084a44b402
commit 737272f7c3
4 changed files with 23 additions and 12 deletions

View File

@ -5,6 +5,7 @@ var path = require('path');
var chalk = require('chalk');
var reactTemplates = require('./reactTemplates');
var convertTemplateToReact = reactTemplates.convertTemplateToReact;
var convertJSRTToJS = reactTemplates.convertJSRTToJS;
/**
* @param {string} source
@ -30,7 +31,12 @@ function convertFile(source, target, options, context) {
if (shouldAddName) {
options.name = reactTemplates.normalizeName(path.basename(source, path.extname(source))) + 'RT';
}
var js = convertTemplateToReact(html, options);
var js;
if (options.modules === 'jsrt') {
js = convertJSRTToJS(html, options)
} else {
js = convertTemplateToReact(html, options);
}
if (!options.dryRun) {
fs.writeFileSync(target, js);
}

View File

@ -53,18 +53,23 @@ function printVersions(currentOptions) {
* @param {string} filename file name to process
*/
function handleSingleFile(currentOptions, filename) {
if (path.extname(filename) !== '.rt') {
context.error('invalid file, only handle rt files', filename);
return;// only handle html files
}
try {
var ext;
if (currentOptions.modules !== 'typescript') {
ext = '.js';
var sourceExt = path.extname(filename);
var outputFilename;
if (sourceExt == '.rt') {
if (currentOptions.modules !== 'typescript') {
outputFilename = filename + '.js';
} else {
outputFilename = filename + '.ts';
}
} else if (sourceExt === '.jsrt'){
outputFilename = filename.replace(/\.jsrt$/, '.js');
currentOptions = _.assign({},currentOptions, {'modules' : 'jsrt'});
} else {
ext = '.ts';
context.error('invalid file, only handle rt/jsrt files', filename);
return;
}
api.convertFile(filename, filename + ext, currentOptions, context);
api.convertFile(filename, outputFilename, currentOptions, context);
} catch (e) {
context.error(e.message, filename, e.line, e.column, e.startOffset, e.endOffset);
}

View File

@ -45,7 +45,7 @@ module.exports = optionator({
alias: 'm',
default: 'none',
type: 'String',
description: 'Use output modules. (amd|commonjs|none|es6|typescript)'
description: 'Use output modules. (amd|commonjs|none|es6|typescript|jsrt)'
}, {
option: 'name',
alias: 'n',

View File

@ -462,7 +462,7 @@ function convertTemplateToReact(html, options) {
function convertJSRTToJS(text, options) {
options = _.defaults({}, options, defaultOptions);
options.modules = 'jsrt';
var templateMatcherJSRT = /<template>([^]+)<\/template>/gm;
var templateMatcherJSRT = /<template>([^]*?)<\/template>/gm;
var code = text.replace(templateMatcherJSRT, function (template, html) {
return convertTemplateToReact(html, options).replace(/;$/,'');
});