class Twine::Formatters::Tizen
Constants
- LANG_CODES
Public Instance Methods
can_handle_directory?(path)
click to toggle source
# File lib/twine/formatters/tizen.rb, line 31 def can_handle_directory?(path) Dir.entries(path).any? { |item| /^values.*$/.match(item) } end
default_file_name()
click to toggle source
# File lib/twine/formatters/tizen.rb, line 35 def default_file_name 'strings.xml' end
determine_language_given_path(path)
click to toggle source
# File lib/twine/formatters/tizen.rb, line 39 def determine_language_given_path(path) path_arr = path.split(File::SEPARATOR) path_arr.each do |segment| match = /^(.*-.*)\.xml$/.match(segment) if match lang = match[1] lang = LANG_CODES.fetch(lang, nil) return lang end end return end
extension()
click to toggle source
# File lib/twine/formatters/tizen.rb, line 27 def extension '.xml' end
format_comment(definition, lang)
click to toggle source
# File lib/twine/formatters/tizen.rb, line 109 def format_comment(definition, lang) "\t<!-- #{definition.comment.gsub('--', '—')} -->\n" if definition.comment end
format_header(lang)
click to toggle source
# File lib/twine/formatters/tizen.rb, line 93 def format_header(lang) "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Tizen Strings File -->\n<!-- Generated by Twine #{Twine::VERSION} -->\n<!-- Language: #{lang} -->" end
format_key(key)
click to toggle source
# File lib/twine/formatters/tizen.rb, line 117 def format_key(key) key.upcase end
format_name()
click to toggle source
# File lib/twine/formatters/tizen.rb, line 23 def format_name 'tizen' end
format_section_header(section)
click to toggle source
# File lib/twine/formatters/tizen.rb, line 105 def format_section_header(section) "\t<!-- SECTION: #{section.name} -->" end
format_sections(twine_file, lang)
click to toggle source
Calls superclass method
Twine::Formatters::Abstract#format_sections
# File lib/twine/formatters/tizen.rb, line 97 def format_sections(twine_file, lang) result = '<string_table Bversion="2.0.0.201311071819" Dversion="20120315">' result += super + "\n" result += "</string_table>\n" end
format_value(value)
click to toggle source
# File lib/twine/formatters/tizen.rb, line 121 def format_value(value) value = escape_quotes(value) # Tizen enforces the following rules on the values # 1) apostrophes and quotes must be escaped with a backslash value.gsub!("'", "\\\\'") # 2) HTML escape the string value = CGI.escapeHTML(value) # 3) fix substitutions (e.g. %s/%@) value = convert_placeholders_from_twine_to_android(value) # 4) replace beginning and end spaces with \0020. Otherwise Tizen strips them. value.gsub(/\A *| *\z/) { |spaces| '\u0020' * spaces.length } end
key_value_pattern()
click to toggle source
# File lib/twine/formatters/tizen.rb, line 113 def key_value_pattern "\t<text id=\"IDS_%{key}\">%{value}</text>" end
read(io, lang)
click to toggle source
# File lib/twine/formatters/tizen.rb, line 52 def read(io, lang) resources_regex = /<resources(?:[^>]*)>(.*)<\/resources>/m key_regex = /<string name="(\w+)">/ comment_regex = /<!-- (.*) -->/ value_regex = /<string name="\w+">(.*)<\/string>/ key = nil value = nil comment = nil content_match = resources_regex.match(io.read) if content_match for line in content_match[1].split(/\r?\n/) key_match = key_regex.match(line) if key_match key = key_match[1] value_match = value_regex.match(line) if value_match value = value_match[1] value = CGI.unescapeHTML(value) value.gsub!('\\\'', '\'') value.gsub!('\\"', '"') value = convert_placeholders_from_android_to_twine(value) value.gsub!(/(\\u0020)*|(\\u0020)*\z/) { |spaces| ' ' * (spaces.length / 6) } else value = "" end set_translation_for_key(key, lang, value) if comment and comment.length > 0 and !comment.start_with?("SECTION:") set_comment_for_key(key, comment) end comment = nil end comment_match = comment_regex.match(line) if comment_match comment = comment_match[1] end end end end