catspeak 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore CHANGED
@@ -2,3 +2,4 @@
2
2
  .bundle
3
3
  Gemfile.lock
4
4
  pkg/*
5
+ *.tmp
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.authors = ["erinata"]
9
9
  s.email = ["erinata@gmail.com"]
10
10
  s.homepage = ""
11
- s.summary = %q{Catspeak provides translation between English and Cats' language}
11
+ s.summary = %q{Catspeak provides translation between Human Language and Cats' language}
12
12
  s.description = %q{You can view it as some kind of encryption and decrpytion gem........... but cats do speak.}
13
13
  # TODO: write better description
14
14
  s.rubyforge_project = "catspeak"
@@ -16,6 +16,9 @@ module Catspeak
16
16
  human_to_cat(@name,statement)
17
17
  end
18
18
 
19
+ def hear(statement = '')
20
+ cat_to_human(@name,statement)
21
+ end
19
22
 
20
23
  end
21
24
 
@@ -10,8 +10,7 @@ module Translator
10
10
  #number_text = Zlib::deflate(number_text, 1)
11
11
  number_text = number_text.bytes.to_a
12
12
  number_text
13
- end
14
-
13
+ end
15
14
 
16
15
  def number_to_human(name, number_text)
17
16
  human_text = ''
@@ -27,50 +26,108 @@ module Translator
27
26
  module CatLang
28
27
  include NumberLang
29
28
 
30
- def cat_char
31
- 'M'
32
- end
29
+ def cat_char_dict
30
+ [
31
+ 'MEOW','MeOW','MEoW','MEOw','MEow','MeOw','MeoW','Meow', #8
32
+ 'mEOW','meOW','mEoW','mEOw','mEow','meOw','meoW','meow', #16
33
+ 'MEOU','MeOU','MEoU','MEOu','MEou','MeOu','MeoU','Meou', #24
34
+ 'mEOU','meOU','mEoU','mEOu','mEou','meOu','meoU','meou', #32
35
+ 'MEO' ,'MEo' ,'MeO' ,'Meo' ,'mEO' ,'mEo' ,'meO' ,'meo' , #40
36
+ 'MAOW','MaOW','MAoW','MAOw','MAow','MaOw','MaoW','Maow', #48
37
+ 'mAOW','maOW','mAoW','mAOw','mAow','maOw','maoW','maow', #56
38
+ 'MAOU','MaOU','MAoU','MAOu','MAou','MaOu','MaoU','Maou', #64
39
+ 'mAOU','maOU','mAoU','mAOu','mAou','maOu','maoU','maou', #72
40
+ 'MAO' ,'MAo' ,'MaO' ,'Mao' ,'mAO' ,'mAo' ,'maO' ,'mao' , #80
41
+ 'MIAO','MIaO','MIAo','MiAO','MiAo','MiaO','MIao','Miao', #88
42
+ 'mIAO','mIaO','mIAo','miAO','miAo','miaO','mIao','miao', #96
43
+ 'MIA' ,'MIa' ,'MiA' ,'Mia' ,'mIA' ,'mIa' ,'miA' ,'mia' , #104
44
+ 'ME' ,'Me' ,'mE' ,'me' ,'MA' ,'Ma' ,'mA' ,'ma' , #112
45
+ 'MW' ,'Mw' ,'mW' ,'mw' ,'MU' ,'Mu' ,'mU' ,'mu' , #120
46
+ 'MI' ,'Mi' ,'mI' ,'mi' ,'MM' ,'Mm' ,'mM' ,'mm' , #128
47
+ 'MEE' ,'MEe' ,'MeE' ,'Mee' ,'mEE' ,'mEe' ,'meE' ,'mee' , #136
48
+ 'MAW' ,'MAw' ,'MaW' ,'Maw' ,'mAW' ,'mAw' ,'maW' ,'maw' , #144
49
+ 'EE' ,'Ee' ,'eE' ,'ee' ,'II' ,'Ii' ,'iI' ,'ii' , #152
50
+ 'I' ,'i' ,'E' ,'e' ,'M' ,'m' ,'A' ,'a' , #160
51
+ 'MOW' ,'MoW' ,'MOw' ,'Mow' ,'mOW' ,'moW' ,'mOw' ,'mow' , #168
52
+ 'MImi','Mimi','mImi','mimi','MIMi','MiMi','mIMi','miMi', #176
53
+ 'MImI','MimI','mImI','mimI','MIMI','MiMI','mIMI','miMI', #184
54
+ 'MEA' ,'MEa' ,'MeA' ,'Mea' ,'mEA' ,'mEa' ,'meA' ,'mea' , #192
55
+ 'MIU' ,'MIu' ,'MiU' ,'Miu' ,'mIU' ,'mIu' ,'miU' ,'miu' , #200
56
+ 'MAAO','MAAo','MaAO','MaAo','mAAO','mAAo','maAO','maAo', #208
57
+ 'MAaO','MAao','MaaO','Maao','mAaO','mAao','maaO','maao', #216
58
+ 'MEAO','MEaO','MEAo','MeAO','MeAo','MeaO','MEao','Meao', #224
59
+ 'mEAO','mEaO','mEAo','meAO','meAo','meaO','mEao','meao', #232
60
+ 'MOO' ,'MOo' ,'MoO' ,'Moo' ,'mOO' ,'mOo' ,'moO' ,'moo' , #240
61
+ 'UM' ,'Um' ,'uM' ,'um' ,'MUM' ,'Mum' ,'mum' ,'MeeoW', #248
62
+ 'MEU' ,'Meu' ,'meu' ,'MEW' ,'Mew' ,'mew' ,'Meeow','meeow' #256
63
+
64
+ ]
65
+ end
33
66
 
34
- def cat_dict
35
- [ ' ',
36
- 'eow' ,'eou' ,'e' ,'ow' ,'ew' ,'eu' ,'eeu' ,'eew' ,'eow!' ,'eou!' ,
37
- 'eow ' ,'eou ' ,'e ' ,'ow ' ,'ew ' ,'eu ' ,'eeu ' ,'eew ' ,' ' ,' ' ,
38
- 'e!' ,'ow!' ,'ew!' ,'' ,'eew!' ,'m ' ,'mm~' ,'mm? ' ,'mm?? ' ,'m?!' ,
39
- 'eow! ' ,'eou! ' ,'e! ' ,'ow! ' ,'ew! ' ,'eu! ' ,'eeu! ' ,'eew! ' ,'~~~' ,'~~~ ' ,
40
- 'eow^' ,'eou^' ,'e^' ,'^' ,'ew^' ,'eu^' ,'eeu^' ,'eew^' ,'eow^ ' ,'e^ ' ,
41
- 'eow~' ,'eeow~' ,'eou~' ,'e~' ,'~' ,'ew~' ,'eu~' ,'eeu~' ,'eew~' ,'w' ,
42
- 'ow^ ' ,'ew^ ' ,'eu^ ' ,'eeu^ ' ,'eew^ ' ,'^^' ,'^^ ' ,'o^^' ,'e^^' ,'a^^' ,
43
- '?' ,'ow~' ,'~~' , '??' , '~~ ' ,'?? ' ,'?!' ,'?! ' ,'!?' ,'!? ' ,
44
- 'me' ,'m' ,'me ' ,'o~' ,'-' ,'- ' ,'--' ,'-- ' ,'o~~' ,'eo~~' ,
45
- 'oo' ,'oe' ,'eo' ,'ou' ,'u' ,'uu' ,'ee' ,'eee' ,'a' ,'ea' ,
46
- 'oo ' ,'oe ' ,'eo ' ,'ou ' ,'u ' ,'uu ' ,'ee ' ,'eee ' ,'a ' ,'ea ' ,
47
- 'oo!' ,'oe!' ,'eo!' ,'ou!' ,'u!' ,'uu!' ,'ee!' ,'eee!' ,'a!' ,'ea!' ,
48
- 'oo! ' ,'oe! ' ,'eo! ' ,'ou! ' ,'u! ' ,'uu! ' ,'ee! ' ,'eee! ' ,'a! ' ,'ea! ' ,
49
- 'oo^' ,'ee^' ,'eee^' ,'a^' ,'ea^' ,'oo^ ' ,'ee^ ' ,'eee^ ' ,'a^ ' ,'ea^ ' ,
50
- 'oo~' ,'ee~' ,'eee~' ,'a~' ,'ea~' ,'aao' ,'aao!' ,'aao!! ' ,'meow' ,'meow ' ,
51
- 'eow ' ,'eow! ' ,'eow^ ' ,'eou ' ,'eou! ' ,'eou^ ' ,'ow^' ,'!' ,'! ' ,'^ ' ,
52
- 'eeou' ,'eeou!' ,'eeou~' ,'eeou?' ,'eea' ,'eea!' ,'eea?' , 'a?' ,'a? ' ,'a!?' ,
53
- 'eow!!' ,'eow!! ' ,'eow!!!' ,'eow!!! ' ,'eow^^' ,'eow^^ ' ,'e!!' ,'e!! ' ,'e!!!' ,'e!!! ' ,
54
- 'eoW' ,'eoW ' ,'eoW!' ,'eoW! ' ,'eoW!!' ,'eoW!! ' ,'eoW?' ,'eoW? ' ,'eoW^' ,'eoW^ ' ,
55
- 'EOW' ,'EOW ' ,'EOW!' ,'EOW! ' ,'EOW!!' ,'EOW!! ' ,'EOW!!!','EOW!!! ','EEOW' , 'EEOW!',
56
- 'EEOW ' , 'EEOW! ','EEOW!!' ,'EEOW!! ' ,'eow?!' , 'eow!?' ,'eow?! ', 'eow!? ','eoW!?' ,'eoW?!' ,
57
- 'E' ,'EE' ,'EEE' ,'E! ' ,'EE! ' ,'eeOW' ,'eeOW ' ,'eeOW!' ,'eeOW! ' ,'O!' ,
58
- 'eeeeOW','eeeeOW!','OO!' ,'OO!!' ,'OO! ' ,'OO!! ' ,'eoW!? ','eoW?! ' ,'e~~' ,'ea~~' ,
59
- 'ao' ,'ao ' ,'ao!' ,'ao! ' ,'ao^' ,'ao^ ' ,'AO' ,'AO!' ,'AO ' ,'AO! ' ,
60
- 'i' ,'i ' ,'i~' ,'i?' ,'i^' ,'i^ ' ,'i? ' ,'i~~' ,'ii' ,'ii~' ,
61
- 'i-' ,'o^' ,'o' ,'mm' ,'mw']
67
+ def cat_tone_dict
68
+ [
69
+ ' ' ,' ' ,'!!~' ,'~!!','~??','?~?','!~!',
70
+ '.' ,'. ' ,'...' ,'??~p',
71
+ '^','^^','^ ','^^ ','~^','~^ ','~~^','~~^ ','~~?','~~? ','~~!','~~! ',
72
+ ' ~~^',' ~~^ ',' ~~?',' ~~? ',' ~~!',' ~~! ',' ~^',' ~^ ',
73
+ '! ','~ ','- ','? ','. ',
74
+ ' !',' ~',' -',' ?',' .',
75
+ ' ! ',' ~ ',' - ',' ? ',' . ',
76
+ '!' ,'!!' ,'!!!' ,'!!!!','! ' ,'!! ' ,'!!! ' ,'!!!! ',
77
+ '~' ,'~~' ,'~~~' ,'~~~~','~ ' ,'~~ ' ,'~~~ ' ,'~~~~ ',
78
+ '-' ,'--' ,'---' ,'----','- ' ,'-- ' ,'--- ' ,'---- ',
79
+ '?' ,'??' ,'???' ,'????','? ' ,'?? ' ,'??? ' ,'???? ',
80
+ "!!!?", "!!?!", "!!??", "!?!!", "!?!?", "!??!", "!???",
81
+ "?!!!", "?!!?", "?!?!", "?!??", "??!!", "??!?", "???!",
82
+ "!!!? ", "!!?! ", "!!?? ", "!?!! ", "!?!? ", "!??! ", "!??? ",
83
+ "?!!! ", "?!!? ", "?!?! ", "?!?? ", "??!! ", "??!? ", "???! ",
84
+ "~~~?", "~~?~", "~~??", "~?~~", "~?~?", "~??~", "~???",
85
+ "?~~~", "?~~?", "?~?~", "?~??", "??~~", "??~?", "???~",
86
+ "~~~? ", "~~?~ ", "~~?? ", "~?~~ ", "~?~? ", "~??~ ", "~??? ",
87
+ "?~~~ ", "?~~? ", "?~?~ ", "?~?? ", "??~~ ", "??~? ", "???~ ",
88
+ "~~~!", "~~!~", "~~!!", "~!~~", "~!~!", "~!!~", "~!!!",
89
+ "!~~~", "!~~!", "!~!~", "!~!!", "!!~~", "!!~!", "!!!~",
90
+ "~~~! ", "~~!~ ", "~~!! ", "~!~~ ", "~!~! ", "~!!~ ", "~!!! ",
91
+ "!~~~ ", "!~~! ", "!~!~ ", "!~!! ", "!!~~ ", "!!~! ", "!!!~ ",
92
+ "---?", "--?-", "--??", "-?--", "-?-?", "-??-", "-???",
93
+ "?---", "?--?", "?-?-", "?-??", "??--", "??-?", "???-",
94
+ "---? ", "--?- ", "--?? ", "-?-- ", "-?-? ", "-??- ", "-??? ",
95
+ "?--- ", "?--? ", "?-?- ", "?-?? ", "??-- ", "??-? ", "???- ",
96
+ "---!", "--!-", "--!!", "-!--", "-!-!", "-!!-", "-!!!",
97
+ "!---", "!--!", "!-!-", "!-!!", "!!--", "!!-!", "!!!-",
98
+ "---! ", "--!- ", "--!! ", "-!-- ", "-!-! ", "-!!- ", "-!!! ",
99
+ "!--- ", "!--! ", "!-!- ", "!-!! ", "!!-- ", "!!-! ", "!!!- ",
100
+ '=(>.<)=', '-(>.<)-','=(".")=','-(".")-',"=('.')=","-('.')-",
101
+ '\(>.<)/', '\(".")/','=(^.^)=','-(^.^)-','\(^.^)/','=(*.*)=',
102
+ '-(*.*)-', '\(*.*)/','=(`.`)=','-(`.`)-','\(`.`)/','=(-.-)=','\(-.-)/',
103
+ '=(>.<)= ', '-(>.<)- ','=(".")= ','-(".")- ',"=('.')= ","-('.')- ",
104
+ '\(>.<)/ ', '\(".")/ ','=(^.^)= ','-(^.^)- ','\(^.^)/ ','=(*.*)= ',
105
+ '-(*.*)- ', '\(*.*)/ ','=(`.`)= ','-(`.`)- ','\(`.`)/ ','=(-.-)= ','\(-.-)/ '
106
+ ]
107
+
62
108
  end
63
109
 
64
110
  def number_to_cat(number_text)
65
111
  cat_text = ''
66
- number_text.each {|i| cat_text = cat_text + cat_char + cat_dict[i] }
112
+ number_text.length.times do |i|
113
+ if (i.even?)
114
+ cat_text = cat_text + cat_char_dict[number_text[i]]
115
+ else
116
+ cat_text = cat_text + cat_tone_dict[number_text[i]]
117
+ end
118
+ end
67
119
  cat_text
68
120
  end
69
121
 
70
122
  def cat_to_number(cat_text)
71
- number_text = cat_text.split(cat_char)
72
- number_text.delete_at(0)
73
- number_text.each_index {|i| number_text[i] = cat_dict.index(number_text[i])}
123
+ number_text = decompose(cat_text)
124
+ number_text.each_index do |i|
125
+ if (i.even?)
126
+ number_text[i] = cat_char_dict.index(number_text[i])
127
+ else
128
+ number_text[i] = cat_tone_dict.index(number_text[i])
129
+ end
130
+ end
74
131
  number_text
75
132
  end
76
133
 
@@ -84,5 +141,24 @@ module Translator
84
141
  number_to_human(name, number_text)
85
142
  end
86
143
 
144
+ def decompose(statement)
145
+ a1 = statement.split(/\W+/)
146
+ a2 = statement.split(/\w+/)
147
+ a2.delete_at(0)
148
+ a2.each_index do |i|
149
+ a1.insert(2*i+1,a2[i])
150
+ end
151
+ a1
152
+
153
+ #a3 = []
154
+ #a1.each_index do |i|
155
+ # a3 = a3+Array.new(1,a1[i])
156
+ # if (!a2[i].nil?)
157
+ # a3 = a3+Array.new(1,a2[i])
158
+ # end
159
+ #end
160
+ #a3
161
+ end
162
+
87
163
  end
88
164
  end
@@ -1,3 +1,3 @@
1
1
  module Catspeak
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -13,8 +13,12 @@ describe 'Cat' do
13
13
  Catspeak::Cat.new('Kitty').should respond_to :speak
14
14
  end
15
15
 
16
- it "should speak something meaningful" do
17
- Catspeak::Cat.new('Kitty').speak('Hello').should == 'Me!M Mow^Mu!Mow~MEOW!!!Me~~Ma'
16
+ it "should speak in cat lang" do
17
+ Catspeak::Cat.new('Kitty').speak('Hello').should == 'MM M^Mu!M~MEOW!!!Mi? Ma'
18
+ end
19
+
20
+ it "should understand cat lang" do
21
+ Catspeak::Cat.new('Kitty').hear('MM M^Mu!M~MEOW!!!Mi? Ma').should == 'Hello'
18
22
  end
19
23
 
20
24
  end
@@ -17,30 +17,47 @@ describe "CatLang" do
17
17
  include Translator::CatLang
18
18
 
19
19
  it "should translate cat lang to number lang" do
20
- cat_to_number('Mea!MeowMaao!').should == [120, 1, 147]
20
+ cat_to_number('MI ee').should == [120, 1, 147]
21
21
  end
22
22
 
23
23
  it "should translate number lang to cat lang" do
24
- number_to_cat([120, 1, 147]).should == 'Mea!MeowMaao!'
24
+ number_to_cat([120, 1, 147]).should == 'MI ee'
25
25
  end
26
26
 
27
27
  it "should translate human lang to cat lang" do
28
- human_to_cat("Kitty","Hello").should == 'MM M^Mu!M~MEOW!!!Mi? Ma'
28
+ human_to_cat("Kitty","Hello").should == 'mEOU MAow?~?~maow!---MeeoW?!!! '
29
29
  end
30
30
 
31
31
  it "should translate cat lang to human lang" do
32
- cat_to_human("Kitty",'MM M^Mu!M~MEOW!!!Mi? Ma').should == "Hello"
32
+ cat_to_human("Kitty",'mEOU MAow?~?~maow!---MeeoW?!!! ').should == "Hello"
33
33
  end
34
34
 
35
35
  it "should be consistent in translating betwen cat and human lang" do
36
36
  cat_to_human("Kitty", human_to_cat("Kitty",'How are you doing?')).should == 'How are you doing?'
37
37
  end
38
38
 
39
- it "should have dictionary with length 256" do
40
- cat_dict.length.should eq(256)
39
+ it "should have char dictionary with length 256" do
40
+ cat_char_dict.length.should eq(256)
41
41
  end
42
42
 
43
- it "should have dictionary with unique words" do
44
- cat_dict.uniq.should eq(cat_dict)
43
+ it "should have char dictionary with unique words" do
44
+ cat_char_dict.uniq.should eq(cat_char_dict)
45
45
  end
46
+
47
+ it "should have tone dictionary with length 256" do
48
+ cat_tone_dict.length.should eq(256)
49
+ end
50
+
51
+ it "should have tone dictionary with unique words" do
52
+ cat_tone_dict.uniq.should eq(cat_tone_dict)
53
+ end
54
+
55
+ it "should decompose array correctly" do
56
+ decompose('Meow!!Mea ? Mi^^ Moo~~~Meow~Maao ***').should == ['Meow','!!','Mea',' ? ','Mi','^^ ','Moo','~~~','Meow','~','Maao',' ***']
57
+ end
58
+
59
+ it "should decompose array with odd index correctly" do
60
+ decompose('Meow!!Mea ? Mi^^ Moo~~~Meow~Maao').should == ['Meow','!!','Mea',' ? ','Mi','^^ ','Moo','~~~','Meow','~','Maao']
61
+ end
62
+
46
63
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: catspeak
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-25 00:00:00.000000000 Z
12
+ date: 2012-03-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &25745700 !ruby/object:Gem::Requirement
16
+ requirement: &25494168 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *25745700
24
+ version_requirements: *25494168
25
25
  description: You can view it as some kind of encryption and decrpytion gem...........
26
26
  but cats do speak.
27
27
  email:
@@ -66,5 +66,5 @@ rubyforge_project: catspeak
66
66
  rubygems_version: 1.8.17
67
67
  signing_key:
68
68
  specification_version: 3
69
- summary: Catspeak provides translation between English and Cats' language
69
+ summary: Catspeak provides translation between Human Language and Cats' language
70
70
  test_files: []