Class: Rescodegen::StringsKeyGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/rescodegen/key_generator/strings_key_generator.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(lines) ⇒ StringsKeyGenerator

Returns a new instance of StringsKeyGenerator.



10
11
12
13
14
15
16
17
18
# File 'lib/rescodegen/key_generator/strings_key_generator.rb', line 10

def initialize(lines)
    @keys = lines.map { |l| l.encode("UTF-8", :invalid=>:replace, :replace=>"?").encode('UTF-8') }
    .reject { |l| l.strip == "" }
    .select { |l| l[0] == "\"" }
    .map do |line|
        line.gsub(/\n$/, "")
        .gsub(/(")(.*)(" = ".*)/, "\\2") # extracts key from "key" = "description"; format
    end
end

Class Method Details

.create_from_file(input_file) ⇒ Object



5
6
7
8
# File 'lib/rescodegen/key_generator/strings_key_generator.rb', line 5

def self.create_from_file(input_file)
    lines = File.open(input_file, "rb:UTF-16BE")
    StringsKeyGenerator.new lines
end

Instance Method Details

#code_safe_keysObject



24
25
26
27
28
29
30
31
32
# File 'lib/rescodegen/key_generator/strings_key_generator.rb', line 24

def code_safe_keys
    @keys.map do |key|
        key.gsub(/%\.[0-9]f|%[a-zA-Z@]+/, "_") # replace %d, %ld, %.2f etc
        .gsub(/[^a-zA-Z0-9]/, "_") # replace unsupported characters 
        .gsub(/(\s|_)+/, "_") # replaces 1 or more occurance of whitespace and/or '_' with single '_'
        .gsub(/^_|_$/, "") # remove _ from beginning and end 
        .gsub(/(^[0-9])/, "_\\1") # add underscore at beginning if starts with number
    end
end

#keysObject



20
21
22
# File 'lib/rescodegen/key_generator/strings_key_generator.rb', line 20

def keys
    @keys
end