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