handlebars 0.4.0 → 0.5.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.
Files changed (43) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +1 -2
  3. data/README.mdown +15 -7
  4. data/handlebars.gemspec +2 -5
  5. data/lib/handlebars.rb +5 -5
  6. data/lib/handlebars/context.rb +3 -12
  7. data/lib/handlebars/version.rb +1 -1
  8. data/spec/handlebars_spec.rb +1 -1
  9. metadata +47 -58
  10. data/.gitmodules +0 -3
  11. data/vendor/handlebars/.gitignore +0 -8
  12. data/vendor/handlebars/.jshintrc +0 -52
  13. data/vendor/handlebars/.npmignore +0 -10
  14. data/vendor/handlebars/.rspec +0 -1
  15. data/vendor/handlebars/Gemfile +0 -5
  16. data/vendor/handlebars/LICENSE +0 -19
  17. data/vendor/handlebars/README.markdown +0 -317
  18. data/vendor/handlebars/Rakefile +0 -109
  19. data/vendor/handlebars/bench/benchwarmer.js +0 -149
  20. data/vendor/handlebars/bench/handlebars.js +0 -172
  21. data/vendor/handlebars/bin/handlebars +0 -193
  22. data/vendor/handlebars/dist/handlebars.js +0 -2201
  23. data/vendor/handlebars/dist/handlebars.runtime.js +0 -321
  24. data/vendor/handlebars/lib/handlebars.js +0 -14
  25. data/vendor/handlebars/lib/handlebars/base.js +0 -154
  26. data/vendor/handlebars/lib/handlebars/compiler/ast.js +0 -133
  27. data/vendor/handlebars/lib/handlebars/compiler/base.js +0 -21
  28. data/vendor/handlebars/lib/handlebars/compiler/compiler.js +0 -1267
  29. data/vendor/handlebars/lib/handlebars/compiler/index.js +0 -7
  30. data/vendor/handlebars/lib/handlebars/compiler/printer.js +0 -131
  31. data/vendor/handlebars/lib/handlebars/compiler/visitor.js +0 -13
  32. data/vendor/handlebars/lib/handlebars/runtime.js +0 -88
  33. data/vendor/handlebars/lib/handlebars/utils.js +0 -67
  34. data/vendor/handlebars/package.json +0 -35
  35. data/vendor/handlebars/spec/acceptance_spec.rb +0 -101
  36. data/vendor/handlebars/spec/parser_spec.rb +0 -433
  37. data/vendor/handlebars/spec/qunit_spec.js +0 -1370
  38. data/vendor/handlebars/spec/spec_helper.rb +0 -157
  39. data/vendor/handlebars/spec/tokenizer_spec.rb +0 -301
  40. data/vendor/handlebars/src/handlebars.l +0 -53
  41. data/vendor/handlebars/src/handlebars.yy +0 -109
  42. data/vendor/handlebars/src/parser-prefix.js +0 -1
  43. data/vendor/handlebars/src/parser-suffix.js +0 -4
@@ -1,7 +0,0 @@
1
- // Each of these module will augment the Handlebars object as it loads. No need to perform addition operations
2
- module.exports = require("./base");
3
- require("./visitor");
4
- require("./printer");
5
-
6
- require("./ast");
7
- require("./compiler");
@@ -1,131 +0,0 @@
1
- var Handlebars = require("./base");
2
-
3
- // BEGIN(BROWSER)
4
- Handlebars.PrintVisitor = function() { this.padding = 0; };
5
- Handlebars.PrintVisitor.prototype = new Handlebars.Visitor();
6
-
7
- Handlebars.PrintVisitor.prototype.pad = function(string, newline) {
8
- var out = "";
9
-
10
- for(var i=0,l=this.padding; i<l; i++) {
11
- out = out + " ";
12
- }
13
-
14
- out = out + string;
15
-
16
- if(newline !== false) { out = out + "\n"; }
17
- return out;
18
- };
19
-
20
- Handlebars.PrintVisitor.prototype.program = function(program) {
21
- var out = "",
22
- statements = program.statements,
23
- inverse = program.inverse,
24
- i, l;
25
-
26
- for(i=0, l=statements.length; i<l; i++) {
27
- out = out + this.accept(statements[i]);
28
- }
29
-
30
- this.padding--;
31
-
32
- return out;
33
- };
34
-
35
- Handlebars.PrintVisitor.prototype.block = function(block) {
36
- var out = "";
37
-
38
- out = out + this.pad("BLOCK:");
39
- this.padding++;
40
- out = out + this.accept(block.mustache);
41
- if (block.program) {
42
- out = out + this.pad("PROGRAM:");
43
- this.padding++;
44
- out = out + this.accept(block.program);
45
- this.padding--;
46
- }
47
- if (block.inverse) {
48
- if (block.program) { this.padding++; }
49
- out = out + this.pad("{{^}}");
50
- this.padding++;
51
- out = out + this.accept(block.inverse);
52
- this.padding--;
53
- if (block.program) { this.padding--; }
54
- }
55
- this.padding--;
56
-
57
- return out;
58
- };
59
-
60
- Handlebars.PrintVisitor.prototype.mustache = function(mustache) {
61
- var params = mustache.params, paramStrings = [], hash;
62
-
63
- for(var i=0, l=params.length; i<l; i++) {
64
- paramStrings.push(this.accept(params[i]));
65
- }
66
-
67
- params = "[" + paramStrings.join(", ") + "]";
68
-
69
- hash = mustache.hash ? " " + this.accept(mustache.hash) : "";
70
-
71
- return this.pad("{{ " + this.accept(mustache.id) + " " + params + hash + " }}");
72
- };
73
-
74
- Handlebars.PrintVisitor.prototype.partial = function(partial) {
75
- var content = this.accept(partial.partialName);
76
- if(partial.context) { content = content + " " + this.accept(partial.context); }
77
- return this.pad("{{> " + content + " }}");
78
- };
79
-
80
- Handlebars.PrintVisitor.prototype.hash = function(hash) {
81
- var pairs = hash.pairs;
82
- var joinedPairs = [], left, right;
83
-
84
- for(var i=0, l=pairs.length; i<l; i++) {
85
- left = pairs[i][0];
86
- right = this.accept(pairs[i][1]);
87
- joinedPairs.push( left + "=" + right );
88
- }
89
-
90
- return "HASH{" + joinedPairs.join(", ") + "}";
91
- };
92
-
93
- Handlebars.PrintVisitor.prototype.STRING = function(string) {
94
- return '"' + string.string + '"';
95
- };
96
-
97
- Handlebars.PrintVisitor.prototype.INTEGER = function(integer) {
98
- return "INTEGER{" + integer.integer + "}";
99
- };
100
-
101
- Handlebars.PrintVisitor.prototype.BOOLEAN = function(bool) {
102
- return "BOOLEAN{" + bool.bool + "}";
103
- };
104
-
105
- Handlebars.PrintVisitor.prototype.ID = function(id) {
106
- var path = id.parts.join("/");
107
- if(id.parts.length > 1) {
108
- return "PATH:" + path;
109
- } else {
110
- return "ID:" + path;
111
- }
112
- };
113
-
114
- Handlebars.PrintVisitor.prototype.PARTIAL_NAME = function(partialName) {
115
- return "PARTIAL:" + partialName.name;
116
- };
117
-
118
- Handlebars.PrintVisitor.prototype.DATA = function(data) {
119
- return "@" + data.id;
120
- };
121
-
122
- Handlebars.PrintVisitor.prototype.content = function(content) {
123
- return this.pad("CONTENT[ '" + content.string + "' ]");
124
- };
125
-
126
- Handlebars.PrintVisitor.prototype.comment = function(comment) {
127
- return this.pad("{{! '" + comment.comment + "' }}");
128
- };
129
- // END(BROWSER)
130
-
131
- exports.PrintVisitor = Handlebars.PrintVisitor;
@@ -1,13 +0,0 @@
1
- var Handlebars = require("./base");
2
-
3
- // BEGIN(BROWSER)
4
-
5
- Handlebars.Visitor = function() {};
6
-
7
- Handlebars.Visitor.prototype = {
8
- accept: function(object) {
9
- return this[object.type](object);
10
- }
11
- };
12
- // END(BROWSER)
13
-
@@ -1,88 +0,0 @@
1
- var Handlebars = require("./base");
2
-
3
- // BEGIN(BROWSER)
4
- Handlebars.VM = {
5
- template: function(templateSpec) {
6
- // Just add water
7
- var container = {
8
- escapeExpression: Handlebars.Utils.escapeExpression,
9
- invokePartial: Handlebars.VM.invokePartial,
10
- programs: [],
11
- program: function(i, fn, data) {
12
- var programWrapper = this.programs[i];
13
- if(data) {
14
- return Handlebars.VM.program(fn, data);
15
- } else if(programWrapper) {
16
- return programWrapper;
17
- } else {
18
- programWrapper = this.programs[i] = Handlebars.VM.program(fn);
19
- return programWrapper;
20
- }
21
- },
22
- programWithDepth: Handlebars.VM.programWithDepth,
23
- noop: Handlebars.VM.noop,
24
- compilerInfo: null
25
- };
26
-
27
- return function(context, options) {
28
- options = options || {};
29
- var result = templateSpec.call(container, Handlebars, context, options.helpers, options.partials, options.data);
30
-
31
- var compilerInfo = container.compilerInfo || [],
32
- compilerRevision = compilerInfo[0] || 1,
33
- currentRevision = Handlebars.COMPILER_REVISION;
34
-
35
- if (compilerRevision !== currentRevision) {
36
- if (compilerRevision < currentRevision) {
37
- var runtimeVersions = Handlebars.REVISION_CHANGES[currentRevision],
38
- compilerVersions = Handlebars.REVISION_CHANGES[compilerRevision];
39
- throw "Template was precompiled with an older version of Handlebars than the current runtime. "+
40
- "Please update your precompiler to a newer version ("+runtimeVersions+") or downgrade your runtime to an older version ("+compilerVersions+").";
41
- } else {
42
- // Use the embedded version info since the runtime doesn't know about this revision yet
43
- throw "Template was precompiled with a newer version of Handlebars than the current runtime. "+
44
- "Please update your runtime to a newer version ("+compilerInfo[1]+").";
45
- }
46
- }
47
-
48
- return result;
49
- };
50
- },
51
-
52
- programWithDepth: function(fn, data, $depth) {
53
- var args = Array.prototype.slice.call(arguments, 2);
54
-
55
- return function(context, options) {
56
- options = options || {};
57
-
58
- return fn.apply(this, [context, options.data || data].concat(args));
59
- };
60
- },
61
- program: function(fn, data) {
62
- return function(context, options) {
63
- options = options || {};
64
-
65
- return fn(context, options.data || data);
66
- };
67
- },
68
- noop: function() { return ""; },
69
- invokePartial: function(partial, name, context, helpers, partials, data) {
70
- var options = { helpers: helpers, partials: partials, data: data };
71
-
72
- if(partial === undefined) {
73
- throw new Handlebars.Exception("The partial " + name + " could not be found");
74
- } else if(partial instanceof Function) {
75
- return partial(context, options);
76
- } else if (!Handlebars.compile) {
77
- throw new Handlebars.Exception("The partial " + name + " could not be compiled when running in runtime-only mode");
78
- } else {
79
- partials[name] = Handlebars.compile(partial, {data: data !== undefined});
80
- return partials[name](context, options);
81
- }
82
- }
83
- };
84
-
85
- Handlebars.template = Handlebars.VM.template;
86
-
87
- // END(BROWSER)
88
-
@@ -1,67 +0,0 @@
1
- var Handlebars = require("./base");
2
-
3
- // BEGIN(BROWSER)
4
-
5
- var errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack'];
6
-
7
- Handlebars.Exception = function(message) {
8
- var tmp = Error.prototype.constructor.apply(this, arguments);
9
-
10
- // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.
11
- for (var idx = 0; idx < errorProps.length; idx++) {
12
- this[errorProps[idx]] = tmp[errorProps[idx]];
13
- }
14
- };
15
- Handlebars.Exception.prototype = new Error();
16
-
17
- // Build out our basic SafeString type
18
- Handlebars.SafeString = function(string) {
19
- this.string = string;
20
- };
21
- Handlebars.SafeString.prototype.toString = function() {
22
- return this.string.toString();
23
- };
24
-
25
- (function() {
26
- var escape = {
27
- "&": "&amp;",
28
- "<": "&lt;",
29
- ">": "&gt;",
30
- '"': "&quot;",
31
- "'": "&#x27;",
32
- "`": "&#x60;"
33
- };
34
-
35
- var badChars = /[&<>"'`]/g;
36
- var possible = /[&<>"'`]/;
37
-
38
- var escapeChar = function(chr) {
39
- return escape[chr] || "&amp;";
40
- };
41
-
42
- Handlebars.Utils = {
43
- escapeExpression: function(string) {
44
- // don't escape SafeStrings, since they're already safe
45
- if (string instanceof Handlebars.SafeString) {
46
- return string.toString();
47
- } else if (string == null || string === false) {
48
- return "";
49
- }
50
-
51
- if(!possible.test(string)) { return string; }
52
- return string.replace(badChars, escapeChar);
53
- },
54
-
55
- isEmpty: function(value) {
56
- if (!value && value !== 0) {
57
- return true;
58
- } else if(Object.prototype.toString.call(value) === "[object Array]" && value.length === 0) {
59
- return true;
60
- } else {
61
- return false;
62
- }
63
- }
64
- };
65
- })();
66
- // END(BROWSER)
67
-
@@ -1,35 +0,0 @@
1
- {
2
- "name": "handlebars",
3
- "description": "Extension of the Mustache logicless template language",
4
- "version": "1.0.8",
5
- "homepage": "http://www.handlebarsjs.com/",
6
- "keywords": [
7
- "handlebars mustache template html"
8
- ],
9
- "repository": {
10
- "type": "git",
11
- "url": "git://github.com/wycats/handlebars.js.git"
12
- },
13
- "engines": {
14
- "node": ">=0.4.7"
15
- },
16
- "dependencies": {
17
- "optimist": "~0.3",
18
- "uglify-js": "~1.2"
19
- },
20
- "devDependencies": {
21
- "benchmark": "~1.0",
22
- "dust": "~0.3",
23
- "jison": "~0.3",
24
- "mocha": "*",
25
- "mustache": "~0.7.2"
26
- },
27
- "main": "lib/handlebars.js",
28
- "bin": {
29
- "handlebars": "bin/handlebars"
30
- },
31
- "scripts": {
32
- "test": "node_modules/.bin/mocha -u qunit spec/qunit_spec.js"
33
- },
34
- "optionalDependencies": {}
35
- }
@@ -1,101 +0,0 @@
1
- require "spec_helper"
2
-
3
- class TestContext
4
- class TestModule
5
- attr_reader :name, :tests
6
-
7
- def initialize(name)
8
- @name = name
9
- @tests = []
10
- end
11
- end
12
-
13
- attr_reader :modules
14
-
15
- def initialize
16
- @modules = []
17
- end
18
-
19
- def module(name)
20
- @modules << TestModule.new(name)
21
- end
22
-
23
- def test(name, function)
24
- @modules.last.tests << [name, function]
25
- end
26
- end
27
-
28
- test_context = TestContext.new
29
- js_context = Handlebars::Spec::CONTEXT
30
-
31
- Module.new do
32
- extend Test::Unit::Assertions
33
-
34
- def self.js_backtrace(context)
35
- begin
36
- context.eval("throw")
37
- rescue V8::JSError => e
38
- return e.backtrace(:javascript)
39
- end
40
- end
41
-
42
- js_context["p"] = proc do |this, str|
43
- p str
44
- end
45
-
46
- js_context["ok"] = proc do |this, ok, message|
47
- js_context["$$RSPEC1$$"] = ok
48
-
49
- result = js_context.eval("!!$$RSPEC1$$")
50
-
51
- message ||= "#{ok} was not truthy"
52
-
53
- unless result
54
- backtrace = js_backtrace(js_context)
55
- message << "\n#{backtrace.join("\n")}"
56
- end
57
-
58
- assert result, message
59
- end
60
-
61
- js_context["equals"] = proc do |this, first, second, message|
62
- js_context["$$RSPEC1$$"] = first
63
- js_context["$$RSPEC2$$"] = second
64
-
65
- result = js_context.eval("$$RSPEC1$$ == $$RSPEC2$$")
66
-
67
- additional_message = "#{first.inspect} did not == #{second.inspect}"
68
- message = message ? "#{message} (#{additional_message})" : additional_message
69
-
70
- unless result
71
- backtrace = js_backtrace(js_context)
72
- message << "\n#{backtrace.join("\n")}"
73
- end
74
-
75
- assert result, message
76
- end
77
-
78
- js_context["equal"] = js_context["equals"]
79
-
80
- js_context["suite"] = proc do |this, name|
81
- test_context.module(name)
82
- end
83
-
84
- js_context["test"] = proc do |this, name, function|
85
- test_context.test(name, function)
86
- end
87
-
88
- local = Regexp.escape(File.expand_path(Dir.pwd))
89
- qunit_spec = File.expand_path("../qunit_spec.js", __FILE__)
90
- js_context.load(qunit_spec.sub(/^#{local}\//, ''))
91
- end
92
-
93
- test_context.modules.each do |mod|
94
- describe mod.name do
95
- mod.tests.each do |name, function|
96
- it name do
97
- function.call
98
- end
99
- end
100
- end
101
- end