related_word 0.1.14 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 38a0643e031caee5c778fda72b3ac7ac7f2fb010
4
- data.tar.gz: 67304bf0e115281056a2db311c41dd00b2f7f6cf
3
+ metadata.gz: b2d0f94d52b21f08075020aed0ee5faa1b233e3f
4
+ data.tar.gz: 2532360025a9f7df3c35a01c6172998f411cde70
5
5
  SHA512:
6
- metadata.gz: d21ee06ca9874983c145fd7d4f01f6b6bc11f1dd457e3aa19e12b26dc0b7a176e30f0d09cde1eccbb2172490dba00ea918266fa32c8345ae0f88194305e9de98
7
- data.tar.gz: a33632d1ef01befd9d2c6aaceeb15f96fd155e11e8bbd5e35ed4e2da13b2de1f9ce653bc0ba823b301433ffed9052948b9f9e9dccc764eebc686557b4bcc9b35
6
+ metadata.gz: 909a308579de489088b6759d840118008bfae38e390bdce919c2d6edeeb06b56a19392f28472efd86d47b02115b8fd5fc353f478523ac680a097b2fc48421e45
7
+ data.tar.gz: 33e5ad45a5fdc39cfa73ac6a59c31e4856f663871e17da9d93099e725026a19e497f54f247ca72b4ac655779ebfb06d49bb884c96705bc9dacb9dc96afef2286
data/lib/related_word.rb CHANGED
@@ -1,13 +1,10 @@
1
1
  require 'related_word/service'
2
+ require 'related_word/configure'
2
3
 
3
4
  class RelatedWord
4
5
  attr_reader :service
5
6
 
6
- def initialize(service = :semantic)
7
- @service = service
8
- end
9
-
10
7
  def find(word)
11
- Service.get(service).find(word)
8
+ Service.instance.find(word)
12
9
  end
13
10
  end
@@ -0,0 +1,17 @@
1
+ class RelatedWord
2
+ def self.config
3
+ yield(Configure) if block_given?
4
+ end
5
+
6
+ class Configure
7
+ # The service used for find related words
8
+ @service = :semantic
9
+
10
+ # The timeout of each request to the service
11
+ @timeout = 2000
12
+
13
+ class << self
14
+ attr_accessor :service, :timeout
15
+ end
16
+ end
17
+ end
@@ -2,14 +2,23 @@ require 'related_word/service/semantic_service'
2
2
 
3
3
  class RelatedWord
4
4
  class Service
5
- UnknownService = Class.new(StandardError)
5
+ class << self
6
+ def instance
7
+ instance_class.new
8
+ end
9
+
10
+ private
11
+
12
+ def instance_class
13
+ Object.const_get("RelatedWord::Service::#{class_name}")
14
+ end
15
+
16
+ def class_name
17
+ "#{service_name}Service"
18
+ end
6
19
 
7
- def self.get(service)
8
- case service
9
- when :semantic
10
- Service::SemanticService.new
11
- else
12
- raise UnknownService
20
+ def service_name
21
+ Configure.service.to_s.split('_').map(&:capitalize).join
13
22
  end
14
23
  end
15
24
  end
@@ -1,6 +1,7 @@
1
- require "json"
2
- require "net/http"
3
- require "uri"
1
+ require 'json'
2
+ require 'net/http'
3
+ require 'uri'
4
+ require 'timeout'
4
5
 
5
6
  class RelatedWord
6
7
  class Service
@@ -8,8 +9,10 @@ class RelatedWord
8
9
  LINK = "http://semantic-link.com/related.php?word="
9
10
 
10
11
  def find(word)
11
- resp = Net::HTTP.get_response(uri(word))
12
- JSON.parse(resp.body)
12
+ Timeout::timeout(Configure.timeout) do
13
+ resp = Net::HTTP.get_response(uri(word))
14
+ JSON.parse(resp.body)
15
+ end
13
16
  end
14
17
 
15
18
  private
@@ -1,3 +1,3 @@
1
1
  class RelatedWord
2
- VERSION = '0.1.14'
2
+ VERSION = '0.2'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: related_word
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.14
4
+ version: '0.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - MatBi
@@ -83,6 +83,7 @@ files:
83
83
  - bin/console
84
84
  - bin/setup
85
85
  - lib/related_word.rb
86
+ - lib/related_word/configure.rb
86
87
  - lib/related_word/service.rb
87
88
  - lib/related_word/service/semantic_service.rb
88
89
  - lib/related_word/version.rb