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 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