lib/nilac/pretty_print_javascript.rb in nilac-0.0.4.3.9.7.1 vs lib/nilac/pretty_print_javascript.rb in nilac-0.0.4.3.9.8
- old
+ new
@@ -1,10 +1,11 @@
require_relative 'find_all_matching_indices'
require_relative 'read_file_line_by_line'
require_relative 'replace_strings'
+require_relative 'strToArray'
- def pretty_print_javascript(javascript_file_contents, temporary_nila_file,declarable_variables)
+ def pretty_print_javascript(javascript_file_contents, temporary_nila_file,declarable_variables,options)
def reset_tabs(input_file_contents)
#This method removes all the predefined tabs to avoid problems in
#later parts of the beautifying process.
@@ -46,11 +47,11 @@
def block_compactor(input_block)
modified_block = input_block.reject {|element| element.strip.eql?("")}
- modified_block = modified_block.collect {|element| element.rstrip + "\n"}
+ modified_block = modified_block.collect {|element| (element.rstrip + "\n") unless element[0..1].eql?("//")}
return modified_block
end
@@ -102,12 +103,26 @@
main_block_numbers = main_block_numbers.collect {|element| element.strip.to_i}
remaining_contents = remaining_contents.reject {|element| element.strip.eql?("")}
- remaining_contents = [remaining_contents[0]] + remaining_contents[1...-1].collect {|element| element + "\n"} + [remaining_contents[-1]]
+ remaining_contents[1...-1] = remaining_contents[1...-1].collect do |element|
+ if !replace_strings(element).split("//")[0].eql?("")
+
+ (element + "\n")
+
+ else
+
+ element
+
+ end
+
+ end
+
+ remaining_contents = [remaining_contents[0]] + remaining_contents[1...-1] + [remaining_contents[-1]]
+
main_block_numbers.each do |number|
correct_block = block_compactor(modified_block[number])
correct_block << "\n"
@@ -120,12 +135,26 @@
else
remaining_contents = block_compactor(file_contents)
- remaining_contents = [remaining_contents[0]] + remaining_contents[1...-1].collect {|element| element + "\n"} + [remaining_contents[-1]]
+ remaining_contents[1...-1] = remaining_contents[1...-1].collect do |element|
+ if !replace_strings(element).split("//")[0].eql?("")
+
+ (element + "\n")
+
+ else
+
+ element
+
+ end
+
+ end
+
+ remaining_contents = [remaining_contents[0]] + remaining_contents[1...-1] + [remaining_contents[-1]]
+
end
remaining_contents[-1] = remaining_contents[-1].rstrip
return remaining_contents
@@ -196,11 +225,11 @@
index_counter = 0
array_extract.each_with_index do |line|
- break if line.index(controlregexp) != nil
+ break if replace_strings(line).index(controlregexp) != nil
index_counter += 1
end
@@ -250,16 +279,20 @@
def fix_syntax_indentation(input_file_contents)
fixableregexp = /(else |elsuf )/
- need_fixes = input_file_contents.reject { |line| line.index(fixableregexp).nil? }
+ if input_file_contents.join.index(fixableregexp)
- need_fixes.each do |fix|
+ need_fixes = input_file_contents.reject { |line| line.index(fixableregexp).nil? }
- input_file_contents[input_file_contents.index(fix)] = input_file_contents[input_file_contents.index(fix)].sub(" ", "")
+ need_fixes.each do |fix|
+ input_file_contents[input_file_contents.index(fix)] = input_file_contents[input_file_contents.index(fix)].sub(" ", "")
+
+ end
+
end
return input_file_contents
end
@@ -278,12 +311,92 @@
return input_string
end
- javascript_regexp = /(if |for |while |case |default:|switch\(|\(function\(|= function\(|((=|:)\s+\{))/
+ def comment_fix(input_file_contents)
+ def compress_block_comments(input_file_contents)
+
+ joined_file_contents = input_file_contents.join
+
+ block_comments = []
+
+ while joined_file_contents.include?("/*")
+
+ start_index = joined_file_contents.index(" /*")
+
+ end_index = joined_file_contents.index(" */\n\n")
+
+ if end_index > start_index
+
+ block_comments << joined_file_contents[start_index..end_index + 5]
+
+ joined_file_contents[start_index..end_index + 5] = ""
+
+ end
+
+ end
+
+ block_comments.each do |comment|
+
+ converted_array = strToArray(comment)
+
+ converted_array = converted_array.reject {|element| element.strip.eql?("")}.collect {|element| element + "\n"}
+
+ replacement_array = converted_array.collect {|element| element.rstrip + "\n"}
+
+ replacement_array[-1] = replacement_array[-1] + "\n"
+
+ replacement_array[1...-1] = replacement_array[1...-1].collect {|element| " " + element}
+
+ input_file_contents[input_file_contents.index(converted_array[0])..input_file_contents.index(converted_array[-1])] = replacement_array
+
+ end
+
+ return input_file_contents
+
+ end
+
+ input_file_contents = input_file_contents.collect do |element|
+
+ line_counter = input_file_contents.index(element)
+
+ if element[0..3].eql?(" //")
+
+ if input_file_contents[line_counter+1].include?("//")
+
+ element.rstrip + "\n"
+
+ else
+
+ element
+
+ end
+
+ else
+
+ element
+
+ end
+
+ end
+
+ input_file_contents = compress_block_comments(input_file_contents)
+
+ return input_file_contents
+
+ end
+
+ def fix_spacing_issues(input_file_contents)
+
+ # This method fixes all the spacing issues that causes jsHint errors.
+
+ end
+
+ javascript_regexp = /(if |for |while |case |default:|switch\(|\(function\(|= function\(|,\s*function\(|((=|:)\s+\{))/
+
if declarable_variables.length > 0
declaration_string = "var " + declarable_variables.flatten.uniq.sort.join(", ") + ";\n\n"
javascript_file_contents = [declaration_string,javascript_file_contents].flatten
@@ -300,11 +413,11 @@
starting_locations = []
javascript_file_contents.each_with_index do |line, index|
- if line.index(javascript_regexp) != nil
+ if replace_strings(line).index(javascript_regexp) != nil and !line.lstrip.split("//")[0].eql?("")
starting_locations << index
end
@@ -394,12 +507,26 @@
modified_blocks[x] = current_block
end
- remaining_file_contents = ["(function() {\n", remaining_file_contents, "\n}).call(this);"].flatten
+ if options[:strict_mode]
+ remaining_file_contents = [" \"use strict\";\n",remaining_file_contents].flatten
+
+ end
+
+ if options[:bare]
+
+ remaining_file_contents = remaining_file_contents
+
+ else
+
+ remaining_file_contents = ["(function () {\n", remaining_file_contents, "\n}).call(this);"].flatten
+
+ end
+
main_blocks.each_with_index do |block_id, index|
remaining_file_contents[remaining_file_contents.index(block_id)] = modified_blocks[index]
end
@@ -410,11 +537,11 @@
else
remaining_file_contents = remaining_file_contents.collect { |element| " " + element }
- remaining_file_contents = ["(function() {\n", remaining_file_contents, "\n}).call(this);"].flatten
+ remaining_file_contents = ["(function () {\n", remaining_file_contents, "\n}).call(this);"].flatten
joined_file_contents = remaining_file_contents.join
end
@@ -428,24 +555,31 @@
line_by_line_contents = line_by_line_contents.collect {|element| element.gsub("%$%$ {","")}
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 == "%$%$;" }
+ if line_by_line_contents.join.include?("%$%$")
- while line_by_line_contents.join.include?("%$%$;")
+ removable_indices = line_by_line_contents.each_index.select {|index| line_by_line_contents[index].strip == "%$%$;" }
- line_by_line_contents.delete_at(removable_indices[0])
+ while line_by_line_contents.join.include?("%$%$;")
- line_by_line_contents.delete_at(removable_indices[0])
+ line_by_line_contents.delete_at(removable_indices[0])
- removable_indices = line_by_line_contents.each_index.select {|index| line_by_line_contents[index].strip == "%$%$;" }
+ line_by_line_contents.delete_at(removable_indices[0])
+ removable_indices = line_by_line_contents.each_index.select {|index| line_by_line_contents[index].strip == "%$%$;" }
+
+ end
+
end
- line_by_line_contents = fix_syntax_indentation(line_by_line_contents)
+ line_by_line_contents = fix_syntax_indentation(line_by_line_contents).compact
+
line_by_line_contents = line_by_line_contents.collect { |element| replace_ignored_words(element) }
+
+ line_by_line_contents = comment_fix(line_by_line_contents)
return line_by_line_contents
end
\ No newline at end of file