Class: Unisec::Size
- Inherits:
-
Object
- Object
- Unisec::Size
- Defined in:
- lib/unisec/size.rb
Overview
All kinf of size information about a Unicode string
Instance Attribute Summary collapse
-
#code_points_size ⇒ Integer
readonly
Number of code points.
-
#grapheme_size ⇒ Integer
readonly
Number of graphemes.
-
#utf16_bytesize ⇒ Integer
readonly
UTF-16 size in bytes.
-
#utf16_unitsize ⇒ Integer
readonly
Number of UTF-16 units.
-
#utf32_bytesize ⇒ Integer
readonly
UTF-32 size in bytes.
-
#utf32_unitsize ⇒ Integer
readonly
Number of UTF-32 units.
-
#utf8_bytesize ⇒ Integer
readonly
UTF-8 size in bytes.
-
#utf8_unitsize ⇒ Integer
readonly
Number of UTF-8 units.
Class Method Summary collapse
-
.code_points_size(str) ⇒ Integer
Number of code points.
-
.grapheme_size(str) ⇒ Integer
Number of graphemes.
-
.utf16_bytesize(str) ⇒ Integer
UTF-16 size in bytes.
-
.utf16_unitsize(str) ⇒ Integer
Number of UTF-16 units.
-
.utf32_bytesize(str) ⇒ Integer
UTF-32 size in bytes.
-
.utf32_unitsize(str) ⇒ Integer
Number of UTF-32 units.
-
.utf8_bytesize(str) ⇒ Integer
UTF-8 size in bytes.
-
.utf8_unitsize(str) ⇒ Integer
Number of UTF-8 units.
Instance Method Summary collapse
-
#display ⇒ Object
Display a CLI-friendly output summurizing the size information about a Unicode string.
-
#initialize(str) ⇒ Size
constructor
A new instance of Size.
Constructor Details
#initialize(str) ⇒ Size
Returns a new instance of Size.
64 65 66 67 68 69 70 71 72 73 |
# File 'lib/unisec/size.rb', line 64 def initialize(str) @code_points_size = Size.code_points_size(str) @grapheme_size = Size.grapheme_size(str) @utf8_bytesize = Size.utf8_bytesize(str) @utf16_bytesize = Size.utf16_bytesize(str) @utf32_bytesize = Size.utf32_bytesize(str) @utf8_unitsize = Size.utf8_unitsize(str) @utf16_unitsize = Size.utf16_unitsize(str) @utf32_unitsize = Size.utf32_unitsize(str) end |
Instance Attribute Details
#code_points_size ⇒ Integer (readonly)
Number of code points
13 14 15 |
# File 'lib/unisec/size.rb', line 13 def code_points_size @code_points_size end |
#grapheme_size ⇒ Integer (readonly)
Number of graphemes
20 21 22 |
# File 'lib/unisec/size.rb', line 20 def grapheme_size @grapheme_size end |
#utf16_bytesize ⇒ Integer (readonly)
UTF-16 size in bytes
34 35 36 |
# File 'lib/unisec/size.rb', line 34 def utf16_bytesize @utf16_bytesize end |
#utf16_unitsize ⇒ Integer (readonly)
Number of UTF-16 units
55 56 57 |
# File 'lib/unisec/size.rb', line 55 def utf16_unitsize @utf16_unitsize end |
#utf32_bytesize ⇒ Integer (readonly)
UTF-32 size in bytes
41 42 43 |
# File 'lib/unisec/size.rb', line 41 def utf32_bytesize @utf32_bytesize end |
#utf32_unitsize ⇒ Integer (readonly)
Number of UTF-32 units
62 63 64 |
# File 'lib/unisec/size.rb', line 62 def utf32_unitsize @utf32_unitsize end |
#utf8_bytesize ⇒ Integer (readonly)
UTF-8 size in bytes
27 28 29 |
# File 'lib/unisec/size.rb', line 27 def utf8_bytesize @utf8_bytesize end |
#utf8_unitsize ⇒ Integer (readonly)
Number of UTF-8 units
48 49 50 |
# File 'lib/unisec/size.rb', line 48 def utf8_unitsize @utf8_unitsize end |
Class Method Details
.code_points_size(str) ⇒ Integer
Number of code points
80 81 82 |
# File 'lib/unisec/size.rb', line 80 def self.code_points_size(str) str.size end |
.grapheme_size(str) ⇒ Integer
Number of graphemes
89 90 91 |
# File 'lib/unisec/size.rb', line 89 def self.grapheme_size(str) str.grapheme_clusters.size end |
.utf16_bytesize(str) ⇒ Integer
UTF-16 size in bytes
107 108 109 |
# File 'lib/unisec/size.rb', line 107 def self.utf16_bytesize(str) str.encode('UTF-16BE').bytesize end |
.utf16_unitsize(str) ⇒ Integer
Number of UTF-16 units
134 135 136 |
# File 'lib/unisec/size.rb', line 134 def self.utf16_unitsize(str) utf16_bytesize(str) / 2 end |
.utf32_bytesize(str) ⇒ Integer
UTF-32 size in bytes
116 117 118 |
# File 'lib/unisec/size.rb', line 116 def self.utf32_bytesize(str) str.encode('UTF-32BE').bytesize end |
.utf32_unitsize(str) ⇒ Integer
Number of UTF-32 units
143 144 145 |
# File 'lib/unisec/size.rb', line 143 def self.utf32_unitsize(str) utf32_bytesize(str) / 4 end |
.utf8_bytesize(str) ⇒ Integer
UTF-8 size in bytes
98 99 100 |
# File 'lib/unisec/size.rb', line 98 def self.utf8_bytesize(str) str.bytesize end |
.utf8_unitsize(str) ⇒ Integer
Number of UTF-8 units
125 126 127 |
# File 'lib/unisec/size.rb', line 125 def self.utf8_unitsize(str) utf8_bytesize(str) end |
Instance Method Details
#display ⇒ Object
Display a CLI-friendly output summurizing the size information about a Unicode string.
159 160 161 162 163 164 165 166 167 168 169 |
# File 'lib/unisec/size.rb', line 159 def display display = ->(key, value) { puts Paint[key, :red, :bold].ljust(27) + " #{value}" } display.call('Code point(s):', @code_points_size) display.call('Grapheme(s):', @grapheme_size) display.call('UTF-8 byte(s):', @utf8_bytesize) display.call('UTF-16 byte(s):', @utf16_bytesize) display.call('UTF-32 byte(s):', @utf32_bytesize) display.call('UTF-8 unit(s):', @utf8_unitsize) display.call('UTF-16 unit(s):', @utf16_unitsize) display.call('UTF-32 unit(s):', @utf32_unitsize) end |