bin/nilac in nilac-0.0.4.2.9 vs bin/nilac in nilac-0.0.4.3.0

- old
+ new

@@ -3075,28 +3075,128 @@ def compile_one_line_blocks(input_block) block_parameters, block_contents = input_block[1...-1].split("|",2)[1].split("|",2) - compiled_block = "(function(#{block_parameters.lstrip.rstrip}) {\n\n #{block_contents} \n\n}(_i))_!;\n" + compiled_block = "(function(#{block_parameters.lstrip.rstrip}) {\n\n #{block_contents.strip} \n\n}(_i))_!;\n" return compiled_block end - modified_file_contents = input_file_contents.clone + def extract_variable_names(input_file_contents, temporary_nila_file) + variables = [] + + input_file_contents = input_file_contents.collect { |element| element.gsub("==", "equalequal") } + + input_file_contents = input_file_contents.collect { |element| element.gsub("!=", "notequal") } + + input_file_contents = input_file_contents.collect { |element| element.gsub("+=", "plusequal") } + + input_file_contents = input_file_contents.collect { |element| element.gsub("-=", "minusequal") } + + input_file_contents = input_file_contents.collect { |element| element.gsub("*=", "multiequal") } + + input_file_contents = input_file_contents.collect { |element| element.gsub("/=", "divequal") } + + input_file_contents = input_file_contents.collect { |element| element.gsub("%=", "modequal") } + + input_file_contents = input_file_contents.collect { |element| element.gsub("=~", "matchequal") } + + javascript_regexp = /(if |while |for )/ + + for x in 0...input_file_contents.length + + current_row = input_file_contents[x] + + if current_row.include?("=") and current_row.index(javascript_regexp) == nil + + current_row = current_row.rstrip + "\n" + + current_row_split = current_row.split("=") + + for y in 0...current_row_split.length + + current_row_split[y] = current_row_split[y].strip + + + end + + if current_row_split[0].include?("[") or current_row_split[0].include?("(") + + current_row_split[0] = current_row_split[0][0...current_row_split[0].index("[")] + + end + + variables << current_row_split[0] + + + end + + input_file_contents[x] = current_row + + end + + variables += ["_i","_j"] + + variables = variables.flatten + + return variables.uniq + + end + possible_times_loop = input_file_contents.reject{ |element| !element.include?(".times")} - oneliner_times_loop = possible_times_loop.reject {|element| !element.include?("{") and !element.include?("}")} + multiline_times_loop = possible_times_loop.reject {|element| !element.include?(" do ")} - #multiline_times_loop = possible_times_loop-oneliner_times_loop + unless multiline_times_loop.empty? - #multiline_times_loop = multiline_times_loop.reject {|element| !element.include?(" do ")} + multiline_times_loop.each do |starting_line| + index_counter = starting_counter = input_file_contents.index(starting_line) + + line = starting_line + + until line.strip.eql?("end") + + index_counter += 1 + + line = input_file_contents[index_counter] + + end + + loop_extract = input_file_contents[starting_counter..index_counter] + + file_extract = input_file_contents[0..index_counter] + + file_variables = extract_variable_names(file_extract,temporary_nila_file) + + block_variables = extract_variable_names(loop_extract,temporary_nila_file) + + var_need_of_declaration = file_variables-block_variables-["_i","_j"] + + loop_condition, block = loop_extract.join.split(" do ") + + block = block.split("end")[0] + + replacement_string = "#{loop_condition.rstrip} {#{block.strip}}" + + input_file_contents[starting_counter..index_counter] = replacement_string + + end + + end + + possible_times_loop = input_file_contents.reject{ |element| !element.include?(".times")} + + oneliner_times_loop = possible_times_loop.reject {|element| !element.include?("{") and !element.include?("}")} + loop_variables = [] + modified_file_contents = input_file_contents.clone + unless oneliner_times_loop.empty? oneliner_times_loop.each do |loop| original_loop = loop.clone @@ -3987,10 +4087,10 @@ return remaining_string[0...remaining_string.length-path_finder] end -nilac_version = "0.0.4.2.9" +nilac_version = "0.0.4.3.0" opts = Slop.parse do on :c, :compile=, 'Compile Nila File', as:Array, delimiter:":" on :h, :help, 'Help With Nilac' do