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
  @char_scripts = []
  @script_names = []

  detect_scripts
end

Instance Attribute Details

#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

#charactersObject



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

Returns:

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

Returns:

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



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_groupsObject



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