1.0.2 • Published 9 years ago

swig-traverse v1.0.2

Weekly downloads
4
License
MIT
Repository
github
Last release
9 years ago

swig-traverse

A Swig plugin providing tags to traverse tree structures.

swig-traverse assumes tree nodes to be objects with a children property that is either undefined or an array of child nodes.

var tree = {
  // ...
  children: [
  	{
  	  // ...
  	  children: [ 
  	  	// ...
  	  ]
  	}
  ]
};

Install

npm i swig-traverse --save-dev

Usage

var swig = require('swig'),
    swigTraverse = require('swig-traverse');

swigTraverse( swig );
{% traverse node in tree -%}
  <!-- previsited nodes bound to node var -->

{% postvisit -%}
  <!-- postvisited nodes bound to node var -->

{% endtraverse -%}

Note. {% postvisit %} section is optional:

{% traverse node in tree -%}
  <!-- previsited nodes bound to node var -->

{% endtraverse -%}

You can pass array as tree, in that case it will considered to be a "children" array. Useful to exclude root from traversing:

{% traverse child in node.children -%}
  <!-- do something with child node -->

{% endtraverse -%}

Example

Description:

{{ node.description }}

Submodules:

<ul>
  {% traverse child in node.children -%}
    {% if child.type == 'module' %}
      <li><a href="/{{child.path}}.html">{{child.title}}</a>
        <ul>
    {% endif -%}
  {% postvisit -%}
    {% if child.type == 'module' %}
        </ul>
      </li>
    {% endif -%}
  {% endtraverse -%}
</ul>

License

Released under the MIT license.