asproject 0.1.21

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 (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