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} -->
|
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
|
### Code Blocks
|
||||||
|
|
||||||
If you have long code blocks, you can make them collapsible with the [Code Block Macro]:
|
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 Macro
|
||||||
)
|
)
|
||||||
|
|
||||||
macro.Template, err = includes.LoadTemplate(base, template, templates)
|
if strings.HasPrefix(template, "#") {
|
||||||
if err != nil {
|
cfg := map[string]interface{}{}
|
||||||
err = karma.Format(err, "unable to load template")
|
|
||||||
|
|
||||||
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.
|
facts := karma.
|
||||||
Describe("template", template).
|
Describe("template", template).
|
||||||
Describe("expr", expr)
|
Describe("expr", expr)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user