BPJ <bpj-J3H7GcXPSITLoDKTGw+V6w@public.gmane.org> writes:
> Den mån 19 sep. 2022 14:51 Albert Krewinkel <
>> albert+pandoc-9EawChwDxG8hFhg+JK9F0w@public.gmane.org> skrev:
>>
>> Extensions have to be passed as part of the format string, e.g.,
>>
>> pandoc.read(source, 'markdown-tex_math_dollars')
>>
>> I'm not entirely happy with this, as it means that any extensions
>> passed via a ReaderOptions object will be ignored.
>>
>> -- this may seem like it should disable all extensions,
>> -- but the ReaderOptions `extensions` field is ignored.
>> -- The default 'markdown' extensions will be used instead.
>> pandoc.read(src, 'markdown', {extensions = {}})
>>
>> Ideas to improve this would be most welcome.
>
> I would just change it to not ignore reader options, and throw an
> error if the format string and the reader options contradict each
> other (except for empty table = no extensions and no extensions in
> string = default extensions). And better hurry before someone starts
> to rely on reader options being ignored! :-)
I believe that this has already become the expected behavior, so I'd be
very hesitant to break it. How about this approach: The format specifier
can currently only be a string. We change this to accept either a
string, or a table with the extensions being given in separate fields.
E.g.
-- extensions relative to default for format
{ format = 'markdown',
, disable = {'markdown_in_html_blocks'},
, enable = {'emoji'},
}
I like this!
or
-- absolute set of extensions
{ format = 'docx',
, extensions = {'auto_identifiers', 'styles', 'citations'}
}
This `extensions` field would be identical to the `enable` field, wouldn't it, or would it mean that all default extensions not explicitly mentioned in it would be disabled? And what would happen if someone uses it together with `disable` and/or `enable`; which would be ignored, or would it be an error condition?
If the function is called with either a string or a table that has
explicit info on extensions, then the ReaderOptions extensions are
overridden. If the table has no info about extensions, then we use the
ReaderOptions.
If the format can be a table as described I think it is better to always ignore the format/extension info in the ReaderOptions — and say so clearly in the documentation!
It might still be a little confusing, as
pandoc.read(src, 'markdown', opts) -- default Markdown extensions
will behave differently than
pandoc.read(src, {format: 'markdown'}, opts) -- extensions in opts
Extensions are closer to formats than to reader options, conceptually.
It seems sensible to tie them to formats.
Agreed.
But maybe there is a better
way?
I think this would be fine.
Also I assume that `pandoc.write()` would behave analogously?