lib/nilac/rollblocks.rb in nilac-0.0.4.3.9.6 vs lib/nilac/rollblocks.rb in nilac-0.0.4.3.9.7

- old
+ new

@@ -1,28 +1,48 @@ -def extract_blocks(statement_indexes, input_file_contents) +require_relative 'replace_strings' - possible_if_blocks = [] +def extract_blocks(statement_indexes, input_file_contents,options = []) - if_block_counter = 0 + possible_blocks = [] + block_counter = 0 + extracted_blocks = [] - controlregexp = /(if |while |def | do )/ + input_file_contents = input_file_contents.collect {|element| element.gsub("}#@$","\n\t\nend\n\t\n")} - for x in 0...if_statement_indexes.length-1 + input_file_contents = input_file_contents.collect {|element| element.gsub("};","\t\t}\n\t")} if options.length.eql?(5) - possible_if_blocks << input_file_contents[if_statement_indexes[x]..if_statement_indexes[x+1]] + controlregexp = /(if |Euuf |while |for |def | do |class )/ if options.empty? + controlregexp = /(if |while |class |= function)/ if options.length.eql?(1) + + controlregexp = /(if |while |def | do |class )/ if options.length.eql?(2) + + controlregexp = /(Euuf |while |for | do |function )/ if options.length.eql?(5) + + endexpr = "end" if options.empty? + + endexpr = "};" if options.length.eql?(1) + + endexpr = "end" if options.length.eql?(2) + + endexpr = "}" if options.length.eql?(5) + + for x in 0...statement_indexes.length-1 + + possible_blocks << input_file_contents[statement_indexes[x]..statement_indexes[x+1]] + end end_counter = 0 end_index = [] current_block = [] - possible_if_blocks.each_with_index do |block| + possible_blocks.each_with_index do |block| unless current_block[-1] == block[0] current_block += block @@ -30,14 +50,13 @@ current_block += block[1..-1] end - current_block.each_with_index do |line, index| - if line.strip.eql? "end" + if line.strip.eql? endexpr end_counter += 1 end_index << index @@ -53,11 +72,11 @@ index_counter = 0 array_extract.each_with_index do |line| - break if (line.lstrip.index(controlregexp) != nil and line.lstrip.index(rejectionregexp).nil?) + break if (line.lstrip.index(controlregexp) != nil) index_counter += 1 end @@ -67,21 +86,21 @@ block_start = current_block.index(block_extract[0]) block_end = current_block.index(block_extract[-1]) - current_block[block_start..block_end] = "--ifblock#{if_block_counter}" + current_block[block_start..block_end] = "--block#{block_counter}" - if_block_counter += 1 + block_counter += 1 end_counter = 0 end_index = [] current_block.each_with_index do |line, index| - if line.strip.eql? "end" + if line.strip.eql? endexpr end_counter += 1 end_index << index @@ -93,8 +112,62 @@ end end + modified_blocks = extracted_blocks.clone + + modified_blocks.each_with_index do |block,index| + + extracted_blocks[index] = block.collect {|element| element.gsub("\n\t\nend\n\t\n","}#@$")} + + extracted_blocks[index] = block.collect {|element| element.gsub("\t\t}\n\t","};")} + + end + + if options.length == 5 + + output_blocks = extracted_blocks + + main_block = extracted_blocks.reject {|element| !replace_strings(element[0]).index(/function /)} + + return main_block.flatten,output_blocks + + else + + modified_rolled_blocks = [] + + rolled_blocks = extracted_blocks.reject {|element| !replace_strings(element.join).include?("--block")} + + rolled_blocks.each do |block| + + included_blocks = block.reject {|element| !replace_strings(element).include?("--block")} + + matching_blocks = included_blocks.collect {|element| element.split("--block")[1].to_i} + + while block.join.include?("--block") + + block[block.index(included_blocks[0])] = extracted_blocks[matching_blocks[0]] + + included_blocks.delete_at(0) + + matching_blocks.delete_at(0) + + end + + modified_rolled_blocks << block + + end + + rolled_blocks.each_with_index do |block,index| + + extracted_blocks[extracted_blocks.index(block)] = modified_rolled_blocks[index] + + end + + extracted_blocks = extracted_blocks.collect {|element| element.flatten} + return current_block, extracted_blocks + + end end \ No newline at end of file