use strict

This commit is contained in:
Tony Garnock-Jones 2016-02-02 21:11:50 -05:00
parent 9f69cffbe7
commit bfd8203a7a
13 changed files with 65 additions and 34 deletions

View File

@ -1,3 +1,5 @@
"use strict";
var G; var G;
$(document).ready(function () { $(document).ready(function () {
var Network = Syndicate.Network; var Network = Syndicate.Network;

View File

@ -1,3 +1,5 @@
"use strict";
var Immutable = require('immutable'); var Immutable = require('immutable');
var Syndicate = require('./syndicate.js'); var Syndicate = require('./syndicate.js');
var Network = Syndicate.Network; var Network = Syndicate.Network;

View File

@ -1,3 +1,5 @@
"use strict";
function copyKeys(keys, to, from) { function copyKeys(keys, to, from) {
for (var i = 0; i < keys.length; i++) { for (var i = 0; i < keys.length; i++) {
to[keys[i]] = from[keys[i]]; to[keys[i]] = from[keys[i]];

View File

@ -1,3 +1,5 @@
"use strict";
var Immutable = require('immutable'); var Immutable = require('immutable');
var Route = require('./route.js'); var Route = require('./route.js');
var Patch = require('./patch.js'); var Patch = require('./patch.js');

View File

@ -1,3 +1,5 @@
"use strict";
var Route = require("./route.js"); var Route = require("./route.js");
var Immutable = require("immutable"); var Immutable = require("immutable");

View File

@ -1,3 +1,5 @@
"use strict";
// Reflection on function formal parameter lists. // Reflection on function formal parameter lists.
// This module is based on Angular's "injector" code, // This module is based on Angular's "injector" code,
// https://github.com/angular/angular.js/blob/master/src/auto/injector.js, // https://github.com/angular/angular.js/blob/master/src/auto/injector.js,

View File

@ -1,3 +1,5 @@
"use strict";
var Immutable = require("immutable"); var Immutable = require("immutable");
function $Special(name) { function $Special(name) {
@ -240,37 +242,40 @@ function union(o1, o2, unionSuccessesOpt) {
} }
var w = merge(rlookup(r1, __), rlookup(r2, __)); var w = merge(rlookup(r1, __), rlookup(r2, __));
var target;
function examineKey(rA, key, rB) {
if ((key !== __) && !target.has(key)) {
var k = merge(rlookup(rA, key), rlookup(rB, key));
if (is_keyOpen(key)) {
target = rupdate(target, key, merge(rwildseq(w), k));
} else if (is_keyClose(key)) {
if (w instanceof $WildcardSequence) {
target = rupdate(target, key, merge(w.trie, k));
} else {
target = rupdate(target, key, k);
}
} else {
target = rupdate(target, key, merge(w, k));
}
}
}
if (is_emptyTrie(w)) { if (is_emptyTrie(w)) {
var smaller = r1.size < r2.size ? r1 : r2; var smaller = r1.size < r2.size ? r1 : r2;
var larger = r1.size < r2.size ? r2 : r1; var larger = r1.size < r2.size ? r2 : r1;
var target = larger; target = larger;
smaller.forEach(function (val, key) { smaller.forEach(function (val, key) {
var k = merge(rlookup(smaller, key), rlookup(larger, key)); var k = merge(rlookup(smaller, key), rlookup(larger, key));
target = rupdate(target, key, k); target = rupdate(target, key, k);
}); });
return target;
} else { } else {
var target = rwild(w); target = rwild(w);
function examineKey(rA, key, rB) {
if ((key !== __) && !target.has(key)) {
var k = merge(rlookup(rA, key), rlookup(rB, key));
if (is_keyOpen(key)) {
target = rupdate(target, key, merge(rwildseq(w), k));
} else if (is_keyClose(key)) {
if (w instanceof $WildcardSequence) {
target = rupdate(target, key, merge(w.trie, k));
} else {
target = rupdate(target, key, k);
}
} else {
target = rupdate(target, key, merge(w, k));
}
}
}
r1.forEach(function (val, key) { examineKey(r1, key, r2) }); r1.forEach(function (val, key) { examineKey(r1, key, r2) });
r2.forEach(function (val, key) { examineKey(r2, key, r1) }); r2.forEach(function (val, key) { examineKey(r2, key, r1) });
return target;
} }
return target;
} }
} }
@ -786,8 +791,9 @@ function project(m, compiledProjection) {
m.forEach(function (mk, key) { m.forEach(function (mk, key) {
if (key !== __) { if (key !== __) {
if (is_keyOpen(key)) { if (is_keyOpen(key)) {
function cont(mk2) { return walk(isCapturing, mk2, nextIndex); } target = rupdate(target, key, captureNested(mk, function (mk2) {
target = rupdate(target, key, captureNested(mk, cont)); return walk(isCapturing, mk2, nextIndex);
}));
} else if (is_keyClose(key)) { } else if (is_keyClose(key)) {
// do nothing // do nothing
} else { } else {
@ -800,8 +806,9 @@ function project(m, compiledProjection) {
m.forEach(function (mk, key) { m.forEach(function (mk, key) {
if (key !== __) { if (key !== __) {
if (is_keyOpen(key)) { if (is_keyOpen(key)) {
function cont(mk2) { return walk(isCapturing, mk2, nextIndex); } target = union(target, skipNested(mk, function (mk2) {
target = union(target, skipNested(mk, cont)); return walk(isCapturing, mk2, nextIndex);
}));
} else if (is_keyClose(key)) { } else if (is_keyClose(key)) {
// do nothing // do nothing
} else { } else {
@ -854,8 +861,9 @@ function project(m, compiledProjection) {
m.forEach(function (mk, key) { m.forEach(function (mk, key) {
if (key !== __) { if (key !== __) {
if (is_keyOpen(key)) { if (is_keyOpen(key)) {
function cont2(mk2) { return captureNested(mk2, cont); } target = rupdate(target, key, captureNested(mk, function (mk2) {
target = rupdate(target, key, captureNested(mk, cont2)); return captureNested(mk2, cont);
}));
} else if (is_keyClose(key)) { } else if (is_keyClose(key)) {
target = rupdate(target, key, cont(mk)); target = rupdate(target, key, cont(mk));
} else { } else {
@ -879,8 +887,9 @@ function project(m, compiledProjection) {
m.forEach(function (mk, key) { m.forEach(function (mk, key) {
if (key !== __) { if (key !== __) {
if (is_keyOpen(key)) { if (is_keyOpen(key)) {
function cont2(mk2) { return skipNested(mk2, cont); } target = union(target, skipNested(mk, function (mk2) {
target = union(target, skipNested(mk, cont2)); return skipNested(mk2, cont)
}));
} else if (is_keyClose(key)) { } else if (is_keyClose(key)) {
target = union(target, cont(mk)); target = union(target, cont(mk));
} else { } else {
@ -906,15 +915,14 @@ function trieKeys(m) {
m.forEach(function (mk, key) { m.forEach(function (mk, key) {
var piece; var piece;
if (is_keyOpen(key)) { if (is_keyOpen(key)) {
function seqK(vss, vsk) { piece = walkSeq(mk, function (vss, vsk) {
var acc = []; var acc = [];
for (var i = 0; i < vss.length; i++) { for (var i = 0; i < vss.length; i++) {
var vs = vss[i]; var vs = vss[i];
acc = acc.concat(k(transformSeqs(vs, key), vsk)); acc = acc.concat(k(transformSeqs(vs, key), vsk));
} }
return acc; return acc;
} });
piece = walkSeq(mk, seqK);
} else if (is_keyClose(key)) { } else if (is_keyClose(key)) {
die("trieKeys: internal error: unexpected key-close"); die("trieKeys: internal error: unexpected key-close");
} else { } else {
@ -936,7 +944,7 @@ function trieKeys(m) {
if (is_keyClose(key)) { if (is_keyClose(key)) {
piece = k([Immutable.List()], mk); piece = k([Immutable.List()], mk);
} else { } else {
function outerK(v, vk) { piece = walk(rseq(key, mk), function (v, vk) {
return walkSeq(vk, function (vss, vsk) { return walkSeq(vk, function (vss, vsk) {
var acc = []; var acc = [];
for (var i = 0; i < vss.length; i++) { for (var i = 0; i < vss.length; i++) {
@ -944,8 +952,7 @@ function trieKeys(m) {
} }
return k(acc, vsk); return k(acc, vsk);
}); });
} });
piece = walk(rseq(key, mk), outerK);
} }
if (piece === null) return null; if (piece === null) return null;
acc = acc.concat(piece); acc = acc.concat(piece);

View File

@ -1,3 +1,5 @@
"use strict";
var Immutable = require('immutable'); var Immutable = require('immutable');
var Route = require('./route.js'); var Route = require('./route.js');
var Patch = require('./patch.js'); var Patch = require('./patch.js');

View File

@ -1,3 +1,5 @@
"use strict";
var Reflect = require("./reflect.js"); var Reflect = require("./reflect.js");
module.exports.extend = function (what, _with) { module.exports.extend = function (what, _with) {

View File

@ -1,3 +1,5 @@
"use strict";
var expect = require('expect.js'); var expect = require('expect.js');
var Immutable = require('immutable'); var Immutable = require('immutable');

View File

@ -1,3 +1,5 @@
"use strict";
var expect = require('expect.js'); var expect = require('expect.js');
var Immutable = require('immutable'); var Immutable = require('immutable');

View File

@ -1,3 +1,5 @@
"use strict";
var Immutable = require('immutable'); var Immutable = require('immutable');
var expect = require('expect.js'); var expect = require('expect.js');
var util = require('util'); var util = require('util');

View File

@ -1,3 +1,5 @@
"use strict";
var expect = require('expect.js'); var expect = require('expect.js');
var Syndicate = require('../src/main.js'); var Syndicate = require('../src/main.js');