lucy-goosey 0.2.0 → 0.4.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.md CHANGED
@@ -15,8 +15,7 @@ Heavily tested.
15
15
  options['n']
16
16
  # => '1'
17
17
 
18
- options = Lucy::Goosey.parse_options(%w{--n 1 --foo bar --baz})
19
-
18
+ options = Lucy::Goosey.parse_options(%w{-n 1 --foo bar --baz})
20
19
  options['n']
21
20
  # => '1'
22
21
 
@@ -25,6 +24,33 @@ Heavily tested.
25
24
 
26
25
  options['baz']
27
26
  # => true
27
+
28
+
29
+ options = Lucy::Goosey.parse_options(%w{foo=bar --db postgres:///local-dev-db})
30
+
31
+ options['foo']
32
+ # => 'bar'
33
+
34
+ options['db']
35
+ # => 'postgres:///local-dev-db'
36
+
37
+ options = Lucy::Goosey.parse_options(%w{-n 1 foo=bar -t})
38
+ options['n']
39
+ # => '1'
40
+
41
+ options['foo']
42
+ # => 'bar'
43
+
44
+ options['t']
45
+ # => true
46
+
47
+ options = Lucy::Goosey.parse_options(%w{--this is pretty cool -foo bar --baz})
48
+ options['this']
49
+ # => 'is pretty cool'
50
+
51
+ options = Lucy::Goosey.parse_options(%w{ignore leading words --for the win})
52
+ options
53
+ # => {'for' => 'the win'}
28
54
  ```
29
55
 
30
56
 
@@ -42,9 +68,10 @@ Or install it yourself as:
42
68
 
43
69
  $ gem install lucy-goosey
44
70
 
45
- ## Usage
71
+ ## Quotes!
46
72
 
47
- TODO: Write usage instructions here
73
+ "so simple, I love it!" - Pedro Belo
74
+ "oh thats gross" - Dane Harrigan
48
75
 
49
76
  ## Contributing
50
77
 
@@ -6,6 +6,15 @@ module Lucy
6
6
  UNIX_DOUBLE_FLAG = /^--/
7
7
  EQUAL = /=/
8
8
 
9
+ class OptionsHash < Hash
10
+ attr_accessor :argv
11
+
12
+ # Returns true if -h or --help are any of the arg
13
+ # or 'help' is the first word to argv
14
+ def help?
15
+ self['h'] || self['help'] || argv[0] == 'help'
16
+ end
17
+ end
9
18
 
10
19
  def self.magic_word?(word)
11
20
  return unless word
@@ -21,16 +30,20 @@ module Lucy
21
30
  word.sub(UNIX_DOUBLE_FLAG, '').sub(UNIX_SINGLE_FLAG,'')
22
31
  end
23
32
 
33
+ def self.parse(_args)
34
+ self.parse_options(_args)
35
+ end
24
36
 
25
37
  # Public: parses array of options, loosely assuming unix-style conventions.
26
38
  #
27
39
  # Returns a Hash
28
40
  def self.parse_options(_args)
29
41
  args = _args.dup
30
- config = {}
42
+ options = OptionsHash.new
43
+ options.argv = _args.dup
31
44
 
32
45
  raise ArgumentError, 'must be an array' unless args.is_a? Array
33
- return config if args.empty?
46
+ return options if args.empty?
34
47
 
35
48
  args.reverse!
36
49
  # get rid of leading words
@@ -54,10 +67,10 @@ module Lucy
54
67
  next unless key and value
55
68
 
56
69
  key = deflag(key)
57
- config[key] = value
70
+ options[key] = value
58
71
  end
59
72
 
60
- config
73
+ options
61
74
  end
62
75
  end
63
76
  end
@@ -1,5 +1,5 @@
1
1
  module Lucy
2
2
  module Goosey
3
- VERSION = "0.2.0"
3
+ VERSION = "0.4.0"
4
4
  end
5
5
  end
@@ -0,0 +1,40 @@
1
+ require 'minitest/spec'
2
+ require 'lucy-goosey'
3
+
4
+ describe Lucy::Goosey do
5
+ describe "argv" do
6
+ it "should equal the original array" do
7
+ options = Lucy::Goosey.parse(['fe', 'fi', 'fo', 'fum'])
8
+ assert_equal 'fe', options.argv[0]
9
+ assert_equal 'fi', options.argv[1]
10
+ assert_equal 'fo', options.argv[2]
11
+ assert_equal 'fum', options.argv[3]
12
+ end
13
+ end
14
+
15
+ describe 'help?' do
16
+ it "should be true if -h is passed in" do
17
+ options = Lucy::Goosey.parse(%w{fi -h fo fum})
18
+ assert options.help?
19
+
20
+ options = Lucy::Goosey.parse(%w{fi -hi fo fum})
21
+ refute options.help?
22
+ end
23
+
24
+ it "should be true if --help is passed in" do
25
+ options = Lucy::Goosey.parse(%w{fi --help fo fum})
26
+ assert options.help?
27
+
28
+ options = Lucy::Goosey.parse(%w{fi --halp fo fum})
29
+ refute options.help?
30
+ end
31
+
32
+ it "should be true if 'help' is the first arg" do
33
+ options = Lucy::Goosey.parse(%w{help me})
34
+ assert options.help?
35
+
36
+ options = Lucy::Goosey.parse(%w{me help you})
37
+ refute options.help?
38
+ end
39
+ end
40
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lucy-goosey
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-12 00:00:00.000000000 Z
12
+ date: 2013-09-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
@@ -60,6 +60,7 @@ files:
60
60
  - lib/lucy-goosey/version.rb
61
61
  - lucy-goosey.gemspec
62
62
  - test/combinatorial_test.rb
63
+ - test/options_hash_test.rb
63
64
  - test/options_parsing_test.rb
64
65
  homepage: ''
65
66
  licenses: []
@@ -75,7 +76,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
75
76
  version: '0'
76
77
  segments:
77
78
  - 0
78
- hash: -2478981354359286416
79
+ hash: 3971889562994054087
79
80
  required_rubygems_version: !ruby/object:Gem::Requirement
80
81
  none: false
81
82
  requirements:
@@ -84,7 +85,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
85
  version: '0'
85
86
  segments:
86
87
  - 0
87
- hash: -2478981354359286416
88
+ hash: 3971889562994054087
88
89
  requirements: []
89
90
  rubyforge_project:
90
91
  rubygems_version: 1.8.23
@@ -94,4 +95,5 @@ summary: Takes an array, returns a hash. Expects the array to consist of unix s
94
95
  flags or values, much like the command line arguments in ARGV
95
96
  test_files:
96
97
  - test/combinatorial_test.rb
98
+ - test/options_hash_test.rb
97
99
  - test/options_parsing_test.rb