@codelenny/blade-interpolated-coffee
A Blade filter that allows interpolation inside CoffeeScript snippets.
Last updated 3 years ago by codelenny .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @codelenny/blade-interpolated-coffee 
SYNC missed versions from official npm registry.

Interpolated CoffeeScript Filter for Blade

npm (scoped) Build Status

Why have one layer of variable insertion, when you could have twice the complexity?

The regular :coffeescript filter for Blade keeps #{} as the standard CoffeeScript interpolation, but doesn't let you use Blade variables in CoffeeScript snippets. blade-interpolated-coffee allows you to use ${} (or another symbol) to insert Blade variables into the block code.

- var url = "/";
:interpolatedcoffee
  i = 0
  console.log "i for '${url}' is #{i}"

Could produce the following HTML:

<script type="text/javascript">
  var i = 0;
  console.log("i for '/' is "+i);
</script>

Installation

npm install @codelenny/blade-interpolated-coffee
interpolatedCoffeeScript = require "@codelenny/blade-interpolated-coffee"
blade = require "blade"

blade.compile src,
    filters:
      interpolatedcoffee: interpolatedCoffeeScript
  , (err, html) -> # ...

Customization

Raw Filter

Don't want to have <script type="text/javascript"> automatically inserted? A raw mode is built in to the filter.

interpolatedCoffeeScript = require "@codelenny/blade-interpolated-coffee"

opts =
  filters:
    "$cs": interpolatedCoffeeScript
    "$cs.raw": interpolatedCoffeeScript.raw
script#main(data-i="0")
  :$cs.raw
    # ...

Change ${}

blade-interpolated-coffee ships with ${} as the default interpolation marker. However, you can use another marker:

interpolatedCoffeeScript = require "@codelenny/blade-interpolated-coffee"
myFilter = interpolatedCoffeeScript.custom /@\{/g
opts =
  filters:
    "$cs": myFilter
    "$cs.raw": myFilter.raw

custom takes two arguments: needle and haystack.

When blade-interpolated-coffee is given the contents of the text block, it passes the block to CoffeeScript (which interpolates uses of #{} with variables in the runtime scope).

Then all instances of needle are replaced with haystack, and the resulting string is passed to Blade. Blade will interpolate all inserted cases of #{} with variables in Blade's scope.

The marker could easily be changed by searching for /@\{/g as the needle, or more complex patterns can be created using both the needle and haystack, such as making sure that only single variables are interpolated.

complexFilter = interpolatedCoffeeScript.custom /\$\{([a-zA-Z_\s]+)\}/g, "\#{$1}"

Current Tags

  • 0.1.0                                ...           latest (3 years ago)

1 Versions

  • 0.1.0                                ...           3 years ago
Maintainers (1)
Downloads
Today 0
This Week 1
This Month 1
Last Day 0
Last Week 0
Last Month 2
Dependencies (1)
Dev Dependencies (2)
Dependents (0)
None

Copyright 2014 - 2016 © taobao.org |