colin 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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.