Sha256: ec2a555947ae25bd99c338dae94accf6a1e83bd1f73d2112138c9ac8fce5ff05

Contents?: true

Size: 1.08 KB

Versions: 1

Compression:

Stored size: 1.08 KB

Contents

require "rubicure_fuzzy_match/version"
require "rubicure"
require "fuzzy_match"

class Rubicure::Seriese
  TITLES = Precure.map(&:title)
  TITLES_DICTIONARY = Hash[*TITLES.map.with_index { |e, i| [e, i] }.flatten]
  FUZZY_TITLES_DICTIONARY = {
    '初代'               => 0,
    '無印'               => 0,
    'マックスハート'     => 1,
    'スプラッシュスター' => 2,
    'イエス'             => 3,
    '555'                => 4,
    'フレプリ'           => 5,
    'ハト'               => 6,
    'スイプリ'           => 7,
    'スマプリ'           => 8,
    'ドキプリ'           => 9,
    'ドドリア'           => 9,
    'ハチャプリ'         => 10,
    'ゴプリプリ'         => 11,
    '姫プリ'             => 11,
  }
  FUZZY_MATCHER = FuzzyMatch.new(TITLES + FUZZY_TITLES_DICTIONARY.keys)
  TITLES_DICTIONARY.merge! FUZZY_TITLES_DICTIONARY

  def self.regularize(title)
    s = FUZZY_MATCHER.find title
    s ? TITLES[TITLES_DICTIONARY[s]] : nil
  end

  def self.fuzzy_find(title)
    Precure.select { |e| e.title == regularize(title) }.first
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rubicure_fuzzy_match-0.1.2 lib/rubicure_fuzzy_match.rb