howdy 0.1.6 → 0.2.0

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.
data/README.rdoc CHANGED
@@ -4,7 +4,6 @@ Dead easy command line dictionary.
4
4
 
5
5
  = Installation
6
6
 
7
- gem sources -a http://gemcutter.org
8
7
  gem install howdy
9
8
 
10
9
  = Description
@@ -18,17 +17,29 @@ Howdy enables "how" binary in your system. If for example you want to know what
18
17
  2.showing or characterized by awe.
19
18
  3.Slang. very impressive: That new white convertible is totally awesome.
20
19
 
21
- $ how -c
20
+ $ how -c awesome
22
21
 
23
22
  1. dictionary.com - English dictionary
24
23
  2. urbandictionary.com - Slang dictionary
25
24
  3. dict.pl - Polish-English dictionary
26
25
  4. ling.pl - Polish-English dictionary
27
26
  Choose [1..4]: 3
28
- Seach in dict.pl: awesome
29
27
 
30
28
  fantastyczny; zachwycający; niesamowity
31
29
 
30
+ = Configuration
31
+
32
+ Configuration file is created on first howdy run.
33
+ It's available in $HOME/.howdy
34
+
35
+ Currently it handles only 1 option: default_dictionary
36
+ Examples:
37
+ default_dictionary = dictionary.com
38
+ Or
39
+ default_dictionary = urbandictionary.com
40
+
41
+ Just pass one of available dictionaries listed below.
42
+
32
43
  = Available Dictionaries
33
44
 
34
45
  * http://urbandictionary.com
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.6
1
+ 0.2.0
data/howdy.gemspec CHANGED
@@ -1,22 +1,23 @@
1
1
  # Generated by jeweler
2
- # DO NOT EDIT THIS FILE
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{howdy}
8
- s.version = "0.1.6"
8
+ s.version = "0.2.0"
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-17}
12
+ s.date = %q{2010-03-12}
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}
16
16
  s.executables = ["how"]
17
17
  s.extra_rdoc_files = [
18
18
  "LICENSE",
19
- "README.rdoc"
19
+ "README.rdoc",
20
+ "TODO"
20
21
  ]
21
22
  s.files = [
22
23
  ".document",
@@ -30,12 +31,14 @@ Gem::Specification.new do |s|
30
31
  "howdy.gemspec",
31
32
  "lib/howdy.rb",
32
33
  "lib/howdy/base.rb",
34
+ "lib/howdy/config.rb",
33
35
  "lib/howdy/core_ext/ruby/string/integer.rb",
34
36
  "lib/howdy/core_ext/ruby/string/underscore.rb",
35
37
  "lib/howdy/dictionaries/dict_pl.rb",
36
38
  "lib/howdy/dictionaries/dictionary_com.rb",
37
39
  "lib/howdy/dictionaries/ling_pl.rb",
38
40
  "lib/howdy/dictionaries/urban_dictionary_com.rb",
41
+ "lib/howdy/templates/howdy",
39
42
  "lib/howdy/ui.rb",
40
43
  "spec/howdy_spec.rb",
41
44
  "spec/spec_helper.rb"
@@ -66,3 +69,4 @@ Gem::Specification.new do |s|
66
69
  s.add_dependency(%q<rspec>, [">= 0"])
67
70
  end
68
71
  end
72
+
data/lib/howdy/base.rb CHANGED
@@ -10,6 +10,10 @@ module Howdy # :nodoc
10
10
  # Howdy::Dictionary exposes accessors of dictionaries collection.
11
11
  module Dictionary
12
12
 
13
+ def self.config
14
+ @@config ||= Config.new.parse
15
+ end
16
+
13
17
  # Returns current dictionary class
14
18
  def self.current
15
19
  @@dictionary ||= default
@@ -23,7 +27,7 @@ module Howdy # :nodoc
23
27
 
24
28
  # Returns default dictionary
25
29
  def self.default
26
- DictionaryCom
30
+ @@default ||= (find_by_label(config[:default_dictionary]) || DictionaryCom)
27
31
  end
28
32
 
29
33
  # Returns array of available dictionaries
@@ -0,0 +1,69 @@
1
+ require 'fileutils'
2
+
3
+ module Howdy
4
+
5
+ # Howdy configuration.
6
+ # Configuration file points to $HOME/.howdy by default
7
+ class Config < Hash
8
+
9
+ attr_reader :file
10
+
11
+ # Path of default configuration file
12
+ # It's copied to user directory if config file doesn't exist.
13
+ TEMPLATE_PATH = File.join(File.dirname(__FILE__), 'templates', 'howdy')
14
+
15
+ def initialize(file = self.class.config_path)
16
+ @file = file
17
+ end
18
+
19
+ # Parse file and associate options to self
20
+ # example:
21
+ # howdy.conf:
22
+ # default_dictionary = dictionary.com
23
+ # verbose = true
24
+ #
25
+ # c = Config.new('howdy.conf')
26
+ # c.parse
27
+ # c.inspect
28
+ # { :default_dictionary => 'dictionary.com', :verbose => 'true' }
29
+ def parse
30
+ readlines.each do |line|
31
+ next if line =~ /\s*#/
32
+ key, value = line.split('=', 2).map! { |arg| arg.strip }
33
+ self[key.to_sym] = value
34
+ end
35
+ self
36
+ end
37
+
38
+ # path of configuration file
39
+ # example: /home/stella/.howdy
40
+ def self.config_path
41
+ @config_path ||= File.join(root_config_path, config_filename)
42
+ end
43
+
44
+ # root directory of config file
45
+ # example: /home/stella
46
+ def self.root_config_path
47
+ @root_config_path ||= (ENV['HOME'] || '')
48
+ end
49
+
50
+ # filename of configuration file
51
+ # example: .howdy
52
+ def self.config_filename
53
+ @config_filename ||= ".howdy".freeze
54
+ end
55
+
56
+ protected
57
+ def readlines
58
+ config = File.readable?(@file) ? @file : self.class.create_config!
59
+ return File.readlines(config)
60
+ end
61
+
62
+ def self.create_config!
63
+ FileUtils.cp(TEMPLATE_PATH, config_path)
64
+ return config_path
65
+ end
66
+
67
+ end
68
+
69
+ end
@@ -9,8 +9,10 @@ module Howdy
9
9
  description 'English dictionary'
10
10
 
11
11
  def parse
12
- document.css('div.KonaBody div.results_content table.luna-Ent tr').each do |row|
13
- result << row.search('td').children.collect { |e| e.content }.join
12
+ document.css('div.KonaBody div.results_content div.luna-Ent div.body div.luna-Ent').each do |row|
13
+ index = row.search('span.dnindex').children.collect { |e| e.content }.join
14
+ data = row.search('div.dndata').children.collect { |e| e.content }.join
15
+ result << index + data
14
16
  end
15
17
  end
16
18
 
@@ -0,0 +1 @@
1
+ default_dictionary = dictionary.com
data/lib/howdy/ui.rb CHANGED
@@ -16,6 +16,7 @@ module Howdy
16
16
 
17
17
  # prints list of available dictionaries
18
18
  def list_dictionaries
19
+ display "Available dictionaries:"
19
20
  Dictionary.available.each_with_index do |dict, idx|
20
21
  display " #{idx+1}. #{dict.dict_label} - #{dict.dict_description}"
21
22
  end
@@ -25,7 +26,7 @@ module Howdy
25
26
  # Returns captured data
26
27
  def prompt(message)
27
28
  print "#{message}: "
28
- gets
29
+ $stdin.gets
29
30
  end
30
31
 
31
32
  def choose_dictionary
data/lib/howdy.rb CHANGED
@@ -2,6 +2,7 @@ $: << File.join(File.dirname(__FILE__), 'howdy')
2
2
 
3
3
  require 'core_ext/ruby/string/underscore'
4
4
  require 'core_ext/ruby/string/integer'
5
+ require 'config'
5
6
  require 'base'
6
7
  require 'ui'
7
8
  Dir[File.join(File.dirname(__FILE__), 'howdy', 'dictionaries', '*.rb')].each { |dict| require dict }
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.6
4
+ version: 0.2.0
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-17 00:00:00 +01:00
12
+ date: 2010-03-12 00:00:00 +01:00
13
13
  default_executable: how
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -41,6 +41,7 @@ extensions: []
41
41
  extra_rdoc_files:
42
42
  - LICENSE
43
43
  - README.rdoc
44
+ - TODO
44
45
  files:
45
46
  - .document
46
47
  - .gitignore
@@ -53,12 +54,14 @@ files:
53
54
  - howdy.gemspec
54
55
  - lib/howdy.rb
55
56
  - lib/howdy/base.rb
57
+ - lib/howdy/config.rb
56
58
  - lib/howdy/core_ext/ruby/string/integer.rb
57
59
  - lib/howdy/core_ext/ruby/string/underscore.rb
58
60
  - lib/howdy/dictionaries/dict_pl.rb
59
61
  - lib/howdy/dictionaries/dictionary_com.rb
60
62
  - lib/howdy/dictionaries/ling_pl.rb
61
63
  - lib/howdy/dictionaries/urban_dictionary_com.rb
64
+ - lib/howdy/templates/howdy
62
65
  - lib/howdy/ui.rb
63
66
  - spec/howdy_spec.rb
64
67
  - spec/spec_helper.rb