Sha256: 1643d17fbe9524b0249eccd94f7f41d28850494efeedf4426324984f0bb7fdb1

Contents?: true

Size: 1.37 KB

Versions: 1

Compression:

Stored size: 1.37 KB

Contents

# encoding: utf-8
require 'shinji/version'

class String
  def shinji
    Shinji::to_shinji(self)
  end

  def kyuji
    Shinji::to_kyuji(self)
  end
end

module Shinji
  # 旧漢字・新漢字リストが置いてあるディレクトリのパス
  CONFIG_DIR = File.expand_path('../../config', __FILE__)
  # 旧漢字・新漢字リストファイル名
  KANJI_LIST_FILE = 'kanji_list'

  @@shin_kanji = nil
  @@kyu_kanji = nil

  module_function

  # 旧漢字を新漢字に置換する
  #
  # Usage:
  #
  #   Shinji::to_kyuji('稻飮隱營榮衞驛學廣')
  #   # => 稲飲隠営栄衛駅学広
  #
  def to_shinji(str)
    load_kanji_list unless loaded_kanji_list?

    str.tr(@@kyu_kanji, @@shin_kanji)
  end

  # 新漢字を旧漢字に置換する
  #
  # Usage:
  #
  #   Shinji::to_kyuji('稲飲隠営栄衛駅学広')
  #   # => 稻飮隱營榮衞驛學廣
  #
  def to_kyuji(str)
    load_kanji_list unless loaded_kanji_list?

    str.tr(@@shin_kanji, @@kyu_kanji)
  end

  # 旧漢字・新漢字リストファイルの読み込みとメモ化を行う
  def load_kanji_list
    File.open("#{CONFIG_DIR}/#{KANJI_LIST_FILE}") do |file|
      file_data = file.read.split("\n")
      file_data.map! { |str| str.delete("\s").split(':') }
      @@kyu_kanji, @@shin_kanji = file_data.transpose.map(&:join)
    end
  end

  def loaded_kanji_list?
    @@shin_kanji && @@kyu_kanji
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shinji-1.0.2 lib/shinji.rb