{%- comment -%}

log

sends values to the browser's javascript console via console.log|info|warn|error() or console.table()

params:

lvl='<log|info|warn|error>' (optional, defaults to 'log'; message level)
msg='<string>' (optional; message to log)
table=[..] (optional; object to be logged as a table)
values=[..] (optional; array of values to be logged individually at message level)
keys=[..] (optional; array of labels to be combined with values and logged as a table)

{%- endcomment -%}

{%- comment -%}push prior state{%- endcomment -%} {%- assign __default_level = default_level -%} {%- assign __valid_levels = valid_levels -%} {%- assign __lvl = lvl -%} {%- assign __n = n -%} {%- assign __v = v -%}

{%- assign default_level = 'log' -%} {%- assign valid_levels = 'log|info|warn|error' | split: '|' -%} {%- assign lvl = default_level -%}{%- if valid_levels contains include.lvl %}{% assign lvl = include.lvl %}{% endif -%}

<script> $(function() {

{% if include.msg -%}
console.{{ lvl }}('{{ include.msg | xml_escape }}');
{% endif -%}

{%- if include.values -%}
{%- if include.keys and include.values.size == include.keys.size -%}

{%- assign n = include.keys.size -%}
let obj = {
{%- for i in (0..n) -%}
  {% assign v = '""' %}{% unless include.values[i] == '' %}{% capture v %}{{ include.values[i] | jsonify }}{% endcapture %}{% endunless %}
  "{{ include.keys[i] }}" : {{ v }}
{%- unless forloop.last -%},{%- endunless -%}
{%- endfor %}
};
console.table(obj);

{%- else -%}

{% for v in include.values -%}
console.{{ lvl }}({{ v | jsonify }});
{% endfor -%}

{%- endif -%}
{%- endif -%}

{%- if include.table %}
console.table({{ include.table | jsonify }});
{%- endif %}

}); </script>

{%- comment -%}pop prior state{%- endcomment -%} {%- assign v = __v -%} {%- assign n = __n -%} {%- assign lvl = __lvl -%} {%- assign valid_levels = __valid_levels -%} {%- assign default_level = __default_level -%}