colin 0.0.1 → 0.0.2

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/colin.gemspec +1 -1
  3. data/lib/colin.rb +77 -2
  4. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b5704c32450d788cd216d33003a956d218c84646
4
- data.tar.gz: 6f3bf33f65cf9c78657c4d8804097114df5968fb
3
+ metadata.gz: 6a74b66dd3fd1eaab76cacdf9ba57899d96ca39f
4
+ data.tar.gz: 9807710589da18d28df3197c46207c1d21ec5a92
5
5
  SHA512:
6
- metadata.gz: e185ee5d19ca646bb42f9134aa9cb4a55197444cf2d865a6fbe39df272eaf240e1d17c67424384934d37c5bd1cde5268654035806dd93550fdb96961ca9350dd
7
- data.tar.gz: b4f122a490e8fe5156602ce861c4ee745fe4ffd272985d1e450ed06cd31820e50736281790025ace9b26101b941c65b6b62d33fb4453c096f4c7e895304e0b68
6
+ metadata.gz: 9c3bed7d3e77716dd6149e10f1958ea67df7d265335d284a41baac762428f63c7f72c3a8e151add6ece7b059924e9ead482977a1eba1ab950599e5aa3b321769
7
+ data.tar.gz: b08b3f6a28c6fe567ed197a1afa2a2813f19339740f50c4ac41b340b9fe555b843ee95419bc9cdcca12becdfc04b4dc8152bc468d5c48609b57e9db65750d147
data/colin.gemspec CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "colin"
7
- spec.version = "0.0.1"
7
+ spec.version = "0.0.2"
8
8
  spec.authors = ["Federico Iachetti"]
9
9
  spec.email = ["iachetti.federico@gmail.com"]
10
10
  spec.summary = %q{COmmand Line INterface.}
data/lib/colin.rb CHANGED
@@ -1,4 +1,79 @@
1
- require "colin/version"
2
-
3
1
  class Colin
2
+ def initialize(args=[])
3
+ @args = args
4
+ @options = {}
5
+ @skipped = []
6
+ parse
7
+ end
8
+
9
+ def options
10
+ @options
11
+ end
12
+
13
+ def args
14
+ @skipped
15
+ end
16
+
17
+ private
18
+
19
+ def parse
20
+ (@args + [nil]).each do |opt|
21
+ case opt
22
+ when /^\w+$/
23
+ if @current
24
+ set(@current, opt)
25
+ else
26
+ skip(opt)
27
+ end
28
+ when /^--([\w-]+)$/
29
+ keep($1)
30
+ when /^--([\w-]+)=([\w\s]+)$/
31
+ consume_current
32
+ set($1, $2)
33
+ when /^-(\w)(\w+)$/
34
+ consume_current
35
+ set($1, $2)
36
+ when /^-(\w)$/
37
+ consume_current
38
+ keep($1)
39
+ when nil
40
+ consume_current
41
+ else
42
+ skip(opt)
43
+ end
44
+ end
45
+ end
46
+
47
+ def sanitize(value)
48
+ return true if value == "true"
49
+ return false if value == "false"
50
+ return value.to_i if value =~ /^\d+$/
51
+ value
52
+ end
53
+
54
+ def set(key, value)
55
+ @options[key.to_sym] = sanitize(value)
56
+ @current = nil if @current
57
+ end
58
+
59
+ def keep(opt)
60
+ @current = opt
61
+ end
62
+
63
+ def skip(opt)
64
+ @skipped << opt
65
+ end
66
+
67
+ def consume_current
68
+ if @current
69
+ if @current =~ /^no-(.+)/
70
+ key = $1
71
+ value = false
72
+ else
73
+ key = @current
74
+ value = true
75
+ end
76
+ set(key, value)
77
+ end
78
+ end
4
79
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: colin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Federico Iachetti
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-02 00:00:00.000000000 Z
11
+ date: 2015-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -87,7 +87,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
87
87
  version: '0'
88
88
  requirements: []
89
89
  rubyforge_project:
90
- rubygems_version: 2.4.3
90
+ rubygems_version: 2.4.6
91
91
  signing_key:
92
92
  specification_version: 4
93
93
  summary: COmmand Line INterface.