Class: UnicodeScriptDetector::Detector
- Inherits:
-
Object
- Object
- UnicodeScriptDetector::Detector
- Defined in:
- lib/unicode_script_detector/detector.rb
Instance Attribute Summary collapse
-
#characters ⇒ Object
readonly
Returns the value of attribute characters.
-
#scripts ⇒ Object
readonly
Returns the value of attribute scripts.
Instance Method Summary collapse
- #contains?(scripts) ⇒ Boolean
- #contains_only?(scripts) ⇒ Boolean
- #detect_scripts ⇒ Object
-
#initialize(string) ⇒ Detector
constructor
A new instance of Detector.
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 @characters = [] @scripts = [] detect_scripts end |
Instance Attribute Details
#characters ⇒ Object (readonly)
Returns the value of attribute characters.
3 4 5 |
# File 'lib/unicode_script_detector/detector.rb', line 3 def characters @characters end |
#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
#contains?(scripts) ⇒ Boolean
33 34 35 36 37 |
# File 'lib/unicode_script_detector/detector.rb', line 33 def contains?(scripts) return @scripts.include?(scripts) if scripts.is_a?(Symbol) scripts.all? { |script| @scripts.include?(script) } end |
#contains_only?(scripts) ⇒ Boolean
39 40 41 42 43 |
# File 'lib/unicode_script_detector/detector.rb', line 39 def contains_only?(scripts) return @scripts.uniq == [scripts] if scripts.is_a?(Symbol) @scripts.uniq.sort == scripts.uniq.sort end |
#detect_scripts ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/unicode_script_detector/detector.rb', line 17 def detect_scripts @string.chars.each_with_index do |char, index| detected = false Scripts::LIST.each_with_index do |script_data, index| if char.match?(script_data[:regex]) @characters << Character.new(char, script_data[:script], script_data[:name]) @scripts << script_data[:script] detected = true break end end @characters << Character.new(char, :Other, "Other") unless detected @scripts << :Other unless detected end end |