howdy 0.1.0 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +16 -5
- data/TODO +4 -0
- data/VERSION +1 -1
- data/bin/how +34 -19
- data/howdy.gemspec +5 -2
- data/lib/howdy/base.rb +10 -0
- data/lib/howdy/core_ext/ruby/string/integer.rb +8 -0
- data/lib/howdy/ui.rb +45 -0
- data/lib/howdy.rb +2 -0
- metadata +5 -2
data/README.rdoc
CHANGED
@@ -18,16 +18,27 @@ Howdy enables "how" binary in your system. If for example you want to know what
|
|
18
18
|
2.showing or characterized by awe.
|
19
19
|
3.Slang. very impressive: That new white convertible is totally awesome.
|
20
20
|
|
21
|
-
$ how -c
|
21
|
+
$ how -c
|
22
|
+
|
23
|
+
1. dictionary.com - English dictionary
|
24
|
+
2. urbandictionary.com - Slang dictionary
|
25
|
+
3. dict.pl - Polish-English dictionary
|
26
|
+
4. ling.pl - Polish-English dictionary
|
27
|
+
Choose [1..4]: 3
|
28
|
+
Seach in dict.pl: awesome
|
22
29
|
|
23
30
|
fantastyczny; zachwycający; niesamowity
|
24
31
|
|
25
32
|
= Available Dictionaries
|
26
33
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
34
|
+
* http://urbandictionary.com
|
35
|
+
* http://dictionary.com
|
36
|
+
* http://dict.pl
|
37
|
+
* http://ling.pl
|
38
|
+
|
39
|
+
= Documentation
|
40
|
+
|
41
|
+
http://howdy.lomnicki.com.pl
|
31
42
|
|
32
43
|
= Contributors:
|
33
44
|
* Paweł Pacana http://github.com/pawelpacana
|
data/TODO
ADDED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.5
|
data/bin/how
CHANGED
@@ -6,40 +6,55 @@ require File.join(File.dirname(__FILE__), '..', 'lib', 'howdy')
|
|
6
6
|
|
7
7
|
opts = OptionParser.new do |opts|
|
8
8
|
|
9
|
-
opts.banner = "Usage: #{$0} [
|
10
|
-
|
11
|
-
opts.on("-c", "--choose
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
9
|
+
opts.banner = "Usage: #{File.basename($0)} [-c|--choose] [-d|--dict INDEX_OR_LABEL] [-l|--list] [-h|--help] WORDS"
|
10
|
+
|
11
|
+
opts.on("-c", "--choose", "Interactively choose a dictionary") do |c|
|
12
|
+
if dict_klass = Howdy::UI.choose_dictionary
|
13
|
+
Howdy::Dictionary.set(dict_klass)
|
14
|
+
else
|
15
|
+
Howdy::UI.error "Dictionary: '#{c}' not found. Choose one of available dictionaries"
|
16
|
+
exit 1
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
opts.on("-d", "--dict INDEX_OR_LABEL", "Choose dictionary by index or label (-l lists available) dictionaries") do |d|
|
21
|
+
if d.integer?
|
22
|
+
index = d.to_i
|
23
|
+
unless Howdy::Dictionary.range_available.include?(index)
|
24
|
+
Howdy::UI.error "Index must be on of #{Howdy::Dictionary.range_available}"
|
25
|
+
exit 1
|
26
|
+
end
|
27
|
+
Howdy::Dictionary.set( Howdy::Dictionary.available[index-1] )
|
28
|
+
else
|
29
|
+
if dict_klass = Howdy::Dictionary.find_by_label(c)
|
30
|
+
Howdy::Dictionary.set(dict_klass)
|
31
|
+
else
|
32
|
+
Howdy::UI.error "Dictionary: '#{c}' not found. Choose one of available dictionaries"
|
33
|
+
exit 1
|
34
|
+
end
|
18
35
|
end
|
19
|
-
Howdy::Dictionary.set(dict)
|
20
36
|
end
|
21
37
|
|
22
38
|
opts.on("-l", "--list", "List available dictionaries") do |l|
|
23
|
-
Howdy::
|
24
|
-
|
25
|
-
end
|
26
|
-
exit
|
39
|
+
Howdy::UI.list_dictionaries
|
40
|
+
exit 1
|
27
41
|
end
|
28
42
|
|
29
43
|
opts.on_tail("-h", "--help", "Show this message") do |h|
|
30
|
-
|
31
|
-
exit
|
44
|
+
Howdy::UI.error opts
|
45
|
+
exit 1
|
32
46
|
end
|
33
47
|
|
34
48
|
end
|
35
49
|
opts.parse!
|
36
50
|
|
37
51
|
if ARGV.empty?
|
38
|
-
|
39
|
-
|
52
|
+
query = Howdy::UI.prompt("Search in #{Howdy::Dictionary.current.dict_label}")
|
53
|
+
else
|
54
|
+
query = ARGV.join(' ')
|
40
55
|
end
|
41
56
|
|
42
|
-
dict = Howdy::Dictionary.current.new(
|
57
|
+
dict = Howdy::Dictionary.current.new(query.strip)
|
43
58
|
dict.parse
|
44
59
|
dict.print
|
45
60
|
|
data/howdy.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{howdy}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["mlomnicki"]
|
12
|
-
s.date = %q{2010-02-
|
12
|
+
s.date = %q{2010-02-16}
|
13
13
|
s.default_executable = %q{how}
|
14
14
|
s.description = %q{Howdy is a tool that allows querying web dictionaries from a command line.}
|
15
15
|
s.email = %q{michal.lomnicki@gmail.com}
|
@@ -24,16 +24,19 @@ Gem::Specification.new do |s|
|
|
24
24
|
"LICENSE",
|
25
25
|
"README.rdoc",
|
26
26
|
"Rakefile",
|
27
|
+
"TODO",
|
27
28
|
"VERSION",
|
28
29
|
"bin/how",
|
29
30
|
"howdy.gemspec",
|
30
31
|
"lib/howdy.rb",
|
31
32
|
"lib/howdy/base.rb",
|
33
|
+
"lib/howdy/core_ext/ruby/string/integer.rb",
|
32
34
|
"lib/howdy/core_ext/ruby/string/underscore.rb",
|
33
35
|
"lib/howdy/dictionaries/dict_pl.rb",
|
34
36
|
"lib/howdy/dictionaries/dictionary_com.rb",
|
35
37
|
"lib/howdy/dictionaries/ling_pl.rb",
|
36
38
|
"lib/howdy/dictionaries/urban_dictionary_com.rb",
|
39
|
+
"lib/howdy/ui.rb",
|
37
40
|
"spec/howdy_spec.rb",
|
38
41
|
"spec/spec_helper.rb"
|
39
42
|
]
|
data/lib/howdy/base.rb
CHANGED
@@ -31,6 +31,16 @@ module Howdy # :nodoc
|
|
31
31
|
@@available_dictionaries ||= []
|
32
32
|
end
|
33
33
|
|
34
|
+
# Returns range from 1 to total dictionaries count (1..Dictionary.available.size)
|
35
|
+
def self.range_available
|
36
|
+
(1..available.size)
|
37
|
+
end
|
38
|
+
|
39
|
+
# Find dictionary class by label
|
40
|
+
def self.find_by_label(label)
|
41
|
+
available.detect { |dict| dict.dict_label == label.to_s }
|
42
|
+
end
|
43
|
+
|
34
44
|
# Base class for all dictionaries. Inherit from it if you want to implement
|
35
45
|
# your own dictionary.
|
36
46
|
# Example:
|
data/lib/howdy/ui.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
module Howdy
|
2
|
+
# Layer for user interface. In the simplest case it's just standard output.
|
3
|
+
class UI
|
4
|
+
|
5
|
+
class << self
|
6
|
+
|
7
|
+
# Displays message on defined output (stdout by default)
|
8
|
+
def display(message)
|
9
|
+
puts message
|
10
|
+
end
|
11
|
+
|
12
|
+
# Displays message on defined output (stderr by default)
|
13
|
+
def error(message)
|
14
|
+
$stderr.puts message
|
15
|
+
end
|
16
|
+
|
17
|
+
# prints list of available dictionaries
|
18
|
+
def list_dictionaries
|
19
|
+
Dictionary.available.each_with_index do |dict, idx|
|
20
|
+
display " #{idx+1}. #{dict.dict_label} - #{dict.dict_description}"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# Display message and wait for user input.
|
25
|
+
# Returns captured data
|
26
|
+
def prompt(message)
|
27
|
+
print "#{message}: "
|
28
|
+
gets
|
29
|
+
end
|
30
|
+
|
31
|
+
def choose_dictionary
|
32
|
+
list_dictionaries
|
33
|
+
range = Dictionary.range_available
|
34
|
+
index = prompt("Choose [#{range}]").to_i
|
35
|
+
unless range.include?(index)
|
36
|
+
error "No such dictionary. Choose one number of [#{range}]"
|
37
|
+
exit 1
|
38
|
+
end
|
39
|
+
Dictionary.available[index-1]
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
data/lib/howdy.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
$: << File.join(File.dirname(__FILE__), 'howdy')
|
2
2
|
|
3
3
|
require 'core_ext/ruby/string/underscore'
|
4
|
+
require 'core_ext/ruby/string/integer'
|
4
5
|
require 'base'
|
6
|
+
require 'ui'
|
5
7
|
Dir[File.join(File.dirname(__FILE__), 'howdy', 'dictionaries', '*.rb')].each { |dict| require dict }
|
6
8
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: howdy
|
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
|
- mlomnicki
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-02-
|
12
|
+
date: 2010-02-16 00:00:00 +01:00
|
13
13
|
default_executable: how
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -47,16 +47,19 @@ files:
|
|
47
47
|
- LICENSE
|
48
48
|
- README.rdoc
|
49
49
|
- Rakefile
|
50
|
+
- TODO
|
50
51
|
- VERSION
|
51
52
|
- bin/how
|
52
53
|
- howdy.gemspec
|
53
54
|
- lib/howdy.rb
|
54
55
|
- lib/howdy/base.rb
|
56
|
+
- lib/howdy/core_ext/ruby/string/integer.rb
|
55
57
|
- lib/howdy/core_ext/ruby/string/underscore.rb
|
56
58
|
- lib/howdy/dictionaries/dict_pl.rb
|
57
59
|
- lib/howdy/dictionaries/dictionary_com.rb
|
58
60
|
- lib/howdy/dictionaries/ling_pl.rb
|
59
61
|
- lib/howdy/dictionaries/urban_dictionary_com.rb
|
62
|
+
- lib/howdy/ui.rb
|
60
63
|
- spec/howdy_spec.rb
|
61
64
|
- spec/spec_helper.rb
|
62
65
|
has_rdoc: true
|