Module: Syamei

Defined in:
lib/syamei.rb,
lib/syamei/version.rb

Defined Under Namespace

Classes: Error

Constant Summary collapse

DATA =
YAML.load_file(File.expand_path(File.join('..', 'data', 'notations.yml'), __FILE__))['notations']
NOTATION =
DATA.map { |n| n[0] }.compact.reject(&:empty?).flatten.uniq
SPECIAL =
DATA.map { |n| n[1] }.compact.reject(&:empty?).flatten.uniq
ABBREVIATION =
DATA.map { |n| n[2] }.compact.reject(&:empty?).flatten.uniq
KANA_HEAD =
DATA.map { |n| n[3] }.compact.reject(&:empty?).flatten.uniq
KANA_MIDDLE =
DATA.map { |n| n[4] }.compact.reject(&:empty?).flatten.uniq
KANA_TAIL =
DATA.map { |n| n[5] }.compact.reject(&:empty?).flatten.uniq
COMPLEX_TYPE =
{
  0 => {
    all: [NOTATION, SPECIAL, ABBREVIATION, KANA_HEAD, KANA_TAIL].join('|'),
    head: [NOTATION, SPECIAL, ABBREVIATION, KANA_HEAD].join('|'),
    tail: [NOTATION, SPECIAL, ABBREVIATION, KANA_TAIL].join('|')
  },
  1 => NOTATION.join('|'),
  2 => SPECIAL.join('|'),
  3 => ABBREVIATION.join('|'),
  4 => {
    all: [KANA_HEAD, KANA_TAIL].join('|'),
    head: KANA_HEAD.join('|'),
    tail: KANA_TAIL.join('|')
  }
}.freeze
VERSION =
'0.2.4'.freeze

Class Method Summary collapse

Class Method Details

.listObject



90
91
92
# File 'lib/syamei.rb', line 90

def self.list
  COMPLEX_TYPE[0][:all].gsub('|', '  ').gsub('\\', '')
end

.notation(name, type = 0) ⇒ Object



82
83
84
85
86
87
88
# File 'lib/syamei.rb', line 82

def self.notation(name, type = 0)
  return nil if name.nil? || name.empty?

  return name[/(#{COMPLEX_TYPE[type][:all]})/, 1] if type.zero? || type == 4

  name[/(#{COMPLEX_TYPE[type]})/, 1]
end

.only(name, type = 0) ⇒ Object

先頭・末尾の法人格を削除



75
76
77
78
79
80
# File 'lib/syamei.rb', line 75

def self.only(name, type = 0)
  return nil if name.nil? || name.empty?

  name = with_beginning(name, type)
  with_end(name, type)
end

.with?(name, type = 0) ⇒ Boolean

前株・後株の存在チェック

Returns:

  • (Boolean)


50
51
52
53
54
# File 'lib/syamei.rb', line 50

def self.with?(name, type = 0)
  return false if name.nil? || name.empty?

  with_beginning?(name, type) || with_end?(name, type)
end

.with_beginning(name, type = 0) ⇒ Object

末尾の法人格を削除



57
58
59
60
61
62
63
# File 'lib/syamei.rb', line 57

def self.with_beginning(name, type = 0)
  return nil if name.nil? || name.empty?

  return name.gsub(/(#{COMPLEX_TYPE[type][:tail]})$/, '').strip if type.zero? || type == 4

  name.gsub(/(#{COMPLEX_TYPE[type]})$/, '').strip
end

.with_beginning?(name, type = 0) ⇒ Boolean

前株の存在チェック

Returns:

  • (Boolean)


32
33
34
35
36
37
38
# File 'lib/syamei.rb', line 32

def self.with_beginning?(name, type = 0)
  return false if name.nil? || name.empty?

  return name.match?(/^(#{COMPLEX_TYPE[type][:head]}).*$/) if type.zero? || type == 4

  name.match?(/^(#{COMPLEX_TYPE[type]}).*$/)
end

.with_end(name, type = 0) ⇒ Object

先頭の法人格を削除



66
67
68
69
70
71
72
# File 'lib/syamei.rb', line 66

def self.with_end(name, type = 0)
  return nil if name.nil? || name.empty?

  return name.gsub(/^(#{COMPLEX_TYPE[type][:head]})/, '').strip if type.zero? || type == 4

  name.gsub(/^(#{COMPLEX_TYPE[type]})/, '').strip
end

.with_end?(name, type = 0) ⇒ Boolean

後株の存在チェック

Returns:

  • (Boolean)


41
42
43
44
45
46
47
# File 'lib/syamei.rb', line 41

def self.with_end?(name, type = 0)
  return false if name.nil? || name.empty?

  return name.match?(/.*(#{COMPLEX_TYPE[type][:tail]})$/) if type.zero? || type == 4

  name.match?(/.*(#{COMPLEX_TYPE[type]})$/)
end