Finished modularizing apple formatter.
This commit is contained in:
parent
d7150521f8
commit
46d71accbc
1 changed files with 37 additions and 32 deletions
|
@ -86,10 +86,46 @@ module Twine
|
|||
text.gsub('"', '\\\\"')
|
||||
end
|
||||
|
||||
def format_file(lang, default_lang)
|
||||
result = format_header(lang) + "\n"
|
||||
|
||||
sections = @strings.sections.map { |section| format_section(section, lang, default_lang) }
|
||||
result += sections.join("\n")
|
||||
end
|
||||
|
||||
def format_header(lang)
|
||||
"/**\n * Apple Strings File\n * Generated by Twine #{Twine::VERSION}\n * Language: #{lang}\n */"
|
||||
end
|
||||
|
||||
def format_section_header(section)
|
||||
"/********** #{section.name} **********/" if section.name && section.name.length > 0
|
||||
end
|
||||
|
||||
def format_section(section, lang, default_lang)
|
||||
rows = section.rows.select { |row| row.matches_tags?(@options[:tags], @options[:untagged]) }
|
||||
|
||||
result = ""
|
||||
unless rows.empty?
|
||||
section_header = format_section_header(section)
|
||||
result += "\n#{section_header}\n" if section_header
|
||||
end
|
||||
|
||||
rows.map! { |row| format_row(row, lang, default_lang) }
|
||||
rows.compact! # remove nil entries
|
||||
rows.map! { |row| "\n#{row}\n" } # wrap with newlines
|
||||
result += rows.join
|
||||
end
|
||||
|
||||
def format_row(row, lang, default_lang)
|
||||
value = row.translated_string_for_lang(lang, default_lang)
|
||||
return nil unless value
|
||||
|
||||
result = ""
|
||||
result += format_comment(row.comment) + "\n" if row.comment
|
||||
|
||||
result += "\"#{format_key(row.key)}\" = \"#{format_value(value)}\";"
|
||||
end
|
||||
|
||||
def format_comment(comment)
|
||||
"/* #{comment.gsub('*/', '* /')} */"
|
||||
end
|
||||
|
@ -102,43 +138,12 @@ module Twine
|
|||
escape_quotes(value)
|
||||
end
|
||||
|
||||
def format_row(row, lang, default_lang)
|
||||
value = row.translated_string_for_lang(lang, default_lang)
|
||||
return nil unless value
|
||||
|
||||
result = ""
|
||||
result += format_comment(row.comment) + "\n" if row.comment
|
||||
|
||||
result += "\"#{format_key(row.key)}\" = \"#{format_value(value)}\";\n"
|
||||
end
|
||||
|
||||
def write_file(path, lang)
|
||||
default_lang = @strings.language_codes[0]
|
||||
encoding = @options[:output_encoding] || 'UTF-8'
|
||||
|
||||
File.open(path, "w:#{encoding}") do |f|
|
||||
f.puts format_header(lang)
|
||||
|
||||
@strings.sections.each do |section|
|
||||
rows = section.rows.select { |row| row.matches_tags?(@options[:tags], @options[:untagged]) }
|
||||
|
||||
unless rows.empty?
|
||||
f.puts ''
|
||||
if section.name && section.name.length > 0
|
||||
f.puts "/********** #{section.name} **********/"
|
||||
end
|
||||
end
|
||||
|
||||
rows.each do |row|
|
||||
f.puts ''
|
||||
|
||||
formatted_row = format_row(row, lang, default_lang)
|
||||
|
||||
f.puts formatted_row if formatted_row
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
f.puts format_file(lang, default_lang)
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Reference in a new issue