wduck 0.1.4 → 0.1.5
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.
- 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
|