ud 0.2.0 → 0.2.1

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: 6c17aeb74c72f8713fd49862c33fa292f256174d
4
- data.tar.gz: f1964b4cf50361f5b2765aee3e136cc96d806c61
3
+ metadata.gz: 1d511a1877540f177fd4d65e6f08f6bb292fbd6a
4
+ data.tar.gz: 31b686725109b06ea9ea5813dcf8a6380d6ecce4
5
5
  SHA512:
6
- metadata.gz: cf6a6865b51c9ae2aebd9a063d365b3457aad7aa7a946c706eceb46b299ffcf4a36e981c1d85ee0352693d4c92de840314be300dda31cc9b87742aca105929f4
7
- data.tar.gz: e69cc02df921261f58893efb090f8debae155845d4a144f658ad79f1ce15090a9c4903d037bb728cf5a5b9fcd0f16e447b566ecf35566301c71cf364dd79ea92
6
+ metadata.gz: 749cb4bf772d90c32e4a81783d557773fa993bce4208e14ad357da07e222501c068c3c307ab1344c941d6e4eba5aac14dabbd8e1a7cef5084fe140fd39067005
7
+ data.tar.gz: 9b4796d197fd96eb62299281851005de965cbd11c84b5c8d7d45fd8b29fbfa7fd2f7d3de880449cf263fbba5dbb55fbe3080c27780bb9b50c97dbe00028718da
data/bin/ud CHANGED
@@ -1,6 +1,9 @@
1
1
  #! /usr/bin/env ruby
2
2
  # -*- coding: UTF-8 -*-
3
3
 
4
+ # clean interrupt
5
+ trap('INT') { abort }
6
+
4
7
  require 'trollop'
5
8
  require 'ud'
6
9
 
data/lib/ud/formatting.rb CHANGED
@@ -1,12 +1,15 @@
1
- #! /usr/bin/env ruby
2
1
  # -*- coding: UTF-8 -*-
3
2
 
4
3
  module UD
4
+
5
+ # Formatting tools for {UD.query}'s output
5
6
  module Formatting
6
7
  class << self
7
8
 
8
- # Fit a text in a given width (number of chars). It returns
9
- # a list of lines of text.
9
+ # Fit a text in a given width (number of chars).
10
+ # @param txt [String]
11
+ # @param width [Integer] maximum width
12
+ # @return [Array] list of lines of text
10
13
  def fit(txt, width=79)
11
14
  return [] if width < 1
12
15
 
@@ -17,8 +20,9 @@ module UD
17
20
 
18
21
  # Add a tab at the beginning of a text. If it's a list, add a tab at
19
22
  # the beginning of each element.
20
- # [txt] The text to tab, may be a string or a list of strings
21
- # [width] The width (number of spaces) of a tab
23
+ # @param txt [String] The text to tab, may be a string or a list of strings
24
+ # @param width [Integer] tab width
25
+ # @return [String]
22
26
  def tab(txt, width=4)
23
27
  width = 0 if width < 0
24
28
 
@@ -30,7 +34,10 @@ module UD
30
34
  end
31
35
 
32
36
  # Format results for text output (e.g. in the terminal)
33
- # [results] this must be an array of results, as returned by +UD.query+.
37
+ # @param results [Array<Hash>] this must be an array of results, as
38
+ # returned by {UD.query}.
39
+ # @param color [Boolean] colored output
40
+ # @return [String]
34
41
  def text(results, color=true)
35
42
  require 'colored' if color
36
43
 
@@ -50,14 +57,16 @@ module UD
50
57
  definition = tab(fit(r[:definition], 75)).join("\n")
51
58
  example = tab(fit(r[:example], 75)).join("\n")
52
59
 
53
- s = ''
60
+ <<-EOD
61
+ * #{word} (#{votes}):
62
+
63
+ #{definition}
64
+
65
+ Example:
66
+ #{example}
67
+
54
68
 
55
- s << "* #{word} (#{votes}):\n"
56
- s << "\n"
57
- s << definition
58
- s << "\n\n Example:\n"
59
- s << example
60
- s << "\n\n"
69
+ EOD
61
70
 
62
71
  end.join("\n")
63
72
  end
data/lib/ud.rb CHANGED
@@ -1,4 +1,3 @@
1
- #! /usr/bin/env ruby
2
1
  # -*- coding: UTF-8 -*-
3
2
 
4
3
  require 'uri'
@@ -12,30 +11,28 @@ require File.dirname(__FILE__) + '/ud/formatting'
12
11
  module UD
13
12
  class << self
14
13
 
14
+ # @return [String] the current gem's version
15
15
  def version
16
- '0.2.0'
16
+ '0.2.1'
17
17
  end
18
18
 
19
19
  # Get the search URL to query for a given term.
20
- # [term] the term to search for. It must be a string, spaces are allowed
20
+ # @param term [String] the term to search for. It must be a string, spaces
21
+ # are allowed.
22
+ # @return [String]
21
23
  def search_url(term='')
22
24
  param = URI.encode_www_form('term' => term)
23
25
  "http://api.urbandictionary.com/v0/define?#{param}"
24
26
  end
25
27
 
26
- # Get the text of an element. This is an helper for internal usage.
27
- def text(el)
28
- el.text.strip.gsub(/\r/, "\n")
29
- rescue
30
- ''
31
- end
32
-
33
28
  # Query the website and return a list of definitions for the provided term.
34
29
  # This list may be empty if there's no result.
35
- # [term] the term to search for
36
- # [opts] options. This is used by the command-line tool. +:count+ is the
37
- # maximum number of results to return, +:ratio+ is the minimum
38
- # upvotes/downvotes ratio. Other options may be added in the future.
30
+ # @param term [String] the term to search for
31
+ # @param opts [Hash] options. This is used by the command-line tool.
32
+ # +:count+ is the maximum number of results to return,
33
+ # +:ratio+ is the minimum upvotes/downvotes ratio. Other
34
+ # options may be added in the future.
35
+ # @return [Array<Hash>]
39
36
  def query(term, *opts)
40
37
 
41
38
  opts = {:count => 1, :ratio => 0.0}.merge(opts[0] || {})
@@ -61,7 +58,10 @@ module UD
61
58
  end
62
59
 
63
60
  # Format results for output
64
- # [results] this must be an array of results, as returned by +UD.query+.
61
+ # @param results [Array] this must be an array of results, as returned by
62
+ # +UD.query+.
63
+ # @param color [Boolean] colored output
64
+ # @return [String]
65
65
  def format_results(results, color=true)
66
66
  UD::Formatting.text(results, color)
67
67
  end
@@ -12,42 +12,13 @@ end
12
12
 
13
13
  class UD_Formatting_test < Test::Unit::TestCase
14
14
 
15
- # == UD#text == #
16
-
17
- def test_text_empty
18
- el = FakeHTMLElement.new
19
- assert_equal('', UD.text(el))
20
- end
21
-
22
- def test_text_trailing_spaces
23
- el = FakeHTMLElement.new('foo ')
24
- assert_equal('foo', UD.text(el))
25
-
26
- el = FakeHTMLElement.new(" bar \n")
27
- assert_equal('bar', UD.text(el))
28
- end
29
-
30
- def test_text_newline
31
- el = FakeHTMLElement.new("a\rb")
32
- assert_equal("a\nb", UD.text(el))
33
-
34
- el = FakeHTMLElement.new("a\nb")
35
- assert_equal("a\nb", UD.text(el))
36
- end
37
-
38
- def test_text_invalid_element
39
- assert_equal('', UD.text(nil))
40
- assert_equal('', UD.text(true))
41
- assert_equal('', UD.text('foo'))
42
- end
43
-
44
15
  # == UD#format_results == #
45
16
 
46
17
  def test_format_results_empty_list
47
18
  assert_equal('', UD.format_results([]))
48
19
  end
49
20
 
50
- def test_format_results_one_element
21
+ def test_format_results_one_element_no_color
51
22
  res = {
52
23
  :word => 'XYZ',
53
24
  :upvotes => 42,
@@ -67,7 +38,32 @@ class UD_Formatting_test < Test::Unit::TestCase
67
38
  EOS
68
39
 
69
40
  assert_equal(expected.strip, output)
41
+ end
70
42
 
43
+ def test_format_results_one_element_color
44
+ green = "\e[32m"
45
+ bold = "\e[1m"
46
+ red = "\e[31m"
47
+ reset = "\e[0m"
48
+ res = {
49
+ :word => 'XYZ',
50
+ :upvotes => 42,
51
+ :downvotes => 78,
52
+ :definition => 'xyz',
53
+ :example => 'zyx'
54
+ }
55
+
56
+ output = UD.format_results([res], true).strip
57
+ expected = <<EOS
58
+ * #{bold}XYZ#{reset} (#{green}42#{reset}/#{red}78#{reset}):
59
+
60
+ xyz
61
+
62
+ Example:
63
+ zyx
64
+ EOS
65
+
66
+ assert_equal(expected.strip, output)
71
67
  end
72
68
 
73
69
  # == UD::Formatting#fit == #
data/tests/query_tests.rb CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  require File.dirname(__FILE__) + '/fake_responses'
5
5
 
6
- class UD_Formatting_test < Test::Unit::TestCase
6
+ class UD_Query_test < Test::Unit::TestCase
7
7
 
8
8
  ROOT_URL = 'http://api.urbandictionary.com/v0/define'
9
9
 
data/tests/tests.rb CHANGED
@@ -1,12 +1,16 @@
1
1
  #! /usr/bin/env ruby
2
2
  # -*- coding: UTF-8 -*-
3
3
 
4
+ require 'coveralls'
5
+ Coveralls.wear!
6
+
4
7
  require 'test/unit'
5
8
  require 'simplecov'
6
9
 
7
10
  test_dir = File.expand_path( File.dirname(__FILE__) )
8
11
 
9
- SimpleCov.start { add_filter '/tests/' } if ENV['COVERAGE']
12
+ SimpleCov.formatter = Coveralls::SimpleCov::Formatter
13
+ SimpleCov.start { add_filter '/tests/' }
10
14
 
11
15
  require 'ud'
12
16
 
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Baptiste Fontaine
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-22 00:00:00.000000000 Z
11
+ date: 2014-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: 1.8.0
19
+ version: '2.8'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: 1.8.0
26
+ version: '2.8'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: trollop
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -56,58 +56,72 @@ dependencies:
56
56
  name: simplecov
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '0.7'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: '0.7'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '10.1'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ~>
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: '10.1'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: test-unit
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ~>
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: '2.5'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ~>
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: '2.5'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: fakeweb
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - ~>
102
102
  - !ruby/object:Gem::Version
103
- version: '0'
103
+ version: '1.3'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ~>
109
109
  - !ruby/object:Gem::Version
110
- version: '0'
110
+ version: '1.3'
111
+ - !ruby/object:Gem::Dependency
112
+ name: coveralls
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: '0.7'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ~>
123
+ - !ruby/object:Gem::Version
124
+ version: '0.7'
111
125
  description: Get words' definitions from Urban Dictionary on the command-line.
112
126
  email: batifon@yahoo.fr
113
127
  executables:
@@ -115,12 +129,12 @@ executables:
115
129
  extensions: []
116
130
  extra_rdoc_files: []
117
131
  files:
132
+ - bin/ud
118
133
  - lib/ud.rb
119
134
  - lib/ud/formatting.rb
120
135
  - tests/formatting_tests.rb
121
136
  - tests/query_tests.rb
122
137
  - tests/tests.rb
123
- - bin/ud
124
138
  homepage: https://github.com/bfontaine/ud
125
139
  licenses:
126
140
  - MIT
@@ -141,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
141
155
  version: '0'
142
156
  requirements: []
143
157
  rubyforge_project:
144
- rubygems_version: 2.0.3
158
+ rubygems_version: 2.2.1
145
159
  signing_key:
146
160
  specification_version: 4
147
161
  summary: Urban Dictionary unofficial scrapper
@@ -149,3 +163,4 @@ test_files:
149
163
  - tests/formatting_tests.rb
150
164
  - tests/query_tests.rb
151
165
  - tests/tests.rb
166
+ has_rdoc: