vis

a vi-like editor based on Plan 9's structural regular expressions

git clone https://9o.is/git/vis.git

gemini.lua

(890B)


      1 -- Copyright 2020-2025 Haelwenn (lanodan) Monnier <contact+gemini.lua@hacktivis.me>. See LICENSE.
      2 -- Gemini / Gemtext LPeg lexer.
      3 -- See https://gemini.circumlunar.space/docs/specification.html
      4 
      5 local lexer = lexer
      6 local P, S = lpeg.P, lpeg.S
      7 
      8 local lex = lexer.new(...)
      9 
     10 local header = lex:tag(lexer.HEADING .. '.h3', lexer.to_eol(lexer.starts_line('###'))) +
     11 	lex:tag(lexer.HEADING .. '.h2', lexer.to_eol(lexer.starts_line('##'))) +
     12 	lex:tag(lexer.HEADING .. '.h1', lexer.to_eol(lexer.starts_line('#')))
     13 lex:add_rule('header', header)
     14 
     15 lex:add_rule('list', lex:tag(lexer.LIST, lexer.to_eol(lexer.starts_line('*'))))
     16 
     17 lex:add_rule('blockquote', lex:tag(lexer.STRING, lexer.to_eol(lexer.starts_line('>'))))
     18 
     19 lex:add_rule('pre', lex:tag(lexer.CODE, lexer.to_eol(lexer.range('```', false, true))))
     20 
     21 lex:add_rule('link', lex:tag(lexer.LINK, lexer.to_eol(lexer.starts_line('=>'))))
     22 
     23 return lex