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

- old
+ new

@@ -1,8 +1,8 @@ require_relative 'find_all_matching_indices' - require_relative 'read_file_line_by_line' +require_relative 'replace_strings' def pretty_print_javascript(javascript_file_contents, temporary_nila_file,declarable_variables) def reset_tabs(input_file_contents) @@ -40,110 +40,98 @@ return line_by_line_contents end - def fix_newlines(file_contents) + def fix_newlines(file_contents,main_block_numbers) - def extract_blocks(file_contents) + def block_compactor(input_block) - javascript_regexp = /(if |for |while |case |default:|switch\(|\(function\(|= function\(|,\s*function\(|((=|:)\s+\{))/ + modified_block = input_block.reject {|element| element.strip.eql?("")} - block_starting_lines = file_contents.dup.reject { |element| element.index(javascript_regexp).nil? }[1..-1] + modified_block = modified_block.collect {|element| element.rstrip + "\n"} - block_starting_lines = block_starting_lines.reject { |element| element.include?(" ") } + return modified_block - initial_starting_lines = block_starting_lines.dup + end - starting_line_indices = [] + main_block_numbers = [ ] if main_block_numbers.nil? - block_starting_lines.each do |line| + unless main_block_numbers.empty? - starting_line_indices << file_contents.index(line) + javascript_regexp = /(if |for |while |case |default:|switch\(|,function\(|\(function\(|= function\(|((=|:)\s+\{))/ - end + starting_locations = [] - block_ending_lines = file_contents.dup.each_index.select { |index| (file_contents[index].eql? " }\n" or file_contents[index].eql? " };\n" or file_contents[index].lstrip.eql?("});\n"))} + file_contents.each_with_index do |line, index| - block_ending_lines = block_ending_lines.reject {|index| file_contents[index].include?(" ")} + if line.index(javascript_regexp) != nil - modified_file_contents = file_contents.dup + starting_locations << index - code_blocks = [] + end - starting_index = starting_line_indices[0] + end - begin + remaining_contents, blocks = roll_blocks(file_contents,starting_locations) - for x in 0...initial_starting_lines.length + modified_block = [] - code_blocks << modified_file_contents[starting_index..block_ending_lines[0]] + blocks.each do |block| - modified_file_contents[starting_index..block_ending_lines[0]] = [] + while block.join.include?("--block") - modified_file_contents.insert(starting_index, " *****") + nested_blocks = block.reject {|element| !replace_strings(element).include?("--block")} - block_starting_lines = modified_file_contents.dup.reject { |element| element.index(javascript_regexp).nil? }[1..-1] + block_numbers = nested_blocks.collect {|element| element.strip.split("--block")[1].to_i} - block_starting_lines = block_starting_lines.reject { |element| element.include?(" ") } + block_numbers.each_with_index do |number,index| - starting_line_indices = [] + location = block.index(nested_blocks[index]) - block_starting_lines.each do |line| + block[location] = blocks[number] - starting_line_indices << modified_file_contents.index(line) - end - block_ending_lines = modified_file_contents.dup.each_index.select { |index| (modified_file_contents[index].eql? " }\n" or modified_file_contents[index].eql? " };\n" or modified_file_contents[index].lstrip.eql?("});\n")) } + block = block.flatten - starting_index = starting_line_indices[0] - end - #rescue TypeError - ## - # puts "Whitespace was left unfixed!" - ## - #rescue ArgumentError - ## - # puts "Whitespace was left unfixed!" + modified_block << block end - return modified_file_contents, code_blocks + main_block_numbers = main_block_numbers.collect {|element| element.strip.to_i} - end + remaining_contents = remaining_contents.reject {|element| element.strip.eql?("")} - compact_contents = file_contents.reject { |element| element.lstrip.eql? "" } + remaining_contents = [remaining_contents[0]] + remaining_contents[1...-1].collect {|element| element + "\n"} + [remaining_contents[-1]] - compact_contents, code_blocks = extract_blocks(compact_contents) + main_block_numbers.each do |number| - processed_contents = compact_contents[1...-1].collect { |line| line+"\n" } + correct_block = block_compactor(modified_block[number]) - compact_contents = [compact_contents[0]] + processed_contents + [compact_contents[-1]] + correct_block << "\n" - code_block_locations = compact_contents.each_index.select { |index| compact_contents[index].eql? " *****\n" } + remaining_contents[remaining_contents.index("--block#{number}\n\n")] = correct_block - initial_locations = code_block_locations.dup + end - starting_index = code_block_locations[0] + remaining_contents = remaining_contents.flatten - for x in 0...initial_locations.length + else - code_blocks[x][-1] = code_blocks[x][-1] + "\n" + remaining_contents = block_compactor(file_contents) - compact_contents = compact_contents[0...starting_index] + code_blocks[x] + compact_contents[starting_index+1..-1] + remaining_contents = [remaining_contents[0]] + remaining_contents[1...-1].collect {|element| element + "\n"} + [remaining_contents[-1]] - code_block_locations = compact_contents.each_index.select { |index| compact_contents[index].eql? " *****\n" } - - starting_index = code_block_locations[0] - end - return compact_contents + remaining_contents[-1] = remaining_contents[-1].rstrip + return remaining_contents + end def roll_blocks(input_file_contents, code_block_starting_locations) if !code_block_starting_locations.empty? @@ -174,11 +162,11 @@ end_index = [] current_block = [] - possible_blocks.each_with_index do |block| + possible_blocks.each do |block| if !block[0].eql?(current_block[-1]) current_block += block @@ -188,11 +176,11 @@ end current_block.each_with_index do |line, index| - if line.lstrip.eql? "}\n" or line.lstrip.eql?("};\n") or line.lstrip.include?("_!;\n") or line.lstrip.include?("});\n") + if line.strip.eql? "}" or line.strip.eql?("};") or line.strip.include?("_!;") or line.strip.eql?("});") end_counter += 1 end_index << index @@ -232,11 +220,11 @@ end_index = [] current_block.each_with_index do |line, index| - if line.lstrip.eql? "}\n" or line.lstrip.eql?("};\n") or line.lstrip.include?("_!;\n") or line.lstrip.include?("});\n") + if line.strip.eql? "}" or line.strip.eql?("};") or line.strip.include?("_!;") or line.strip.eql?("});") end_counter += 1 end_index << index @@ -304,10 +292,12 @@ javascript_file_contents = javascript_file_contents.collect { |element| element.sub("Euuf", "if") } javascript_file_contents = javascript_file_contents.collect { |element| element.sub("whaaleskey", "while") } + javascript_file_contents = javascript_file_contents.collect { |element| element.sub("}#@$", "}") } + javascript_file_contents = reset_tabs(javascript_file_contents) starting_locations = [] javascript_file_contents.each_with_index do |line, index| @@ -406,18 +396,20 @@ end remaining_file_contents = ["(function() {\n", remaining_file_contents, "\n}).call(this);"].flatten - joined_file_contents = remaining_file_contents.join - main_blocks.each_with_index do |block_id, index| - joined_file_contents = joined_file_contents.sub(block_id, modified_blocks[index]) + remaining_file_contents[remaining_file_contents.index(block_id)] = modified_blocks[index] end + remaining_file_contents = remaining_file_contents.reject {|element| element.eql?(" ")} + + joined_file_contents = remaining_file_contents.join + else remaining_file_contents = remaining_file_contents.collect { |element| " " + element } remaining_file_contents = ["(function() {\n", remaining_file_contents, "\n}).call(this);"].flatten @@ -434,10 +426,10 @@ line_by_line_contents = read_file_line_by_line(temporary_nila_file) line_by_line_contents = line_by_line_contents.collect {|element| element.gsub("%$%$ {","")} - line_by_line_contents = fix_newlines(line_by_line_contents) + line_by_line_contents = fix_newlines(line_by_line_contents,main_block_numbers) removable_indices = line_by_line_contents.each_index.select {|index| line_by_line_contents[index].strip == "%$%$;" } while line_by_line_contents.join.include?("%$%$;") \ No newline at end of file