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