dotjs_sprockets 0.1.0
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.
- checksums.yaml +7 -0
- data/.gitignore +22 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +61 -0
- data/Rakefile +2 -0
- data/dotjs_sprockets.gemspec +26 -0
- data/lib/dotjs_sprockets/constants.rb +22 -0
- data/lib/dotjs_sprockets/engine.rb +58 -0
- data/lib/dotjs_sprockets/tilt_dot.rb +37 -0
- data/lib/dotjs_sprockets.rb +5 -0
- data/vendor/assets/javascripts/dotjs_sprockets/doT.js +136 -0
- data/vendor/assets/javascripts/dotjs_sprockets/index.js +1 -0
- metadata +112 -0
    
        checksums.yaml
    ADDED
    
    | @@ -0,0 +1,7 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            SHA1:
         | 
| 3 | 
            +
              metadata.gz: ea75be79e483ce16dbf8f103172dafd2d80d9809
         | 
| 4 | 
            +
              data.tar.gz: 4b0bfea0a2fc5c6a80d1ff5eb5e1241057c5e6cf
         | 
| 5 | 
            +
            SHA512:
         | 
| 6 | 
            +
              metadata.gz: 13d8f3f92bd3d73bab36f423749246d24ef1024a601c3a5125125c574f10074cfbe1dd72819624c011ddddedd7a9c0ec68d92ca927ec43b782f4f196212d52f9
         | 
| 7 | 
            +
              data.tar.gz: 699412f42c05219bd043668a2b3ead4697a9b86d3fec6eb65286920f45c69bd4cf97267b42dbb1ad1463b372e20d149c973e43be2e90e7c19a46f22ffdd9beda
         | 
    
        data/.gitignore
    ADDED
    
    | @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            *.gem
         | 
| 2 | 
            +
            *.rbc
         | 
| 3 | 
            +
            .bundle
         | 
| 4 | 
            +
            .config
         | 
| 5 | 
            +
            .yardoc
         | 
| 6 | 
            +
            Gemfile.lock
         | 
| 7 | 
            +
            InstalledFiles
         | 
| 8 | 
            +
            _yardoc
         | 
| 9 | 
            +
            coverage
         | 
| 10 | 
            +
            doc/
         | 
| 11 | 
            +
            lib/bundler/man
         | 
| 12 | 
            +
            pkg
         | 
| 13 | 
            +
            rdoc
         | 
| 14 | 
            +
            spec/reports
         | 
| 15 | 
            +
            test/tmp
         | 
| 16 | 
            +
            test/version_tmp
         | 
| 17 | 
            +
            tmp
         | 
| 18 | 
            +
            *.bundle
         | 
| 19 | 
            +
            *.so
         | 
| 20 | 
            +
            *.o
         | 
| 21 | 
            +
            *.a
         | 
| 22 | 
            +
            mkmf.log
         | 
    
        data/Gemfile
    ADDED
    
    
    
        data/LICENSE.txt
    ADDED
    
    | @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            Copyright (c) 2014 Roberto Dip
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            MIT License
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Permission is hereby granted, free of charge, to any person obtaining
         | 
| 6 | 
            +
            a copy of this software and associated documentation files (the
         | 
| 7 | 
            +
            "Software"), to deal in the Software without restriction, including
         | 
| 8 | 
            +
            without limitation the rights to use, copy, modify, merge, publish,
         | 
| 9 | 
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         | 
| 10 | 
            +
            permit persons to whom the Software is furnished to do so, subject to
         | 
| 11 | 
            +
            the following conditions:
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            The above copyright notice and this permission notice shall be
         | 
| 14 | 
            +
            included in all copies or substantial portions of the Software.
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         | 
| 17 | 
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         | 
| 18 | 
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         | 
| 19 | 
            +
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         | 
| 20 | 
            +
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         | 
| 21 | 
            +
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         | 
| 22 | 
            +
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         | 
    
        data/README.md
    ADDED
    
    | @@ -0,0 +1,61 @@ | |
| 1 | 
            +
            # DotjsSprockets
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            [](https://codeclimate.com/github/roperzh/dotjs_sprockets)
         | 
| 4 | 
            +
            [](http://inch-ci.org/github/roperzh/dotjs_sprockets)
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            [doT.js](https://github.com/olado/doT) templates for any application using [sprockets](https://github.com/sstephenson/sprockets).
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            ## Installation
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            Add this line to your application's Gemfile:
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            ```ruby
         | 
| 13 | 
            +
             gem "dotjs-sprockets"
         | 
| 14 | 
            +
            ```
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            And then execute:
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            ```bash
         | 
| 19 | 
            +
            $ bundle
         | 
| 20 | 
            +
            ```
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            ## Usage
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            To get your template loaded and accessible client-side via the JST variable, you must follow:
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            - The template file must be under one of the Sprockets load paths ( usually `assets/javascripts` or `assets/templates` )
         | 
| 27 | 
            +
            - The template must have the following extension: `.jst.djs`
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            That's all!
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            ***Example***
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            ```
         | 
| 34 | 
            +
            app/
         | 
| 35 | 
            +
            └── assets/
         | 
| 36 | 
            +
                └── javascripts/
         | 
| 37 | 
            +
                    └── my_template.jst.djs
         | 
| 38 | 
            +
            ```
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            In this case the template will be accessible in the client via:
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            ```javascript
         | 
| 43 | 
            +
            // The compiler function
         | 
| 44 | 
            +
            JST["my_template"] //=> function() ...
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            //The compiled template
         | 
| 47 | 
            +
            JST["my_template"]() //=> <h2>Hello!</h2> ...
         | 
| 48 | 
            +
            ```
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            ## Roadmap
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            - Provide an easy way to change the `djs` extension
         | 
| 53 | 
            +
            - Check support and compatibility for nested templates
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            ## Contributing
         | 
| 56 | 
            +
             | 
| 57 | 
            +
            1. Fork it ( https://github.com/[my-github-username]/dotjs-sprockets/fork )
         | 
| 58 | 
            +
            2. Create your feature branch (`git checkout -b my-new-feature`)
         | 
| 59 | 
            +
            3. Commit your changes (`git commit -am 'Add some feature'`)
         | 
| 60 | 
            +
            4. Push to the branch (`git push origin my-new-feature`)
         | 
| 61 | 
            +
            5. Create a new Pull Request
         | 
    
        data/Rakefile
    ADDED
    
    
| @@ -0,0 +1,26 @@ | |
| 1 | 
            +
            # coding: utf-8
         | 
| 2 | 
            +
            lib = File.expand_path('../lib', __FILE__)
         | 
| 3 | 
            +
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 4 | 
            +
            require 'dotjs_sprockets/constants'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            Gem::Specification.new do |spec|
         | 
| 7 | 
            +
              spec.name          = "dotjs_sprockets"
         | 
| 8 | 
            +
              spec.version       = DotjsSprockets::VERSION
         | 
| 9 | 
            +
              spec.authors       = ["Roberto Dip"]
         | 
| 10 | 
            +
              spec.email         = ["dip.jesusr@gmail.com"]
         | 
| 11 | 
            +
              spec.summary       = %q{doT.js templates for sprockets.}
         | 
| 12 | 
            +
              spec.description   = %q{doT.js templates for sprockets powered by ExecJS.}
         | 
| 13 | 
            +
              spec.homepage      = "https://github.com/roperzh/dotjs_sprockets"
         | 
| 14 | 
            +
              spec.license       = "MIT"
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              spec.files         = `git ls-files -z`.split("\x0")
         | 
| 17 | 
            +
              spec.executables   = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
         | 
| 18 | 
            +
              spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
         | 
| 19 | 
            +
              spec.require_paths = ["lib"]
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              spec.add_development_dependency "bundler", "~> 1.6"
         | 
| 22 | 
            +
              spec.add_development_dependency "rake",    "~> 0"
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              spec.add_runtime_dependency "sprockets", "~> 2"
         | 
| 25 | 
            +
              spec.add_runtime_dependency "execjs",    "~> 2"
         | 
| 26 | 
            +
            end
         | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            # Configuration constants, all of these are accessible from outside
         | 
| 2 | 
            +
            #
         | 
| 3 | 
            +
            # @since 0.1.0
         | 
| 4 | 
            +
            module DotjsSprockets
         | 
| 5 | 
            +
              # Local gem assets
         | 
| 6 | 
            +
              #
         | 
| 7 | 
            +
              # Version 0.1.0 includes doT.js v1.0.1
         | 
| 8 | 
            +
              ASSETS_PATH = "../../../vendor/assets/javascripts/dotjs_sprockets"
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              # Extension for the templates, sprockets will find and precompile all files
         | 
| 11 | 
            +
              # with DotjsSprockets::EXTENSION
         | 
| 12 | 
            +
              #
         | 
| 13 | 
            +
              # This can be changed from the outside:
         | 
| 14 | 
            +
              #
         | 
| 15 | 
            +
              # DotjsSprockets::EXTENSION = ".dotjs"
         | 
| 16 | 
            +
              #
         | 
| 17 | 
            +
              # @since 0.1.0
         | 
| 18 | 
            +
              EXTENSION   = ".djs"
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              # Current version
         | 
| 21 | 
            +
              VERSION     = "0.1.0"
         | 
| 22 | 
            +
            end
         | 
| @@ -0,0 +1,58 @@ | |
| 1 | 
            +
            require "execjs"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module DotjsSprockets
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              # The engine class is in charge to handle the template compilation
         | 
| 6 | 
            +
              # via ExecJS, provides a clean interface to be used by the TiltDot class
         | 
| 7 | 
            +
              #
         | 
| 8 | 
            +
              # @since 0.1.0
         | 
| 9 | 
            +
              class Engine
         | 
| 10 | 
            +
                class << self
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  # Given a path to a template it returns the compiled version
         | 
| 13 | 
            +
                  #
         | 
| 14 | 
            +
                  # @param full_path [String] the template full path
         | 
| 15 | 
            +
                  #
         | 
| 16 | 
            +
                  # @return [String] JavaScript function that may be directly executed client-side
         | 
| 17 | 
            +
                  #
         | 
| 18 | 
            +
                  # @example Compiling a Template
         | 
| 19 | 
            +
                  #   DotjsSprockets::Engine.precompile("/my/template.jst.djs")
         | 
| 20 | 
            +
                  #   # => "function()...."
         | 
| 21 | 
            +
                  #
         | 
| 22 | 
            +
                  # @since 0.1.0
         | 
| 23 | 
            +
                  def precompile(full_path)
         | 
| 24 | 
            +
                    template = open(full_path).read.chomp
         | 
| 25 | 
            +
                    context.eval("doT.compile('#{template}').toString()")
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                private
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                  # Stores a ExecJS context instance
         | 
| 31 | 
            +
                  #
         | 
| 32 | 
            +
                  # @return [ExecJS::ExternalRuntime::Context]
         | 
| 33 | 
            +
                  #
         | 
| 34 | 
            +
                  # @since 0.1.0
         | 
| 35 | 
            +
                  def context
         | 
| 36 | 
            +
                    @context ||= ExecJS.compile(source)
         | 
| 37 | 
            +
                  end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                  # Stores the full path of the library source (doT.js)
         | 
| 40 | 
            +
                  #
         | 
| 41 | 
            +
                  # @return [String] full path of the doT.js library
         | 
| 42 | 
            +
                  #
         | 
| 43 | 
            +
                  # @since 0.1.0
         | 
| 44 | 
            +
                  def path
         | 
| 45 | 
            +
                    @path ||= File.expand_path(DotjsSprockets::ASSETS_PATH, __FILE__)
         | 
| 46 | 
            +
                  end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                  # Stores the contents of the library source (doT.js)
         | 
| 49 | 
            +
                  #
         | 
| 50 | 
            +
                  # @return [String] full content of the doT.js library
         | 
| 51 | 
            +
                  #
         | 
| 52 | 
            +
                  # @since 0.1.0
         | 
| 53 | 
            +
                  def source
         | 
| 54 | 
            +
                    @source ||= open("#{path}/doT.js").read
         | 
| 55 | 
            +
                  end
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
              end
         | 
| 58 | 
            +
            end
         | 
| @@ -0,0 +1,37 @@ | |
| 1 | 
            +
            require "tilt"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module DotjsSprockets
         | 
| 4 | 
            +
              # New tilt template declaration, from the tilt docs:
         | 
| 5 | 
            +
              # Base class for template implementations Subclasses must implement
         | 
| 6 | 
            +
              # the #prepare method and one of the #evaluate or #precompiled_template
         | 
| 7 | 
            +
              # methods.
         | 
| 8 | 
            +
              #
         | 
| 9 | 
            +
              # More info here: https://github.com/rtomayko/tilt/blob/master/lib/tilt/template.rb
         | 
| 10 | 
            +
              #
         | 
| 11 | 
            +
              # @since 0.1.0
         | 
| 12 | 
            +
              class TiltDot < Tilt::Template
         | 
| 13 | 
            +
                # Define the mime type of the template
         | 
| 14 | 
            +
                #
         | 
| 15 | 
            +
                # @since 0.1.0
         | 
| 16 | 
            +
                def self.default_mime_type
         | 
| 17 | 
            +
                  "application/javascript"
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                # Required method definition in order to implement the Tilt::Template
         | 
| 21 | 
            +
                # interface
         | 
| 22 | 
            +
                #
         | 
| 23 | 
            +
                # @since 0.1.0
         | 
| 24 | 
            +
                def prepare
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                # Execute the compiled template and return the result string
         | 
| 28 | 
            +
                #
         | 
| 29 | 
            +
                # @return [String] the compiled template
         | 
| 30 | 
            +
                #
         | 
| 31 | 
            +
                # @since 0.1.0
         | 
| 32 | 
            +
                def evaluate(scope, locals, &block)
         | 
| 33 | 
            +
                  template_name = scope.pathname
         | 
| 34 | 
            +
                  DotjsSprockets::Engine.precompile(template_name)
         | 
| 35 | 
            +
                end
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
            end
         | 
| @@ -0,0 +1,136 @@ | |
| 1 | 
            +
            // doT.js
         | 
| 2 | 
            +
            // 2011, Laura Doktorova, https://github.com/olado/doT
         | 
| 3 | 
            +
            // Licensed under the MIT license.
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            (function() {
         | 
| 6 | 
            +
              "use strict";
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              var doT = {
         | 
| 9 | 
            +
                version: '1.0.1',
         | 
| 10 | 
            +
                templateSettings: {
         | 
| 11 | 
            +
                  evaluate:    /\{\{([\s\S]+?(\}?)+)\}\}/g,
         | 
| 12 | 
            +
                  interpolate: /\{\{=([\s\S]+?)\}\}/g,
         | 
| 13 | 
            +
                  encode:      /\{\{!([\s\S]+?)\}\}/g,
         | 
| 14 | 
            +
                  use:         /\{\{#([\s\S]+?)\}\}/g,
         | 
| 15 | 
            +
                  useParams:   /(^|[^\w$])def(?:\.|\[[\'\"])([\w$\.]+)(?:[\'\"]\])?\s*\:\s*([\w$\.]+|\"[^\"]+\"|\'[^\']+\'|\{[^\}]+\})/g,
         | 
| 16 | 
            +
                  define:      /\{\{##\s*([\w\.$]+)\s*(\:|=)([\s\S]+?)#\}\}/g,
         | 
| 17 | 
            +
                  defineParams:/^\s*([\w$]+):([\s\S]+)/,
         | 
| 18 | 
            +
                  conditional: /\{\{\?(\?)?\s*([\s\S]*?)\s*\}\}/g,
         | 
| 19 | 
            +
                  iterate:     /\{\{~\s*(?:\}\}|([\s\S]+?)\s*\:\s*([\w$]+)\s*(?:\:\s*([\w$]+))?\s*\}\})/g,
         | 
| 20 | 
            +
                  varname:  'it',
         | 
| 21 | 
            +
                  strip:    true,
         | 
| 22 | 
            +
                  append:   true,
         | 
| 23 | 
            +
                  selfcontained: false
         | 
| 24 | 
            +
                },
         | 
| 25 | 
            +
                template: undefined, //fn, compile template
         | 
| 26 | 
            +
                compile:  undefined  //fn, for express
         | 
| 27 | 
            +
              }, global;
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              if (typeof module !== 'undefined' && module.exports) {
         | 
| 30 | 
            +
                module.exports = doT;
         | 
| 31 | 
            +
              } else if (typeof define === 'function' && define.amd) {
         | 
| 32 | 
            +
                define(function(){return doT;});
         | 
| 33 | 
            +
              } else {
         | 
| 34 | 
            +
                global = (function(){ return this || (0,eval)('this'); }());
         | 
| 35 | 
            +
                global.doT = doT;
         | 
| 36 | 
            +
              }
         | 
| 37 | 
            +
             | 
| 38 | 
            +
              function encodeHTMLSource() {
         | 
| 39 | 
            +
                var encodeHTMLRules = { "&": "&", "<": "<", ">": ">", '"': '"', "'": ''', "/": '/' },
         | 
| 40 | 
            +
                  matchHTML = /&(?!#?\w+;)|<|>|"|'|\//g;
         | 
| 41 | 
            +
                return function() {
         | 
| 42 | 
            +
                  return this ? this.replace(matchHTML, function(m) {return encodeHTMLRules[m] || m;}) : this;
         | 
| 43 | 
            +
                };
         | 
| 44 | 
            +
              }
         | 
| 45 | 
            +
              String.prototype.encodeHTML = encodeHTMLSource();
         | 
| 46 | 
            +
             | 
| 47 | 
            +
              var startend = {
         | 
| 48 | 
            +
                append: { start: "'+(",      end: ")+'",      endencode: "||'').toString().encodeHTML()+'" },
         | 
| 49 | 
            +
                split:  { start: "';out+=(", end: ");out+='", endencode: "||'').toString().encodeHTML();out+='"}
         | 
| 50 | 
            +
              }, skip = /$^/;
         | 
| 51 | 
            +
             | 
| 52 | 
            +
              function resolveDefs(c, block, def) {
         | 
| 53 | 
            +
                return ((typeof block === 'string') ? block : block.toString())
         | 
| 54 | 
            +
                .replace(c.define || skip, function(m, code, assign, value) {
         | 
| 55 | 
            +
                  if (code.indexOf('def.') === 0) {
         | 
| 56 | 
            +
                    code = code.substring(4);
         | 
| 57 | 
            +
                  }
         | 
| 58 | 
            +
                  if (!(code in def)) {
         | 
| 59 | 
            +
                    if (assign === ':') {
         | 
| 60 | 
            +
                      if (c.defineParams) value.replace(c.defineParams, function(m, param, v) {
         | 
| 61 | 
            +
                        def[code] = {arg: param, text: v};
         | 
| 62 | 
            +
                      });
         | 
| 63 | 
            +
                      if (!(code in def)) def[code]= value;
         | 
| 64 | 
            +
                    } else {
         | 
| 65 | 
            +
                      new Function("def", "def['"+code+"']=" + value)(def);
         | 
| 66 | 
            +
                    }
         | 
| 67 | 
            +
                  }
         | 
| 68 | 
            +
                  return '';
         | 
| 69 | 
            +
                })
         | 
| 70 | 
            +
                .replace(c.use || skip, function(m, code) {
         | 
| 71 | 
            +
                  if (c.useParams) code = code.replace(c.useParams, function(m, s, d, param) {
         | 
| 72 | 
            +
                    if (def[d] && def[d].arg && param) {
         | 
| 73 | 
            +
                      var rw = (d+":"+param).replace(/'|\\/g, '_');
         | 
| 74 | 
            +
                      def.__exp = def.__exp || {};
         | 
| 75 | 
            +
                      def.__exp[rw] = def[d].text.replace(new RegExp("(^|[^\\w$])" + def[d].arg + "([^\\w$])", "g"), "$1" + param + "$2");
         | 
| 76 | 
            +
                      return s + "def.__exp['"+rw+"']";
         | 
| 77 | 
            +
                    }
         | 
| 78 | 
            +
                  });
         | 
| 79 | 
            +
                  var v = new Function("def", "return " + code)(def);
         | 
| 80 | 
            +
                  return v ? resolveDefs(c, v, def) : v;
         | 
| 81 | 
            +
                });
         | 
| 82 | 
            +
              }
         | 
| 83 | 
            +
             | 
| 84 | 
            +
              function unescape(code) {
         | 
| 85 | 
            +
                return code.replace(/\\('|\\)/g, "$1").replace(/[\r\t\n]/g, ' ');
         | 
| 86 | 
            +
              }
         | 
| 87 | 
            +
             | 
| 88 | 
            +
              doT.template = function(tmpl, c, def) {
         | 
| 89 | 
            +
                c = c || doT.templateSettings;
         | 
| 90 | 
            +
                var cse = c.append ? startend.append : startend.split, needhtmlencode, sid = 0, indv,
         | 
| 91 | 
            +
                  str  = (c.use || c.define) ? resolveDefs(c, tmpl, def || {}) : tmpl;
         | 
| 92 | 
            +
             | 
| 93 | 
            +
                str = ("var out='" + (c.strip ? str.replace(/(^|\r|\n)\t* +| +\t*(\r|\n|$)/g,' ')
         | 
| 94 | 
            +
                      .replace(/\r|\n|\t|\/\*[\s\S]*?\*\//g,''): str)
         | 
| 95 | 
            +
                  .replace(/'|\\/g, '\\$&')
         | 
| 96 | 
            +
                  .replace(c.interpolate || skip, function(m, code) {
         | 
| 97 | 
            +
                    return cse.start + unescape(code) + cse.end;
         | 
| 98 | 
            +
                  })
         | 
| 99 | 
            +
                  .replace(c.encode || skip, function(m, code) {
         | 
| 100 | 
            +
                    needhtmlencode = true;
         | 
| 101 | 
            +
                    return cse.start + unescape(code) + cse.endencode;
         | 
| 102 | 
            +
                  })
         | 
| 103 | 
            +
                  .replace(c.conditional || skip, function(m, elsecase, code) {
         | 
| 104 | 
            +
                    return elsecase ?
         | 
| 105 | 
            +
                      (code ? "';}else if(" + unescape(code) + "){out+='" : "';}else{out+='") :
         | 
| 106 | 
            +
                      (code ? "';if(" + unescape(code) + "){out+='" : "';}out+='");
         | 
| 107 | 
            +
                  })
         | 
| 108 | 
            +
                  .replace(c.iterate || skip, function(m, iterate, vname, iname) {
         | 
| 109 | 
            +
                    if (!iterate) return "';} } out+='";
         | 
| 110 | 
            +
                    sid+=1; indv=iname || "i"+sid; iterate=unescape(iterate);
         | 
| 111 | 
            +
                    return "';var arr"+sid+"="+iterate+";if(arr"+sid+"){var "+vname+","+indv+"=-1,l"+sid+"=arr"+sid+".length-1;while("+indv+"<l"+sid+"){"
         | 
| 112 | 
            +
                      +vname+"=arr"+sid+"["+indv+"+=1];out+='";
         | 
| 113 | 
            +
                  })
         | 
| 114 | 
            +
                  .replace(c.evaluate || skip, function(m, code) {
         | 
| 115 | 
            +
                    return "';" + unescape(code) + "out+='";
         | 
| 116 | 
            +
                  })
         | 
| 117 | 
            +
                  + "';return out;")
         | 
| 118 | 
            +
                  .replace(/\n/g, '\\n').replace(/\t/g, '\\t').replace(/\r/g, '\\r')
         | 
| 119 | 
            +
                  .replace(/(\s|;|\}|^|\{)out\+='';/g, '$1').replace(/\+''/g, '')
         | 
| 120 | 
            +
                  .replace(/(\s|;|\}|^|\{)out\+=''\+/g,'$1out+=');
         | 
| 121 | 
            +
             | 
| 122 | 
            +
                if (needhtmlencode && c.selfcontained) {
         | 
| 123 | 
            +
                  str = "String.prototype.encodeHTML=(" + encodeHTMLSource.toString() + "());" + str;
         | 
| 124 | 
            +
                }
         | 
| 125 | 
            +
                try {
         | 
| 126 | 
            +
                  return new Function(c.varname, str);
         | 
| 127 | 
            +
                } catch (e) {
         | 
| 128 | 
            +
                  if (typeof console !== 'undefined') console.log("Could not create a template function: " + str);
         | 
| 129 | 
            +
                  throw e;
         | 
| 130 | 
            +
                }
         | 
| 131 | 
            +
              };
         | 
| 132 | 
            +
             | 
| 133 | 
            +
              doT.compile = function(tmpl, def) {
         | 
| 134 | 
            +
                return doT.template(tmpl, null, def);
         | 
| 135 | 
            +
              };
         | 
| 136 | 
            +
            }());
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            //= require dotjs_sprockets/doT
         | 
    
        metadata
    ADDED
    
    | @@ -0,0 +1,112 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 | 
            +
            name: dotjs_sprockets
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.1.0
         | 
| 5 | 
            +
            platform: ruby
         | 
| 6 | 
            +
            authors:
         | 
| 7 | 
            +
            - Roberto Dip
         | 
| 8 | 
            +
            autorequire: 
         | 
| 9 | 
            +
            bindir: bin
         | 
| 10 | 
            +
            cert_chain: []
         | 
| 11 | 
            +
            date: 2014-07-12 00:00:00.000000000 Z
         | 
| 12 | 
            +
            dependencies:
         | 
| 13 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            +
              name: bundler
         | 
| 15 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            +
                requirements:
         | 
| 17 | 
            +
                - - "~>"
         | 
| 18 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            +
                    version: '1.6'
         | 
| 20 | 
            +
              type: :development
         | 
| 21 | 
            +
              prerelease: false
         | 
| 22 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            +
                requirements:
         | 
| 24 | 
            +
                - - "~>"
         | 
| 25 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            +
                    version: '1.6'
         | 
| 27 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            +
              name: rake
         | 
| 29 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 | 
            +
                requirements:
         | 
| 31 | 
            +
                - - "~>"
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            +
                    version: '0'
         | 
| 34 | 
            +
              type: :development
         | 
| 35 | 
            +
              prerelease: false
         | 
| 36 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            +
                requirements:
         | 
| 38 | 
            +
                - - "~>"
         | 
| 39 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            +
                    version: '0'
         | 
| 41 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            +
              name: sprockets
         | 
| 43 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 | 
            +
                requirements:
         | 
| 45 | 
            +
                - - "~>"
         | 
| 46 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            +
                    version: '2'
         | 
| 48 | 
            +
              type: :runtime
         | 
| 49 | 
            +
              prerelease: false
         | 
| 50 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - "~>"
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: '2'
         | 
| 55 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            +
              name: execjs
         | 
| 57 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            +
                requirements:
         | 
| 59 | 
            +
                - - "~>"
         | 
| 60 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            +
                    version: '2'
         | 
| 62 | 
            +
              type: :runtime
         | 
| 63 | 
            +
              prerelease: false
         | 
| 64 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            +
                requirements:
         | 
| 66 | 
            +
                - - "~>"
         | 
| 67 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            +
                    version: '2'
         | 
| 69 | 
            +
            description: doT.js templates for sprockets powered by ExecJS.
         | 
| 70 | 
            +
            email:
         | 
| 71 | 
            +
            - dip.jesusr@gmail.com
         | 
| 72 | 
            +
            executables: []
         | 
| 73 | 
            +
            extensions: []
         | 
| 74 | 
            +
            extra_rdoc_files: []
         | 
| 75 | 
            +
            files:
         | 
| 76 | 
            +
            - ".gitignore"
         | 
| 77 | 
            +
            - Gemfile
         | 
| 78 | 
            +
            - LICENSE.txt
         | 
| 79 | 
            +
            - README.md
         | 
| 80 | 
            +
            - Rakefile
         | 
| 81 | 
            +
            - dotjs_sprockets.gemspec
         | 
| 82 | 
            +
            - lib/dotjs_sprockets.rb
         | 
| 83 | 
            +
            - lib/dotjs_sprockets/constants.rb
         | 
| 84 | 
            +
            - lib/dotjs_sprockets/engine.rb
         | 
| 85 | 
            +
            - lib/dotjs_sprockets/tilt_dot.rb
         | 
| 86 | 
            +
            - vendor/assets/javascripts/dotjs_sprockets/doT.js
         | 
| 87 | 
            +
            - vendor/assets/javascripts/dotjs_sprockets/index.js
         | 
| 88 | 
            +
            homepage: https://github.com/roperzh/dotjs_sprockets
         | 
| 89 | 
            +
            licenses:
         | 
| 90 | 
            +
            - MIT
         | 
| 91 | 
            +
            metadata: {}
         | 
| 92 | 
            +
            post_install_message: 
         | 
| 93 | 
            +
            rdoc_options: []
         | 
| 94 | 
            +
            require_paths:
         | 
| 95 | 
            +
            - lib
         | 
| 96 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 97 | 
            +
              requirements:
         | 
| 98 | 
            +
              - - ">="
         | 
| 99 | 
            +
                - !ruby/object:Gem::Version
         | 
| 100 | 
            +
                  version: '0'
         | 
| 101 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 102 | 
            +
              requirements:
         | 
| 103 | 
            +
              - - ">="
         | 
| 104 | 
            +
                - !ruby/object:Gem::Version
         | 
| 105 | 
            +
                  version: '0'
         | 
| 106 | 
            +
            requirements: []
         | 
| 107 | 
            +
            rubyforge_project: 
         | 
| 108 | 
            +
            rubygems_version: 2.2.2
         | 
| 109 | 
            +
            signing_key: 
         | 
| 110 | 
            +
            specification_version: 4
         | 
| 111 | 
            +
            summary: doT.js templates for sprockets.
         | 
| 112 | 
            +
            test_files: []
         |