29 lines
515 B
Go
29 lines
515 B
Go
package pkg
|
|
|
|
import (
|
|
"io"
|
|
|
|
"github.com/antchfx/xmlquery"
|
|
)
|
|
|
|
func Fill(svg io.Reader, data map[string]xmlquery.Node) (filledSvg string, err error) {
|
|
doc, err := xmlquery.Parse(svg)
|
|
defer func() { filledSvg = doc.OutputXML(true) }()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
for key, value := range data {
|
|
nodes := xmlquery.Find(doc, "//*/g[@inkscape:label='fill']/*[@inkscape:label='"+key+"']")
|
|
if err != nil {
|
|
return filledSvg, err
|
|
}
|
|
|
|
for _, node := range nodes {
|
|
node.FirstChild = &value
|
|
}
|
|
}
|
|
|
|
return
|
|
}
|