Mustache-Spec is a project mainly written in Ruby, it's free.
A Concrete Specification for Mustache (Interpreters)
This repository acts as an attempt at specifying both standard- and edge-case behavior for libraries parsing Mustache (or a superset thereof). Early development will focus on describing idealized output, with later work being done to normalize expectations. It is not expected that any implementation support any draft prior to v1.0.0.
Specification files beginning with a tilde (~) describe optional modules. At present, the only module being described as optional is regarding support for lambdas. As a guideline, a module may be a candidate for optionality when:
As an example, the lambda module is primarily concerned with the handling of a particular data type (code). This is a type of data that may be difficult to support in some languages, and users of those languages will not see the lack as an 'inconsistency' between implementations.
Support for specific pragmas or syntax extensions, however, are best managed outside this core specification, as adjunct specifications.
Implementors are strongly encouraged to support any and all modules they are reasonably capable of supporting.
JSON versions of the YML specs were created using a simple ruby script:
require 'json' # Make sure you're using SYCK
require 'yaml'
Dir.glob("Mustache-Spec/specs/*").collect{|f| ff=f.gsub("yml","json"); File.open(ff,'w'){|x| x << YAML.parse(File.open(f)).transform.to_json}}
Which has been included as a Rake task:
rake build:json