lib/flashsdk/generators/flash_helper.rb in flashsdk-1.0.13.pre vs lib/flashsdk/generators/flash_helper.rb in flashsdk-1.0.14.pre

- old
+ new

@@ -1,136 +1,232 @@ module FlashSDK + ## + # The FlashHelper is a module that can be included into any {Sprout::Generator} + # in order to provide support for many common features. + # + # @example An example of how to use this helper: + # + # require 'flashsdk' + # + # class BigFatGenerator < Sprout::Generator::Base + # include FlashSDK::FlashHelper + # + # ... + # end + # module FlashHelper + protected + + ## + # @return [String] The directory of the package based on the +input+ string. + def package_directory + if package.include?('/') + remove_slashes package + end + split_package package + end + + ## + # @param [String] A directory or path on disk with slashes like ('/') + # @return [String] The provided value with slashes replaced by dots. + def remove_slashes(value) + if value.include?('/') + value = value.split('/').join('.') + end + return value + end + + ## + # @param value [String] A fully-qualified package or class name (com.example.project.SomeClass) + # @return [Array<String>] The provided package or class name split on the period. + # split on dots. + def split_package(value) + value.split('.') + end + + ## + # @return [String] The directory for test cases that are related to the class provided by +input+ def test_class_directory parts = input_in_parts if parts.size > 1 parts.pop return File.join test, *parts end return test end - # Glob that is used to search for test cases and build - # up the test suites + ## + # @return [String] Glob that is used to search for test cases and build + # up the test suites. def test_glob return @test_glob ||= File.join(path, test, '**', '?*Test.as') end + # @return [String] The provided or default glob. def test_glob= glob @test_glob = glob end - # Collection of all test case files either assigned or found + ## + # @return [Array<File>] Collection of all test case files either assigned or found # using the test_glob as provided. def test_cases @test_cases ||= Dir.glob(test_glob) end + ## + # @param [Array<String>] Set the collection of test cases as Files on disk. + # @return [Array<String>] Collection of all test case files that were assigned or found. def test_cases= collection @test_cases = collection end - # Get the list of test_cases (which are files) as a - # list of fully qualified class names + ## + # @return [Array<String>] Get the list of test_cases (which are files) as a + # list of fully qualified class names. def test_case_classes classes = self.test_cases.dup classes.collect do |file| actionscript_file_to_class_name(file) end end + ## # Transform a file name in the source or test path - # to a fully-qualified class name + # into a fully-qualified class name. + # + # @param file [File] The path to a file on disk that is in the +src+ or +test+ folder. + # @return [String] The fully-qualified class name. def actionscript_file_to_class_name file name = file.dup - name.gsub!(/^#{path}\//, '') - name.gsub!(/^#{test}\//, '') - name.gsub!(/^#{src}\//, '') + name.gsub!(/^#{path}\//, '') if respond_to? :path + name.gsub!(/^#{test}\//, '') if respond_to? :test + name.gsub!(/^#{src}\//, '') if respond_to? :src name.gsub!(/.as$/, '') name.gsub!(/#{File::SEPARATOR}/, '.') return name end + ## + # @return [String] The directory that contains the +input+ class. def class_directory parts = input_in_parts if parts.size > 1 parts.pop return File.join src, *parts end return src end + ## + # @return [String] The package that provided on the command line at +--package+ + def default_package_name + remove_slashes package + end + + ## + # @return [String] The package that was provided on the command line at +--input+ def package_name parts = input_in_parts if parts.size > 1 parts.pop return "#{parts.join('.')} " end return "" end + ## + # @return [String] The fully-qualified class name provided on the command line at +--input+. def class_name parts = input_in_parts name = parts.pop.camel_case if(name.match(/Test$/)) return name.gsub(/Test$/, '') end name end + ## + # @return [String] The fully-qualified test class name based on the +--input+ + # argument provided on the command line. def test_class_name source = class_name if(!source.match(/Test$/)) return "#{source}Test" end source end + ## + # @return [String] The project name provided as +--input+ on the command line. + # This is probably only helpful for project generators. def project_name input.camel_case end + ## + # @return [String] Currently returns hard-coded 'instance'. def instance_name # TODO: should uncapitalize class_name # (not the same as lowercase) # If the name is > 12 character, just # use 'instance' instead. 'instance' end - def input_in_parts - provided_input = input.dup - if provided_input.include?('/') - provided_input.gsub! /^#{src}\//, '' - provided_input = provided_input.split('/').join('.') - end + ## + # @param value [String] If no value is provided, will use +--input+ instead. + # @return [Array<String>] An Array of the provided string split on slahes + # or dots with the file extension removed. + def input_in_parts(value=nil) + provided_input = value || input.dup + provided_input.gsub! /^#{src}\//, '' if respond_to? :src + provided_input = provided_input.split('/').join('.') - provided_input.gsub!(/\.as$/, '') - provided_input.gsub!(/\.mxml$/, '') - provided_input.gsub!(/\.xml$/, '') - - provided_input.split('.') + remove_file_extensions(provided_input).split('.') end + ## + # @return [String] The fully qualified class name version of whatever was +input+. def fully_qualified_class_name - input + remove_slashes remove_file_extensions(input) end + + ## + # @param value [String] A string that may have a file extension. + # @return [String] A new String with common file extensions + # (.as, .mxml, .xml) removed from the provided value. + def remove_file_extensions value + value = value.dup + value.gsub!(/\.as$/, '') + value.gsub!(/\.mxml$/, '') + value.gsub!(/\.xml$/, '') + return value + end + ## + # @return [String] The +class_name+ with '.swf' appended. def deploy_swf_name "#{class_name}.swf" end + ## + # @return [String] The +class_name+ with '-debug.swf' appended. def debug_swf_name "#{class_name}-debug.swf" end + ## + # @return [String] The +class_name+ with '-test.swf' appendend. def test_swf_name "#{class_name}-test.swf" end + ## + # @return [String] The +class_name+ with 'Runner.swf' appended. def test_runner_name "#{class_name}Runner" end end