catspeak 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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: []