code: func (t *tree) parseMsgRawText(node *ast.RawTextNode) []ast.Node {
  	var (
  		r   []ast.Node
  		txt = node.Text
  		pos = node.Position()
  	)
  	for len(txt) > 0 {
  		var start, end = len(txt), len(txt)
  		var ii = htmlTagRegexp.FindSubmatchIndex(txt)
  		if ii != nil {
  			start, end = ii[0], ii[1]
  		}
  
  		if start > 0 {
  			r = append(r, &ast.RawTextNode{pos, txt[:start]})
  			pos += ast.Pos(start)
  		}
  
  		if end > start {
  			r = append(r, &ast.MsgPlaceholderNode{pos, "", &ast.MsgHtmlTagNode{pos, txt[start:end]}})
  			pos += ast.Pos(end - start)
  		}
  
  		txt = txt[end:]
  	}
  	return r
  }
docs: // parseMsgRawText returns a sequence of text and html placeholder nodes for the
  // given raw text.