1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- package ace
- import (
- "fmt"
- "io"
- )
- // Helper method names
- const (
- helperMethodNameConditionalComment = "conditionalComment"
- helperMethodNameContent = "content"
- helperMethodNameCSS = "css"
- helperMethodNameDoctype = "doctype"
- helperMethodNameYield = "yield"
- helperMethodNameInclude = "include"
- helperMethodNameJavascript = "javascript"
- )
- // element is an interface for storing an element.
- type element interface {
- io.WriterTo
- AppendChild(child element)
- ContainPlainText() bool
- Base() *elementBase
- CanHaveChildren() bool
- InsertBr() bool
- SetLastChild(lastChild bool)
- IsBlockElement() bool
- IsControlElement() bool
- }
- // newElement creates and returns an element.
- func newElement(ln *line, rslt *result, src *source, parent element, opts *Options) (element, error) {
- var e element
- var err error
- switch {
- case parent != nil && parent.ContainPlainText():
- e = newPlainTextInner(ln, rslt, src, parent, parent.InsertBr(), opts)
- case ln.isEmpty():
- e = newEmptyElement(ln, rslt, src, parent, opts)
- case ln.isComment():
- e = newComment(ln, rslt, src, parent, opts)
- case ln.isHTMLComment():
- e = newHTMLComment(ln, rslt, src, parent, opts)
- case ln.isHelperMethod():
- switch {
- case ln.isHelperMethodOf(helperMethodNameConditionalComment):
- e, err = newHelperMethodConditionalComment(ln, rslt, src, parent, opts)
- case ln.isHelperMethodOf(helperMethodNameContent):
- e, err = newHelperMethodContent(ln, rslt, src, parent, opts)
- case ln.isHelperMethodOf(helperMethodNameCSS):
- e = newHelperMethodCSS(ln, rslt, src, parent, opts)
- case ln.isHelperMethodOf(helperMethodNameDoctype):
- e, err = newHelperMethodDoctype(ln, rslt, src, parent, opts)
- case ln.isHelperMethodOf(helperMethodNameInclude):
- e, err = newHelperMethodInclude(ln, rslt, src, parent, opts)
- case ln.isHelperMethodOf(helperMethodNameJavascript):
- e = newHelperMethodJavascript(ln, rslt, src, parent, opts)
- case ln.isHelperMethodOf(helperMethodNameYield):
- e, err = newHelperMethodYield(ln, rslt, src, parent, opts)
- default:
- err = fmt.Errorf("the helper method name is invalid [file: %s][line: %d]", ln.fileName(), ln.no)
- }
- case ln.isPlainText():
- e = newPlainText(ln, rslt, src, parent, opts)
- case ln.isAction():
- e = newAction(ln, rslt, src, parent, opts)
- default:
- e, err = newHTMLTag(ln, rslt, src, parent, opts)
- }
- return e, err
- }
|