Class: UnicodeCharacteristics

Inherits:
Characteristics show all
Defined in:
lib/characteristics/unicode.rb

Constant Summary collapse

BLANKS =

Note that this list is maintained by hand and might not cover the latest Unicode updates Please open an issue or pull request is you find another character that is rendered invisible:

[
  0x0009,
  0x0020,
  0x00A0,
  0x00AD,
  0x034F,
  0x061C,
  0x070F,
  0x115F,
  0x1160,
  0x1680,
  0x17B4,
  0x17B5,
  0x180E,
  0x2000,
  0x2001,
  0x2002,
  0x2003,
  0x2004,
  0x2005,
  0x2006,
  0x2007,
  0x2008,
  0x2009,
  0x200A,
  0x200B,
  0x200C,
  0x200D,
  0x200E,
  0x200F,
  0x202F,
  0x205F,
  0x2060,
  0x2061,
  0x2062,
  0x2063,
  0x2064,
  0x206A,
  0x206B,
  0x206C,
  0x206D,
  0x206E,
  0x206F,
  0x3000,
  0x2800,
  0x3164,
  0xFEFF,
  0xFFA0,
  0x110B1,
  0x1BCA0,
  0x1BCA1,
  0x1BCA2,
  0x1BCA3,
  0x1D159,
  0x1D173,
  0x1D174,
  0x1D175,
  0x1D176,
  0x1D177,
  0x1D178,
  0x1D179,
  0x1D17A,
].freeze
SEPARATORS =
[
  0x000A,
  0x000B,
  0x000C,
  0x000D,
  0x0085,
  0x2028,
  0x2029,
].freeze
BIDI_CONTROL =
[
  0x061C,
  0x200E,
  0x200F,
  0x202A,
  0x202B,
  0x202C,
  0x202D,
  0x202E,
  0x2066,
  0x2067,
  0x2068,
  0x2069,
].freeze
VARIATION_SELECTORS =
[
  *0x180B..0x180D,
  *0xFE00..0xFE0F,
  *0xE0100..0xE01EF,
].freeze
TAGS =
[
  0xE0001,
  *0xE0020..0xE007F,
].freeze
NONCHARACTERS =
[
  *0xFDD0..0xFDEF,
  0xFFFE,   0xFFFF,
  0x1FFFE,  0x1FFFF,
  0x2FFFE,  0x2FFFF,
  0x3FFFE,  0x3FFFF,
  0x4FFFE,  0x4FFFF,
  0x5FFFE,  0x5FFFF,
  0x6FFFE,  0x6FFFF,
  0x7FFFE,  0x7FFFF,
  0x8FFFE,  0x8FFFF,
  0x9FFFE,  0x9FFFF,
  0xAFFFE,  0xAFFFF,
  0xBFFFE,  0xBFFFF,
  0xCFFFE,  0xCFFFF,
  0xDFFFE,  0xDFFFF,
  0xEFFFE,  0xEFFFF,
  0xFFFFE,  0xFFFFF,
  0x10FFFE, 0x10FFFF,
].freeze
IGNORABLE =
[
  0x00AD,
  0x034F,
  0x061C,
  *0x115F..0x1160,
  *0x17B4..0x17B5,
  *0x180B..0x180E,
  *0x200B..0x200F,
  *0x202A..0x202E,
  *0x2060..0x206F,
  0x3164,
  *0xFE00..0xFE0F,
  0xFEFF,
  0xFFA0,
  *0xFFF0..0xFFF8,
  *0x1BCA0..0x1BCA3,
  *0x1D173..0x1D17A,
  *0xE0000..0xE0FFF,
].freeze
KDDI =
[
  *0xE468..0xE5DF,
  *0xEA80..0xEB8E,
].freeze
SOFTBANK =
[
  *0xE001..0xE05A,
  *0xE101..0xE15A,
  *0xE201..0xE25A,
  *0xE301..0xE34D,
  *0xE401..0xE44C,
  *0xE501..0xE53E,
].freeze
DOCOMO =
[
  *0xE63E..0xE757,
].freeze

Constants inherited from Characteristics

Characteristics::UNICODE_VERSION, Characteristics::VERSION

Instance Attribute Summary collapse

Attributes inherited from Characteristics

#encoding

Instance Method Summary collapse

Methods inherited from Characteristics

create, create_for_type, type_from_encoding_name, #valid?

Constructor Details

#initialize(char) ⇒ UnicodeCharacteristics

Returns a new instance of UnicodeCharacteristics.



170
171
172
173
174
175
176
177
# File 'lib/characteristics/unicode.rb', line 170

def initialize(char)
  super

  if @is_valid
    @category = Unicode::Categories.category(char)
    @ord = char.ord
  end
end

Instance Attribute Details

#categoryObject (readonly)

Returns the value of attribute category.



168
169
170
# File 'lib/characteristics/unicode.rb', line 168

def category
  @category
end

Instance Method Details

#assigned?Boolean

Returns:

  • (Boolean)


183
184
185
# File 'lib/characteristics/unicode.rb', line 183

def assigned?
  @is_valid && @category != "Cn"
end

#bidi_control?Boolean

Returns:

  • (Boolean)


215
216
217
# File 'lib/characteristics/unicode.rb', line 215

def bidi_control?
  @is_valid && BIDI_CONTROL.include?(@ord)
end

#blank?Boolean

Returns:

  • (Boolean)


203
204
205
# File 'lib/characteristics/unicode.rb', line 203

def blank?
  @is_valid && ( BLANKS.include?(@ord) || SEPARATORS.include?(@ord) )
end

#c0?Boolean

Returns:

  • (Boolean)


191
192
193
# File 'lib/characteristics/unicode.rb', line 191

def c0?
  @is_valid && @ord < 0x20
end

#c1?Boolean

Returns:

  • (Boolean)


199
200
201
# File 'lib/characteristics/unicode.rb', line 199

def c1?
  @is_valid && @ord >= 0x80 && @ord < 0xA0
end

#control?Boolean

Returns:

  • (Boolean)


187
188
189
# File 'lib/characteristics/unicode.rb', line 187

def control?
  @is_valid && @category == "Cc"
end

#delete?Boolean

Returns:

  • (Boolean)


195
196
197
# File 'lib/characteristics/unicode.rb', line 195

def delete?
  @is_valid && @ord == 0x7F
end

#docomo?Boolean

Returns:

  • (Boolean)


251
252
253
254
255
# File 'lib/characteristics/unicode.rb', line 251

def docomo?
  @is_valid &&
  encoding_has_docomo? &&
  DOCOMO.include?(@ord)
end

#format?Boolean

Returns:

  • (Boolean)


211
212
213
# File 'lib/characteristics/unicode.rb', line 211

def format?
  @is_valid && @category == "Cf"
end

#ignorable?Boolean

Returns:

  • (Boolean)


233
234
235
# File 'lib/characteristics/unicode.rb', line 233

def ignorable?
  @is_valid && IGNORABLE.include?(@ord)
end

#kddi?Boolean

emoji

Returns:

  • (Boolean)


239
240
241
242
243
# File 'lib/characteristics/unicode.rb', line 239

def kddi?
  @is_valid &&
  encoding_has_kddi? &&
  KDDI.include?(@ord)
end

#noncharacter?Boolean

Returns:

  • (Boolean)


229
230
231
# File 'lib/characteristics/unicode.rb', line 229

def noncharacter?
  @is_valid && NONCHARACTERS.include?(@ord)
end

#separator?Boolean

Returns:

  • (Boolean)


207
208
209
# File 'lib/characteristics/unicode.rb', line 207

def separator?
  @is_valid && SEPARATORS.include?(@ord)
end

#softbank?Boolean

Returns:

  • (Boolean)


245
246
247
248
249
# File 'lib/characteristics/unicode.rb', line 245

def softbank?
  @is_valid &&
  encoding_has_softbank? &&
  SOFTBANK.include?(@ord)
end

#tag?Boolean

Returns:

  • (Boolean)


225
226
227
# File 'lib/characteristics/unicode.rb', line 225

def tag?
  @is_valid && TAGS.include?(@ord)
end

#unicode?Boolean

Returns:

  • (Boolean)


179
180
181
# File 'lib/characteristics/unicode.rb', line 179

def unicode?
  true
end

#variation_selector?Boolean

unicode specific

Returns:

  • (Boolean)


221
222
223
# File 'lib/characteristics/unicode.rb', line 221

def variation_selector?
  @is_valid && VARIATION_SELECTORS.include?(@ord)
end