occam-verify-cli 0.0.374 → 0.0.375

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/type.js CHANGED
@@ -135,17 +135,28 @@ var Type = /*#__PURE__*/ function() {
135
135
  {
136
136
  key: "toJSON",
137
137
  value: function toJSON() {
138
- var superTypeJSON = this.superType === null ? null : this.superType.toJSON(), kind = _kinds.TYPE_KIND, name = this.name, superType = superTypeJSON, json = [
139
- {
140
- kind: kind,
141
- name: name,
142
- superType: superType
143
- }
144
- ];
138
+ var superTypeJSON = this.superType === null ? null : this.superType.toJSON(), kind = _kinds.TYPE_KIND, name = this.name, superType = superTypeJSON, json = {
139
+ kind: kind,
140
+ name: name,
141
+ superType: superType
142
+ };
145
143
  return json;
146
144
  }
147
145
  }
148
146
  ], [
147
+ {
148
+ key: "fromJSON",
149
+ value: function fromJSON(json) {
150
+ var name = json.name;
151
+ var superType = json.superType;
152
+ if (superType !== null) {
153
+ json = superType; ///
154
+ superType = Type.fromJSON(json);
155
+ }
156
+ var type = new Type(name, superType);
157
+ return type;
158
+ }
159
+ },
149
160
  {
150
161
  key: "fromTypeName",
151
162
  value: function fromTypeName(typeName) {
@@ -164,4 +175,4 @@ var Type = /*#__PURE__*/ function() {
164
175
  return Type;
165
176
  }();
166
177
 
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBUWVBFX0tJTkQgfSBmcm9tIFwiLi9raW5kc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUeXBlIHtcbiAgY29uc3RydWN0b3IobmFtZSwgc3VwZXJUeXBlKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnN1cGVyVHlwZSA9IHN1cGVyVHlwZTtcbiAgfVxuXG4gIGdldE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIGdldFN1cGVyVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdXBlclR5cGU7XG4gIH1cblxuICBpc0VxdWFsVG8odHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG9UeXBlID0gKHRoaXMgPT09IHR5cGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG9UeXBlO1xuICB9XG5cbiAgaXNTdWJUeXBlT2YodHlwZSkge1xuICAgIGxldCBzdWJUeXBlT2ZUeXBlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5zdXBlclR5cGUgPT09IHR5cGUpIHtcbiAgICAgIHN1YlR5cGVPZlR5cGUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5zdXBlclR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgc3ViVHlwZU9mVHlwZSA9IHRoaXMuc3VwZXJUeXBlLmlzU3ViVHlwZU9mKHR5cGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdWJUeXBlT2ZUeXBlO1xuICB9XG5cbiAgaXNTdXBlclR5cGVPZih0eXBlKSB7XG4gICAgbGV0IHN1cGVyVHlwZU9mVHlwZSA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3VwZXJUeXBlID0gdHlwZS5nZXRTdXBlclR5cGUoKTtcblxuICAgIGlmIChzdXBlclR5cGUgPT09IHRoaXMpIHtcbiAgICAgIHN1cGVyVHlwZU9mVHlwZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzdXBlclR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgc3VwZXJUeXBlT2ZUeXBlID0gc3VwZXJUeXBlLmlzU3VwZXJUeXBlT2YodGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyVHlwZU9mVHlwZTtcbiAgfVxuXG4gIGlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpIHtcbiAgICBjb25zdCBlcXVhbFRvVHlwZSA9IHRoaXMuaXNFcXVhbFRvKHR5cGUpLFxuICAgICAgICAgIHN1YlR5cGVPZlR5cGUgPSB0aGlzLmlzU3ViVHlwZU9mKHR5cGUpLFxuICAgICAgICAgIGVxdWFsVG9UeXBlT3JTdWJUeXBlT2YgPSAoZXF1YWxUb1R5cGUgfHwgc3ViVHlwZU9mVHlwZSk7XG5cbiAgICByZXR1cm4gZXF1YWxUb1R5cGVPclN1YlR5cGVPZjtcbiAgfVxuXG4gIGlzRXF1YWxUb09yU3VwZXJUeXBlT2YodHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG9UeXBlID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3VwZXJUeXBlT2ZUeXBlID0gdGhpcy5pc1N1cGVyVHlwZU9mKHR5cGUpLFxuICAgICAgICAgIGVxdWFsVG9UeXBlT3JTdXBlclR5cGVPZiA9IChlcXVhbFRvVHlwZSB8fCBzdXBlclR5cGVPZlR5cGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG9UeXBlT3JTdXBlclR5cGVPZjtcbiAgfVxuXG4gIGlzRXF1YWxUb1N1YlR5cGVPZk9yU3VwZXJUeXBlT2YodHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG9UeXBlID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3ViVHlwZU9mVHlwZSA9IHRoaXMuaXNTdWJUeXBlT2YodHlwZSksXG4gICAgICAgICAgc3VwZXJUeXBlT2ZUeXBlID0gdGhpcy5pc1N1cGVyVHlwZU9mKHR5cGUpLFxuICAgICAgICAgIGVxdWFsVG9UeXBlU3ViVHlwZU9mT3JTdXBlclR5cGVPZiA9IChlcXVhbFRvVHlwZSB8fCBzdWJUeXBlT2ZUeXBlIHx8IHN1cGVyVHlwZU9mVHlwZSk7XG5cbiAgICByZXR1cm4gZXF1YWxUb1R5cGVTdWJUeXBlT2ZPclN1cGVyVHlwZU9mO1xuICB9XG5cbiAgbWF0Y2hOYW1lKG5hbWUpIHtcbiAgICBjb25zdCBtYXRjaGVzTmFtZSA9ICh0aGlzLm5hbWUgPT09IG5hbWUpO1xuXG4gICAgcmV0dXJuIG1hdGNoZXNOYW1lO1xuICB9XG5cbiAgbWF0Y2hUeXBlTmFtZSh0eXBlTmFtZSkge1xuICAgIGNvbnN0IG1hdGNoZXNUeXBlTmFtZSA9ICh0aGlzLm5hbWUgPT09IHR5cGVOYW1lKTtcblxuICAgIHJldHVybiBtYXRjaGVzVHlwZU5hbWU7XG4gIH1cblxuICBhc1N0cmluZyhub1N1cGVyVHlwZSA9ICh0aGlzLnN1cGVyVHlwZSA9PT0gbnVsbCkpIHtcbiAgICBsZXQgc3RyaW5nO1xuXG4gICAgaWYgKG5vU3VwZXJUeXBlKSB7XG4gICAgICBzdHJpbmcgPSBgJHt0aGlzLm5hbWV9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3VwZXJUeXBlTmFtZSA9IHRoaXMuc3VwZXJUeXBlLmdldE5hbWUoKTtcblxuICAgICAgc3RyaW5nID0gYCR7dGhpcy5uYW1lfToke3N1cGVyVHlwZU5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHN1cGVyVHlwZUpTT04gPSAodGhpcy5zdXBlclR5cGUgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VwZXJUeXBlLnRvSlNPTigpLFxuICAgICAgICAgIGtpbmQgPSBUWVBFX0tJTkQsXG4gICAgICAgICAgbmFtZSA9IHRoaXMubmFtZSxcbiAgICAgICAgICBzdXBlclR5cGUgPSBzdXBlclR5cGVKU09OLCAgLy8vXG4gICAgICAgICAganNvbiA9IFt7XG4gICAgICAgICAgICBraW5kLFxuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIHN1cGVyVHlwZVxuICAgICAgICAgIH1dO1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVR5cGVOYW1lKHR5cGVOYW1lKSB7XG4gICAgY29uc3QgbmFtZSA9IHR5cGVOYW1lLCAgLy8vXG4gICAgICAgICAgc3VwZXJUeXBlID0gbnVsbCxcbiAgICAgICAgICB0eXBlID0gbmV3IFR5cGUobmFtZSwgc3VwZXJUeXBlKTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgc3RhdGljIGZyb21UeXBlTmFtZUFuZFN1cGVyVHlwZSh0eXBlTmFtZSwgc3VwZXJUeXBlKSB7XG4gICAgY29uc3QgbmFtZSA9IHR5cGVOYW1lLCAgLy8vXG4gICAgICAgICAgdHlwZSA9IG5ldyBUeXBlKG5hbWUsIHN1cGVyVHlwZSk7XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxufVxuIiwiUmVhY3QuY3JlYXRlRWxlbWVudCJdLCJuYW1lcyI6WyJUeXBlIiwibmFtZSIsInN1cGVyVHlwZSIsImdldE5hbWUiLCJnZXRTdXBlclR5cGUiLCJpc0VxdWFsVG8iLCJ0eXBlIiwiZXF1YWxUb1R5cGUiLCJpc1N1YlR5cGVPZiIsInN1YlR5cGVPZlR5cGUiLCJpc1N1cGVyVHlwZU9mIiwic3VwZXJUeXBlT2ZUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiLCJlcXVhbFRvVHlwZU9yU3ViVHlwZU9mIiwiaXNFcXVhbFRvT3JTdXBlclR5cGVPZiIsImVxdWFsVG9UeXBlT3JTdXBlclR5cGVPZiIsImlzRXF1YWxUb1N1YlR5cGVPZk9yU3VwZXJUeXBlT2YiLCJlcXVhbFRvVHlwZVN1YlR5cGVPZk9yU3VwZXJUeXBlT2YiLCJtYXRjaE5hbWUiLCJtYXRjaGVzTmFtZSIsIm1hdGNoVHlwZU5hbWUiLCJ0eXBlTmFtZSIsIm1hdGNoZXNUeXBlTmFtZSIsImFzU3RyaW5nIiwibm9TdXBlclR5cGUiLCJzdHJpbmciLCJzdXBlclR5cGVOYW1lIiwidG9KU09OIiwic3VwZXJUeXBlSlNPTiIsImtpbmQiLCJUWVBFX0tJTkQiLCJqc29uIiwiZnJvbVR5cGVOYW1lIiwiZnJvbVR5cGVOYW1lQW5kU3VwZXJUeXBlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQUlxQkE7OztxQkFGSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFWCxJQUFBLEFBQU1BLHFCQUFOO2FBQU1BLEtBQ1BDLElBQUksRUFBRUMsU0FBUzs4QkFEUkY7UUFFakIsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxTQUFTLEdBQUdBOztpQkFIQUY7O1lBTW5CRyxLQUFBQTttQkFBQUEsU0FBQUEsVUFBVTtnQkFDUixPQUFPLElBQUksQ0FBQ0YsSUFBSTtZQUNsQjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxlQUFlO2dCQUNiLE9BQU8sSUFBSSxDQUFDRixTQUFTO1lBQ3ZCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLFVBQVVDLElBQUksRUFBRTtnQkFDZCxJQUFNQyxjQUFlLElBQUksS0FBS0Q7Z0JBRTlCLE9BQU9DO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsWUFBWUYsSUFBSSxFQUFFO2dCQUNoQixJQUFJRyxnQkFBZ0IsS0FBSztnQkFFekIsSUFBSSxJQUFJLENBQUNQLFNBQVMsS0FBS0ksTUFBTTtvQkFDM0JHLGdCQUFnQixJQUFJO2dCQUN0QixPQUFPO29CQUNMLElBQUksSUFBSSxDQUFDUCxTQUFTLEtBQUssSUFBSSxFQUFFO3dCQUMzQk8sZ0JBQWdCLElBQUksQ0FBQ1AsU0FBUyxDQUFDTSxXQUFXLENBQUNGO29CQUM3QyxDQUFDO2dCQUNILENBQUM7Z0JBRUQsT0FBT0c7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxjQUFjSixJQUFJLEVBQUU7Z0JBQ2xCLElBQUlLLGtCQUFrQixLQUFLO2dCQUUzQixJQUFNVCxZQUFZSSxLQUFLRixZQUFZO2dCQUVuQyxJ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
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBUWVBFX0tJTkQgfSBmcm9tIFwiLi9raW5kc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUeXBlIHtcbiAgY29uc3RydWN0b3IobmFtZSwgc3VwZXJUeXBlKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnN1cGVyVHlwZSA9IHN1cGVyVHlwZTtcbiAgfVxuXG4gIGdldE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIGdldFN1cGVyVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdXBlclR5cGU7XG4gIH1cblxuICBpc0VxdWFsVG8odHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG9UeXBlID0gKHRoaXMgPT09IHR5cGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG9UeXBlO1xuICB9XG5cbiAgaXNTdWJUeXBlT2YodHlwZSkge1xuICAgIGxldCBzdWJUeXBlT2ZUeXBlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5zdXBlclR5cGUgPT09IHR5cGUpIHtcbiAgICAgIHN1YlR5cGVPZlR5cGUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5zdXBlclR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgc3ViVHlwZU9mVHlwZSA9IHRoaXMuc3VwZXJUeXBlLmlzU3ViVHlwZU9mKHR5cGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdWJUeXBlT2ZUeXBlO1xuICB9XG5cbiAgaXNTdXBlclR5cGVPZih0eXBlKSB7XG4gICAgbGV0IHN1cGVyVHlwZU9mVHlwZSA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3VwZXJUeXBlID0gdHlwZS5nZXRTdXBlclR5cGUoKTtcblxuICAgIGlmIChzdXBlclR5cGUgPT09IHRoaXMpIHtcbiAgICAgIHN1cGVyVHlwZU9mVHlwZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzdXBlclR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgc3VwZXJUeXBlT2ZUeXBlID0gc3VwZXJUeXBlLmlzU3VwZXJUeXBlT2YodGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyVHlwZU9mVHlwZTtcbiAgfVxuXG4gIGlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpIHtcbiAgICBjb25zdCBlcXVhbFRvVHlwZSA9IHRoaXMuaXNFcXVhbFRvKHR5cGUpLFxuICAgICAgICAgIHN1YlR5cGVPZlR5cGUgPSB0aGlzLmlzU3ViVHlwZU9mKHR5cGUpLFxuICAgICAgICAgIGVxdWFsVG9UeXBlT3JTdWJUeXBlT2YgPSAoZXF1YWxUb1R5cGUgfHwgc3ViVHlwZU9mVHlwZSk7XG5cbiAgICByZXR1cm4gZXF1YWxUb1R5cGVPclN1YlR5cGVPZjtcbiAgfVxuXG4gIGlzRXF1YWxUb09yU3VwZXJUeXBlT2YodHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG9UeXBlID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3VwZXJUeXBlT2ZUeXBlID0gdGhpcy5pc1N1cGVyVHlwZU9mKHR5cGUpLFxuICAgICAgICAgIGVxdWFsVG9UeXBlT3JTdXBlclR5cGVPZiA9IChlcXVhbFRvVHlwZSB8fCBzdXBlclR5cGVPZlR5cGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG9UeXBlT3JTdXBlclR5cGVPZjtcbiAgfVxuXG4gIGlzRXF1YWxUb1N1YlR5cGVPZk9yU3VwZXJUeXBlT2YodHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG9UeXBlID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3ViVHlwZU9mVHlwZSA9IHRoaXMuaXNTdWJUeXBlT2YodHlwZSksXG4gICAgICAgICAgc3VwZXJUeXBlT2ZUeXBlID0gdGhpcy5pc1N1cGVyVHlwZU9mKHR5cGUpLFxuICAgICAgICAgIGVxdWFsVG9UeXBlU3ViVHlwZU9mT3JTdXBlclR5cGVPZiA9IChlcXVhbFRvVHlwZSB8fCBzdWJUeXBlT2ZUeXBlIHx8IHN1cGVyVHlwZU9mVHlwZSk7XG5cbiAgICByZXR1cm4gZXF1YWxUb1R5cGVTdWJUeXBlT2ZPclN1cGVyVHlwZU9mO1xuICB9XG5cbiAgbWF0Y2hOYW1lKG5hbWUpIHtcbiAgICBjb25zdCBtYXRjaGVzTmFtZSA9ICh0aGlzLm5hbWUgPT09IG5hbWUpO1xuXG4gICAgcmV0dXJuIG1hdGNoZXNOYW1lO1xuICB9XG5cbiAgbWF0Y2hUeXBlTmFtZSh0eXBlTmFtZSkge1xuICAgIGNvbnN0IG1hdGNoZXNUeXBlTmFtZSA9ICh0aGlzLm5hbWUgPT09IHR5cGVOYW1lKTtcblxuICAgIHJldHVybiBtYXRjaGVzVHlwZU5hbWU7XG4gIH1cblxuICBhc1N0cmluZyhub1N1cGVyVHlwZSA9ICh0aGlzLnN1cGVyVHlwZSA9PT0gbnVsbCkpIHtcbiAgICBsZXQgc3RyaW5nO1xuXG4gICAgaWYgKG5vU3VwZXJUeXBlKSB7XG4gICAgICBzdHJpbmcgPSBgJHt0aGlzLm5hbWV9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3VwZXJUeXBlTmFtZSA9IHRoaXMuc3VwZXJUeXBlLmdldE5hbWUoKTtcblxuICAgICAgc3RyaW5nID0gYCR7dGhpcy5uYW1lfToke3N1cGVyVHlwZU5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHN1cGVyVHlwZUpTT04gPSAodGhpcy5zdXBlclR5cGUgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VwZXJUeXBlLnRvSlNPTigpLFxuICAgICAgICAgIGtpbmQgPSBUWVBFX0tJTkQsXG4gICAgICAgICAgbmFtZSA9IHRoaXMubmFtZSxcbiAgICAgICAgICBzdXBlclR5cGUgPSBzdXBlclR5cGVKU09OLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIGtpbmQsXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgc3VwZXJUeXBlXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24pIHtcbiAgICBjb25zdCB7IG5hbWUgfSA9IGpzb247XG5cbiAgICBsZXQgeyBzdXBlclR5cGUgfSA9IGpzb247XG5cbiAgICBpZiAoc3VwZXJUeXBlICE9PSBudWxsKSB7XG4gICAgICBqc29uID0gc3VwZXJUeXBlOyAvLy9cblxuICAgICAgc3VwZXJUeXBlID0gVHlwZS5mcm9tSlNPTihqc29uKTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlID0gbmV3IFR5cGUobmFtZSwgc3VwZXJUeXBlKTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cblxuICBzdGF0aWMgZnJvbVR5cGVOYW1lKHR5cGVOYW1lKSB7XG4gICAgY29uc3QgbmFtZSA9IHR5cGVOYW1lLCAgLy8vXG4gICAgICAgICAgc3VwZXJUeXBlID0gbnVsbCxcbiAgICAgICAgICB0eXBlID0gbmV3IFR5cGUobmFtZSwgc3VwZXJUeXBlKTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgc3RhdGljIGZyb21UeXBlTmFtZUFuZFN1cGVyVHlwZSh0eXBlTmFtZSwgc3VwZXJUeXBlKSB7XG4gICAgY29uc3QgbmFtZSA9IHR5cGVOYW1lLCAgLy8vXG4gICAgICAgICAgdHlwZSA9IG5ldyBUeXBlKG5hbWUsIHN1cGVyVHlwZSk7XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxufVxuIiwiUmVhY3QuY3JlYXRlRWxlbWVudCJdLCJuYW1lcyI6WyJUeXBlIiwibmFtZSIsInN1cGVyVHlwZSIsImdldE5hbWUiLCJnZXRTdXBlclR5cGUiLCJpc0VxdWFsVG8iLCJ0eXBlIiwiZXF1YWxUb1R5cGUiLCJpc1N1YlR5cGVPZiIsInN1YlR5cGVPZlR5cGUiLCJpc1N1cGVyVHlwZU9mIiwic3VwZXJUeXBlT2ZUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiLCJlcXVhbFRvVHlwZU9yU3ViVHlwZU9mIiwiaXNFcXVhbFRvT3JTdXBlclR5cGVPZiIsImVxdWFsVG9UeXBlT3JTdXBlclR5cGVPZiIsImlzRXF1YWxUb1N1YlR5cGVPZk9yU3VwZXJUeXBlT2YiLCJlcXVhbFRvVHlwZVN1YlR5cGVPZk9yU3VwZXJUeXBlT2YiLCJtYXRjaE5hbWUiLCJtYXRjaGVzTmFtZSIsIm1hdGNoVHlwZU5hbWUiLCJ0eXBlTmFtZSIsIm1hdGNoZXNUeXBlTmFtZSIsImFzU3RyaW5nIiwibm9TdXBlclR5cGUiLCJzdHJpbmciLCJzdXBlclR5cGVOYW1lIiwidG9KU09OIiwic3VwZXJUeXBlSlNPTiIsImtpbmQiLCJUWVBFX0tJTkQiLCJqc29uIiwiZnJvbUpTT04iLCJmcm9tVHlwZU5hbWUiLCJmcm9tVHlwZU5hbWVBbmRTdXBlclR5cGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBSXFCQTs7O3FCQUZLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVYLElBQUEsQUFBTUEscUJBQU47YUFBTUEsS0FDUEMsSUFBSSxFQUFFQyxTQUFTOzhCQURSRjtRQUVqQixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLFNBQVMsR0FBR0E7O2lCQUhBRjs7WUFNbkJHLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVO2dCQUNSLE9BQU8sSUFBSSxDQUFDRixJQUFJO1lBQ2xCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLGVBQWU7Z0JBQ2IsT0FBTyxJQUFJLENBQUNGLFNBQVM7WUFDdkI7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUEsVUFBVUMsSUFBSSxFQUFFO2dCQUNkLElBQU1DLGNBQWUsSUFBSSxLQUFLRDtnQkFFOUIsT0FBT0M7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxZQUFZRixJQUFJLEVBQUU7Z0JBQ2hCLElBQUlHLGdCQUFnQixLQUFLO2dCQUV6QixJQUFJLElBQUksQ0FBQ1As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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-verify-cli",
3
3
  "author": "James Smith",
4
- "version": "0.0.374",
4
+ "version": "0.0.375",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
package/src/axiom.js CHANGED
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
2
 
3
+ import Label from "./label";
4
+
3
5
  import { AXIOM_KIND } from "./kinds";
4
6
  import { nodeAsString } from "./utilities/string";
7
+ import { STATEMENT_RULE_NAME } from "occam-custom-grammars/lib/ruleNames";
5
8
 
6
9
  export default class Axiom {
7
10
  constructor(labels, statementNode, suppositionStatementNode, consequentStatementNode) {
@@ -41,28 +44,74 @@ export default class Axiom {
41
44
  }
42
45
 
43
46
  toJSON() {
44
- const statementString = nodeAsString(this.statementNode),
47
+ const labelsJSON = this.labels.map((label) => {
48
+ const labelJSON = label.toJSON();
49
+
50
+ return labelJSON;
51
+ }),
52
+ statementString = nodeAsString(this.statementNode),
45
53
  consequentStatementString = nodeAsString(this.consequentStatementNode),
46
54
  suppositionStatementString = nodeAsString(this.suppositionStatementNode),
47
55
  kind = AXIOM_KIND,
56
+ labels = labelsJSON, ///
48
57
  statement = statementString, ///
49
58
  consequent = consequentStatementString, ///
50
59
  supposition = suppositionStatementString, ///
51
- json = this.labels.map((label) => {
52
- const labelString = label.asString();
60
+ json = {
61
+ kind,
62
+ labels,
63
+ statement,
64
+ consequent,
65
+ supposition
66
+ };
53
67
 
54
- label = labelString; ///
68
+ return json;
69
+ }
55
70
 
56
- return ({
57
- kind,
58
- label,
59
- statement,
60
- consequent,
61
- supposition
62
- });
63
- });
71
+ static fromJSON(json, callback) {
72
+ let { labels } = json;
64
73
 
65
- return json;
74
+ const { statement, consequent, supposition } = json;
75
+
76
+ labels = labels.map((label) => {
77
+ const json = label; ///
78
+
79
+ label = Label.fromJSON(json);
80
+
81
+ return label;
82
+ });
83
+
84
+ let statementNode = null,
85
+ consequentNode = null,
86
+ suppositionNode = null;
87
+
88
+ if (statement !== null) {
89
+ const content = statement, ///
90
+ ruleName = STATEMENT_RULE_NAME,
91
+ node = callback(content, ruleName);
92
+
93
+ statementNode = node; ///
94
+ }
95
+
96
+ if (consequent !== null) {
97
+ const content = consequent, ///
98
+ ruleName = STATEMENT_RULE_NAME,
99
+ node = callback(content, ruleName);
100
+
101
+ consequentNode = node; ///
102
+ }
103
+
104
+ if (supposition !== null) {
105
+ const content = supposition, ///
106
+ ruleName = STATEMENT_RULE_NAME,
107
+ node = callback(content, ruleName);
108
+
109
+ suppositionNode = node; ///
110
+ }
111
+
112
+ const axiom = new Axiom(labels, statementNode, consequentNode, suppositionNode);
113
+
114
+ return axiom;
66
115
  }
67
116
 
68
117
  static fromStatementNodeAndLabels(statementNode, labels) {
package/src/combinator.js CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { nodeAsString } from "./utilities/string";
4
4
  import { COMBINATOR_KIND } from "./kinds";
5
+ import { STATEMENT_RULE_NAME } from "./ruleNames";
5
6
 
6
7
  export default class Combinator {
7
8
  constructor(statementNode) {
@@ -22,14 +23,25 @@ export default class Combinator {
22
23
  const statementString = nodeAsString(this.statementNode),
23
24
  kind = COMBINATOR_KIND,
24
25
  statement = statementString, ///
25
- json = [{
26
+ json = {
26
27
  kind,
27
28
  statement
28
- }];
29
+ };
29
30
 
30
31
  return json;
31
32
  }
32
33
 
34
+ static fromJSON(json, callback) {
35
+ const { statement } = json,
36
+ content = statement, ///
37
+ ruleName = STATEMENT_RULE_NAME,
38
+ node = callback(content, ruleName),
39
+ statementNode = node, ///
40
+ combinator = new Combinator(statementNode);
41
+
42
+ return combinator;
43
+ }
44
+
33
45
  static fromStatementNode(statementNode) {
34
46
  const combinator = new Combinator(statementNode);
35
47
 
package/src/conclusion.js CHANGED
@@ -33,6 +33,17 @@ export default class Conclusion {
33
33
  return json;
34
34
  }
35
35
 
36
+ static fromJSON(json, callback) {
37
+ const { metastatement } = json,
38
+ ruleName = METASTATEMENT_RULE_NAME,
39
+ content = metastatement, ///
40
+ node = callback(content, ruleName),
41
+ metastatementNode = node, ///
42
+ conclusion = new Conclusion(metastatementNode);
43
+
44
+ return conclusion;
45
+ }
46
+
36
47
  static fromMetastatementNode(metastatementNode) {
37
48
  const conclusion = new Conclusion(metastatementNode);
38
49
 
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
 
3
+ import Type from "./type";
4
+
3
5
  import { nodeAsString } from "./utilities/string";
6
+ import { TERM_RULE_NAME } from "./ruleNames";
4
7
  import { CONSTRUCTOR_KIND } from "./kinds";
5
8
 
6
9
  export default class Constructor {
@@ -42,15 +45,33 @@ export default class Constructor {
42
45
  kind = CONSTRUCTOR_KIND,
43
46
  term = termString, ///
44
47
  type = typeJSON, ///
45
- json = [{
48
+ json = {
46
49
  kind,
47
50
  term,
48
51
  type
49
- }];
52
+ };
50
53
 
51
54
  return json;
52
55
  }
53
56
 
57
+ static fromJSON(json, callback) {
58
+ let { type } = json;
59
+
60
+ const { term } = json,
61
+ content = term, ///
62
+ ruleName = TERM_RULE_NAME,
63
+ node = callback(content, ruleName),
64
+ termNode = node; ///
65
+
66
+ json = type; ///
67
+
68
+ type = Type.fromJSON(json);
69
+
70
+ const constructor = new Constructor(termNode, type);
71
+
72
+ return constructor;
73
+ }
74
+
54
75
  static fromTermNodeAndType(termNode, type) {
55
76
  const constructor = new Constructor(termNode, type);
56
77
 
@@ -301,31 +301,31 @@ export default class FileContext {
301
301
  this.rules.forEach((rule) => {
302
302
  const ruleJSON = rule.toJSON();
303
303
 
304
- push(json, ruleJSON);
304
+ json.push(ruleJSON);
305
305
  });
306
306
 
307
307
  this.types.forEach((type) => {
308
308
  const typeJSON = type.toJSON();
309
309
 
310
- push(json, typeJSON);
310
+ json.push(typeJSON);
311
311
  });
312
312
 
313
313
  this.axioms.forEach((axiom) => {
314
314
  const axiomJSON = axiom.toJSON();
315
315
 
316
- push(json, axiomJSON);
316
+ json.push(axiomJSON);
317
317
  });
318
318
 
319
319
  this.combinators.forEach((combinator) => {
320
320
  const combinatorJSON = combinator.toJSON();
321
321
 
322
- push(json, combinatorJSON);
322
+ json.push(combinatorJSON);
323
323
  });
324
324
 
325
325
  this.constructors.forEach((constructor) => {
326
326
  const constructorJSON = constructor.toJSON();
327
327
 
328
- push(json, constructorJSON)
328
+ json.push(constructorJSON)
329
329
  });
330
330
 
331
331
  return json;
@@ -16,8 +16,8 @@ export default class DirectoryReleaseContext extends ReleaseContext {
16
16
  return this.fileContexts;
17
17
  }
18
18
 
19
- getRules(releaseNames = []) {
20
- const rules = [],
19
+ getTypes(releaseNames = []) {
20
+ const types = [],
21
21
  releaseName = this.getReleaseName(),
22
22
  releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
23
23
 
@@ -27,23 +27,23 @@ export default class DirectoryReleaseContext extends ReleaseContext {
27
27
  const bubble = false;
28
28
 
29
29
  this.fileContexts.forEach((fileContext) => {
30
- const fileContextRules = fileContext.getRules(bubble);
30
+ const fileContextTypes = fileContext.getTypes(bubble);
31
31
 
32
- push(rules, fileContextRules);
32
+ push(types, fileContextTypes);
33
33
  });
34
34
 
35
35
  this.releaseContexts.forEach((releaseContext) => {
36
- const releaseContextRules = releaseContext.getRules(releaseNames);
36
+ const releaseContextTypes = releaseContext.getTypes(releaseNames);
37
37
 
38
- push(rules, releaseContextRules);
38
+ push(types, releaseContextTypes);
39
39
  });
40
40
  }
41
41
 
42
- return rules;
42
+ return types;
43
43
  }
44
44
 
45
- getTypes(releaseNames = []) {
46
- const types = [],
45
+ getRules(releaseNames = []) {
46
+ const rules = [],
47
47
  releaseName = this.getReleaseName(),
48
48
  releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
49
49
 
@@ -53,19 +53,19 @@ export default class DirectoryReleaseContext extends ReleaseContext {
53
53
  const bubble = false;
54
54
 
55
55
  this.fileContexts.forEach((fileContext) => {
56
- const fileContextTypes = fileContext.getTypes(bubble);
56
+ const fileContextRules = fileContext.getRules(bubble);
57
57
 
58
- push(types, fileContextTypes);
58
+ push(rules, fileContextRules);
59
59
  });
60
60
 
61
61
  this.releaseContexts.forEach((releaseContext) => {
62
- const releaseContextTypes = releaseContext.getTypes(releaseNames);
62
+ const releaseContextRules = releaseContext.getRules(releaseNames);
63
63
 
64
- push(types, releaseContextTypes);
64
+ push(rules, releaseContextRules);
65
65
  });
66
66
  }
67
67
 
68
- return types;
68
+ return rules;
69
69
  }
70
70
 
71
71
  getAxioms(releaseNames = []) {
@@ -2,17 +2,23 @@
2
2
 
3
3
  import ReleaseContext from "../../context/release";
4
4
 
5
+ import Rule from "../../rule";
6
+ import Type from "../../type";
7
+ import Axiom from "../../axiom";
8
+ import Combinator from "../../combinator";
9
+ import Constructor from "../../constructor";
10
+
5
11
  import { push } from "../../utilities/array";
6
- import {combinedCustomGrammarFromReleaseContexts, customGrammarFromNameAndEntries} from "../../utilities/customGrammar";
12
+ import { customGrammarFromNameAndEntries } from "../../utilities/customGrammar";
13
+ import { RULE_KIND, TYPE_KIND, AXIOM_KIND, COMBINATOR_KIND, CONSTRUCTOR_KIND } from "../../kinds";
7
14
 
8
15
  export default class FileReleaseContext extends ReleaseContext {
9
- constructor(log, name, entries, callbacks, verified, customGrammar, florenceLexer, florenceParser, releaseContexts, contextJSON, rules, types, axioms, labels, combinators, constructors) {
16
+ constructor(log, name, entries, callbacks, verified, customGrammar, florenceLexer, florenceParser, releaseContexts, contextJSON, types, rules, axioms, combinators, constructors) {
10
17
  super(log, name, entries, callbacks, verified, customGrammar, florenceLexer, florenceParser, releaseContexts);
11
18
 
12
- this.rules = rules;
13
19
  this.types = types;
20
+ this.rules = rules;
14
21
  this.axioms = axioms;
15
- this.labels = labels;
16
22
  this.combinators = combinators;
17
23
  this.constructors = constructors;
18
24
  this.contextJSON = contextJSON;
@@ -22,10 +28,10 @@ export default class FileReleaseContext extends ReleaseContext {
22
28
  return this.contextJSON;
23
29
  }
24
30
 
25
- getRules(releaseNames = []) {
26
- const rules = [
27
- ...this.rules
28
- ],
31
+ getTypes(releaseNames = []) {
32
+ const types = [
33
+ ...this.types
34
+ ],
29
35
  releaseName = this.getReleaseName(),
30
36
  releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
31
37
 
@@ -33,18 +39,18 @@ export default class FileReleaseContext extends ReleaseContext {
33
39
  releaseNames.push(releaseName);
34
40
 
35
41
  this.releaseContexts.forEach((releaseContext) => {
36
- const releaseContextRules = releaseContext.getRules(releaseNames);
42
+ const releaseContextTypes = releaseContext.getTypes(releaseNames);
37
43
 
38
- push(rules, releaseContextRules);
44
+ push(types, releaseContextTypes);
39
45
  });
40
46
  }
41
47
 
42
- return rules;
48
+ return types;
43
49
  }
44
50
 
45
- getTypes(releaseNames = []) {
46
- const types = [
47
- ...this.types
51
+ getRules(releaseNames = []) {
52
+ const rules = [
53
+ ...this.rules
48
54
  ],
49
55
  releaseName = this.getReleaseName(),
50
56
  releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
@@ -53,13 +59,13 @@ export default class FileReleaseContext extends ReleaseContext {
53
59
  releaseNames.push(releaseName);
54
60
 
55
61
  this.releaseContexts.forEach((releaseContext) => {
56
- const releaseContextTypes = releaseContext.getTypes(releaseNames);
62
+ const releaseContextRules = releaseContext.getRules(releaseNames);
57
63
 
58
- push(types, releaseContextTypes);
64
+ push(rules, releaseContextRules);
59
65
  });
60
66
  }
61
67
 
62
- return types;
68
+ return rules;
63
69
  }
64
70
 
65
71
  getAxioms(releaseNames = []) {
@@ -83,19 +89,29 @@ export default class FileReleaseContext extends ReleaseContext {
83
89
  }
84
90
 
85
91
  getLabels(releaseNames = []) {
86
- const labels = [
87
- ...this.labels
88
- ],
92
+ const labels = [],
89
93
  releaseName = this.getReleaseName(),
90
94
  releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
91
95
 
96
+ this.rules.forEach((rule) => {
97
+ const ruleLabels = rule.getLabels();
98
+
99
+ push(labels, ruleLabels);
100
+ });
101
+
102
+ this.axioms.forEach((axiom) => {
103
+ const axiomLabels = axiom.getLabels();
104
+
105
+ push(labels, axiomLabels);
106
+ });
107
+
92
108
  if (!releaseNamesIncludesReleaseName) {
93
109
  releaseNames.push(releaseName);
94
110
 
95
111
  this.releaseContexts.forEach((releaseContext) => {
96
- const releaseContextLabels = releaseContext.getLabels(releaseNames);
112
+ const releaseContextAxioms = releaseContext.getAxioms(releaseNames);
97
113
 
98
- push(labels, releaseContextLabels);
114
+ push(labels, releaseContextAxioms);
99
115
  });
100
116
  }
101
117
 
@@ -145,7 +161,61 @@ export default class FileReleaseContext extends ReleaseContext {
145
161
  initialise(dependencyReleaseContexts) {
146
162
  super.initialise(dependencyReleaseContexts);
147
163
 
148
- debugger
164
+ const ruleMap = this.florenceParser.getRuleMap(),
165
+ jsonArray = this.contextJSON, ///
166
+ callback = (content, ruleName) => {
167
+ const tokens = this.florenceLexer.tokenise(content),
168
+ rule = ruleMap[ruleName],
169
+ node = this.florenceParser.parse(tokens, rule);
170
+
171
+ return node;
172
+ };
173
+
174
+ jsonArray.forEach((json) => {
175
+ const { kind } = json;
176
+
177
+ switch (kind) {
178
+ case TYPE_KIND: {
179
+ const type = Type.fromJSON(json);
180
+
181
+ this.types.push(type);
182
+
183
+ break;
184
+ }
185
+
186
+ case RULE_KIND: {
187
+ const rule = Rule.fromJSON(json, callback);
188
+
189
+ this.rules.push(rule);
190
+
191
+ break;
192
+ }
193
+
194
+ case AXIOM_KIND: {
195
+ const axiom = Axiom.fromJSON(json, callback);
196
+
197
+ this.axioms.push(axiom);
198
+
199
+ break;
200
+ }
201
+
202
+ case COMBINATOR_KIND: {
203
+ const combinator = Combinator.fromJSON(json, callback);
204
+
205
+ this.combinators.push(combinator);
206
+
207
+ break;
208
+ }
209
+
210
+ case CONSTRUCTOR_KIND: {
211
+ const constructor = Constructor.fromJSON(json, callback);
212
+
213
+ this.constructors.push(constructor);
214
+
215
+ break;
216
+ }
217
+ }
218
+ });
149
219
  }
150
220
 
151
221
  static fromLogNameEntriesCallbacksAndContextJSON(log, name, entries, callbacks, contextJSON) {
@@ -154,13 +224,12 @@ export default class FileReleaseContext extends ReleaseContext {
154
224
  florenceLexer = null,
155
225
  florenceParser = null,
156
226
  releaseContexts = null,
157
- rules = null,
158
227
  types = null,
228
+ rules = null,
159
229
  axioms = null,
160
- labels = null,
161
230
  combinators = null,
162
231
  constructors = null,
163
- releaseContext = new FileReleaseContext(log, name, entries, callbacks, verified, customGrammar, florenceLexer, florenceParser, releaseContexts, contextJSON, rules, types, axioms, labels, combinators, constructors);
232
+ releaseContext = new FileReleaseContext(log, name, entries, callbacks, verified, customGrammar, florenceLexer, florenceParser, releaseContexts, contextJSON, types, rules, axioms, combinators, constructors);
164
233
 
165
234
  return releaseContext;
166
235
  }
package/src/kinds.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- export const RULE_KIND = "rule";
4
3
  export const TYPE_KIND = "type";
4
+ export const RULE_KIND = "rule";
5
5
  export const AXIOM_KIND = "axiom";
6
6
  export const COMBINATOR_KIND = "combinator";
7
7
  export const CONSTRUCTOR_KIND = "constructor";
package/src/label.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { nodeAsString } from "./utilities/string";
4
+ import { TERM_RULE_NAME } from "./ruleNames";
4
5
  import { labelNameFromLabelNode } from "./utilities/query";
5
6
 
6
7
  export default class Label {
@@ -26,6 +27,22 @@ export default class Label {
26
27
  return string;
27
28
  }
28
29
 
30
+ toJSON() {
31
+ const string = nodeAsString(this.node),
32
+ json = string; ///
33
+
34
+ return json;
35
+ }
36
+
37
+ static fromJSON(json, callback) {
38
+ const content = json, ///
39
+ ruleName = TERM_RULE_NAME,
40
+ node = callback(content, ruleName),
41
+ label = new Label(node);
42
+
43
+ return label;
44
+ }
45
+
29
46
  static fromLabelNode(labelNode) {
30
47
  const node = labelNode, ///
31
48
  variable = new Label(node);
package/src/premise.js CHANGED
@@ -70,6 +70,17 @@ export default class Premise {
70
70
  return json;
71
71
  }
72
72
 
73
+ static fromJSON(json, callback) {
74
+ const { metastatement } = json,
75
+ ruleName = METASTATEMENT_RULE_NAME,
76
+ content = metastatement, ///
77
+ node = callback(content, ruleName),
78
+ metastatementNode = node, ///
79
+ premise = new Premise(metastatementNode);
80
+
81
+ return premise;
82
+ }
83
+
73
84
  static fromMetastatementNode(metastatementNode) {
74
85
  const premise = new Premise(metastatementNode);
75
86