templebars 0.0.6 → 0.0.7
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/Gemfile.lock +7 -42
- data/README.md +46 -17
- data/lib/templebars/rails/templates.rb +11 -9
- data/lib/templebars/rails/version.rb +2 -2
- data/templebars.gemspec +3 -1
- data/vendor/assets/javascripts/handlebars.runtime.js +223 -0
- metadata +32 -8
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -1,64 +1,29 @@ | |
| 1 1 | 
             
            PATH
         | 
| 2 2 | 
             
              remote: .
         | 
| 3 3 | 
             
              specs:
         | 
| 4 | 
            -
                templebars (0.0. | 
| 4 | 
            +
                templebars (0.0.6)
         | 
| 5 5 | 
             
                  execjs
         | 
| 6 | 
            -
                   | 
| 6 | 
            +
                  sprockets (>= 2.0.3)
         | 
| 7 | 
            +
                  tilt
         | 
| 7 8 |  | 
| 8 9 | 
             
            GEM
         | 
| 9 10 | 
             
              remote: http://rubygems.org/
         | 
| 10 11 | 
             
              specs:
         | 
| 11 | 
            -
                 | 
| 12 | 
            -
                  activemodel (= 3.2.1)
         | 
| 13 | 
            -
                  activesupport (= 3.2.1)
         | 
| 14 | 
            -
                  builder (~> 3.0.0)
         | 
| 15 | 
            -
                  erubis (~> 2.7.0)
         | 
| 16 | 
            -
                  journey (~> 1.0.1)
         | 
| 17 | 
            -
                  rack (~> 1.4.0)
         | 
| 18 | 
            -
                  rack-cache (~> 1.1)
         | 
| 19 | 
            -
                  rack-test (~> 0.6.1)
         | 
| 20 | 
            -
                  sprockets (~> 2.1.2)
         | 
| 21 | 
            -
                activemodel (3.2.1)
         | 
| 22 | 
            -
                  activesupport (= 3.2.1)
         | 
| 23 | 
            -
                  builder (~> 3.0.0)
         | 
| 24 | 
            -
                activesupport (3.2.1)
         | 
| 25 | 
            -
                  i18n (~> 0.6)
         | 
| 26 | 
            -
                  multi_json (~> 1.0)
         | 
| 27 | 
            -
                builder (3.0.0)
         | 
| 28 | 
            -
                erubis (2.7.0)
         | 
| 29 | 
            -
                execjs (1.3.0)
         | 
| 12 | 
            +
                execjs (1.3.1)
         | 
| 30 13 | 
             
                  multi_json (~> 1.0)
         | 
| 31 14 | 
             
                hike (1.2.1)
         | 
| 32 | 
            -
                 | 
| 33 | 
            -
                journey (1.0.3)
         | 
| 34 | 
            -
                json (1.6.6)
         | 
| 35 | 
            -
                multi_json (1.2.0)
         | 
| 15 | 
            +
                multi_json (1.3.6)
         | 
| 36 16 | 
             
                rack (1.4.1)
         | 
| 37 | 
            -
                rack-cache (1.2)
         | 
| 38 | 
            -
                  rack (>= 0.4)
         | 
| 39 | 
            -
                rack-ssl (1.3.2)
         | 
| 40 | 
            -
                  rack
         | 
| 41 | 
            -
                rack-test (0.6.1)
         | 
| 42 | 
            -
                  rack (>= 1.0)
         | 
| 43 | 
            -
                railties (3.2.1)
         | 
| 44 | 
            -
                  actionpack (= 3.2.1)
         | 
| 45 | 
            -
                  activesupport (= 3.2.1)
         | 
| 46 | 
            -
                  rack-ssl (~> 1.3.2)
         | 
| 47 | 
            -
                  rake (>= 0.8.7)
         | 
| 48 | 
            -
                  rdoc (~> 3.4)
         | 
| 49 | 
            -
                  thor (~> 0.14.6)
         | 
| 50 17 | 
             
                rake (0.9.2.2)
         | 
| 51 | 
            -
                 | 
| 52 | 
            -
                  json (~> 1.4)
         | 
| 53 | 
            -
                sprockets (2.1.2)
         | 
| 18 | 
            +
                sprockets (2.1.3)
         | 
| 54 19 | 
             
                  hike (~> 1.2)
         | 
| 55 20 | 
             
                  rack (~> 1.0)
         | 
| 56 21 | 
             
                  tilt (~> 1.1, != 1.3.0)
         | 
| 57 | 
            -
                thor (0.14.6)
         | 
| 58 22 | 
             
                tilt (1.3.3)
         | 
| 59 23 |  | 
| 60 24 | 
             
            PLATFORMS
         | 
| 61 25 | 
             
              ruby
         | 
| 62 26 |  | 
| 63 27 | 
             
            DEPENDENCIES
         | 
| 28 | 
            +
              rake
         | 
| 64 29 | 
             
              templebars!
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,37 +1,66 @@ | |
| 1 1 | 
             
            # templebars
         | 
| 2 2 |  | 
| 3 | 
            -
            `templebars` allows you to precomile Handlebars | 
| 3 | 
            +
            `templebars` allows you to precomile [Handlebars][handlebars] templates
         | 
| 4 | 
            +
            in Rails and make them available globally on the client-side in a
         | 
| 5 | 
            +
            `Templates` object.
         | 
| 4 6 |  | 
| 5 | 
            -
             | 
| 6 | 
            -
            app/assets/javascripts/templates/todo_item.js.handlebars
         | 
| 7 | 
            -
            ```
         | 
| 7 | 
            +
            ## Adding Templebars to Rails 3.1+
         | 
| 8 8 |  | 
| 9 | 
            -
             | 
| 9 | 
            +
            Add `templebars` to your `Gemfile` in the `assets` group:
         | 
| 10 10 |  | 
| 11 11 | 
             
            ```ruby
         | 
| 12 | 
            -
             | 
| 12 | 
            +
            group :assets do
         | 
| 13 | 
            +
              ...
         | 
| 14 | 
            +
              gem 'templebars'
         | 
| 15 | 
            +
            end
         | 
| 13 16 | 
             
            ```
         | 
| 14 17 |  | 
| 15 | 
            -
             | 
| 18 | 
            +
            And run `bundle install` to install it.
         | 
| 16 19 |  | 
| 17 | 
            -
             | 
| 20 | 
            +
            Then, you'll need to include the Handlebars runtime in your JavaScript
         | 
| 21 | 
            +
            manifest (`app/assets/javascripts/application.js`):
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            ```javascript
         | 
| 24 | 
            +
            //= require handlebars.runtime
         | 
| 25 | 
            +
            ```
         | 
| 18 26 |  | 
| 19 | 
            -
             | 
| 27 | 
            +
            If you still need to compile Handlebars templates on the client side,
         | 
| 28 | 
            +
            you'll want to require the full `handlebars`, instead:
         | 
| 20 29 |  | 
| 21 | 
            -
            ``` | 
| 30 | 
            +
            ```javascript
         | 
| 22 31 | 
             
            //= require handlebars
         | 
| 23 32 | 
             
            ```
         | 
| 24 33 |  | 
| 25 | 
            -
             | 
| 34 | 
            +
            ## Adding templates
         | 
| 26 35 |  | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 36 | 
            +
            Place your templates in `app/assets/templates/` and require all of them
         | 
| 37 | 
            +
            in your JavaScript manifest (`application.js`):
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            ```javascript
         | 
| 40 | 
            +
            //= require_tree ../templates
         | 
| 29 41 | 
             
            ```
         | 
| 30 42 |  | 
| 31 | 
            -
             | 
| 43 | 
            +
            Your template file names must be suffixed with the ".handlebars" or
         | 
| 44 | 
            +
            ".hbs" extensions in order for Templebars to handle them.
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            ## Using templates
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            Your templates will be available on the client side via their paths in a
         | 
| 49 | 
            +
            global `Templates` object. For example, a template at
         | 
| 50 | 
            +
            `app/assets/templates/user.handlebars` can be rendered with:
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            ```javascript
         | 
| 53 | 
            +
            Templates['user'](context);
         | 
| 54 | 
            +
            ```
         | 
| 55 | 
            +
             | 
| 56 | 
            +
            And a template at `app/assets/templates/users/detail.handlebars` with:
         | 
| 57 | 
            +
             | 
| 58 | 
            +
            ```javascript
         | 
| 59 | 
            +
            Templates['users/detail'](context);
         | 
| 60 | 
            +
            ```
         | 
| 32 61 |  | 
| 33 | 
            -
             | 
| 62 | 
            +
            *This gem is maintained by [Stovepipe Studios][stovepipe].*
         | 
| 34 63 |  | 
| 35 | 
            -
             | 
| 64 | 
            +
            [stovepipe]: http://www.stovepipestudios.com
         | 
| 65 | 
            +
            [handlebars]: http://handlebarsjs.com/
         | 
| 36 66 |  | 
| 37 | 
            -
            Done. Go forth, grasshopper.
         | 
| @@ -11,21 +11,23 @@ module Templebars | |
| 11 11 | 
             
                    "application/javascript"
         | 
| 12 12 | 
             
                  end
         | 
| 13 13 |  | 
| 14 | 
            -
                  def initialize_engine; end
         | 
| 15 | 
            -
             | 
| 16 14 | 
             
                  def prepare; end
         | 
| 17 15 |  | 
| 18 16 | 
             
                  def evaluate( scope, locals, &block )
         | 
| 19 | 
            -
                    global = Templebars::Rails::GLOBAL
         | 
| 20 | 
            -
                    setup_global = "('undefined' == typeof #{global}) && (#{global} = {})"
         | 
| 21 17 | 
             
                    name = scope.logical_path.sub( /^templates\//, "" )
         | 
| 22 | 
            -
                     | 
| 23 | 
            -
                    template_declaration = "#{global}[\"#{name}\"] = Handlebars.template(#{precompiled_js});"
         | 
| 24 | 
            -
                    "#{setup_global}\n#{template_declaration}\n"
         | 
| 18 | 
            +
                    register_template_js( name, precompile( data ) )
         | 
| 25 19 | 
             
                  end
         | 
| 26 20 |  | 
| 27 21 | 
             
                  protected
         | 
| 28 22 |  | 
| 23 | 
            +
                  def register_template_js( name, precompiled_js )
         | 
| 24 | 
            +
                    global = Templebars::Rails::GLOBAL
         | 
| 25 | 
            +
                    <<-JS
         | 
| 26 | 
            +
                      this.#{global} || (this.#{global} = {});
         | 
| 27 | 
            +
                      this.#{global}["#{name}"] = Handlebars.template(#{precompiled_js});
         | 
| 28 | 
            +
                    JS
         | 
| 29 | 
            +
                  end
         | 
| 30 | 
            +
             | 
| 29 31 | 
             
                  def precompile( template )
         | 
| 30 32 | 
             
                    runtime.call( "Handlebars.precompile", template, { data: {} } )
         | 
| 31 33 | 
             
                  end
         | 
| @@ -35,13 +37,13 @@ module Templebars | |
| 35 37 | 
             
                  end
         | 
| 36 38 |  | 
| 37 39 | 
             
                  def handlebars_js
         | 
| 38 | 
            -
                    path = File. | 
| 40 | 
            +
                    path = File.expand_path( "../../../vendor/assets/javascripts/handlebars.js" )
         | 
| 39 41 | 
             
                    File.read( path )
         | 
| 40 42 | 
             
                  end
         | 
| 41 43 | 
             
                end
         | 
| 42 44 |  | 
| 43 45 | 
             
                Sprockets.register_engine '.handlebars', HandlebarsTemplate
         | 
| 44 46 | 
             
                Sprockets.register_engine '.hbs', HandlebarsTemplate
         | 
| 45 | 
            -
                Sprockets.register_engine '.hb', HandlebarsTemplate
         | 
| 46 47 | 
             
              end
         | 
| 47 48 | 
             
            end
         | 
| 49 | 
            +
             | 
    
        data/templebars.gemspec
    CHANGED
    
    | @@ -14,8 +14,10 @@ Gem::Specification.new do |s| | |
| 14 14 | 
             
              s.required_rubygems_version = ">= 1.3.6"
         | 
| 15 15 | 
             
              s.rubyforge_project         = "templebars"
         | 
| 16 16 |  | 
| 17 | 
            -
              s.add_dependency " | 
| 17 | 
            +
              s.add_dependency "sprockets", ">= 2.0.3"
         | 
| 18 18 | 
             
              s.add_dependency "execjs"
         | 
| 19 | 
            +
              s.add_dependency "tilt"
         | 
| 20 | 
            +
              s.add_development_dependency "rake"
         | 
| 19 21 |  | 
| 20 22 | 
             
              s.files        = `git ls-files`.split("\n")
         | 
| 21 23 | 
             
              s.require_path = 'lib'
         | 
| @@ -0,0 +1,223 @@ | |
| 1 | 
            +
            // lib/handlebars/base.js
         | 
| 2 | 
            +
            var Handlebars = {};
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            Handlebars.VERSION = "1.0.beta.6";
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            Handlebars.helpers  = {};
         | 
| 7 | 
            +
            Handlebars.partials = {};
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            Handlebars.registerHelper = function(name, fn, inverse) {
         | 
| 10 | 
            +
              if(inverse) { fn.not = inverse; }
         | 
| 11 | 
            +
              this.helpers[name] = fn;
         | 
| 12 | 
            +
            };
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            Handlebars.registerPartial = function(name, str) {
         | 
| 15 | 
            +
              this.partials[name] = str;
         | 
| 16 | 
            +
            };
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            Handlebars.registerHelper('helperMissing', function(arg) {
         | 
| 19 | 
            +
              if(arguments.length === 2) {
         | 
| 20 | 
            +
                return undefined;
         | 
| 21 | 
            +
              } else {
         | 
| 22 | 
            +
                throw new Error("Could not find property '" + arg + "'");
         | 
| 23 | 
            +
              }
         | 
| 24 | 
            +
            });
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            var toString = Object.prototype.toString, functionType = "[object Function]";
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            Handlebars.registerHelper('blockHelperMissing', function(context, options) {
         | 
| 29 | 
            +
              var inverse = options.inverse || function() {}, fn = options.fn;
         | 
| 30 | 
            +
             | 
| 31 | 
            +
             | 
| 32 | 
            +
              var ret = "";
         | 
| 33 | 
            +
              var type = toString.call(context);
         | 
| 34 | 
            +
             | 
| 35 | 
            +
              if(type === functionType) { context = context.call(this); }
         | 
| 36 | 
            +
             | 
| 37 | 
            +
              if(context === true) {
         | 
| 38 | 
            +
                return fn(this);
         | 
| 39 | 
            +
              } else if(context === false || context == null) {
         | 
| 40 | 
            +
                return inverse(this);
         | 
| 41 | 
            +
              } else if(type === "[object Array]") {
         | 
| 42 | 
            +
                if(context.length > 0) {
         | 
| 43 | 
            +
                  for(var i=0, j=context.length; i<j; i++) {
         | 
| 44 | 
            +
                    ret = ret + fn(context[i]);
         | 
| 45 | 
            +
                  }
         | 
| 46 | 
            +
                } else {
         | 
| 47 | 
            +
                  ret = inverse(this);
         | 
| 48 | 
            +
                }
         | 
| 49 | 
            +
                return ret;
         | 
| 50 | 
            +
              } else {
         | 
| 51 | 
            +
                return fn(context);
         | 
| 52 | 
            +
              }
         | 
| 53 | 
            +
            });
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            Handlebars.registerHelper('each', function(context, options) {
         | 
| 56 | 
            +
              var fn = options.fn, inverse = options.inverse;
         | 
| 57 | 
            +
              var ret = "";
         | 
| 58 | 
            +
             | 
| 59 | 
            +
              if(context && context.length > 0) {
         | 
| 60 | 
            +
                for(var i=0, j=context.length; i<j; i++) {
         | 
| 61 | 
            +
                  ret = ret + fn(context[i]);
         | 
| 62 | 
            +
                }
         | 
| 63 | 
            +
              } else {
         | 
| 64 | 
            +
                ret = inverse(this);
         | 
| 65 | 
            +
              }
         | 
| 66 | 
            +
              return ret;
         | 
| 67 | 
            +
            });
         | 
| 68 | 
            +
             | 
| 69 | 
            +
            Handlebars.registerHelper('if', function(context, options) {
         | 
| 70 | 
            +
              var type = toString.call(context);
         | 
| 71 | 
            +
              if(type === functionType) { context = context.call(this); }
         | 
| 72 | 
            +
             | 
| 73 | 
            +
              if(!context || Handlebars.Utils.isEmpty(context)) {
         | 
| 74 | 
            +
                return options.inverse(this);
         | 
| 75 | 
            +
              } else {
         | 
| 76 | 
            +
                return options.fn(this);
         | 
| 77 | 
            +
              }
         | 
| 78 | 
            +
            });
         | 
| 79 | 
            +
             | 
| 80 | 
            +
            Handlebars.registerHelper('unless', function(context, options) {
         | 
| 81 | 
            +
              var fn = options.fn, inverse = options.inverse;
         | 
| 82 | 
            +
              options.fn = inverse;
         | 
| 83 | 
            +
              options.inverse = fn;
         | 
| 84 | 
            +
             | 
| 85 | 
            +
              return Handlebars.helpers['if'].call(this, context, options);
         | 
| 86 | 
            +
            });
         | 
| 87 | 
            +
             | 
| 88 | 
            +
            Handlebars.registerHelper('with', function(context, options) {
         | 
| 89 | 
            +
              return options.fn(context);
         | 
| 90 | 
            +
            });
         | 
| 91 | 
            +
             | 
| 92 | 
            +
            Handlebars.registerHelper('log', function(context) {
         | 
| 93 | 
            +
              Handlebars.log(context);
         | 
| 94 | 
            +
            });
         | 
| 95 | 
            +
            ;
         | 
| 96 | 
            +
            // lib/handlebars/utils.js
         | 
| 97 | 
            +
            Handlebars.Exception = function(message) {
         | 
| 98 | 
            +
              var tmp = Error.prototype.constructor.apply(this, arguments);
         | 
| 99 | 
            +
             | 
| 100 | 
            +
              for (var p in tmp) {
         | 
| 101 | 
            +
                if (tmp.hasOwnProperty(p)) { this[p] = tmp[p]; }
         | 
| 102 | 
            +
              }
         | 
| 103 | 
            +
             | 
| 104 | 
            +
              this.message = tmp.message;
         | 
| 105 | 
            +
            };
         | 
| 106 | 
            +
            Handlebars.Exception.prototype = new Error;
         | 
| 107 | 
            +
             | 
| 108 | 
            +
            // Build out our basic SafeString type
         | 
| 109 | 
            +
            Handlebars.SafeString = function(string) {
         | 
| 110 | 
            +
              this.string = string;
         | 
| 111 | 
            +
            };
         | 
| 112 | 
            +
            Handlebars.SafeString.prototype.toString = function() {
         | 
| 113 | 
            +
              return this.string.toString();
         | 
| 114 | 
            +
            };
         | 
| 115 | 
            +
             | 
| 116 | 
            +
            (function() {
         | 
| 117 | 
            +
              var escape = {
         | 
| 118 | 
            +
                "<": "<",
         | 
| 119 | 
            +
                ">": ">",
         | 
| 120 | 
            +
                '"': """,
         | 
| 121 | 
            +
                "'": "'",
         | 
| 122 | 
            +
                "`": "`"
         | 
| 123 | 
            +
              };
         | 
| 124 | 
            +
             | 
| 125 | 
            +
              var badChars = /&(?!\w+;)|[<>"'`]/g;
         | 
| 126 | 
            +
              var possible = /[&<>"'`]/;
         | 
| 127 | 
            +
             | 
| 128 | 
            +
              var escapeChar = function(chr) {
         | 
| 129 | 
            +
                return escape[chr] || "&";
         | 
| 130 | 
            +
              };
         | 
| 131 | 
            +
             | 
| 132 | 
            +
              Handlebars.Utils = {
         | 
| 133 | 
            +
                escapeExpression: function(string) {
         | 
| 134 | 
            +
                  // don't escape SafeStrings, since they're already safe
         | 
| 135 | 
            +
                  if (string instanceof Handlebars.SafeString) {
         | 
| 136 | 
            +
                    return string.toString();
         | 
| 137 | 
            +
                  } else if (string == null || string === false) {
         | 
| 138 | 
            +
                    return "";
         | 
| 139 | 
            +
                  }
         | 
| 140 | 
            +
             | 
| 141 | 
            +
                  if(!possible.test(string)) { return string; }
         | 
| 142 | 
            +
                  return string.replace(badChars, escapeChar);
         | 
| 143 | 
            +
                },
         | 
| 144 | 
            +
             | 
| 145 | 
            +
                isEmpty: function(value) {
         | 
| 146 | 
            +
                  if (typeof value === "undefined") {
         | 
| 147 | 
            +
                    return true;
         | 
| 148 | 
            +
                  } else if (value === null) {
         | 
| 149 | 
            +
                    return true;
         | 
| 150 | 
            +
                  } else if (value === false) {
         | 
| 151 | 
            +
                    return true;
         | 
| 152 | 
            +
                  } else if(Object.prototype.toString.call(value) === "[object Array]" && value.length === 0) {
         | 
| 153 | 
            +
                    return true;
         | 
| 154 | 
            +
                  } else {
         | 
| 155 | 
            +
                    return false;
         | 
| 156 | 
            +
                  }
         | 
| 157 | 
            +
                }
         | 
| 158 | 
            +
              };
         | 
| 159 | 
            +
            })();;
         | 
| 160 | 
            +
            // lib/handlebars/runtime.js
         | 
| 161 | 
            +
            Handlebars.VM = {
         | 
| 162 | 
            +
              template: function(templateSpec) {
         | 
| 163 | 
            +
                // Just add water
         | 
| 164 | 
            +
                var container = {
         | 
| 165 | 
            +
                  escapeExpression: Handlebars.Utils.escapeExpression,
         | 
| 166 | 
            +
                  invokePartial: Handlebars.VM.invokePartial,
         | 
| 167 | 
            +
                  programs: [],
         | 
| 168 | 
            +
                  program: function(i, fn, data) {
         | 
| 169 | 
            +
                    var programWrapper = this.programs[i];
         | 
| 170 | 
            +
                    if(data) {
         | 
| 171 | 
            +
                      return Handlebars.VM.program(fn, data);
         | 
| 172 | 
            +
                    } else if(programWrapper) {
         | 
| 173 | 
            +
                      return programWrapper;
         | 
| 174 | 
            +
                    } else {
         | 
| 175 | 
            +
                      programWrapper = this.programs[i] = Handlebars.VM.program(fn);
         | 
| 176 | 
            +
                      return programWrapper;
         | 
| 177 | 
            +
                    }
         | 
| 178 | 
            +
                  },
         | 
| 179 | 
            +
                  programWithDepth: Handlebars.VM.programWithDepth,
         | 
| 180 | 
            +
                  noop: Handlebars.VM.noop
         | 
| 181 | 
            +
                };
         | 
| 182 | 
            +
             | 
| 183 | 
            +
                return function(context, options) {
         | 
| 184 | 
            +
                  options = options || {};
         | 
| 185 | 
            +
                  return templateSpec.call(container, Handlebars, context, options.helpers, options.partials, options.data);
         | 
| 186 | 
            +
                };
         | 
| 187 | 
            +
              },
         | 
| 188 | 
            +
             | 
| 189 | 
            +
              programWithDepth: function(fn, data, $depth) {
         | 
| 190 | 
            +
                var args = Array.prototype.slice.call(arguments, 2);
         | 
| 191 | 
            +
             | 
| 192 | 
            +
                return function(context, options) {
         | 
| 193 | 
            +
                  options = options || {};
         | 
| 194 | 
            +
             | 
| 195 | 
            +
                  return fn.apply(this, [context, options.data || data].concat(args));
         | 
| 196 | 
            +
                };
         | 
| 197 | 
            +
              },
         | 
| 198 | 
            +
              program: function(fn, data) {
         | 
| 199 | 
            +
                return function(context, options) {
         | 
| 200 | 
            +
                  options = options || {};
         | 
| 201 | 
            +
             | 
| 202 | 
            +
                  return fn(context, options.data || data);
         | 
| 203 | 
            +
                };
         | 
| 204 | 
            +
              },
         | 
| 205 | 
            +
              noop: function() { return ""; },
         | 
| 206 | 
            +
              invokePartial: function(partial, name, context, helpers, partials, data) {
         | 
| 207 | 
            +
                options = { helpers: helpers, partials: partials, data: data };
         | 
| 208 | 
            +
             | 
| 209 | 
            +
                if(partial === undefined) {
         | 
| 210 | 
            +
                  throw new Handlebars.Exception("The partial " + name + " could not be found");
         | 
| 211 | 
            +
                } else if(partial instanceof Function) {
         | 
| 212 | 
            +
                  return partial(context, options);
         | 
| 213 | 
            +
                } else if (!Handlebars.compile) {
         | 
| 214 | 
            +
                  throw new Handlebars.Exception("The partial " + name + " could not be compiled when running in runtime-only mode");
         | 
| 215 | 
            +
                } else {
         | 
| 216 | 
            +
                  partials[name] = Handlebars.compile(partial);
         | 
| 217 | 
            +
                  return partials[name](context, options);
         | 
| 218 | 
            +
                }
         | 
| 219 | 
            +
              }
         | 
| 220 | 
            +
            };
         | 
| 221 | 
            +
             | 
| 222 | 
            +
            Handlebars.template = Handlebars.VM.template;
         | 
| 223 | 
            +
            ;
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: templebars
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.7
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,22 +9,22 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2012- | 
| 12 | 
            +
            date: 2012-05-30 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 | 
            -
              name:  | 
| 16 | 
            -
              requirement: & | 
| 15 | 
            +
              name: sprockets
         | 
| 16 | 
            +
              requirement: &70293659066120 !ruby/object:Gem::Requirement
         | 
| 17 17 | 
             
                none: false
         | 
| 18 18 | 
             
                requirements:
         | 
| 19 19 | 
             
                - - ! '>='
         | 
| 20 20 | 
             
                  - !ruby/object:Gem::Version
         | 
| 21 | 
            -
                    version:  | 
| 21 | 
            +
                    version: 2.0.3
         | 
| 22 22 | 
             
              type: :runtime
         | 
| 23 23 | 
             
              prerelease: false
         | 
| 24 | 
            -
              version_requirements: * | 
| 24 | 
            +
              version_requirements: *70293659066120
         | 
| 25 25 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 26 26 | 
             
              name: execjs
         | 
| 27 | 
            -
              requirement: & | 
| 27 | 
            +
              requirement: &70293659065680 !ruby/object:Gem::Requirement
         | 
| 28 28 | 
             
                none: false
         | 
| 29 29 | 
             
                requirements:
         | 
| 30 30 | 
             
                - - ! '>='
         | 
| @@ -32,7 +32,29 @@ dependencies: | |
| 32 32 | 
             
                    version: '0'
         | 
| 33 33 | 
             
              type: :runtime
         | 
| 34 34 | 
             
              prerelease: false
         | 
| 35 | 
            -
              version_requirements: * | 
| 35 | 
            +
              version_requirements: *70293659065680
         | 
| 36 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 37 | 
            +
              name: tilt
         | 
| 38 | 
            +
              requirement: &70293659083960 !ruby/object:Gem::Requirement
         | 
| 39 | 
            +
                none: false
         | 
| 40 | 
            +
                requirements:
         | 
| 41 | 
            +
                - - ! '>='
         | 
| 42 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 43 | 
            +
                    version: '0'
         | 
| 44 | 
            +
              type: :runtime
         | 
| 45 | 
            +
              prerelease: false
         | 
| 46 | 
            +
              version_requirements: *70293659083960
         | 
| 47 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 48 | 
            +
              name: rake
         | 
| 49 | 
            +
              requirement: &70293659083520 !ruby/object:Gem::Requirement
         | 
| 50 | 
            +
                none: false
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - ! '>='
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: '0'
         | 
| 55 | 
            +
              type: :development
         | 
| 56 | 
            +
              prerelease: false
         | 
| 57 | 
            +
              version_requirements: *70293659083520
         | 
| 36 58 | 
             
            description: This gem provides Handlebars magic for your Rails 3 application.
         | 
| 37 59 | 
             
            email:
         | 
| 38 60 | 
             
            - tyson@stovepipestudios.com
         | 
| @@ -53,6 +75,7 @@ files: | |
| 53 75 | 
             
            - lib/templebars/rails/version.rb
         | 
| 54 76 | 
             
            - templebars.gemspec
         | 
| 55 77 | 
             
            - vendor/assets/javascripts/handlebars.js
         | 
| 78 | 
            +
            - vendor/assets/javascripts/handlebars.runtime.js
         | 
| 56 79 | 
             
            homepage: http://rubygems.org/gems/templebars
         | 
| 57 80 | 
             
            licenses: []
         | 
| 58 81 | 
             
            post_install_message: 
         | 
| @@ -78,3 +101,4 @@ signing_key: | |
| 78 101 | 
             
            specification_version: 3
         | 
| 79 102 | 
             
            summary: Use precompiled Handlebars templates with Rails 3
         | 
| 80 103 | 
             
            test_files: []
         | 
| 104 | 
            +
            has_rdoc: 
         |