clasp-ruby 0.23.0.1 → 0.23.0.2

Sign up to get free protection for your applications and to get access to all the features.
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 +6 -6
  6. data/examples/show_usage_and_version.md +5 -5
  7. data/examples/show_usage_and_version.rb +1 -1
  8. data/examples/simple_command_line_no_specifications.rb +1 -1
  9. data/lib/clasp/arguments.rb +538 -537
  10. data/lib/clasp/clasp.rb +7 -7
  11. data/lib/clasp/cli.rb +140 -135
  12. data/lib/clasp/doc_.rb +3 -3
  13. data/lib/clasp/old_module.rb +3 -3
  14. data/lib/clasp/specifications.rb +337 -333
  15. data/lib/clasp/util/exceptions.rb +17 -17
  16. data/lib/clasp/util/value_parser.rb +97 -97
  17. data/lib/clasp/version.rb +15 -15
  18. data/lib/clasp-ruby.rb +3 -2
  19. data/lib/clasp.rb +3 -2
  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 +44 -44
  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 +5 -4
@@ -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