From b7709aa344b3b871731674ed3a43eba0eb057297 Mon Sep 17 00:00:00 2001 From: Stanislav Seletskiy Date: Mon, 13 Apr 2020 16:56:06 +0300 Subject: [PATCH] #20: fix duplicated macro expansion --- pkg/mark/macro/macro.go | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/pkg/mark/macro/macro.go b/pkg/mark/macro/macro.go index cc525507..c3a74217 100644 --- a/pkg/mark/macro/macro.go +++ b/pkg/mark/macro/macro.go @@ -22,13 +22,13 @@ var reMacroDirective = regexp.MustCompile( `(?s)` + // dot capture newlines /**/ ``, + /* */ `(?P\n.*?)?-->`, ) type Macro struct { Regexp *regexp.Regexp Template *template.Template - Config map[string]interface{} + Config string } func (macro *Macro) Apply( @@ -39,14 +39,22 @@ func (macro *Macro) Apply( content = macro.Regexp.ReplaceAllFunc( content, func(match []byte) []byte { - config := macro.configure( - macro.Config, - macro.Regexp.FindSubmatch(match), - ) + config := map[string]interface{}{} + + err = yaml.Unmarshal([]byte(macro.Config), &config) + if err != nil { + err = karma.Format( + err, + "unable to unmarshal macros config template", + ) + } var buffer bytes.Buffer - err = macro.Template.Execute(&buffer, config) + err = macro.Template.Execute(&buffer, macro.configure( + config, + macro.Regexp.FindSubmatch(match), + )) if err != nil { err = karma.Format( err, @@ -144,17 +152,7 @@ func ExtractMacros( return nil } - err = yaml.Unmarshal([]byte(config), ¯o.Config) - if err != nil { - err = facts. - Describe("config", string(config)). - Format( - err, - "unable to unmarshal template data config", - ) - - return nil - } + macro.Config = config log.Tracef( facts.Describe("config", macro.Config),