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