module PolyglotFlutter::Helper::General
Constants
- ESCAPE_KEYWORDS
Public Instance Methods
clean_enum_name(name)
click to toggle source
# File lib/flutter_polyglot_cli/helpers/general.rb, line 34 def clean_enum_name(name) clean_name = name .split(/[^0-9a-zA-Z]/) .reject(&:empty?) .map(&:capitalize) .join escape_with_underscore_if_needed(clean_name) end
clean_variable_name(name)
click to toggle source
# File lib/flutter_polyglot_cli/helpers/general.rb, line 44 def clean_variable_name(name) clean_name = name .split(/[^0-9a-zA-Z]/) .reject(&:empty?) .each_with_index .map { |value, index| index == 0 ? value.downcase : value.capitalize } .join escaped_underscore = escape_with_underscore_if_needed(clean_name) escape_keyword_if_needed(escaped_underscore) end
config()
click to toggle source
# File lib/flutter_polyglot_cli/helpers/general.rb, line 20 def config @config ||= PolyglotFlutter::IO::Config.read.with_indifferent_access end
escape_keyword_if_needed(name)
click to toggle source
# File lib/flutter_polyglot_cli/helpers/general.rb, line 62 def escape_keyword_if_needed(name) return name unless ESCAPE_KEYWORDS.include? name "#{name}_" end
escape_with_underscore_if_needed(name)
click to toggle source
# File lib/flutter_polyglot_cli/helpers/general.rb, line 56 def escape_with_underscore_if_needed(name) return name if name.match(/^[A-Za-z_]/) '_' + name end
extract_translations(translation_keys, language)
click to toggle source
# File lib/flutter_polyglot_cli/helpers/general.rb, line 95 def extract_translations(translation_keys, language) translation_keys.each_with_object({}) do |translation_key, strings| key_name = translation_key.name next if key_name.nil? strings[key_name] = translation_key.clean_translation(language) end end
find_app_language(languages, mandatory_language)
click to toggle source
# File lib/flutter_polyglot_cli/helpers/general.rb, line 130 def find_app_language(languages, mandatory_language) languages.each do |lang| if lang['locale'].split('_').first == mandatory_language return lang end end end
generate_locales(languages)
click to toggle source
# File lib/flutter_polyglot_cli/helpers/general.rb, line 68 def generate_locales(languages) language_locales = languages.each.map { |value| value['locale'].split('_').first }.join("', '") "['#{language_locales}']" end
generate_localization_keys(languages, translation_keys, mandatory_language)
click to toggle source
# File lib/flutter_polyglot_cli/helpers/general.rb, line 73 def generate_localization_keys(languages, translation_keys, mandatory_language) result_string = '' language = find_app_language(languages, mandatory_language) dict = extract_translations(translation_keys, language) dict.each do |key, value| next if value.nil? clean_var_name = clean_variable_name(key) if value.match(/{(arg\d)}/) matches = value.scan(/{(arg\d)}/) first_arguments = matches.join(', dynamic ') second_arguments = matches.join(', ') result_string += "String #{clean_var_name}(dynamic #{first_arguments}) => Intl.message('', name: '#{clean_var_name}', args: <dynamic>[#{second_arguments}]);\n" else result_string += "String get #{clean_var_name} => Intl.message('#{clean_var_name}');\n" end end result_string end
generate_static_locales(languages)
click to toggle source
# File lib/flutter_polyglot_cli/helpers/general.rb, line 104 def generate_static_locales(languages) result_string = '' language_locales = languages.each.map { |value| value['locale'].split('_').first } locale_names = language_locales.each.map { |value| clean_variable_name("locale_#{value}") } locale_names.each_with_index { |locale, index| result_string += "static Locale get #{locale} => const Locale('#{language_locales[index]}', '');\n\t" } locale_list = locale_names.each.map { |value| "AppLocales.#{value}" }.join(', ') result_string += "\n\tstatic List<Locale> get values => <Locale>[#{locale_list}];" end
generate_strings(languages, translation_keys, mandatory_language)
click to toggle source
# File lib/flutter_polyglot_cli/helpers/general.rb, line 115 def generate_strings(languages, translation_keys, mandatory_language) result_string = '' language = find_app_language(languages, mandatory_language) dict = extract_translations(translation_keys, language) dict.each do |key, value| next if value.nil? clean_var_name = clean_variable_name(key) result_string += "\t#{clean_var_name},\n" end result_string end
indent(level = 0, initial = '')
click to toggle source
# File lib/flutter_polyglot_cli/helpers/general.rb, line 28 def indent(level = 0, initial = '') (1..level) .to_a.reduce('') { |result, _value| result + ' ' } .concat(initial) end
project_configs()
click to toggle source
# File lib/flutter_polyglot_cli/helpers/general.rb, line 24 def project_configs @project_configs ||= config[:projects] end
token()
click to toggle source
# File lib/flutter_polyglot_cli/helpers/general.rb, line 11 def token @token ||= PolyglotFlutter::IO::Token.read if @token.to_s.empty? PolyglotFlutter::Command::Login.init @token = PolyglotFlutter::IO::Token.read end @token end