clasp-ruby 0.23.0.1 → 0.23.1

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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +63 -52
  3. data/examples/cr-example.rb +16 -16
  4. data/examples/flag_and_option_specifications.md +25 -25
  5. data/examples/flag_and_option_specifications.rb +15 -15
  6. data/examples/show_usage_and_version.md +5 -5
  7. data/examples/show_usage_and_version.rb +10 -11
  8. data/examples/simple_command_line_no_specifications.rb +1 -1
  9. data/lib/clasp/arguments.rb +543 -543
  10. data/lib/clasp/clasp.rb +15 -11
  11. data/lib/clasp/cli.rb +145 -139
  12. data/lib/clasp/doc_.rb +3 -3
  13. data/lib/clasp/old_module.rb +9 -9
  14. data/lib/clasp/specifications.rb +346 -339
  15. data/lib/clasp/util/exceptions.rb +22 -23
  16. data/lib/clasp/util/value_parser.rb +101 -103
  17. data/lib/clasp/version.rb +20 -20
  18. data/lib/clasp-ruby.rb +9 -7
  19. data/lib/clasp.rb +9 -7
  20. data/test/scratch/test_list_command_line.rb +6 -6
  21. data/test/scratch/test_specifications.rb +14 -14
  22. data/test/scratch/test_usage.rb +6 -6
  23. data/test/scratch/test_usage_from_DATA.rb +1 -1
  24. data/test/scratch/test_usage_with_duplicate_specifications.rb +6 -6
  25. data/test/unit/tc_ARGV_rewrite.rb +36 -38
  26. data/test/unit/tc_arguments_1.rb +694 -694
  27. data/test/unit/tc_arguments_2.rb +52 -53
  28. data/test/unit/tc_arguments_3.rb +77 -77
  29. data/test/unit/tc_arguments_inspect.rb +55 -56
  30. data/test/unit/tc_cli.rb +4 -4
  31. data/test/unit/tc_default_value.rb +91 -91
  32. data/test/unit/tc_defaults_1.rb +38 -38
  33. data/test/unit/tc_examples_Arguments.rb +130 -132
  34. data/test/unit/tc_extras.rb +24 -26
  35. data/test/unit/tc_option_required.rb +38 -39
  36. data/test/unit/tc_option_value_aliases.rb +45 -45
  37. data/test/unit/tc_specifications.rb +7 -8
  38. data/test/unit/tc_typed_options.rb +204 -204
  39. data/test/unit/tc_usage.rb +112 -55
  40. data/test/unit/tc_with_action.rb +23 -24
  41. data/test/unit/ts_all.rb +1 -1
  42. metadata +12 -10
@@ -8,58 +8,57 @@ require 'test/unit'
8
8
 
9
9
  class Test_Arguments_2 < Test::Unit::TestCase
10
10
 
11
- def test_combined_flags_0
12
-
13
- specifications = [
14
- ]
15
- args = CLASP::Arguments.new [ '-abc' ], specifications
16
-
17
- assert_equal 1, args.flags.size
18
- assert_equal '-abc', args.flags[0].name
19
- assert_equal '-abc', args.flags[0].to_s
20
- assert_equal 'abc', args.flags[0].given_label
21
- assert_equal 1, args.flags[0].given_hyphens
22
- assert_nil args.flags[0].argument_specification
23
- assert_equal Hash.new, args.flags[0].extras
24
-
25
- assert_equal 0, args.options.size
26
-
27
- assert_equal 0, args.values.size
28
- end
29
-
30
- def test_combined_flags_1
31
-
32
- specifications = [
33
- CLASP.Flag('--a', alias: '-a'),
34
- CLASP.Flag('--b', alias: '-b'),
35
- CLASP.Flag('--c', alias: '-c'),
36
- ]
37
- args = CLASP::Arguments.new [ '-abc' ], specifications
38
-
39
- assert_equal 3, args.flags.size
40
- assert_equal '--a', args.flags[0].name
41
- assert_equal '--a', args.flags[0].to_s
42
- assert_equal 'abc', args.flags[0].given_label
43
- assert_equal 1, args.flags[0].given_hyphens
44
- assert_equal specifications[0], args.flags[0].argument_specification
45
- assert_equal Hash.new, args.flags[0].extras
46
- assert_equal '--b', args.flags[1].name
47
- assert_equal '--b', args.flags[1].to_s
48
- assert_equal 'abc', args.flags[1].given_label
49
- assert_equal 1, args.flags[1].given_hyphens
50
- assert_equal specifications[1], args.flags[1].argument_specification
51
- assert_equal Hash.new, args.flags[1].extras
52
- assert_equal '--c', args.flags[2].name
53
- assert_equal '--c', args.flags[2].to_s
54
- assert_equal 'abc', args.flags[2].given_label
55
- assert_equal 1, args.flags[2].given_hyphens
56
- assert_equal specifications[2], args.flags[2].argument_specification
57
- assert_equal Hash.new, args.flags[2].extras
58
-
59
- assert_equal 0, args.options.size
60
-
61
- assert_equal 0, args.values.size
62
- end
11
+ def test_combined_flags_0
12
+
13
+ specifications = [
14
+ ]
15
+ args = CLASP::Arguments.new [ '-abc' ], specifications
16
+
17
+ assert_equal 1, args.flags.size
18
+ assert_equal '-abc', args.flags[0].name
19
+ assert_equal '-abc', args.flags[0].to_s
20
+ assert_equal 'abc', args.flags[0].given_label
21
+ assert_equal 1, args.flags[0].given_hyphens
22
+ assert_nil args.flags[0].argument_specification
23
+ assert_equal Hash.new, args.flags[0].extras
24
+
25
+ assert_equal 0, args.options.size
26
+
27
+ assert_equal 0, args.values.size
28
+ end
29
+
30
+ def test_combined_flags_1
31
+
32
+ specifications = [
33
+ CLASP.Flag('--a', alias: '-a'),
34
+ CLASP.Flag('--b', alias: '-b'),
35
+ CLASP.Flag('--c', alias: '-c'),
36
+ ]
37
+ args = CLASP::Arguments.new [ '-abc' ], specifications
38
+
39
+ assert_equal 3, args.flags.size
40
+ assert_equal '--a', args.flags[0].name
41
+ assert_equal '--a', args.flags[0].to_s
42
+ assert_equal 'abc', args.flags[0].given_label
43
+ assert_equal 1, args.flags[0].given_hyphens
44
+ assert_equal specifications[0], args.flags[0].argument_specification
45
+ assert_equal Hash.new, args.flags[0].extras
46
+ assert_equal '--b', args.flags[1].name
47
+ assert_equal '--b', args.flags[1].to_s
48
+ assert_equal 'abc', args.flags[1].given_label
49
+ assert_equal 1, args.flags[1].given_hyphens
50
+ assert_equal specifications[1], args.flags[1].argument_specification
51
+ assert_equal Hash.new, args.flags[1].extras
52
+ assert_equal '--c', args.flags[2].name
53
+ assert_equal '--c', args.flags[2].to_s
54
+ assert_equal 'abc', args.flags[2].given_label
55
+ assert_equal 1, args.flags[2].given_hyphens
56
+ assert_equal specifications[2], args.flags[2].argument_specification
57
+ assert_equal Hash.new, args.flags[2].extras
58
+
59
+ assert_equal 0, args.options.size
60
+
61
+ assert_equal 0, args.values.size
62
+ end
63
63
  end
64
64
 
65
-
@@ -8,82 +8,82 @@ require 'test/unit'
8
8
 
9
9
  class Test_Arguments_3 < Test::Unit::TestCase
10
10
 
11
- def test_include_flag_1
12
-
13
- args = CLASP::Arguments.new [ '-f1', 'value1', '--option1=value1', '--flag2' ], nil
14
-
15
- assert args.flags.include? '-f1'
16
- assert not(args.flags.include? '-f2')
17
- assert args.flags.include? '--flag2'
18
- assert not(args.flags.include? '--option1')
19
- end
20
-
21
- def test_include_flag_2
22
-
23
- aliases = [
24
- CLASP.Flag('--flag1', alias: '-f1'),
25
- ]
26
- args = CLASP::Arguments.new [ '-f1', 'value1', '--option1=value1', '--flag2' ], aliases
27
-
28
- assert args.flags.include? '-f1'
29
- assert args.flags.include? '--flag1'
30
- assert not(args.flags.include? '-f2')
31
- assert args.flags.include? '--flag2'
32
- assert not(args.flags.include? '--option1')
33
- end
34
-
35
- def test_combined_flags_1
36
-
37
- aliases = [
38
- CLASP.Flag('--delete', alias: '-d'),
39
- CLASP.Flag('--update', alias: '-u'),
40
- ]
41
- args = CLASP::Arguments.new [ '-du' ], aliases
42
-
43
- assert args.flags.include? '--delete'
44
- assert args.flags.include? '--update'
45
- end
46
-
47
- def test_get_option_1
48
-
49
- args = CLASP::Arguments.new [ '-f1', 'value1', '--option1=value1', '--flag2' ], nil
50
-
51
- assert args.options.include? '--option1'
52
- assert not(args.options.include? '--option1=value1')
53
- assert not(args.options.include? '-f1')
54
- assert not(args.options.include? '--flag2')
55
- end
56
-
57
- def test_get_option_2
58
-
59
- aliases = [
60
- CLASP.Flag('--flag1', alias: '-f1'),
61
- CLASP.Option('--option1', alias: '-o1'),
62
- ]
63
- args = CLASP::Arguments.new [ '-f1', 'value1', '-o1=value1', '--flag2' ], aliases
64
-
65
- assert args.options.include? '-o1'
66
- assert args.options.include? '--option1'
67
- assert not(args.options.include? '--option1=value1')
68
- assert not(args.options.include? '-f1')
69
- assert not(args.options.include? '--flag2')
70
- end
71
-
72
- def test_combined_flags_and_options_1
73
-
74
- aliases = [
75
- CLASP.Flag('--delete', alias: '-d'),
76
- CLASP.Flag('--update', alias: '-u'),
77
- CLASP.Option('--encryption', alias: '-e'),
78
- CLASP.Option('--encryption=blowfish', alias: '-b'),
79
- ]
80
- args = CLASP::Arguments.new [ '-du', '-e', 'sha' ], aliases
81
-
82
- assert args.flags.include? '--delete'
83
- assert args.flags.include? '--update'
84
- assert args.options.include? '--encryption'
85
- assert_not_nil args.options.detect { |o| o == '--encryption' }
86
- assert_nil args.options.detect { |o| o == '--blah' }
87
- end
11
+ def test_include_flag_1
12
+
13
+ args = CLASP::Arguments.new [ '-f1', 'value1', '--option1=value1', '--flag2' ], nil
14
+
15
+ assert args.flags.include? '-f1'
16
+ assert not(args.flags.include? '-f2')
17
+ assert args.flags.include? '--flag2'
18
+ assert not(args.flags.include? '--option1')
19
+ end
20
+
21
+ def test_include_flag_2
22
+
23
+ aliases = [
24
+ CLASP.Flag('--flag1', alias: '-f1'),
25
+ ]
26
+ args = CLASP::Arguments.new [ '-f1', 'value1', '--option1=value1', '--flag2' ], aliases
27
+
28
+ assert args.flags.include? '-f1'
29
+ assert args.flags.include? '--flag1'
30
+ assert not(args.flags.include? '-f2')
31
+ assert args.flags.include? '--flag2'
32
+ assert not(args.flags.include? '--option1')
33
+ end
34
+
35
+ def test_combined_flags_1
36
+
37
+ aliases = [
38
+ CLASP.Flag('--delete', alias: '-d'),
39
+ CLASP.Flag('--update', alias: '-u'),
40
+ ]
41
+ args = CLASP::Arguments.new [ '-du' ], aliases
42
+
43
+ assert args.flags.include? '--delete'
44
+ assert args.flags.include? '--update'
45
+ end
46
+
47
+ def test_get_option_1
48
+
49
+ args = CLASP::Arguments.new [ '-f1', 'value1', '--option1=value1', '--flag2' ], nil
50
+
51
+ assert args.options.include? '--option1'
52
+ assert not(args.options.include? '--option1=value1')
53
+ assert not(args.options.include? '-f1')
54
+ assert not(args.options.include? '--flag2')
55
+ end
56
+
57
+ def test_get_option_2
58
+
59
+ aliases = [
60
+ CLASP.Flag('--flag1', alias: '-f1'),
61
+ CLASP.Option('--option1', alias: '-o1'),
62
+ ]
63
+ args = CLASP::Arguments.new [ '-f1', 'value1', '-o1=value1', '--flag2' ], aliases
64
+
65
+ assert args.options.include? '-o1'
66
+ assert args.options.include? '--option1'
67
+ assert not(args.options.include? '--option1=value1')
68
+ assert not(args.options.include? '-f1')
69
+ assert not(args.options.include? '--flag2')
70
+ end
71
+
72
+ def test_combined_flags_and_options_1
73
+
74
+ aliases = [
75
+ CLASP.Flag('--delete', alias: '-d'),
76
+ CLASP.Flag('--update', alias: '-u'),
77
+ CLASP.Option('--encryption', alias: '-e'),
78
+ CLASP.Option('--encryption=blowfish', alias: '-b'),
79
+ ]
80
+ args = CLASP::Arguments.new [ '-du', '-e', 'sha' ], aliases
81
+
82
+ assert args.flags.include? '--delete'
83
+ assert args.flags.include? '--update'
84
+ assert args.options.include? '--encryption'
85
+ assert_not_nil args.options.detect { |o| o == '--encryption' }
86
+ assert_nil args.options.detect { |o| o == '--blah' }
87
+ end
88
88
  end
89
89
 
@@ -8,88 +8,87 @@ require 'test/unit'
8
8
 
9
9
  class Test_Arguments_inspect_and_to_s < Test::Unit::TestCase
10
10
 
11
- include CLASP
11
+ include CLASP
12
12
 
13
- def test_no_arguments
13
+ def test_no_arguments
14
14
 
15
- argv = []
16
- args = Arguments.new argv
15
+ argv = []
16
+ args = Arguments.new argv
17
17
 
18
- assert_equal %Q<[]>, args.flags.to_s
19
- assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.flags.inspect
18
+ assert_equal %Q<[]>, args.flags.to_s
19
+ assert_match(/#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.flags.inspect)
20
20
 
21
- assert_equal %Q<[]>, args.options.to_s
22
- assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.options.inspect
21
+ assert_equal %Q<[]>, args.options.to_s
22
+ assert_match(/#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.options.inspect)
23
23
 
24
- assert_equal %Q<[]>, args.values.to_s
25
- assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.values.inspect
26
- end
24
+ assert_equal %Q<[]>, args.values.to_s
25
+ assert_match(/#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.values.inspect)
26
+ end
27
27
 
28
- def test_one_value
28
+ def test_one_value
29
29
 
30
- argv = [ 'val1' ]
31
- args = Arguments.new argv
30
+ argv = [ 'val1' ]
31
+ args = Arguments.new argv
32
32
 
33
- assert_equal %Q<[]>, args.flags.to_s
34
- assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.flags.inspect
33
+ assert_equal %Q<[]>, args.flags.to_s
34
+ assert_match(/#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.flags.inspect)
35
35
 
36
- assert_equal %Q<[]>, args.options.to_s
37
- assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.options.inspect
36
+ assert_equal %Q<[]>, args.options.to_s
37
+ assert_match(/#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.options.inspect)
38
38
 
39
- assert_equal %Q<["val1"]>, args.values.to_s
40
- assert_match /#<Array:0x[0-9a-fA-Z]+\s+\["val1"\].*>/, args.values.inspect
41
- end
39
+ assert_equal %Q<["val1"]>, args.values.to_s
40
+ assert_match(/#<Array:0x[0-9a-fA-Z]+\s+\["val1"\].*>/, args.values.inspect)
41
+ end
42
42
 
43
- def test_three_values
43
+ def test_three_values
44
44
 
45
- argv = [ 'val1', 'val2', 'val3' ]
46
- args = Arguments.new argv
45
+ argv = [ 'val1', 'val2', 'val3' ]
46
+ args = Arguments.new argv
47
47
 
48
- assert_equal %Q<[]>, args.flags.to_s
49
- assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.flags.inspect
48
+ assert_equal %Q<[]>, args.flags.to_s
49
+ assert_match(/#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.flags.inspect)
50
50
 
51
- assert_equal %Q<[]>, args.options.to_s
52
- assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.options.inspect
51
+ assert_equal %Q<[]>, args.options.to_s
52
+ assert_match(/#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.options.inspect)
53
53
 
54
- assert_equal %Q<["val1", "val2", "val3"]>, args.values.to_s
55
- assert_match /#<Array:0x[0-9a-fA-Z]+\s+\["val1", "val2", "val3"\].*>/, args.values.inspect
56
- end
54
+ assert_equal %Q<["val1", "val2", "val3"]>, args.values.to_s
55
+ assert_match(/#<Array:0x[0-9a-fA-Z]+\s+\["val1", "val2", "val3"\].*>/, args.values.inspect)
56
+ end
57
57
 
58
- def test_one_flag
58
+ def test_one_flag
59
59
 
60
- argv = [ '-f' ]
61
- args = Arguments.new argv
60
+ argv = [ '-f' ]
61
+ args = Arguments.new argv
62
62
 
63
- assert_equal %Q<["-f"]>, args.flags.to_s
64
- if RUBY_VERSION >= '2'
63
+ assert_equal %Q<["-f"]>, args.flags.to_s
64
+ if RUBY_VERSION >= '2'
65
65
 
66
- assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[#<CLASP::Arguments::FlagArgument:0x.*-f.*>\].*>/, args.flags.inspect
67
- end
66
+ assert_match(/#<Array:0x[0-9a-fA-Z]+\s+\[#<CLASP::Arguments::FlagArgument:0x.*-f.*>\].*>/, args.flags.inspect)
67
+ end
68
68
 
69
- assert_equal %Q<[]>, args.options.to_s
70
- assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.options.inspect
69
+ assert_equal %Q<[]>, args.options.to_s
70
+ assert_match(/#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.options.inspect)
71
71
 
72
- assert_equal %Q<[]>, args.values.to_s
73
- assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.values.inspect
74
- end
72
+ assert_equal %Q<[]>, args.values.to_s
73
+ assert_match(/#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.values.inspect)
74
+ end
75
75
 
76
- def test_two_flags
76
+ def test_two_flags
77
77
 
78
- argv = [ '-f', '-g' ]
79
- args = Arguments.new argv
78
+ argv = [ '-f', '-g' ]
79
+ args = Arguments.new argv
80
80
 
81
- assert_equal %Q<["-f", "-g"]>, args.flags.to_s
82
- if RUBY_VERSION >= '2'
81
+ assert_equal %Q<["-f", "-g"]>, args.flags.to_s
82
+ if RUBY_VERSION >= '2'
83
83
 
84
- assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[#<CLASP::Arguments::FlagArgument:0x.*-f.*-g.*>\].*>/, args.flags.inspect
85
- end
84
+ assert_match(/#<Array:0x[0-9a-fA-Z]+\s+\[#<CLASP::Arguments::FlagArgument:0x.*-f.*-g.*>\].*>/, args.flags.inspect)
85
+ end
86
86
 
87
- assert_equal %Q<[]>, args.options.to_s
88
- assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.options.inspect
87
+ assert_equal %Q<[]>, args.options.to_s
88
+ assert_match(/#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.options.inspect)
89
89
 
90
- assert_equal %Q<[]>, args.values.to_s
91
- assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.values.inspect
92
- end
90
+ assert_equal %Q<[]>, args.values.to_s
91
+ assert_match(/#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.values.inspect)
92
+ end
93
93
  end
94
94
 
95
-
data/test/unit/tc_cli.rb CHANGED
@@ -14,12 +14,12 @@ require 'stringio'
14
14
 
15
15
  class Test_CLI < Test::Unit::TestCase
16
16
 
17
- def test_invalid_aliases_types
17
+ def test_invalid_aliases_types
18
18
 
19
- assert_raise_with_message(::TypeError, /each element in (?:aliases|specifications) array must be one of the types CLASP::FlagSpecification, CLASP::OptionSpecification, or CLASP::AliasSpecification/) { CLASP.show_usage([ 'abc', :def ]) }
19
+ assert_raise_with_message(::TypeError, /each element in (?:aliases|specifications) array must be one of the types CLASP::FlagSpecification, CLASP::OptionSpecification, or CLASP::AliasSpecification/) { CLASP.show_usage([ 'abc', :def ]) }
20
20
 
21
- assert_raise_with_message(::TypeError, /each element in (?:aliases|specifications) array must be one of the types CLASP::FlagSpecification, CLASP::OptionSpecification, or CLASP::AliasSpecification/) { CLASP.show_version([ 'abc', :def ]) }
22
- end
21
+ assert_raise_with_message(::TypeError, /each element in (?:aliases|specifications) array must be one of the types CLASP::FlagSpecification, CLASP::OptionSpecification, or CLASP::AliasSpecification/) { CLASP.show_version([ 'abc', :def ]) }
22
+ end
23
23
  end
24
24
 
25
25
  end # RUBY_VERSION