• Stars
    star
    102
  • Rank 335,584 (Top 7 %)
  • Language
    CoffeeScript
  • License
    MIT License
  • Created about 13 years ago
  • Updated over 12 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

NO LONGER SUPPORTED

Mint.js

Standard Interface to the Node.js Template Engines (JavaScript, CSS, text, etc.).

Build Status

Install

npm install mint

Engines

mint = require("mint")
mint.coffee
mint.coffeekup
mint.eco
mint.ejs
mint.haml
mint.hamlcoffee
mint.handlebars
mint.jade
mint.less
mint.stylus
mint.markdown
mint.mustache
mint.uglifyjs
mint.yui

Example

mint     = require('mint')
mint.mustache "{title}!", locals: title: "Hello World", (string) -> console.log(string) #=> "Hello World!"

or more formally:

input     = fs.readFileSync("./test/fixtures/views/jade.jade", "utf-8")
output    = fs.readFileSync("./test/fixtures/views/jade.html", "utf-8")
mint.jade input, {}, (error, result) ->
  assert.equal result, output

or if you want just to compile a template(Note: supports only jade, haml, handlebars, eco, ejs):

fn = mint.compile template: input, engine: 'jade' # Function
fn title: 'Title', author: 'Some author' # String, rendered template

API

mint[engine](string, options, callback)

Preprocessing

Sometimes you might need to hack in a feature to the language. Like right now, stylus doesn't support multiline values for css attributes, so you might add it like this:

input   = '''
div
  box-shadow: 0 -2px 2px  hsl(220, 20%, 40%),
    0 -10px 10px          hsl(220, 20%, 20%),
    0 0 15px              black,

    inset 0 5px 1px       hsla(220, 80%, 10%, 0.4), 
    inset 0 0 5px         hsla(220, 80%, 10%, 0.1),
    inset 0 20px 15px     hsla(220, 80%, 100%, 1),

    inset 0 1px 0         hsl(219, 20%, 0%), 

    inset 0 -50px 50px -40px hsla(220, 80%, 10%, .3),  /* gradient to inset */

    inset 0 -1px 0px      hsl(220, 20%, 20%),
    inset 0 -2px 0px      hsl(220, 20%, 40%),
    inset 0 -2px 1px      hsl(220, 20%, 65%)  
'''

output  = '''
div {
  box-shadow: 0 -2px 2px #525f7a, 0 -10px 10px #29303d, 0 0 15px #000, inset 0 5px 1px rgba(5,19,46,0.40), inset 0 0 5px rgba(5,19,46,0.10), inset 0 20px 15px #fff, inset 0 1px 0 #000, inset 0 -50px 50px -40px rgba(5,19,46,0.30), inset 0 -1px 0px #29303d, inset 0 -2px 0px #525f7a, inset 0 -2px 1px #94a0b8;
}

'''
# locally
options   =
  preprocessor: (content) ->
    content.replace /(\s+)(.*),\s+(?:\/\*.*\*\/)?\s*/mg, (_, indent, attribute) ->
      "#{indent}#{attribute.replace(/\s+/g, " ")}, "

mint.stylus input, options, (error, result) ->
  expect(result).toEqual output

# globally
mint.stylus.preprocessor = (content) ->
  content.replace /(\s+)(.*),\s+(?:\/\*.*\*\/)?\s*/mg, (_, indent, attribute) ->
    "#{indent}#{attribute.replace(/\s+/g, " ")}, "

mint.stylus input, {}, (error, result) ->
  expect(result).toEqual output

Test

mocha

License

(The MIT License)

Copyright © 2011 Lance Pollard <[email protected]>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

More Repositories

1

authlogic-connect

Instant Oauth and OpenID support for your Rails and Sinatra Apps
Ruby
148
star
2

cached-commons

Caching and Compressing JavaScripts and Stylesheets old school
JavaScript
115
star
3

tiny-require.js

Tiny require library for the browser. 3.0kb minified. 1.2kb gzipped.
CoffeeScript
59
star
4

queuable

Free Cron and Background Jobs for Heroku
Python
55
star
5

authlogic-connect-example

Authlogic, OpenID, Oauth, Rails 3, on Heroku
JavaScript
34
star
6

cockpit

Super DRY Settings for Ruby, Rails, and Sinatra Apps
Ruby
23
star
7

authlogic-connect-example-rails2

Let your app use all of Oauth and OpenID (Rails 2)
JavaScript
15
star
8

mayan-hieroglyphs

1000+ Free Mayan Hieroglyph Icons
13
star
9

ubiquitously

Social Publishing gem
Ruby
8
star
10

underscore.logger

Cross-browser and Node.js empowered logging with colorized output.
CoffeeScript
7
star
11

cropify

JavaScript
6
star
12

timezones

A human-friendly timezone converter in JavaScript
JavaScript
6
star
13

seesaw

JavaScript
4
star
14

open-window

JavaScript
3
star
15

make-link-text.js

Basic Link Text Parser Prototype
JavaScript
3
star
16

cpp2ts.js

C++ to TypeScript Converter (to a Rough Approximationâ„¢)
C++
3
star
17

tierra.aws.cloud.js

Experiments with Multi-Region Infrastructure with Terraform on AWS
HCL
2
star
18

tierra.js

Terraform Script Builder in JavaScript
JavaScript
2
star
19

awesome-inspiration

These are all projects to gain inspiration from for implementation, in various programming languages.
2
star
20

computer-science

Papers and Notes on Ideal Compiler Architecture Design
HTML
2
star
21

vm.js

Minimal Virtual Machine Demo in JavaScript
JavaScript
2
star
22

text

Public Domain Text Collections
Shell
2
star
23

script-tree

JavaScript
2
star
24

meditations

Meditations on Swift, Assembly, and JavaScript
2
star
25

quadratic-residue-prng.js

Quadratic Residue Permutation Oriented Pseudo Random Number Generator in JavaScript
JavaScript
2
star
26

print

Print HTML elements on a printer.
JavaScript
2
star
27

normalize-ast.js

Normalize a JavaScript AST in a special way
JavaScript
2
star
28

lancejpollard

Lance's README
1
star
29

bind.js

A binding library to make react forms more performant
JavaScript
1
star
30

base-make-javascript-code.js

JavaScript
1
star
31

ht.js

Hyperbolic tessellations in JavaScript.
TypeScript
1
star
32

configured-quadratic-residue-prng.js

Configured Quadratic Residue Permutation Oriented Pseudo Random Number Generator in JavaScript
JavaScript
1
star
33

next-2-repos

Bug demonstrating FOUC in next.js
JavaScript
1
star
34

gematria.js

Cross-Cultural Gematria in JavaScript
TypeScript
1
star
35

js2tree.js

Convert JavaScript to Link Text
JavaScript
1
star
36

clear-diacritics.js

Clear diacritics to make text more suitable for a URL string
JavaScript
1
star
37

bit.js

Bit Manipulation Experiments
JavaScript
1
star
38

hash

Hashing Function Theory
JavaScript
1
star
39

api.json

API docs in JSON form
1
star
40

programming-language-cheat-sheet

How to do stuff in a programming language with as little learning as possible
1
star
41

functions.js

Collection of functions
JavaScript
1
star
42

language-detector.js

Detect what kind of language some text might be.
JavaScript
1
star
43

awesome-api

Curated List of APIs, because most of the API lists out there are junk
1
star
44

math-notation

Math Notation Collection
Jupyter Notebook
1
star
45

tl-bplus-tree.js

4 B+ Tree Implementations from trincot on StackOverflow
JavaScript
1
star
46

example-c-library

Complicated nested-folder-structure C library example for SO
C
1
star
47

rel.js

Relational Algebra Data Models Experiment in JavaScript
1
star
48

awesome-abstractions

A curated list of awesome API abstractions across languages
1
star
49

mac-keyboard.js

Mac Keyboard .keylayout File Generator
JavaScript
1
star
50

text.js

Language Text Transformation
JavaScript
1
star
51

md2docx.js

Markdown to DOCX in TypeScript
TypeScript
1
star