Skip to content

Instantly share code, notes, and snippets.

@TellowKrinkle
Last active June 27, 2017 07:44
Show Gist options
  • Save TellowKrinkle/f29b97478e3f93f44ae378d7a4fae221 to your computer and use it in GitHub Desktop.
Save TellowKrinkle/f29b97478e3f93f44ae378d7a4fae221 to your computer and use it in GitHub Desktop.
A sublime-syntax file for Tatsumaki's tag system
%YAML 1.2
---
# See http://www.sublimetext.com/docs/3/syntax.html
file_extensions:
- tatsu
scope: text.tatsu
contexts:
textColoring:
# Improperly copied emoji
- match: "(<):[^:]+:(\\d+>)"
captures:
1: invalid.illegal.tatsu
2: invalid.illegal.tatsu
# Color numbers
- match: "\\b(\\d+(?:\\.\\d+)?)\\b"
captures:
1: constant.numeric.tatsu
tagEnds:
- match: "}"
scope: meta.tag.end.tatsu
pop: true
- include: textColoring
tagStarts:
# No argument tags
- match: "({)(args|argslen|channelid|channelname|channeltopic|lb|randarg|randuser|rb|semi|serverid|servername|serverusers|time|usercreatedat|usercredits|userdiscrim|userid|username|usernick|userperms|userpoints|userrep|userrole|userxp)(})"
captures:
1: meta.tag.begin.tatsu
2: keyword.control.tatsu
3: meta.tag.end.tatsu
- match: "({)(abs|aget|ceil|floor|get|length|lower|reverse|round|shuffle|upper|usercreatedat|usercredits|userdiscrim|userid|username|usernick|userperms|userrep|userxp)(;)"
captures:
1: meta.tag.begin.tatsu
2: keyword.control.tatsu
3: meta.tag.separator.tatsu
push: tag1
- match: "({)(aset|randint|randstr|repeat|set|args|userrole)(;)"
captures:
1: meta.tag.begin.tatsu
2: keyword.control.tatsu
3: meta.tag.separator.tatsu
push: tag2
- match: "({)(base|regexreplace|replace|substr|time)(;)"
captures:
1: meta.tag.begin.tatsu
2: keyword.control.tatsu
3: meta.tag.separator.tatsu
push: tag3
- match: "({)(pad|emojis)(;)"
captures:
1: meta.tag.begin.tatsu
2: keyword.control.tatsu
3: meta.tag.separator.tatsu
push: tag4
- match: "({)(avg|randchoice|switch)(;)"
captures:
1: meta.tag.begin.tatsu
2: keyword.control.tatsu
3: meta.tag.separator.tatsu
push: tagInf
- match: "({)(if)(;)"
captures:
1: meta.tag.begin.tatsu
2: keyword.control.tatsu
3: meta.tag.separator.tatsu
push: if
- match: "({)(math)(;)"
captures:
1: meta.tag.begin.tatsu
2: keyword.control.tatsu
3: meta.tag.separator.tatsu
push: math
- match: "({)(bit)(;)"
captures:
1: meta.tag.begin.tatsu
2: keyword.control.tatsu
3: meta.tag.separator.tatsu
push: bit
- match: "({)[^;]*(})"
captures:
1: meta.tag.begin.tatsu
2: meta.tag.end.tatsu
- match: "({)[^;]*(;)"
captures:
1: meta.tag.begin.tatsu
2: meta.tag.separator.tatsu
push: tagInf
main:
- include: tagStarts
- include: textColoring
- match: "}"
scope: invalid.illegal.tatsu
tag1:
- include: tagStarts
- include: tagEnds
- match: ";"
scope: invalid.illegal.tatsu
tag2:
- include: tagStarts
- include: tagEnds
- match: ";"
scope: meta.tag.separator.tatsu
set: tag1
tag3:
- include: tagStarts
- include: tagEnds
- match: ";"
scope: meta.tag.separator.tatsu
set: tag2
tag4:
- include: tagStarts
- include: tagEnds
- match: ";"
scope: meta.tag.separator.tatsu
set: tag3
tagInf:
- include: tagStarts
- include: tagEnds
- match: ";"
scope: meta.tag.separator.tatsu
if:
- include: tagStarts
- include: tagEnds
- match: "(==|!=|<|>|<=|>=|\\|\\||&&)(;)"
captures:
1: keyword.operator.tatsu
2: meta.tag.separator.tatsu
set: tag4
math:
- include: tagStarts
- include: tagEnds
- match: "(\\+|\\-|\\/|\\*|\\%|\\^)(;)"
captures:
1: keyword.operator.tatsu
2: meta.tag.separator.tatsu
set: tagInf
- match: "(sqrt|cbrt)(;)"
captures:
1: keyword.operator.word.tatsu
2: meta.tag.separator.tatsu
set: tag1
bit:
- include: tagStarts
- include: tagEnds
- match: "(!|~)(;)"
captures:
1: keyword.operator.tatsu
2: meta.tag.separator.tatsu
set: tag1
- match: "(&|\\^|\\||<<|>>|>>>)(;)"
captures:
1: keyword.operator.tatsu
2: meta.tag.separator.tatsu
set: tag2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment