logo

oasis-root

Compiled tree of Oasis Linux based on own branch at <https://hacktivis.me/git/oasis/> git clone https://anongit.hacktivis.me/git/oasis-root.git

taskpaper.lua (900B)


  1. -- Copyright (c) 2016-2024 Larry Hynes. See LICENSE.
  2. -- Taskpaper LPeg lexer
  3. local lexer = lexer
  4. local P, S = lpeg.P, lpeg.S
  5. local lex = lexer.new(..., {lex_by_line = true})
  6. -- Notes.
  7. local delimiter = lpeg.B(' ') + lpeg.B('\t')
  8. lex:add_rule('note', delimiter * lex:tag('note', lexer.to_eol(lexer.alnum)))
  9. -- Tasks.
  10. lex:add_rule('task', delimiter * lex:tag(lexer.LIST, '-'))
  11. -- Projects.
  12. lex:add_rule('project', lex:tag(lexer.HEADING,
  13. lexer.range(lexer.starts_line(lexer.alnum), ':') * lexer.newline))
  14. -- Tags.
  15. lex:add_rule('extended_tag', lex:tag(lexer.TAG .. '.extended', '@' * lexer.word * '(' *
  16. (lexer.word + lexer.digit + '-')^1 * ')'))
  17. lex:add_rule('day_tag', lex:tag(lexer.TAG .. '.day', (P('@today') + '@tomorrow')))
  18. lex:add_rule('overdue_tag', lex:tag(lexer.TAG .. '.overdue', '@overdue'))
  19. lex:add_rule('plain_tag', lex:tag(lexer.TAG .. '.plain', '@' * lexer.word))
  20. return lex