yandex_dictionary_api 0.1.1 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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 = @client.execute("lookup", params_hash)
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
- class ApiError < StandardError
3
+ class ApiError < StandardError
4
4
 
5
- attr_reader :code
5
+ attr_reader :code
6
6
 
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
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
@@ -1,3 +1,3 @@
1
1
  module YandexDictionaryApi
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -2,19 +2,32 @@ require "spec_helper"
2
2
 
3
3
  describe YandexDictionaryApi do
4
4
 
5
- before do
6
- $interface = YandexDictionaryApi::ApiInterface.new(ENV["KEY"])
7
- end
5
+ before do
6
+ $interface = YandexDictionaryApi::ApiInterface.new(ENV["KEY"])
7
+ end
8
8
 
9
- it "should return a list of supported languages" do
10
- res = $interface.get_langs
11
- res.include?("en-en")
12
- end
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
- 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
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
- prerelease:
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: '10.0'
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: 1.8.23.2
123
+ rubygems_version: 2.2.2
135
124
  signing_key:
136
- specification_version: 3
125
+ specification_version: 4
137
126
  summary: Yandex dictionary API realization
138
127
  test_files:
139
128
  - spec/spec_helper.rb