to_lang 0.3.0 → 0.3.1
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 +1 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/README.textile +4 -0
- data/Rakefile +0 -9
- data/lib/to_lang/connector.rb +1 -0
- data/lib/to_lang/core_ext.rb +49 -0
- data/lib/to_lang/version.rb +1 -1
- data/spec/to_lang/connector_spec.rb +1 -1
- data/spec/to_lang/core_ext_spec.rb +44 -0
- data/to_lang.gemspec +8 -10
- metadata +89 -107
data/.gitignore
CHANGED
data/.rspec
ADDED
data/README.textile
CHANGED
@@ -2,6 +2,10 @@ h1. to_lang
|
|
2
2
|
|
3
3
|
*to_lang* is a Ruby library that adds language translation methods to strings and arrays, backed by the Google Translate API.
|
4
4
|
|
5
|
+
h2. Build Status
|
6
|
+
|
7
|
+
"!https://travis-ci.org/jimmycuadra/to_lang.png!":http://travis-ci.org/jimmycuadra/to_lang
|
8
|
+
|
5
9
|
h2. Installation
|
6
10
|
|
7
11
|
Simply run @gem install to_lang@.
|
data/Rakefile
CHANGED
data/lib/to_lang/connector.rb
CHANGED
@@ -0,0 +1,49 @@
|
|
1
|
+
# Hash extensions taken from John Nunemaker's Crack gem.
|
2
|
+
#
|
3
|
+
# Crack was previously a dependency for HTTParty, but since it
|
4
|
+
# no longer is, the methods being used by {ToLang} are included
|
5
|
+
# here directly.
|
6
|
+
#
|
7
|
+
class Hash
|
8
|
+
# Convert the entire has into a string suitable for HTTP requests.
|
9
|
+
#
|
10
|
+
# @return [String] This hash as a query string.
|
11
|
+
#
|
12
|
+
def to_params
|
13
|
+
params = self.map { |k,v| normalize_param(k,v) }.join
|
14
|
+
params.chop! # trailing &
|
15
|
+
params
|
16
|
+
end
|
17
|
+
|
18
|
+
# Turns a key value pair into a string suitable for HTTP requests.
|
19
|
+
#
|
20
|
+
# @param [Object] key The key for the param.
|
21
|
+
# @param [Object] value The value for the param.
|
22
|
+
#
|
23
|
+
# @return [String] This key value pair as a param
|
24
|
+
#
|
25
|
+
def normalize_param(key, value)
|
26
|
+
param = ''
|
27
|
+
stack = []
|
28
|
+
|
29
|
+
if value.is_a?(Array)
|
30
|
+
param << value.map { |element| normalize_param("#{key}[]", element) }.join
|
31
|
+
elsif value.is_a?(Hash)
|
32
|
+
stack << [key,value]
|
33
|
+
else
|
34
|
+
param << "#{key}=#{URI.encode(value.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))}&"
|
35
|
+
end
|
36
|
+
|
37
|
+
stack.each do |parent, hash|
|
38
|
+
hash.each do |key, value|
|
39
|
+
if value.is_a?(Hash)
|
40
|
+
stack << ["#{parent}[#{key}]", value]
|
41
|
+
else
|
42
|
+
param << normalize_param("#{parent}[#{key}]", value)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
param
|
48
|
+
end
|
49
|
+
end
|
data/lib/to_lang/version.rb
CHANGED
@@ -13,7 +13,7 @@ describe ToLang::Connector do
|
|
13
13
|
:target => 'es',
|
14
14
|
:q => ["banana", "apple"]
|
15
15
|
}
|
16
|
-
ToLang::Connector::UNSORTED_QUERY_STRING_NORMALIZER.call(params).should
|
16
|
+
ToLang::Connector::UNSORTED_QUERY_STRING_NORMALIZER.call(params).should =~ /q=banana&q=apple/
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Hash do
|
4
|
+
describe "#to_params" do
|
5
|
+
test_hashes = {
|
6
|
+
{ "foo" => "bar", "baz" => "bat" } => "foo=bar&baz=bat",
|
7
|
+
{ "foo" => [ "bar", "baz" ] } => "foo[]=bar&foo[]=baz",
|
8
|
+
{ "foo" => [ {"bar" => "1"}, {"bar" => 2} ] } => "foo[][bar]=1&foo[][bar]=2",
|
9
|
+
{ "foo" => { "bar" => [ {"baz" => 1}, {"baz" => "2"} ] } } => "foo[bar][][baz]=1&foo[bar][][baz]=2",
|
10
|
+
{ "foo" => {"1" => "bar", "2" => "baz"} } => "foo[1]=bar&foo[2]=baz"
|
11
|
+
}
|
12
|
+
|
13
|
+
test_hashes.each do |hash, params|
|
14
|
+
it "converts hash: #{hash.inspect} to params: #{params.inspect}" do
|
15
|
+
hash.to_params.split('&').sort.should == params.split('&').sort
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
it "doesn't leave a trailing &" do
|
20
|
+
{
|
21
|
+
:name => 'Bob',
|
22
|
+
:address => {
|
23
|
+
:street => '111 Ruby Ave.',
|
24
|
+
:city => 'Ruby Central',
|
25
|
+
:phones => ['111-111-1111', '222-222-2222']
|
26
|
+
}
|
27
|
+
}.to_params.should_not =~ /&$/
|
28
|
+
end
|
29
|
+
|
30
|
+
it "URL encodes unsafe characters" do
|
31
|
+
{ :q => "?&\" +" }.to_params.should == "q=%3F%26%22%20%2B"
|
32
|
+
end
|
33
|
+
|
34
|
+
it "converts deeply nested hashes" do
|
35
|
+
{
|
36
|
+
:one => {
|
37
|
+
:two => {
|
38
|
+
:three => true
|
39
|
+
}
|
40
|
+
}
|
41
|
+
}.to_params.should == "one[two][three]=true"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/to_lang.gemspec
CHANGED
@@ -16,14 +16,12 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
17
|
s.require_paths = ["lib"]
|
18
18
|
|
19
|
-
s.add_dependency "httparty", "~> 0.
|
20
|
-
s.add_development_dependency "
|
21
|
-
s.add_development_dependency "
|
22
|
-
s.add_development_dependency "
|
23
|
-
s.add_development_dependency "
|
24
|
-
s.add_development_dependency "
|
25
|
-
s.add_development_dependency "
|
26
|
-
s.add_development_dependency "
|
27
|
-
s.add_development_dependency "rb-fsevent", "~> 0.4.0" if RUBY_PLATFORM[/darwin/]
|
28
|
-
s.add_development_dependency "growl", "~> 1.0.3" if RUBY_PLATFORM[/darwin/]
|
19
|
+
s.add_dependency "httparty", "~> 0.8.0"
|
20
|
+
s.add_development_dependency "rake", "~> 0.9.2"
|
21
|
+
s.add_development_dependency "rspec", "~> 2.6.0"
|
22
|
+
s.add_development_dependency "simplecov", "~> 0.5.3"
|
23
|
+
s.add_development_dependency "RedCloth", "~> 4.2.8"
|
24
|
+
s.add_development_dependency "guard-rspec", "~> 0.4.5"
|
25
|
+
s.add_development_dependency "rb-fsevent", "~> 0.4.3" if RUBY_PLATFORM[/darwin/]
|
26
|
+
s.add_development_dependency "growl_notify", "~> 0.0.1" if RUBY_PLATFORM[/darwin/]
|
29
27
|
end
|
metadata
CHANGED
@@ -1,139 +1,116 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: to_lang
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.1
|
4
5
|
prerelease:
|
5
|
-
version: 0.3.0
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Jimmy Cuadra
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-09-15 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
17
15
|
name: httparty
|
18
|
-
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70175836589280 !ruby/object:Gem::Requirement
|
20
17
|
none: false
|
21
|
-
requirements:
|
18
|
+
requirements:
|
22
19
|
- - ~>
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version: 0.
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.8.0
|
25
22
|
type: :runtime
|
26
|
-
version_requirements: *id001
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: bundler
|
29
23
|
prerelease: false
|
30
|
-
|
31
|
-
|
32
|
-
requirements:
|
33
|
-
- - ~>
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
-
version: 1.0.10
|
36
|
-
type: :development
|
37
|
-
version_requirements: *id002
|
38
|
-
- !ruby/object:Gem::Dependency
|
24
|
+
version_requirements: *70175836589280
|
25
|
+
- !ruby/object:Gem::Dependency
|
39
26
|
name: rake
|
40
|
-
|
41
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
27
|
+
requirement: &70175836588020 !ruby/object:Gem::Requirement
|
42
28
|
none: false
|
43
|
-
requirements:
|
29
|
+
requirements:
|
44
30
|
- - ~>
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 0.
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.9.2
|
47
33
|
type: :development
|
48
|
-
version_requirements: *id003
|
49
|
-
- !ruby/object:Gem::Dependency
|
50
|
-
name: rspec
|
51
34
|
prerelease: false
|
52
|
-
|
35
|
+
version_requirements: *70175836588020
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rspec
|
38
|
+
requirement: &70175836585300 !ruby/object:Gem::Requirement
|
53
39
|
none: false
|
54
|
-
requirements:
|
40
|
+
requirements:
|
55
41
|
- - ~>
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
version: 2.
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 2.6.0
|
58
44
|
type: :development
|
59
|
-
version_requirements: *id004
|
60
|
-
- !ruby/object:Gem::Dependency
|
61
|
-
name: simplecov
|
62
45
|
prerelease: false
|
63
|
-
|
46
|
+
version_requirements: *70175836585300
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: simplecov
|
49
|
+
requirement: &70175836583680 !ruby/object:Gem::Requirement
|
64
50
|
none: false
|
65
|
-
requirements:
|
51
|
+
requirements:
|
66
52
|
- - ~>
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: 0.
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.5.3
|
69
55
|
type: :development
|
70
|
-
version_requirements: *id005
|
71
|
-
- !ruby/object:Gem::Dependency
|
72
|
-
name: yard
|
73
56
|
prerelease: false
|
74
|
-
|
75
|
-
|
76
|
-
requirements:
|
77
|
-
- - ~>
|
78
|
-
- !ruby/object:Gem::Version
|
79
|
-
version: 0.6.5
|
80
|
-
type: :development
|
81
|
-
version_requirements: *id006
|
82
|
-
- !ruby/object:Gem::Dependency
|
57
|
+
version_requirements: *70175836583680
|
58
|
+
- !ruby/object:Gem::Dependency
|
83
59
|
name: RedCloth
|
84
|
-
|
85
|
-
requirement: &id007 !ruby/object:Gem::Requirement
|
60
|
+
requirement: &70175836582060 !ruby/object:Gem::Requirement
|
86
61
|
none: false
|
87
|
-
requirements:
|
62
|
+
requirements:
|
88
63
|
- - ~>
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
version: 4.2.
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 4.2.8
|
91
66
|
type: :development
|
92
|
-
version_requirements: *id007
|
93
|
-
- !ruby/object:Gem::Dependency
|
94
|
-
name: guard-rspec
|
95
67
|
prerelease: false
|
96
|
-
|
68
|
+
version_requirements: *70175836582060
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: guard-rspec
|
71
|
+
requirement: &70175836580900 !ruby/object:Gem::Requirement
|
97
72
|
none: false
|
98
|
-
requirements:
|
73
|
+
requirements:
|
99
74
|
- - ~>
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: 0.
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 0.4.5
|
102
77
|
type: :development
|
103
|
-
version_requirements: *id008
|
104
|
-
- !ruby/object:Gem::Dependency
|
105
|
-
name: rb-fsevent
|
106
78
|
prerelease: false
|
107
|
-
|
79
|
+
version_requirements: *70175836580900
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: rb-fsevent
|
82
|
+
requirement: &70175836579720 !ruby/object:Gem::Requirement
|
108
83
|
none: false
|
109
|
-
requirements:
|
84
|
+
requirements:
|
110
85
|
- - ~>
|
111
|
-
- !ruby/object:Gem::Version
|
112
|
-
version: 0.4.
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: 0.4.3
|
113
88
|
type: :development
|
114
|
-
version_requirements: *id009
|
115
|
-
- !ruby/object:Gem::Dependency
|
116
|
-
name: growl
|
117
89
|
prerelease: false
|
118
|
-
|
90
|
+
version_requirements: *70175836579720
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: growl_notify
|
93
|
+
requirement: &70175836578060 !ruby/object:Gem::Requirement
|
119
94
|
none: false
|
120
|
-
requirements:
|
95
|
+
requirements:
|
121
96
|
- - ~>
|
122
|
-
- !ruby/object:Gem::Version
|
123
|
-
version:
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: 0.0.1
|
124
99
|
type: :development
|
125
|
-
|
126
|
-
|
127
|
-
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *70175836578060
|
102
|
+
description: Adds language translation methods to strings and arrays, backed by the
|
103
|
+
Google Translate API
|
104
|
+
email:
|
128
105
|
- jimmy@jimmycuadra.com
|
129
|
-
executables:
|
106
|
+
executables:
|
130
107
|
- to_lang
|
131
108
|
extensions: []
|
132
|
-
|
133
109
|
extra_rdoc_files: []
|
134
|
-
|
135
|
-
files:
|
110
|
+
files:
|
136
111
|
- .gitignore
|
112
|
+
- .rspec
|
113
|
+
- .travis.yml
|
137
114
|
- .yardopts
|
138
115
|
- Gemfile
|
139
116
|
- Guardfile
|
@@ -144,43 +121,48 @@ files:
|
|
144
121
|
- lib/to_lang.rb
|
145
122
|
- lib/to_lang/codemap.rb
|
146
123
|
- lib/to_lang/connector.rb
|
124
|
+
- lib/to_lang/core_ext.rb
|
147
125
|
- lib/to_lang/translatable.rb
|
148
126
|
- lib/to_lang/version.rb
|
149
127
|
- spec/spec_helper.rb
|
150
128
|
- spec/to_lang/connector_spec.rb
|
129
|
+
- spec/to_lang/core_ext_spec.rb
|
151
130
|
- spec/to_lang/translatable_spec.rb
|
152
131
|
- spec/to_lang_spec.rb
|
153
132
|
- to_lang.gemspec
|
154
|
-
has_rdoc: true
|
155
133
|
homepage: https://github.com/jimmycuadra/to_lang
|
156
134
|
licenses: []
|
157
|
-
|
158
135
|
post_install_message:
|
159
136
|
rdoc_options: []
|
160
|
-
|
161
|
-
require_paths:
|
137
|
+
require_paths:
|
162
138
|
- lib
|
163
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
139
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
164
140
|
none: false
|
165
|
-
requirements:
|
166
|
-
- -
|
167
|
-
- !ruby/object:Gem::Version
|
168
|
-
version:
|
169
|
-
|
141
|
+
requirements:
|
142
|
+
- - ! '>='
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '0'
|
145
|
+
segments:
|
146
|
+
- 0
|
147
|
+
hash: -2363449024598261982
|
148
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
170
149
|
none: false
|
171
|
-
requirements:
|
172
|
-
- -
|
173
|
-
- !ruby/object:Gem::Version
|
174
|
-
version:
|
150
|
+
requirements:
|
151
|
+
- - ! '>='
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
154
|
+
segments:
|
155
|
+
- 0
|
156
|
+
hash: -2363449024598261982
|
175
157
|
requirements: []
|
176
|
-
|
177
158
|
rubyforge_project: to_lang
|
178
|
-
rubygems_version: 1.
|
159
|
+
rubygems_version: 1.8.10
|
179
160
|
signing_key:
|
180
161
|
specification_version: 3
|
181
162
|
summary: Translate strings with Google Translate
|
182
|
-
test_files:
|
163
|
+
test_files:
|
183
164
|
- spec/spec_helper.rb
|
184
165
|
- spec/to_lang/connector_spec.rb
|
166
|
+
- spec/to_lang/core_ext_spec.rb
|
185
167
|
- spec/to_lang/translatable_spec.rb
|
186
168
|
- spec/to_lang_spec.rb
|