tm-grammars
Version:
Collecton of TextMate grammars in JSON
269 lines (268 loc) • 6.12 kB
JSON
{
"displayName": "Hurl",
"name": "hurl",
"patterns": [
{
"include": "#comments"
},
{
"include": "#sections"
},
{
"include": "#http"
},
{
"include": "#strings"
},
{
"include": "#body"
},
{
"include": "#request"
}
],
"repository": {
"body": {
"patterns": [
{
"begin": "```graphql(,\\w+)*$",
"beginCaptures": {
"1": {
"name": "support.type"
}
},
"end": "```$",
"name": "meta.embedded.block.graphql.hurl",
"patterns": [
{
"include": "source.graphql"
}
]
},
{
"begin": "```xml(,\\w+)*$",
"beginCaptures": {
"1": {
"name": "support.type"
}
},
"end": "```$",
"name": "meta.embedded.block.xml.hurl",
"patterns": [
{
"include": "text.xml"
}
]
},
{
"begin": "```json(,\\w+)*$",
"beginCaptures": {
"1": {
"name": "support.type"
}
},
"end": "```$",
"name": "meta.embedded.block.json.hurl",
"patterns": [
{
"include": "text.json"
}
]
},
{
"begin": "```csv(,\\w+)*$",
"beginCaptures": {
"1": {
"name": "support.type"
}
},
"end": "```$",
"name": "meta.embedded.block.csv.hurl",
"patterns": [
{
"include": "text.csv"
}
]
},
{
"begin": "```hex(,\\w+)*$",
"beginCaptures": {
"1": {
"name": "support.type"
}
},
"contentName": "text.plain",
"end": "```$",
"name": "string.quoted.multiline.hurl"
},
{
"begin": "```base64(,\\w+)*$",
"beginCaptures": {
"1": {
"name": "support.type"
}
},
"contentName": "text.plain",
"end": "```$",
"name": "string.quoted.multiline.hurl"
},
{
"begin": "```([^,]*)(,\\w+)*$",
"beginCaptures": {
"1": {
"name": "support.type"
},
"2": {
"name": "support.type"
}
},
"end": "```$",
"name": "string.quoted.multiline.hurl"
},
{
"match": "`(\\\\.|[^\\\\`])*`",
"name": "string.quoted.backtick.hurl",
"patterns": [
{
"include": "#escapes"
}
]
},
{
"begin": "\\b(base64|hex),",
"beginCaptures": {
"1": {
"name": "support.function.name"
}
},
"contentName": "text.plain",
"end": ";",
"endCaptures": {
"0": {
"name": "support.function"
}
},
"name": "support.function",
"patterns": [
{
"include": "#placeholders"
}
]
}
]
},
"comments": {
"patterns": [
{
"match": "#.*$",
"name": "comment.line.number-sign.hurl"
}
]
},
"escapes": {
"patterns": [
{
"match": "\\\\[\"#\\\\`bnrtu]",
"name": "constant.character.escape.hurl"
}
]
},
"http": {
"patterns": [
{
"captures": {
"1": {
"name": "constant.language.version.hurl"
},
"3": {
"name": "constant.numeric.status.hurl"
}
},
"match": "\\b(HTTP(/(?:1\\.0|1\\.1|2))?)([\\t ]+([0-9]{3}))?\\b"
}
]
},
"placeholders": {
"patterns": [
{
"begin": "(\\{\\{)\\s*",
"beginCaptures": {
"1": {
"name": "string.interpolated.hurl"
}
},
"contentName": "variable.other.hurl",
"end": "\\s*(}})",
"endCaptures": {
"1": {
"name": "string.interpolated.hurl"
}
}
}
]
},
"request": {
"patterns": [
{
"match": "\\b(GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS|TRACE|CONNECT)\\b",
"name": "keyword.control.method.hurl"
},
{
"captures": {
"1": {
"name": "string.unquoted.url.hurl",
"patterns": [
{
"include": "#placeholders"
}
]
}
},
"match": "(https?://[^\\t\\n]+)\\s*$",
"name": "string.unquoted.url.hurl"
},
{
"begin": "^([-0-9A-Za-z]+)(:)\\s*",
"beginCaptures": {
"1": {
"name": "entity.name.tag.header.hurl"
},
"2": {
"name": "punctuation.separator.key-value.hurl"
}
},
"contentName": "string.unquoted.hurl",
"end": "$",
"name": "entity.name.tag.header.hurl",
"patterns": [
{
"include": "#placeholders"
}
]
}
]
},
"sections": {
"patterns": [
{
"match": "^\\s*\\[(QueryStringParams|Query|FormParams|Form|MultipartFormData|Multipart|Cookies|Captures|Asserts|BasicAuth|Options)]",
"name": "entity.name.section.hurl"
}
]
},
"strings": {
"patterns": [
{
"match": "\"(\\\\.|[^\"\\\\])*\"",
"name": "string.quoted.double.hurl",
"patterns": [
{
"include": "#escapes"
}
]
}
]
}
},
"scopeName": "source.hurl"
}