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