mirror of
https://github.com/kovetskiy/mark.git
synced 2025-04-24 05:42:40 +08:00
introduce inline templates (#198)
This commit is contained in:
parent
4c812741ac
commit
9ec7728d08
28
README.md
28
README.md
@ -111,6 +111,34 @@ for example:
|
||||
Ticket: ${0} -->
|
||||
```
|
||||
|
||||
Macros can also use inline templates.
|
||||
Inline templates are templates where the template content
|
||||
is described in the `<yaml-data>`.
|
||||
The `Template` value starts with a `#`, followed by the key
|
||||
used in the `<yaml-data>`.
|
||||
The key's value must be a string which defines the template's content.
|
||||
|
||||
```markdown
|
||||
<!-- Macro: <tblbox\s+(.*?)\s*>
|
||||
Template: #inline
|
||||
title: ${1}
|
||||
inline: |
|
||||
<table>
|
||||
<thead><tr><th>{{ .title }}</th></tr></thead>
|
||||
<tbody><tr><td>
|
||||
-->
|
||||
<!-- Macro: </tblbox>
|
||||
Template: #also_inline
|
||||
also_inline: |
|
||||
</td></tr></tbody></table>
|
||||
-->
|
||||
<tblbox with a title>
|
||||
and some
|
||||
content
|
||||
</tblbox>
|
||||
```
|
||||
|
||||
|
||||
### Code Blocks
|
||||
|
||||
If you have long code blocks, you can make them collapsible with the [Code Block Macro]:
|
||||
|
@ -134,13 +134,36 @@ func ExtractMacros(
|
||||
macro Macro
|
||||
)
|
||||
|
||||
macro.Template, err = includes.LoadTemplate(base, template, templates)
|
||||
if err != nil {
|
||||
err = karma.Format(err, "unable to load template")
|
||||
if strings.HasPrefix(template, "#") {
|
||||
cfg := map[string]interface{}{}
|
||||
|
||||
return nil
|
||||
err = yaml.Unmarshal([]byte(config), &cfg)
|
||||
if err != nil {
|
||||
err = karma.Format(
|
||||
err,
|
||||
"unable to unmarshal macros config template",
|
||||
)
|
||||
return nil
|
||||
}
|
||||
body, _ := cfg[template[1:]].(string)
|
||||
macro.Template, err = templates.New(template).Parse(body)
|
||||
if err != nil {
|
||||
err = karma.Format(
|
||||
err,
|
||||
"unable to parse template",
|
||||
)
|
||||
return nil
|
||||
}
|
||||
} else {
|
||||
macro.Template, err = includes.LoadTemplate(base, template, templates)
|
||||
if err != nil {
|
||||
err = karma.Format(err, "unable to load template")
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
facts := karma.
|
||||
Describe("template", template).
|
||||
Describe("expr", expr)
|
||||
|
Loading…
x
Reference in New Issue
Block a user