{
  // Default options
  'functions': true,
  'classes': true
}

{{#items}}
  @{{options.target}}-{{name}}: {{px.x}} {{px.y}} {{px.offset_x}} {{px.offset_y}} {{px.width}} {{px.height}} {{px.total_width}} {{px.total_height}} '{{{escaped_image}}}';
{{/items}}

{{#options.functions}}
  .sprite-width(@sprite) {
    width: ~`"@{sprite}".split(', ')[4]`;
  }

  .sprite-height(@sprite) {
    height: ~`"@{sprite}".split(', ')[5]`;
  }

  .sprite-position(@sprite) {
    @sprite-offset-x: ~`"@{sprite}".split(', ')[2]`;
    @sprite-offset-y: ~`"@{sprite}".split(', ')[3]`;
    background-position: @sprite-offset-x  @sprite-offset-y;
  }

  .sprite-image(@sprite) {
    {{! DEV: We perform a slice due to a trailing brace from string coercion of arrays }}
    @sprite-image: ~`"@{sprite}".split(', ')[8].slice(1, -2)`;
    background-image: url(@sprite-image);
  }

  .sprite(@sprite) {
    .sprite-image(@sprite);
    .sprite-position(@sprite);
    .sprite-width(@sprite);
    .sprite-height(@sprite);
  }
{{/options.functions}}

{{#options.classes}}
  {{#items}}
  .{{options.target}}-{{name}} {
    .sprite(@{{options.target}}-{{name}});
  }
  {{/items}}
{{/options.classes}}