func parseTag(source []byte) (tag interface{}) { defer func() { if e := recover(); e != nil { v := e.(*err.OpenErr) v.Text += "err parse tpl: " + string(source) err.Panic(v) } }() list := parser.SplitWord(source, 32) switch list[0] { // основные теги case "!": case "inc": tag = parseTagInclude(list[1:]) case "i18n": tag = parseTagi18n(list[1:]) case "for": tag = parseTagFor(list[1:]) default: // переменная контекста // либо функция (расширенные теги) slice := []byte(list[0]) if bytes.HasPrefix(slice, []byte(".")) { tag = tTagVar(list[0][1:]) } else if bytes.HasPrefix(slice, []byte("@.")) { tag = tTagVarHtmlEsc(list[0][2:]) } else { tag = parseTagFunc(list) } } return }
func parseTag(source []byte) interface{} { defer func() { if e := recover(); e != nil { panic(err.New("err parse i18n: "+string(source), 0)) } }() list := parser.SplitWord(source, 32) switch list[0] { case "plural": return parseTagPlural(list[1:]) case "f": return parseTagFunc(list[1:]) default: return parseTagVar(list) } }