npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

nalgene

v0.2.5

Published

Nalgene is a natural language generation language.

Downloads

42

Readme

nalgene

Nalgene is a natural language generation language.

Overview

Nalgene is used to generate text from an object of values. Generation requires two things: a grammar and a phrase tree. The grammar defines how phrases join together.

Here's a very simple grammar that demonstrates the three main features of Nalgene — %phrases, ~synonyms, and $values, as well as optional? tokens:

%greeting
    ~hello $name

~hello
    hello
    hi
    hey there?

Given values {name: "Fred"} this grammar might expand to:

  • "hello Fred"
  • "hey Fred"
  • "hey there Fred"

Repetition

With an array of values to expand, e.g. a %greeting with $names = ["Joe", "Fred", "Sam"], with expected output "hello Joe and Fred and Sam", use the $value:joiner syntax:

%greeting
    hello $names:and

If your joiner is more than two words, wrap it in parentheses like so:

%greeting
    hello $names:(and also)

If you want a different joiner for the last word, as is common in English (commas until an ending "and"), use the secondary joiner syntax. This will output "hello Joe, Fred and Sam".

%greeting
    hello $names:,:and

To keep the first joiner between the last two values, e.g. to implement an Oxford comma ("hello Joe, Fred, and Sam"), replace the second : with ;.

%greeting
    hello $names:,;and

An alternative to the above would be $names:,:(, and) but that creates an awkward situation if there are only two values: "hello Joe, and Sam".