diff --git a/lexers/README.md b/lexers/README.md index 43bdbbd..de859a1 100644 --- a/lexers/README.md +++ b/lexers/README.md @@ -7,7 +7,7 @@ that its output matches `.exported`. Run the tests as normal: ```go -go run ./lexers +go test ./lexers ``` ## Updating the existing tests diff --git a/lexers/testdata/vue.actual b/lexers/testdata/vue.actual new file mode 100644 index 0000000..237970d --- /dev/null +++ b/lexers/testdata/vue.actual @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/lexers/testdata/vue.expected b/lexers/testdata/vue.expected new file mode 100644 index 0000000..8136f53 --- /dev/null +++ b/lexers/testdata/vue.expected @@ -0,0 +1,68 @@ +[ + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameTag","value":"template"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Text","value":"\n "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameTag","value":"button"}, + {"type":"Text","value":" "}, + {"type":"NameAttribute","value":"class"}, + {"type":"Operator","value":"="}, + {"type":"LiteralString","value":"\"button\""}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"NameOther","value":"This"}, + {"type":"Text","value":" "}, + {"type":"NameOther","value":"is"}, + {"type":"Text","value":" "}, + {"type":"NameOther","value":"MyButton"}, + {"type":"Punctuation","value":"\u003c/"}, + {"type":"NameTag","value":"button"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Text","value":"\n"}, + {"type":"Punctuation","value":"\u003c/"}, + {"type":"NameTag","value":"template"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Text","value":"\n\n"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameTag","value":"script"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Text","value":"\n "}, + {"type":"KeywordReserved","value":"export"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"default"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":"\n "}, + {"type":"NameOther","value":"name"}, + {"type":"Operator","value":":"}, + {"type":"Text","value":" "}, + {"type":"LiteralStringDouble","value":"\"MyButton\""}, + {"type":"Text","value":"\n "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n"}, + {"type":"Punctuation","value":"\u003c/"}, + {"type":"NameTag","value":"script"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Text","value":"\n\n"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameTag","value":"style"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Text","value":"\n "}, + {"type":"Punctuation","value":"."}, + {"type":"NameOther","value":"button"}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":"\n "}, + {"type":"NameOther","value":"font"}, + {"type":"Operator","value":"-"}, + {"type":"NameOther","value":"size"}, + {"type":"Operator","value":":"}, + {"type":"LiteralNumberInteger","value":"18"}, + {"type":"NameOther","value":"px"}, + {"type":"Punctuation","value":";"}, + {"type":"Text","value":"\n "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n"}, + {"type":"Punctuation","value":"\u003c/"}, + {"type":"NameTag","value":"style"}, + {"type":"Punctuation","value":"\u003e"} +] diff --git a/lexers/v/vue.go b/lexers/v/vue.go new file mode 100644 index 0000000..5c2457d --- /dev/null +++ b/lexers/v/vue.go @@ -0,0 +1,107 @@ +package v + +import ( + . "github.com/alecthomas/chroma" // nolint + "github.com/alecthomas/chroma/lexers/internal" +) + +// Vue lexer. +// +// This was generated from https://github.com/testdrivenio/vue-lexer +var Vue = internal.Register(MustNewLexer( + &Config{ + Name: "vue", + Aliases: []string{"vue", "vuejs"}, + Filenames: []string{"*.vue"}, + MimeTypes: []string{"text/x-vue", "application/x-vue"}, + DotAll: true, + }, + Rules{ + "commentsandwhitespace": { + {`\s+`, Text, nil}, + {`