lib/nydp/lexical_context_builder.rb in nydp-0.2.3 vs lib/nydp/lexical_context_builder.rb in nydp-0.2.5

- old
+ new

@@ -1,14 +1,24 @@ module Nydp::LexicalContextBuilder extend Nydp::Helper + def self.mklc nexpected + (nexpected > 0) ? "lc = Nydp::LexicalContext.new lc\n " : "" + end + + def self.build_arg_names ngiven + (["lc"] + (0...ngiven ).map { |i| "arg_#{i}"}).join ", " + end + def self.build_set_args_n_method ngiven, nexpected setter_count = [ngiven, nexpected].min - arg_names = (0...ngiven ).map { |i| "arg_#{i}"} setters = (0...setter_count).map { |i| "lc.at_#{i}= arg_#{i}"} -" def set_args_#{ngiven} lc, #{arg_names.join ", "} - #{setters.join "\n "} +" def set_args_#{ngiven} #{build_arg_names ngiven} + #{mklc nexpected}#{setters.join "\n "} + lc + rescue StandardError => e + raise \"error in \#{self.class.name}#set_args_#{ngiven}\" end " end def self.build_arg_conses arg_names, n @@ -24,46 +34,53 @@ arg_names = (0...ngiven ).map { |i| "arg_#{i}"} setters = (0...setter_count).map { |i| "lc.at_#{i}= arg_#{i}"} if ngiven > setter_count rest_setter = "lc.at_#{nexpected}= #{build_arg_conses arg_names[setter_count..-1], 0}" end -" def set_args_#{ngiven} lc, #{arg_names.join ", "} - #{setters.join "\n "} +" def set_args_#{ngiven} #{build_arg_names ngiven} + #{mklc 1}#{setters.join "\n "} #{rest_setter} + lc + rescue StandardError => e + raise \"error in \#{self.class.name}#set_args_#{ngiven}\" end " end def self.build_set_args_method nexpected setters = (0...nexpected).map { |i| "lc.at_#{i}= args#{ ([".cdr"] * i).join }.car"} " def set_args lc, args - #{setters.join "\n "} + #{mklc nexpected}#{setters.join "\n "} + lc + rescue StandardError => e + raise \"error in \#{self.class.name}#set_args\" end " end def self.build_set_args_rest_method nexpected setters = (0...nexpected).map { |i| "lc.at_#{i}= args#{ ([".cdr"] * i).join }.car"} rest_set = "lc.at_#{nexpected}= args#{ ([".cdr"] *(nexpected)).join }" " def set_args lc, args - #{setters.join "\n "} + #{mklc 1}#{setters.join "\n "} #{rest_set} + lc + rescue StandardError => e + raise \"error in \#{self.class.name}#set_args\" end " end def self.get_builder_class expected_arg_count name = "B_#{expected_arg_count}" existing = const_get(name) rescue nil return name if existing - n_methods = (1..3).map { |given| build_set_args_n_method given, expected_arg_count } + n_methods = (0..3).map { |given| build_set_args_n_method given, expected_arg_count } x_method = build_set_args_method expected_arg_count klass = <<KLASS module #{name} - def initialize_names names ; end - #{n_methods.join "\n"} #{x_method} end KLASS @@ -74,15 +91,13 @@ def self.get_builder_rest_class proper_arg_count name = "B_#{proper_arg_count}_Rest" existing = const_get(name) rescue nil return name if existing - n_methods = (1..3).map { |given| build_set_args_n_rest_method given, proper_arg_count } + n_methods = (0..3).map { |given| build_set_args_n_rest_method given, proper_arg_count } x_method = build_set_args_rest_method proper_arg_count klass = <<KLASS module #{name} - def initialize_names names ; end - #{n_methods.join "\n"} #{x_method} end KLASS