kuma

Форк
0
/
render.go 
37 строк · 700.0 Байт
1
package template
2

3
import (
4
	"strings"
5

6
	"github.com/hoisie/mustache"
7
)
8

9
type contextMap map[string]interface{}
10

11
func (cm contextMap) merge(other contextMap) {
12
	for k, v := range other {
13
		cm[k] = v
14
	}
15
}
16

17
func newContextMap(key, value string) contextMap {
18
	if !strings.Contains(key, ".") {
19
		return map[string]interface{}{
20
			key: value,
21
		}
22
	}
23

24
	parts := strings.SplitAfterN(key, ".", 2)
25
	return map[string]interface{}{
26
		parts[0][:len(parts[0])-1]: newContextMap(parts[1], value),
27
	}
28
}
29

30
func Render(template string, values map[string]string) []byte {
31
	ctx := contextMap{}
32
	for k, v := range values {
33
		ctx.merge(newContextMap(k, v))
34
	}
35
	data := mustache.Render(template, ctx)
36
	return []byte(data)
37
}
38

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.