This is a proposal to extend both our text rendering pipeline and our
markdown-parsing capabilities to support more fine-grained styling by
leveraging a subset of the extended markdown definition of "custom
attributes" (for example, see
[markdown-it-attrs](https://www.npmjs.com/package/markdown-it-attrs) as
an exemplary implementation).
On the markdown side, the syntax will look like this:
```markdown
[This is a custom class]{.my-custom-class}
This word will be [red]{.red} and this one will be [blue]{.blue}.
```
Note that the current implementation only supports specifying the class
name and will skip other possible permutations.
On the Flame side, we add a new `customStyles` map to the
`DocumentStyle` class, allowing users to provide as many styles as
desired.
Example:


Currently, users have to hijack the existing syntaxes for the desired
styles; with the addition of code and strike-through recently I have
doubled the possibilities for custom styles, but the solution still
remained a hack. Also I now need more styles, and the only way forward
is to support arbitrary styling.
While we could consider supporting other attributes, such as id, css
styling, etc, within the attribute syntax, the class name is the most
flexible and versatile option, and it already solves all use cases, as
class names can be used as ids (if desired) and can be used to apply the
styling indirectly. I don't see any immediate advantage to supporting
more complex constructs within the attributes block (though of course we
can iterate as needed).
Add support for strike-through text for flame_markdown, if enabled by
the user.
Basically parses the `del` HTMl tag and maps it to a new inline text
renderer in Flame's text rendering pipeline.
The style can be controlled with a new property if desired.
In order to parse `~~`-wrapped text into the new node element, the
underlying markdown parser must have the strikethrough option enabled
(or an equivalent custom option), which can be controlled by the user if
providing their own document.
Add a bridge package flame_markdown to the markdown package to allow for easily creating TextElementComponents (or TextNodes in general) using the markdown syntax.
This will vastly facilitate working with rich text, specially for simple formatting like bold and italics, without requiring the user to manually specify the node tree structure.