tag.go 704 B

12345678910111213141516171819202122232425262728293031323334
  1. package parser
  2. import "github.com/usememos/memos/plugin/gomark/parser/tokenizer"
  3. type TagParser struct {
  4. ContentTokens []*tokenizer.Token
  5. }
  6. func NewTagParser() *TagParser {
  7. return &TagParser{}
  8. }
  9. func (*TagParser) Match(tokens []*tokenizer.Token) *TagParser {
  10. if len(tokens) < 2 {
  11. return nil
  12. }
  13. if tokens[0].Type != tokenizer.Hash {
  14. return nil
  15. }
  16. contentTokens := []*tokenizer.Token{}
  17. for _, token := range tokens[1:] {
  18. if token.Type == tokenizer.Newline || token.Type == tokenizer.Space || token.Type == tokenizer.Hash {
  19. break
  20. }
  21. contentTokens = append(contentTokens, token)
  22. }
  23. if len(contentTokens) == 0 {
  24. return nil
  25. }
  26. return &TagParser{
  27. ContentTokens: contentTokens,
  28. }
  29. }