ame 0.1.1 → 1.0.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 (90) hide show
  1. checksums.yaml +7 -0
  2. data/README +541 -3
  3. data/Rakefile +15 -6
  4. data/lib/ame-1.0.rb +31 -0
  5. data/lib/ame-1.0/argument.rb +63 -0
  6. data/lib/ame-1.0/arguments.rb +44 -0
  7. data/lib/ame-1.0/arguments/complete.rb +37 -0
  8. data/lib/ame-1.0/arguments/optional.rb +34 -0
  9. data/lib/ame-1.0/arguments/undefined.rb +71 -0
  10. data/lib/ame-1.0/class.rb +436 -0
  11. data/lib/ame-1.0/flag.rb +101 -0
  12. data/lib/{ame → ame-1.0}/help.rb +1 -1
  13. data/lib/ame-1.0/help/delegate.rb +19 -0
  14. data/lib/ame-1.0/help/terminal.rb +132 -0
  15. data/lib/ame-1.0/method.rb +75 -0
  16. data/lib/ame-1.0/method/undefined.rb +184 -0
  17. data/lib/ame-1.0/methods.rb +40 -0
  18. data/lib/ame-1.0/multioption.rb +36 -0
  19. data/lib/ame-1.0/option.rb +37 -0
  20. data/lib/ame-1.0/optional.rb +31 -0
  21. data/lib/ame-1.0/options.rb +68 -0
  22. data/lib/ame-1.0/options/undefined.rb +114 -0
  23. data/lib/ame-1.0/root.rb +174 -0
  24. data/lib/ame-1.0/splat.rb +16 -0
  25. data/lib/ame-1.0/splus.rb +22 -0
  26. data/lib/ame-1.0/switch.rb +39 -0
  27. data/lib/ame-1.0/types.rb +60 -0
  28. data/lib/ame-1.0/types/boolean.rb +13 -0
  29. data/lib/ame-1.0/types/enumeration.rb +40 -0
  30. data/lib/ame-1.0/types/float.rb +11 -0
  31. data/lib/{ame → ame-1.0}/types/integer.rb +3 -3
  32. data/lib/{ame → ame-1.0}/types/string.rb +2 -2
  33. data/lib/ame-1.0/types/symbol.rb +9 -0
  34. data/lib/ame-1.0/version.rb +62 -0
  35. data/test/unit/ame-1.0.rb +4 -0
  36. data/test/unit/ame-1.0/argument.rb +46 -0
  37. data/test/unit/ame-1.0/arguments.rb +63 -0
  38. data/test/unit/ame-1.0/arguments/complete.rb +4 -0
  39. data/test/unit/ame-1.0/arguments/optional.rb +4 -0
  40. data/test/unit/ame-1.0/arguments/undefined.rb +63 -0
  41. data/test/unit/ame-1.0/class.rb +4 -0
  42. data/test/unit/ame-1.0/flag.rb +31 -0
  43. data/test/unit/ame-1.0/help.rb +4 -0
  44. data/test/unit/ame-1.0/help/delegate.rb +4 -0
  45. data/test/unit/{ame/help/console.rb → ame-1.0/help/terminal.rb} +34 -23
  46. data/test/unit/ame-1.0/method.rb +4 -0
  47. data/test/unit/ame-1.0/method/undefined.rb +33 -0
  48. data/test/unit/ame-1.0/methods.rb +9 -0
  49. data/test/unit/ame-1.0/multioption.rb +4 -0
  50. data/test/unit/ame-1.0/option.rb +11 -0
  51. data/test/unit/ame-1.0/optional.rb +9 -0
  52. data/test/unit/ame-1.0/options.rb +149 -0
  53. data/test/unit/ame-1.0/options/undefined.rb +33 -0
  54. data/test/unit/ame-1.0/root.rb +4 -0
  55. data/test/unit/ame-1.0/splat.rb +9 -0
  56. data/test/unit/ame-1.0/splus.rb +4 -0
  57. data/test/unit/ame-1.0/switch.rb +15 -0
  58. data/test/unit/ame-1.0/types.rb +4 -0
  59. data/test/{ame → unit/ame-1.0}/types/boolean.rb +0 -0
  60. data/test/unit/ame-1.0/types/enumeration.rb +4 -0
  61. data/test/unit/ame-1.0/types/float.rb +7 -0
  62. data/test/{ame → unit/ame-1.0}/types/integer.rb +0 -0
  63. data/test/{ame → unit/ame-1.0}/types/string.rb +0 -0
  64. data/test/unit/ame-1.0/types/symbol.rb +5 -0
  65. data/test/unit/ame-1.0/version.rb +4 -0
  66. metadata +690 -60
  67. data/lib/ame.rb +0 -26
  68. data/lib/ame/argument.rb +0 -56
  69. data/lib/ame/arguments.rb +0 -65
  70. data/lib/ame/class.rb +0 -117
  71. data/lib/ame/help/console.rb +0 -96
  72. data/lib/ame/method.rb +0 -94
  73. data/lib/ame/methods.rb +0 -30
  74. data/lib/ame/option.rb +0 -50
  75. data/lib/ame/options.rb +0 -102
  76. data/lib/ame/root.rb +0 -57
  77. data/lib/ame/splat.rb +0 -12
  78. data/lib/ame/types.rb +0 -29
  79. data/lib/ame/types/array.rb +0 -16
  80. data/lib/ame/types/boolean.rb +0 -16
  81. data/lib/ame/version.rb +0 -5
  82. data/test/ame/types/array.rb +0 -13
  83. data/test/unit/ame/argument.rb +0 -66
  84. data/test/unit/ame/arguments.rb +0 -106
  85. data/test/unit/ame/method.rb +0 -40
  86. data/test/unit/ame/methods.rb +0 -10
  87. data/test/unit/ame/option.rb +0 -75
  88. data/test/unit/ame/options.rb +0 -136
  89. data/test/unit/ame/root.rb +0 -15
  90. data/test/unit/ame/splat.rb +0 -11
@@ -1,40 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- Expectations do
4
- expect 'd' do Ame::Method.new(nil).description('d').description end
5
-
6
- expect Ame::Method.new(nil).not.to.be.valid?
7
-
8
- expect Ame::Method.new(nil).description('d').to.be.valid?
9
-
10
- expect :name do Ame::Method.new(nil).description('d').define(:name).name end
11
-
12
- expect mock.to.receive.method('b', 1, true, ['d', 'e', 'f'], {:a => true}).once do |o|
13
- Ame::Method.new(o).
14
- option(:a, 'd').
15
- argument(:a, 'd').
16
- argument(:b, 'd', :type => Integer).
17
- argument(:c, 'd', :type => FalseClass).
18
- splat(:d, 'd').
19
- description('d').
20
- define(:method).
21
- process o, %w[b -a 1 on d e f]
22
- end
23
-
24
- expect mock.to.receive.method(1, false, [], {:a => 5}).once do |o|
25
- Ame::Method.new(o).
26
- option(:a, 'd', :default => 5).
27
- argument(:b, 'd', :optional => true, :default => 1).
28
- argument(:c, 'd', :optional => true, :default => false).
29
- splat(:d, 'd', :optional => true).
30
- description('d').
31
- define(:method).
32
- call o
33
- end
34
-
35
- expect Ame::Class.to.receive.help_for_method(Ame::Method) do |o|
36
- catch Ame::AbortAllProcessing do
37
- Ame::Method.new(o).description('d').define(:method).process o, %w[--help]
38
- end
39
- end
40
- end
@@ -1,10 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- Expectations do
4
- expect Enumerable do Ame::Methods.new end
5
-
6
- expect Ame::Methods.new do |o| o << Ame::Method.new(nil) end
7
-
8
- expect Ame::Method.new(nil) do |o| (Ame::Methods.new << o.define(:name))[:name] end
9
- expect Ame::Method.new(nil) do |o| (Ame::Methods.new << o.define(:name))['name'] end
10
- end
@@ -1,75 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- Expectations do
4
- expect Ame::Argument do
5
- Ame::Option.new(:a, 'd')
6
- end
7
-
8
- expect ArgumentError do
9
- Ame::Option.new(:a, 'd', :type => String, :optional => true)
10
- end
11
-
12
- expect Ame::Option.new(:a, 'd').to.be.optional?
13
-
14
- expect Ame::Option.new(:a, 'd', :type => String).not.to.be.optional?
15
-
16
- expect FalseClass do
17
- Ame::Option.new(:a, 'd').default
18
- end
19
-
20
- expect TrueClass do
21
- Ame::Option.new(:a, 'd').process({}, [], 'true')
22
- end
23
-
24
- expect FalseClass do
25
- Ame::Option.new(:a, 'd').process({}, [], 'off')
26
- end
27
-
28
- expect 'string' do
29
- Ame::Option.new(:a, 'd', :type => String).process({}, [], 'string')
30
- end
31
-
32
- expect 'a' do
33
- Ame::Option.new(:a, 'd', :type => String).argument_name
34
- end
35
-
36
- expect 'b' do
37
- Ame::Option.new(:a, 'd', :argument => 'b', :type => String).argument_name
38
- end
39
-
40
- expect ArgumentError do
41
- Ame::Option.new(:a, 'd', :argument => 'a').argument_name
42
- end
43
-
44
- expect [:b] do
45
- Ame::Option.new(:a, 'd', :aliases => :b).aliases
46
- end
47
-
48
- expect [:b, :c, :d] do
49
- Ame::Option.new(:a, 'd', :aliases => [:b, :c, :d]).aliases
50
- end
51
-
52
- expect [:b, :c, :d] do
53
- Ame::Option.new(:a, 'd', :alias => :b, :aliases => [:c, :d]).aliases
54
- end
55
-
56
- expect '-a' do
57
- Ame::Option.new(:a, 'd').to_s
58
- end
59
-
60
- expect '--abc' do
61
- Ame::Option.new(:abc, 'd').to_s
62
- end
63
-
64
- expect :a do
65
- Ame::Option.new(:abc, 'd', :aliases => [:a, :b]).short
66
- end
67
-
68
- expect :abc do
69
- Ame::Option.new(:a, 'd', :aliases => [:abc, :b]).long
70
- end
71
-
72
- expect Ame::Option.new(:a, 'd').not.to.be.ignored?
73
-
74
- expect Ame::Option.new(:a, 'd', :ignore => true).to.be.ignored?
75
- end
@@ -1,136 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- Expectations do
4
- expect Enumerable do
5
- Ame::Options.new
6
- end
7
-
8
- expect [:a, :b] do
9
- Ame::Options.new.option('a', 'd').option('b', 'd').map{ |o| o.name }
10
- end
11
-
12
- expect [:a, :b] do
13
- Ame::Options.new.option(:a, 'd').option(:b, 'd').map{ |o| o.name }
14
- end
15
-
16
- expect ArgumentError do
17
- Ame::Options.new.option(:a, 'd').option(:a, 'd')
18
- end
19
-
20
- expect Ame::Options.new.option(:a, 'd').to.include?('a')
21
- expect Ame::Options.new.option(:a, 'd').to.include?(:a)
22
-
23
- expect [{:a => 1, :b => 2}, []] do
24
- Ame::Options.new.
25
- option(:a, 'd', :default => 1).
26
- option(:b, 'd', :default => 2).process([])
27
- end
28
-
29
- expect [{:a => 3, :b => 4}, []] do
30
- Ame::Options.new.
31
- option(:a, 'd', :default => 1).
32
- option(:b, 'd', :default => 2).process(['-a=3', '-b=4'])
33
- end
34
-
35
- expect [{:a => 3, :b => 4}, []] do
36
- Ame::Options.new.
37
- option(:a, 'd', :default => 1).
38
- option(:b, 'd', :default => 2).process(['-a', '3', '-b', '4'])
39
- end
40
-
41
- expect Ame::MalformedArgument do
42
- Ame::Options.new.option(:a, 'd', :default => 1).process(['-a='])
43
- end
44
-
45
- expect Ame::MissingArgument do
46
- Ame::Options.new.option(:a, 'd', :default => 1).process(['-a'])
47
- end
48
-
49
- expect Ame::UnrecognizedOption do
50
- Ame::Options.new.option(:a, 'd', :default => 1).process(['-b'])
51
- end
52
-
53
- expect Ame::MalformedArgument do
54
- Ame::Options.new.
55
- option(:a, 'd', :default => 1).
56
- option(:b, 'd').process(['-ab'])
57
- end
58
-
59
- expect Ame::MissingArgument do
60
- Ame::Options.new.
61
- option(:a, 'd').
62
- option(:b, 'd', :default => 1).process(['-ab'])
63
- end
64
-
65
- expect [{:a => true, :b => 2}, []] do
66
- Ame::Options.new.
67
- option(:a, 'd').
68
- option(:b, 'd', :default => 1).process(['-ab2'])
69
- end
70
-
71
- expect [{:a => true, :b => 2}, []] do
72
- Ame::Options.new.
73
- option(:a, 'd').
74
- option(:b, 'd', :default => 1).process(['-ab', '2'])
75
- end
76
-
77
- expect [{:a => true, :b => true}, []] do
78
- Ame::Options.new.
79
- option(:a, 'd').
80
- option(:b, 'd').process(['-ab'])
81
- end
82
-
83
- expect [{:a => true, :b => true}, []] do
84
- Ame::Options.new.
85
- option(:a, 'd').
86
- option(:b, 'd').process(['-a', '-b'])
87
- end
88
-
89
- expect [{:a => true, :b => false}, ['-b']] do
90
- Ame::Options.new.
91
- option(:a, 'd').
92
- option(:b, 'd').process(['-a', '--', '-b'])
93
- end
94
-
95
- expect [{:a => true, :b => true}, ['arg']] do
96
- stub(ENV).include?{ false }
97
- Ame::Options.new.
98
- option(:a, 'd').
99
- option(:b, 'd').process(['arg', '-a', '-b'])
100
- end
101
-
102
- expect [{:a => false, :b => false}, ['arg', '-a', '-b']] do
103
- Ame::Options.new.
104
- options_must_precede_arguments.
105
- option(:a, 'd').
106
- option(:b, 'd').process(['arg', '-a', '-b'])
107
- end
108
-
109
- expect [{:a => true}, []] do
110
- Ame::Options.new.option(:a, 'd', :aliases => [:b]).process(['-b'])
111
- end
112
-
113
- expect [{:a => false}, []] do
114
- Ame::Options.new.option(:a, 'd', :default => true).process(['-a'])
115
- end
116
-
117
- expect [{:abc => true}, []] do
118
- Ame::Options.new.option(:abc, 'd').process(['--abc'])
119
- end
120
-
121
- expect [{:abc => 1}, []] do
122
- Ame::Options.new.option(:abc, 'd', :type => Integer).process(['--abc=1'])
123
- end
124
-
125
- expect [{:abc => 1}, []] do
126
- Ame::Options.new.option(:abc, 'd', :type => Integer).process(['--abc', '1'])
127
- end
128
-
129
- expect [{}, []] do
130
- Ame::Options.new.option(:abc, 'd', :ignore => true).process(['--abc'])
131
- end
132
-
133
- expect [{:a => [1, 2, 3]}, []] do
134
- Ame::Options.new.option(:a, 'd', :type => Ame::Types::Array[Integer]).process(%w[-a 1 -a 2 -a 3])
135
- end
136
- end
@@ -1,15 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- Expectations do
4
- expect Ame::Help::Console.new.to.receive.for_dispatch(:method, :subclass) do |o|
5
- Class.new(Ame::Root){
6
- help o
7
- }.help_for_dispatch :method, :subclass
8
- end
9
-
10
- expect Ame::Help::Console.new.to.receive.for_method(:method) do |o|
11
- Class.new(Ame::Root){
12
- help o
13
- }.help_for_method :method
14
- end
15
- end
@@ -1,11 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- Expectations do
4
- expect Ame::MissingArgument do Ame::Splat.new('a', 'd').process({}, [], []) end
5
-
6
- expect(-1) do Ame::Splat.new('a', 'd').arity end
7
-
8
- expect [] do Ame::Splat.new('a', 'd', :optional => true).process({}, [], []) end
9
- expect ['arg'] do Ame::Splat.new('a', 'd').process({}, [], %w[arg]) end
10
- expect [1, 2] do Ame::Splat.new('a', 'd', :type => Integer).process({}, [], %w[1 2]) end
11
- end