Class: UnicodeScriptDetector::Detector
- Inherits:
-
Object
- Object
- UnicodeScriptDetector::Detector
- Defined in:
- lib/unicode_script_detector/detector.rb
Instance Attribute Summary collapse
-
#scripts ⇒ Object
readonly
Returns the value of attribute scripts.
Instance Method Summary collapse
- #characters ⇒ Object
- #contains?(scripts) ⇒ Boolean
- #contains_only?(scripts) ⇒ Boolean
- #grouped_scripts_hash ⇒ Object
-
#initialize(string) ⇒ Detector
constructor
A new instance of Detector.
- #script_groups ⇒ Object
Constructor Details
#initialize(string) ⇒ Detector
Returns a new instance of Detector.
5 6 7 8 9 10 11 |
# File 'lib/unicode_script_detector/detector.rb', line 5 def initialize(string) @string = string @char_scripts = [] @script_names = [] detect_scripts end |
Instance Attribute Details
#scripts ⇒ Object (readonly)
Returns the value of attribute scripts.
3 4 5 |
# File 'lib/unicode_script_detector/detector.rb', line 3 def scripts @scripts end |
Instance Method Details
#characters ⇒ Object
42 43 44 45 46 |
# File 'lib/unicode_script_detector/detector.rb', line 42 def characters @characters ||= @string.chars.zip(@char_scripts, @script_names).map do |char, script, name| Character.new(char, script, name) end end |
#contains?(scripts) ⇒ Boolean
17 18 19 20 |
# File 'lib/unicode_script_detector/detector.rb', line 17 def contains?(scripts) return @char_scripts.include?(scripts) if scripts.is_a?(Symbol) scripts.all? { |script| @char_scripts.include?(script) } end |
#contains_only?(scripts) ⇒ Boolean
22 23 24 25 |
# File 'lib/unicode_script_detector/detector.rb', line 22 def contains_only?(scripts) return @char_scripts.uniq == [scripts] if scripts.is_a?(Symbol) @char_scripts.uniq.sort == scripts.uniq.sort end |
#grouped_scripts_hash ⇒ Object
38 39 40 |
# File 'lib/unicode_script_detector/detector.rb', line 38 def grouped_scripts_hash script_groups.map { |group| [group.script, group.text] }.to_h end |
#script_groups ⇒ Object
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/unicode_script_detector/detector.rb', line 27 def script_groups @string.chars .zip(@char_scripts, @script_names) .chunk { |_, script, _| script } .map do |script, char_data| chars = char_data.map(&:first) name = char_data.first[2] ScriptGroup.new(script, chars, name) end end |