wduck 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/wduck.rb +0 -1
- data/lib/wduck/duck.rb +27 -7
- data/lib/wduck/duck_helper.rb +8 -45
- data/lib/wduck/version.rb +1 -1
- data/test/test_helper.rb +3 -0
- data/test/wduck_test.rb +20 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ec17a8d9821173277285ce92766258cad6666dc
|
4
|
+
data.tar.gz: 73b50407080c286f77d17d2240d037140aa7cf60
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 958e92dfc65a53c0464575c5afee352fd9fe9973ed601fc1de0207e6afdf66d65c9488939bde0fab5c82ca7cf82334bafaadacc3e787f19714fa7070502c71f3
|
7
|
+
data.tar.gz: 44d7eeaa847eb085b5b97c7907843285238fd95f638c5173a98eaef6b0ada4a6178e42777cbe019350071af2654602fa2b02eb8d1ce50182fb738feb8e7a1a01
|
data/lib/wduck.rb
CHANGED
data/lib/wduck/duck.rb
CHANGED
@@ -5,18 +5,38 @@ module Wduck
|
|
5
5
|
|
6
6
|
class Ddg
|
7
7
|
def initialize(query)
|
8
|
-
@
|
8
|
+
@query = query
|
9
9
|
end
|
10
10
|
|
11
11
|
def result
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
search_result = DuckHelper::SearchResult.new(@query)
|
13
|
+
|
14
|
+
puts_color search_result.heading , :red
|
15
|
+
puts_color search_result.source , :green
|
16
|
+
puts_color search_result.answer , :yellow
|
17
|
+
puts_color search_result.abstract , :green
|
18
|
+
|
19
|
+
if search_result.related_topics
|
20
|
+
puts "\nRelated Topics".color(:white).underline
|
21
|
+
|
22
|
+
search_result.related_topics.each do |result|
|
23
|
+
puts_color result["Text"], :green
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def puts_color(type, color)
|
31
|
+
puts make_sane(type).color(color) if type
|
32
|
+
end
|
33
|
+
|
34
|
+
def make_sane(value)
|
35
|
+
re = /<("[^"]*"|'[^']*'|[^'">])*>/
|
36
|
+
HTMLEntities.new.decode(value.gsub(re, '')) #remove html tags, then make proper unicode conversion
|
17
37
|
end
|
38
|
+
|
18
39
|
end
|
19
40
|
|
20
41
|
end
|
21
|
-
|
22
42
|
end
|
data/lib/wduck/duck_helper.rb
CHANGED
@@ -9,41 +9,16 @@ module Wduck
|
|
9
9
|
API_URL = "https://api.duckduckgo.com/"
|
10
10
|
FORMAT = "json"
|
11
11
|
|
12
|
-
class
|
12
|
+
class SearchResult
|
13
|
+
attr_reader :heading, :source, :answer, :abstract, :related_topics
|
13
14
|
|
14
15
|
def initialize(query)
|
15
|
-
@parsed_data
|
16
|
-
@
|
17
|
-
@
|
18
|
-
@
|
19
|
-
@
|
20
|
-
@
|
21
|
-
end
|
22
|
-
|
23
|
-
def heading
|
24
|
-
puts "Heading".color(:cyan).underline
|
25
|
-
display @heading, :red
|
26
|
-
end
|
27
|
-
|
28
|
-
def source
|
29
|
-
display @abstract_source, :green
|
30
|
-
end
|
31
|
-
|
32
|
-
def abstract
|
33
|
-
display @abstract_text, :yellow
|
34
|
-
end
|
35
|
-
|
36
|
-
def topics_result
|
37
|
-
if @related_topics
|
38
|
-
puts "Related Topics".color(:white).underline
|
39
|
-
@related_topics.each do |result|
|
40
|
-
puts "#{display(result["Text"], :green)}" if result["Text"]
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def answer
|
46
|
-
display @answer_text, :yellow
|
16
|
+
@parsed_data = get_json_data query
|
17
|
+
@heading = check_data "Heading"
|
18
|
+
@source = check_data "AbstractSource"
|
19
|
+
@answer = check_data "Answer"
|
20
|
+
@abstract = check_data "AbstractText"
|
21
|
+
@related_topics = check_data "RelatedTopics"
|
47
22
|
end
|
48
23
|
|
49
24
|
private
|
@@ -57,19 +32,7 @@ module Wduck
|
|
57
32
|
def check_data(data)
|
58
33
|
@parsed_data[data].empty? ? nil : @parsed_data[data]
|
59
34
|
end
|
60
|
-
|
61
|
-
def display(type, color)
|
62
|
-
puts make_sane(type).color(color) if type
|
63
|
-
end
|
64
|
-
|
65
|
-
def make_sane(value)
|
66
|
-
# remove html tags, convert to proper utf codes
|
67
|
-
coder = HTMLEntities.new
|
68
|
-
re = /<("[^"]*"|'[^']*'|[^'">])*>/
|
69
|
-
coder.decode(value.gsub(re, '')) #remove html tags, then make proper unicode conversion
|
70
|
-
end
|
71
35
|
end
|
72
36
|
|
73
37
|
end
|
74
|
-
|
75
38
|
end
|
data/lib/wduck/version.rb
CHANGED
data/test/test_helper.rb
ADDED
data/test/wduck_test.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require_relative 'test_helper'
|
2
|
+
|
3
|
+
describe Wduck::Duck do
|
4
|
+
|
5
|
+
subject { Wduck::Duck.new("linux") }
|
6
|
+
describe "function result that gets called for duck" do
|
7
|
+
it "should respond to the function call" do
|
8
|
+
subject.must_respond_to(:result)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "function should be array of json objects" do
|
12
|
+
subject.result.must_be_instance_of(Array)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "check the results of for each condition" do
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wduck
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vysakh Sreeenivasan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -136,6 +136,8 @@ files:
|
|
136
136
|
- lib/wduck.rb
|
137
137
|
- lib/wduck/duck.rb
|
138
138
|
- lib/wduck/duck_helper.rb
|
139
|
+
- test/test_helper.rb
|
140
|
+
- test/wduck_test.rb
|
139
141
|
- README.rdoc
|
140
142
|
- wduck.rdoc
|
141
143
|
homepage: http://github.com/vysakh0/wduck
|