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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 704a85c79077c27c86f953ac184721e702556472
4
- data.tar.gz: cb3248e5f5a28b784c4e42ebcc975ea166c7b8d8
3
+ metadata.gz: 7ec17a8d9821173277285ce92766258cad6666dc
4
+ data.tar.gz: 73b50407080c286f77d17d2240d037140aa7cf60
5
5
  SHA512:
6
- metadata.gz: aaf50ada88a847f57667aac2d8096095517ac2c99babfdec8c518d59f5797ede765ab3e2b7e3b2a0135a2b4caa79fb5fe16a22b45117e8621726643e88ec3a8b
7
- data.tar.gz: efdbe13690fc240571ce3c03cc16fb02d29214fbb8e64a678253378cc875ed2a9d1341d1c0dd23c23f4a18efda373f8f0a5322d7d49ad52cedd3bc9314dec78e
6
+ metadata.gz: 958e92dfc65a53c0464575c5afee352fd9fe9973ed601fc1de0207e6afdf66d65c9488939bde0fab5c82ca7cf82334bafaadacc3e787f19714fa7070502c71f3
7
+ data.tar.gz: 44d7eeaa847eb085b5b97c7907843285238fd95f638c5173a98eaef6b0ada4a6178e42777cbe019350071af2654602fa2b02eb8d1ce50182fb738feb8e7a1a01
@@ -1,5 +1,4 @@
1
1
  require 'wduck/version'
2
2
  require 'wduck/duck'
3
- # you just need to require this one file in your bin file
4
3
  module Wduck
5
4
  end
@@ -5,18 +5,38 @@ module Wduck
5
5
 
6
6
  class Ddg
7
7
  def initialize(query)
8
- @search_data = DuckHelper::SearchData.new(query)
8
+ @query = query
9
9
  end
10
10
 
11
11
  def result
12
- @search_data.heading # eg: Linus Torvalds
13
- @search_data.source # eg: Wikipedia
14
- @search_data.answer # Helsiniki Kernel Hacker
15
- @search_data.abstract # when results has too options like Ruby: a lang, a gem etc
16
- @search_data.topics_result #the all related results/topics
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
@@ -9,41 +9,16 @@ module Wduck
9
9
  API_URL = "https://api.duckduckgo.com/"
10
10
  FORMAT = "json"
11
11
 
12
- class SearchData
12
+ class SearchResult
13
+ attr_reader :heading, :source, :answer, :abstract, :related_topics
13
14
 
14
15
  def initialize(query)
15
- @parsed_data = get_json_data query
16
- @answer_data = check_data "Answer"
17
- @abstract_text = check_data "AbstractText"
18
- @related_topics = check_data "RelatedTopics"
19
- @heading = check_data "Heading"
20
- @abstract_source = check_data "AbstractSource"
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
@@ -1,3 +1,3 @@
1
1
  module Wduck
2
- VERSION = '0.1.4'
2
+ VERSION = '0.1.5'
3
3
  end
@@ -0,0 +1,3 @@
1
+ require 'minitest/autorun'
2
+ require 'minitest/pride'
3
+ require File.expand_path('../../lib/wduck.rb', __FILE__)
@@ -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
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-09 00:00:00.000000000 Z
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