Beispiel #1
0
    it("Coerce to Map", function () {
        var object = Bindings.defineBindings({}, {
            map: {"<-": "entries.toMap()"}
        });

        // map property will persist across changes to entries
        var map = object.map;
        expect(map).not.toBe(null);

        object.entries = {a: 10};
        expect(map.keysArray()).toEqual(['a']);
        expect(map.has('a')).toBe(true);
        expect(map.get('a')).toBe(10);

        // Continued...
        object.entries = [['b', 20], ['c', 30]];
        expect(map.keysArray()).toEqual(['b', 'c']);

        object.entries.push(object.entries.shift());
        expect(map.keysArray()).toEqual(['c', 'b']);

        // Continued...
        object.entries = [['a', 10], ['a', 20]];
        expect(map.get('a')).toEqual(20);
        object.entries.pop();
        expect(map.get('a')).toEqual(10);

        // Continued...
        object.entries = Map.from({a: 10});
        expect(map.keysArray()).toEqual(['a']);

    });
Beispiel #2
0
    it("Keys, Values, Entries", function () {
        var Map = require("collections/map");
        var object = Bindings.defineBindings({}, {
            keys: {"<-": "map.keysArray()"},
            values: {"<-": "map.valuesArray()"},
            entries: {"<-": "map.entriesArray()"}
        });
        object.map = Map.from({a: 10, b: 20, c: 30});
        expect(object.keys).toEqual(['a', 'b', 'c']);
        expect(object.values).toEqual([10, 20, 30]);
        expect(object.entries).toEqual([['a', 10], ['b', 20], ['c', 30]]);

        object.map.set('d', 40);
        object.map.delete('a');
        expect(object.keys).toEqual(['b', 'c', 'd']);
        expect(object.values).toEqual([20, 30, 40]);
        expect(object.entries).toEqual([['b', 20], ['c', 30], ['d', 40]]);
    });
Beispiel #3
0
    it("Get (all content)", function () {
        var Map = require("collections/map");
        var object = {
            a: Map.from({a: 10}),
            b: new Map()
        };
        var cancel = bind(object, "a.mapContent()", {"<->": "b.mapContent()"});
        expect(object.a.toObject()).toEqual({});
        expect(object.b.toObject()).toEqual({});

        object.a.set('a', 10);
        expect(object.a.toObject()).toEqual({a: 10});
        expect(object.b.toObject()).toEqual({a: 10});

        object.b.set('b', 20);
        expect(object.a.toObject()).toEqual({a: 10, b: 20});
        expect(object.b.toObject()).toEqual({a: 10, b: 20});
    });
Beispiel #4
0
        precedence.set(level[j], predecessors);
    }
}

var operatorTokens = exports.operatorTokens = Map.from({
    "**": "pow",
    "//": "root",
    "%%": "log",
    "*": "mul",
    "/": "div",
    "%": "mod",
    "rem": "rem",
    "+": "add",
    "-": "sub",
    "<": "lt",
    ">": "gt",
    "<=": "le",
    ">=": "ge",
    "==": "equals",
    "<=>": "compare",
    "!=": "notEquals",
    "??": "default",
    "&&": "and",
    "||": "or",
    "?": "then",
    ":": "else"
});

exports.operatorTypes = new Map(operatorTokens.map(function (type, token) {
    return [type, token];
}));