goodguide-gibbon 0.3.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
@@ -1569,6 +1569,7 @@ analyze = Gibbon.analyze = (function() {
|
|
1569
1569
|
destructure: ['constraint', 'name', 'argnum'],
|
1570
1570
|
"native": ['id'],
|
1571
1571
|
param: ['name', 'constraints'],
|
1572
|
+
error: ['type', 'args'],
|
1572
1573
|
any: []
|
1573
1574
|
});
|
1574
1575
|
|
@@ -1719,6 +1720,23 @@ analyze = Gibbon.analyze = (function() {
|
|
1719
1720
|
});
|
1720
1721
|
};
|
1721
1722
|
|
1723
|
+
TypeExpr.fromType = function(t) {
|
1724
|
+
var st;
|
1725
|
+
if (t._tag === 'entity') {
|
1726
|
+
return TypeExpr["native"](t.id);
|
1727
|
+
}
|
1728
|
+
return TypeExpr.param(t._tag, (function() {
|
1729
|
+
var _i, _len, _ref4, _results;
|
1730
|
+
_ref4 = t._values;
|
1731
|
+
_results = [];
|
1732
|
+
for (_i = 0, _len = _ref4.length; _i < _len; _i++) {
|
1733
|
+
st = _ref4[_i];
|
1734
|
+
_results.push(this.fromType(st));
|
1735
|
+
}
|
1736
|
+
return _results;
|
1737
|
+
}).call(this));
|
1738
|
+
};
|
1739
|
+
|
1722
1740
|
TypeExpr.prototype.map = function(f) {
|
1723
1741
|
return this.cases({
|
1724
1742
|
param: function(name, params) {
|
@@ -1780,7 +1798,7 @@ analyze = Gibbon.analyze = (function() {
|
|
1780
1798
|
}
|
1781
1799
|
|
1782
1800
|
NativeContext.prototype.query = function(id, query, cb) {
|
1783
|
-
return this.externalLookup.call(null, id, query,
|
1801
|
+
return this.externalLookup.call(null, id, query, Type, function(err, analysis) {
|
1784
1802
|
if (err) {
|
1785
1803
|
return cb(TypeLookup.error(err));
|
1786
1804
|
} else {
|
@@ -1891,7 +1909,8 @@ analyze = Gibbon.analyze = (function() {
|
|
1891
1909
|
func: function(name, args) {
|
1892
1910
|
var arg, ast, func, i, input, scope, _i, _len, _results;
|
1893
1911
|
if (!stdlib.hasOwnProperty(name)) {
|
1894
|
-
|
1912
|
+
push(TypeExpr.expr(flow.head), TypeExpr.error('func', [flow.head]));
|
1913
|
+
return;
|
1895
1914
|
}
|
1896
1915
|
func = stdlib[name];
|
1897
1916
|
ast = func.type;
|
@@ -1985,7 +2004,8 @@ analyze = Gibbon.analyze = (function() {
|
|
1985
2004
|
match: ['lhs', 'rhs'],
|
1986
2005
|
destructure: ['type'],
|
1987
2006
|
lookup: ['query', 'id', 'error'],
|
1988
|
-
circular: ['crumbs']
|
2007
|
+
circular: ['crumbs'],
|
2008
|
+
func: ['node']
|
1989
2009
|
});
|
1990
2010
|
|
1991
2011
|
return TypeError;
|
@@ -2064,6 +2084,9 @@ analyze = Gibbon.analyze = (function() {
|
|
2064
2084
|
};
|
2065
2085
|
simplify = function(expr, cb) {
|
2066
2086
|
return expr.cases({
|
2087
|
+
error: function(type, args) {
|
2088
|
+
return cb(error.apply(null, [type].concat(__slice.call(args))));
|
2089
|
+
},
|
2067
2090
|
destructure: function(constraint, name, argnum) {
|
2068
2091
|
var destructured;
|
2069
2092
|
destructured = this;
|
@@ -2094,7 +2117,7 @@ analyze = Gibbon.analyze = (function() {
|
|
2094
2117
|
},
|
2095
2118
|
response: function(analysis) {
|
2096
2119
|
semanticAccessors.set(query, Semantic.query(analysis.annotations));
|
2097
|
-
return cb(TypeExpr.
|
2120
|
+
return cb(TypeExpr.fromType(analysis.type));
|
2098
2121
|
},
|
2099
2122
|
local: function(key) {
|
2100
2123
|
var localFrame;
|
@@ -2126,7 +2149,10 @@ analyze = Gibbon.analyze = (function() {
|
|
2126
2149
|
var flowType, toSemanticTree;
|
2127
2150
|
flowType = function(expr) {
|
2128
2151
|
if (!solutions.has(TypeExpr.expr(expr))) {
|
2129
|
-
|
2152
|
+
if (errors.length === 0) {
|
2153
|
+
throw new Error('unsolved!');
|
2154
|
+
}
|
2155
|
+
return Type.abstract(TypeExpr.expr(expr));
|
2130
2156
|
}
|
2131
2157
|
return solutions.get(TypeExpr.expr(expr)).realize();
|
2132
2158
|
};
|
@@ -2867,7 +2893,7 @@ Gibbon.jsonConsumer = (function() {
|
|
2867
2893
|
return callback(new Error("" + id + " has no field " + accessorName));
|
2868
2894
|
}
|
2869
2895
|
return callback(null, {
|
2870
|
-
type:
|
2896
|
+
type: fields[accessorName],
|
2871
2897
|
annotations: {
|
2872
2898
|
name: accessorName,
|
2873
2899
|
table: id
|
@@ -2900,7 +2926,7 @@ Gibbon.jsonConsumer = (function() {
|
|
2900
2926
|
callback(new Error("wrong type " + id + " for list `" + listName + "'"));
|
2901
2927
|
}
|
2902
2928
|
return callback(null, {
|
2903
|
-
type: t.
|
2929
|
+
type: t.bool(),
|
2904
2930
|
annotations: {
|
2905
2931
|
list: listName
|
2906
2932
|
}
|
@@ -1563,6 +1563,7 @@ analyze = Gibbon.analyze = (function() {
|
|
1563
1563
|
destructure: ['constraint', 'name', 'argnum'],
|
1564
1564
|
"native": ['id'],
|
1565
1565
|
param: ['name', 'constraints'],
|
1566
|
+
error: ['type', 'args'],
|
1566
1567
|
any: []
|
1567
1568
|
});
|
1568
1569
|
|
@@ -1713,6 +1714,23 @@ analyze = Gibbon.analyze = (function() {
|
|
1713
1714
|
});
|
1714
1715
|
};
|
1715
1716
|
|
1717
|
+
TypeExpr.fromType = function(t) {
|
1718
|
+
var st;
|
1719
|
+
if (t._tag === 'entity') {
|
1720
|
+
return TypeExpr["native"](t.id);
|
1721
|
+
}
|
1722
|
+
return TypeExpr.param(t._tag, (function() {
|
1723
|
+
var _i, _len, _ref4, _results;
|
1724
|
+
_ref4 = t._values;
|
1725
|
+
_results = [];
|
1726
|
+
for (_i = 0, _len = _ref4.length; _i < _len; _i++) {
|
1727
|
+
st = _ref4[_i];
|
1728
|
+
_results.push(this.fromType(st));
|
1729
|
+
}
|
1730
|
+
return _results;
|
1731
|
+
}).call(this));
|
1732
|
+
};
|
1733
|
+
|
1716
1734
|
TypeExpr.prototype.map = function(f) {
|
1717
1735
|
return this.cases({
|
1718
1736
|
param: function(name, params) {
|
@@ -1774,7 +1792,7 @@ analyze = Gibbon.analyze = (function() {
|
|
1774
1792
|
}
|
1775
1793
|
|
1776
1794
|
NativeContext.prototype.query = function(id, query, cb) {
|
1777
|
-
return this.externalLookup.call(null, id, query,
|
1795
|
+
return this.externalLookup.call(null, id, query, Type, function(err, analysis) {
|
1778
1796
|
if (err) {
|
1779
1797
|
return cb(TypeLookup.error(err));
|
1780
1798
|
} else {
|
@@ -1885,7 +1903,8 @@ analyze = Gibbon.analyze = (function() {
|
|
1885
1903
|
func: function(name, args) {
|
1886
1904
|
var arg, ast, func, i, input, scope, _i, _len, _results;
|
1887
1905
|
if (!stdlib.hasOwnProperty(name)) {
|
1888
|
-
|
1906
|
+
push(TypeExpr.expr(flow.head), TypeExpr.error('func', [flow.head]));
|
1907
|
+
return;
|
1889
1908
|
}
|
1890
1909
|
func = stdlib[name];
|
1891
1910
|
ast = func.type;
|
@@ -1979,7 +1998,8 @@ analyze = Gibbon.analyze = (function() {
|
|
1979
1998
|
match: ['lhs', 'rhs'],
|
1980
1999
|
destructure: ['type'],
|
1981
2000
|
lookup: ['query', 'id', 'error'],
|
1982
|
-
circular: ['crumbs']
|
2001
|
+
circular: ['crumbs'],
|
2002
|
+
func: ['node']
|
1983
2003
|
});
|
1984
2004
|
|
1985
2005
|
return TypeError;
|
@@ -2044,6 +2064,9 @@ analyze = Gibbon.analyze = (function() {
|
|
2044
2064
|
};
|
2045
2065
|
simplify = function(expr, cb) {
|
2046
2066
|
return expr.cases({
|
2067
|
+
error: function(type, args) {
|
2068
|
+
return cb(error.apply(null, [type].concat(__slice.call(args))));
|
2069
|
+
},
|
2047
2070
|
destructure: function(constraint, name, argnum) {
|
2048
2071
|
var destructured;
|
2049
2072
|
destructured = this;
|
@@ -2074,7 +2097,7 @@ analyze = Gibbon.analyze = (function() {
|
|
2074
2097
|
},
|
2075
2098
|
response: function(analysis) {
|
2076
2099
|
semanticAccessors.set(query, Semantic.query(analysis.annotations));
|
2077
|
-
return cb(TypeExpr.
|
2100
|
+
return cb(TypeExpr.fromType(analysis.type));
|
2078
2101
|
},
|
2079
2102
|
local: function(key) {
|
2080
2103
|
var localFrame;
|
@@ -2106,7 +2129,10 @@ analyze = Gibbon.analyze = (function() {
|
|
2106
2129
|
var flowType, toSemanticTree;
|
2107
2130
|
flowType = function(expr) {
|
2108
2131
|
if (!solutions.has(TypeExpr.expr(expr))) {
|
2109
|
-
|
2132
|
+
if (errors.length === 0) {
|
2133
|
+
throw new Error('unsolved!');
|
2134
|
+
}
|
2135
|
+
return Type.abstract(TypeExpr.expr(expr));
|
2110
2136
|
}
|
2111
2137
|
return solutions.get(TypeExpr.expr(expr)).realize();
|
2112
2138
|
};
|
@@ -2839,7 +2865,7 @@ Gibbon.jsonConsumer = (function() {
|
|
2839
2865
|
return callback(new Error("" + id + " has no field " + accessorName));
|
2840
2866
|
}
|
2841
2867
|
return callback(null, {
|
2842
|
-
type:
|
2868
|
+
type: fields[accessorName],
|
2843
2869
|
annotations: {
|
2844
2870
|
name: accessorName,
|
2845
2871
|
table: id
|
@@ -2872,7 +2898,7 @@ Gibbon.jsonConsumer = (function() {
|
|
2872
2898
|
callback(new Error("wrong type " + id + " for list `" + listName + "'"));
|
2873
2899
|
}
|
2874
2900
|
return callback(null, {
|
2875
|
-
type: t.
|
2901
|
+
type: t.bool(),
|
2876
2902
|
annotations: {
|
2877
2903
|
list: listName
|
2878
2904
|
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: goodguide-gibbon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-08-
|
12
|
+
date: 2013-08-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
type: :runtime
|