yandex_dictionary_api 0.1.1 → 0.2.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.
- checksums.yaml +7 -0
- data/README.md +8 -0
- data/lib/yandex_dictionary_api.rb +40 -3
- data/lib/yandex_dictionary_api/api_error.rb +8 -8
- data/lib/yandex_dictionary_api/article.rb +63 -0
- data/lib/yandex_dictionary_api/version.rb +1 -1
- data/spec/spec_yandex_dictionary_api.rb +25 -12
- metadata +33 -44
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 34e76bdb7d5419b0e4c976f955e77d104c8eab85
|
4
|
+
data.tar.gz: 7a3360ce89a10f218b78de0c9e64c1631419977d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: edae715beae7c2594c3d9e2ea3c805c0cf02f2649425de32cfd21aec498ded1b8342acc4594c046d6a61a931aec39e8620b10ba4161aa8d929e6c7133b7cddae
|
7
|
+
data.tar.gz: e9670c646adfee781b57c28416f8c4e5df303b72289d75a6099d8aefd8bcc08226964cd80d385a0c041a2f7ed5ce0acab9005dba184ef00a7e6f3adc338be614
|
data/README.md
CHANGED
@@ -22,6 +22,14 @@ Or install it yourself as:
|
|
22
22
|
i.get_langs
|
23
23
|
params = { "lang" => "en-ru", "text" => "time" }
|
24
24
|
i.lookup( params )
|
25
|
+
articles = i.lookup_arr( params )
|
26
|
+
articles.each do |article|
|
27
|
+
article.text
|
28
|
+
article.translations
|
29
|
+
article.synonyms
|
30
|
+
article.means
|
31
|
+
article.examples
|
32
|
+
end
|
25
33
|
|
26
34
|
## Return
|
27
35
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require "yandex_dictionary_api/version"
|
2
2
|
require "yandex_dictionary_api/api_client"
|
3
3
|
require "yandex_dictionary_api/api_error"
|
4
|
+
require "yandex_dictionary_api/article"
|
4
5
|
require "json"
|
5
6
|
|
6
7
|
module YandexDictionaryApi
|
@@ -18,15 +19,27 @@ module YandexDictionaryApi
|
|
18
19
|
JSON.parse(response.body)
|
19
20
|
end
|
20
21
|
|
21
|
-
#Executes lookup (Interpretation and translate) request to yandex dictionary api
|
22
|
+
# Executes lookup (Interpretation and translate) request to yandex dictionary api
|
23
|
+
# Returns Json object (see Readme example).
|
22
24
|
def lookup(params_hash)
|
23
|
-
response =
|
24
|
-
self.check_response(response)
|
25
|
+
response = exec_lookup(params_hash)
|
25
26
|
JSON.parse(response.body)
|
26
27
|
end
|
27
28
|
|
29
|
+
# Executes lookup (Interpretation and translate) request to yandex dictionary api
|
30
|
+
# Returns Array of Articles (see Readme example).
|
31
|
+
def lookup_arr(params_hash)
|
32
|
+
response = exec_lookup(params_hash)
|
33
|
+
read_lookup_response(JSON.parse(response.body))
|
34
|
+
end
|
35
|
+
|
28
36
|
protected
|
29
37
|
|
38
|
+
def exec_lookup(params_hash)
|
39
|
+
response = @client.execute("lookup", params_hash)
|
40
|
+
self.check_response(response)
|
41
|
+
end
|
42
|
+
|
30
43
|
def check_response(response)
|
31
44
|
case response.code
|
32
45
|
when 200
|
@@ -45,5 +58,29 @@ module YandexDictionaryApi
|
|
45
58
|
raise ApiError.new(response.code, "Try again later.")
|
46
59
|
end
|
47
60
|
end
|
61
|
+
|
62
|
+
def read_lookup_response(hash)
|
63
|
+
res = Array.new
|
64
|
+
hash["def"].each do |hash|
|
65
|
+
res << read_response_hash(hash)
|
66
|
+
end
|
67
|
+
res
|
68
|
+
end
|
69
|
+
|
70
|
+
def read_response_hash(hash)
|
71
|
+
res = Article.new
|
72
|
+
hash.each_pair do |key, value|
|
73
|
+
unless value.is_a? Array
|
74
|
+
res.text = res.text << value << " "
|
75
|
+
else
|
76
|
+
if key == "tr"
|
77
|
+
res.recognize_translation(value)
|
78
|
+
else
|
79
|
+
raise StandardError.new("Unknown format of response message. Please, contact the developer.")
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
res
|
84
|
+
end
|
48
85
|
end
|
49
86
|
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
module YandexDictionaryApi
|
2
2
|
|
3
|
-
|
3
|
+
class ApiError < StandardError
|
4
4
|
|
5
|
-
|
5
|
+
attr_reader :code
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
7
|
+
def initialize(int_code, str_message)
|
8
|
+
@code = int_code
|
9
|
+
msg = "Response code: #{int_code}. " + str_message
|
10
|
+
super(msg)
|
11
|
+
end
|
12
|
+
end
|
13
13
|
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module YandexDictionaryApi
|
2
|
+
|
3
|
+
# Includes containing of interpretation article, that returns lookup request
|
4
|
+
class Article
|
5
|
+
attr_accessor :text
|
6
|
+
attr_accessor :translations
|
7
|
+
attr_accessor :synonyms
|
8
|
+
attr_accessor :means
|
9
|
+
attr_accessor :examples
|
10
|
+
|
11
|
+
def initialize()
|
12
|
+
@text = ""
|
13
|
+
@translations = ""
|
14
|
+
@synonyms = ""
|
15
|
+
@means = ""
|
16
|
+
@examples = ""
|
17
|
+
end
|
18
|
+
|
19
|
+
def recognize_translation(array)
|
20
|
+
array.each do |hash|
|
21
|
+
read_hash(hash)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
protected
|
26
|
+
|
27
|
+
def read_hash(hash)
|
28
|
+
hash.each_pair do |key, value|
|
29
|
+
unless value.is_a? Array
|
30
|
+
@translations << value << " "
|
31
|
+
else
|
32
|
+
case key
|
33
|
+
when "syn"
|
34
|
+
@synonyms << read_attr_string(value)
|
35
|
+
when "mean"
|
36
|
+
@means << read_attr_string(value)
|
37
|
+
when "ex"
|
38
|
+
@examples << read_attr_string(value)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def read_attr_string(list)
|
45
|
+
str_res = ""
|
46
|
+
if list.is_a? Array
|
47
|
+
list.each do |hash|
|
48
|
+
str_res << read_attr_string(hash)
|
49
|
+
end
|
50
|
+
return str_res
|
51
|
+
end
|
52
|
+
list.each_pair do |key, value|
|
53
|
+
if value.is_a? Array
|
54
|
+
str_res << read_attr_string(value)
|
55
|
+
else
|
56
|
+
str_res << "#{value}" << " "
|
57
|
+
end
|
58
|
+
end
|
59
|
+
str_res
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
@@ -2,19 +2,32 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
describe YandexDictionaryApi do
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
before do
|
6
|
+
$interface = YandexDictionaryApi::ApiInterface.new(ENV["KEY"])
|
7
|
+
end
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
it "should return a list of supported languages" do
|
10
|
+
res = $interface.get_langs
|
11
|
+
res.include?("en-en")
|
12
|
+
end
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
14
|
+
it "should return a class contains translation and interpretation of the text" do
|
15
|
+
params = { "lang" => "en-ru", "text" => "time" }
|
16
|
+
res = $interface.lookup(params)
|
17
|
+
res["def"][0]["text"] == "time"
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should return an array of instances Article class" do
|
21
|
+
params = { "lang" => "en-ru", "text" => "time" }
|
22
|
+
articles = $interface.lookup_arr( params )
|
23
|
+
articles.each do |article|
|
24
|
+
puts article.text
|
25
|
+
puts article.translations
|
26
|
+
puts article.synonyms
|
27
|
+
puts article.means
|
28
|
+
puts article.examples
|
29
|
+
end
|
30
|
+
true
|
31
|
+
end
|
19
32
|
|
20
33
|
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yandex_dictionary_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 0.1.1
|
4
|
+
version: 0.2.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- IronSerj
|
@@ -12,85 +11,75 @@ cert_chain: []
|
|
12
11
|
date: 2014-09-05 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
|
-
version_requirements: !ruby/object:Gem::Requirement
|
16
|
-
none: false
|
17
|
-
requirements:
|
18
|
-
- - ~>
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version: '1.7'
|
21
14
|
name: bundler
|
22
|
-
type: :development
|
23
15
|
requirement: !ruby/object:Gem::Requirement
|
24
|
-
none: false
|
25
16
|
requirements:
|
26
|
-
- - ~>
|
17
|
+
- - "~>"
|
27
18
|
- !ruby/object:Gem::Version
|
28
19
|
version: '1.7'
|
20
|
+
type: :development
|
29
21
|
prerelease: false
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
22
|
version_requirements: !ruby/object:Gem::Requirement
|
32
|
-
none: false
|
33
23
|
requirements:
|
34
|
-
- - ~>
|
24
|
+
- - "~>"
|
35
25
|
- !ruby/object:Gem::Version
|
36
|
-
version: '
|
26
|
+
version: '1.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
37
28
|
name: rake
|
38
|
-
type: :development
|
39
29
|
requirement: !ruby/object:Gem::Requirement
|
40
|
-
none: false
|
41
30
|
requirements:
|
42
|
-
- - ~>
|
31
|
+
- - "~>"
|
43
32
|
- !ruby/object:Gem::Version
|
44
33
|
version: '10.0'
|
34
|
+
type: :development
|
45
35
|
prerelease: false
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
36
|
version_requirements: !ruby/object:Gem::Requirement
|
48
|
-
none: false
|
49
37
|
requirements:
|
50
|
-
- -
|
38
|
+
- - "~>"
|
51
39
|
- !ruby/object:Gem::Version
|
52
|
-
version: '0'
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
53
42
|
name: httpclient
|
54
|
-
type: :runtime
|
55
43
|
requirement: !ruby/object:Gem::Requirement
|
56
|
-
none: false
|
57
44
|
requirements:
|
58
|
-
- -
|
45
|
+
- - ">="
|
59
46
|
- !ruby/object:Gem::Version
|
60
47
|
version: '0'
|
48
|
+
type: :runtime
|
61
49
|
prerelease: false
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
50
|
version_requirements: !ruby/object:Gem::Requirement
|
64
|
-
none: false
|
65
51
|
requirements:
|
66
|
-
- -
|
52
|
+
- - ">="
|
67
53
|
- !ruby/object:Gem::Version
|
68
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
69
56
|
name: json
|
70
|
-
type: :runtime
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
|
-
none: false
|
73
58
|
requirements:
|
74
|
-
- -
|
59
|
+
- - ">="
|
75
60
|
- !ruby/object:Gem::Version
|
76
61
|
version: '0'
|
62
|
+
type: :runtime
|
77
63
|
prerelease: false
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
64
|
version_requirements: !ruby/object:Gem::Requirement
|
80
|
-
none: false
|
81
65
|
requirements:
|
82
|
-
- -
|
66
|
+
- - ">="
|
83
67
|
- !ruby/object:Gem::Version
|
84
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
85
70
|
name: rspec
|
86
|
-
type: :development
|
87
71
|
requirement: !ruby/object:Gem::Requirement
|
88
|
-
none: false
|
89
72
|
requirements:
|
90
|
-
- -
|
73
|
+
- - ">="
|
91
74
|
- !ruby/object:Gem::Version
|
92
75
|
version: '0'
|
76
|
+
type: :development
|
93
77
|
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
94
83
|
description: Yandex dictionary API realization
|
95
84
|
email:
|
96
85
|
- iron.serj@gmail.com
|
@@ -98,7 +87,7 @@ executables: []
|
|
98
87
|
extensions: []
|
99
88
|
extra_rdoc_files: []
|
100
89
|
files:
|
101
|
-
- .gitignore
|
90
|
+
- ".gitignore"
|
102
91
|
- Gemfile
|
103
92
|
- LICENSE.txt
|
104
93
|
- README.md
|
@@ -106,6 +95,7 @@ files:
|
|
106
95
|
- lib/yandex_dictionary_api.rb
|
107
96
|
- lib/yandex_dictionary_api/api_client.rb
|
108
97
|
- lib/yandex_dictionary_api/api_error.rb
|
98
|
+
- lib/yandex_dictionary_api/article.rb
|
109
99
|
- lib/yandex_dictionary_api/version.rb
|
110
100
|
- spec/spec_helper.rb
|
111
101
|
- spec/spec_yandex_dictionary_api.rb
|
@@ -113,27 +103,26 @@ files:
|
|
113
103
|
homepage: https://github.com/IronSerj/yandex_dictionary_api
|
114
104
|
licenses:
|
115
105
|
- MIT
|
106
|
+
metadata: {}
|
116
107
|
post_install_message:
|
117
108
|
rdoc_options: []
|
118
109
|
require_paths:
|
119
110
|
- lib
|
120
111
|
required_ruby_version: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
112
|
requirements:
|
123
|
-
- -
|
113
|
+
- - ">="
|
124
114
|
- !ruby/object:Gem::Version
|
125
115
|
version: '0'
|
126
116
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
|
-
none: false
|
128
117
|
requirements:
|
129
|
-
- -
|
118
|
+
- - ">="
|
130
119
|
- !ruby/object:Gem::Version
|
131
120
|
version: '0'
|
132
121
|
requirements: []
|
133
122
|
rubyforge_project:
|
134
|
-
rubygems_version:
|
123
|
+
rubygems_version: 2.2.2
|
135
124
|
signing_key:
|
136
|
-
specification_version:
|
125
|
+
specification_version: 4
|
137
126
|
summary: Yandex dictionary API realization
|
138
127
|
test_files:
|
139
128
|
- spec/spec_helper.rb
|