transform.Unmarshal should allow to specify a format (original) (raw)
Currently transform.Unmarshal allows to either provide a string or a resource. In the first case the format is inferred from the string, but it may be more useful to be able to specify it. For example json has precedence over yaml, so something like {p: [a, b]} would fail since it’s not valid json but is valid yaml. My current solution for this is to make a temporary resource with a .yaml extension and pass that to Unmarshal. This solution is needlessly complicated and more expensive.
I propose to add a "format" key to the option dict so that it can be used like this:
{{ $opts := dict "format" "yaml" }}
{{ <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>p</mi><mi>a</mi><mi>r</mi><mi>s</mi><mi>e</mi><mi>d</mi><mo>:</mo><mo>=</mo><mi mathvariant="normal">"</mi><mrow><mi>p</mi><mo>:</mo><mo stretchy="false">[</mo><mi>a</mi><mo separator="true">,</mo><mi>b</mi><mo stretchy="false">]</mo></mrow><mtext>”</mtext><mi mathvariant="normal">∣</mi><mi>u</mi><mi>n</mi><mi>m</mi><mi>a</mi><mi>r</mi><mi>s</mi><mi>h</mi><mi>a</mi><mi>l</mi></mrow><annotation encoding="application/x-tex">parsed := "{p: [a, b]}” | unmarshal </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8889em;vertical-align:-0.1944em;"></span><span class="mord mathnormal">p</span><span class="mord mathnormal">a</span><span class="mord mathnormal">rse</span><span class="mord mathnormal">d</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">:=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">"</span><span class="mord"><span class="mord mathnormal">p</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">:</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mopen">[</span><span class="mord mathnormal">a</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal">b</span><span class="mclose">]</span></span><span class="mord">”∣</span><span class="mord mathnormal">u</span><span class="mord mathnormal">nma</span><span class="mord mathnormal">rs</span><span class="mord mathnormal">ha</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span></span></span></span>opts }}