Class: TwitterCldr::Shared::CodePoint
- Inherits:
-
Struct
- Object
- Struct
- TwitterCldr::Shared::CodePoint
- Defined in:
- lib/twitter_cldr/shared/code_point.rb
Constant Summary collapse
- DECOMPOSITION_DATA_INDEX =
5
- DECOMPOSITION_REGEX =
/^(?:<(.+)>\s+)?(.+)?$/
Instance Attribute Summary collapse
-
#compatibility_decomposition_tag ⇒ Object
Returns the value of attribute compatibility_decomposition_tag.
Class Method Summary collapse
- .canonical_compositions ⇒ Object
- .excluded_from_composition?(code_point) ⇒ Boolean
- .find(code_point) ⇒ Object
- .for_canonical_decomposition(code_points) ⇒ Object
- .hangul_type(code_point) ⇒ Object
Instance Method Summary collapse
- #compatibility_decomposition? ⇒ Boolean
- #excluded_from_composition? ⇒ Boolean
- #hangul_type ⇒ Object
-
#initialize ⇒ CodePoint
constructor
A new instance of CodePoint.
Constructor Details
#initialize ⇒ CodePoint
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_tag ⇒ Object
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_compositions ⇒ Object
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
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
45 46 47 |
# File 'lib/twitter_cldr/shared/code_point.rb', line 45 def compatibility_decomposition? !!compatibility_decomposition_tag end |
#excluded_from_composition? ⇒ 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_type ⇒ Object
49 50 51 |
# File 'lib/twitter_cldr/shared/code_point.rb', line 49 def hangul_type CodePoint.hangul_type(code_point) end |