1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/GoKeep-gktemplate

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
tag_range.go 1.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
llgoer Отправлено 02.09.2019 03:59 0d04247
// Copyright 2019 The GoKeep Authors. All rights reserved.
// license that can be found in the LICENSE file.
// field标签函数
package gktemplate
import (
"fmt"
)
// 解析range标签内容
func TagRange(tag *GKTag, data *D) string {
innertText := string(tag.GetInnerText())
gktp, err := parseTemplate(&innertText, "field", "[", "]", "")
if err != nil {
return ""
}
name := tag.GetAttribute("name")
items, ok := (*data)[name]
if !ok {
return ""
}
var resultString string
var nextTagEnd int
for _, item := range items.([]D) {
nextTagEnd = 0
for i := 0; i < gktp.Count; i++ {
rs, ok := item[gktp.CTags[i].TagName]
if ok {
resultString += string(gktp.SourceString[nextTagEnd : nextTagEnd+gktp.CTags[i].StartPos-nextTagEnd])
switch v := rs.(type) {
case string:
resultString += v
case int:
resultString += fmt.Sprintf("%d", v)
default:
resultString += ""
}
nextTagEnd = gktp.CTags[i].EndPos
}
}
slen := len(gktp.SourceString)
if slen > nextTagEnd {
resultString += string(gktp.SourceString[nextTagEnd:slen])
}
}
return resultString
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/GoKeep-gktemplate.git
git@api.gitlife.ru:oschina-mirror/GoKeep-gktemplate.git
oschina-mirror
GoKeep-gktemplate
GoKeep-gktemplate
master