1.0.1 • Published 8 years ago

strands v1.0.1

Weekly downloads
10
License
Apache-2.0
Repository
github
Last release
8 years ago

Strands

NPM version NPM downloads Build status Test coverage

Simple, light-weight string building for JavaScript.

Installation

npm install strands --save

Usage

String Building

For simple string building.

strand (separator = '', prefix = '', suffix = '')

import { strand } from 'strands'

const query = strand(' ', '', ';')

query('SELECT *')
query('FROM', tableName)
query('WHERE count > 10')

console.log(query) //=> "SELECT * FROM test WHERE count > 10;"

Template Building

The template class built on top of a strand.

new Strands ({ indent = '', eol = '\n' })

import { Strands } from 'strands'

const html = new Strands()
const head = new Strands({ indent: '  ' })
const body = new Strands({ indent: '  ' })

head.line('<meta charset="utf8">')

body.line('<h1></h1>')
body.return()
body.line('<div></div>')

html.line('<!doctype html>')
html.line('<html>')
html.line('<head>')
html.append(head)
html.line('</head>')
html.line('<body>')
html.append(body)
html.line('</body>')
html.line('</html>')

console.log(html.toString())
//=> "<!doctype html>\n<html>\n<head>\n  <meta charset="utf8">\n</head>\n<body>\n  <h1></h1>\n\n  <div></div>\n</body>\n</html>\n"

Template Wrapper

Simple wrapper function for creating a "template-like function".

wrap (fn: (t: Strands, data: T) => any, options?: Options): (data: T) => string

import { wrap } from 'strands'

const doc = wrap(function (t, data) {
  t.line('### Authors')
  t.line()

  data.authors.forEach(function (author) {
    t.line('* ', author.name)
  })
})

console.log(doc({ authors: [{ name: 'Blake' }, { name: 'John' }] }))
//=> "### Authors\n\n* Blake\n* John\n"

Useful Libraries

License

Apache License 2.0