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

@curiostack/nunjucks-extended

v1.0.0

Published

Curiostack extended version of nunjucks

Downloads

5

Readme

@curiostack/nunjucks-extended

An extended version of mozilla/nunjucks, with some extra convenience methods added on.

Usage

Import

The default option for importing is, the extended version of nunjucks Environment. Also Template, Loader, FileSystemLoader, WebLoader are available as non-default imports.

The import can be done in other curiostack yarn modules using the package name @curiostack/nunjucks-extended. It can work outside of curiostack as well, but your project must use typescript and be configured to compile this module.

import Environment, { Template, Loader, FileSystemLoader, WebLoader } from '@curiostack/nunjucks-extended';
// no need for require('nunjucks')

const env = new Environment();
// alternatives:
// const env = new Environment(new FileSystemLoader('/some/path'));
// const template = new Template('Hello {{ username }}', env);
// etc ...

API

The underlying API of each available nunjucks class is unchanged, so you can use the official docs for reference.

Environment

The nunjucks Environment class still functions as before. It just has been extended with some extra functionality.

import Environment from '@curiostack/nunjucks-extended';

const env = new Environment();
// ...

const result = env.render('template.njk');
// `result` is rendered with all of the base `nunjucks.Environment` logic
//   as well as the extended `curiostack` `Environment` functionality

Filters

The Environment object is extended with some extra convenience filters.

allAfterLine(lineMatcher: string, [exactMatch: boolean])

Scans the content of a multiline text and returns all the text after a line matching a regex expression.

If exactMatch is true, a line will be matched only when all of it matches the regex expression exactly.

input
{{ 'foo\n_@@_\nbar\nbaz' | allAfterLine('@') }}
{{ 'foo\n_@@_\nbar\nbaz' | allAfterLine('^_@@_$', true) }}
output
bar\nbaz
bar\nbaz

allBetweenLines(lineMatcher: string, [exactMatch: boolean])

Scans the content of a multiline text and returns all the text between two lines matching a regex expression.

If exactMatch is true, a line will be matched only when all of it matches the regex expression exactly.

If multiple blocks are found, all of them are joined together with a newline (\n) and returned as one block.

input
{{ 'foo\n_@@_\nbar\nbaz\n_@@_\nfoz' | allBetweenLines('@') }}
{{ 'foo\n_@@_\nbar\nbaz\n_@@_\nfoz' | allBetweenLines('^_@@_$', true) }}
{{ 'foo\n_@@_\nbar\nbaz\n_@@_\nfoz\n_@@_\nbop\n_@@_\nbap' | allBetweenLines('@') }}
output
bar\nbaz
bar\nbaz
bar\nbaz\nbop

Testing

jest is used for tests, and can be run with the following command.

./gradlew :common:web:nunjucks:yarn_test

Style

eslint with curiostack rules is used for controlling code style, and can be run with the following command.

./gradlew :common:web:nunjucks:yarn_lint
# output linting problems

./gradlew :common:web:nunjucks:yarn_lint_--fix
# automatically fix linting problems, and output problems which can't be auto-fixed