cmstyle 0.0.13 → 0.0.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. data/lib/app/assets/images/cm_app.ico +0 -0
  2. data/lib/app/assets/images/cm_app.png +0 -0
  3. data/lib/app/assets/images/cm_app_30x30.png +0 -0
  4. data/lib/app/assets/stylesheets/application.css +9 -78
  5. data/lib/app/views/layouts/_footer.slim +12 -5
  6. data/lib/app/views/layouts/application.slim +27 -18
  7. data/lib/assets/images/glyphicons-halflings-white.png +0 -0
  8. data/lib/assets/images/glyphicons-halflings.png +0 -0
  9. data/lib/assets/javascripts/bootstrap.js +165 -31
  10. data/lib/assets/javascripts/prettify.js +0 -0
  11. data/lib/assets/stylesheets/bootstrap-responsive.css +5 -1
  12. data/lib/assets/stylesheets/bootstrap.css +335 -189
  13. data/lib/assets/stylesheets/prettify.css +0 -0
  14. data/lib/cmstyle.rb +4 -1
  15. data/lib/cmstyle/navigation_helpers.rb +165 -0
  16. data/lib/cmstyle/version.rb +1 -1
  17. metadata +6 -83
  18. data/lib/app/assets/images/novartis-micro.png +0 -0
  19. data/lib/app/assets/images/novartis-small.png +0 -0
  20. data/lib/app/views/cmstyle/_footer.slim +0 -5
  21. data/lib/app/views/cmstyle/_header.slim +0 -40
  22. data/lib/app/views/cmstyle/_modals.slim +0 -62
  23. data/lib/assets/images/8020select.png +0 -0
  24. data/lib/assets/images/adoptahydrant.png +0 -0
  25. data/lib/assets/images/apple-touch-icon-114-precomposed.png +0 -0
  26. data/lib/assets/images/apple-touch-icon-144-precomposed.png +0 -0
  27. data/lib/assets/images/apple-touch-icon-57-precomposed.png +0 -0
  28. data/lib/assets/images/apple-touch-icon-72-precomposed.png +0 -0
  29. data/lib/assets/images/bootstrap-example-carousel.png +0 -0
  30. data/lib/assets/images/bootstrap-example-fluid.jpg +0 -0
  31. data/lib/assets/images/bootstrap-example-hero.jpg +0 -0
  32. data/lib/assets/images/bootstrap-example-marketing-narrow.png +0 -0
  33. data/lib/assets/images/bootstrap-example-signin.png +0 -0
  34. data/lib/assets/images/bootstrap-example-starter.jpg +0 -0
  35. data/lib/assets/images/bootstrap-example-sticky-footer.png +0 -0
  36. data/lib/assets/images/bootstrap-mdo-sfmoma-01.jpg +0 -0
  37. data/lib/assets/images/bootstrap-mdo-sfmoma-02.jpg +0 -0
  38. data/lib/assets/images/bootstrap-mdo-sfmoma-03.jpg +0 -0
  39. data/lib/assets/images/breakingnews.png +0 -0
  40. data/lib/assets/images/browser-icon-chrome.png +0 -0
  41. data/lib/assets/images/browser-icon-firefox.png +0 -0
  42. data/lib/assets/images/browser-icon-safari.png +0 -0
  43. data/lib/assets/images/bs-docs-bootstrap-features.png +0 -0
  44. data/lib/assets/images/bs-docs-masthead-pattern.png +0 -0
  45. data/lib/assets/images/bs-docs-responsive-illustrations.png +0 -0
  46. data/lib/assets/images/bs-docs-twitter-github.png +0 -0
  47. data/lib/assets/images/fleetio.png +0 -0
  48. data/lib/assets/images/gathercontent.png +0 -0
  49. data/lib/assets/images/grid-baseline-20px.png +0 -0
  50. data/lib/assets/images/jshint.png +0 -0
  51. data/lib/assets/images/kippt.png +0 -0
  52. data/lib/assets/images/less-logo-large.png +0 -0
  53. data/lib/assets/images/logo.png +0 -0
  54. data/lib/assets/images/noise.png +0 -0
  55. data/lib/assets/images/responsive-illustrations.png +0 -0
  56. data/lib/assets/images/slide-01.jpg +0 -0
  57. data/lib/assets/images/slide-02.jpg +0 -0
  58. data/lib/assets/images/slide-03.jpg +0 -0
  59. data/lib/assets/images/small-hogan-icon.png +0 -0
  60. data/lib/assets/images/soundready.png +0 -0
  61. data/lib/assets/images/stripes.png +0 -0
  62. data/lib/assets/javascripts/application.js +0 -154
  63. data/lib/assets/javascripts/bootstrap-affix.js +0 -19
  64. data/lib/assets/javascripts/bootstrap-alert.js +0 -56
  65. data/lib/assets/javascripts/bootstrap-button.js +0 -96
  66. data/lib/assets/javascripts/bootstrap-carousel.js +0 -63
  67. data/lib/assets/javascripts/bootstrap-collapse.js +0 -88
  68. data/lib/assets/javascripts/bootstrap-dropdown.js +0 -145
  69. data/lib/assets/javascripts/bootstrap-modal.js +0 -114
  70. data/lib/assets/javascripts/bootstrap-phantom.js +0 -21
  71. data/lib/assets/javascripts/bootstrap-popover.js +0 -107
  72. data/lib/assets/javascripts/bootstrap-scrollspy.js +0 -31
  73. data/lib/assets/javascripts/bootstrap-tab.js +0 -80
  74. data/lib/assets/javascripts/bootstrap-tooltip.js +0 -153
  75. data/lib/assets/javascripts/bootstrap-transition.js +0 -13
  76. data/lib/assets/javascripts/bootstrap-typeahead.js +0 -199
  77. data/lib/assets/javascripts/compiler.js +0 -348
  78. data/lib/assets/javascripts/hogan-1.0.5.amd.js +0 -576
  79. data/lib/assets/javascripts/hogan-1.0.5.common.js +0 -576
  80. data/lib/assets/javascripts/hogan-1.0.5.js +0 -572
  81. data/lib/assets/javascripts/hogan-1.0.5.mustache.js +0 -619
  82. data/lib/assets/javascripts/hogan.js +0 -545
  83. data/lib/assets/javascripts/index.js +0 -848
  84. data/lib/assets/javascripts/jquery.js +0 -2
  85. data/lib/assets/javascripts/mustache.js +0 -90
  86. data/lib/assets/javascripts/phantom.js +0 -63
  87. data/lib/assets/javascripts/qunit.js +0 -1510
  88. data/lib/assets/javascripts/release.js +0 -74
  89. data/lib/assets/javascripts/server.js +0 -14
  90. data/lib/assets/javascripts/spec.js +0 -77
  91. data/lib/assets/javascripts/template-1.0.5.js +0 -233
  92. data/lib/assets/javascripts/template.js +0 -233
  93. data/lib/assets/javascripts/web_templates.js +0 -32
  94. data/lib/assets/stylesheets/css-tests.css +0 -139
  95. data/lib/assets/stylesheets/docs.css +0 -1015
  96. data/lib/assets/stylesheets/layout.css +0 -206
  97. data/lib/assets/stylesheets/qunit.css +0 -232
  98. data/lib/assets/stylesheets/skeleton.css +0 -236
@@ -1,545 +0,0 @@
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 HoganTemplate = (function () {
17
-
18
- function constructor(text) {
19
- this.text = text;
20
- }
21
-
22
- constructor.prototype = {
23
-
24
- // render: replaced by generated code.
25
- r: function (context, partials, indent) { return ''; },
26
-
27
- // variable escaping
28
- v: hoganEscape,
29
-
30
- render: function render(context, partials, indent) {
31
- return this.r(context, partials, indent);
32
- },
33
-
34
- // tries to find a partial in the curent scope and render it
35
- rp: function(name, context, partials, indent) {
36
- var partial = partials[name];
37
-
38
- if (!partial) {
39
- return '';
40
- }
41
-
42
- return partial.r(context, partials, indent);
43
- },
44
-
45
- // render a section
46
- rs: function(context, partials, section) {
47
- var buf = '',
48
- tail = context[context.length - 1];
49
-
50
- if (!isArray(tail)) {
51
- return buf = section(context, partials);
52
- }
53
-
54
- for (var i = 0; i < tail.length; i++) {
55
- context.push(tail[i]);
56
- buf += section(context, partials);
57
- context.pop();
58
- }
59
-
60
- return buf;
61
- },
62
-
63
- // maybe start a section
64
- s: function(val, ctx, partials, inverted, start, end, tags) {
65
- var pass;
66
-
67
- if (isArray(val) && val.length === 0) {
68
- return false;
69
- }
70
-
71
- if (!inverted && typeof val == 'function') {
72
- val = this.ls(val, ctx, partials, start, end, tags);
73
- }
74
-
75
- pass = (val === '') || !!val;
76
-
77
- if (!inverted && pass && ctx) {
78
- ctx.push((typeof val == 'object') ? val : ctx[ctx.length - 1]);
79
- }
80
-
81
- return pass;
82
- },
83
-
84
- // find values with dotted names
85
- d: function(key, ctx, partials, returnFound) {
86
-
87
- var names = key.split('.'),
88
- val = this.f(names[0], ctx, partials, returnFound),
89
- cx = null;
90
-
91
- if (key === '.' && isArray(ctx[ctx.length - 2])) {
92
- return ctx[ctx.length - 1];
93
- }
94
-
95
- for (var i = 1; i < names.length; i++) {
96
- if (val && typeof val == 'object' && names[i] in val) {
97
- cx = val;
98
- val = val[names[i]];
99
- } else {
100
- val = '';
101
- }
102
- }
103
-
104
- if (returnFound && !val) {
105
- return false;
106
- }
107
-
108
- if (!returnFound && typeof val == 'function') {
109
- ctx.push(cx);
110
- val = this.lv(val, ctx, partials);
111
- ctx.pop();
112
- }
113
-
114
- return val;
115
- },
116
-
117
- // find values with normal names
118
- f: function(key, ctx, partials, returnFound) {
119
- var val = false,
120
- v = null,
121
- found = false;
122
-
123
- for (var i = ctx.length - 1; i >= 0; i--) {
124
- v = ctx[i];
125
- if (v && typeof v == 'object' && key in v) {
126
- val = v[key];
127
- found = true;
128
- break;
129
- }
130
- }
131
-
132
- if (!found) {
133
- return (returnFound) ? false : "";
134
- }
135
-
136
- if (!returnFound && typeof val == 'function') {
137
- val = this.lv(val, ctx, partials);
138
- }
139
-
140
- return val;
141
- },
142
-
143
- // higher order templates
144
- ho: function(val, cx, partials, text, tags) {
145
- var t = val.call(cx, text, function(t) {
146
- return Hogan.compile(t, {delimiters: tags}).render(cx, partials);
147
- });
148
- var s = Hogan.compile(t.toString(), {delimiters: tags}).render(cx, partials);
149
- this.b = s;
150
- return false;
151
- },
152
-
153
- // higher order template result buffer
154
- b: '',
155
-
156
- // lambda replace section
157
- ls: function(val, ctx, partials, start, end, tags) {
158
- var cx = ctx[ctx.length - 1],
159
- t = val.call(cx);
160
-
161
- if (val.length > 0) {
162
- return this.ho(val, cx, partials, this.text.substring(start, end), tags);
163
- }
164
-
165
- if (typeof t == 'function') {
166
- return this.ho(t, cx, partials, this.text.substring(start, end), tags);
167
- }
168
-
169
- return t;
170
- },
171
-
172
- // lambda replace variable
173
- lv: function(val, ctx, partials) {
174
- var cx = ctx[ctx.length - 1];
175
- return Hogan.compile(val.call(cx).toString()).render(cx, partials);
176
- }
177
-
178
- };
179
-
180
- var rAmp = /&/g,
181
- rLt = /</g,
182
- rGt = />/g,
183
- rApos =/\'/g,
184
- rQuot = /\"/g,
185
- hChars =/[&<>\"\']/;
186
-
187
- function hoganEscape(str) {
188
- str = String(str === null ? '' : str);
189
- return hChars.test(str) ?
190
- str
191
- .replace(rAmp,'&amp;')
192
- .replace(rLt,'&lt;')
193
- .replace(rGt,'&gt;')
194
- .replace(rApos,'&#39;')
195
- .replace(rQuot, '&quot;') :
196
- str;
197
- }
198
-
199
- var isArray = Array.isArray || function(a) {
200
- return Object.prototype.toString.call(a) === '[object Array]';
201
- };
202
-
203
- return constructor;
204
-
205
- })();
206
-
207
- var Hogan = (function () {
208
-
209
- // Setup regex assignments
210
- // remove whitespace according to Mustache spec
211
- var rIsWhitespace = /\S/,
212
- rQuot = /\"/g,
213
- rNewline = /\n/g,
214
- rCr = /\r/g,
215
- rSlash = /\\/g,
216
- tagTypes = {
217
- '#': 1, '^': 2, '/': 3, '!': 4, '>': 5,
218
- '<': 6, '=': 7, '_v': 8, '{': 9, '&': 10
219
- };
220
-
221
- function scan(text, delimiters) {
222
- var len = text.length,
223
- IN_TEXT = 0,
224
- IN_TAG_TYPE = 1,
225
- IN_TAG = 2,
226
- state = IN_TEXT,
227
- tagType = null,
228
- tag = null,
229
- buf = '',
230
- tokens = [],
231
- seenTag = false,
232
- i = 0,
233
- lineStart = 0,
234
- otag = '{{',
235
- ctag = '}}';
236
-
237
- function addBuf() {
238
- if (buf.length > 0) {
239
- tokens.push(new String(buf));
240
- buf = '';
241
- }
242
- }
243
-
244
- function lineIsWhitespace() {
245
- var isAllWhitespace = true;
246
- for (var j = lineStart; j < tokens.length; j++) {
247
- isAllWhitespace =
248
- (tokens[j].tag && tagTypes[tokens[j].tag] < tagTypes['_v']) ||
249
- (!tokens[j].tag && tokens[j].match(rIsWhitespace) === null);
250
- if (!isAllWhitespace) {
251
- return false;
252
- }
253
- }
254
-
255
- return isAllWhitespace;
256
- }
257
-
258
- function filterLine(haveSeenTag, noNewLine) {
259
- addBuf();
260
-
261
- if (haveSeenTag && lineIsWhitespace()) {
262
- for (var j = lineStart, next; j < tokens.length; j++) {
263
- if (!tokens[j].tag) {
264
- if ((next = tokens[j+1]) && next.tag == '>') {
265
- // set indent to token value
266
- next.indent = tokens[j].toString()
267
- }
268
- tokens.splice(j, 1);
269
- }
270
- }
271
- } else if (!noNewLine) {
272
- tokens.push({tag:'\n'});
273
- }
274
-
275
- seenTag = false;
276
- lineStart = tokens.length;
277
- }
278
-
279
- function changeDelimiters(text, index) {
280
- var close = '=' + ctag,
281
- closeIndex = text.indexOf(close, index),
282
- delimiters = trim(
283
- text.substring(text.indexOf('=', index) + 1, closeIndex)
284
- ).split(' ');
285
-
286
- otag = delimiters[0];
287
- ctag = delimiters[1];
288
-
289
- return closeIndex + close.length - 1;
290
- }
291
-
292
- if (delimiters) {
293
- delimiters = delimiters.split(' ');
294
- otag = delimiters[0];
295
- ctag = delimiters[1];
296
- }
297
-
298
- for (i = 0; i < len; i++) {
299
- if (state == IN_TEXT) {
300
- if (tagChange(otag, text, i)) {
301
- --i;
302
- addBuf();
303
- state = IN_TAG_TYPE;
304
- } else {
305
- if (text.charAt(i) == '\n') {
306
- filterLine(seenTag);
307
- } else {
308
- buf += text.charAt(i);
309
- }
310
- }
311
- } else if (state == IN_TAG_TYPE) {
312
- i += otag.length - 1;
313
- tag = tagTypes[text.charAt(i + 1)];
314
- tagType = tag ? text.charAt(i + 1) : '_v';
315
- if (tagType == '=') {
316
- i = changeDelimiters(text, i);
317
- state = IN_TEXT;
318
- } else {
319
- if (tag) {
320
- i++;
321
- }
322
- state = IN_TAG;
323
- }
324
- seenTag = i;
325
- } else {
326
- if (tagChange(ctag, text, i)) {
327
- tokens.push({tag: tagType, n: trim(buf), otag: otag, ctag: ctag,
328
- i: (tagType == '/') ? seenTag - ctag.length : i + otag.length});
329
- buf = '';
330
- i += ctag.length - 1;
331
- state = IN_TEXT;
332
- if (tagType == '{') {
333
- i++;
334
- }
335
- } else {
336
- buf += text.charAt(i);
337
- }
338
- }
339
- }
340
-
341
- filterLine(seenTag, true);
342
-
343
- return tokens;
344
- }
345
-
346
- function trim(s) {
347
- if (s.trim) {
348
- return s.trim();
349
- }
350
-
351
- return s.replace(/^\s*|\s*$/g, '');
352
- }
353
-
354
- function tagChange(tag, text, index) {
355
- if (text.charAt(index) != tag.charAt(0)) {
356
- return false;
357
- }
358
-
359
- for (var i = 1, l = tag.length; i < l; i++) {
360
- if (text.charAt(index + i) != tag.charAt(i)) {
361
- return false;
362
- }
363
- }
364
-
365
- return true;
366
- }
367
-
368
- function buildTree(tokens, kind, stack, customTags) {
369
- var instructions = [],
370
- opener = null,
371
- token = null;
372
-
373
- while (tokens.length > 0) {
374
- token = tokens.shift();
375
- if (token.tag == '#' || token.tag == '^' || isOpener(token, customTags)) {
376
- stack.push(token);
377
- token.nodes = buildTree(tokens, token.tag, stack, customTags);
378
- instructions.push(token);
379
- } else if (token.tag == '/') {
380
- if (stack.length === 0) {
381
- throw new Error('Closing tag without opener: /' + token.n);
382
- }
383
- opener = stack.pop();
384
- if (token.n != opener.n && !isCloser(token.n, opener.n, customTags)) {
385
- throw new Error('Nesting error: ' + opener.n + ' vs. ' + token.n);
386
- }
387
- opener.end = token.i;
388
- return instructions;
389
- } else {
390
- instructions.push(token);
391
- }
392
- }
393
-
394
- if (stack.length > 0) {
395
- throw new Error('missing closing tag: ' + stack.pop().n);
396
- }
397
-
398
- return instructions;
399
- }
400
-
401
- function isOpener(token, tags) {
402
- for (var i = 0, l = tags.length; i < l; i++) {
403
- if (tags[i].o == token.n) {
404
- token.tag = '#';
405
- return true;
406
- }
407
- }
408
- }
409
-
410
- function isCloser(close, open, tags) {
411
- for (var i = 0, l = tags.length; i < l; i++) {
412
- if (tags[i].c == close && tags[i].o == open) {
413
- return true;
414
- }
415
- }
416
- }
417
-
418
- function generate(tree, text, options) {
419
- var code = 'i = i || "";var c = [cx];var b = i + "";var _ = this;'
420
- + walk(tree)
421
- + 'return b;';
422
-
423
- if (options.asString) {
424
- return 'function(cx,p,i){' + code + ';}';
425
- }
426
-
427
- var template = new HoganTemplate(text);
428
- template.r = new Function('cx', 'p', 'i', code);
429
- return template;
430
- }
431
-
432
- function esc(s) {
433
- return s.replace(rSlash, '\\\\')
434
- .replace(rQuot, '\\\"')
435
- .replace(rNewline, '\\n')
436
- .replace(rCr, '\\r');
437
- }
438
-
439
- function chooseMethod(s) {
440
- return (~s.indexOf('.')) ? 'd' : 'f';
441
- }
442
-
443
- function walk(tree) {
444
- var code = '';
445
- for (var i = 0, l = tree.length; i < l; i++) {
446
- var tag = tree[i].tag;
447
- if (tag == '#') {
448
- code += section(tree[i].nodes, tree[i].n, chooseMethod(tree[i].n),
449
- tree[i].i, tree[i].end, tree[i].otag + " " + tree[i].ctag);
450
- } else if (tag == '^') {
451
- code += invertedSection(tree[i].nodes, tree[i].n,
452
- chooseMethod(tree[i].n));
453
- } else if (tag == '<' || tag == '>') {
454
- code += partial(tree[i]);
455
- } else if (tag == '{' || tag == '&') {
456
- code += tripleStache(tree[i].n, chooseMethod(tree[i].n));
457
- } else if (tag == '\n') {
458
- code += text('"\\n"' + (tree.length-1 == i ? '' : ' + i'));
459
- } else if (tag == '_v') {
460
- code += variable(tree[i].n, chooseMethod(tree[i].n));
461
- } else if (tag === undefined) {
462
- code += text('"' + esc(tree[i]) + '"');
463
- }
464
- }
465
- return code;
466
- }
467
-
468
- function section(nodes, id, method, start, end, tags) {
469
- return 'if(_.s(_.' + method + '("' + esc(id) + '",c,p,1),' +
470
- 'c,p,0,' + start + ',' + end + ', "' + tags + '")){' +
471
- 'b += _.rs(c,p,' +
472
- 'function(c,p){ var b = "";' +
473
- walk(nodes) +
474
- 'return b;});c.pop();}' +
475
- 'else{b += _.b; _.b = ""};';
476
- }
477
-
478
- function invertedSection(nodes, id, method) {
479
- return 'if (!_.s(_.' + method + '("' + esc(id) + '",c,p,1),c,p,1,0,0,"")){' +
480
- walk(nodes) +
481
- '};';
482
- }
483
-
484
- function partial(tok) {
485
- return 'b += _.rp("' + esc(tok.n) + '",c[c.length - 1],p,"' + (tok.indent || '') + '");';
486
- }
487
-
488
- function tripleStache(id, method) {
489
- return 'b += (_.' + method + '("' + esc(id) + '",c,p,0));';
490
- }
491
-
492
- function variable(id, method) {
493
- return 'b += (_.v(_.' + method + '("' + esc(id) + '",c,p,0)));';
494
- }
495
-
496
- function text(id) {
497
- return 'b += ' + id + ';';
498
- }
499
-
500
- return ({
501
- scan: scan,
502
-
503
- parse: function(tokens, options) {
504
- options = options || {};
505
- return buildTree(tokens, '', [], options.sectionTags || []);
506
- },
507
-
508
- cache: {},
509
-
510
- compile: function(text, options) {
511
- // options
512
- //
513
- // asString: false (default)
514
- //
515
- // sectionTags: [{o: '_foo', c: 'foo'}]
516
- // An array of object with o and c fields that indicate names for custom
517
- // section tags. The example above allows parsing of {{_foo}}{{/foo}}.
518
- //
519
- // delimiters: A string that overrides the default delimiters.
520
- // Example: "<% %>"
521
- //
522
- options = options || {};
523
-
524
- var t = this.cache[text];
525
-
526
- if (t) {
527
- return t;
528
- }
529
-
530
- t = generate(this.parse(scan(text, options.delimiters), options), text, options);
531
- return this.cache[text] = t;
532
- }
533
- });
534
- })();
535
-
536
- // Export the hogan constructor for Node.js and CommonJS.
537
- if (typeof module !== 'undefined' && module.exports) {
538
- module.exports = Hogan;
539
- module.exports.Template = HoganTemplate;
540
- } else if (typeof define === 'function' && define.amd) {
541
- define(function () { return Hogan; });
542
- } else if (typeof exports !== 'undefined') {
543
- exports.Hogan = Hogan;
544
- exports.HoganTemplate = HoganTemplate;
545
- }