glosbe 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/glosbe.rb +53 -0
  3. metadata +58 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9c7fdc449bb0a0e06a1d21e27374eae9abf74a3f
4
+ data.tar.gz: e7785504248c66eb3f6c54be5d9428c1f40e1168
5
+ SHA512:
6
+ metadata.gz: 28669cc50968c290eab90c941b23ae8f1136993964ea7713b0d08189b2a2e8b3a91440efd5f145dcd16168c90fa4790b588c3eb6e9d981ec39812060af57224b
7
+ data.tar.gz: 4b2f969a14c0ad82bc6e039c89ef485693b6f299ed8ed3de8725704dc81c7516491a9f87edc5ecef44390255e5e547403ab23933799fea739c71cbb725a0dc18
data/lib/glosbe.rb ADDED
@@ -0,0 +1,53 @@
1
+ require "httparty"
2
+
3
+ module Glosbe
4
+ class Translate
5
+ include HTTParty
6
+ base_uri 'glosbe.com/gapi'
7
+ default_params format: 'json'
8
+ debug_output $stderr
9
+
10
+ def initialize(from, dest='eng')
11
+ raise(MissingFromLanguage) if from.nil?
12
+ @options = { query: {from: from, dest: dest }}
13
+ end
14
+
15
+ def self.Exception(*names)
16
+ cl = Module === self ? self : Object
17
+ names.each {|n| cl.const_set(n, Class.new(Exception))}
18
+ end
19
+
20
+ Exception :TranslateServerIsDown, :InvalidResponse,
21
+ :MissingFromLanguage, :MissingPhraseLanguage
22
+
23
+ def translate(phrase)
24
+ translate_and_definition(phrase)[:translated]
25
+ end
26
+
27
+ def translate_and_definition(phrase)
28
+ raise(MissingPhraseLanguage) if phrase.nil?
29
+ @options[:query][:phrase] = phrase
30
+
31
+ response = self.class.get('/translate', @options)
32
+ response = (response && response.parsed_response) ? response.parsed_response : nil
33
+
34
+ raise(TranslateServerIsDown) if (!response || response.empty?)
35
+ raise(InvalidResponse) if response['tuc'].count < 1
36
+ first_tuc = response['tuc'][0]
37
+ meanings = first_tuc['meanings']
38
+ target_definitions = []
39
+ source_definitions = []
40
+
41
+ meanings.each do |meaning|
42
+ if meaning['language'] == @options[:query][:dest]
43
+ target_definitions << meaning['text']
44
+ else
45
+ source_definitions << meaning['text']
46
+ end
47
+ end
48
+
49
+ {target_definitions: target_definitions, source_definitions: source_definitions, translated: first_tuc['phrase']['text']}
50
+ end
51
+
52
+ end
53
+ end
metadata ADDED
@@ -0,0 +1,58 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: glosbe
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jeremy Geros
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-07-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: httparty
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 0.13.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 0.13.1
27
+ description: Can translated and provide definitions
28
+ email: jeremy453@gmail.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/glosbe.rb
34
+ homepage: http://github.com/JeremyGeros/glosbe
35
+ licenses:
36
+ - MIT
37
+ metadata: {}
38
+ post_install_message:
39
+ rdoc_options: []
40
+ require_paths:
41
+ - lib
42
+ required_ruby_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - '>='
45
+ - !ruby/object:Gem::Version
46
+ version: 1.9.2
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - '>='
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ requirements: []
53
+ rubyforge_project:
54
+ rubygems_version: 2.2.1
55
+ signing_key:
56
+ specification_version: 4
57
+ summary: Ruby Client for the Glosbe Api
58
+ test_files: []