haml_coffee_assets 1.6.2 → 1.7.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.
- data/README.md +82 -21
- data/lib/haml_coffee_assets/compiler.rb +1 -1
- data/lib/haml_coffee_assets/configuration.rb +5 -0
- data/lib/haml_coffee_assets/version.rb +1 -1
- data/lib/js/haml_coffee_assets.js +6 -1
- data/lib/js/hamlcoffee.js +81 -25
- data/vendor/assets/javascripts/hamlcoffee.js.coffee.erb +1 -0
- data/vendor/assets/javascripts/hamlcoffee_amd.js.coffee.erb +91 -0
- metadata +4 -3
data/README.md
CHANGED
@@ -32,7 +32,8 @@ Haml Coffee allows you to write inline [CoffeeScript](http://jashkenas.github.co
|
|
32
32
|
%a{ :href => "/cart/item/remove/#{ item.id }" } Remove Item
|
33
33
|
```
|
34
34
|
|
35
|
-
You can try Haml Coffee online by visiting [Haml Coffee Online](http://haml-coffee-online.herokuapp.com/)
|
35
|
+
You can try Haml Coffee online by visiting [Haml Coffee Online](http://haml-coffee-online.herokuapp.com/) and have a
|
36
|
+
look [the AMD example Rails app](https://github.com/netzpirat/haml_coffee_assets_amd).
|
36
37
|
|
37
38
|
## Installation
|
38
39
|
|
@@ -52,6 +53,8 @@ And require the `hamlcoffee.js` in your `app/assets/javascripts/application.js.c
|
|
52
53
|
#= require hamlcoffee
|
53
54
|
```
|
54
55
|
|
56
|
+
If you're using AMD support then you do not need to include the above helper, since it will be automatically included.
|
57
|
+
|
55
58
|
This provides the default escaping and the global context functions. Read more about it in the configuration section
|
56
59
|
below.
|
57
60
|
|
@@ -63,7 +66,26 @@ If you want to use Haml Coffee with Sinatra, please have a look at the
|
|
63
66
|
|
64
67
|
## Usage
|
65
68
|
|
66
|
-
Haml Coffee Assets allows two different ways of generating your JavaScript templates
|
69
|
+
Haml Coffee Assets allows two different ways of generating your JavaScript templates, but the Haml Coffee template
|
70
|
+
generation is preferred, since it provides more configuration options and a smoother experience.
|
71
|
+
|
72
|
+
### Haml Coffee template generation
|
73
|
+
|
74
|
+
* Extension: `.hamlc`
|
75
|
+
|
76
|
+
If you omit the `.jst` and give your templates only a `.hamlc` extension, then Haml Coffee Assets will handle the
|
77
|
+
JavaScript template generation. With this approach you can easily define your own namespace with a simple configuration
|
78
|
+
and you can use the template name filter.
|
79
|
+
|
80
|
+
You can place all your Haml Coffee templates in the `app/assets/javascripts/templates` directory and include all
|
81
|
+
templates from your `app/assets/javascripts/application.js.coffee`:
|
82
|
+
|
83
|
+
```coffeescript
|
84
|
+
#= require_tree ./templates
|
85
|
+
```
|
86
|
+
|
87
|
+
Because Haml Coffee Assets provides a default template name filter, the `templates/` prefix will be automatically
|
88
|
+
removed.
|
67
89
|
|
68
90
|
### Sprocket JST processor template generation
|
69
91
|
|
@@ -72,7 +94,7 @@ Haml Coffee Assets allows two different ways of generating your JavaScript templ
|
|
72
94
|
When you give your templates the extension `.jst.hamlc`, Haml Coffee Assets will only generate the template function,
|
73
95
|
which then in turn will be further processed by the
|
74
96
|
[Sprocket JST processor](https://github.com/sstephenson/sprockets/blob/master/lib/sprockets/jst_processor.rb). Because
|
75
|
-
Haml Coffee Assets will not generate the template, you can't use the template name filter and the JST namespace
|
97
|
+
Haml Coffee Assets will not generate the template, you can't use the AMD support, template name filter and the JST namespace
|
76
98
|
definition is more cumbersome compared to the Haml Coffee template generation.
|
77
99
|
|
78
100
|
With this approach you should place all your Haml Coffee templates in the `app/assets/templates` directory and include
|
@@ -85,24 +107,6 @@ all templates from your `app/assets/javascripts/application.js.coffee`:
|
|
85
107
|
If you would place your templates into `app/assets/javascripts/templates`, then all your JST template names would begin
|
86
108
|
with `templates/`, which may be not what you want.
|
87
109
|
|
88
|
-
### Haml Coffee template generation
|
89
|
-
|
90
|
-
* Extension: `.hamlc`
|
91
|
-
|
92
|
-
If you omit the `.jst` and give your templates only a `.hamlc` extension, then Haml Coffee Assets will handle the
|
93
|
-
JavaScript template generation. With this approach you can easily define your own namespace with a simple configuration
|
94
|
-
and you can use the template name filter.
|
95
|
-
|
96
|
-
You can place all your Haml Coffee templates in the `app/assets/javascripts/templates` directory and include all
|
97
|
-
templates from your `app/assets/javascripts/application.js.coffee`:
|
98
|
-
|
99
|
-
```coffeescript
|
100
|
-
#= require_tree ./templates
|
101
|
-
```
|
102
|
-
|
103
|
-
Because Haml Coffee Assets provides a default template name filter, the `templates/` prefix will be automatically
|
104
|
-
removed.
|
105
|
-
|
106
110
|
## Configuration
|
107
111
|
|
108
112
|
_Please note that all configuration examples will use the paths of the Haml Coffee template generation and not the
|
@@ -169,6 +173,18 @@ Please note, the `placement` option is only applicable if you use the `.hamlc` e
|
|
169
173
|
handle the JST generation. The global `hamlcoffee` helpers must be loaded normally before making use of any
|
170
174
|
templates due to the current template design.
|
171
175
|
|
176
|
+
### Global template dependencies
|
177
|
+
|
178
|
+
Haml Coffee Assets allows you to globally define the module dependencies for all templates. By default, the Haml Coffee
|
179
|
+
Assets helper is included, but you can add your own:
|
180
|
+
|
181
|
+
```ruby
|
182
|
+
config.hamlcoffee.dependencies = { '_' => 'underscore', :hc => 'hamlcoffee_amd' }
|
183
|
+
```
|
184
|
+
|
185
|
+
If you do not include the `hamlcoffee_amd` module as `hc` in the list, then the helper methods will be included in each
|
186
|
+
template, increasing its size. It's recommended to always have the `hamlcoffee` module included.
|
187
|
+
|
172
188
|
### Template namespace
|
173
189
|
|
174
190
|
By default all Haml Coffee templates are registered under the `JST` namespace. A template
|
@@ -235,6 +251,8 @@ applicable if you use the `.hamlc` extension and let Haml Coffee Assets handle t
|
|
235
251
|
`.jst.hamlc` extension, then Sprockets JST processor will name things accordingly (e.g., with `templates/` intact in
|
236
252
|
this case).
|
237
253
|
|
254
|
+
The template name filter is not used with AMD loader.
|
255
|
+
|
238
256
|
### Basename
|
239
257
|
|
240
258
|
If you don't want to have your directory names under which your template is located to be contained in the JST name,
|
@@ -407,6 +425,49 @@ You can see the [default implementation](https://github.com/netzpirat/haml_coffe
|
|
407
425
|
and the [Haml Coffee documentation](https://github.com/netzpirat/haml-coffee#custom-helper-function-options)
|
408
426
|
for more information about each helper function.
|
409
427
|
|
428
|
+
## Partial rendering
|
429
|
+
|
430
|
+
With Haml Coffee Assets you can render partials when using plain JST approach and also with AMD support.
|
431
|
+
|
432
|
+
### JST partial rendering
|
433
|
+
|
434
|
+
With the traditional JST approach, all the templates are globally accessible in your defined namespace, which is `JST`
|
435
|
+
by default. This allows you to render a template within another template like:
|
436
|
+
|
437
|
+
```
|
438
|
+
%h1 Comments for this article
|
439
|
+
- for comment in @article.comments
|
440
|
+
!= JST['articles/comment'](comment)
|
441
|
+
```
|
442
|
+
|
443
|
+
### AMD partial rendering
|
444
|
+
|
445
|
+
Haml Coffee parses the template source code for `require` statements and adds them to the template module dependencies.
|
446
|
+
This allows you to require other templates like this:
|
447
|
+
|
448
|
+
```Haml
|
449
|
+
- require 'module'
|
450
|
+
- require 'deep/nested/other'
|
451
|
+
```
|
452
|
+
|
453
|
+
Now your dependencies are available in the template, allowing you to render it with:
|
454
|
+
|
455
|
+
```Haml
|
456
|
+
!= module()
|
457
|
+
!= other()
|
458
|
+
```
|
459
|
+
|
460
|
+
Please note that only the basename ot the template is used as module variable name.
|
461
|
+
|
462
|
+
Of course you can also directly require and render a template like:
|
463
|
+
|
464
|
+
```haml
|
465
|
+
!= require("another/other")()
|
466
|
+
```
|
467
|
+
|
468
|
+
Please have a look at [the AMD example Rails app](https://github.com/netzpirat/haml_coffee_assets_amd) for a working
|
469
|
+
example.
|
470
|
+
|
410
471
|
## Author
|
411
472
|
|
412
473
|
Developed by Michael Kessler, [mksoft.ch](https://mksoft.ch).
|
@@ -23,7 +23,7 @@ module HamlCoffeeAssets
|
|
23
23
|
|
24
24
|
runtime.call('HamlCoffeeAssets.compile', name, source, jst,
|
25
25
|
config.namespace, config.format, config.uglify, config.basename,
|
26
|
-
config.escapeHtml, config.escapeAttributes, config.cleanValue, config.placement,
|
26
|
+
config.escapeHtml, config.escapeAttributes, config.cleanValue, config.placement, config.dependencies,
|
27
27
|
config.customHtmlEscape, config.customCleanValue,
|
28
28
|
config.customPreserve, config.customFindAndPreserve,
|
29
29
|
config.customSurround, config.customSucceed, config.customPrecede,
|
@@ -25,6 +25,7 @@ module HamlCoffeeAssets
|
|
25
25
|
self.escapeAttributes = true
|
26
26
|
self.cleanValue = true
|
27
27
|
self.placement = 'global'
|
28
|
+
self.dependencies = { :hc => 'hamlcoffee_amd' }
|
28
29
|
self.customHtmlEscape = 'window.HAML.escape'
|
29
30
|
self.customCleanValue = 'window.HAML.cleanValue'
|
30
31
|
self.customPreserve = 'window.HAML.preserve'
|
@@ -71,6 +72,10 @@ module HamlCoffeeAssets
|
|
71
72
|
#
|
72
73
|
attr_accessor :placement
|
73
74
|
|
75
|
+
# Define the global amd module dependencies
|
76
|
+
#
|
77
|
+
attr_accessor :dependencies
|
78
|
+
|
74
79
|
# Custom global HTML escaping function
|
75
80
|
#
|
76
81
|
attr_accessor :customHtmlEscape
|
@@ -21,6 +21,7 @@ var HamlCoffeeAssets = (function(){
|
|
21
21
|
* @param escapeAttributes [Boolean] whether to escape HTML attributes output by default or not
|
22
22
|
* @param cleanValue [String] the name of the function to clean the values
|
23
23
|
* @param placement [String] where to place the function, either `global` or `amd`
|
24
|
+
* @param dependencies [Object] the amd module dependencies
|
24
25
|
* @param customHtmlEscape [String] the name of the function to escape the output
|
25
26
|
* @param customCleanValue [String] the name of the function to clean the code output
|
26
27
|
* @param customSurround [String] the name of the function for the surround helper
|
@@ -32,7 +33,7 @@ var HamlCoffeeAssets = (function(){
|
|
32
33
|
* @param extendScope [Boolean] extend the scope with the context
|
33
34
|
*/
|
34
35
|
compile: function(name, source, jst, namespace, format, uglify, basename,
|
35
|
-
escapeHtml, escapeAttributes, cleanValue, placement,
|
36
|
+
escapeHtml, escapeAttributes, cleanValue, placement, dependencies,
|
36
37
|
customHtmlEscape, customCleanValue, customPreserve, customFindAndPreserve,
|
37
38
|
customSurround, customSucceed, customPrecede,
|
38
39
|
preserveTags, selfCloseTags,
|
@@ -46,6 +47,7 @@ var HamlCoffeeAssets = (function(){
|
|
46
47
|
escapeAttributes: escapeAttributes,
|
47
48
|
cleanValue: cleanValue,
|
48
49
|
placement: placement,
|
50
|
+
dependencies: dependencies,
|
49
51
|
customHtmlEscape: customHtmlEscape,
|
50
52
|
customCleanValue: customCleanValue,
|
51
53
|
customPreserve: customPreserve,
|
@@ -76,6 +78,9 @@ var HamlCoffeeAssets = (function(){
|
|
76
78
|
}
|
77
79
|
|
78
80
|
if (context !== '' && context !== false) {
|
81
|
+
if (placement === 'amd' && context === 'window.HAML.context') {
|
82
|
+
context = 'hc.context';
|
83
|
+
}
|
79
84
|
template = template.replace('.call(context);', '.call(' + context + '(context));');
|
80
85
|
}
|
81
86
|
|
data/lib/js/hamlcoffee.js
CHANGED
@@ -363,38 +363,43 @@ require.define("/haml-coffee.coffee", function (require, module, exports, __dirn
|
|
363
363
|
|
364
364
|
module.exports = HamlCoffee = (function() {
|
365
365
|
|
366
|
-
HamlCoffee.VERSION = '1.
|
366
|
+
HamlCoffee.VERSION = '1.7.0';
|
367
367
|
|
368
368
|
function HamlCoffee(options) {
|
369
|
-
var _base, _base10, _base2, _base3, _base4, _base5, _base6, _base7, _base8, _base9, _ref, _ref10, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9;
|
369
|
+
var _base, _base10, _base11, _base2, _base3, _base4, _base5, _base6, _base7, _base8, _base9, _ref, _ref10, _ref11, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9;
|
370
370
|
this.options = options != null ? options : {};
|
371
371
|
if ((_ref = (_base = this.options).placement) == null) {
|
372
372
|
_base.placement = 'global';
|
373
373
|
}
|
374
|
-
if ((_ref2 = (_base2 = this.options).
|
375
|
-
_base2.
|
374
|
+
if ((_ref2 = (_base2 = this.options).dependencies) == null) {
|
375
|
+
_base2.dependencies = {
|
376
|
+
hc: 'hamlcoffee'
|
377
|
+
};
|
378
|
+
}
|
379
|
+
if ((_ref3 = (_base3 = this.options).escapeHtml) == null) {
|
380
|
+
_base3.escapeHtml = true;
|
376
381
|
}
|
377
|
-
if ((
|
378
|
-
|
382
|
+
if ((_ref4 = (_base4 = this.options).escapeAttributes) == null) {
|
383
|
+
_base4.escapeAttributes = true;
|
379
384
|
}
|
380
|
-
if ((
|
381
|
-
|
385
|
+
if ((_ref5 = (_base5 = this.options).cleanValue) == null) {
|
386
|
+
_base5.cleanValue = true;
|
382
387
|
}
|
383
|
-
if ((
|
384
|
-
if ((
|
385
|
-
|
388
|
+
if ((_ref6 = (_base6 = this.options).uglify) == null) _base6.uglify = false;
|
389
|
+
if ((_ref7 = (_base7 = this.options).basename) == null) {
|
390
|
+
_base7.basename = false;
|
386
391
|
}
|
387
|
-
if ((
|
388
|
-
|
392
|
+
if ((_ref8 = (_base8 = this.options).extendScope) == null) {
|
393
|
+
_base8.extendScope = false;
|
389
394
|
}
|
390
|
-
if ((
|
391
|
-
|
395
|
+
if ((_ref9 = (_base9 = this.options).format) == null) {
|
396
|
+
_base9.format = 'html5';
|
392
397
|
}
|
393
|
-
if ((
|
394
|
-
|
398
|
+
if ((_ref10 = (_base10 = this.options).preserveTags) == null) {
|
399
|
+
_base10.preserveTags = 'pre,textarea';
|
395
400
|
}
|
396
|
-
if ((
|
397
|
-
|
401
|
+
if ((_ref11 = (_base11 = this.options).selfCloseTags) == null) {
|
402
|
+
_base11.selfCloseTags = 'meta,img,link,br,hr,input,area,param,col,base';
|
398
403
|
}
|
399
404
|
}
|
400
405
|
|
@@ -570,17 +575,56 @@ require.define("/haml-coffee.coffee", function (require, module, exports, __dirn
|
|
570
575
|
if (namespace == null) namespace = 'window.HAML';
|
571
576
|
switch (this.options.placement) {
|
572
577
|
case 'amd':
|
573
|
-
return this.
|
578
|
+
return this.renderAmd();
|
574
579
|
default:
|
575
|
-
return this.
|
580
|
+
return this.renderGlobal(templateName, namespace);
|
576
581
|
}
|
577
582
|
};
|
578
583
|
|
579
|
-
HamlCoffee.prototype.
|
580
|
-
|
584
|
+
HamlCoffee.prototype.renderAmd = function() {
|
585
|
+
var m, module, modules, param, params, template, _ref, _ref2;
|
586
|
+
if (/^hamlcoffee/.test(this.options.dependencies['hc'])) {
|
587
|
+
this.options.customHtmlEscape = 'hc.escape';
|
588
|
+
this.options.customCleanValue = 'hc.cleanValue';
|
589
|
+
this.options.customPreserve = 'hc.preserve';
|
590
|
+
this.options.customFindAndPreserve = 'hc.findAndPreserve';
|
591
|
+
this.options.customSurround = 'hc.surround';
|
592
|
+
this.options.customSucceed = 'hc.succeed';
|
593
|
+
this.options.customPrecede = 'hc.precede';
|
594
|
+
}
|
595
|
+
modules = [];
|
596
|
+
params = [];
|
597
|
+
_ref = this.options.dependencies;
|
598
|
+
for (param in _ref) {
|
599
|
+
module = _ref[param];
|
600
|
+
modules.push(module);
|
601
|
+
params.push(param);
|
602
|
+
}
|
603
|
+
template = indent(this.precompile(), 4);
|
604
|
+
_ref2 = this.findDependencies(template);
|
605
|
+
for (param in _ref2) {
|
606
|
+
module = _ref2[param];
|
607
|
+
modules.push(module);
|
608
|
+
params.push(param);
|
609
|
+
}
|
610
|
+
if (modules.length !== 0) {
|
611
|
+
modules = (function() {
|
612
|
+
var _i, _len, _results;
|
613
|
+
_results = [];
|
614
|
+
for (_i = 0, _len = modules.length; _i < _len; _i++) {
|
615
|
+
m = modules[_i];
|
616
|
+
_results.push("'" + m + "'");
|
617
|
+
}
|
618
|
+
return _results;
|
619
|
+
})();
|
620
|
+
modules = "[" + modules + "], (" + (params.join(', ')) + ")";
|
621
|
+
} else {
|
622
|
+
modules = '';
|
623
|
+
}
|
624
|
+
return "define " + modules + " ->\n (context) ->\n render = ->\n \n" + template + "\n render.call(context)";
|
581
625
|
};
|
582
626
|
|
583
|
-
HamlCoffee.prototype.
|
627
|
+
HamlCoffee.prototype.renderGlobal = function(templateName, namespace) {
|
584
628
|
var segment, segments, template, _i, _len;
|
585
629
|
if (namespace == null) namespace = 'window.HAML';
|
586
630
|
template = '';
|
@@ -618,7 +662,7 @@ require.define("/haml-coffee.coffee", function (require, module, exports, __dirn
|
|
618
662
|
if (this.options.customHtmlEscape) {
|
619
663
|
fn += "$e = " + this.options.customHtmlEscape + "\n";
|
620
664
|
} else {
|
621
|
-
fn += "$e = (text, escape) ->\n \"\#{ text }\"\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\'/g, ''')\n .replace(/\"/g, '"')\n";
|
665
|
+
fn += "$e = (text, escape) ->\n \"\#{ text }\"\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\'/g, ''')\n .replace(/\\//g, '/')\n .replace(/\"/g, '"')\n";
|
622
666
|
}
|
623
667
|
}
|
624
668
|
if (code.indexOf('$c') !== -1) {
|
@@ -767,6 +811,18 @@ require.define("/haml-coffee.coffee", function (require, module, exports, __dirn
|
|
767
811
|
}
|
768
812
|
};
|
769
813
|
|
814
|
+
HamlCoffee.prototype.findDependencies = function(code) {
|
815
|
+
var dependencies, match, module, name, requireRegexp;
|
816
|
+
requireRegexp = /require(?:\s+|\()(['"])(.+?)(\1)\)?/gm;
|
817
|
+
dependencies = {};
|
818
|
+
while (match = requireRegexp.exec(code)) {
|
819
|
+
module = match[2];
|
820
|
+
name = module.split('/').pop();
|
821
|
+
dependencies[name] = module;
|
822
|
+
}
|
823
|
+
return dependencies;
|
824
|
+
};
|
825
|
+
|
770
826
|
return HamlCoffee;
|
771
827
|
|
772
828
|
})();
|
@@ -0,0 +1,91 @@
|
|
1
|
+
# HAML Coffee helper module
|
2
|
+
#
|
3
|
+
define ->
|
4
|
+
|
5
|
+
# HAML Coffee html escape function.
|
6
|
+
#
|
7
|
+
# @param text [String] the text to escape
|
8
|
+
# @return [String] the escaped text
|
9
|
+
#
|
10
|
+
escape: (text) ->
|
11
|
+
("" + text)
|
12
|
+
.replace(/&/g, "&")
|
13
|
+
.replace(/</g, "<")
|
14
|
+
.replace(/>/g, ">")
|
15
|
+
.replace(/"/g, """)
|
16
|
+
.replace(/'/g, "'")
|
17
|
+
.replace(/\//g, "/")
|
18
|
+
|
19
|
+
# HAML Coffee clean value function. Beside just
|
20
|
+
# cleaning `null` and `undefined` values, it
|
21
|
+
# adds a hidden unicode marker character to
|
22
|
+
# boolean values, so that the render time boolean
|
23
|
+
# logic can distinguish between real booleans and
|
24
|
+
# boolean-like strings.
|
25
|
+
#
|
26
|
+
# @param text [String] the text to be cleaned
|
27
|
+
# @return [String] the cleaned text
|
28
|
+
#
|
29
|
+
cleanValue: (text) ->
|
30
|
+
switch text
|
31
|
+
when null, undefined then ''
|
32
|
+
when true, false then '\u0093' + text
|
33
|
+
else
|
34
|
+
text
|
35
|
+
|
36
|
+
# Preserve newlines in the text
|
37
|
+
#
|
38
|
+
# @param text [String] the text to preserve
|
39
|
+
# @return [String] the preserved text
|
40
|
+
#
|
41
|
+
preserve: (text) ->
|
42
|
+
text.replace /\n/g, '
'
|
43
|
+
|
44
|
+
# Find and preserve newlines in the preserving tags
|
45
|
+
#
|
46
|
+
# @param text [String] the text to preserve
|
47
|
+
# @return [String] the preserved text
|
48
|
+
#
|
49
|
+
findAndPreserve: (text) ->
|
50
|
+
tags = '<%= HamlCoffeeAssets.config.preserveTags %>'.split(',').join('|')
|
51
|
+
text = text.replace ///<(#{ tags })>([^]*?)<\/\1>/// g, (str, tag, content) ->
|
52
|
+
"<#{ tag }>#{ <%= HamlCoffeeAssets.config.customPreserve %>(content) }</#{ tag }>"
|
53
|
+
|
54
|
+
# The surround helper surrounds the function output
|
55
|
+
# with the start and end string without whitespace in between.
|
56
|
+
#
|
57
|
+
# @param [String] start the text to prepend to the text
|
58
|
+
# @param [String] end the text to append to the text
|
59
|
+
# @param [Function] fn the text generating function
|
60
|
+
# @return [String] the surrounded text
|
61
|
+
#
|
62
|
+
surround: (start, end, fn) ->
|
63
|
+
start + fn.call(@)?.replace(/^\s+|\s+$/g, '') + end
|
64
|
+
|
65
|
+
# The succeed helper appends text to the function output
|
66
|
+
# without whitespace in between.
|
67
|
+
#
|
68
|
+
# @param [String] end the text to append to the text
|
69
|
+
# @param [Function] fn the text generating function
|
70
|
+
# @return [String] the succeeded text
|
71
|
+
#
|
72
|
+
succeed: (end, fn) ->
|
73
|
+
fn.call(@)?.replace(/\s+$/g, '') + end
|
74
|
+
|
75
|
+
# The precede helper prepends text to the function output
|
76
|
+
# without whitespace in between.
|
77
|
+
#
|
78
|
+
# @param [String] start the text to prepend to the text
|
79
|
+
# @param [Function] fn the text generating function
|
80
|
+
# @return [String] the preeceded text
|
81
|
+
#
|
82
|
+
precede: (start, fn) ->
|
83
|
+
start + fn.call(@)?.replace(/^\s+/g, '')
|
84
|
+
|
85
|
+
# Get the HAML template context. This merges the local
|
86
|
+
# and the global template context into a new context.
|
87
|
+
#
|
88
|
+
# @param locals [Object] the local template context
|
89
|
+
# @return [Object] the merged context
|
90
|
+
#
|
91
|
+
context: (locals) -> locals
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: haml_coffee_assets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-11-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: coffee-script
|
@@ -92,6 +92,7 @@ files:
|
|
92
92
|
- lib/js/haml_coffee_assets.js
|
93
93
|
- lib/js/hamlcoffee.js
|
94
94
|
- vendor/assets/javascripts/hamlcoffee.js.coffee.erb
|
95
|
+
- vendor/assets/javascripts/hamlcoffee_amd.js.coffee.erb
|
95
96
|
- LICENSE
|
96
97
|
- README.md
|
97
98
|
homepage: https://github.com/netzpirat/haml_coffee_assets
|
@@ -108,7 +109,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
108
109
|
version: '0'
|
109
110
|
segments:
|
110
111
|
- 0
|
111
|
-
hash:
|
112
|
+
hash: 794208290192263430
|
112
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
114
|
none: false
|
114
115
|
requirements:
|