to_lang 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/.yardopts +5 -0
- data/README.textile +17 -3
- data/Rakefile +9 -0
- data/lib/to_lang/codemap.rb +2 -0
- data/lib/to_lang/connector.rb +33 -4
- data/lib/to_lang/string_methods.rb +76 -0
- data/lib/to_lang/version.rb +3 -1
- data/lib/to_lang.rb +18 -49
- data/spec/spec_helper.rb +1 -1
- data/spec/to_lang/connector_spec.rb +1 -1
- data/spec/to_lang/string_methods_spec.rb +68 -0
- data/spec/to_lang_spec.rb +0 -57
- data/to_lang.gemspec +4 -0
- metadata +67 -7
data/.gitignore
CHANGED
data/.yardopts
ADDED
data/README.textile
CHANGED
@@ -8,7 +8,11 @@ Simply run @gem install to_lang@.
|
|
8
8
|
|
9
9
|
h2. Usage
|
10
10
|
|
11
|
-
To use *to_lang*, require the library, then call @ToLang.start@ with your Google Translate API key. At this point you will have access to all the new translation methods, which take the form @to_language@, where "language" is the language you wish to translate to.
|
11
|
+
To use *to_lang*, require the library, then call @ToLang.start@ with your Google Translate API key. At this point you will have access to all the new translation methods, which take the form @to_language@, where "language" is the language you wish to translate to.
|
12
|
+
|
13
|
+
Google Translate attempts to detect the source language, but you can specify it explicitly by calling methods in the form @to_language_from_source_language@, where "source_language" is the source language. These methods are generated dynamically and will not appear in a call to @String.new.methods@ until they have been called once. Strings will, however, @respond_to?@ these methods prior to their dynamic definition.
|
14
|
+
|
15
|
+
The dynamic methods are simply syntactic sugar for @String#translate@, which you can use directly as well.
|
12
16
|
|
13
17
|
h2. Examples
|
14
18
|
|
@@ -29,6 +33,13 @@ bq. "a pie".to_spanish
|
|
29
33
|
"a pie".to_spanish_from_english
|
30
34
|
=> "un pastel"
|
31
35
|
|
36
|
+
Using @String#translate@ directly:
|
37
|
+
|
38
|
+
bq. "hello world".translate('es')
|
39
|
+
=> "hola mundo"
|
40
|
+
"a pie".translate('es', :from => 'en')
|
41
|
+
=> "un pastel"
|
42
|
+
|
32
43
|
h2. Supported Languages
|
33
44
|
|
34
45
|
*to_lang* adds the following methods to strings. Each of these methods can be called with an explicit source language by appending @_to_source_language@ to the method name.
|
@@ -87,10 +98,13 @@ h2. Supported Languages
|
|
87
98
|
* to_welsh
|
88
99
|
* to_yiddish
|
89
100
|
|
101
|
+
h2. Documentation
|
102
|
+
|
103
|
+
API documentation can be found at "rubydoc.info":http://rubydoc.info/github/jimmycuadra/to_lang/master/frames.
|
104
|
+
|
90
105
|
h2. Roadmap
|
91
106
|
|
92
|
-
|
93
|
-
- Add Unicode support for Ruby 1.8. *to_lang* currently works safely only under 1.9.
|
107
|
+
* Add Unicode support for Ruby 1.8. *to_lang* currently works safely only under 1.9.
|
94
108
|
|
95
109
|
h2. Feedback and Contributions
|
96
110
|
|
data/Rakefile
CHANGED
data/lib/to_lang/codemap.rb
CHANGED
data/lib/to_lang/connector.rb
CHANGED
@@ -1,28 +1,57 @@
|
|
1
|
-
require 'rubygems'
|
2
1
|
require 'httparty'
|
3
|
-
require '
|
2
|
+
require 'cgi'
|
4
3
|
|
5
4
|
module ToLang
|
5
|
+
# Responsible for making the actual HTTP request to the Google Translate API.
|
6
|
+
#
|
6
7
|
class Connector
|
8
|
+
# The base URL for all requests to the Google Translate API.
|
9
|
+
#
|
7
10
|
API_URL = "https://www.googleapis.com/language/translate/v2"
|
8
11
|
|
12
|
+
# The Google Translate API key to use when making API calls.
|
13
|
+
#
|
14
|
+
# @return [String] The Google Translate API key.
|
15
|
+
#
|
9
16
|
attr_reader :key
|
10
17
|
|
18
|
+
# Initializes a new {ToLang::Connector} and stores a Google Translate API key.
|
19
|
+
#
|
20
|
+
# @return [ToLang::Connector] The new {ToLang::Connector} instance.
|
11
21
|
def initialize(key)
|
12
22
|
@key = key
|
13
23
|
end
|
14
24
|
|
25
|
+
# Makes a request to the Google Translate API.
|
26
|
+
#
|
27
|
+
# @param [String] q The string to translate.
|
28
|
+
# @param [String] target The language code for the language to translate to.
|
29
|
+
# @param [Hash] options A hash of options.
|
30
|
+
# @option options [String] :from The language code for the language of @q@.
|
31
|
+
#
|
32
|
+
# @raise [RuntimeError] Raises an error for any errors returned by Google Translate.
|
33
|
+
# @return [String] The translated string.
|
34
|
+
#
|
15
35
|
def request(q, target, options = {})
|
16
36
|
response = HTTParty.get request_url(q, target, options)
|
17
37
|
raise response.parsed_response["error"]["message"] if response.parsed_response["error"] && response.parsed_response["error"]["message"]
|
18
|
-
response.parsed_response["data"]["translations"][0]["translatedText"]
|
38
|
+
CGI.unescapeHTML(response.parsed_response["data"]["translations"][0]["translatedText"])
|
19
39
|
end
|
20
40
|
|
21
41
|
private
|
22
42
|
|
43
|
+
# Constructs the URL that will be used by {#request}.
|
44
|
+
#
|
45
|
+
# @param [String] q The string to translate.
|
46
|
+
# @param [String] target The language code for the language to translate to.
|
47
|
+
# @param [Hash] options A hash of options.
|
48
|
+
# @option options [String] :from The language code for the language of @q@.
|
49
|
+
#
|
50
|
+
# @return [String] The URL to request for the API call.
|
51
|
+
#
|
23
52
|
def request_url(q, target, options)
|
24
53
|
source = options[:from]
|
25
|
-
url = "#{API_URL}?key=#{@key}&q=#{
|
54
|
+
url = "#{API_URL}?key=#{@key}&q=#{CGI.escape(q)}&target=#{target}"
|
26
55
|
url += "&source=#{source}" if source
|
27
56
|
url
|
28
57
|
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require "to_lang/codemap"
|
2
|
+
|
3
|
+
module ToLang
|
4
|
+
# The methods {ToLang} will mix into the String class when initialized.
|
5
|
+
#
|
6
|
+
module StringMethods
|
7
|
+
# Translates a string to another language. All the magic methods use this internally. It, in turn, forwards
|
8
|
+
# everything on to {ToLang::Connector#request}
|
9
|
+
#
|
10
|
+
# @param [String] target The language code for the language to translate to.
|
11
|
+
# @param args Any additional arguments, such as the source language.
|
12
|
+
#
|
13
|
+
# @return [String] The translated string.
|
14
|
+
#
|
15
|
+
def translate(target, *args)
|
16
|
+
ToLang.connector.request(self, target, *args)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Chain @method_missing@ in case another library has used it.
|
20
|
+
#
|
21
|
+
alias_method :original_method_missing, :method_missing
|
22
|
+
|
23
|
+
# Overrides @method_missing@ to catch and define dynamic translation methods.
|
24
|
+
#
|
25
|
+
# @private
|
26
|
+
#
|
27
|
+
def method_missing(method, *args, &block)
|
28
|
+
case method.to_s
|
29
|
+
when /^to_(.*)_from_(.*)$/
|
30
|
+
if CODEMAP[$1] && CODEMAP[$2]
|
31
|
+
new_method_name = "to_#{$1}_from_#{$2}".to_sym
|
32
|
+
|
33
|
+
self.class.send(:define_method, new_method_name) do
|
34
|
+
translate(CODEMAP[$1], :from => CODEMAP[$2])
|
35
|
+
end
|
36
|
+
|
37
|
+
return send(new_method_name)
|
38
|
+
else
|
39
|
+
original_method_missing(method, *args, &block)
|
40
|
+
end
|
41
|
+
when /^to_(.*)$/
|
42
|
+
if CODEMAP[$1]
|
43
|
+
new_method_name = "to_#{$1}".to_sym
|
44
|
+
|
45
|
+
self.class.send(:define_method, new_method_name) do
|
46
|
+
translate(CODEMAP[$1])
|
47
|
+
end
|
48
|
+
|
49
|
+
return send(new_method_name)
|
50
|
+
else
|
51
|
+
original_method_missing(method, *args, &block)
|
52
|
+
end
|
53
|
+
else
|
54
|
+
original_method_missing(method, *args, &block)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# Chain @respond_to?@ in case another library has used it.
|
59
|
+
alias_method :original_respond_to?, :respond_to?
|
60
|
+
|
61
|
+
# Overrides @respond_to?@ to make strings aware of the dynamic translation methods.
|
62
|
+
#
|
63
|
+
# @private
|
64
|
+
#
|
65
|
+
def respond_to?(method, include_private = false)
|
66
|
+
case method.to_s
|
67
|
+
when /^to_(.*)_from_(.*)$/
|
68
|
+
return true if CODEMAP[$1] && CODEMAP[$2]
|
69
|
+
when /^to_(.*)$/
|
70
|
+
return true if CODEMAP[$1]
|
71
|
+
end
|
72
|
+
|
73
|
+
original_respond_to?(method, include_private)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
data/lib/to_lang/version.rb
CHANGED
data/lib/to_lang.rb
CHANGED
@@ -1,60 +1,29 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
|
1
|
+
require "to_lang/connector"
|
2
|
+
require "to_lang/string_methods"
|
3
|
+
|
4
|
+
# {ToLang} is a Ruby library that adds language translation methods to strings, backed by the Google Translate API.
|
5
|
+
#
|
6
|
+
# @author Jimmy Cuadra
|
7
|
+
# @see https://github.com/jimmycuadra/to_lang Source on GitHub
|
8
|
+
#
|
4
9
|
module ToLang
|
5
10
|
class << self
|
11
|
+
# A {ToLang::Connector} object to use for translation requests.
|
12
|
+
#
|
13
|
+
# @return [ToLang::Constructor, NilClass] An initialized {ToLang::Connector connector} or nil.
|
14
|
+
#
|
6
15
|
attr_reader :connector
|
7
16
|
|
17
|
+
# Initializes {ToLang}, after which the translation methods will be available from strings.
|
18
|
+
#
|
19
|
+
# @param [String] key A Google Translate API key.
|
20
|
+
#
|
21
|
+
# @return [Class, Boolean] @String@ if initialization succeeded, @false@ if this method has already been called successfully.
|
22
|
+
#
|
8
23
|
def start(key)
|
9
24
|
return false if defined?(@connector) && !@connector.nil?
|
10
25
|
@connector = ToLang::Connector.new(key)
|
11
26
|
String.send(:include, StringMethods)
|
12
|
-
add_magic_methods
|
13
|
-
true
|
14
|
-
end
|
15
|
-
|
16
|
-
private
|
17
|
-
|
18
|
-
def add_magic_methods
|
19
|
-
String.class_eval do
|
20
|
-
def method_missing(method, *args, &block)
|
21
|
-
if method.to_s =~ /^to_(.*)_from_(.*)$/ && CODEMAP[$1] && CODEMAP[$2]
|
22
|
-
new_method_name = "to_#{$1}_from_#{$2}".to_sym
|
23
|
-
|
24
|
-
self.class.send(:define_method, new_method_name, Proc.new {
|
25
|
-
translate(CODEMAP[$1], :from => CODEMAP[$2])
|
26
|
-
})
|
27
|
-
|
28
|
-
send new_method_name
|
29
|
-
elsif method.to_s =~ /^to_(.*)$/ && CODEMAP[$1]
|
30
|
-
new_method_name = "to_#{$1}".to_sym
|
31
|
-
|
32
|
-
self.class.send(:define_method, new_method_name, Proc.new {
|
33
|
-
translate(CODEMAP[$1])
|
34
|
-
})
|
35
|
-
|
36
|
-
send new_method_name
|
37
|
-
else
|
38
|
-
super
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def respond_to?(method, include_private = false)
|
43
|
-
if method.to_s =~ /^to_(.*)_from_(.*)$/ && CODEMAP[$1] && CODEMAP[$2]
|
44
|
-
true
|
45
|
-
elsif method.to_s =~ /^to_(.*)$/ && CODEMAP[$1]
|
46
|
-
true
|
47
|
-
else
|
48
|
-
super
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
module StringMethods
|
56
|
-
def translate(target, *args)
|
57
|
-
ToLang.connector.request(self, target, *args)
|
58
27
|
end
|
59
28
|
end
|
60
29
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -0,0 +1,68 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "A ToLang-enabled string" do
|
4
|
+
before :all do
|
5
|
+
ToLang.start('apikey')
|
6
|
+
end
|
7
|
+
|
8
|
+
it "responds to :translate" do
|
9
|
+
String.new.should respond_to :translate
|
10
|
+
end
|
11
|
+
|
12
|
+
context "when sent :translate" do
|
13
|
+
it "calls ToLang::Connector#request" do
|
14
|
+
ToLang.connector.stub(:request)
|
15
|
+
ToLang.connector.should_receive(:request).with("hello world", "es")
|
16
|
+
"hello world".translate("es")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
ToLang::CODEMAP.each do |language, code|
|
21
|
+
it "will respond_to :to_#{language}" do
|
22
|
+
"hello_world".should respond_to "to_#{language}"
|
23
|
+
end
|
24
|
+
|
25
|
+
it "will respond to :to_#{language}_from_english" do
|
26
|
+
"hello_world".should respond_to "to_#{language}_from_english"
|
27
|
+
end
|
28
|
+
|
29
|
+
it "translates to #{language} when sent :to_#{language}" do
|
30
|
+
ToLang.connector.stub(:request)
|
31
|
+
ToLang.connector.should_receive(:request).with("hello world", code)
|
32
|
+
"hello world".send("to_#{language}")
|
33
|
+
end
|
34
|
+
|
35
|
+
it "translates to #{language} from english when sent :to_#{language}_from_english" do
|
36
|
+
ToLang.connector.stub(:request)
|
37
|
+
ToLang.connector.should_receive(:request).with("hello world", code, :from => 'en')
|
38
|
+
"hello world".send("to_#{language}_from_english")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context "when a magic method has been called once" do
|
43
|
+
before :each do
|
44
|
+
ToLang.connector.stub(:request)
|
45
|
+
"hello world".to_spanish
|
46
|
+
"hello world".to_spanish_from_english
|
47
|
+
end
|
48
|
+
|
49
|
+
it "defines the method and does not call :method_missing the next time" do
|
50
|
+
string = "hello world"
|
51
|
+
string.should_not_receive(:method_missing)
|
52
|
+
string.to_spanish
|
53
|
+
string.to_spanish_from_english
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
it "calls the original :method_missing if there is no language match in the first form" do
|
58
|
+
expect { "hello world".to_foo }.to raise_error(NoMethodError)
|
59
|
+
end
|
60
|
+
|
61
|
+
it "calls the original :method_missing if there is a bad language match in the second form" do
|
62
|
+
expect { "hello world".to_foo_from_bar }.to raise_error(NoMethodError)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "calls the original :method_missing if the method does not match either form" do
|
66
|
+
expect { "hello world".foo }.to raise_error(NoMethodError)
|
67
|
+
end
|
68
|
+
end
|
data/spec/to_lang_spec.rb
CHANGED
@@ -19,60 +19,3 @@ describe ToLang do
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
22
|
-
|
23
|
-
describe "A string" do
|
24
|
-
context "after ToLang has received :start" do
|
25
|
-
before :all do
|
26
|
-
ToLang.start('apikey')
|
27
|
-
end
|
28
|
-
|
29
|
-
it "responds to :translate" do
|
30
|
-
String.new.should respond_to :translate
|
31
|
-
end
|
32
|
-
|
33
|
-
context "when sent :translate" do
|
34
|
-
it "calls ToLang::Connector#request" do
|
35
|
-
ToLang.connector.stub(:request)
|
36
|
-
ToLang.connector.should_receive(:request).with("hello world", "es")
|
37
|
-
"hello world".translate("es")
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
ToLang::CODEMAP.each do |language, code|
|
42
|
-
it "will respond_to :to_#{language}" do
|
43
|
-
"hello_world".should respond_to "to_#{language}"
|
44
|
-
end
|
45
|
-
|
46
|
-
it "will respond to :to_#{language}_from_english" do
|
47
|
-
"hello_world".should respond_to "to_#{language}_from_english"
|
48
|
-
end
|
49
|
-
|
50
|
-
it "translates to #{language} when sent :to_#{language}" do
|
51
|
-
ToLang.connector.stub(:request)
|
52
|
-
ToLang.connector.should_receive(:request).with("hello world", code)
|
53
|
-
"hello world".send("to_#{language}")
|
54
|
-
end
|
55
|
-
|
56
|
-
it "translates to #{language} from english when sent :to_#{language}_from_english" do
|
57
|
-
ToLang.connector.stub(:request)
|
58
|
-
ToLang.connector.should_receive(:request).with("hello world", code, :from => 'en')
|
59
|
-
"hello world".send("to_#{language}_from_english")
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
context "when a magic method has been called once" do
|
64
|
-
before :each do
|
65
|
-
ToLang.connector.stub(:request)
|
66
|
-
"hello world".to_spanish
|
67
|
-
"hello world".to_spanish_from_english
|
68
|
-
end
|
69
|
-
|
70
|
-
it "defines the method and does not call :method_missing the next time" do
|
71
|
-
string = "hello world"
|
72
|
-
string.should_not_receive(:method_missing)
|
73
|
-
string.to_spanish
|
74
|
-
string.to_spanish_from_english
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
data/to_lang.gemspec
CHANGED
@@ -17,6 +17,10 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.require_paths = ["lib"]
|
18
18
|
|
19
19
|
s.add_dependency "httparty", "~> 0.6"
|
20
|
+
s.add_development_dependency "bundler", "~> 1.0"
|
21
|
+
s.add_development_dependency "rake", "~> 0.8"
|
20
22
|
s.add_development_dependency "rspec", "~> 2.3"
|
21
23
|
s.add_development_dependency "simplecov", "~> 0.3"
|
24
|
+
s.add_development_dependency "yard", "~> 0.6"
|
25
|
+
s.add_development_dependency "RedCloth", "~> 4.2"
|
22
26
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 1
|
9
|
+
version: 0.1.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Jimmy Cuadra
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-12-
|
17
|
+
date: 2010-12-29 00:00:00 -08:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -32,9 +32,37 @@ dependencies:
|
|
32
32
|
type: :runtime
|
33
33
|
version_requirements: *id001
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
|
-
name:
|
35
|
+
name: bundler
|
36
36
|
prerelease: false
|
37
37
|
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ~>
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
segments:
|
43
|
+
- 1
|
44
|
+
- 0
|
45
|
+
version: "1.0"
|
46
|
+
type: :development
|
47
|
+
version_requirements: *id002
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: rake
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ~>
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
segments:
|
57
|
+
- 0
|
58
|
+
- 8
|
59
|
+
version: "0.8"
|
60
|
+
type: :development
|
61
|
+
version_requirements: *id003
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rspec
|
64
|
+
prerelease: false
|
65
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
38
66
|
none: false
|
39
67
|
requirements:
|
40
68
|
- - ~>
|
@@ -44,11 +72,11 @@ dependencies:
|
|
44
72
|
- 3
|
45
73
|
version: "2.3"
|
46
74
|
type: :development
|
47
|
-
version_requirements: *
|
75
|
+
version_requirements: *id004
|
48
76
|
- !ruby/object:Gem::Dependency
|
49
77
|
name: simplecov
|
50
78
|
prerelease: false
|
51
|
-
requirement: &
|
79
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
52
80
|
none: false
|
53
81
|
requirements:
|
54
82
|
- - ~>
|
@@ -58,7 +86,35 @@ dependencies:
|
|
58
86
|
- 3
|
59
87
|
version: "0.3"
|
60
88
|
type: :development
|
61
|
-
version_requirements: *
|
89
|
+
version_requirements: *id005
|
90
|
+
- !ruby/object:Gem::Dependency
|
91
|
+
name: yard
|
92
|
+
prerelease: false
|
93
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ~>
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
segments:
|
99
|
+
- 0
|
100
|
+
- 6
|
101
|
+
version: "0.6"
|
102
|
+
type: :development
|
103
|
+
version_requirements: *id006
|
104
|
+
- !ruby/object:Gem::Dependency
|
105
|
+
name: RedCloth
|
106
|
+
prerelease: false
|
107
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
108
|
+
none: false
|
109
|
+
requirements:
|
110
|
+
- - ~>
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
segments:
|
113
|
+
- 4
|
114
|
+
- 2
|
115
|
+
version: "4.2"
|
116
|
+
type: :development
|
117
|
+
version_requirements: *id007
|
62
118
|
description: Adds language translation methods to strings, backed by the Google Translate API
|
63
119
|
email:
|
64
120
|
- jimmy@jimmycuadra.com
|
@@ -70,15 +126,18 @@ extra_rdoc_files: []
|
|
70
126
|
|
71
127
|
files:
|
72
128
|
- .gitignore
|
129
|
+
- .yardopts
|
73
130
|
- Gemfile
|
74
131
|
- README.textile
|
75
132
|
- Rakefile
|
76
133
|
- lib/to_lang.rb
|
77
134
|
- lib/to_lang/codemap.rb
|
78
135
|
- lib/to_lang/connector.rb
|
136
|
+
- lib/to_lang/string_methods.rb
|
79
137
|
- lib/to_lang/version.rb
|
80
138
|
- spec/spec_helper.rb
|
81
139
|
- spec/to_lang/connector_spec.rb
|
140
|
+
- spec/to_lang/string_methods_spec.rb
|
82
141
|
- spec/to_lang_spec.rb
|
83
142
|
- to_lang.gemspec
|
84
143
|
has_rdoc: true
|
@@ -116,4 +175,5 @@ summary: Adds language translation methods to strings, backed by the Google Tran
|
|
116
175
|
test_files:
|
117
176
|
- spec/spec_helper.rb
|
118
177
|
- spec/to_lang/connector_spec.rb
|
178
|
+
- spec/to_lang/string_methods_spec.rb
|
119
179
|
- spec/to_lang_spec.rb
|