class Twine::Formatters::Flutter
Public Instance Methods
convert_placeholders_from_twine_to_icu(input)
click to toggle source
# File lib/flutter-intl-twine-formatter.rb, line 147 def convert_placeholders_from_twine_to_icu(input) value = convert_twine_string_placeholder(input) value.gsub(PLACEHOLDER_REGEX).each_with_index do |match, index| "{arg#{index + 1}}" end end
default_file_name()
click to toggle source
# File lib/flutter-intl-twine-formatter.rb, line 15 def default_file_name 'intl_en.arb' end
determine_language_given_path(path)
click to toggle source
# File lib/flutter-intl-twine-formatter.rb, line 19 def determine_language_given_path(path) path_arr = path.split(File::SEPARATOR) path_arr.each do |segment| match = /^((.+)-)?([^-]+)\.arb$/.match(segment) if match return match[3] end end return end
escape_characters(value)
click to toggle source
# File lib/flutter-intl-twine-formatter.rb, line 142 def escape_characters(value) value = value.gsub("\\'", "'") return value end
extension()
click to toggle source
# File lib/flutter-intl-twine-formatter.rb, line 11 def extension '.arb' end
format_file(lang)
click to toggle source
Calls superclass method
# File lib/flutter-intl-twine-formatter.rb, line 44 def format_file(lang) result = super return result unless result "{\n#{super}\n}\n" end
format_for_int_first_character(value)
click to toggle source
# File lib/flutter-intl-twine-formatter.rb, line 81 def format_for_int_first_character(value) first = value[0] if first =~ /[A-Za-z]/ return value end if first == "0" value[0] = "zero" elsif first == "1" value[0] = "one" elsif first == "2" value[0] = "two" elsif first == "3" value[0] = "three" elsif first == "4" value[0] = "four" elsif first == "5" value[0] = "five" elsif first == "6" value[0] = "six" elsif first == "7" value[0] = "seven" elsif first == "8" value[0] = "eight" elsif first == "9" value[0] = "nine" end return value end
format_for_reserved_words(value)
click to toggle source
# File lib/flutter-intl-twine-formatter.rb, line 114 def format_for_reserved_words(value) reservedWords = [ "in", "continue", "do", "export", "extends", "facotry", "false", "final", "finally", "if" ] if reservedWords.include?(value) return value + "String" else return value end end
format_key(key)
click to toggle source
# File lib/flutter-intl-twine-formatter.rb, line 71 def format_key(key) escape_quotes(key) key = key.split('_').collect(&:capitalize).join key[0] = key[0].downcase key = format_for_reserved_words(key) key = format_for_int_first_character(key) return key end
format_name()
click to toggle source
# File lib/flutter-intl-twine-formatter.rb, line 7 def format_name 'flutter' end
format_section(section, lang)
click to toggle source
# File lib/flutter-intl-twine-formatter.rb, line 59 def format_section(section, lang) definitions = section.definitions.dup definitions.map! { |definition| format_definition(definition, lang) } definitions.compact! # remove nil definitions definitions.join(",\n") end
format_section_header(section)
click to toggle source
# File lib/flutter-intl-twine-formatter.rb, line 56 def format_section_header(section) end
format_sections(twine_file, lang)
click to toggle source
# File lib/flutter-intl-twine-formatter.rb, line 50 def format_sections(twine_file, lang) sections = twine_file.sections.map { |section| format_section(section, lang) } sections.delete_if &:empty? sections.join(",\n") end
format_value(value)
click to toggle source
# File lib/flutter-intl-twine-formatter.rb, line 135 def format_value(value) value = escape_quotes(value) value = escape_characters(value) value = convert_placeholders_from_twine_to_icu(value) return value end
key_value_pattern()
click to toggle source
# File lib/flutter-intl-twine-formatter.rb, line 67 def key_value_pattern "\"%{key}\": \"%{value}\"" end
read(io, lang)
click to toggle source
# File lib/flutter-intl-twine-formatter.rb, line 31 def read(io, lang) begin require "json" rescue LoadError raise Twine::Error.new "You must run 'gem install json' in order to read or write Flutter-localize files." end json = JSON.load(io) json.each do |key, value| set_translation_for_key(key, lang, value) end end