# `smi-precompile`

Precompiles a liquid style template into smi function generator.
Precompile returns code as a string

> Precompilers for smi-core

## Usage

```js
resultCode = precompile(source, partials, locales, settings, (defaultLocale = 'en'));
```

Example

```js
const precompile = require('@ordergroove/smi-precompile');

const result = precompile(
  `
  {% set some_value = 'yes' %}
  {% if some_value == ('some_setting' | setting) %} 
    {% include 'some-include' %}
  {% endif %}`,
  {
    'some-include.liquid': `{{ 'my_custom_text' | t }}`
  },
  [
    {
      locale: 'en',
      translations: { my_custom_text: 'Hello world' }
    },
    {
      locale: 'es',
      translations: { my_custom_text: 'Hola mundo' }
    }
  ],
  {
    some_setting: 'yes'
  }
);
```

** outputs **

```js
function template(html, repeat, unsafeHTML) {
  function template_en({}, _F) {
    var some_value;
    return html`
      ${(() => {
        some_value = 'yes';
      })()} ${some_value == 'yes'
        ? html`
            Hello world
          `
        : ''}
    `;
  }

  function template_es({}, _F) {
    var some_value;
    return html`
      ${(() => {
        some_value = 'yes';
      })()} ${some_value == 'yes'
        ? html`
            Hola mundo
          `
        : ''}
    `;
  }

  return {
    en: template_en,
    es: template_es
  };
}
```
