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.
@@ -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