colin 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7afae31fdb7ccbb116ca385d32275ea785d9ecfe
4
- data.tar.gz: 3d42d88c4937b4bde0a98b5dd0c68aafcb569644
3
+ metadata.gz: 9d65a626690660eca491e7dced7377a1055dfd46
4
+ data.tar.gz: 109919e6dbf5e8e2bd9830bcc0e6fd4a56c7b2ff
5
5
  SHA512:
6
- metadata.gz: cd1efb489e96343702ed52fe12cb78cc3a15e1e048794e0a93c438d37dba34f01e95ec95143e6c4c0424191b4c7e8a8bd23b4825b9781fe24cd3872aee5f0efe
7
- data.tar.gz: 9d9cc46b2d58f8f7c39fd58364cc034c4d7c8578ddfa48d02385a175ed312d2a1fa502582c6e6ceec9cbdb6e34e61570d94bb18ebfa1b127d172f75568ca53bb
6
+ metadata.gz: ffdd26b604cba21be846eafbfec8934ef30712c5624ba8414db10e61ce7b666fb0149c5669b6f2d5233a80afb3b0a2a9615fe31a7079a46f044701fc565965cd
7
+ data.tar.gz: aed85a2f8b7651547eac081d41a86174f8244c4c3769896aa49a2579a3f1c31a691524a1f161f64f0c0973acb4229a5129d8ba9b7b7862b6c7cf2e4b3d2be7ac
data/Gemfile CHANGED
@@ -1,4 +1,3 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
+ gemspec
2
3
 
3
- # Specify your gem's dependencies in colin.gemspec
4
- gemspec
data/Rakefile CHANGED
@@ -1,12 +1,3 @@
1
1
  require "bundler/gem_tasks"
2
2
 
3
- task :test do
4
- arg_files = ENV["FILES"] && ENV["FILES"].split(/[\s,]+/)
5
- all_files = Rake::FileList["./spec/**/*_spec.rb"]
6
- files = arg_files || all_files
7
- puts "\nRuning tests for: #{ files.join(" ") }\n\n"
8
-
9
- system *["matest"].concat(files)
10
- end
11
-
12
- task :default => :test
3
+ require "matest/spec_tasks"
@@ -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.1.6"
7
+ spec.version = "0.1.7"
8
8
  spec.authors = ["Federico Iachetti"]
9
9
  spec.email = ["iachetti.federico@gmail.com"]
10
10
  spec.summary = %q{COmmand Line INterface.}
@@ -19,5 +19,5 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.add_development_dependency "bundler", "~> 1.7"
21
21
  spec.add_development_dependency "rake", "~> 10.0"
22
- spec.add_development_dependency "matest", "~> 1.1.4"
22
+ spec.add_development_dependency "matest"
23
23
  end
@@ -36,7 +36,7 @@ module Colin
36
36
  def parse
37
37
  (@args + [nil]).each do |opt|
38
38
  case opt
39
- when /^[\w\/]+$/
39
+ when /^[\w\/\.]+$/
40
40
  if @current
41
41
  set(@current, opt)
42
42
  else
@@ -44,7 +44,7 @@ module Colin
44
44
  end
45
45
  when /^--([\w-]+)$/
46
46
  keep($1)
47
- when /^--([\w-]+)=([\w\s\/]+)$/
47
+ when /^--([\w-]+)=([\w\s\/\.]+)$/
48
48
  consume_current
49
49
  set($1, $2)
50
50
  when /^-(\w)([\w\/]+)$/
@@ -64,7 +64,9 @@ module Colin
64
64
  def sanitize(value)
65
65
  return true if value == "true"
66
66
  return false if value == "false"
67
+ return nil if value == "nil" || value == "null"
67
68
  return value.to_i if value =~ /^\d+$/
69
+ return value.to_f if value =~ /^\d+\.\d+$/
68
70
  value
69
71
  end
70
72
 
@@ -1,5 +1,105 @@
1
- scope do
2
- spec do
3
-
1
+ require "spec_helper"
2
+ require "colin"
3
+
4
+ def Parser(options={})
5
+ Colin::Parser.new(options)
6
+ end
7
+
8
+ scope Colin::Parser do
9
+ scope "#options" do
10
+ scope "empty array" do
11
+ let(:parser) { Parser([]) }
12
+ spec { parser.options == {} }
13
+ spec { parser.args == [] }
14
+ end
15
+
16
+ scope "unnamed attributes" do
17
+ let(:parser) { Parser( %w[first second] ) }
18
+ spec { parser.options == {} }
19
+ spec { parser.args == %w[first second] }
20
+ end
21
+
22
+ scope "double dashed attributes" do
23
+ scope "space" do
24
+ let(:parser) { Parser( %w[--name NAME] ) }
25
+ spec { parser.options == {name: "NAME"} }
26
+ spec { parser.args == [] }
27
+ end
28
+
29
+ scope "=" do
30
+ let(:parser) { Parser( %w[--name=NAME] ) }
31
+ spec { parser.options == {name: "NAME"} }
32
+ spec { parser.args == [] }
33
+ end
34
+ end
35
+
36
+ scope "single dashed attributes" do
37
+ scope "space" do
38
+ let(:parser) { Parser( %w[-n NAME] ) }
39
+ spec { parser.options == {n: "NAME"} }
40
+ spec { parser.args == [] }
41
+ end
42
+
43
+ scope "=" do
44
+ let(:parser) { Parser( %w[-nNAME] ) }
45
+ spec { parser.options == {n: "NAME"} }
46
+ spec { parser.args == [] }
47
+ end
48
+ end
49
+
50
+ scope "special types" do
51
+ spec "integer" do
52
+ @parser = Parser( %w[--number 78] )
53
+ @parser.options[:number] == 78
54
+ end
55
+
56
+ spec "float" do
57
+ @parser = Parser( %w[--number 5.1] )
58
+ @parser.options[:number] == 5.1
59
+ end
60
+
61
+ spec "true" do
62
+ @parser = Parser( %w[--flag true] )
63
+ @parser.options[:flag] == true
64
+ end
65
+
66
+ spec "false" do
67
+ @parser = Parser( %w[--flag false] )
68
+ @parser.options[:flag] == false
69
+ end
70
+
71
+ spec "nil" do
72
+ @parser = Parser( %w[--value nil] )
73
+ @parser.options[:value] == nil
74
+ end
75
+
76
+ spec "null" do
77
+ @parser = Parser( %w[--value null] )
78
+ @parser.options[:value] == nil
79
+ end
80
+ end
81
+
82
+ scope "flags" do
83
+ spec "dashed true" do
84
+ @parser = Parser( %w[-f] )
85
+ @parser.options[:f] == true
86
+ end
87
+
88
+ spec "double dashed true" do
89
+ @parser = Parser( %w[--flag] )
90
+ @parser.options[:flag] == true
91
+ end
92
+
93
+ spec "double dashed false" do
94
+ @parser = Parser( %w[--no-flag] )
95
+ @parser.options[:flag] == false
96
+ end
97
+ end
98
+
99
+ scope "combination" do
100
+ let(:parser) { Parser( %w[some_file.rb -nNAME --age=34 -n 90 random_string --other_number 70] ) }
101
+ spec { parser.options == {n: "NAME", age: 34, n: 90, other_number: 70} }
102
+ spec { parser.args == %w[some_file.rb random_string] }
103
+ end
4
104
  end
5
105
  end
@@ -0,0 +1,5 @@
1
+ $:.unshift(File.expand_path("../../lib/", __FILE__))
2
+
3
+ Matest.configure do |c|
4
+ c.use_color
5
+ 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.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Federico Iachetti
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-18 00:00:00.000000000 Z
11
+ date: 2015-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: matest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 1.1.4
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 1.1.4
54
+ version: '0'
55
55
  description: COmmand Line INterface.
56
56
  email:
57
57
  - iachetti.federico@gmail.com
@@ -69,6 +69,7 @@ files:
69
69
  - colin.gemspec
70
70
  - lib/colin.rb
71
71
  - spec/colin_spec.rb
72
+ - spec/spec_helper.rb
72
73
  homepage: https://github.com/iachettifederico/colin
73
74
  licenses:
74
75
  - MIT
@@ -95,3 +96,4 @@ specification_version: 4
95
96
  summary: COmmand Line INterface.
96
97
  test_files:
97
98
  - spec/colin_spec.rb
99
+ - spec/spec_helper.rb