Skip to content

Instantly share code, notes, and snippets.

@tily
Created April 10, 2010 16:27
Show Gist options
  • Save tily/362137 to your computer and use it in GitHub Desktop.
Save tily/362137 to your computer and use it in GitHub Desktop.
convert text to japanese cafe name
マイクロソフト
COFFEE「舞黒想風人」
インターネット
歌声喫茶「伊多音都」
さむい
談話室「再夢伊」
はらへった
軽食喫茶「葉来変多」
#!/usr/bin/env ruby
require 'MeCab'
require 'yaml'
# TODO: 「ー」を母音に変換する
# TODO: 同じ入力には同じ prefix を出す
class Cafe
def initialize(str)
@str = str
end
def load_config(file)
config = YAML.load_file(file)
@prefix = config['prefix']
@map = config['map']
end
def prefix
@prefix[rand(@prefix.length)]
end
def name
name = @str.match(/^[ァ-ヶー]+$/u) ? @str : to_kana_str(@str)
name = convert_with_multi_char_map(name)
name = prepare_for_one_char_map(name)
convert_with_one_char_map(name)
end
private
def to_kana_str(str)
mecab = MeCab::Tagger.new
node = mecab.parseToNode(str)
kana_str = ''
while(node = node.next)
kana = node.feature.split(',')[8]
kana_str += kana if kana != '*'
end
kana_str
end
def convert_with_multi_char_map(str)
multi_char_map.each do |k, v|
str.gsub!(/#{k}/, v)
end
str
end
def multi_char_map
@map.reject {|k,v| k.length < 6 }
end
def prepare_for_one_char_map(kana_str)
kana_str = kana_str.gsub(/ヲ/u, 'オ')
kana_str = kana_str.gsub(/[ンァィゥェォャュョッー]/u, '')
end
def convert_with_one_char_map(kana)
kana.split(//u).map {|k| kana_to_kanji(k) }.join('')
end
def kana_to_kanji(char)
return char if(@map[char] == nil)
if(@map[char].class == Array)
@map[char][rand(@map[char].length)]
else
@map[char]
end
end
end
cafe = Cafe.new(STDIN.read.chomp)
cafe.load_config('kissa.yml')
puts "#{cafe.prefix}「#{cafe.name}」"
prefix:
- 軽食喫茶
- 歌声喫茶
- 喫茶
- 珈琲
- クラシック喫茶
- 談話室
- 名曲喫茶
- 純喫茶
- COFFEE
map:
ア : 亜
イ : 伊
ウ : 宇
エ :
- 絵
- 英
オ : 男
カ :
- 花
- 歌
キ : 樹
ク :
- 久
- 区
ケ : 気
コ : 古
サ : 再
シ : 詩
ス : 巣
セ : 星
ソ : 想
タ : 多
チ : 小
ツ : 都
テ :
- 手
- 庭
ト :
- 都
- 人
ナ : 南
ニ : 人
ヌ : 奴
ネ : 音
ノ : 野
ハ : 葉
ヒ : 陽
フ : 風
ヘ : 変
ホ : 歩
マ : 魔
ミ : 美
ム : 夢
メ :
- 芽
- 瞳
- 名
- 迷
モ : 望
ヤ : 夜
ユ :
- 遊
- 友
ヨ :
- 世
- 夜
ラ :
- 蘭
- 楽
- 来
- 羅
リ : 里
ル :
- 瑠
- 流
レ : 麗
ロ : 路
ワ : 話
ガ : 画
ギ : 戯
グ : 久
ゲ : 気
ゴ :
- 郷
- 後
ザ : 再
ジ : 時
ズ : 巣
ゼ : 星
ゾ : 想
ダ : 駄
ヂ : 時
ヅ : 巣
デ : 手
ド :
- 人
- 道
- 童
- 都
- 独
バ : 葉
ビ : 美
ブ : 舞
ベ : 米
ボ : 慕
パ :
- 巴
- 葉
ピ : 秘
プ : 譜
ペ : 変
ポ : 歩
タイ : 待
テイ : 庭
テー : 庭
ユメ : 夢
アイ : 愛
オン : 遠
クロ : 黒
ライ : 来
レタ : 手紙
レン : 恋
ジャ : 者
ジャー : 者
ソウ : 想
ティー : 茶
ジュ : 樹
ショ : 処
シマ : 島
ショー : 笑
ショウ : 笑
シヨウ : 笑
センカ : 専科
ソー : 想
パリ : 巴里
マイ : 舞
ロンド : 円舞
ヒメ : 姫
オト : 音
ムード : 武道
ナイト : 騎士
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment