class TwitterCldr::Resources::CasefolderClassGenerator

Private Instance Methods

casefolding_char_class_for(status) click to toggle source
# File lib/twitter_cldr/resources/casefolder_class_generator.rb, line 39
def casefolding_char_class_for(status)
  to_regex_char_sequence(casefolding_data_for(status))
end
casefolding_data_for(status) click to toggle source
# File lib/twitter_cldr/resources/casefolder_class_generator.rb, line 71
def casefolding_data_for(status)
  resource.inject({}) do |ret, data|
    ret[data[:source]] = data[:target] if data[:status] == status
    ret
  end
end
casefolding_hash_for(statuses) click to toggle source
# File lib/twitter_cldr/resources/casefolder_class_generator.rb, line 43
def casefolding_hash_for(statuses)
  statuses.inject({}) do |ret, status|
    ret.merge!(casefolding_data_for(status))
    ret
  end
end
execute() click to toggle source
# File lib/twitter_cldr/resources/casefolder_class_generator.rb, line 19
def execute
  File.open(output_path, 'w+') do |f|
    f.write(
      ERB.new(File.read(template_file)).result(binding)
    )
  end
end
inspect_hash_in_lines(hash, per_line, indent) click to toggle source
# File lib/twitter_cldr/resources/casefolder_class_generator.rb, line 50
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
output_file() click to toggle source
# File lib/twitter_cldr/resources/casefolder_class_generator.rb, line 35
def output_file
  File.basename(template_file).chomp('.erb')
end
output_path() click to toggle source
# File lib/twitter_cldr/resources/casefolder_class_generator.rb, line 31
def output_path
  File.join(params.fetch(:output_path), output_file)
end
resource() click to toggle source
# File lib/twitter_cldr/resources/casefolder_class_generator.rb, line 78
def resource
  @resource ||= TwitterCldr.get_resource('unicode_data', 'casefolding')
end
template_file() click to toggle source
# File lib/twitter_cldr/resources/casefolder_class_generator.rb, line 27
def template_file
  params.fetch(:template_file)
end
to_regex_char_sequence(casefold_data) click to toggle source
# File lib/twitter_cldr/resources/casefolder_class_generator.rb, line 62
def to_regex_char_sequence(casefold_data)
  casefold_data.map { |(source, _)| to_utf8(source) }.join("|")
end
to_utf8(obj) click to toggle source
# File lib/twitter_cldr/resources/casefolder_class_generator.rb, line 66
def to_utf8(obj)
  arr = obj.is_a?(Array) ? obj : [obj]
  arr.pack("U*").bytes.to_a.map { |s| "\\" + s.to_s(8) }.join
end