asproject 0.1.21

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. data/CHANGELOG.txt +0 -0
  2. data/History.txt +0 -0
  3. data/MIT-LICENSE.txt +20 -0
  4. data/Manifest.txt +16 -0
  5. data/README.txt +3 -0
  6. data/TODO.txt +10 -0
  7. data/bin/asclass +16 -0
  8. data/bin/asproject +16 -0
  9. data/lib/asclass.rb +254 -0
  10. data/lib/asclass_arguments.rb +147 -0
  11. data/lib/asproject.rb +248 -0
  12. data/lib/asproject/version.rb +9 -0
  13. data/lib/asproject_arguments.rb +175 -0
  14. data/lib/asproject_base.rb +43 -0
  15. data/lib/asproject_utils.rb +57 -0
  16. data/lib/eclipse_project.rb +32 -0
  17. data/lib/path_finder.rb +286 -0
  18. data/lib/platform.rb +107 -0
  19. data/lib/project.rb +82 -0
  20. data/lib/template_resolver.rb +144 -0
  21. data/lib/test_suite_generator.rb +128 -0
  22. data/rakefile.rb +85 -0
  23. data/setup.rb +1585 -0
  24. data/templates/asclass/as2/Class.as +11 -0
  25. data/templates/asclass/as2/Component.as +8 -0
  26. data/templates/asclass/as2/Interface.as +3 -0
  27. data/templates/asclass/as2/TestCase.as +30 -0
  28. data/templates/asclass/as2/TestSuite.as +15 -0
  29. data/templates/asclass/as3/Class.as +9 -0
  30. data/templates/asclass/as3/Component.as +9 -0
  31. data/templates/asclass/as3/Component.mxml +1 -0
  32. data/templates/asclass/as3/Interface.as +6 -0
  33. data/templates/asclass/as3/TestCase.as +30 -0
  34. data/templates/asclass/as3/TestSuite.as +18 -0
  35. data/templates/asproject/as2/project/rakefile.rb +18 -0
  36. data/templates/asproject/as2/project/src/AsProject.as +13 -0
  37. data/templates/asproject/as2/project/test/AsProjectRunner.as +12 -0
  38. data/templates/asproject/as3/project/rakefile.rb +18 -0
  39. data/templates/asproject/as3/project/src/AsProject.as +9 -0
  40. data/templates/asproject/as3/project/src/AsProjectRunner.as +11 -0
  41. data/templates/asproject/asunit2/project/lib/asunit/AsUnitUi.swf +0 -0
  42. data/templates/asproject/asunit2/project/lib/asunit/Sys.as +70 -0
  43. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/LocalOutputPanel.as +182 -0
  44. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/LocalOutputPanelTest.as +84 -0
  45. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/LocalOutputPanelTextArea.as +111 -0
  46. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/LocalOutputPanelTextAreaTest.as +26 -0
  47. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/LocalOutputPanelTitleBar.as +81 -0
  48. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/ResizeHandle.as +35 -0
  49. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/ScrollArrow.as +34 -0
  50. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/ScrollHandle.as +43 -0
  51. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/ScrollListener.as +10 -0
  52. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/TextScroller.as +169 -0
  53. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/shapes/Rectangle.as +29 -0
  54. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/controls/shapes/Triangle.as +27 -0
  55. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/AsUnit.as +19 -0
  56. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/Assert.as +408 -0
  57. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/Assertion.as +27 -0
  58. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/Reflection.as +68 -0
  59. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/Test.as +3 -0
  60. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/TestCase.as +191 -0
  61. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/TestCaseXml.as +31 -0
  62. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/TestFailure.as +15 -0
  63. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/TestResult.as +15 -0
  64. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/TestRunner.as +41 -0
  65. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/TestSetup.as +19 -0
  66. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/framework/TestSuite.as +22 -0
  67. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/ui/Main.as +325 -0
  68. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/ui/RemoteVersion.as +24 -0
  69. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/ui/SuccessMeter.as +32 -0
  70. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/Comparable.as +7 -0
  71. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/EventListener.as +29 -0
  72. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/EventSource.as +89 -0
  73. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/LocalConnClient.as +42 -0
  74. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/LocalConnGateway.as +47 -0
  75. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/LocalConnServer.as +61 -0
  76. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/LocalMessageBroker.as +58 -0
  77. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/Observable.as +11 -0
  78. data/templates/asproject/asunit2/project/lib/asunit/com/asunit/util/TextFile.as +30 -0
  79. data/templates/asproject/asunit25/project/lib/asunit/AsUnitTestRunner.as +13 -0
  80. data/templates/asproject/asunit25/project/lib/asunit/asunit/errors/AssertionFailedError.as +7 -0
  81. data/templates/asproject/asunit25/project/lib/asunit/asunit/errors/AssertionPassedError.as +7 -0
  82. data/templates/asproject/asunit25/project/lib/asunit/asunit/errors/ClassNotFoundError.as +7 -0
  83. data/templates/asproject/asunit25/project/lib/asunit/asunit/errors/IllegalOperationError.as +7 -0
  84. data/templates/asproject/asunit25/project/lib/asunit/asunit/errors/InstanceNotFoundError.as +7 -0
  85. data/templates/asproject/asunit25/project/lib/asunit/asunit/errors/InvocationTargetError.as +7 -0
  86. data/templates/asproject/asunit25/project/lib/asunit/asunit/errors/UnimplementedFeatureError.as +7 -0
  87. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/Assert.as +376 -0
  88. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/AssertMock.as +15 -0
  89. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/AssertTest.as +59 -0
  90. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/ITestListener.as +13 -0
  91. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/Test.as +11 -0
  92. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/TestCase.as +277 -0
  93. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/TestCaseMock.as +23 -0
  94. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/TestCaseTest.as +29 -0
  95. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/TestCaseXml.as +38 -0
  96. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/TestFailure.as +47 -0
  97. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/TestResult.as +168 -0
  98. data/templates/asproject/asunit25/project/lib/asunit/asunit/framework/TestSuite.as +102 -0
  99. data/templates/asproject/asunit25/project/lib/asunit/asunit/runner/BaseTestRunner.as +101 -0
  100. data/templates/asproject/asunit25/project/lib/asunit/asunit/runner/IResultPrinter.as +8 -0
  101. data/templates/asproject/asunit25/project/lib/asunit/asunit/textui/ResultPrinter.as +254 -0
  102. data/templates/asproject/asunit25/project/lib/asunit/asunit/textui/SuccessBar.as +41 -0
  103. data/templates/asproject/asunit25/project/lib/asunit/asunit/textui/TestRunner.as +17 -0
  104. data/templates/asproject/asunit25/project/lib/asunit/asunit/util/ArrayIterator.as +24 -0
  105. data/templates/asproject/asunit25/project/lib/asunit/asunit/util/ArrayIteratorTest.as +52 -0
  106. data/templates/asproject/asunit25/project/lib/asunit/asunit/util/Iterator.as +5 -0
  107. data/templates/asproject/asunit3/project/lib/asunit/AsUnitTestRunner.as +10 -0
  108. data/templates/asproject/asunit3/project/lib/asunit/asunit/errors/AbstractMemberCalledError.as +10 -0
  109. data/templates/asproject/asunit3/project/lib/asunit/asunit/errors/AssertionFailedError.as +10 -0
  110. data/templates/asproject/asunit3/project/lib/asunit/asunit/errors/ClassNotFoundError.as +10 -0
  111. data/templates/asproject/asunit3/project/lib/asunit/asunit/errors/InstanceNotFoundError.as +10 -0
  112. data/templates/asproject/asunit3/project/lib/asunit/asunit/errors/UnimplementedFeatureError.as +10 -0
  113. data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/Assert.as +271 -0
  114. data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/AsynchronousTestCase.as +52 -0
  115. data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/AsynchronousTestCaseExample.as +71 -0
  116. data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/Test.as +15 -0
  117. data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/TestCase.as +351 -0
  118. data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/TestCaseExample.as +73 -0
  119. data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/TestFailure.as +47 -0
  120. data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/TestListener.as +22 -0
  121. data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/TestResult.as +158 -0
  122. data/templates/asproject/asunit3/project/lib/asunit/asunit/framework/TestSuite.as +115 -0
  123. data/templates/asproject/asunit3/project/lib/asunit/asunit/runner/BaseTestRunner.as +15 -0
  124. data/templates/asproject/asunit3/project/lib/asunit/asunit/runner/TestSuiteLoader.as +9 -0
  125. data/templates/asproject/asunit3/project/lib/asunit/asunit/runner/Version.as +11 -0
  126. data/templates/asproject/asunit3/project/lib/asunit/asunit/textui/FlexRunner.as +19 -0
  127. data/templates/asproject/asunit3/project/lib/asunit/asunit/textui/FlexTestRunner.as +55 -0
  128. data/templates/asproject/asunit3/project/lib/asunit/asunit/textui/ResultPrinter.as +245 -0
  129. data/templates/asproject/asunit3/project/lib/asunit/asunit/textui/TestRunner.as +121 -0
  130. data/templates/asproject/asunit3/project/lib/asunit/asunit/util/ArrayIterator.as +26 -0
  131. data/templates/asproject/asunit3/project/lib/asunit/asunit/util/Iterator.as +9 -0
  132. data/templates/asproject/asunit3/project/lib/asunit/asunit/util/Properties.as +30 -0
  133. data/templates/asproject/asunit3/project/lib/asunit/mx/managers/LayoutManager.as +945 -0
  134. data/templates/asproject/config/project/config/asclass_config.rb +58 -0
  135. data/templates/asproject/fb2as/project/.actionScriptProperties +21 -0
  136. data/templates/asproject/fb2as/project/.project +29 -0
  137. data/templates/asproject/fdt/project/.as2_classpath +6 -0
  138. data/templates/asproject/fdt/project/.project +19 -0
  139. data/templates/ide/mate/Create Class.tmCommand +37 -0
  140. data/templates/ide/mate/Rebuild Test Suites.tmCommand +33 -0
  141. data/templates/ide/mate/Run Rake Task.tmCommand +127 -0
  142. metadata +266 -0
File without changes
File without changes
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2007 Luke Bayes
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,16 @@
1
+ Rakefile
2
+ README.txt
3
+ CHANGELOG.txt
4
+ MIT-LICENSE.txt
5
+ Manifest.txt
6
+ setup.rb
7
+ test/test_helper.rb
8
+ test/asproject_test.rb
9
+ test/projects
10
+ bin/asproject
11
+ bin/asclass
12
+ lib/tasks/asproject.rake
13
+ lib/asproject/version.rb
14
+ lib/asproject.rb
15
+ lib/asproject_base.rb
16
+ lib/asclass.rb
@@ -0,0 +1,3 @@
1
+ README for asproject
2
+ ====================
3
+
@@ -0,0 +1,10 @@
1
+ ---------------------
2
+ Tasks Remaining
3
+
4
+ * Get empty directories to bundle in the gem file
5
+ * Get mac to follow and manage the flash player process
6
+
7
+ * Update the pc on the flash player thread process
8
+ * Integrate as2/mxmlc support
9
+ * Create asunit application for test execution/tracking
10
+
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ version = "> 0"
5
+
6
+ if ARGV.size > 0 && ARGV[0][0]==95 && ARGV[0][-1]==95
7
+ if Gem::Version.correct?(ARGV[0][1..-2])
8
+ version = ARGV[0][1..-2]
9
+ ARGV.shift
10
+ end
11
+ end
12
+
13
+ require_gem 'asproject', version
14
+ require 'asclass.rb'
15
+
16
+ AsProject::AsClass.new
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ version = "> 0"
5
+
6
+ if ARGV.size > 0 && ARGV[0][0]==95 && ARGV[0][-1]==95
7
+ if Gem::Version.correct?(ARGV[0][1..-2])
8
+ version = ARGV[0][1..-2]
9
+ ARGV.shift
10
+ end
11
+ end
12
+
13
+ require_gem 'asproject', version
14
+ require 'asproject.rb'
15
+
16
+ AsProject::AsProject.new
@@ -0,0 +1,254 @@
1
+ $:.push(File.dirname(__FILE__))
2
+
3
+ #require 'rake'
4
+ require 'asproject'
5
+ require 'asclass_arguments'
6
+ require 'test_suite_generator'
7
+
8
+ module AsProject
9
+ class AsClass < AsProjectBase
10
+ @@TEMPLATE_TYPE = 'asclass'
11
+ @@CLASS_TEMPLATE = 'Class.as'
12
+ @@TEST_CASE_TEMPLATE = 'TestCase.as'
13
+ @@TEST_SUITE_TEMPLATE = 'TestSuite.as'
14
+ @@INTERFACE_TEMPLATE = 'Interface.as'
15
+ @@COMPONENT_TEMPLATE = 'Component.as'
16
+ @@MXML_TEMPLATE = 'Component.mxml'
17
+
18
+ def initialize(args=nil)
19
+ # begin
20
+ @created_files = []
21
+ @arguments = parse_args(args)
22
+ @project = get_project(@arguments.execution_dir)
23
+ if(!@arguments.name.nil?)
24
+ configure_project(@arguments.name)
25
+ end
26
+ if(@arguments.force)
27
+ @project.replace_all = true
28
+ end
29
+ execute
30
+ finish
31
+ # rescue Exception => e
32
+ # puts e.to_s
33
+ # exit
34
+ # end
35
+ end
36
+
37
+ def parse_args(args=nil)
38
+ if(args.nil?)
39
+ args = AsClassArguments.new
40
+ args.execution_dir = Dir.pwd
41
+ args.parse!(ARGV)
42
+ end
43
+ return args
44
+ end
45
+
46
+ def execute
47
+ name = @arguments.name
48
+
49
+ # Only build class and test case if a name
50
+ # was provided...
51
+ if(!name.nil?)
52
+ is_test_case = false
53
+ is_interface = false
54
+
55
+ template = ''
56
+ if(@arguments.mxml)
57
+ @project['display_object'] = true
58
+ template = mxml_template
59
+ elsif(@arguments.component)
60
+ template = component_template
61
+ elsif(name.match(/Test$/))
62
+ is_test_case = true
63
+ template = test_case_template
64
+ elsif(name.index('I') == 0 || name.index('able') == name.size - 4)
65
+ is_interface = true
66
+ template = interface_template
67
+ else
68
+ template = class_template
69
+ end
70
+
71
+ if(!is_test_case)
72
+ create_class(template)
73
+ end
74
+
75
+ if(!is_interface && @arguments.build_test_case || is_test_case)
76
+ template = test_case_template
77
+ create_test_case(template)
78
+ end
79
+ end
80
+
81
+ if(@arguments.build_test_suites)
82
+ create_test_suites
83
+ end
84
+ end
85
+
86
+ def create_class(template_file)
87
+ suffix = '.' + template_file.split(File::SEPARATOR).pop.split('.').pop
88
+ target_name = capitalize(@project['class_name'] + suffix)
89
+ create_file(template_file, @project.source_dir, target_name)
90
+ end
91
+
92
+ def create_test_case(template_file)
93
+ suffix = '.' + template_file.split(File::SEPARATOR).pop.split('.').pop
94
+ target_name = capitalize(@project['class_name'] + 'Test' + suffix)
95
+ create_file(template_file, @project.test_dir, target_name)
96
+ end
97
+
98
+ def create_file(template_file, target_dir, target_name)
99
+ template_base = select_template_base
100
+ @arguments.verify_template(template_base)
101
+ source_location = @project.get_template(template_type, File.join(template_base, template_file))
102
+ package_dirs = @project['package_name'].split('.').join(File::SEPARATOR)
103
+ target_location = File.join(target_dir, package_dirs, target_name)
104
+ @created_files << @project.copy_file(source_location, target_location, true)
105
+ end
106
+
107
+ def select_template_base
108
+ if(@arguments.template.nil?)
109
+ return @project.default_templates[0]
110
+ else
111
+ return @arguments.template
112
+ end
113
+ end
114
+
115
+ def create_test_suites
116
+ template_base = select_template_base
117
+ template = @project.get_template(template_type, File.join(template_base, 'TestSuite.as'))
118
+ content = IO.read(template)
119
+ name = 'AllTests.as'
120
+ suite_generator = TestSuiteGenerator.new(@project.test_dir, name, content)
121
+ suite_generator.created_files.each do |suite|
122
+ @created_files << suite
123
+ end
124
+ end
125
+
126
+ # package_name
127
+ # class_name
128
+ # full_class_name
129
+ # test_case_name
130
+ # full_test_case_name
131
+ # instance_name
132
+ # add_child_line
133
+ # remove_child_line
134
+
135
+ def configure_project(name)
136
+ @project['display_object'] = false
137
+ @project['package_name'] = get_package_name(name)
138
+ @project['class_name'] = get_class_name(name)
139
+ @project['full_class_name'] = @project['package_name'] + '.' + @project['class_name']
140
+ @project['test_case_name'] = get_test_case_name(name)
141
+ @project['full_test_case_name'] = @project['package_name'] + '.' + @project['test_case_name']
142
+ @project['instance_name'] = get_instance_name(name)
143
+ end
144
+
145
+ def get_package_name(name)
146
+ parts = name.split('.')
147
+ parts.pop
148
+ return parts.join('.')
149
+ end
150
+
151
+ def get_class_name(name)
152
+ name = name.sub(/Test$/, '')
153
+ parts = name.split('.')
154
+ return parts.pop
155
+ end
156
+
157
+ def get_class_location(name)
158
+ pkg = get_package_name(name)
159
+ return pkg.split('.').join(File::SEPARATOR)
160
+ end
161
+
162
+ def get_test_case_name(name)
163
+ return get_class_name(name) + 'Test'
164
+ end
165
+
166
+ def get_instance_name(name)
167
+ name = get_class_name(name)
168
+ chars = name.split('')
169
+ chars[0] = chars[0].downcase
170
+ return chars.join('')
171
+ end
172
+
173
+ def template_type
174
+ return @@TEMPLATE_TYPE
175
+ end
176
+
177
+ def class_template
178
+ return @@CLASS_TEMPLATE
179
+ end
180
+
181
+ def interface_template
182
+ return @@INTERFACE_TEMPLATE
183
+ end
184
+
185
+ def test_case_template
186
+ return @@TEST_CASE_TEMPLATE
187
+ end
188
+
189
+ def component_template
190
+ return @@COMPONENT_TEMPLATE
191
+ end
192
+
193
+ def mxml_template
194
+ return @@MXML_TEMPLATE
195
+ end
196
+
197
+ def get_project(dir)
198
+ if(File.exists?(File.join(dir, '.project')))
199
+ return AsClassProject.new(dir)
200
+ end
201
+ raise ProjectError.new('AsClass could not find a .project file in the current directory: ' + dir)
202
+ end
203
+ end
204
+
205
+ # TODO: Refactor EclipseProject out so that
206
+ # Project just instantiates a parser as needed
207
+ # and this class extends the more abstract Project
208
+ class AsClassProject < EclipseProject
209
+
210
+ def package_name
211
+ return self['package_name']
212
+ end
213
+
214
+ def class_name
215
+ return self['class_name']
216
+ end
217
+
218
+ def full_class_name
219
+ return self['full_class_name']
220
+ end
221
+
222
+ def test_case_name
223
+ return self['test_case_name']
224
+ end
225
+
226
+ def full_test_case_name
227
+ self['full_test_case_name']
228
+ end
229
+
230
+ def instance_name
231
+ self['instance_name']
232
+ end
233
+
234
+ def display_object?
235
+ self['display_object']
236
+ end
237
+
238
+ def add_child_line
239
+ if(display_object?)
240
+ return "\n addChild(#{instance_name});"
241
+ else
242
+ return ""
243
+ end
244
+ end
245
+
246
+ def remove_child_line
247
+ if(display_object?)
248
+ return "removeChild(#{instance_name});\n "
249
+ else
250
+ return ""
251
+ end
252
+ end
253
+ end
254
+ end
@@ -0,0 +1,147 @@
1
+
2
+ module AsProject
3
+
4
+ #######################################
5
+ # ProjectArguments
6
+ class AsClassArguments < Hash
7
+ attr_accessor :execution_dir,
8
+ :name,
9
+ :mxml,
10
+ :component,
11
+ :force,
12
+ :build_test_case,
13
+ :build_test_suites,
14
+ :display_object,
15
+ :template,
16
+ @@TEMPLATE_TYPE = 'asclass'
17
+
18
+ def initialize(dir=nil)
19
+ if(dir.nil?)
20
+ @execution_dir = Dir.pwd
21
+ else
22
+ @execution_dir = dir
23
+ end
24
+ @path_finder = PathFinder.new(@execution_dir)
25
+ @force = false
26
+ @mxml = false
27
+ @component = false
28
+ @template = nil
29
+ self[:name] = nil
30
+ self[:build_test_suites] = false # -s == --build-test-suites
31
+ self[:build_test_case] = true # -n == --no-test-case ?
32
+ self[:verbose] = true
33
+
34
+ @class_templates = @path_finder.get_available_templates(@@TEMPLATE_TYPE)
35
+ end
36
+
37
+ def parse!(args)
38
+ opts = OptionParser.new do |opts|
39
+ opts.banner = <<EOF
40
+
41
+ Usage: #$0 [options] packagename.ClassName
42
+
43
+ AsClass will automatically determine which template file to use based on the class name entered.
44
+ 1) Names beginning with 'I' or ending with 'able' are assumed to be interfaces and use 'Interface.as'
45
+ 2) Names ending with 'Test' are assumed to be test cases and use the 'TestCase.as' template
46
+ 3) If the --mxml flag is set, the 'Component.mxml' template is used
47
+ 4) If the --component flas is set, the 'Component.as' template is used
48
+ 5) If none of the previous criteria are met, the 'Class.as' template is used
49
+
50
+ Classes will be placed in the ProjectPath/src directory.
51
+ Test cases and test suites will be placed in the ProjectPath/test directory.
52
+
53
+ Using -t requires a single template selection. The template is a folder name inside of the asclass folder.
54
+
55
+ Templates will be used when found in the first folder of the following list:
56
+ 1) ./{ProjectName}/config/templates/asclass
57
+ 2) #{@path_finder.user_asproject_home}/templates/asclass
58
+ 3) #{@path_finder.gem_asproject_home}/templates/asclass
59
+
60
+ Options:
61
+ EOF
62
+ # opts.on('-c', '--copy-templates', "Copy templates to {ProjectName}/config/templates") do
63
+ # self[:copy_to_project] = true
64
+ # end
65
+ #
66
+ # opts.on('-C', '--copy-templates-to-home', "Copy templates to this user account") do
67
+ # self[:copy_to_home] = true
68
+ # end
69
+ #
70
+ # opts.on('-d', '--default-templates', "Set default templates for this project eg: 'mxml,fb2mxml,asunit'") do
71
+ # self[:default_templates] = true
72
+ # end
73
+ #
74
+ # opts.on('-D', '--default-templates-to-home', "Set the default templates for this user account") do
75
+ # self[:default_home_templates] = true
76
+ # end
77
+
78
+ opts.on('-f', '--force', "Force creation - overwrite if necessary") do
79
+ self[:force] = true
80
+ end
81
+
82
+ opts.on('-q', '--quiet', "Do not display created file names") do
83
+ self[:verbose] = false
84
+ end
85
+
86
+ opts.on('-s', '--build-test-suites', "Build TestSuites in my test directory") do
87
+ self[:build_test_suites] = true
88
+ end
89
+
90
+ opts.on('-t', '--template [STRING]', "Define which project template folder to use.") do |str|
91
+ self[:template] = str
92
+ end
93
+
94
+ opts.on_tail('-h', '--help', 'display this help and exit') do
95
+ puts opts
96
+ exit
97
+ end
98
+ end
99
+ opts.parse!(args)
100
+
101
+ if(args.size > 0)
102
+ self[:name] = args.shift.to_s
103
+ end
104
+ end
105
+
106
+ def verify_template(template)
107
+ if(!@class_templates.index template)
108
+ msg = <<EOF
109
+
110
+ Template [#{template}] was not found!
111
+
112
+ Please try again with one of the following available templates:
113
+ #{@class_templates.join(', ')}
114
+ EOF
115
+ raise ProjectError.new(msg)
116
+ end
117
+ end
118
+
119
+ def template=(template)
120
+ self[:template] = template
121
+ end
122
+
123
+ def template
124
+ return self[:template]
125
+ end
126
+
127
+ def name
128
+ return self[:name]
129
+ end
130
+
131
+ def verbose
132
+ return self[:verbose]
133
+ end
134
+
135
+ def build_test_case
136
+ return self[:build_test_case]
137
+ end
138
+
139
+ def build_test_suites
140
+ return self[:build_test_suites]
141
+ end
142
+
143
+ def force?
144
+ return self[:force]
145
+ end
146
+ end
147
+ end