Class: TwitterCldr::Shared::CodePoint
- Inherits:
-
Object
- Object
- TwitterCldr::Shared::CodePoint
- Defined in:
- lib/twitter_cldr/shared/code_point.rb
Constant Summary collapse
- DECOMPOSITION_DATA_INDEX =
5
- DECOMPOSITION_REGEX =
/^(?:<(.+)>\s+)?(.+)?$/
- INDICES =
[ :category, :bidi_class, :bidi_mirrored ]
- PROPERTIES =
[ :sentence_break, :line_break, :word_break ]
Instance Attribute Summary collapse
-
#fields ⇒ Object
readonly
Returns the value of attribute fields.
Class Method Summary collapse
- .canonical_compositions ⇒ Object
-
.code_points_for_property_value(prop_value) ⇒ Object
Search for code points wherein at least one property value contains prop_value.
- .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
- #compatibility_decomposition_tag ⇒ Object
- #decomposition ⇒ Object
- #excluded_from_composition? ⇒ Boolean
- #hangul_type ⇒ Object
-
#initialize(fields) ⇒ CodePoint
constructor
A new instance of CodePoint.
Constructor Details
#initialize(fields) ⇒ CodePoint
Returns a new instance of CodePoint.
71 72 73 |
# File 'lib/twitter_cldr/shared/code_point.rb', line 71 def initialize(fields) @fields = fields end |
Instance Attribute Details
#fields ⇒ Object (readonly)
Returns the value of attribute fields.
39 40 41 |
# File 'lib/twitter_cldr/shared/code_point.rb', line 39 def fields @fields end |
Class Method Details
.canonical_compositions ⇒ Object
137 138 139 140 |
# File 'lib/twitter_cldr/shared/code_point.rb', line 137 def canonical_compositions @canonical_compositions ||= TwitterCldr.get_resource(:unicode_data, :canonical_compositions) end |
.code_points_for_property_value(prop_value) ⇒ Object
Search for code points wherein at least one property value contains prop_value. For example, if prop_value is set to :Zs, this method will return all code points that are considered spaces. If prop value is simply :Z, this method will return all code points who have a property value that contains :Z, i.e. spaces as well as line separators (:Zl) and paragraph separators (:Zp).
120 121 122 123 124 125 126 127 128 129 |
# File 'lib/twitter_cldr/shared/code_point.rb', line 120 def code_points_for_property_value(prop_value) index_key_cache[prop_value] ||= index_keys.inject([]) do |ret, (index_key, index_names)| if index_key.to_s.include?(prop_value.to_s) index_names.each do |index_name| ret += get_index(index_name)[index_key] end end ret end end |
.excluded_from_composition?(code_point) ⇒ Boolean
157 158 159 160 |
# File 'lib/twitter_cldr/shared/code_point.rb', line 157 def excluded_from_composition?(code_point) composition_exclusion_cache[code_point] ||= composition_exclusions.any? { |exclusion| exclusion.include?(code_point) } end |
.find(code_point) ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/twitter_cldr/shared/code_point.rb', line 89 def find(code_point) code_point_cache[code_point] ||= begin 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 end |
.for_canonical_decomposition(code_points) ⇒ Object
131 132 133 134 135 |
# File 'lib/twitter_cldr/shared/code_point.rb', line 131 def for_canonical_decomposition(code_points) if canonical_compositions.has_key?(code_points) find(canonical_compositions[code_points]) end end |
.hangul_type(code_point) ⇒ Object
142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'lib/twitter_cldr/shared/code_point.rb', line 142 def hangul_type(code_point) hangul_type_cache[code_point] ||= begin if 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 else nil end end end |
Instance Method Details
#compatibility_decomposition? ⇒ Boolean
75 76 77 |
# File 'lib/twitter_cldr/shared/code_point.rb', line 75 def compatibility_decomposition? !!compatibility_decomposition_tag end |
#compatibility_decomposition_tag ⇒ Object
60 61 62 63 64 65 66 67 68 69 |
# File 'lib/twitter_cldr/shared/code_point.rb', line 60 def compatibility_decomposition_tag @compat_decomp_tag ||= begin decomp = fields[DECOMPOSITION_DATA_INDEX] if decomp =~ DECOMPOSITION_REGEX $1 else raise ArgumentError, "decomposition #{decomp.inspect} has invalid format" end end end |
#decomposition ⇒ Object
49 50 51 52 53 54 55 56 57 58 |
# File 'lib/twitter_cldr/shared/code_point.rb', line 49 def decomposition @decomposition ||= begin decomp = fields[DECOMPOSITION_DATA_INDEX] if decomp =~ DECOMPOSITION_REGEX $2 && $2.split.map(&:hex) else raise ArgumentError, "decomposition #{decomp.inspect} has invalid format" end end end |
#excluded_from_composition? ⇒ Boolean
83 84 85 |
# File 'lib/twitter_cldr/shared/code_point.rb', line 83 def excluded_from_composition? CodePoint.excluded_from_composition?(code_point) end |
#hangul_type ⇒ Object
79 80 81 |
# File 'lib/twitter_cldr/shared/code_point.rb', line 79 def hangul_type CodePoint.hangul_type(code_point) end |