dict 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/translate +11 -25
- data/lib/dict.rb +2 -2
- data/lib/wiktionary.rb +9 -1
- metadata +1 -1
data/bin/translate
CHANGED
@@ -8,33 +8,19 @@ if ARGV.empty? then puts "Please enter the word. (-h for help)" ; exit end
|
|
8
8
|
|
9
9
|
opts = Slop.parse do
|
10
10
|
banner "Usage: $translate -w word [Options]"
|
11
|
-
on '-w',
|
12
|
-
on '-h', '
|
13
|
-
on '-t',
|
14
|
-
on '-d',
|
15
|
-
on '-s',
|
11
|
+
on '-w', :word=, 'after this option is a word to translate'
|
12
|
+
on '-h', :help=, 'help', :argument => :optional
|
13
|
+
on '-t', :time=, 'time in seconds, default: 300 seconds', :as => :int
|
14
|
+
on '-d', :dict=, 'dictionaries: all, wiki etc., default is all dictionaries'
|
15
|
+
on '-s', :status=, 'status of API', :argument => :optional
|
16
16
|
end
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
=begin
|
21
|
-
# problem with situation where first word after
|
22
|
-
# translate is --help or -h ...
|
23
|
-
unless ARGV[0].nil?
|
24
|
-
puts Dict::Translation.get_response(ARGV[0])
|
25
|
-
end
|
26
|
-
|
27
|
-
unless opts[:time].nil?
|
28
|
-
puts Dict::Translation.get_response(ARGV[0],opts[:time])
|
29
|
-
end
|
30
|
-
|
31
|
-
unless opts[:dict].nil?
|
32
|
-
# todo: refactor get_response because it has not a dict
|
33
|
-
# parameter
|
34
|
-
end
|
35
|
-
=end
|
36
|
-
puts opts if opts[:help]
|
37
|
-
puts Dict::Translation.status unless opts[:status].nil?
|
18
|
+
# translation
|
19
|
+
puts Dict::Translation.get_response(opts[:word], opts[:time] || 300, opts[:dict] || "all") if opts.word?
|
38
20
|
|
21
|
+
# help
|
22
|
+
puts opts if opts.help?
|
39
23
|
|
24
|
+
# status
|
25
|
+
puts Dict::Translation.status if opts.status?
|
40
26
|
|
data/lib/dict.rb
CHANGED
@@ -17,8 +17,8 @@ module Dict
|
|
17
17
|
res.message
|
18
18
|
end
|
19
19
|
|
20
|
-
def self.get_response(word, time
|
21
|
-
uri = URI.parse(URI.escape("http://dict-app-staging.shellyapp.com/#{word}"))
|
20
|
+
def self.get_response(word, time, dict)
|
21
|
+
uri = URI.parse(URI.escape("http://dict-app-staging.shellyapp.com/#{dict}/#{word}"))
|
22
22
|
begin
|
23
23
|
Timeout::timeout(time.to_i) do
|
24
24
|
res = Net::HTTP.get(uri)
|
data/lib/wiktionary.rb
CHANGED
@@ -9,6 +9,11 @@ class Wiktionary
|
|
9
9
|
@uri = URI(URI.escape(WIKI_URL + escaped_word))
|
10
10
|
end
|
11
11
|
|
12
|
+
#
|
13
|
+
# Method returns an array of translations and word usage examples
|
14
|
+
# For instance to given word 'samochód' it returns:
|
15
|
+
# [["car","automobile"],["She drove her car to the mall.", "The conductor linked the cars to the locomotive.", "The 11:10 to London was operated by a 4-car diesel multiple unit"]
|
16
|
+
#
|
12
17
|
def translate
|
13
18
|
req = Net::HTTP::Get.new(@uri.path)
|
14
19
|
response, translations, sentences = nil, [], []
|
@@ -16,6 +21,9 @@ class Wiktionary
|
|
16
21
|
response = http.request(req).body
|
17
22
|
|
18
23
|
doc = Nokogiri::HTML(response)
|
24
|
+
doc.css('div#mw-content-text h2:first .mw-headline').each do |lang|
|
25
|
+
raise "Given word is not polish." if lang.content != 'Polish'
|
26
|
+
end
|
19
27
|
doc.css('div#mw-content-text[lang=en] ol > li a').each do |link|
|
20
28
|
translations.push link.content
|
21
29
|
end
|
@@ -23,7 +31,7 @@ class Wiktionary
|
|
23
31
|
translations.each do |item|
|
24
32
|
escaped_item = item.tr(' ', '_')
|
25
33
|
sentence = Nokogiri::HTML(Net::HTTP.get(URI(WIKI_URL + escaped_item)))
|
26
|
-
sentence.css('div#mw-content-text[lang=en] ol > li dl dd i').each do |s|
|
34
|
+
sentence.css('div#mw-content-text[lang=en] ol:first > li dl dd i').each do |s|
|
27
35
|
sentences.push s.content
|
28
36
|
end
|
29
37
|
end
|