本文整理汇总了Golang中github.com/karlseguin/gerb/core.Parser.ReadAssignment方法的典型用法代码示例。如果您正苦于以下问题:Golang Parser.ReadAssignment方法的具体用法?Golang Parser.ReadAssignment怎么用?Golang Parser.ReadAssignment使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/karlseguin/gerb/core.Parser
的用法示例。
在下文中一共展示了Parser.ReadAssignment方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: IfFactory
func IfFactory(p *core.Parser) (core.Code, error) {
code := &IfCode{
NormalContainer: new(core.NormalContainer),
assignments: make([]*core.Assignment, 0, 3),
verifiables: make([]core.Verifiable, 0, 3),
codes: make([]core.Code, 0, 3),
}
if p.TagContains(';') {
assignment, err := p.ReadAssignment()
if err != nil {
return nil, err
}
code.assignments = append(code.assignments, assignment)
if p.SkipSpaces() != ';' {
return nil, p.Error("If assignment should be followed by a semicolon")
}
p.Next()
} else {
code.assignments = append(code.assignments, nil)
}
verifiable, err := p.ReadConditionGroup(false)
if err != nil {
return nil, err
}
code.verifiables = append(code.verifiables, verifiable)
code.codes = append(code.codes, code)
if p.SkipSpaces() != '{' {
return nil, p.Error("Missing openening brace for if statement")
}
p.Next()
return code, nil
}
示例2: ElseFactory
func ElseFactory(p *core.Parser) (core.Code, error) {
code := &ElseCode{NormalContainer: new(core.NormalContainer)}
if p.SkipSpaces() == 'i' && p.ConsumeIf([]byte("if")) {
if p.TagContains(';') {
assignment, err := p.ReadAssignment()
if err != nil {
return nil, err
}
code.assignment = assignment
if p.SkipSpaces() != ';' {
return nil, p.Error("else if assignment should be followed by a semicolon")
}
p.Next()
}
verifiable, err := p.ReadConditionGroup(false)
if err != nil {
return nil, err
}
code.verifiable = verifiable
if p.SkipSpaces() != '{' {
return nil, p.Error("Missing openening brace for else if statement")
}
} else {
code.verifiable = core.TrueCondition //else case
if p.SkipSpaces() != '{' {
return nil, p.Error("Missing openening brace for else statement")
}
}
p.Next()
return code, nil
}
示例3: createCodeTag
func createCodeTag(p *core.Parser) (*core.Codes, error) {
codes := make([]core.Code, 0, 1)
for {
token, err := p.ReadToken()
if err != nil {
return nil, err
}
length := len(token)
if length == 0 {
if err := p.ReadCloseTag(); err != nil {
return nil, err
}
return nil, nil
}
var code core.Code
if token == "}" {
if p.SkipSpaces() == 'e' && p.ConsumeIf(elseBytes) {
code, err = ElseFactory(p)
} else {
code = endScope
}
} else if factory, ok := CodeFactories[token]; ok {
code, err = factory(p)
} else {
p.Backwards(length)
code, err = p.ReadAssignment()
}
if err != nil {
return nil, err
}
codes = append(codes, code)
if p.SkipSpaces() == '%' {
if p.ConsumeIf(trimCloseBytes) {
return &core.Codes{true, codes}, nil
}
if p.ConsumeIf(closeBytes) {
return &core.Codes{false, codes}, nil
}
}
}
}
示例4: ExplicitForFactory
func ExplicitForFactory(p *core.Parser) (core.Code, error) {
code := &ForCode{NormalContainer: new(core.NormalContainer)}
if p.SkipSpaces() != ';' {
assignment, err := p.ReadAssignment()
if err != nil {
return nil, err
}
code.init = assignment
}
if p.SkipSpaces() != ';' {
return nil, p.Error("Invalid for loop, expecting INIT; CONDITION; STEP (1)")
}
p.Next()
verifiable, err := p.ReadConditionGroup(false)
if err != nil {
return nil, err
}
code.verifiable = verifiable
if p.SkipSpaces() != ';' {
return nil, p.Error("Invalid for loop, expecting INIT; CONDITION; STEP (1)")
}
p.Next()
if p.SkipSpaces() != '{' {
value, err := p.ReadAssignment()
if err != nil {
return nil, err
}
code.step = value
}
if p.SkipSpaces() != '{' {
return nil, p.Error("Missing openening brace for for statement")
}
p.Next()
return code, nil
}