sass-twitter-bootstrap 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +14 -0
- data/LICENSE +176 -0
- data/Makefile +94 -0
- data/README.md +217 -0
- data/Rakefile +52 -0
- data/bootstrap-2.0.4.css +4661 -0
- data/bootstrap-2.0.4.min.css +9 -0
- data/bootstrap-responsive-2.0.4.css +932 -0
- data/bootstrap-responsive-2.0.4.min.css +9 -0
- data/docs/assets/css/bootstrap-responsive.css +932 -0
- data/docs/assets/css/bootstrap.css +4661 -0
- data/docs/assets/css/docs.css +846 -0
- data/docs/assets/ico/apple-touch-icon-114-precomposed.png +0 -0
- data/docs/assets/ico/apple-touch-icon-144-precomposed.png +0 -0
- data/docs/assets/ico/apple-touch-icon-57-precomposed.png +0 -0
- data/docs/assets/ico/apple-touch-icon-72-precomposed.png +0 -0
- data/docs/assets/ico/favicon.ico +0 -0
- data/docs/assets/img/bird.png +0 -0
- data/docs/assets/img/bootstrap-mdo-sfmoma-01.jpg +0 -0
- data/docs/assets/img/bootstrap-mdo-sfmoma-02.jpg +0 -0
- data/docs/assets/img/bootstrap-mdo-sfmoma-03.jpg +0 -0
- data/docs/assets/img/browsers.png +0 -0
- data/docs/assets/img/example-sites/fleetio.png +0 -0
- data/docs/assets/img/example-sites/jshint.png +0 -0
- data/docs/assets/img/example-sites/kippt.png +0 -0
- data/docs/assets/img/example-sites/soundready.png +0 -0
- data/docs/assets/img/examples/bootstrap-example-fluid.jpg +0 -0
- data/docs/assets/img/examples/bootstrap-example-hero.jpg +0 -0
- data/docs/assets/img/examples/bootstrap-example-starter.jpg +0 -0
- data/docs/assets/img/github-16px.png +0 -0
- data/docs/assets/img/glyphicons-halflings-white.png +0 -0
- data/docs/assets/img/glyphicons-halflings.png +0 -0
- data/docs/assets/img/glyphicons/glyphicons_009_magic.png +0 -0
- data/docs/assets/img/glyphicons/glyphicons_042_group.png +0 -0
- data/docs/assets/img/glyphicons/glyphicons_079_podium.png +0 -0
- data/docs/assets/img/glyphicons/glyphicons_082_roundabout.png +0 -0
- data/docs/assets/img/glyphicons/glyphicons_155_show_thumbnails.png +0 -0
- data/docs/assets/img/glyphicons/glyphicons_163_iphone.png +0 -0
- data/docs/assets/img/glyphicons/glyphicons_214_resize_small.png +0 -0
- data/docs/assets/img/glyphicons/glyphicons_266_book_open.png +0 -0
- data/docs/assets/img/grid-18px-masked.png +0 -0
- data/docs/assets/img/icon-css3.png +0 -0
- data/docs/assets/img/icon-github.png +0 -0
- data/docs/assets/img/icon-html5.png +0 -0
- data/docs/assets/img/icon-twitter.png +0 -0
- data/docs/assets/img/less-logo-large.png +0 -0
- data/docs/assets/img/less-small.png +0 -0
- data/docs/assets/img/responsive-illustrations.png +0 -0
- data/docs/assets/js/README.md +106 -0
- data/docs/assets/js/application.js +184 -0
- data/docs/assets/js/bootstrap-alert.js +90 -0
- data/docs/assets/js/bootstrap-button.js +96 -0
- data/docs/assets/js/bootstrap-carousel.js +169 -0
- data/docs/assets/js/bootstrap-collapse.js +157 -0
- data/docs/assets/js/bootstrap-dropdown.js +100 -0
- data/docs/assets/js/bootstrap-modal.js +218 -0
- data/docs/assets/js/bootstrap-popover.js +98 -0
- data/docs/assets/js/bootstrap-scrollspy.js +151 -0
- data/docs/assets/js/bootstrap-tab.js +135 -0
- data/docs/assets/js/bootstrap-tooltip.js +275 -0
- data/docs/assets/js/bootstrap-transition.js +61 -0
- data/docs/assets/js/bootstrap-typeahead.js +285 -0
- data/docs/assets/js/bootstrap.js +1825 -0
- data/docs/assets/js/bootstrap.min.js +6 -0
- data/docs/assets/js/google-code-prettify/prettify.css +30 -0
- data/docs/assets/js/google-code-prettify/prettify.js +28 -0
- data/docs/assets/js/jquery.js +9252 -0
- data/docs/base-css.html +1710 -0
- data/docs/build/index.js +44 -0
- data/docs/build/node_modules/.bin/hulk +93 -0
- data/docs/build/node_modules/hogan.js/.git_ignore +1 -0
- data/docs/build/node_modules/hogan.js/.gitmodules +3 -0
- data/docs/build/node_modules/hogan.js/LICENSE +177 -0
- data/docs/build/node_modules/hogan.js/Makefile +62 -0
- data/docs/build/node_modules/hogan.js/README.md +93 -0
- data/docs/build/node_modules/hogan.js/bin/hulk +93 -0
- data/docs/build/node_modules/hogan.js/lib/compiler.js +348 -0
- data/docs/build/node_modules/hogan.js/lib/hogan.js +20 -0
- data/docs/build/node_modules/hogan.js/lib/template.js +233 -0
- data/docs/build/node_modules/hogan.js/package.json +20 -0
- data/docs/build/node_modules/hogan.js/test/html/list.html +8 -0
- data/docs/build/node_modules/hogan.js/test/index.html +13 -0
- data/docs/build/node_modules/hogan.js/test/index.js +848 -0
- data/docs/build/node_modules/hogan.js/test/mustache.js +90 -0
- data/docs/build/node_modules/hogan.js/test/spec.js +77 -0
- data/docs/build/node_modules/hogan.js/test/spec/Changes +31 -0
- data/docs/build/node_modules/hogan.js/test/spec/README.md +65 -0
- data/docs/build/node_modules/hogan.js/test/spec/Rakefile +27 -0
- data/docs/build/node_modules/hogan.js/test/spec/TESTING.md +46 -0
- data/docs/build/node_modules/hogan.js/test/spec/specs/comments.json +1 -0
- data/docs/build/node_modules/hogan.js/test/spec/specs/comments.yml +103 -0
- data/docs/build/node_modules/hogan.js/test/spec/specs/delimiters.json +1 -0
- data/docs/build/node_modules/hogan.js/test/spec/specs/delimiters.yml +158 -0
- data/docs/build/node_modules/hogan.js/test/spec/specs/interpolation.json +1 -0
- data/docs/build/node_modules/hogan.js/test/spec/specs/interpolation.yml +230 -0
- data/docs/build/node_modules/hogan.js/test/spec/specs/inverted.json +1 -0
- data/docs/build/node_modules/hogan.js/test/spec/specs/inverted.yml +193 -0
- data/docs/build/node_modules/hogan.js/test/spec/specs/partials.json +1 -0
- data/docs/build/node_modules/hogan.js/test/spec/specs/partials.yml +109 -0
- data/docs/build/node_modules/hogan.js/test/spec/specs/sections.json +1 -0
- data/docs/build/node_modules/hogan.js/test/spec/specs/sections.yml +256 -0
- data/docs/build/node_modules/hogan.js/test/spec/specs/~lambdas.json +1 -0
- data/docs/build/node_modules/hogan.js/test/spec/specs/~lambdas.yml +149 -0
- data/docs/build/node_modules/hogan.js/test/templates/list.mustache +8 -0
- data/docs/build/node_modules/hogan.js/tools/release.js +74 -0
- data/docs/build/node_modules/hogan.js/tools/web_templates.js +32 -0
- data/docs/build/node_modules/hogan.js/web/1.0.0/hogan.js +500 -0
- data/docs/build/node_modules/hogan.js/web/1.0.0/hogan.min.js +14 -0
- data/docs/build/node_modules/hogan.js/web/builds/1.0.0/hogan.js +500 -0
- data/docs/build/node_modules/hogan.js/web/builds/1.0.0/hogan.min.js +14 -0
- data/docs/build/node_modules/hogan.js/web/builds/1.0.3/hogan.js +545 -0
- data/docs/build/node_modules/hogan.js/web/builds/1.0.3/hogan.min.js +5 -0
- data/docs/build/node_modules/hogan.js/web/builds/1.0.5/hogan-1.0.5.amd.js +576 -0
- data/docs/build/node_modules/hogan.js/web/builds/1.0.5/hogan-1.0.5.common.js +576 -0
- data/docs/build/node_modules/hogan.js/web/builds/1.0.5/hogan-1.0.5.js +572 -0
- data/docs/build/node_modules/hogan.js/web/builds/1.0.5/hogan-1.0.5.min.amd.js +5 -0
- data/docs/build/node_modules/hogan.js/web/builds/1.0.5/hogan-1.0.5.min.common.js +5 -0
- data/docs/build/node_modules/hogan.js/web/builds/1.0.5/hogan-1.0.5.min.js +5 -0
- data/docs/build/node_modules/hogan.js/web/builds/1.0.5/hogan-1.0.5.min.mustache.js +5 -0
- data/docs/build/node_modules/hogan.js/web/builds/1.0.5/hogan-1.0.5.mustache.js +619 -0
- data/docs/build/node_modules/hogan.js/web/builds/1.0.5/template-1.0.5.js +233 -0
- data/docs/build/node_modules/hogan.js/web/builds/1.0.5/template-1.0.5.min.js +5 -0
- data/docs/build/node_modules/hogan.js/web/favicon.ico +0 -0
- data/docs/build/node_modules/hogan.js/web/images/logo.png +0 -0
- data/docs/build/node_modules/hogan.js/web/images/noise.png +0 -0
- data/docs/build/node_modules/hogan.js/web/images/small-hogan-icon.png +0 -0
- data/docs/build/node_modules/hogan.js/web/images/stripes.png +0 -0
- data/docs/build/node_modules/hogan.js/web/index.html.mustache +139 -0
- data/docs/build/node_modules/hogan.js/web/stylesheets/layout.css +206 -0
- data/docs/build/node_modules/hogan.js/web/stylesheets/skeleton.css +236 -0
- data/docs/build/node_modules/hogan.js/wrappers/amd.js.mustache +21 -0
- data/docs/build/node_modules/hogan.js/wrappers/common.js.mustache +21 -0
- data/docs/build/node_modules/hogan.js/wrappers/js.mustache +17 -0
- data/docs/build/node_modules/hogan.js/wrappers/mustache.js.mustache +64 -0
- data/docs/build/package.json +6 -0
- data/docs/components.html +1931 -0
- data/docs/download.html +454 -0
- data/docs/examples.html +147 -0
- data/docs/examples/fluid.html +162 -0
- data/docs/examples/hero.html +109 -0
- data/docs/examples/starter-template.html +79 -0
- data/docs/index.html +259 -0
- data/docs/javascript.html +1520 -0
- data/docs/less.html +1060 -0
- data/docs/scaffolding.html +671 -0
- data/docs/templates/layout.mustache +146 -0
- data/docs/templates/pages/base-css.mustache +1594 -0
- data/docs/templates/pages/components.mustache +1815 -0
- data/docs/templates/pages/download.mustache +338 -0
- data/docs/templates/pages/examples.mustache +31 -0
- data/docs/templates/pages/index.mustache +144 -0
- data/docs/templates/pages/javascript.mustache +1405 -0
- data/docs/templates/pages/less.mustache +944 -0
- data/docs/templates/pages/scaffolding.mustache +555 -0
- data/docs/templates/pages/upgrading.mustache +194 -0
- data/docs/upgrading.html +310 -0
- data/js/tests/index.html +54 -0
- data/js/tests/phantom.js +63 -0
- data/js/tests/server.js +14 -0
- data/js/tests/unit/bootstrap-alert.js +56 -0
- data/js/tests/unit/bootstrap-button.js +77 -0
- data/js/tests/unit/bootstrap-carousel.js +28 -0
- data/js/tests/unit/bootstrap-collapse.js +54 -0
- data/js/tests/unit/bootstrap-dropdown.js +87 -0
- data/js/tests/unit/bootstrap-modal.js +114 -0
- data/js/tests/unit/bootstrap-phantom.js +21 -0
- data/js/tests/unit/bootstrap-popover.js +93 -0
- data/js/tests/unit/bootstrap-scrollspy.js +31 -0
- data/js/tests/unit/bootstrap-tab.js +61 -0
- data/js/tests/unit/bootstrap-tooltip.js +155 -0
- data/js/tests/unit/bootstrap-transition.js +13 -0
- data/js/tests/unit/bootstrap-typeahead.js +148 -0
- data/js/tests/vendor/jquery.js +9252 -0
- data/js/tests/vendor/qunit.css +232 -0
- data/js/tests/vendor/qunit.js +1510 -0
- data/lib/sass-twitter-bootstrap.rb +9 -0
- data/lib/sass/twitter/bootstrap/rails.rb +14 -0
- data/lib/sass/twitter/bootstrap/version.rb +7 -0
- data/package.json +25 -0
- data/sass-twitter-bootstrap.gemspec +19 -0
- data/vendor/assets/images/glyphicons-halflings-white.png +0 -0
- data/vendor/assets/images/glyphicons-halflings.png +0 -0
- data/vendor/assets/javascripts/README.md +112 -0
- data/vendor/assets/javascripts/twitter/bootstrap-alert.js +90 -0
- data/vendor/assets/javascripts/twitter/bootstrap-button.js +96 -0
- data/vendor/assets/javascripts/twitter/bootstrap-carousel.js +169 -0
- data/vendor/assets/javascripts/twitter/bootstrap-collapse.js +157 -0
- data/vendor/assets/javascripts/twitter/bootstrap-dropdown.js +100 -0
- data/vendor/assets/javascripts/twitter/bootstrap-modal.js +218 -0
- data/vendor/assets/javascripts/twitter/bootstrap-popover.js +98 -0
- data/vendor/assets/javascripts/twitter/bootstrap-scrollspy.js +151 -0
- data/vendor/assets/javascripts/twitter/bootstrap-tab.js +135 -0
- data/vendor/assets/javascripts/twitter/bootstrap-tooltip.js +275 -0
- data/vendor/assets/javascripts/twitter/bootstrap-transition.js +61 -0
- data/vendor/assets/javascripts/twitter/bootstrap-typeahead.js +285 -0
- data/vendor/assets/javascripts/twitter/bootstrap.js +12 -0
- data/vendor/assets/stylesheets/tests/css-tests.css +52 -0
- data/vendor/assets/stylesheets/tests/css-tests.html +917 -0
- data/vendor/assets/stylesheets/tests/forms.html +179 -0
- data/vendor/assets/stylesheets/tests/navbar.html +108 -0
- data/vendor/assets/stylesheets/twitter/_accordion.scss +33 -0
- data/vendor/assets/stylesheets/twitter/_alerts.scss +58 -0
- data/vendor/assets/stylesheets/twitter/_breadcrumbs.scss +24 -0
- data/vendor/assets/stylesheets/twitter/_button-groups.scss +191 -0
- data/vendor/assets/stylesheets/twitter/_buttons.scss +191 -0
- data/vendor/assets/stylesheets/twitter/_carousel.scss +121 -0
- data/vendor/assets/stylesheets/twitter/_close.scss +29 -0
- data/vendor/assets/stylesheets/twitter/_code.scss +57 -0
- data/vendor/assets/stylesheets/twitter/_component-animations.scss +20 -0
- data/vendor/assets/stylesheets/twitter/_dropdowns.scss +143 -0
- data/vendor/assets/stylesheets/twitter/_forms.scss +582 -0
- data/vendor/assets/stylesheets/twitter/_grid.scss +5 -0
- data/vendor/assets/stylesheets/twitter/_hero-unit.scss +22 -0
- data/vendor/assets/stylesheets/twitter/_labels-badges.scss +52 -0
- data/vendor/assets/stylesheets/twitter/_layouts.scss +17 -0
- data/vendor/assets/stylesheets/twitter/_mixins.scss +643 -0
- data/vendor/assets/stylesheets/twitter/_modals.scss +90 -0
- data/vendor/assets/stylesheets/twitter/_navbar.scss +358 -0
- data/vendor/assets/stylesheets/twitter/_navs.scss +363 -0
- data/vendor/assets/stylesheets/twitter/_pager.scss +36 -0
- data/vendor/assets/stylesheets/twitter/_pagination.scss +56 -0
- data/vendor/assets/stylesheets/twitter/_popovers.scss +49 -0
- data/vendor/assets/stylesheets/twitter/_progress-bars.scss +117 -0
- data/vendor/assets/stylesheets/twitter/_reset.scss +131 -0
- data/vendor/assets/stylesheets/twitter/_responsive-1200px-min.scss +26 -0
- data/vendor/assets/stylesheets/twitter/_responsive-767px-max.scss +149 -0
- data/vendor/assets/stylesheets/twitter/_responsive-768px-979px.scss +17 -0
- data/vendor/assets/stylesheets/twitter/_responsive-navbar.scss +153 -0
- data/vendor/assets/stylesheets/twitter/_responsive-utilities.scss +41 -0
- data/vendor/assets/stylesheets/twitter/_scaffolding.scss +29 -0
- data/vendor/assets/stylesheets/twitter/_sprites.scss +191 -0
- data/vendor/assets/stylesheets/twitter/_tables.scss +155 -0
- data/vendor/assets/stylesheets/twitter/_thumbnails.scss +47 -0
- data/vendor/assets/stylesheets/twitter/_tooltip.scss +35 -0
- data/vendor/assets/stylesheets/twitter/_type.scss +232 -0
- data/vendor/assets/stylesheets/twitter/_utilities.scss +23 -0
- data/vendor/assets/stylesheets/twitter/_variables.scss +204 -0
- data/vendor/assets/stylesheets/twitter/_wells.scss +27 -0
- data/vendor/assets/stylesheets/twitter/bootstrap.scss +62 -0
- data/vendor/assets/stylesheets/twitter/responsive.scss +48 -0
- metadata +304 -0
@@ -0,0 +1,233 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2011 Twitter, Inc.
|
3
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
* you may not use this file except in compliance with the License.
|
5
|
+
* You may obtain a copy of the License at
|
6
|
+
*
|
7
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
*
|
9
|
+
* Unless required by applicable law or agreed to in writing, software
|
10
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
* See the License for the specific language governing permissions and
|
13
|
+
* limitations under the License.
|
14
|
+
*/
|
15
|
+
|
16
|
+
var Hogan = {};
|
17
|
+
|
18
|
+
(function (Hogan) {
|
19
|
+
Hogan.Template = function constructor(renderFunc, text, compiler) {
|
20
|
+
if (renderFunc) {
|
21
|
+
this.r = renderFunc;
|
22
|
+
}
|
23
|
+
this.c = compiler;
|
24
|
+
this.text = text || '';
|
25
|
+
}
|
26
|
+
|
27
|
+
Hogan.Template.prototype = {
|
28
|
+
// render: replaced by generated code.
|
29
|
+
r: function (context, partials, indent) { return ''; },
|
30
|
+
|
31
|
+
// variable escaping
|
32
|
+
v: hoganEscape,
|
33
|
+
|
34
|
+
render: function render(context, partials, indent) {
|
35
|
+
return this.ri([context], partials || {}, indent);
|
36
|
+
},
|
37
|
+
|
38
|
+
// render internal -- a hook for overrides that catches partials too
|
39
|
+
ri: function (context, partials, indent) {
|
40
|
+
return this.r(context, partials, indent);
|
41
|
+
},
|
42
|
+
|
43
|
+
// tries to find a partial in the curent scope and render it
|
44
|
+
rp: function(name, context, partials, indent) {
|
45
|
+
var partial = partials[name];
|
46
|
+
|
47
|
+
if (!partial) {
|
48
|
+
return '';
|
49
|
+
}
|
50
|
+
|
51
|
+
if (this.c && typeof partial == 'string') {
|
52
|
+
partial = this.c.compile(partial);
|
53
|
+
}
|
54
|
+
|
55
|
+
return partial.ri(context, partials, indent);
|
56
|
+
},
|
57
|
+
|
58
|
+
// render a section
|
59
|
+
rs: function(context, partials, section) {
|
60
|
+
var buf = '',
|
61
|
+
tail = context[context.length - 1];
|
62
|
+
|
63
|
+
if (!isArray(tail)) {
|
64
|
+
return buf = section(context, partials);
|
65
|
+
}
|
66
|
+
|
67
|
+
for (var i = 0; i < tail.length; i++) {
|
68
|
+
context.push(tail[i]);
|
69
|
+
buf += section(context, partials);
|
70
|
+
context.pop();
|
71
|
+
}
|
72
|
+
|
73
|
+
return buf;
|
74
|
+
},
|
75
|
+
|
76
|
+
// maybe start a section
|
77
|
+
s: function(val, ctx, partials, inverted, start, end, tags) {
|
78
|
+
var pass;
|
79
|
+
|
80
|
+
if (isArray(val) && val.length === 0) {
|
81
|
+
return false;
|
82
|
+
}
|
83
|
+
|
84
|
+
if (typeof val == 'function') {
|
85
|
+
val = this.ls(val, ctx, partials, inverted, start, end, tags);
|
86
|
+
}
|
87
|
+
|
88
|
+
pass = (val === '') || !!val;
|
89
|
+
|
90
|
+
if (!inverted && pass && ctx) {
|
91
|
+
ctx.push((typeof val == 'object') ? val : ctx[ctx.length - 1]);
|
92
|
+
}
|
93
|
+
|
94
|
+
return pass;
|
95
|
+
},
|
96
|
+
|
97
|
+
// find values with dotted names
|
98
|
+
d: function(key, ctx, partials, returnFound) {
|
99
|
+
var names = key.split('.'),
|
100
|
+
val = this.f(names[0], ctx, partials, returnFound),
|
101
|
+
cx = null;
|
102
|
+
|
103
|
+
if (key === '.' && isArray(ctx[ctx.length - 2])) {
|
104
|
+
return ctx[ctx.length - 1];
|
105
|
+
}
|
106
|
+
|
107
|
+
for (var i = 1; i < names.length; i++) {
|
108
|
+
if (val && typeof val == 'object' && names[i] in val) {
|
109
|
+
cx = val;
|
110
|
+
val = val[names[i]];
|
111
|
+
} else {
|
112
|
+
val = '';
|
113
|
+
}
|
114
|
+
}
|
115
|
+
|
116
|
+
if (returnFound && !val) {
|
117
|
+
return false;
|
118
|
+
}
|
119
|
+
|
120
|
+
if (!returnFound && typeof val == 'function') {
|
121
|
+
ctx.push(cx);
|
122
|
+
val = this.lv(val, ctx, partials);
|
123
|
+
ctx.pop();
|
124
|
+
}
|
125
|
+
|
126
|
+
return val;
|
127
|
+
},
|
128
|
+
|
129
|
+
// find values with normal names
|
130
|
+
f: function(key, ctx, partials, returnFound) {
|
131
|
+
var val = false,
|
132
|
+
v = null,
|
133
|
+
found = false;
|
134
|
+
|
135
|
+
for (var i = ctx.length - 1; i >= 0; i--) {
|
136
|
+
v = ctx[i];
|
137
|
+
if (v && typeof v == 'object' && key in v) {
|
138
|
+
val = v[key];
|
139
|
+
found = true;
|
140
|
+
break;
|
141
|
+
}
|
142
|
+
}
|
143
|
+
|
144
|
+
if (!found) {
|
145
|
+
return (returnFound) ? false : "";
|
146
|
+
}
|
147
|
+
|
148
|
+
if (!returnFound && typeof val == 'function') {
|
149
|
+
val = this.lv(val, ctx, partials);
|
150
|
+
}
|
151
|
+
|
152
|
+
return val;
|
153
|
+
},
|
154
|
+
|
155
|
+
// higher order templates
|
156
|
+
ho: function(val, cx, partials, text, tags) {
|
157
|
+
var compiler = this.c;
|
158
|
+
var t = val.call(cx, text, function(t) {
|
159
|
+
return compiler.compile(t, {delimiters: tags}).render(cx, partials);
|
160
|
+
});
|
161
|
+
var s = compiler.compile(t.toString(), {delimiters: tags}).render(cx, partials);
|
162
|
+
this.b = s;
|
163
|
+
return false;
|
164
|
+
},
|
165
|
+
|
166
|
+
// higher order template result buffer
|
167
|
+
b: '',
|
168
|
+
|
169
|
+
// lambda replace section
|
170
|
+
ls: function(val, ctx, partials, inverted, start, end, tags) {
|
171
|
+
var cx = ctx[ctx.length - 1],
|
172
|
+
t = null;
|
173
|
+
|
174
|
+
if (!inverted && this.c && val.length > 0) {
|
175
|
+
return this.ho(val, cx, partials, this.text.substring(start, end), tags);
|
176
|
+
}
|
177
|
+
|
178
|
+
t = val.call(cx);
|
179
|
+
|
180
|
+
if (typeof t == 'function') {
|
181
|
+
if (inverted) {
|
182
|
+
return true;
|
183
|
+
} else if (this.c) {
|
184
|
+
return this.ho(t, cx, partials, this.text.substring(start, end), tags);
|
185
|
+
}
|
186
|
+
}
|
187
|
+
|
188
|
+
return t;
|
189
|
+
},
|
190
|
+
|
191
|
+
// lambda replace variable
|
192
|
+
lv: function(val, ctx, partials) {
|
193
|
+
var cx = ctx[ctx.length - 1];
|
194
|
+
var result = val.call(cx);
|
195
|
+
if (typeof result == 'function') {
|
196
|
+
result = result.call(cx);
|
197
|
+
}
|
198
|
+
result = result.toString();
|
199
|
+
|
200
|
+
if (this.c && ~result.indexOf("{{")) {
|
201
|
+
return this.c.compile(result).render(cx, partials);
|
202
|
+
}
|
203
|
+
|
204
|
+
return result;
|
205
|
+
}
|
206
|
+
|
207
|
+
};
|
208
|
+
|
209
|
+
var rAmp = /&/g,
|
210
|
+
rLt = /</g,
|
211
|
+
rGt = />/g,
|
212
|
+
rApos =/\'/g,
|
213
|
+
rQuot = /\"/g,
|
214
|
+
hChars =/[&<>\"\']/;
|
215
|
+
|
216
|
+
function hoganEscape(str) {
|
217
|
+
str = String((str === null || str === undefined) ? '' : str);
|
218
|
+
return hChars.test(str) ?
|
219
|
+
str
|
220
|
+
.replace(rAmp,'&')
|
221
|
+
.replace(rLt,'<')
|
222
|
+
.replace(rGt,'>')
|
223
|
+
.replace(rApos,''')
|
224
|
+
.replace(rQuot, '"') :
|
225
|
+
str;
|
226
|
+
}
|
227
|
+
|
228
|
+
var isArray = Array.isArray || function(a) {
|
229
|
+
return Object.prototype.toString.call(a) === '[object Array]';
|
230
|
+
};
|
231
|
+
|
232
|
+
})(typeof exports !== 'undefined' ? exports : Hogan);
|
233
|
+
|
@@ -0,0 +1,5 @@
|
|
1
|
+
/**
|
2
|
+
* @preserve Copyright 2012 Twitter, Inc.
|
3
|
+
* @license http://www.apache.org/licenses/LICENSE-2.0.txt
|
4
|
+
*/
|
5
|
+
var Hogan={};(function(a){function h(a){return a=String(a===null||a===undefined?"":a),g.test(a)?a.replace(b,"&").replace(c,"<").replace(d,">").replace(e,"'").replace(f,"""):a}a.Template=function j(a,b,c){a&&(this.r=a),this.c=c,this.text=b||""},a.Template.prototype={r:function(a,b,c){return""},v:h,render:function(b,c,d){return this.ri([b],c||{},d)},ri:function(a,b,c){return this.r(a,b,c)},rp:function(a,b,c,d){var e=c[a];return e?(this.c&&typeof e=="string"&&(e=this.c.compile(e)),e.ri(b,c,d)):""},rs:function(a,b,c){var d="",e=a[a.length-1];if(!i(e))return d=c(a,b);for(var f=0;f<e.length;f++)a.push(e[f]),d+=c(a,b),a.pop();return d},s:function(a,b,c,d,e,f,g){var h;return i(a)&&a.length===0?!1:(typeof a=="function"&&(a=this.ls(a,b,c,d,e,f,g)),h=a===""||!!a,!d&&h&&b&&b.push(typeof a=="object"?a:b[b.length-1]),h)},d:function(a,b,c,d){var e=a.split("."),f=this.f(e[0],b,c,d),g=null;if(a==="."&&i(b[b.length-2]))return b[b.length-1];for(var h=1;h<e.length;h++)f&&typeof f=="object"&&e[h]in f?(g=f,f=f[e[h]]):f="";return d&&!f?!1:(!d&&typeof f=="function"&&(b.push(g),f=this.lv(f,b,c),b.pop()),f)},f:function(a,b,c,d){var e=!1,f=null,g=!1;for(var h=b.length-1;h>=0;h--){f=b[h];if(f&&typeof f=="object"&&a in f){e=f[a],g=!0;break}}return g?(!d&&typeof e=="function"&&(e=this.lv(e,b,c)),e):d?!1:""},ho:function(a,b,c,d,e){var f=this.c,g=a.call(b,d,function(a){return f.compile(a,{delimiters:e}).render(b,c)}),h=f.compile(g.toString(),{delimiters:e}).render(b,c);return this.b=h,!1},b:"",ls:function(a,b,c,d,e,f,g){var h=b[b.length-1],i=null;if(!d&&this.c&&a.length>0)return this.ho(a,h,c,this.text.substring(e,f),g);i=a.call(h);if(typeof i=="function"){if(d)return!0;if(this.c)return this.ho(i,h,c,this.text.substring(e,f),g)}return i},lv:function(a,b,c){var d=b[b.length-1],e=a.call(d);return typeof e=="function"&&(e=e.call(d)),e=e.toString(),this.c&&~e.indexOf("{{")?this.c.compile(e).render(d,c):e}};var b=/&/g,c=/</g,d=/>/g,e=/\'/g,f=/\"/g,g=/[&<>\"\']/,i=Array.isArray||function(a){return Object.prototype.toString.call(a)==="[object Array]"}})(typeof exports!="undefined"?exports:Hogan)
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,139 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
|
3
|
+
<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
|
4
|
+
<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
|
5
|
+
<!--[if (gte IE 9)|!(IE)]><!--><html lang="en"> <!--<![endif]-->
|
6
|
+
<head>
|
7
|
+
|
8
|
+
<!-- Basic Page Needs
|
9
|
+
================================================== -->
|
10
|
+
<meta charset="utf-8">
|
11
|
+
<title>Hogan.js</title>
|
12
|
+
<meta name="description" content="">
|
13
|
+
<meta name="author" content="">
|
14
|
+
<!--[if lt IE 9]>
|
15
|
+
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
|
16
|
+
<![endif]-->
|
17
|
+
|
18
|
+
<!-- Mobile Specific Metas
|
19
|
+
================================================== -->
|
20
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
21
|
+
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
|
22
|
+
|
23
|
+
<!-- CSS
|
24
|
+
================================================== -->
|
25
|
+
<link rel="stylesheet" href="stylesheets/skeleton.css">
|
26
|
+
<link rel="stylesheet" href="stylesheets/layout.css">
|
27
|
+
|
28
|
+
</head>
|
29
|
+
<body>
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
<!-- Primary Page Layout
|
34
|
+
================================================== -->
|
35
|
+
|
36
|
+
<header class="hogan-hero">
|
37
|
+
<div class="stripes"></div>
|
38
|
+
<div class="noise"></div>
|
39
|
+
<div class="container">
|
40
|
+
<h1>Hogan.js</h1>
|
41
|
+
<h3>JavaScript templating from Twitter.</h3>
|
42
|
+
<a href="https://github.com/twitter/hogan.js" class="download button">View on Github</a>
|
43
|
+
</div>
|
44
|
+
</header>
|
45
|
+
<div class="primary container">
|
46
|
+
|
47
|
+
<!-- Layout 1 -->
|
48
|
+
<div class="five columns">
|
49
|
+
<h4>Getting started</h4>
|
50
|
+
<p>
|
51
|
+
Hogan.js is a 2.5k JS templating engine developed at Twitter. Use it as a part of your asset packager to compile templates ahead of time or include it in your browser to handle dynamic templates.
|
52
|
+
</p>
|
53
|
+
<p>
|
54
|
+
If you're developing with Node.js, just use NPM to add the Hogan package.
|
55
|
+
</p>
|
56
|
+
<pre><code>$ npm install hogan.js</code></pre>
|
57
|
+
<p>
|
58
|
+
Alternatively, drop hogan.js in your browser by adding the following script.
|
59
|
+
</p>
|
60
|
+
<pre><code><script src="http://twitter.github.com/hogan.js/builds/{{version}}/hogan.js"></script></code></pre>
|
61
|
+
|
62
|
+
</div>
|
63
|
+
<div class="ten columns offset-by-one">
|
64
|
+
<script src="https://gist.github.com/1484613.js"> </script>
|
65
|
+
</div>
|
66
|
+
<div class="hogan-divider">
|
67
|
+
<div class="hogan-icon"></div>
|
68
|
+
</div>
|
69
|
+
|
70
|
+
<!-- Layout 2 -->
|
71
|
+
<div class="five columns">
|
72
|
+
<h4>Templates</h4>
|
73
|
+
<p>
|
74
|
+
Hogan.js was developed against the mustache test suite, so everything that holds true for templates as specified <a href="//mustache.github.com/mustache.5.html">here</a>, is also the case for hogan.js.
|
75
|
+
</p>
|
76
|
+
<p>
|
77
|
+
That means you get variables, sections, lambdas, partials, filters, and everything else you've come to expect from mustache templating - only much, much faster.
|
78
|
+
</p>
|
79
|
+
</div>
|
80
|
+
<div class="ten columns offset-by-one">
|
81
|
+
<script src="https://gist.github.com/1484342.js"></script>
|
82
|
+
</div>
|
83
|
+
<div class="hogan-divider">
|
84
|
+
<div class="hogan-icon"></div>
|
85
|
+
</div>
|
86
|
+
|
87
|
+
<!-- Layout 3 -->
|
88
|
+
<div class="five columns">
|
89
|
+
<h4>Compiling</h4>
|
90
|
+
<p>
|
91
|
+
Use <code>hogan.compile()</code> to precompile your templates into vanilla JS.
|
92
|
+
</p>
|
93
|
+
<p>
|
94
|
+
It's best to serve your templates precompiled whenever you can (rather than the raw templates), as parsing is the most time consuming operation.
|
95
|
+
</p>
|
96
|
+
<p>
|
97
|
+
</p>
|
98
|
+
</div>
|
99
|
+
<div class="ten columns offset-by-one">
|
100
|
+
<script src="https://gist.github.com/1484513.js"> </script>
|
101
|
+
</div>
|
102
|
+
<div class="hogan-divider">
|
103
|
+
<div class="hogan-icon"></div>
|
104
|
+
</div>
|
105
|
+
|
106
|
+
<!-- Layout 4 -->
|
107
|
+
<div class="five columns">
|
108
|
+
<h4 id='rendering'>Rendering</h4>
|
109
|
+
<p>
|
110
|
+
Once compiled, call the <code>render()</code> method with a context and optional partials object.
|
111
|
+
</p>
|
112
|
+
<p>
|
113
|
+
If supplying partials, you can compile them ahead of time, or pass string templates.</p>
|
114
|
+
<p>
|
115
|
+
</p>
|
116
|
+
</div>
|
117
|
+
<div class="ten columns offset-by-one">
|
118
|
+
<script src="https://gist.github.com/1575714.js"> </script>
|
119
|
+
</div>
|
120
|
+
|
121
|
+
<div class="sixteen columns hogan-footer">
|
122
|
+
<span class="copyright">
|
123
|
+
Designed and built with all the love in the world <a href="http://twitter.com/twitter" target="_blank">@twitter</a> by <a href="http://twitter.com/sayrer" target="_blank">@sayrer</a> and <a href="http://twitter.com/fat" target="_blank">@fat</a>.<br />
|
124
|
+
Code licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank">Apache License v2.0</a>. Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.
|
125
|
+
</span>
|
126
|
+
<span class="colophon">
|
127
|
+
<a href="#">Back to top</a>
|
128
|
+
</span>
|
129
|
+
</div>
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
</div><!-- container -->
|
134
|
+
|
135
|
+
|
136
|
+
<!-- End Document
|
137
|
+
================================================== -->
|
138
|
+
</body>
|
139
|
+
</html>
|
@@ -0,0 +1,206 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
/* #Reset & Basics (Inspired by E. Meyers)
|
4
|
+
================================================== */
|
5
|
+
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
|
6
|
+
margin: 0;
|
7
|
+
padding: 0;
|
8
|
+
border: 0;
|
9
|
+
font-size: 100%;
|
10
|
+
font: inherit;
|
11
|
+
vertical-align: baseline; }
|
12
|
+
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
|
13
|
+
display: block; }
|
14
|
+
body {
|
15
|
+
line-height: 1; }
|
16
|
+
ol, ul {
|
17
|
+
list-style: none; }
|
18
|
+
blockquote, q {
|
19
|
+
quotes: none; }
|
20
|
+
blockquote:before, blockquote:after,
|
21
|
+
q:before, q:after {
|
22
|
+
content: '';
|
23
|
+
content: none; }
|
24
|
+
table {
|
25
|
+
border-collapse: collapse;
|
26
|
+
border-spacing: 0; }
|
27
|
+
|
28
|
+
|
29
|
+
/* #Basic Styles
|
30
|
+
================================================== */
|
31
|
+
body {
|
32
|
+
background: #fff;
|
33
|
+
font: 14px/24px "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
34
|
+
color: #000;
|
35
|
+
-webkit-font-smoothing: antialiased; /* Fix for webkit rendering */
|
36
|
+
-webkit-text-size-adjust: 100%;
|
37
|
+
}
|
38
|
+
a {
|
39
|
+
color: #999113;
|
40
|
+
text-decoration: none;
|
41
|
+
}
|
42
|
+
a:hover {
|
43
|
+
color: #7b750e;
|
44
|
+
text-decoration: underline;
|
45
|
+
}
|
46
|
+
|
47
|
+
|
48
|
+
/* #Typography
|
49
|
+
================================================== */
|
50
|
+
h1, h2, h3, h4, h5, h6 {
|
51
|
+
font-weight: bold; }
|
52
|
+
h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { font-weight: inherit; }
|
53
|
+
h1 { font-size: 75px; line-height: 80px; margin-bottom: 14px;}
|
54
|
+
h2 { font-size: 35px; line-height: 40px; margin-bottom: 10px; }
|
55
|
+
h3 { font-size: 28px; line-height: 34px; margin-bottom: 8px; }
|
56
|
+
h4 { font-size: 21px; line-height: 30px; margin-bottom: 4px; }
|
57
|
+
h5 { font-size: 17px; line-height: 24px; }
|
58
|
+
h6 { font-size: 14px; line-height: 21px; }
|
59
|
+
p { margin-bottom: 22px; }
|
60
|
+
|
61
|
+
|
62
|
+
/* #Main styles
|
63
|
+
================================================== */
|
64
|
+
|
65
|
+
/* Hogan Hero */
|
66
|
+
.hogan-hero {
|
67
|
+
position: relative;
|
68
|
+
background: #333; /* Old browsers */
|
69
|
+
background: -moz-radial-gradient(center, ellipse cover, #333 0%, #000 100%); /* FF3.6+ */
|
70
|
+
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,#333), color-stop(100%,#000)); /* Chrome,Safari4+ */
|
71
|
+
background: -webkit-radial-gradient(center, ellipse cover, #333 0%,#000 100%); /* Chrome10+,Safari5.1+ */
|
72
|
+
background: -o-radial-gradient(center, ellipse cover, #333 0%,#000 100%); /* Opera 12+ */
|
73
|
+
background: -ms-radial-gradient(center, ellipse cover, #333 0%,#000 100%); /* IE10+ */
|
74
|
+
background: radial-gradient(center, ellipse cover, #333 0%,#000 100%); /* W3C */
|
75
|
+
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#333', endColorstr='#000',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
|
76
|
+
}
|
77
|
+
.hogan-hero .container {
|
78
|
+
padding: 180px 0;
|
79
|
+
}
|
80
|
+
.hogan-hero h1 {
|
81
|
+
letter-spacing: -3px;
|
82
|
+
color: #fff;
|
83
|
+
position: relative;
|
84
|
+
margin-bottom: 5px;
|
85
|
+
}
|
86
|
+
.hogan-hero h3 {
|
87
|
+
max-width: 650px;
|
88
|
+
margin-bottom: 20px;
|
89
|
+
color: #fff;
|
90
|
+
}
|
91
|
+
.hogan-hero .noise,
|
92
|
+
.hogan-hero .stripes {
|
93
|
+
position: absolute;
|
94
|
+
top: 0;
|
95
|
+
left: 0;
|
96
|
+
right: 0;
|
97
|
+
bottom: 0;
|
98
|
+
}
|
99
|
+
.hogan-hero .noise {
|
100
|
+
background: url(../images/noise.png) repeat;
|
101
|
+
}
|
102
|
+
.hogan-hero .stripes {
|
103
|
+
background: url(../images/stripes.png) repeat;
|
104
|
+
}
|
105
|
+
|
106
|
+
/* Primary content container */
|
107
|
+
.primary.container {
|
108
|
+
padding-top: 100px;
|
109
|
+
}
|
110
|
+
|
111
|
+
/*Hogan divider */
|
112
|
+
.hogan-divider {
|
113
|
+
padding-top: 60px;
|
114
|
+
border-bottom: 1px solid #ddd;
|
115
|
+
margin-bottom: 60px;
|
116
|
+
clear: both;
|
117
|
+
position: relative;
|
118
|
+
}
|
119
|
+
.hogan-icon {
|
120
|
+
width: 40px;
|
121
|
+
height: 30px;
|
122
|
+
position: absolute;
|
123
|
+
left: 50%;
|
124
|
+
top: 46px;
|
125
|
+
margin-left: -20px;
|
126
|
+
background: url('../images/small-hogan-icon.png') white no-repeat center center;
|
127
|
+
}
|
128
|
+
|
129
|
+
/* Button style */
|
130
|
+
.button {
|
131
|
+
display: inline-block;
|
132
|
+
cursor: pointer;
|
133
|
+
background: #dfd52e;
|
134
|
+
border-radius: 3px;
|
135
|
+
margin-bottom: 20px;
|
136
|
+
color: #000;
|
137
|
+
text-transform: uppercase;
|
138
|
+
text-decoration: none;
|
139
|
+
font-size: 15px;
|
140
|
+
padding: 0 34px;
|
141
|
+
line-height: 46px;
|
142
|
+
font-weight: bold;
|
143
|
+
-webkit-transition: background-color .3s ease-in-out;
|
144
|
+
-moz-transition: background-color .3s ease-in-out;
|
145
|
+
transition: background-color .3s ease-in-out;
|
146
|
+
|
147
|
+
}
|
148
|
+
.button:hover {
|
149
|
+
text-decoration: inherit;
|
150
|
+
color: inherit;
|
151
|
+
background-color: #f5e810;
|
152
|
+
}
|
153
|
+
|
154
|
+
/* Hogan footer */
|
155
|
+
.hogan-footer {
|
156
|
+
border-top: 1px solid #ddd;
|
157
|
+
margin-top: 60px;
|
158
|
+
padding: 20px 0 40px;
|
159
|
+
color: #999;
|
160
|
+
font-size: 12px;
|
161
|
+
}
|
162
|
+
.hogan-footer .copyright {
|
163
|
+
float: left;
|
164
|
+
}
|
165
|
+
.hogan-footer .colophon {
|
166
|
+
float: right;
|
167
|
+
}
|
168
|
+
|
169
|
+
pre, code {
|
170
|
+
background: #F8F8FF;
|
171
|
+
border: 1px solid #DDD;
|
172
|
+
padding: 5px 10px;
|
173
|
+
margin-bottom: 20px;
|
174
|
+
font-family: courier;
|
175
|
+
overflow: hidden;
|
176
|
+
}
|
177
|
+
|
178
|
+
pre code {
|
179
|
+
border: 0;
|
180
|
+
padding: 0;
|
181
|
+
margin-bottom: 0;
|
182
|
+
}
|
183
|
+
|
184
|
+
|
185
|
+
/* #Media Queries
|
186
|
+
================================================== */
|
187
|
+
|
188
|
+
/* Smaller than standard 960 (devices and browsers) */
|
189
|
+
@media only screen and (max-width: 959px) {}
|
190
|
+
|
191
|
+
/* Tablet Portrait size to standard 960 (devices and browsers) */
|
192
|
+
@media only screen and (min-width: 768px) and (max-width: 959px) {}
|
193
|
+
|
194
|
+
/* All Mobile Sizes (devices and browser) */
|
195
|
+
@media only screen and (max-width: 767px) {
|
196
|
+
.hogan-hero .container {
|
197
|
+
padding: 100px 0;
|
198
|
+
}
|
199
|
+
}
|
200
|
+
|
201
|
+
/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
|
202
|
+
@media only screen and (min-width: 480px) and (max-width: 767px) {}
|
203
|
+
|
204
|
+
/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
|
205
|
+
@media only screen and (max-width: 479px) {}
|
206
|
+
|