romaji 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color --format doc
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.9.2
4
+ - 1.9.3
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/Guardfile ADDED
@@ -0,0 +1,5 @@
1
+ guard 'rspec', :version => 2, :all_after_pass => false, :all_on_start => false do
2
+ watch(%r{spec/.+_spec\.rb$})
3
+ watch(%r{lib/(.+)\.rb$}) {|m| "spec/#{m[1]}_spec.rb"}
4
+ watch(%r{lib/(.+)/.+\.rb$}) {|m| "spec/#{m[1]}_spec.rb"}
5
+ end
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Shimpei Makimoto
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Romaji
2
+
3
+ [![Build Status](https://secure.travis-ci.org/makimoto/romaji.png?branch=master)](http://travis-ci.org/makimoto/romaji)
4
+
5
+ Yet another Romaji-Kana transliterator.
6
+
7
+ ## Installation
8
+
9
+ $ gem install romaji
10
+
11
+ ## Usage
12
+ require "romaji"
13
+ Romaji.kana2romaji "スシ" #=> "sushi"
14
+ Romaji.kana2romaji "sushi" #=> "スシ"
15
+ Romaji.kana2romaji "sushi", :kana_type => :hiragana #=> "すし"
16
+
17
+ require "romaji/core_ext/string"
18
+ "sushi".kana #=> "スシ"
19
+ "スシ".romaji #=> "sushi"
20
+ a = "sushi"
21
+ a.kana!
22
+ p a #=> "スシ"
23
+ a.romaji!
24
+ p a #=> "sushi"
25
+
26
+
27
+ ## Author
28
+
29
+ Shimpei Makimoto
data/Rakefile ADDED
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env rake
2
+ # coding: utf-8
3
+
4
+ require 'rubygems'
5
+ require "bundler/gem_tasks"
6
+ require 'bundler'
7
+
8
+ begin
9
+ Bundler.setup(:default, :development)
10
+ rescue Bundler::BundlerError => e
11
+ $stderr.puts e.message
12
+ $stderr.puts "Run `bundle install` to install missing gems"
13
+ exit e.status_code
14
+ end
15
+
16
+ require 'rspec/core'
17
+ require 'rspec/core/rake_task'
18
+
19
+ RSpec::Core::RakeTask.new(:spec)
20
+
21
+ task :default => :spec
data/lib/romaji.rb ADDED
@@ -0,0 +1,112 @@
1
+ # coding: utf-8
2
+
3
+ require 'nkf'
4
+ require 'romaji/string_extension'
5
+ require 'romaji/constants'
6
+ require 'romaji/version'
7
+
8
+ module Romaji
9
+ def self.romaji2kana(text, options = {})
10
+ text = hira2kata(self.normalize(text))
11
+ pos = 0
12
+ k = nil
13
+ kana = ''
14
+ chars = text.split(//u)
15
+ while true
16
+ # ン
17
+ if chars[pos] == 'm' && ['p', 'b', 'm'].include?(chars[pos + 1])
18
+ kana += 'ン'
19
+ pos += 1
20
+ next
21
+ end
22
+
23
+ # ッ
24
+ if chars[pos] == chars[pos + 1] && !['a', 'i', 'u', 'e', 'o', 'n'].include?(chars[pos])
25
+ kana += 'ッ'
26
+ pos += 1
27
+ next
28
+ end
29
+
30
+ ROMAJI_MAX_LENGTH.downto(1) do |t|
31
+ substr = chars.slice(pos, t).join
32
+ k = ROMAJI2KANA[substr]
33
+ if k
34
+ kana += k
35
+ pos += t
36
+ break
37
+ end
38
+ end
39
+ unless k
40
+ kana += chars.slice(pos, 1).join
41
+ pos += 1
42
+ end
43
+ break if pos >= chars.size
44
+ end
45
+
46
+ kana_type = options[:kana_type] || :katakana
47
+ kana = kata2hira(kana) if :hiragana == kana_type.to_sym
48
+
49
+ return kana
50
+ end
51
+
52
+ def self.kana2romaji(text)
53
+ text = hira2kata(self.normalize(text))
54
+ pos = 0
55
+ k = nil
56
+ romaji = ''
57
+ chars = text.split(//u)
58
+ while true
59
+ # ン
60
+ if chars[pos] == 'ン'
61
+ next_char_romaji = KANA2ROMAJI[chars[pos + 1]]
62
+ if next_char_romaji && ['p', 'b', 'm'].include?(next_char_romaji[0].slice(0,1))
63
+ romaji += 'm'
64
+ else
65
+ romaji += 'n'
66
+ end
67
+ pos += 1
68
+ next
69
+ end
70
+
71
+ # ッ
72
+ if chars[pos] == 'ッ'
73
+ next_char_romaji = KANA2ROMAJI[chars[pos + 1]]
74
+ if ['a', 'i', 'u', 'e', 'o', 'n', nil].include?(chars[pos + 1])
75
+ romaji += 'xtsu'
76
+ else
77
+ romaji += (next_char_romaji[0].slice(0,1))
78
+ end
79
+ pos += 1
80
+ next
81
+ end
82
+
83
+ ROMAJI_MAX_LENGTH.downto(1) do |t|
84
+ substr = chars.slice(pos, t).join
85
+ k = KANA2ROMAJI[substr]
86
+ if k
87
+ romaji += k[0]
88
+ pos += t
89
+ break
90
+ end
91
+ end
92
+ unless k
93
+ romaji += chars.slice(pos, 1).join
94
+ pos += 1
95
+ end
96
+ break if pos >= chars.size
97
+ end
98
+ romaji
99
+ end
100
+
101
+ def self.hira2kata(text)
102
+ NKF.nkf("--katakana -Ww", text)
103
+ end
104
+
105
+ def self.kata2hira(text)
106
+ NKF.nkf("--hiragana -Ww", text)
107
+ end
108
+
109
+ def self.normalize(text)
110
+ NKF.nkf('-mZ0Wwh0', text).downcase
111
+ end
112
+ end
@@ -0,0 +1,79 @@
1
+ # encoding: utf-8
2
+ module Romaji
3
+ ROMAJI_MAX_LENGTH = 3
4
+ KANA_MAX_LENGTH = 3
5
+
6
+ ROMAJI2KANA = {
7
+ "a"=>"ア", "i"=>"イ", "u"=>"ウ", "e"=>"エ", "o"=>"オ", "-"=>"ー", "n" => "ン",
8
+ "xa"=>"ァ", "xi"=>"ィ", "xu"=>"ゥ", "xe"=>"ェ", "xo"=>"ォ",
9
+ "ka"=>"カ", "ki"=>"キ", "ku"=>"ク", "ke"=>"ケ", "ko"=>"コ",
10
+ "ca"=>"カ", "cu"=>"ク", "co"=>"コ",
11
+ "ga"=>"ガ", "gi"=>"ギ", "gu"=>"グ", "ge"=>"ゲ", "go"=>"ゴ",
12
+ "sa"=>"サ", "si"=>"シ", "su"=>"ス", "se"=>"セ", "so"=>"ソ",
13
+ "za"=>"ザ", "zi"=>"ジ", "zu"=>"ズ", "ze"=>"ゼ", "zo"=>"ゾ",
14
+ "ja"=>"ジャ","ji"=>"ジ", "ju"=>"ジュ","je"=>"ジェ","jo"=>"ジョ",
15
+ "ta"=>"タ", "ti"=>"チ", "tu"=>"ツ", "te"=>"テ", "to"=>"ト",
16
+ "da"=>"ダ", "di"=>"ヂ", "du"=>"ヅ", "de"=>"デ", "do"=>"ド",
17
+ "na"=>"ナ", "ni"=>"ニ", "nu"=>"ヌ", "ne"=>"ネ", "no"=>"ノ",
18
+ "ha"=>"ハ", "hi"=>"ヒ", "hu"=>"フ", "he"=>"ヘ", "ho"=>"ホ",
19
+ "ba"=>"バ", "bi"=>"ビ", "bu"=>"ブ", "be"=>"ベ", "bo"=>"ボ",
20
+ "pa"=>"パ", "pi"=>"ピ", "pu"=>"プ", "pe"=>"ペ", "po"=>"ポ",
21
+ "va"=>"ヴァ","vi"=>"ヴィ","vu"=>"ヴ", "ve"=>"ヴェ","vo"=>"ヴォ",
22
+ "fa"=>"ファ","fi"=>"フィ","fu"=>"フ", "fe"=>"フェ","fo"=>"フォ",
23
+ "ma"=>"マ", "mi"=>"ミ", "mu"=>"ム", "me"=>"メ", "mo"=>"モ",
24
+ "ya"=>"ヤ", "yi"=>"イ", "yu"=>"ユ", "ye"=>"イェ", "yo"=>"ヨ",
25
+ "ra"=>"ラ", "ri"=>"リ", "ru"=>"ル", "re"=>"レ", "ro"=>"ロ",
26
+ "la"=>"ラ", "li"=>"リ", "lu"=>"ル", "le"=>"レ", "lo"=>"ロ",
27
+ "wa"=>"ワ", "wi"=>"ヰ", "wu"=>"ウ", "we"=>"ヱ", "wo"=>"ヲ",
28
+ "nn"=>"ン", "n"=>"ン",
29
+ "tsu"=>"ツ",
30
+ "xka"=>"ヵ", "xke"=>"ヶ",
31
+ "xwa"=>"ヮ", "xtsu"=>"ッ", "xya"=>"ャ", "xyu"=>"ュ", "xyo"=>"ョ",
32
+ "kya"=>"キャ", "kyi"=>"キィ", "kyu"=>"キュ", "kye"=>"キェ", "kyo"=>"キョ",
33
+ "gya"=>"ギャ", "gyi"=>"ギィ", "gyu"=>"ギュ", "gye"=>"ギェ", "gyo"=>"ギョ",
34
+ "sya"=>"シャ", "syi"=>"シィ", "syu"=>"シュ", "sye"=>"シェ", "syo"=>"ショ",
35
+ "sha"=>"シャ", "shi"=>"シ", "shu"=>"シュ", "she"=>"シェ", "sho"=>"ショ",
36
+ "zya"=>"ジャ", "zyi"=>"ジィ", "zyu"=>"ジュ", "zye"=>"ジェ", "zyo"=>"ジョ",
37
+ "jya"=>"ジャ", "jyi"=>"ジィ", "jyu"=>"ジュ", "jye"=>"ジェ", "jyo"=>"ジョ",
38
+ "tya"=>"チャ", "tyi"=>"チィ", "tyu"=>"チュ", "tye"=>"チェ", "tyo"=>"チョ",
39
+ "cya"=>"チャ", "cyi"=>"チィ", "cyu"=>"チュ", "cye"=>"チェ", "cyo"=>"チョ",
40
+ "cha"=>"チャ", "chi"=>"チ", "chu"=>"チュ", "che"=>"チェ", "cho"=>"チョ",
41
+ "tha"=>"テャ", "thi"=>"ティ", "thu"=>"テュ", "the"=>"テェ", "tho"=>"テョ",
42
+ "dya"=>"ヂャ", "dyi"=>"ヂィ", "dyu"=>"ヂュ", "dye"=>"ヂェ", "dyo"=>"ヂョ",
43
+ "dha"=>"デャ", "dhi"=>"ディ", "dhu"=>"デュ", "dhe"=>"デェ", "dho"=>"デョ",
44
+ "nya"=>"ニャ", "nyi"=>"ニィ", "nyu"=>"ニュ", "nye"=>"ニェ", "nyo"=>"ニョ",
45
+ "hya"=>"ヒャ", "hyi"=>"ヒィ", "hyu"=>"ヒュ", "hye"=>"ヒェ", "hyo"=>"ヒョ",
46
+ "bya"=>"ビャ", "byi"=>"ビィ", "byu"=>"ビュ", "bye"=>"ビェ", "byo"=>"ビョ",
47
+ "pya"=>"ピャ", "pyi"=>"ピィ", "pyu"=>"ピュ", "pye"=>"ピェ", "pyo"=>"ピョ",
48
+ "mya"=>"ミャ", "myi"=>"ミィ", "myu"=>"ミュ", "mye"=>"ミェ", "myo"=>"ミョ",
49
+ "rya"=>"リャ", "ryi"=>"リィ", "ryu"=>"リュ", "rye"=>"リェ", "ryo"=>"リョ",
50
+ "lya"=>"リャ", "lyi"=>"リィ", "lyu"=>"リュ", "lye"=>"リェ", "lyo"=>"リョ"
51
+ }
52
+
53
+ KANA2ROMAJI = {
54
+ 'ア' => ['a'], 'イ' => ['i'], 'ウ' => ['u'], 'エ' => ['e'], 'オ' => ['o'],
55
+ 'カ' => ['ka', 'ca'], 'キ' => ['ki'], 'ク' => ['ku'], 'ケ' => ['ke'], 'コ' => ['ko', 'co'],
56
+ 'サ' => ['sa'], 'シ' => ['shi', 'si'], 'ス' => ['su'], 'セ' => ['se'], 'ソ' => ['so'],
57
+ 'タ' => ['ta'], 'チ' => ['chi', 'ti', 'ci'], 'ツ' => ['tsu', 'tu'], 'テ' => ['te'], 'ト' => ['to'],
58
+ 'ナ' => ['na'], 'ニ' => ['ni'], 'ヌ' => ['nu'], 'ネ' => ['ne'], 'ノ' => ['no'],
59
+ 'ハ' => ['ha'], 'ヒ' => ['hi'], 'フ' => ['fu', 'hu'], 'ヘ' => ['he'], 'ホ' => ['ho'],
60
+ 'マ' => ['ma'], 'ミ' => ['mi'], 'ム' => ['mu'], 'メ' => ['me'], 'モ' => ['mo'],
61
+ 'ヤ' => ['ya'], 'ユ' => ['yu'], 'ヨ' => ['yo'],
62
+ 'ラ' => ['ra'], 'リ' => ['ri'], 'ル' => ['ru'], 'レ' => ['re'], 'ロ' => ['ro'],
63
+ 'ワ' => ['wa'], 'ヲ' => ['wo'], 'ー' => ['-'],
64
+ 'ガ' => ['ga'], 'ギ' => ['gi'], 'グ' => ['gu'], 'ゲ' => ['ge'], 'ゴ' => ['go'],
65
+ 'ザ' => ['za'], 'ジ' => ['ji', 'zi'], 'ズ' => ['zu'], 'ゼ' => ['ze'], 'ゾ' => ['zo'],
66
+ 'ダ' => ['da'], 'ヂ' => ['di'], 'ヅ' => ['du'], 'デ' => ['de'], 'ド' => ['do'],
67
+ 'バ' => ['ba'], 'ビ' => ['bi'], 'ブ' => ['bu'], 'ベ' => ['be'], 'ボ' => ['bo'],
68
+ 'パ' => ['pa'], 'ピ' => ['pi'], 'プ' => ['pu'], 'ペ' => ['pe'], 'ポ' => ['po'],
69
+ 'キャ' => ['kya'], 'キュ' => ['kyu'], 'キェ' => ['kye'], 'キョ' => ['kyo'],
70
+ 'ギャ' => ['gya'], 'ギュ' => ['gyu'], 'ギェ' => ['gye'], 'ギョ' => ['gyo'],
71
+ 'シャ' => ['sha', 'sya'], 'シュ' => ['shu', 'syu'], 'シェ' => ['she', 'sye'], 'ショ' => ['sho', 'syo'],
72
+ 'ジャ' => ['ja', 'jya', 'zya'], 'ジュ' => ['ju', 'jyu', 'zyu'], 'ジェ' => ['je', 'jye', 'zye'], 'ジョ' => ['jo', 'jyo', 'zyo'],
73
+ 'チャ' => ['cha', 'cya', 'tya'], 'チュ' => ['chu', 'cyu', 'tyu'], 'チェ' => ['che', 'cye', 'tye'], 'チョ' => ['cho', 'cyo', 'tyo'],
74
+ 'ヒャ' => ['hya'], 'ヒュ' => ['hyu'], 'ヒェ' => ['hye'], 'ヒョ' => ['hyo'],
75
+ 'ピャ' => ['pya'], 'ピュ' => ['pyu'], 'ピェ' => ['pye'], 'ピョ' => ['pyo'],
76
+ 'ファ' => ['fa'], 'フィ' => ['fi'], 'フェ' => ['fe'], 'フォ' => ['fo'],
77
+ 'ヴァ' => ['va'], 'ヴィ' => ['vi'], 'ヴェ' => ['ve'], 'ヴォ' => ['fo'],
78
+ }
79
+ end
@@ -0,0 +1,4 @@
1
+ # coding: utf-8
2
+
3
+ require 'romaji/string_extension'
4
+ String.send(:include, ::Romaji::StringExtension)
@@ -0,0 +1,30 @@
1
+ # coding: utf-8
2
+ #
3
+ module Romaji
4
+ module StringExtension
5
+ def normalize
6
+ Romaji.normalize(self)
7
+ end
8
+
9
+ def normalize!
10
+ self.replace(self.normalize)
11
+ end
12
+
13
+ def kana
14
+ Romaji.romaji2kana(self.normalize)
15
+ end
16
+
17
+ def kana!
18
+ self.replace(self.kana)
19
+ end
20
+
21
+ def romaji
22
+ Romaji.kana2romaji(self.normalize)
23
+ end
24
+
25
+ def romaji!
26
+ self.replace(self.romaji)
27
+ end
28
+ end
29
+ end
30
+
@@ -0,0 +1,5 @@
1
+ # coding: utf-8
2
+
3
+ module Romaji
4
+ VERSION = '0.1.0'
5
+ end
data/romaji.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ $LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
3
+ require 'romaji/version'
4
+
5
+ Gem::Specification.new do |gem|
6
+ gem.authors = ['Shimpei Makimoto']
7
+ gem.email = ['makimoto@tsuyabu.in']
8
+ gem.description = 'Yet another Romaji-Kana transliterator'
9
+ gem.summary = 'Yet another Romaji-Kana transliterator'
10
+ gem.homepage = "https://github.com/makimoto/romaji"
11
+
12
+ gem.files = `git ls-files`.split($\)
13
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
14
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
15
+ gem.name = 'romaji'
16
+ gem.require_paths = ['lib']
17
+ gem.version = Romaji::VERSION
18
+
19
+ gem.add_dependency('rake', ['>= 0.8.0'])
20
+ gem.add_development_dependency('rspec', ['~> 2.8.0'])
21
+ gem.add_development_dependency('pry', ['>= 0'])
22
+ gem.add_development_dependency('guard', '>= 1.0.1')
23
+ gem.add_development_dependency('guard-rspec', '0.7.0')
24
+ gem.add_development_dependency('growl', '>= 1.0.3')
25
+ end
@@ -0,0 +1,94 @@
1
+ # coding: utf-8
2
+
3
+ require 'spec_helper'
4
+ require 'romaji'
5
+
6
+ describe Romaji do
7
+ context 'transliterate from romaji to kana' do
8
+ it 'should transliterate' do
9
+ Romaji.romaji2kana('kyoumoshinaitone').should == 'キョウモシナイトネ'
10
+ Romaji.romaji2kana('今日もshinaitone').should == '今日モシナイトネ'
11
+ Romaji.romaji2kana('SushiNoTabetas').should == 'スシノタベタs'
12
+ Romaji.romaji2kana('shimbashi').should == 'シンバシ'
13
+ Romaji.romaji2kana('kinkakuji').should == 'キンカクジ'
14
+ Romaji.romaji2kana('tottori').should == 'トットリ'
15
+ end
16
+
17
+ it 'should transliterate with kana_type' do
18
+ Romaji.romaji2kana('kyoumoshinaitone', :kana_type => :hiragana).should == 'きょうもしないとね'
19
+ end
20
+ end
21
+
22
+ it 'should transliterate from kana to romaji' do
23
+ Romaji.kana2romaji('キョウモシナイトネ').should == 'kyoumoshinaitone'
24
+ Romaji.kana2romaji('すしのたべたさ').should == 'sushinotabetasa'
25
+ Romaji.kana2romaji('シンバシ').should == 'shimbashi'
26
+ Romaji.kana2romaji('キンカクジ').should == 'kinkakuji'
27
+ Romaji.kana2romaji('トットリ').should == 'tottori'
28
+ end
29
+
30
+ shared_examples_for 'String extension' do
31
+ it 'should extend String#normalize' do
32
+ @kana.normalize.should == 'スシ'
33
+ @kana.should == 'スシ'
34
+
35
+ @romaji.normalize.should == 'sushi'
36
+ @romaji.should == 'sUshi'
37
+ end
38
+
39
+ it 'should extend String#normalize!' do
40
+ @kana.normalize!
41
+ @kana.should == 'スシ'
42
+
43
+ @romaji.normalize!
44
+ @romaji.should == 'sushi'
45
+ end
46
+
47
+ it 'should extend String#kana' do
48
+ @kana.kana.should == 'スシ'
49
+ @romaji.kana.should == 'スシ'
50
+ end
51
+
52
+ it 'should extend String#kana!' do
53
+ @kana.kana!
54
+ @kana.should == 'スシ'
55
+
56
+ @romaji.kana!
57
+ @romaji.should == 'スシ'
58
+ end
59
+
60
+ it 'should extend String#romaji' do
61
+ @kana.romaji.should =='sushi'
62
+ @romaji.romaji.should == 'sushi'
63
+ end
64
+
65
+ it 'should extend String#romaji!' do
66
+ @kana.romaji!
67
+ @kana.should == 'sushi'
68
+
69
+ @romaji.romaji!
70
+ @romaji.should == 'sushi'
71
+ end
72
+ end
73
+
74
+ describe Romaji::StringExtension do
75
+ before do
76
+ @kana = 'スシ'
77
+ @romaji = 'sUshi'
78
+ @kana.extend(Romaji::StringExtension)
79
+ @romaji.extend(Romaji::StringExtension)
80
+ end
81
+
82
+ it_behaves_like 'String extension'
83
+ end
84
+
85
+ describe 'romaji/core_ext/string' do
86
+ require 'romaji/core_ext/string'
87
+ before do
88
+ @kana = 'スシ'
89
+ @romaji = 'sUshi'
90
+ end
91
+
92
+ it_behaves_like 'String extension'
93
+ end
94
+ end
@@ -0,0 +1,8 @@
1
+ # coding: utf-8
2
+
3
+ require 'bundler'
4
+ Bundler.setup(:default, :development)
5
+
6
+ RSpec.configure do |config|
7
+ end
8
+
metadata ADDED
@@ -0,0 +1,174 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: romaji
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Shimpei Makimoto
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2012-04-03 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rake
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 63
29
+ segments:
30
+ - 0
31
+ - 8
32
+ - 0
33
+ version: 0.8.0
34
+ type: :runtime
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ~>
43
+ - !ruby/object:Gem::Version
44
+ hash: 47
45
+ segments:
46
+ - 2
47
+ - 8
48
+ - 0
49
+ version: 2.8.0
50
+ type: :development
51
+ version_requirements: *id002
52
+ - !ruby/object:Gem::Dependency
53
+ name: pry
54
+ prerelease: false
55
+ requirement: &id003 !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ hash: 3
61
+ segments:
62
+ - 0
63
+ version: "0"
64
+ type: :development
65
+ version_requirements: *id003
66
+ - !ruby/object:Gem::Dependency
67
+ name: guard
68
+ prerelease: false
69
+ requirement: &id004 !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ hash: 21
75
+ segments:
76
+ - 1
77
+ - 0
78
+ - 1
79
+ version: 1.0.1
80
+ type: :development
81
+ version_requirements: *id004
82
+ - !ruby/object:Gem::Dependency
83
+ name: guard-rspec
84
+ prerelease: false
85
+ requirement: &id005 !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - "="
89
+ - !ruby/object:Gem::Version
90
+ hash: 3
91
+ segments:
92
+ - 0
93
+ - 7
94
+ - 0
95
+ version: 0.7.0
96
+ type: :development
97
+ version_requirements: *id005
98
+ - !ruby/object:Gem::Dependency
99
+ name: growl
100
+ prerelease: false
101
+ requirement: &id006 !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ hash: 17
107
+ segments:
108
+ - 1
109
+ - 0
110
+ - 3
111
+ version: 1.0.3
112
+ type: :development
113
+ version_requirements: *id006
114
+ description: Yet another Romaji-Kana transliterator
115
+ email:
116
+ - makimoto@tsuyabu.in
117
+ executables: []
118
+
119
+ extensions: []
120
+
121
+ extra_rdoc_files: []
122
+
123
+ files:
124
+ - .rspec
125
+ - .travis.yml
126
+ - Gemfile
127
+ - Guardfile
128
+ - LICENSE
129
+ - README.md
130
+ - Rakefile
131
+ - lib/romaji.rb
132
+ - lib/romaji/constants.rb
133
+ - lib/romaji/core_ext/string.rb
134
+ - lib/romaji/string_extension.rb
135
+ - lib/romaji/version.rb
136
+ - romaji.gemspec
137
+ - spec/romaji_spec.rb
138
+ - spec/spec_helper.rb
139
+ homepage: https://github.com/makimoto/romaji
140
+ licenses: []
141
+
142
+ post_install_message:
143
+ rdoc_options: []
144
+
145
+ require_paths:
146
+ - lib
147
+ required_ruby_version: !ruby/object:Gem::Requirement
148
+ none: false
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ hash: 3
153
+ segments:
154
+ - 0
155
+ version: "0"
156
+ required_rubygems_version: !ruby/object:Gem::Requirement
157
+ none: false
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ hash: 3
162
+ segments:
163
+ - 0
164
+ version: "0"
165
+ requirements: []
166
+
167
+ rubyforge_project:
168
+ rubygems_version: 1.8.17
169
+ signing_key:
170
+ specification_version: 3
171
+ summary: Yet another Romaji-Kana transliterator
172
+ test_files:
173
+ - spec/romaji_spec.rb
174
+ - spec/spec_helper.rb