Class: UnicodeScriptDetector::Detector

Inherits:
Object
  • Object
show all
Defined in:
lib/unicode_script_detector/detector.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#charactersObject (readonly)

Returns the value of attribute characters.



3
4
5
# File 'lib/unicode_script_detector/detector.rb', line 3

def characters
  @characters
end

#scriptsObject (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

Returns:

  • (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

Returns:

  • (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_scriptsObject



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