fluby 0.5.6 → 0.6.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.
- data/README.mdown +134 -0
 - data/Rakefile +14 -2
 - data/lib/fluby.rb +88 -4
 - data/lib/templates/README +1 -1
 - data/lib/templates/Rakefile +15 -6
 - data/lib/templates/generate +17 -0
 - data/lib/templates/generators/class +7 -0
 - data/lib/templates/generators/delegate +22 -0
 - data/lib/templates/generators/xml_loader +24 -0
 - metadata +9 -4
 - data/README +0 -4
 
    
        data/README.mdown
    ADDED
    
    | 
         @@ -0,0 +1,134 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # fluby
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            A simple command to create an empty ActionScript project for MTASC + SWFMILL + Rake
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            ## Installation
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                gem install fluby
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            Fluby requires the 'mtasc' and 'swfmill' executables somewhere on your path.
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            ## Usage
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            ### New project
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            To create a new project:
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                fluby ProjectName
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            ### Compilation
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            To compile your brand new project:
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                cd ProjectName
         
     | 
| 
      
 26 
     | 
    
         
            +
                rake
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            That should generate a 'ProjectName.swf' file on the 'deploy' folder. The SWF file is debug-enabled (i.e: you can see the trace() output if you have a debug Flash Player). If you want to release your project without debug information, run
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                rake release
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            ### More Rake tasks
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            There are other rake tasks available:
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                rake package  # Creates a ZIP file containing your SWF file on the 'pkg' folder
         
     | 
| 
      
 38 
     | 
    
         
            +
                rake test # Opens a HTML file with your SWF for testing on your default browser (available on Mac only)
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            ### script/generate
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
            Starting from version 0.6, fluby installs a 'generate' script in the 'scripts' folder that you can use to speed up the creation of new classes.
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            Right now there are 3 template types:
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
            #### **class**
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
            Use it to create a generic class by running:
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                script/generate class your.class.path.ClassName attribute:Type attribute:Type (...)
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
            For example: if you want to create a "Car" class with attributes "make" and "model" of type String and an attribute "year" of type Number, you'd run:
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                script/generate class com.yourdomain.Car make:String model:String year:Number
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            This will create a file in com/yourdomain/Car.as with this content:
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                class com.yourdomain.Car {
         
     | 
| 
      
 60 
     | 
    
         
            +
                  var make:String;
         
     | 
| 
      
 61 
     | 
    
         
            +
                  var model:String;
         
     | 
| 
      
 62 
     | 
    
         
            +
                  var year:Number;
         
     | 
| 
      
 63 
     | 
    
         
            +
                  function Car(){
         
     | 
| 
      
 64 
     | 
    
         
            +
                    // Init class
         
     | 
| 
      
 65 
     | 
    
         
            +
                  }
         
     | 
| 
      
 66 
     | 
    
         
            +
                }
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
            #### **xml_loader**
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
            Use to create a simple XML loader class by running:
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
                script/generate xml_loader your.class.path.ClassName
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
            Example: if you run
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
                script/generate xml_loader com.bomberstudios.xml.Loader
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
            you'll get a com/bomberstudios/xml/Loader.as file containing:
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                class com.bomberstudios.xml.Loader {
         
     | 
| 
      
 82 
     | 
    
         
            +
                  var _path:String;
         
     | 
| 
      
 83 
     | 
    
         
            +
                  var raw_data:XML;
         
     | 
| 
      
 84 
     | 
    
         
            +
                  function Loader(path:String,callback:Function){
         
     | 
| 
      
 85 
     | 
    
         
            +
                    _path = path;
         
     | 
| 
      
 86 
     | 
    
         
            +
                    raw_data = new XML();
         
     | 
| 
      
 87 
     | 
    
         
            +
                    raw_data.ignoreWhite = true;
         
     | 
| 
      
 88 
     | 
    
         
            +
                    raw_data.onLoad = callback;
         
     | 
| 
      
 89 
     | 
    
         
            +
                  }
         
     | 
| 
      
 90 
     | 
    
         
            +
                  function give_me(node_name){
         
     | 
| 
      
 91 
     | 
    
         
            +
                    if (raw_data.firstChild.nodeName == node_name) {
         
     | 
| 
      
 92 
     | 
    
         
            +
                      return raw_data.firstChild;
         
     | 
| 
      
 93 
     | 
    
         
            +
                    }
         
     | 
| 
      
 94 
     | 
    
         
            +
                    for(var i=raw_data.firstChild.childNodes.length; i>=0; i--){
         
     | 
| 
      
 95 
     | 
    
         
            +
                      if(raw_data.firstChild.childNodes[i].nodeName == node_name){
         
     | 
| 
      
 96 
     | 
    
         
            +
                        return raw_data.firstChild.childNodes[i];
         
     | 
| 
      
 97 
     | 
    
         
            +
                      }
         
     | 
| 
      
 98 
     | 
    
         
            +
                    }
         
     | 
| 
      
 99 
     | 
    
         
            +
                  }
         
     | 
| 
      
 100 
     | 
    
         
            +
                  public function load(){
         
     | 
| 
      
 101 
     | 
    
         
            +
                    raw_data.load(_path);
         
     | 
| 
      
 102 
     | 
    
         
            +
                  }
         
     | 
| 
      
 103 
     | 
    
         
            +
                }
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
            #### **delegate**
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
      
 108 
     | 
    
         
            +
            To generate a MTASC-compatible Delegate class, run
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
                script/generate delegate your.class.path.Delegate
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
            This will produce a your/class/path/Delegate.as file containing:
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
                /**
         
     | 
| 
      
 115 
     | 
    
         
            +
                *
         
     | 
| 
      
 116 
     | 
    
         
            +
                * Delegate Class, MTASC compatible
         
     | 
| 
      
 117 
     | 
    
         
            +
                *
         
     | 
| 
      
 118 
     | 
    
         
            +
                **/
         
     | 
| 
      
 119 
     | 
    
         
            +
                class your.class.path.Delegate {
         
     | 
| 
      
 120 
     | 
    
         
            +
                  public static function create(scope:Object,method:Function):Function{
         
     | 
| 
      
 121 
     | 
    
         
            +
                    var params:Array = arguments.splice(2,arguments.length-2);
         
     | 
| 
      
 122 
     | 
    
         
            +
                    var proxyFunc:Function = function():Void{
         
     | 
| 
      
 123 
     | 
    
         
            +
                      method.apply(scope,arguments.concat(params));
         
     | 
| 
      
 124 
     | 
    
         
            +
                    }
         
     | 
| 
      
 125 
     | 
    
         
            +
                    return proxyFunc;
         
     | 
| 
      
 126 
     | 
    
         
            +
                  }
         
     | 
| 
      
 127 
     | 
    
         
            +
                  public static function createR(scope:Object,method:Function):Function{
         
     | 
| 
      
 128 
     | 
    
         
            +
                    var params:Array = arguments.splice(2,arguments.length-2);
         
     | 
| 
      
 129 
     | 
    
         
            +
                    var proxyFunc:Function = function():Void{
         
     | 
| 
      
 130 
     | 
    
         
            +
                      method.apply(scope,params.concat(arguments));
         
     | 
| 
      
 131 
     | 
    
         
            +
                    }
         
     | 
| 
      
 132 
     | 
    
         
            +
                    return proxyFunc;
         
     | 
| 
      
 133 
     | 
    
         
            +
                  }
         
     | 
| 
      
 134 
     | 
    
         
            +
                }
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -28,7 +28,7 @@ spec = Gem::Specification.new do |s| 
     | 
|
| 
       28 
28 
     | 
    
         
             
              s.required_ruby_version = '>= 1.8.5'
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
30 
     | 
    
         
             
              s.has_rdoc              = false
         
     | 
| 
       31 
     | 
    
         
            -
              s.files                 = FileList.new("README","Rakefile","bin/**/*","lib/**/*").to_a
         
     | 
| 
      
 31 
     | 
    
         
            +
              s.files                 = FileList.new("README.mdown","Rakefile","bin/**/*","lib/**/*").to_a
         
     | 
| 
       32 
32 
     | 
    
         
             
              s.executables           = [ 'fluby' ]
         
     | 
| 
       33 
33 
     | 
    
         
             
              s.require_path          = 'lib'
         
     | 
| 
       34 
34 
     | 
    
         
             
              s.bindir                = 'bin'
         
     | 
| 
         @@ -56,4 +56,16 @@ Rake::TestTask.new(:test) do |test| 
     | 
|
| 
       56 
56 
     | 
    
         
             
              test.test_files = Dir['test/test_*.rb']
         
     | 
| 
       57 
57 
     | 
    
         
             
            end
         
     | 
| 
       58 
58 
     | 
    
         | 
| 
       59 
     | 
    
         
            -
            task : 
     | 
| 
      
 59 
     | 
    
         
            +
            task :github do
         
     | 
| 
      
 60 
     | 
    
         
            +
              require 'rubygems/specification'
         
     | 
| 
      
 61 
     | 
    
         
            +
              data = File.read('fluby.gemspec')
         
     | 
| 
      
 62 
     | 
    
         
            +
              github_spec = nil
         
     | 
| 
      
 63 
     | 
    
         
            +
              Thread.new { github_spec = eval("$SAFE = 3\n#{data}") }.join
         
     | 
| 
      
 64 
     | 
    
         
            +
              puts github_spec
         
     | 
| 
      
 65 
     | 
    
         
            +
            end
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
            task :test do
         
     | 
| 
      
 68 
     | 
    
         
            +
              %x(ruby test/test_fluby.rb)
         
     | 
| 
      
 69 
     | 
    
         
            +
            end
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
            task :default => [ :test ]
         
     | 
    
        data/lib/fluby.rb
    CHANGED
    
    | 
         @@ -1,21 +1,40 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "erb"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "fileutils"
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
       1 
4 
     | 
    
         
             
            module Fluby
         
     | 
| 
       2 
5 
     | 
    
         
             
              NAME    = 'fluby'
         
     | 
| 
       3 
     | 
    
         
            -
              VERSION = '0. 
     | 
| 
      
 6 
     | 
    
         
            +
              VERSION = '0.6.1'
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              COLORS = {
         
     | 
| 
      
 9 
     | 
    
         
            +
                :black => "\033[0;30m",
         
     | 
| 
      
 10 
     | 
    
         
            +
                :red => "\033[0;31m",
         
     | 
| 
      
 11 
     | 
    
         
            +
                :green => "\033[0;32m",
         
     | 
| 
      
 12 
     | 
    
         
            +
                :yellow => "\033[0;33m",
         
     | 
| 
      
 13 
     | 
    
         
            +
                :blue => "\033[0;34m",
         
     | 
| 
      
 14 
     | 
    
         
            +
                :purple => "\033[0;35m",
         
     | 
| 
      
 15 
     | 
    
         
            +
                :cyan => "\033[0;36m",
         
     | 
| 
      
 16 
     | 
    
         
            +
                :white => "\033[0;37m",
         
     | 
| 
      
 17 
     | 
    
         
            +
                :whitebold => "\033[1;37m"
         
     | 
| 
      
 18 
     | 
    
         
            +
              }
         
     | 
| 
      
 19 
     | 
    
         
            +
              PATH = File.expand_path(__FILE__)
         
     | 
| 
       4 
20 
     | 
    
         | 
| 
       5 
21 
     | 
    
         
             
              def self.create_project(name)
         
     | 
| 
       6 
22 
     | 
    
         
             
                require "fileutils"
         
     | 
| 
       7 
23 
     | 
    
         
             
                require "erb"
         
     | 
| 
       8 
24 
     | 
    
         | 
| 
      
 25 
     | 
    
         
            +
                # TODO: Support project creation in subfolders (i.e: fluby test/project)
         
     | 
| 
       9 
26 
     | 
    
         
             
                @project_name = name
         
     | 
| 
       10 
27 
     | 
    
         
             
                @project_folder = FileUtils.pwd + "/" + @project_name
         
     | 
| 
       11 
28 
     | 
    
         | 
| 
      
 29 
     | 
    
         
            +
                puts "\n#{COLORS[:green]}Creating project #{@project_name}"
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
       12 
31 
     | 
    
         
             
                # Make folders
         
     | 
| 
       13 
32 
     | 
    
         
             
                if File.exist? @project_folder
         
     | 
| 
       14 
     | 
    
         
            -
                  puts "Folder #{@project_name} already exists,"
         
     | 
| 
       15 
     | 
    
         
            -
                  puts "please choose a different name for your project"
         
     | 
| 
      
 33 
     | 
    
         
            +
                  puts "#{COLORS[:red]}Folder #{@project_name} already exists,"
         
     | 
| 
      
 34 
     | 
    
         
            +
                  puts "#{COLORS[:red]}please choose a different name for your project"
         
     | 
| 
       16 
35 
     | 
    
         
             
                  exit
         
     | 
| 
       17 
36 
     | 
    
         
             
                end
         
     | 
| 
       18 
     | 
    
         
            -
                FileUtils.mkdir [@project_folder,"#{@project_folder}/deploy","#{@project_folder}/assets"]
         
     | 
| 
      
 37 
     | 
    
         
            +
                FileUtils.mkdir [@project_folder,"#{@project_folder}/deploy","#{@project_folder}/assets","#{@project_folder}/script"]
         
     | 
| 
       19 
38 
     | 
    
         | 
| 
       20 
39 
     | 
    
         
             
                # Make files
         
     | 
| 
       21 
40 
     | 
    
         
             
                ["Rakefile","README"].each do |file|
         
     | 
| 
         @@ -30,6 +49,13 @@ module Fluby 
     | 
|
| 
       30 
49 
     | 
    
         
             
                # Main Class
         
     | 
| 
       31 
50 
     | 
    
         
             
                render_template "ASClass.as", "#{@project_name}.as"
         
     | 
| 
       32 
51 
     | 
    
         | 
| 
      
 52 
     | 
    
         
            +
                # script/generate
         
     | 
| 
      
 53 
     | 
    
         
            +
                render_template "generate", "script/generate"
         
     | 
| 
      
 54 
     | 
    
         
            +
                %x(chmod 755 "#{@project_folder}/script/generate")
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                if in_textmate?
         
     | 
| 
      
 57 
     | 
    
         
            +
                  puts "Oh, my, what a nice editor you're using"
         
     | 
| 
      
 58 
     | 
    
         
            +
                end
         
     | 
| 
       33 
59 
     | 
    
         
             
              end
         
     | 
| 
       34 
60 
     | 
    
         | 
| 
       35 
61 
     | 
    
         
             
              def self.copy_template source, destination=nil
         
     | 
| 
         @@ -37,6 +63,7 @@ module Fluby 
     | 
|
| 
       37 
63 
     | 
    
         
             
                  destination = source
         
     | 
| 
       38 
64 
     | 
    
         
             
                end
         
     | 
| 
       39 
65 
     | 
    
         
             
                FileUtils.cp "#{File.dirname(__FILE__)}/templates/#{source}", "#{@project_folder}/#{destination}"
         
     | 
| 
      
 66 
     | 
    
         
            +
                log "create", "#{@project_name}/#{destination}"
         
     | 
| 
       40 
67 
     | 
    
         
             
              end
         
     | 
| 
       41 
68 
     | 
    
         | 
| 
       42 
69 
     | 
    
         
             
              def self.render_template source, destination=nil
         
     | 
| 
         @@ -46,5 +73,62 @@ module Fluby 
     | 
|
| 
       46 
73 
     | 
    
         
             
                open("#{@project_folder}/#{destination}","w") do |f|
         
     | 
| 
       47 
74 
     | 
    
         
             
                  f << ERB.new(IO.read("#{File.dirname(__FILE__)}/templates/#{source}")).result(binding)
         
     | 
| 
       48 
75 
     | 
    
         
             
                end
         
     | 
| 
      
 76 
     | 
    
         
            +
                log "create", "#{@project_name}/#{destination}"
         
     | 
| 
      
 77 
     | 
    
         
            +
              end
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
              def self.log type, string
         
     | 
| 
      
 80 
     | 
    
         
            +
                case type
         
     | 
| 
      
 81 
     | 
    
         
            +
                when "alert"
         
     | 
| 
      
 82 
     | 
    
         
            +
                  puts "\t#{COLORS[:red]}Alert:\t#{string}#{COLORS[:white]}"
         
     | 
| 
      
 83 
     | 
    
         
            +
                when "create"
         
     | 
| 
      
 84 
     | 
    
         
            +
                  puts "\t#{COLORS[:white]}Created:\t#{COLORS[:cyan]}#{string}#{COLORS[:white]}"
         
     | 
| 
      
 85 
     | 
    
         
            +
                end
         
     | 
| 
      
 86 
     | 
    
         
            +
              end
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
              def self.in_textmate?
         
     | 
| 
      
 89 
     | 
    
         
            +
                begin
         
     | 
| 
      
 90 
     | 
    
         
            +
                  if TextMate
         
     | 
| 
      
 91 
     | 
    
         
            +
                    return true
         
     | 
| 
      
 92 
     | 
    
         
            +
                  end
         
     | 
| 
      
 93 
     | 
    
         
            +
                rescue
         
     | 
| 
      
 94 
     | 
    
         
            +
                  return false
         
     | 
| 
      
 95 
     | 
    
         
            +
                end
         
     | 
| 
      
 96 
     | 
    
         
            +
              end
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
      
 98 
     | 
    
         
            +
              def self.is_mac?
         
     | 
| 
      
 99 
     | 
    
         
            +
                return RUBY_PLATFORM =~ /darwin/
         
     | 
| 
      
 100 
     | 
    
         
            +
              end
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
              def self.has_growl?
         
     | 
| 
      
 103 
     | 
    
         
            +
                return is_mac? && !`which "growlnotify"`.empty?
         
     | 
| 
      
 104 
     | 
    
         
            +
              end
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
              # these functions are used by script/generate
         
     | 
| 
      
 107 
     | 
    
         
            +
              def self.generate(type, name, options={})
         
     | 
| 
      
 108 
     | 
    
         
            +
                target_path = File.dirname(name.split(".").join("/").to_s)
         
     | 
| 
      
 109 
     | 
    
         
            +
                target_file = name.split(".").join("/") + ".as".to_s
         
     | 
| 
      
 110 
     | 
    
         
            +
                if File.exist?(target_file)
         
     | 
| 
      
 111 
     | 
    
         
            +
                  log "alert", "File #{target_file} already exists!"
         
     | 
| 
      
 112 
     | 
    
         
            +
                  return
         
     | 
| 
      
 113 
     | 
    
         
            +
                end
         
     | 
| 
      
 114 
     | 
    
         
            +
                FileUtils.mkdir_p target_path unless File.exist? target_path
         
     | 
| 
      
 115 
     | 
    
         
            +
                @classpath = target_path.split("/").join(".")
         
     | 
| 
      
 116 
     | 
    
         
            +
                @classname = name.split(".").last
         
     | 
| 
      
 117 
     | 
    
         
            +
                options = options.map { |i| i = i.split(":") } unless options == {}
         
     | 
| 
      
 118 
     | 
    
         
            +
                @opts = options
         
     | 
| 
      
 119 
     | 
    
         
            +
                File.open(target_file,"w") do |file|
         
     | 
| 
      
 120 
     | 
    
         
            +
                  file << ERB.new(File.read("#{template_path}/generators/#{type}")).result(binding)
         
     | 
| 
      
 121 
     | 
    
         
            +
                end
         
     | 
| 
      
 122 
     | 
    
         
            +
                log "create", "#{target_path}/#{@classname}.as"
         
     | 
| 
      
 123 
     | 
    
         
            +
              end
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
              def self.path
         
     | 
| 
      
 126 
     | 
    
         
            +
                File.dirname(PATH)
         
     | 
| 
      
 127 
     | 
    
         
            +
              end
         
     | 
| 
      
 128 
     | 
    
         
            +
              def self.template_path
         
     | 
| 
      
 129 
     | 
    
         
            +
                path + "/templates"
         
     | 
| 
      
 130 
     | 
    
         
            +
              end
         
     | 
| 
      
 131 
     | 
    
         
            +
              def self.available_templates
         
     | 
| 
      
 132 
     | 
    
         
            +
                return Dir["#{template_path}/generators/**"].map { |i| i = File.basename(i) }
         
     | 
| 
       49 
133 
     | 
    
         
             
              end
         
     | 
| 
       50 
134 
     | 
    
         
             
            end
         
     | 
    
        data/lib/templates/README
    CHANGED
    
    
    
        data/lib/templates/Rakefile
    CHANGED
    
    | 
         @@ -1,3 +1,6 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "erb"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rake/packagetask'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
       1 
4 
     | 
    
         
             
            WIDTH = 725
         
     | 
| 
       2 
5 
     | 
    
         
             
            HEIGHT = 480
         
     | 
| 
       3 
6 
     | 
    
         
             
            FPS = 31
         
     | 
| 
         @@ -5,8 +8,6 @@ PLAYER = 8 
     | 
|
| 
       5 
8 
     | 
    
         
             
            BGCOLOR = "#ffffff"
         
     | 
| 
       6 
9 
     | 
    
         
             
            APP = "<%= @project_name %>"
         
     | 
| 
       7 
10 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
            require "erb"
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
11 
     | 
    
         
             
            def render_template(file)
         
     | 
| 
       11 
12 
     | 
    
         
             
              filename = File.basename(file).split(".")[0]
         
     | 
| 
       12 
13 
     | 
    
         
             
              case File.basename(file).split(".")[1]
         
     | 
| 
         @@ -36,18 +37,24 @@ task :compile do 
     | 
|
| 
       36 
37 
     | 
    
         
             
                end
         
     | 
| 
       37 
38 
     | 
    
         
             
              end
         
     | 
| 
       38 
39 
     | 
    
         
             
              puts %x(swfmill simple #{APP}.xml #{APP}.swf)
         
     | 
| 
       39 
     | 
    
         
            -
              rm "#{APP}.xml"
         
     | 
| 
      
 40 
     | 
    
         
            +
              rm "#{APP}.xml", {:verbose => false}
         
     | 
| 
       40 
41 
     | 
    
         
             
              puts %x(mtasc -swf #{APP}.swf -main -mx -version #{PLAYER} #{trace} #{APP}.as)
         
     | 
| 
       41 
42 
     | 
    
         
             
              @end = Time.now
         
     | 
| 
       42 
43 
     | 
    
         | 
| 
       43 
44 
     | 
    
         
             
              ["*.html","*.swf"].each do |list|
         
     | 
| 
       44 
45 
     | 
    
         
             
                Dir[list].each do |file|
         
     | 
| 
       45 
     | 
    
         
            -
                  mv file, "deploy/#{file}"
         
     | 
| 
      
 46 
     | 
    
         
            +
                  mv file, "deploy/#{file}", {:verbose => false}
         
     | 
| 
       46 
47 
     | 
    
         
             
                end
         
     | 
| 
       47 
48 
     | 
    
         
             
              end
         
     | 
| 
       48 
49 
     | 
    
         
             
            end
         
     | 
| 
       49 
50 
     | 
    
         | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
      
 51 
     | 
    
         
            +
            Rake::PackageTask.new(APP, :noversion) do |p|
         
     | 
| 
      
 52 
     | 
    
         
            +
              p.need_zip = true
         
     | 
| 
      
 53 
     | 
    
         
            +
              p.name = Time.now.strftime("%Y%m%d") + "-" + APP
         
     | 
| 
      
 54 
     | 
    
         
            +
              p.package_files.include("README",Dir["deploy/*"])
         
     | 
| 
      
 55 
     | 
    
         
            +
            end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            <% if Fluby.has_growl? %>
         
     | 
| 
       51 
58 
     | 
    
         
             
            task :notify do
         
     | 
| 
       52 
59 
     | 
    
         
             
              msg = "Finished compiling in #{@end - @start}s."
         
     | 
| 
       53 
60 
     | 
    
         
             
              if @nodebug
         
     | 
| 
         @@ -61,12 +68,14 @@ task :nodebug do 
     | 
|
| 
       61 
68 
     | 
    
         
             
              @nodebug = true
         
     | 
| 
       62 
69 
     | 
    
         
             
            end
         
     | 
| 
       63 
70 
     | 
    
         | 
| 
      
 71 
     | 
    
         
            +
            <% if Fluby.is_mac? %>
         
     | 
| 
       64 
72 
     | 
    
         
             
            desc "Test the SWF file in your default browser"
         
     | 
| 
       65 
73 
     | 
    
         
             
            task :test => [:compile] do
         
     | 
| 
       66 
74 
     | 
    
         
             
              %x(open deploy/index.html)
         
     | 
| 
       67 
75 
     | 
    
         
             
            end
         
     | 
| 
      
 76 
     | 
    
         
            +
            <% end %>
         
     | 
| 
       68 
77 
     | 
    
         | 
| 
       69 
     | 
    
         
            -
            <% if  
     | 
| 
      
 78 
     | 
    
         
            +
            <% if Fluby.has_growl? %>
         
     | 
| 
       70 
79 
     | 
    
         
             
            desc "Build a release version of <%= @project_name %> (with trace() disabled)"
         
     | 
| 
       71 
80 
     | 
    
         
             
            task :release => [:nodebug,:compile,:notify]
         
     | 
| 
       72 
81 
     | 
    
         | 
| 
         @@ -0,0 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "rubygems"
         
     | 
| 
      
 3 
     | 
    
         
            +
            require "fluby"
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            commandline = ARGV
         
     | 
| 
      
 6 
     | 
    
         
            +
            if commandline.size < 2
         
     | 
| 
      
 7 
     | 
    
         
            +
              puts "Usage: script/generate type classpath [options]"
         
     | 
| 
      
 8 
     | 
    
         
            +
              puts "where type is one of"
         
     | 
| 
      
 9 
     | 
    
         
            +
              Fluby.available_templates.each do |t|
         
     | 
| 
      
 10 
     | 
    
         
            +
                puts "\t#{t}"
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
            else
         
     | 
| 
      
 13 
     | 
    
         
            +
              type = commandline.shift
         
     | 
| 
      
 14 
     | 
    
         
            +
              name = commandline.shift
         
     | 
| 
      
 15 
     | 
    
         
            +
              options = commandline
         
     | 
| 
      
 16 
     | 
    
         
            +
              Fluby.generate(type,name,options)
         
     | 
| 
      
 17 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            /**
         
     | 
| 
      
 2 
     | 
    
         
            +
            * 
         
     | 
| 
      
 3 
     | 
    
         
            +
            * Delegate Class, MTASC compatible
         
     | 
| 
      
 4 
     | 
    
         
            +
            * 
         
     | 
| 
      
 5 
     | 
    
         
            +
            **/
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            class <%= @classpath %>.<%= @classname %> {
         
     | 
| 
      
 8 
     | 
    
         
            +
              public static function create(scope:Object,method:Function):Function{
         
     | 
| 
      
 9 
     | 
    
         
            +
                var params:Array = arguments.splice(2,arguments.length-2);
         
     | 
| 
      
 10 
     | 
    
         
            +
                var proxyFunc:Function = function():Void{
         
     | 
| 
      
 11 
     | 
    
         
            +
                  method.apply(scope,arguments.concat(params));
         
     | 
| 
      
 12 
     | 
    
         
            +
                }
         
     | 
| 
      
 13 
     | 
    
         
            +
                return proxyFunc;
         
     | 
| 
      
 14 
     | 
    
         
            +
              }
         
     | 
| 
      
 15 
     | 
    
         
            +
              public static function createR(scope:Object,method:Function):Function{
         
     | 
| 
      
 16 
     | 
    
         
            +
                var params:Array = arguments.splice(2,arguments.length-2);
         
     | 
| 
      
 17 
     | 
    
         
            +
                var proxyFunc:Function = function():Void{
         
     | 
| 
      
 18 
     | 
    
         
            +
                  method.apply(scope,params.concat(arguments));
         
     | 
| 
      
 19 
     | 
    
         
            +
                }
         
     | 
| 
      
 20 
     | 
    
         
            +
                return proxyFunc;
         
     | 
| 
      
 21 
     | 
    
         
            +
              }
         
     | 
| 
      
 22 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -0,0 +1,24 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class <%= @classpath %>.<%= @classname %> {
         
     | 
| 
      
 2 
     | 
    
         
            +
              var _path:String;
         
     | 
| 
      
 3 
     | 
    
         
            +
              var raw_data:XML;
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              function <%= @classname %>(path:String,callback:Function){
         
     | 
| 
      
 6 
     | 
    
         
            +
                _path = path;
         
     | 
| 
      
 7 
     | 
    
         
            +
                raw_data = new XML();
         
     | 
| 
      
 8 
     | 
    
         
            +
                raw_data.ignoreWhite = true;
         
     | 
| 
      
 9 
     | 
    
         
            +
                raw_data.onLoad = callback;
         
     | 
| 
      
 10 
     | 
    
         
            +
              }
         
     | 
| 
      
 11 
     | 
    
         
            +
              function give_me(node_name){
         
     | 
| 
      
 12 
     | 
    
         
            +
                if (raw_data.firstChild.nodeName == node_name) {
         
     | 
| 
      
 13 
     | 
    
         
            +
                  return raw_data.firstChild;
         
     | 
| 
      
 14 
     | 
    
         
            +
                }
         
     | 
| 
      
 15 
     | 
    
         
            +
                for(var i=raw_data.firstChild.childNodes.length; i>=0; i--){
         
     | 
| 
      
 16 
     | 
    
         
            +
                  if(raw_data.firstChild.childNodes[i].nodeName == node_name){
         
     | 
| 
      
 17 
     | 
    
         
            +
                    return raw_data.firstChild.childNodes[i];
         
     | 
| 
      
 18 
     | 
    
         
            +
                  }
         
     | 
| 
      
 19 
     | 
    
         
            +
                }
         
     | 
| 
      
 20 
     | 
    
         
            +
              }
         
     | 
| 
      
 21 
     | 
    
         
            +
              public function load(){
         
     | 
| 
      
 22 
     | 
    
         
            +
                raw_data.load(_path);
         
     | 
| 
      
 23 
     | 
    
         
            +
              }
         
     | 
| 
      
 24 
     | 
    
         
            +
            }
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: fluby
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.6.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors: 
         
     | 
| 
       7 
7 
     | 
    
         
             
            - "Ale Mu\xC3\xB1oz"
         
     | 
| 
         @@ -9,7 +9,7 @@ autorequire: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
            date: 2008-04 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2008-11-04 00:00:00 +01:00
         
     | 
| 
       13 
13 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       14 
14 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
         @@ -22,12 +22,17 @@ extensions: [] 
     | 
|
| 
       22 
22 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
            files: 
         
     | 
| 
       25 
     | 
    
         
            -
            - README
         
     | 
| 
      
 25 
     | 
    
         
            +
            - README.mdown
         
     | 
| 
       26 
26 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       27 
27 
     | 
    
         
             
            - bin/fluby
         
     | 
| 
       28 
28 
     | 
    
         
             
            - lib/fluby.rb
         
     | 
| 
       29 
29 
     | 
    
         
             
            - lib/templates
         
     | 
| 
       30 
30 
     | 
    
         
             
            - lib/templates/ASClass.as
         
     | 
| 
      
 31 
     | 
    
         
            +
            - lib/templates/generate
         
     | 
| 
      
 32 
     | 
    
         
            +
            - lib/templates/generators
         
     | 
| 
      
 33 
     | 
    
         
            +
            - lib/templates/generators/class
         
     | 
| 
      
 34 
     | 
    
         
            +
            - lib/templates/generators/delegate
         
     | 
| 
      
 35 
     | 
    
         
            +
            - lib/templates/generators/xml_loader
         
     | 
| 
       31 
36 
     | 
    
         
             
            - lib/templates/index.rhtml
         
     | 
| 
       32 
37 
     | 
    
         
             
            - lib/templates/project.rxml
         
     | 
| 
       33 
38 
     | 
    
         
             
            - lib/templates/Rakefile
         
     | 
| 
         @@ -55,7 +60,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       55 
60 
     | 
    
         
             
            requirements: []
         
     | 
| 
       56 
61 
     | 
    
         | 
| 
       57 
62 
     | 
    
         
             
            rubyforge_project: fluby
         
     | 
| 
       58 
     | 
    
         
            -
            rubygems_version: 1.0 
     | 
| 
      
 63 
     | 
    
         
            +
            rubygems_version: 1.3.0
         
     | 
| 
       59 
64 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       60 
65 
     | 
    
         
             
            specification_version: 2
         
     | 
| 
       61 
66 
     | 
    
         
             
            summary: A simple command to create an empty project for MTASC + SWFMILL + Rake
         
     | 
    
        data/README
    DELETED