class Rescodegen::ObjcMainStringsGenerator

Public Class Methods

new(prefix) click to toggle source
# File lib/rescodegen/code_generator/objc_main_strings_generator.rb, line 6
def initialize(prefix)
    @prefix = prefix
end

Public Instance Methods

generate(singular_keys, singular_values, plural_keys, plural_values) click to toggle source
Calls superclass method
# File lib/rescodegen/code_generator/objc_main_strings_generator.rb, line 10
def generate(singular_keys, singular_values, plural_keys, plural_values)
    super(singular_keys, singular_values, plural_keys, plural_values)
    newline
    .import_header(prefix("Strings.h"))
    .newline
    .add_singular_methods(singular_keys, singular_values)
    .add_plural_methods(plural_keys, plural_values)
    @output
end

Protected Instance Methods

add_cases(keys, values) click to toggle source
# File lib/rescodegen/code_generator/objc_main_strings_generator.rb, line 62
def add_cases(keys, values)
    i = 0
    until i == keys.size
        start_case(keys[i])
            .return_value(localized_string(values[i]))
        .finish_case
        i += 1
    end
    add_default_case
end
add_default_case() click to toggle source
# File lib/rescodegen/code_generator/objc_main_strings_generator.rb, line 73
def add_default_case
    start_default_case
        .return_value("@\"\"")
    .finish_case
end
add_line(line) click to toggle source
# File lib/rescodegen/code_generator/objc_main_strings_generator.rb, line 115
def add_line(line)
    indent
    @output += "#{line};"
    newline
end
add_plural_methods(keys, values) click to toggle source
# File lib/rescodegen/code_generator/objc_main_strings_generator.rb, line 32
def add_plural_methods(keys, values)
    return self if keys.size == 0
    enum_name = prefix "PluralString"
    start_c_method("NSString*", "NSStringFromPluralString", "#{enum_name} pluralString")
        .start_switch("pluralString")
            .add_cases(keys.map { |k| enum_name + "_" + k }, values)
        .close_brackets
    .close_brackets
    .start_c_method("NSString*", prefix("LocalizedPluralString"), "#{enum_name} pluralString, ...")
        .return_localized_plural_string
    .close_brackets
end
add_singular_methods(keys, values) click to toggle source
# File lib/rescodegen/code_generator/objc_main_strings_generator.rb, line 22
def add_singular_methods(keys, values)
    return self if keys.size == 0
    enum_name = prefix "SingularString"
    start_c_method("NSString*", prefix("LocalizedSingularString"), "#{enum_name} singularString")
        .start_switch("singularString")
            .add_cases(keys.map { |k| enum_name + "_" + k }, values)
        .close_brackets
    .close_brackets
end
finish_case() click to toggle source
# File lib/rescodegen/code_generator/objc_main_strings_generator.rb, line 93
def finish_case
    decrement_indent_level
end
import_header(name) click to toggle source
# File lib/rescodegen/code_generator/objc_main_strings_generator.rb, line 45
def import_header(name)
    @output += "#import \"#{name}\""
    self
end
localized_string(value) click to toggle source
# File lib/rescodegen/code_generator/objc_main_strings_generator.rb, line 103
def localized_string(value) 
    return "NSLocalizedString(@\"#{value}\", @\"\")"
end
return_localized_plural_string() click to toggle source
# File lib/rescodegen/code_generator/objc_main_strings_generator.rb, line 107
def return_localized_plural_string
    add_line("va_list args")
    .add_line("va_start(args, pluralString)")
    .add_line("NSString *string = [[NSString alloc] initWithFormat:NSStringFromPluralString(pluralString) locale:[NSLocale currentLocale] arguments:args]")
    .add_line("va_end(args)")
    .add_line("return string")
end
return_value(value) click to toggle source
# File lib/rescodegen/code_generator/objc_main_strings_generator.rb, line 97
def return_value(value)
    indent
    @output += "return #{value};"
    newline
end
start_c_method(return_type, name, parameter_list) click to toggle source
# File lib/rescodegen/code_generator/objc_main_strings_generator.rb, line 50
def start_c_method(return_type, name, parameter_list)
    newline
    @output += "#{return_type} #{name}(#{parameter_list})"
    open_brackets
end
start_case(key) click to toggle source
# File lib/rescodegen/code_generator/objc_main_strings_generator.rb, line 79
def start_case(key)
    indent
    @output += "case #{key}:"
    newline
    increment_indent_level
end
start_default_case() click to toggle source
# File lib/rescodegen/code_generator/objc_main_strings_generator.rb, line 86
def start_default_case
    indent
    @output += "default:"
    newline
    increment_indent_level
end
start_switch(value) click to toggle source
# File lib/rescodegen/code_generator/objc_main_strings_generator.rb, line 56
def start_switch(value)
    indent
    @output += "switch (#{value})"
    open_brackets
end