clasp-ruby 0.20.2 → 0.20.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,9 +1,27 @@
1
1
  # CLASP.Ruby
2
- Command-Line Argument Sorting and Parsing for Ruby
2
+ Command-Line Argument Sorting and Parsing, for Ruby
3
3
 
4
4
  [![Gem Version](https://badge.fury.io/rb/clasp-ruby.svg)](https://badge.fury.io/rb/clasp-ruby)
5
5
 
6
- ## Installation & usage
6
+ ## Table of Contents
7
+
8
+ 1. [Introduction](#introduction)
9
+ 2. [Installation](#installation)
10
+ 3. [Components](#components)
11
+ 4. [Examples](#examples)
12
+ 5. [Project Information](#project-information)
13
+
14
+ ## Introduction
15
+
16
+ **CLASP** stands for Command-Line Argument Sorting and
17
+ Parsing. The first CLASP library was a C library with a C++ wrapper. There
18
+ have been several implementations in other languages. **CLASP.Ruby** is the
19
+ Ruby version.
20
+
21
+ All CLASP libraries provide the facilities to **C**ommand **L**ine
22
+ **I**nterface (**CLI**) programs as described in detail below.
23
+
24
+ ## Installation
7
25
 
8
26
  Install via **gem** as in:
9
27
 
@@ -19,19 +37,7 @@ Use via **require**, as in:
19
37
  require 'clasp'
20
38
  ```
21
39
 
22
- ## Examples
23
-
24
- Examples are provided in the ```examples``` directory, along with a markdown description for each. A detailed list TOC of them is provided in [EXAMPLES.md](./EXAMPLES.md).
25
-
26
- ## Description
27
-
28
- **CLASP** stands for **C**ommand-**L**ine **A**rgument **S**orting and
29
- **P**arsing. The first CLASP library was a C library with a C++ wrapper. There
30
- have been several implementations in other languages. **CLASP.Ruby** is the
31
- Ruby version.
32
-
33
- All CLASP libraries provide the following facilities to **C**ommand **L**ine
34
- **I**nterface (**CLI**) programs:
40
+ ## Components
35
41
 
36
42
  ### Command-line parsing
37
43
 
@@ -101,7 +107,7 @@ Specifications = [
101
107
  CLASP.Flag('--all', alias: '-a', help: 'processes all item types'),
102
108
  CLASP.Flag('-c', help: 'count the processed items'),
103
109
  CLASP.Option('--opt1', alias: '-o', help: 'an option of some kind', values_range: %w{ val1, val2 }),
104
- CLASP.Option('--opt1=val1', alias: '-v'),
110
+ CLASP.Flag('--opt1=val1', alias: '-v'),
105
111
 
106
112
  # see next section for why these two are here
107
113
  CLASP::Flag.Help,
@@ -195,15 +201,21 @@ then the program will output the following
195
201
  cr-example.rb 0.1.2
196
202
  ```
197
203
 
198
- ## Where to get help
204
+ ## Examples
205
+
206
+ Examples are provided in the ```examples``` directory, along with a markdown description for each. A detailed list TOC of them is provided in [EXAMPLES.md](./EXAMPLES.md).
207
+
208
+ ## Project Information
209
+
210
+ ### Where to get help
199
211
 
200
212
  [GitHub Page](https://github.com/synesissoftware/CLASP.Ruby "GitHub Page")
201
213
 
202
- ## Contribution guidelines
214
+ ### Contribution guidelines
203
215
 
204
216
  Defect reports, feature requests, and pull requests are welcome on https://github.com/synesissoftware/CLASP.Ruby.
205
217
 
206
- ## Related projects
218
+ ### Related projects
207
219
 
208
220
  **CLASP.Ruby** is inspired by the [C/C++ CLASP library](https://github.com/synesissoftware/CLASP), which is documented in the articles:
209
221
 
@@ -211,9 +223,19 @@ Defect reports, feature requests, and pull requests are welcome on https://githu
211
223
  * _[Anatomy of a CLI Program written in C](http://synesis.com.au/publishing/software-anatomies/anatomy-of-a-cli-program-written-in-c.html)_, Matthew Wilson, [CVu](http://accu.org/index.php/journals/c77/), September 2012; and
212
224
  * _[Anatomy of a CLI Program written in C++](http://synesis.com.au/publishing/software-anatomies/anatomy-of-a-cli-program-written-in-c++.html)_, Matthew Wilson, [CVu](http://accu.org/index.php/journals/c77/), September 2015.
213
225
 
214
- **CLASP.Ruby** is used in the **[libCLImate.Ruby](https://github.com/synesissoftware/libCLImate.Ruby)** library.
226
+ Other CLASP libraries include:
227
+
228
+ * [**CLASP**](https://github.com/synesissoftware/CLASP/)
229
+ * [**CLASP.Go**](https://github.com/synesissoftware/CLASP.Go/)
230
+ * [**CLASP.js**](https://github.com/synesissoftware/CLASP.js/)
231
+ * [**CLASP.NET**](https://github.com/synesissoftware/CLASP.NET/)
232
+ * [**CLASP.Python**](https://github.com/synesissoftware/CLASP.Python/)
233
+
234
+ Projects in which **CLASP.Ruby** is used include:
235
+
236
+ * [**libCLImate.Ruby**](https://github.com/synesissoftware/libCLImate.Ruby)
215
237
 
216
- ## License
238
+ ### License
217
239
 
218
240
  **CLASP.Ruby** is released under the 3-clause BSD license. See LICENSE for details.
219
241
 
@@ -1,16 +1,7 @@
1
1
  #!/usr/bin/ruby
2
2
 
3
- #############################################################################
4
- # File: examples/cr-example.rb
3
+ # examples/cr-example.rb
5
4
  #
6
- # Purpose: COMPLETE_ME
7
- #
8
- # Created: 11 06 2016
9
- # Updated: 11 06 2016
10
- #
11
- # Author: Matthew Wilson
12
- #
13
- #############################################################################
14
5
 
15
6
  $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
16
7
 
@@ -23,7 +14,7 @@ Specifications = [
23
14
  CLASP.Flag('--all', alias: '-a', help: 'processes all item types'),
24
15
  CLASP.Flag('-c', help: 'count the processed items'),
25
16
  CLASP.Option('--opt1', alias: '-o', help: 'an option of some kind', values_range: %w{ val1, val2 }),
26
- CLASP.Option('--opt1=val1', alias: '-v'),
17
+ CLASP.Flag('--opt1=val1', alias: '-v'),
27
18
 
28
19
  # see next section for why these two are here
29
20
  CLASP::Flag.Help,
@@ -201,4 +201,19 @@ verbosity is specified as: chatty
201
201
  Debug mode is specified
202
202
  ```
203
203
 
204
+ ### Utilise the default value for verbosity
205
+
206
+ If executed with the arguments
207
+
208
+ ```
209
+ ruby examples/flag_and_option_specifications.rb -d --verbosity=
210
+ ```
211
+
212
+ it gives the output:
213
+
214
+ ```
215
+ verbosity is specified as: terse
216
+ Debug mode is specified
217
+ ```
218
+
204
219
 
@@ -144,7 +144,7 @@ class Arguments
144
144
 
145
145
  actual_value = value
146
146
 
147
- if value.nil? && argument_spec
147
+ if (value || '').empty? && argument_spec
148
148
 
149
149
  actual_value = argument_spec.default_value
150
150
  end
@@ -51,7 +51,7 @@
51
51
  module CLASP
52
52
 
53
53
  # Current version of the CLASP.Ruby library
54
- VERSION = '0.20.2'
54
+ VERSION = '0.20.3'
55
55
 
56
56
  private
57
57
  # @!visibility private
@@ -28,7 +28,27 @@ class Test_DefaultValue < Test::Unit::TestCase
28
28
  assert_nil option0.value
29
29
  end
30
30
 
31
- def test_long_form_with_default
31
+ def test_long_form_with_default_empty_value
32
+
33
+ specifications = [
34
+
35
+ CLASP.Option('--verbosity', values: [ 'silent', 'terse', 'normal', 'chatty', 'verbose' ], default_value: 'normal')
36
+ ]
37
+
38
+ argv = [ '--verbosity=' ]
39
+ args = CLASP::Arguments.new(argv, specifications)
40
+
41
+ assert_equal 0, args.flags.size
42
+ assert_equal 1, args.options.size
43
+ assert_equal 0, args.values.size
44
+
45
+ option0 = args.options[0]
46
+
47
+ assert_equal '--verbosity', option0.name
48
+ assert_equal 'normal', option0.value
49
+ end
50
+
51
+ def test_long_form_with_default_missing_value
32
52
 
33
53
  specifications = [
34
54
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clasp-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.2
4
+ version: 0.20.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: