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

xmlpug

v3.0.0

Published

Transform XML documents with Pug templates

Downloads

11

Readme

Use Pug to transform XML, instead of XSLT. Why? At my office, we call the XSLT book the Token of Pain. Whoever touched the XSLT code last has it on their desk, and is responsible for being the current expert. That person hates their life until someone else needs the book badly enough to take on the pain.

Also, you can't easily generate HTML5 with XSLT because of the doctype and tags like <meta> that don't get closed.

Installation

npm install -g xmlpug

Example

Write templates like this:

doctype html
html
  head
    meta(charset='utf-8')
    meta(name='author', content=$$('front/author/@fullname'))
    title= $('front/title/text()')

where the $ and $$ functions perform xpath queries in a source XML document. $ returns the first match, or null. $$ always returns an array of all of the matches. So given the following XML input:

<rfc>
  <front>
    <title abbrev="HTML RFC">HyperText Markup Language Request For Comments Format</title>
    <author initials="J." surname="Hildebrand" fullname="Joe Hildebrand" role="editor"/>
    <author initials="H." surname="Flanagan" fullname="Heather Flanagan" role="editor"/>
  </front>
</rfc>

the above template would generate:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="author" content="Joe Hildebrand,Heather Flanagan">
    <title>HyperText Markup Language Request For Comments Format</title>
  </head>
</html>

Pug Extensions

The added JavaScript features available in the template are:

  • $(string, element): perform an XPath query against the input document, returning the first match. Text nodes are converted to strings, and attribute nodes are converted to the string versions of their values. If no matches are found, returns null. If an element is provided, search within that element, otherwise search from the root of the input document.
  • $$(string, element): perform an XPath query against the input document, returning all of the matches as an array. Text nodes are converted to strings, and attribute nodes are converted to the string versions of their values. If no matches are found, returns []. If an element is provided, search within that element, otherwise search from the root of the input document.
  • $att(element, string): gets the text value of an attribute from an element with the name specified in the string. Returns null on errors.
  • $source: a Buffer containing the original XML source before parsing
  • require(string): wrapper around normal node require allowing it to work in a template
  • version: the name and version number of xmlpug

Command Line

Usage: xmlpug [options] <template> <input>

Options:

  -h, --help           output usage information
  -V, --version        output the version number
  -d, --debug          Add Pug debug information
  -o, --output [file]  Output file
  -p, --pretty         Pretty print

APIs

Docs coming soon.

Coverage Status Build Status