Class: TwitterCldr::Resources::CasefolderClassGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/twitter_cldr/resources/casefolder_class_generator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(template_file, output_dir) ⇒ CasefolderClassGenerator

Returns a new instance of CasefolderClassGenerator.



14
15
16
17
# File 'lib/twitter_cldr/resources/casefolder_class_generator.rb', line 14

def initialize(template_file, output_dir)
  @template_file = template_file
  @output_dir = output_dir
end

Instance Attribute Details

#output_dirObject (readonly)

Returns the value of attribute output_dir.



12
13
14
# File 'lib/twitter_cldr/resources/casefolder_class_generator.rb', line 12

def output_dir
  @output_dir
end

#template_fileObject (readonly)

Returns the value of attribute template_file.



12
13
14
# File 'lib/twitter_cldr/resources/casefolder_class_generator.rb', line 12

def template_file
  @template_file
end

Instance Method Details

#casefolding_char_class_for(status) ⇒ Object



28
29
30
# File 'lib/twitter_cldr/resources/casefolder_class_generator.rb', line 28

def casefolding_char_class_for(status)
  to_regex_char_sequence(casefolding_data_for(status))
end

#casefolding_hash_for(statuses) ⇒ Object



32
33
34
35
36
37
# File 'lib/twitter_cldr/resources/casefolder_class_generator.rb', line 32

def casefolding_hash_for(statuses)
  statuses.inject({}) do |ret, status|
    ret.merge!(casefolding_data_for(status))
    ret
  end
end

#generateObject



19
20
21
22
23
24
25
26
# File 'lib/twitter_cldr/resources/casefolder_class_generator.rb', line 19

def generate
  output_file = File.basename(template_file).chomp(".erb")
  File.open(File.join(output_dir, output_file), "w+") do |f|
    f.write(
      ERB.new(File.read(template_file)).result(binding)
    )
  end
end

#inspect_hash_in_lines(hash, per_line, indent) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
# File 'lib/twitter_cldr/resources/casefolder_class_generator.rb', line 39

def inspect_hash_in_lines(hash, per_line, indent)
  str = "{\n#{"  " * indent}"
  hash.each_with_index do |(key, val), idx|
    if idx > 0 && idx % per_line == 0
      str << "\n#{"  " * indent}"
    end
    str << "#{key.inspect}=>#{val.inspect}"
    str << ", " if idx != (hash.size - 1)
  end
  str << "\n#{"  " * (indent - 1)}}"
end