BUG: set ASTNode parent to symbol!?
parent
292fa20eea
commit
b01c7f521d
|
@ -6,7 +6,7 @@ module CeleryScript
|
|||
@comment, @kind, @parent = comment, kind, parent
|
||||
|
||||
@args = args.map do |key, value|
|
||||
[key, maybe_initialize(key, value)]
|
||||
[key, maybe_initialize(self, value)]
|
||||
end.to_h if args
|
||||
|
||||
@body = body.map do |e|
|
||||
|
|
|
@ -1,5 +1,29 @@
|
|||
module CeleryScript
|
||||
class TypeCheckError < StandardError; end
|
||||
class LeafValue
|
||||
attr_reader :val
|
||||
def initialize(val)
|
||||
@val = val
|
||||
end
|
||||
end
|
||||
|
||||
class NodeValue
|
||||
attr_reader :val
|
||||
def initialize(val)
|
||||
@val = val
|
||||
end
|
||||
end
|
||||
|
||||
class Checker
|
||||
attr_reader :tree, :corpus
|
||||
|
||||
def initialize(tree, corpus)
|
||||
@tree, @corpus = tree, corpus
|
||||
end
|
||||
|
||||
def run!
|
||||
binding.pry
|
||||
tree
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
module CeleryScript
|
||||
class TypeCheckError < StandardError; end
|
||||
class LeafValue
|
||||
attr_reader :val
|
||||
def initialize(val)
|
||||
@val = val
|
||||
end
|
||||
end
|
||||
|
||||
class NodeValue
|
||||
attr_reader :val
|
||||
def initialize(val)
|
||||
@val = val
|
||||
end
|
||||
end
|
||||
|
||||
class Corpus
|
||||
def defineArg(arg_name, allowed_values)
|
||||
# additional_checks.call("node", "err_callback")
|
||||
self
|
||||
end
|
||||
|
||||
def defineNode(kind, allowed_args, allowed_body_nodes = [])
|
||||
self
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,49 +1,35 @@
|
|||
# require 'spec_helper'
|
||||
require 'spec_helper'
|
||||
|
||||
# describe CeleryScript::Checker do
|
||||
# file_path = File.read("/home/rick/code/farmbot/api/spec/mutations/sequences/improved_ast_fixture.json")
|
||||
describe CeleryScript::Checker do
|
||||
file_path = File.read("/home/rick/code/farmbot/api/spec/mutations/sequences/improved_ast_fixture.json")
|
||||
|
||||
# let(:tree) do
|
||||
# CeleryScript::AstNode.new(JSON.parse(file_path).deep_symbolize_keys)
|
||||
# end
|
||||
let(:tree) do
|
||||
CeleryScript::AstNode.new(JSON.parse(file_path).deep_symbolize_keys)
|
||||
end
|
||||
|
||||
# # class LeafValue
|
||||
# # attr_reader :val
|
||||
# # def initialize(val)
|
||||
# # @val = val
|
||||
# # end
|
||||
# # end
|
||||
# # class NodeValue
|
||||
# # attr_reader :val
|
||||
# # def initialize(val)
|
||||
# # @val = val
|
||||
# # end
|
||||
# # end
|
||||
let (:corpus) do
|
||||
CeleryScript::Corpus
|
||||
.new
|
||||
.defineArg(:data_label, [String])
|
||||
.defineArg(:data_type, [String])
|
||||
.defineArg(:data_value, [Fixnum, :var_get])
|
||||
.defineArg(:x, [:blah]) do |param, problem|
|
||||
problem("Param can't be -1") if param < 0
|
||||
end
|
||||
.defineNode(:sequence, [:x], [:other, :whatever])
|
||||
.defineNode(:blah, [:data_value, :data_type])
|
||||
.defineNode(:var_get, [:data_label])
|
||||
.defineNode(:whatever, [:data_type, :data_value])
|
||||
.defineNode(:var_get, [:data_label])
|
||||
.defineNode(:other, [:data_type, :data_value])
|
||||
end
|
||||
|
||||
# let (:corpus) do
|
||||
# CeleryScript::Corpus
|
||||
# .new
|
||||
# .defineArg(:data_label, [String])
|
||||
# .defineArg(:data_type, [String])
|
||||
# .defineArg(:data_value, [Fixnum, :var_get])
|
||||
# .defineArg(:x, [:blah]) do |param, problem|
|
||||
# problem("Param can't be -1") if param < 0
|
||||
# end
|
||||
# # Kind: # args: # body:
|
||||
# .defineNode(:sequence, [:x], [:other, :whatever])
|
||||
# .defineNode(:blah, [:data_value, :data_type])
|
||||
# .defineNode(:var_get, [:data_label])
|
||||
# .defineNode(:whatever, [:data_type, :data_value])
|
||||
# .defineNode(:var_get, [:data_label])
|
||||
# .defineNode(:other, [:data_type, :data_value])
|
||||
# end
|
||||
|
||||
# it "runs" do
|
||||
# begin
|
||||
# checker = CeleryScript::Checker.new(tree, corpus)
|
||||
# outcome = checker.run!
|
||||
# rescue => CeleryScript::TypeCheckError
|
||||
# binding.pry
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
it "runs" do
|
||||
begin
|
||||
checker = CeleryScript::Checker.new(tree, corpus)
|
||||
outcome = checker.run!
|
||||
rescue CeleryScript::TypeCheckError => e
|
||||
binding.pry
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue