Module: CharacterSet::Writer

Defined in:
lib/character_set/writer.rb

Class Method Summary collapse

Class Method Details

.write(codepoint_ranges, opts = {}, &block) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
# File 'lib/character_set/writer.rb', line 4

def write(codepoint_ranges, opts = {}, &block)
  content = codepoint_ranges.map do |range|
    if range.size > 2 && opts[:abbreviate] != false
      bounds = [range.min, range.max]
      bounds.map { |cp| write_codepoint(cp, opts, &block) }.join('-')
    else
      range.map { |cp| write_codepoint(cp, opts, &block) }.join
    end
  end.join
  opts[:in_brackets] ? "[#{content}]" : content
end

.write_codepoint(codepoint, opts = {}, &block) ⇒ Object



16
17
18
# File 'lib/character_set/writer.rb', line 16

def write_codepoint(codepoint, opts = {}, &block)
  Character.new(codepoint).escape(opts, &block)
end

.write_surrogate_alternation(bmp_ranges, astral_ranges) ⇒ Object



25
26
27
28
# File 'lib/character_set/writer.rb', line 25

def write_surrogate_alternation(bmp_ranges, astral_ranges)
  astral_branches = surrogate_pairs(astral_ranges)
  bmp_set_with_alternatives(bmp_ranges, astral_branches)
end

.write_surrogate_ranges(bmp_ranges, astral_ranges) ⇒ Object



20
21
22
23
# File 'lib/character_set/writer.rb', line 20

def write_surrogate_ranges(bmp_ranges, astral_ranges)
  astral_branches = surrogate_range_expressions(astral_ranges)
  bmp_set_with_alternatives(bmp_ranges, astral_branches)
end