caius-gtranslate 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
data/Changelog.md ADDED
@@ -0,0 +1,28 @@
1
+ # GTranslate Changelog
2
+
3
+ ## v 0.9.0 (2009-02-15)
4
+
5
+ Added String and Array extensions.
6
+
7
+ ## v 0.8.8 (2009-02-14)
8
+
9
+ Added specs.
10
+ Renamed to "gtranslate" for requiring purposes.
11
+
12
+ ## v 0.7.0 (2009-02-14)
13
+
14
+ Converted into a rubygem.
15
+
16
+ ## v0.6.0 (2009-01-12)
17
+
18
+ Added to_english using language detection (thanks to James Rose)
19
+
20
+ ## v0.5.0 (2009-01-04)
21
+
22
+ Added lang_code to return the short code for a language.
23
+ Added the ability to use en_to_fr instead of english_to_french
24
+ Updated Examples accordingly.
25
+
26
+ ## v0.4.0 (2009-01-04)
27
+
28
+ Initial Release
data/Rakefile ADDED
@@ -0,0 +1,20 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'echoe'
4
+
5
+ Echoe.new('gtranslate', '0.9.1') do | config |
6
+ config.description = <<-EOF
7
+ GTranslate uses the Google translate API to translate a phrase from one language to another.
8
+ EOF
9
+ config.summary = "Translates a phrase from one language to another"
10
+ config.url = 'http://github.com/caius/gtranslate'
11
+ config.author = 'Caius Durling'
12
+ config.email = 'dev@caius.name'
13
+ config.ignore_pattern = ['tmp/*', 'script/*']
14
+ config.development_dependencies = ["httparty"]
15
+
16
+ end
17
+
18
+ Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each do | rake_file |
19
+ load rake_file
20
+ end
data/Readme.md ADDED
@@ -0,0 +1,39 @@
1
+ # GTranslate
2
+
3
+ Library that wraps the Google Translate API. Translates a phrase from one language to another.
4
+
5
+
6
+ ## Install
7
+
8
+ gem install caius-gtranslate --source http://gems.github.com
9
+
10
+
11
+ ## Usage
12
+
13
+ Fairly simple to use. Run `rake doc` for full examples.
14
+
15
+ Google::Translate.english_to_french( "Hello" ) # => "Bonjour"
16
+
17
+ You can use language detection too:
18
+
19
+ Google::Translate.to_english( "Bonjour" ) # => "Hello"
20
+
21
+ You can replace `Translate` with `Tr` for brevity as well
22
+
23
+ Google::Tr.english_to_french( "Hello" ) # => "Bonjour"
24
+
25
+
26
+ ## Licence
27
+
28
+ Licenced under the MIT Licence
29
+
30
+ Copyright (c) 2008 Caius Durling
31
+ Portions Copyright (c) 2008 James Rose
32
+
33
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
34
+
35
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
36
+
37
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
38
+
39
+ See <http://www.caius.name/> for contact details.
data/bin/gtranslate ADDED
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Translates a phrase into another language
4
+ #
5
+
6
+ =begin
7
+
8
+ `gtranslate french "Hello"` # => "Bonjour"
9
+ `gtranslate fr Hello # => "Bonjour"
10
+
11
+ =end
12
+ require "rubygems"
13
+ require "gtranslate"
14
+
15
+ def usage
16
+ puts "USAGE: gtranslate <language_to> <phrase>"
17
+ end
18
+
19
+ if ARGV.size != 2
20
+ usage
21
+ exit!
22
+ end
23
+
24
+ to, phrase = ARGV
25
+
26
+ unless Google::Translate.valid_lang?(to)
27
+ usage
28
+ exit!
29
+ end
30
+
31
+ puts "Translating '#{phrase}' to #{to}"
32
+ puts Google::Translate.send("to_#{to}".to_sym, phrase)
@@ -0,0 +1,173 @@
1
+ # Languages available for translation
2
+ ---
3
+ :swedish: sv
4
+ :cs: cs
5
+ :mongolian: mn
6
+ :icelandic: is
7
+ :uighur: ug
8
+ :ru: ru
9
+ :ky: ky
10
+ :gl: gl
11
+ :bn: bn
12
+ :tg: tg
13
+ :afrikaans: af
14
+ :ne: ne
15
+ :inuktitut: iu
16
+ :dhivehi: dv
17
+ :serbian: sr
18
+ :german: de
19
+ :bulgarian: bg
20
+ :latvian: lv
21
+ :tagalog: tl
22
+ :oriya: or
23
+ :it: it
24
+ :nl: nl
25
+ :sq: sq
26
+ :sd: sd
27
+ :lt: lt
28
+ :el: el
29
+ :my: my
30
+ :thai: th
31
+ :ps: ps
32
+ :esperanto: eo
33
+ :arabic: ar
34
+ :kannada: kn
35
+ :id: id
36
+ :slovak: sk
37
+ :malay: ms
38
+ :gujarati: gu
39
+ :cherokee: chr
40
+ :bo: bo
41
+ :polish: pl
42
+ :kk: kk
43
+ :et: et
44
+ :hy: hy
45
+ :sl: sl
46
+ :chinese_simplified: zh-CN
47
+ :ml: ml
48
+ :iw: iw
49
+ :uk: uk
50
+ :punjabi: pa
51
+ :korean: ko
52
+ :finnish: fi
53
+ :basque: eu
54
+ :swahili: sw
55
+ :marathi: mr
56
+ :hungarian: hu
57
+ :hr: hr
58
+ :uzbek: uz
59
+ :ro: ro
60
+ :be: be
61
+ :ku: ku
62
+ :fr: fr
63
+ :sv: sv
64
+ :is: is
65
+ :danish: da
66
+ :mn: mn
67
+ :ug: ug
68
+ :sanskrit: sa
69
+ :laothian: lo
70
+ :georgian: ka
71
+ :bihari: bh
72
+ :tamil: ta
73
+ :norwegian: "no"
74
+ :dv: dv
75
+ :af: af
76
+ :iu: iu
77
+ :sr: sr
78
+ :lv: lv
79
+ :de: de
80
+ :bg: bg
81
+ :telugu: te
82
+ :or: or
83
+ :japanese: ja
84
+ :english: en
85
+ :amharic: am
86
+ :sinhalese: si
87
+ :catalan: ca
88
+ :macedonian: mk
89
+ :guarani: gn
90
+ :th: th
91
+ :persian: fa
92
+ :kn: kn
93
+ :eo: eo
94
+ :ar: ar
95
+ :sk: sk
96
+ :ms: ms
97
+ :gu: gu
98
+ :chinese: zh
99
+ :turkish: tr
100
+ :pl: pl
101
+ :azerbaijani: az
102
+ :khmer: km
103
+ :filipino: tl
104
+ :spanish: es
105
+ :hindi: hi
106
+ :chinese_traditional: zh-TW
107
+ :maltese: mt
108
+ :urdu: ur
109
+ :pa: pa
110
+ :ko: ko
111
+ :fi: fi
112
+ :eu: eu
113
+ :sw: sw
114
+ :mr: mr
115
+ :hu: hu
116
+ :czech: cs
117
+ :uz: uz
118
+ :russian: ru
119
+ :galician: gl
120
+ :bengali: bn
121
+ :kyrgyz: ky
122
+ :tajik: tg
123
+ :nepali: ne
124
+ :indonesian: id
125
+ :da: da
126
+ :vietnamese: vi
127
+ :sa: sa
128
+ :bh: bh
129
+ :lo: lo
130
+ :ka: ka
131
+ :ta: ta
132
+ :no: "no"
133
+ :italian: it
134
+ :dutch: nl
135
+ :albanian: sq
136
+ :tr: tr
137
+ :sindhi: sd
138
+ :lithuanian: lt
139
+ :greek: el
140
+ :burmese: my
141
+ :te: te
142
+ :pashto: ps
143
+ :am: am
144
+ :ja: ja
145
+ :en: en
146
+ :si: si
147
+ :gn: gn
148
+ :ca: ca
149
+ :mk: mk
150
+ :tibetan: bo
151
+ :fa: fa
152
+ :kazakh: kk
153
+ :estonian: et
154
+ :armenian: hy
155
+ :slovenian: sl
156
+ :malayalam: ml
157
+ :hebrew: iw
158
+ :zh: zh
159
+ :ukrainian: uk
160
+ :portuguese: pt-PT
161
+ :tl: tl
162
+ :az: az
163
+ :km: km
164
+ :es: es
165
+ :mt: mt
166
+ :hi: hi
167
+ :croatian: hr
168
+ :ur: ur
169
+ :romanian: ro
170
+ :kurdish: ku
171
+ :french: fr
172
+ :chr: chr
173
+ :belarusian: be
@@ -0,0 +1,36 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{gtranslate}
5
+ s.version = "0.9.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Caius Durling"]
9
+ s.date = %q{2009-02-15}
10
+ s.default_executable = %q{gtranslate}
11
+ s.description = %q{GTranslate uses the Google translate API to translate a phrase from one language to another.}
12
+ s.email = %q{dev@caius.name}
13
+ s.executables = ["gtranslate"]
14
+ s.extra_rdoc_files = ["bin/gtranslate", "lib/gtranslate/exceptions.rb", "lib/gtranslate/gtranslate.rb", "lib/gtranslate/mixins.rb", "lib/gtranslate.rb", "tasks/rspec.rake"]
15
+ s.files = ["bin/gtranslate", "Changelog.md", "data/languages.yml", "lib/gtranslate/exceptions.rb", "lib/gtranslate/gtranslate.rb", "lib/gtranslate/mixins.rb", "lib/gtranslate.rb", "Manifest", "Rakefile", "Readme.md", "spec/array_mixin_spec.rb", "spec/gtranslate_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "spec/string_mixin_spec.rb", "tasks/rspec.rake", "gtranslate.gemspec"]
16
+ s.has_rdoc = true
17
+ s.homepage = %q{http://github.com/caius/gtranslate}
18
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Gtranslate", "--main", "Readme.md"]
19
+ s.require_paths = ["lib"]
20
+ s.rubyforge_project = %q{gtranslate}
21
+ s.rubygems_version = %q{1.3.1}
22
+ s.summary = %q{Translates a phrase from one language to another}
23
+
24
+ if s.respond_to? :specification_version then
25
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
26
+ s.specification_version = 2
27
+
28
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
29
+ s.add_development_dependency(%q<httparty>, [">= 0"])
30
+ else
31
+ s.add_dependency(%q<httparty>, [">= 0"])
32
+ end
33
+ else
34
+ s.add_dependency(%q<httparty>, [">= 0"])
35
+ end
36
+ end
data/lib/gtranslate.rb ADDED
@@ -0,0 +1,17 @@
1
+ GEM_ROOT = File.expand_path(File.dirname(__FILE__) + "/../") unless Kernel.const_defined?(:GEM_ROOT)
2
+
3
+ require "yaml"
4
+ require "rubygems"
5
+ begin
6
+ require "httparty"
7
+ rescue LoadError => e
8
+ puts "You need to install the '#{e.message.scan(/-- (.*)$/).flatten.first}' gem."
9
+ exit!
10
+ end
11
+
12
+
13
+ require GEM_ROOT + "/lib/gtranslate/gtranslate"
14
+ require GEM_ROOT + "/lib/gtranslate/exceptions"
15
+
16
+ module Google
17
+ end
@@ -0,0 +1,14 @@
1
+ module Google
2
+ module Translate
3
+
4
+ class NoPhrasePassed < Exception
5
+ end
6
+
7
+ class InvalidLanguage < Exception
8
+ end
9
+
10
+ class LanguageDetectionFailed < Exception
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,70 @@
1
+ module Google
2
+ #
3
+ # Call a method of the following type:
4
+ # {language from}_to_{language to}
5
+ #
6
+ # Or to have the language from automagically detected:
7
+ # to_{language to}
8
+ #
9
+ # Eg:
10
+ # english_to_french
11
+ # to_french
12
+ #
13
+ module Translate
14
+ # Loads the lanuages in from a data file
15
+ LANGS = YAML.load_file(GEM_ROOT + "/data/languages.yml")
16
+
17
+ # Setup HTTParty stuff
18
+ include HTTParty
19
+ base_uri "http://ajax.googleapis.com/ajax/services/language/translate"
20
+ default_params :v => "1.0", :hl => "en"
21
+ format :json
22
+
23
+ # Does the magic to figure out if its a valid call or not
24
+ def self.method_missing(method, *args)
25
+ # TODO: cache methods once they are called once
26
+ if find = method.to_s.match(/(\w+?)?_?to_(\w+)/)
27
+ # Grab the captures
28
+ langs = find.captures
29
+
30
+ # Figure out if each language is a valid one
31
+ # if the first one is nil, let it pass
32
+ langs.each_with_index do |lang, i|
33
+ raise InvalidLanguage, "#{lang}" unless (lang.nil? && i == 0) || valid_lang?(lang)
34
+ end
35
+
36
+ # Make sure the phrase is passed in
37
+ raise NoPhrasePassed, "Pass a phrase to translate" if args.nil? || args.blank? || args.first.empty?
38
+
39
+ # Figure out what the from language should be
40
+ from = (langs.first.nil? ? "" : LANGS[langs.first])
41
+
42
+ # And fetch/return the actual translation!
43
+ get_translation :from => from, :to => LANGS[langs.last.to_sym], :phrase => args.first
44
+ else
45
+ super
46
+ end
47
+ end
48
+
49
+ # Takes a string or symbol and returns BOOL
50
+ def self.valid_lang? lang
51
+ LANGS.key? lang.to_sym
52
+ end
53
+
54
+ # Returns the short code for the language name
55
+ def self.lang_code lang
56
+ LANGS[lang.to_sym]
57
+ end
58
+
59
+ private
60
+
61
+ # Actually does the heavy lifting
62
+ def self.get_translation opts = {}
63
+ lang_pair = {:langpair => "#{opts[:from]}|#{opts[:to]}"}
64
+ get('', :query => {:q => opts[:phrase]}.merge(lang_pair))["responseData"]["translatedText"]
65
+ end
66
+ end
67
+
68
+ # And add Tr for anyone lazy
69
+ const_set "Tr", Translate
70
+ end
@@ -0,0 +1,36 @@
1
+ module Google
2
+ module Translate
3
+
4
+ # Extends String to add to_* and *_to_*
5
+ module StringMixin
6
+ def method_missing(method, *args)
7
+ if method.to_s[/^((?:\w+)?to_\w+)$/]
8
+ Google::Tr.send($1.to_sym, self)
9
+ else
10
+ super
11
+ end
12
+ end
13
+ end
14
+
15
+ # Extends array to add to_* and *_to_*
16
+ module ArrayMixin
17
+ def method_missing(method, *args)
18
+ if method.to_s[/^((?:\w+)?to_\w+)$/]
19
+ self.map do |element|
20
+ if element.is_a?(Array)
21
+ element.send($1)
22
+ else
23
+ Google::Tr.send($1.downcase.to_sym, element)
24
+ end
25
+ end
26
+ else
27
+ super
28
+ end
29
+ end
30
+ end
31
+
32
+ end
33
+ end
34
+
35
+ String.send(:include, Google::Translate::StringMixin)
36
+ Array.send(:include, Google::Translate::ArrayMixin)
@@ -0,0 +1,135 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+ require File.join(File.dirname(__FILE__) + "/../lib/gtranslate/mixins")
3
+
4
+ describe Google::Translate do
5
+
6
+ describe "array mixin" do
7
+
8
+ it "should translate from a single level array using to_french" do
9
+ r = ["Hello", "Goodbye"].to_french
10
+
11
+ r.should have(2).elements
12
+ r.first.should == "Bonjour"
13
+ r.last.should == "Au revoir"
14
+ end
15
+
16
+ it "should translate from a multi level array using to_french" do
17
+ r = ["Yes", ["Hello", "Hi"], ["Goodbye", "Bye"]].to_french
18
+
19
+ r.should have(3).elements
20
+ r.first.should == "Oui"
21
+
22
+ r[1].should have(2).elements
23
+ r[1].should == ["Bonjour", "Salut"]
24
+
25
+ r.last.should have(2).elements
26
+ r.last.should == ["Au revoir", "Au revoir"]
27
+ end
28
+
29
+ it "should translate from a single level array using to_fr" do
30
+ r = ["Hello", "Goodbye"].to_fr
31
+
32
+ r.should have(2).elements
33
+ r.first.should == "Bonjour"
34
+ r.last.should == "Au revoir"
35
+ end
36
+
37
+ it "should translate from a multi level array using to_fr" do
38
+ r = ["Yes", ["Hello", "Hi"], ["Goodbye", "Bye"]].to_fr
39
+
40
+ r.should have(3).elements
41
+ r.first.should == "Oui"
42
+
43
+ r[1].should have(2).elements
44
+ r[1].should == ["Bonjour", "Salut"]
45
+
46
+ r.last.should have(2).elements
47
+ r.last.should == ["Au revoir", "Au revoir"]
48
+ end
49
+
50
+ it "should translate from a single level array using english_to_french" do
51
+ r = ["Hello", "Goodbye"].english_to_french
52
+
53
+ r.should have(2).elements
54
+ r.first.should == "Bonjour"
55
+ r.last.should == "Au revoir"
56
+ end
57
+
58
+ it "should translate from a multi level array using english_to_french" do
59
+ r = ["Yes", ["Hello", "Hi"], ["Goodbye", "Bye"]].english_to_french
60
+
61
+ r.should have(3).elements
62
+ r.first.should == "Oui"
63
+
64
+ r[1].should have(2).elements
65
+ r[1].should == ["Bonjour", "Salut"]
66
+
67
+ r.last.should have(2).elements
68
+ r.last.should == ["Au revoir", "Au revoir"]
69
+ end
70
+
71
+ it "should translate from a single level array using english_to_fr" do
72
+ r = ["Hello", "Goodbye"].english_to_fr
73
+
74
+ r.should have(2).elements
75
+ r.first.should == "Bonjour"
76
+ r.last.should == "Au revoir"
77
+ end
78
+
79
+ it "should translate from a multi level array using english_to_fr" do
80
+ r = ["Yes", ["Hello", "Hi"], ["Goodbye", "Bye"]].english_to_fr
81
+
82
+ r.should have(3).elements
83
+ r.first.should == "Oui"
84
+
85
+ r[1].should have(2).elements
86
+ r[1].should == ["Bonjour", "Salut"]
87
+
88
+ r.last.should have(2).elements
89
+ r.last.should == ["Au revoir", "Au revoir"]
90
+ end
91
+
92
+ it "should translate from a single level array using en_to_french" do
93
+ r = ["Hello", "Goodbye"].en_to_french
94
+
95
+ r.should have(2).elements
96
+ r.first.should == "Bonjour"
97
+ r.last.should == "Au revoir"
98
+ end
99
+
100
+ it "should translate from a multi level array using en_to_french" do
101
+ r = ["Yes", ["Hello", "Hi"], ["Goodbye", "Bye"]].en_to_french
102
+
103
+ r.should have(3).elements
104
+ r.first.should == "Oui"
105
+
106
+ r[1].should have(2).elements
107
+ r[1].should == ["Bonjour", "Salut"]
108
+
109
+ r.last.should have(2).elements
110
+ r.last.should == ["Au revoir", "Au revoir"]
111
+ end
112
+
113
+ it "should translate from a single level array using en_to_fr" do
114
+ r = ["Hello", "Goodbye"].en_to_fr
115
+
116
+ r.should have(2).elements
117
+ r.first.should == "Bonjour"
118
+ r.last.should == "Au revoir"
119
+ end
120
+
121
+ it "should translate from a multi level array using en_to_fr" do
122
+ r = ["Yes", ["Hello", "Hi"], ["Goodbye", "Bye"]].en_to_fr
123
+
124
+ r.should have(3).elements
125
+ r.first.should == "Oui"
126
+
127
+ r[1].should have(2).elements
128
+ r[1].should == ["Bonjour", "Salut"]
129
+
130
+ r.last.should have(2).elements
131
+ r.last.should == ["Au revoir", "Au revoir"]
132
+ end
133
+
134
+ end
135
+ end
@@ -0,0 +1,38 @@
1
+ require File.join(File.dirname(__FILE__) + "/spec_helper")
2
+
3
+ describe Google::Translate do
4
+
5
+ before(:each) do
6
+ @gt = Google::Translate
7
+ end
8
+
9
+ it "should return a string" do
10
+ expect_to_make_get_request
11
+ r = @gt.to_french("Hello")
12
+
13
+ r.should be_a_kind_of(String)
14
+ r.should == "translated phrase"
15
+ end
16
+
17
+ it "should raise when no phrase passed" do
18
+ lambda {
19
+ @gt.english_to_french
20
+ }.should raise_error(Google::Translate::NoPhrasePassed)
21
+ end
22
+
23
+ it "should raise with invalid from language passed" do
24
+ lambda {
25
+ @gt.klingon_to_english("Hello")
26
+ }.should raise_error(Google::Translate::InvalidLanguage)
27
+ end
28
+
29
+ def expect_to_make_get_request
30
+ @gt.should_receive(:get_translation).and_return("translated phrase")
31
+ end
32
+ end
33
+
34
+ describe Google::Tr do
35
+ it "should match Google::Translate" do
36
+ Google::Tr.should == Google::Translate
37
+ end
38
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1,4 @@
1
+ --colour
2
+ --format progress
3
+ --loadby mtime
4
+ --reverse
@@ -0,0 +1 @@
1
+ require File.join(File.dirname(__FILE__) + "/../lib/gtranslate")
@@ -0,0 +1,50 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+ require File.join(File.dirname(__FILE__) + "/../lib/gtranslate/mixins")
3
+
4
+ describe Google::Translate do
5
+
6
+ describe "string mixin" do
7
+ it "should translate from a string using to_french" do
8
+ r = "Hello".to_french
9
+
10
+ r.should be_a_kind_of(String)
11
+ r.should == "Bonjour"
12
+ end
13
+
14
+ it "should translate from a string using to_fr" do
15
+ r = "Hello".to_fr
16
+
17
+ r.should be_a_kind_of(String)
18
+ r.should == "Bonjour"
19
+ end
20
+
21
+ it "should translate from a string using english_to_french" do
22
+ r = "Hello".english_to_french
23
+
24
+ r.should be_a_kind_of(String)
25
+ r.should == "Bonjour"
26
+ end
27
+
28
+ it "should translate from a string using english_to_fr" do
29
+ r = "Hello".english_to_fr
30
+
31
+ r.should be_a_kind_of(String)
32
+ r.should == "Bonjour"
33
+ end
34
+
35
+ it "should translate from a string using en_to_french" do
36
+ r = "Hello".en_to_french
37
+
38
+ r.should be_a_kind_of(String)
39
+ r.should == "Bonjour"
40
+ end
41
+
42
+ it "should translate from a string using en_to_fr" do
43
+ r = "Hello".en_to_fr
44
+
45
+ r.should be_a_kind_of(String)
46
+ r.should == "Bonjour"
47
+ end
48
+ end
49
+
50
+ end
data/tasks/rspec.rake ADDED
@@ -0,0 +1,24 @@
1
+ # Borrowed from http://github.com/rsim/ruby-plsql/tree/master/tasks/rspec.rake
2
+ # Github++
3
+ begin
4
+ require "spec"
5
+ rescue LoadError
6
+ require "rubygems"
7
+ require "spec"
8
+ end
9
+
10
+ begin
11
+ require "spec/rake/spectask"
12
+ rescue LoadError
13
+ puts <<-EOS
14
+ To use rspec for testing you must install rspec gem:
15
+ [sudo] gem install rspec
16
+ EOS
17
+ exit(0)
18
+ end
19
+
20
+ desc "Run the specs under spec/*"
21
+ Spec::Rake::SpecTask.new do |t|
22
+ t.spec_opts = ["--options", "spec/spec.opts"]
23
+ t.spec_files = FileList["spec/*_spec.rb"]
24
+ end
metadata ADDED
@@ -0,0 +1,88 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: caius-gtranslate
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.1
5
+ platform: ruby
6
+ authors:
7
+ - Caius Durling
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-02-15 00:00:00 -08:00
13
+ default_executable: gtranslate
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: httparty
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ description: GTranslate uses the Google translate API to translate a phrase from one language to another.
26
+ email: dev@caius.name
27
+ executables:
28
+ - gtranslate
29
+ extensions: []
30
+
31
+ extra_rdoc_files:
32
+ - bin/gtranslate
33
+ - lib/gtranslate/exceptions.rb
34
+ - lib/gtranslate/gtranslate.rb
35
+ - lib/gtranslate/mixins.rb
36
+ - lib/gtranslate.rb
37
+ - tasks/rspec.rake
38
+ files:
39
+ - bin/gtranslate
40
+ - Changelog.md
41
+ - data/languages.yml
42
+ - lib/gtranslate/exceptions.rb
43
+ - lib/gtranslate/gtranslate.rb
44
+ - lib/gtranslate/mixins.rb
45
+ - lib/gtranslate.rb
46
+ - Manifest
47
+ - Rakefile
48
+ - Readme.md
49
+ - spec/array_mixin_spec.rb
50
+ - spec/gtranslate_spec.rb
51
+ - spec/spec.opts
52
+ - spec/spec_helper.rb
53
+ - spec/string_mixin_spec.rb
54
+ - tasks/rspec.rake
55
+ - gtranslate.gemspec
56
+ has_rdoc: true
57
+ homepage: http://github.com/caius/gtranslate
58
+ post_install_message:
59
+ rdoc_options:
60
+ - --line-numbers
61
+ - --inline-source
62
+ - --title
63
+ - Gtranslate
64
+ - --main
65
+ - Readme.md
66
+ require_paths:
67
+ - lib
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: "0"
73
+ version:
74
+ required_rubygems_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: "1.2"
79
+ version:
80
+ requirements: []
81
+
82
+ rubyforge_project: gtranslate
83
+ rubygems_version: 1.2.0
84
+ signing_key:
85
+ specification_version: 2
86
+ summary: Translates a phrase from one language to another
87
+ test_files: []
88
+