ame 0.1.1 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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