lib/nilac/compile_lambdas.rb in nilac-0.0.4.3.9.6 vs lib/nilac/compile_lambdas.rb in nilac-0.0.4.3.9.7
- old
+ new
@@ -4,18 +4,28 @@
require_relative 'lexical_scoped_function_variables'
require_relative 'add_auto_return_statement'
def compile_lambdas(input_file_contents,temporary_nila_file)
- def compile_single_line_lambda(input_block)
+ def compile_single_line_lambda(input_block,parameterless = false)
# This method compiles a single lambda into a Javascript function expression
- block_parameters, block_contents = input_block[1...-1].split("|",2)[1].split("|",2)
+ if parameterless
- compiled_lambda = "function(#{block_parameters.lstrip.rstrip}) {\n\n #{block_contents.strip} \n\n}"
+ block_contents = input_block[3...-1]
+ compiled_lambda = "function() {\n\n #{block_contents.strip} \n\n}"
+
+ else
+
+ block_parameters, block_contents = input_block[1...-1].split("|",2)[1].split("|",2)
+
+ compiled_lambda = "function(#{block_parameters.lstrip.rstrip}) {\n\n #{block_contents.strip} \n\n}"
+
+ end
+
return compiled_lambda
end
def find_lambda_name(input_block)
@@ -34,11 +44,11 @@
return var_name
end
- input_file_contents = input_file_contents.collect {|element| element.gsub(" -> "," lambda ")}
+ input_file_contents = input_file_contents.collect {|element| (replace_strings(element).include?(" -> ") ? element.gsub(" -> "," lambda ") : element)}
input_file_contents = input_file_contents.collect {|element| element.gsub("append","appand")}
possible_lambdas = input_file_contents.reject {|line| !replace_strings(line).include?("lambda")}
@@ -124,11 +134,11 @@
end
else
- compiled_lambda = lambda_extract[1...-1].lstrip.rstrip
+ compiled_lambda = compile_single_line_lambda(lambda_extract,true)
extracted_string.each_with_index do |string,index|
compiled_lambda = compiled_lambda.sub("--repstring#{index+1}",string)
@@ -164,10 +174,16 @@
end
replacement_array[1...-1] = replacement_array[1...-1].collect {|element| "#iggggnnnore #{element}"}
- modified_file_contents[input_file_contents.index(original_loop)] = replacement_array.join
+ replacement_array[0] = replacement_array[0].sub("function","lambdef").sub("{\n","%--%\n")
+
+ replacement_array[-1] = replacement_array[-1].sub("}","\n-%%-")
+
+ replacement_string = replacement_array.join
+
+ modified_file_contents[input_file_contents.index(original_loop)] = replacement_string[-1].eql?(";") ? replacement_string : replacement_string + ";"
end
end
\ No newline at end of file