Class: TwitterCldr::Shared::CodePoint

Inherits:
Struct
  • Object
show all
Defined in:
lib/twitter_cldr/shared/code_point.rb

Constant Summary collapse

DECOMPOSITION_DATA_INDEX =
5
DECOMPOSITION_REGEX =
/^(?:<(.+)>\s+)?(.+)?$/

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeCodePoint

Returns a new instance of CodePoint.



34
35
36
37
38
39
40
41
42
43
# File 'lib/twitter_cldr/shared/code_point.rb', line 34

def initialize(*)
  super

  if decomposition =~ DECOMPOSITION_REGEX
    self.compatibility_decomposition_tag = $1
    self.decomposition = $2 && $2.split.map(&:hex)
  else
    raise ArgumentError, "decomposition #{decomposition.inspect} has invalid format"
  end
end

Instance Attribute Details

#compatibility_decomposition_tagObject

Returns the value of attribute compatibility_decomposition_tag.



32
33
34
# File 'lib/twitter_cldr/shared/code_point.rb', line 32

def compatibility_decomposition_tag
  @compatibility_decomposition_tag
end

Class Method Details

.canonical_compositionsObject



74
75
76
# File 'lib/twitter_cldr/shared/code_point.rb', line 74

def canonical_compositions
  @canonical_compositions ||= TwitterCldr.get_resource(:unicode_data, :canonical_compositions)
end

.excluded_from_composition?(code_point) ⇒ Boolean

Returns:

  • (Boolean)


90
91
92
# File 'lib/twitter_cldr/shared/code_point.rb', line 90

def excluded_from_composition?(code_point)
  composition_exclusions.any? { |exclusion| exclusion.include?(code_point) }
end

.find(code_point) ⇒ Object



59
60
61
62
63
64
65
66
67
68
# File 'lib/twitter_cldr/shared/code_point.rb', line 59

def find(code_point)
  target = get_block(code_point)

  return unless target && target.first

  block_data      = TwitterCldr.get_resource(:unicode_data, :blocks, target.first)
  code_point_data = block_data.fetch(code_point) { |cp| get_range_start(cp, block_data) }

  CodePoint.new(*code_point_data) if code_point_data
end

.for_canonical_decomposition(code_points) ⇒ Object



70
71
72
# File 'lib/twitter_cldr/shared/code_point.rb', line 70

def for_canonical_decomposition(code_points)
  find(canonical_compositions[code_points]) if canonical_compositions.has_key?(code_points)
end

.hangul_type(code_point) ⇒ Object



78
79
80
81
82
83
84
85
86
87
88
# File 'lib/twitter_cldr/shared/code_point.rb', line 78

def hangul_type(code_point)
  return unless code_point

  [:lparts, :vparts, :tparts, :compositions].each do |type|
    hangul_blocks[type].each do |range|
      return type if range.include?(code_point)
    end
  end

  nil
end

Instance Method Details

#compatibility_decomposition?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/twitter_cldr/shared/code_point.rb', line 45

def compatibility_decomposition?
  !!compatibility_decomposition_tag
end

#excluded_from_composition?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/twitter_cldr/shared/code_point.rb', line 53

def excluded_from_composition?
  CodePoint.excluded_from_composition?(code_point)
end

#hangul_typeObject



49
50
51
# File 'lib/twitter_cldr/shared/code_point.rb', line 49

def hangul_type
  CodePoint.hangul_type(code_point)
end