GithubHelp home page GithubHelp logo

0e9b061f / heretag Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 52 KB

A heredoc implementation for JS, using template literals

Home Page: https://downtranslated.com

License: MIT License

JavaScript 100.00%
javascript heredoc nodejs npm-package

heretag's Introduction

heretag v1.1.8

Version License Maintenance
npm

A heredoc implementation using template literals.

Example

Consider phlebas.js:

// phlebas.js

const here = require('heretag')

const phlebas = here(`
            IV. Death by Water

    Phlebas the Phoenician, a fortnight dead,
    Forgot the cry of gulls, and the deep sea swell
    And the profit and loss.
                          A current under sea
    Picked his bones in whispers. As he rose and fell
    He passed the stages of his age and youth
    Entering the whirlpool.
                          Gentile or Jew
    O you who turn the wheel and look to windward,
    Consider Phlebas, who was once handsome and tall as you.
`)

console.log(phlebas)

Running this script will give the following result:

nn@Arkady:~$ node phlebas.js
        IV. Death by Water

Phlebas the Phoenician, a fortnight dead,
Forgot the cry of gulls, and the deep sea swell
And the profit and loss.
                      A current under sea
Picked his bones in whispers. As he rose and fell
He passed the stages of his age and youth
Entering the whirlpool.
                      Gentile or Jew
O you who turn the wheel and look to windward,
Consider Phlebas, who was once handsome and tall as you.

nn@Arkady:~$ 

Preserving Some Indentation

Suppose you want to preserve some level of indentation. To do so, specify a number as either the first or second argument to here. The given number of spaces will be preserved:

// preserve.js

const here = require('heretag')

const metasyntatic = here(4, `
            foo
              bar
                baz
              bat
            quz
`)

console.log(metasyntatic)

Four spaces of indentation will be preserved:

nn@Arkady:~$ node preserve.js
    foo
      bar
        baz
      bat
    quz

nn@Arkady:~$ 

Tagged Templates

here is also usable as a template tag:

here`
  foo
    bar
    baz
`

In this form, space can be preserved like this:

here(2)`
  foo
    bar
    baz
`

Newlines in Interpolated Variables

Most importantly, the tagged form of here handles newlines in interpolated variables gracefully. For example:

// inter-a.js

const here = require('heretag')

const example = "a\n  b\nc\n"
const inter = here`
  foo
    bar
    ${example}
  baz
`
console.log(inter)

Will produce:

nn@Arkady:~$ node inter-a.js
foo
  bar
  a
    b
  c
bat

nn@Arkady:~$ 

Conversely, with the standard form of here:

// inter-b.js

const here = require('heretag')

const example = "a\n  b\nc\n"
const inter = here(`
  foo
    bar
    ${example}
  baz
`)
console.log(inter)

Will produce mangled output:

nn@Arkady:~$ node inter-b.js
foo
  bar
  a
  b
c
bat

nn@Arkady:~$ 

Installation

npm install heretag

License

Copyright 2020-2024 0E9B061F
Available under the terms of the MIT License.

heretag's People

Contributors

0e9b061f avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.