From f09329ae624b870b8966ebdf2079dd6fa960e729 Mon Sep 17 00:00:00 2001 From: Koki Fukuda Date: Fri, 23 Jul 2021 00:17:11 +0900 Subject: [PATCH] Add lexer for Meson build system Ported pygments' lexer using pygments2chroma.py. --- lexers/m/meson.go | 51 ++++++++++++++++++++++++++ lexers/testdata/meson.actual | 11 ++++++ lexers/testdata/meson.expected | 67 ++++++++++++++++++++++++++++++++++ 3 files changed, 129 insertions(+) create mode 100644 lexers/m/meson.go create mode 100644 lexers/testdata/meson.actual create mode 100644 lexers/testdata/meson.expected diff --git a/lexers/m/meson.go b/lexers/m/meson.go new file mode 100644 index 0000000..2a6a22f --- /dev/null +++ b/lexers/m/meson.go @@ -0,0 +1,51 @@ +package m + +import ( + . "github.com/alecthomas/chroma" // nolint + "github.com/alecthomas/chroma/lexers/internal" +) + +// Meson lexer. +var Meson = internal.Register(MustNewLazyLexer( + &Config{ + Name: "Meson", + Aliases: []string{"meson", "meson.build"}, + Filenames: []string{"meson.build", "meson_options.txt"}, + MimeTypes: []string{"text/x-meson"}, + }, + func() Rules { + return Rules{ + "root": { + {`#.*?$`, Comment, nil}, + {`'''.*'''`, LiteralStringSingle, nil}, + {`[1-9][0-9]*`, LiteralNumberInteger, nil}, + {`0o[0-7]+`, LiteralNumberOct, nil}, + {`0x[a-fA-F0-9]+`, LiteralNumberHex, nil}, + Include("string"), + Include("keywords"), + Include("expr"), + {`[a-zA-Z_][a-zA-Z_0-9]*`, Name, nil}, + {`\s+`, TextWhitespace, nil}, + }, + "string": { + {`[']{3}([']{0,2}([^\\']|\\(.|\n)))*[']{3}`, LiteralString, nil}, + {`'.*?(?