util and browser-cola are updated

This commit is contained in:
Dan Onoshko 2015-01-02 18:32:04 +07:00
parent 58442e1ad4
commit 661c1f5751
7 changed files with 38 additions and 35 deletions

View File

@ -21,7 +21,8 @@ mangling you need to use `-c` and `-m`.\
")
.describe("j", "Work with JavaScript (by default Cola will expect ColaScript).")
.describe("n", "Enable compilation for node.")
.describe("k", "Path to packages.json (packages.json by default).")
.describe("P", "Path to packages.json (packages.json by default).")
.describe("i", "ignore `main` wrapping.")
.describe("source-map", "Specify an output file where to generate source map.")
.describe("source-map-root", "The path to the original source to be included in the source map.")
.describe("source-map-url", "The path to the source map to be added in //# sourceMappingURL. Defaults to the value passed with --source-map.")
@ -29,7 +30,6 @@ mangling you need to use `-c` and `-m`.\
.describe("in-source-map", "Input source map, useful if you're compressing JS that was generated from some other original code.")
.describe("screw-ie8", "Pass this flag if you don't care about full compliance with Internet Explorer 6-8 quirks (by default Cola will try to be IE-proof).")
.describe("expr", "Parse a single expression, rather than a program (for parsing JSON)")
.describe("i", "ignore `main` binding.")
.describe("p", "Skip prefix for original filenames that appear in source maps. \
For example -p 3 will drop 3 directories from file names and ensure they are relative paths. \
You can also specify -p relative, which will make Cola figure out itself the relative paths between original sources, \
@ -61,6 +61,7 @@ parsed, but the source map will adjust for its presence.")
.describe("acorn", "Use Acorn for parsing.")
.describe("spidermonkey", "Assume input files are SpiderMonkey AST format (as JSON).")
.describe("self", "Build itself (Cola) as a library (implies --wrap=Cola --export-all)")
.describe("browser-cola", "Build itself (Cola) for running Cola in browser.")
.describe("wrap", "Embed everything in a big function, making the “exports” and “global” variables available. \
You need to pass an argument to this option to specify the name that your module will take when included in, say, a browser.")
.describe("export-all", "Only used when --wrap, this tells Cola to add code to automatically export all globals.")
@ -72,8 +73,8 @@ You need to pass an argument to this option to specify the name that your module
.alias("j", "js")
.alias("j", "javascript")
.alias("n", "node")
.alias("k", "packages")
.alias("i", "ignore-main-binding")
.alias("P", "packages")
.alias("i", "ignore-main-wrapping")
.alias("p", "prefix")
.alias("o", "output")
.alias("v", "verbose")
@ -85,7 +86,7 @@ You need to pass an argument to this option to specify the name that your module
.alias("V", "version")
.alias("e", "enclose")
.string("k")
.string("P")
.string("source-map")
.string("source-map-root")
.string("source-map-url")
@ -106,6 +107,7 @@ You need to pass an argument to this option to specify the name that your module
.boolean("screw-ie8")
.boolean("export-all")
.boolean("self")
.boolean("browser-cola")
.boolean("v")
.boolean("stats")
.boolean("acorn")
@ -204,6 +206,16 @@ if (ARGS.self) {
files = Cola.FILES;
if (!ARGS.wrap) ARGS.wrap = "Cola";
ARGS.export_all = true;
ARGS.j = true;
}
if (ARGS.browser_cola) {
if (files.length > 0) {
sys.error("WARN: Ignoring input files since --self was passed");
}
files = Cola.FILES;
files.push(path.join(path.dirname(fs.realpathSync(__filename)), "../lib/browser.js"));
ARGS.j = true;
}
var ORIG_MAP = ARGS.in_source_map;
@ -301,7 +313,7 @@ async.eachLimit(files, 1, function (file, cb) {
if (!ARGS.j) TOPLEVEL = TOPLEVEL.toJavaScript({
main_binding: !ARGS.i,
is_node: ARGS.n,
modules: Cola.getPackages(ARGS.k),
modules: Cola.getPackages(ARGS.P),
path: path.dirname(file),
parser: {
expression : ARGS.expr,
@ -434,7 +446,7 @@ function getOptions(x, constants) {
if (!ARGS.j) ast = ast.toJavaScript({
main_binding: !ARGS.i,
is_node: ARGS.n,
modules: Cola.getPackages(ARGS.k),
modules: Cola.getPackages(ARGS.P),
parser: {
expression: true,
is_js: ARGS.j

View File

@ -1,12 +1,12 @@
{
"name": "cola-script",
"version": "0.6.0",
"version": "0.8.0",
"homepage": "https://github.com/TrigenSoftware/ColaScript",
"authors": [
"Onoshko Dan"
],
"description": "ColaScript translator / parser / mangler / compressor / beautifier toolkit",
"main": "./lib/browser-cola.js",
"main": "lib/browser-cola.js",
"keywords": [
"ColaScript",
"Cola",
@ -22,11 +22,6 @@
"*.md",
"colalogo.png",
".gitignore",
".travis.yml",
"bower.json",
"demo.cola",
"demo.cola.js",
"LICENSE",
"package.json"
".travis.yml"
]
}

View File

@ -347,7 +347,7 @@ Cola.AST_Toplevel = Cola.DEFNODE("Toplevel", "globals language requiredModules",
});
var wrapped_tl = "(function(" + parameters.join(",") + "){ '$ORIG'; })(" + args.join(",") + ")";
wrapped_tl = Cola.parse(wrapped_tl);
wrapped_tl = Cola.parse(wrapped_tl, { is_js : true });
wrapped_tl = wrapped_tl.transform(new Cola.TreeTransformer(function before(node){
if (node instanceof Cola.AST_Directive && node.value == "$ORIG") {
return Cola.MAP.splice(self.body);
@ -360,7 +360,7 @@ Cola.AST_Toplevel = Cola.DEFNODE("Toplevel", "globals language requiredModules",
var to_export = [];
if (export_all) {
self.figure_out_scope();
self.walk(new TreeWalker(function(node){
self.walk(new Cola.TreeWalker(function(node){
if (node instanceof Cola.AST_SymbolDeclaration && node.definition().global) {
if (!Cola.find_if(function(n){ return n.name == node.name }, to_export))
to_export.push(node);
@ -368,7 +368,7 @@ Cola.AST_Toplevel = Cola.DEFNODE("Toplevel", "globals language requiredModules",
}));
}
var wrapped_tl = "(function(exports, global){ global['" + name + "'] = exports; '$ORIG'; '$EXPORTS'; }({}, (function(){return this}())))";
wrapped_tl = Cola.parse(wrapped_tl);
wrapped_tl = Cola.parse(wrapped_tl, { is_js : true });
wrapped_tl = wrapped_tl.transform(new Cola.TreeTransformer(function before(node){
if (node instanceof Cola.AST_SimpleStatement) {
node = node.body;

File diff suppressed because one or more lines are too long

View File

@ -2,13 +2,6 @@
<html>
<head>
<title>ColaScript Playground</title>
<script type="text/packages-json">
{
"underscore" : "/components/jashkenas/underscore/1.7.0/underscore.js",
"uid" : "/components/matthewmueller-uid@0.0.2/index.js",
"fmt" : "/components/yields-fmt@0.1.0/index.js"
}
</script>
<script src="./utils.js"></script>
<script src="./ast.js"></script>
<script src="./parse.js"></script>
@ -21,6 +14,7 @@
<script src="./translate.js"></script>
<script src="./std.js"></script>
<script src="./typecheck.js"></script>
<!--script src="./browser-cola.js"></script-->
<style>
body {
@ -226,7 +220,7 @@ main();</textarea>
<label for="is_node">node</label>
<input type="checkbox" id="compressed" onclick="changeClass()">
<label for="compressed">compressed</label>
<span id="version">v0.6.0</span>
<span id="version">v0.8.0</span>
<span id="lenstat"></span>
</div>
</body>

View File

@ -95,7 +95,7 @@ Cola.getSource = function(file) {
Cola.getPackages = function(path) {
if (!path) path = "packages.json";
return Cola.getSource(path);
return JSON.parse(Cola.getSource(path));
};
Cola.dirname = path.dirname;

View File

@ -3,7 +3,7 @@
"description": "ColaScript translator / parser / mangler / compressor / beautifier toolkit",
"homepage": "https://github.com/TrigenSoftware/ColaScript",
"main": "tools/node.js",
"version": "0.6.0",
"version": "0.8.0",
"engines": { "node" : ">=0.4.0" },
"maintainers": [{
"name": "Dan Onoshko (dangreen)",