本文整理匯總了Golang中github.com/get3w/get3w/engines/liquid/core.Parser.ToMarkup方法的典型用法代碼示例。如果您正苦於以下問題:Golang Parser.ToMarkup方法的具體用法?Golang Parser.ToMarkup怎麽用?Golang Parser.ToMarkup使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/get3w/get3w/engines/liquid/core.Parser
的用法示例。
在下文中一共展示了Parser.ToMarkup方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: extractTokens
func extractTokens(parser *core.Parser, container core.Tag, config *core.Configuration) error {
stack := []core.Tag{container}
preserveWhiteSpace := config.GetPreserveWhitespace()
for parser.HasMore() {
pre, markupType := parser.ToMarkup(preserveWhiteSpace)
if len(pre) > 0 {
container.AddCode(newLiteral(pre))
}
if markupType == core.OutputMarkup {
code, err := newOutput(parser)
if err != nil {
return err
}
if code != nil {
container.AddCode(code)
}
} else if markupType == core.TagMarkup {
tag, err := newTag(parser, config)
if err != nil {
return err
}
switch tag.Type() {
case core.ContainerTag, core.LoopTag:
container.AddCode(tag)
container = tag
stack = append(stack, container)
case core.EndTag:
l := len(stack) - 1
container = stack[l]
if tag.Name() != container.Name() {
return parser.Error(fmt.Sprintf("end tag \"end%s\" cannot terminate %q", tag.Name(), container.Name()))
}
stack = stack[0:l]
container = stack[l-1]
parser.SkipPastTag()
case core.SiblingTag:
if err := stack[len(stack)-1].AddSibling(tag); err != nil {
return err
}
container = tag
case core.StandaloneTag:
container.AddCode(tag)
}
} else {
break
}
}
return nil
}
示例2: RawFactory
// Special handling to just quickly skip over it all
func RawFactory(p *core.Parser, config *core.Configuration) (core.Tag, error) {
p.SkipPastTag()
start := p.Position
end := start
for {
_, markupType := p.ToMarkup(false)
if markupType == core.TagMarkup {
//tentative end is before the start of the endraw tag
end = p.Position
p.ForwardBy(2) // skip {%
if name := p.ReadName(); name == "endraw" {
p.SkipPastTag()
break
}
} else if markupType == core.OutputMarkup {
p.ForwardBy(2) // skip it
} else {
break
}
}
return &Raw{p.Data[start:end]}, nil
}
示例3: HighlightFactory
// Special handling to just quickly skip over it all
func HighlightFactory(p *core.Parser, config *core.Configuration) (core.Tag, error) {
openTags := 1
for {
_, markupType := p.ToMarkup(false)
if markupType == core.TagMarkup {
p.ForwardBy(2) // skip {%
if name := p.ReadName(); name == "highlight" {
openTags++
} else if name == "endhighlight" {
openTags--
if openTags == 0 {
p.SkipPastTag()
break
}
}
} else if markupType == core.OutputMarkup {
p.SkipPastTag()
} else {
break
}
}
return highlight, nil
}