Skip to content

Commit 5c1d039

Browse files
committed
Add ES|QL language support and move hl theme over to theme colors
1 parent 1f23af0 commit 5c1d039

File tree

5 files changed

+196
-4
lines changed

5 files changed

+196
-4
lines changed

docs/testing/custom-highlighters.md

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ GET /mydocuments/_search
3232
}
3333
```
3434
````
35+
::::
3536

3637
## EQL
3738

@@ -68,4 +69,46 @@ function calls
6869
modulo(10, 6)
6970
modulo(10, 5)
7071
modulo(10, 0.5)
71-
```
72+
```
73+
74+
75+
76+
## ESQL
77+
78+
79+
```esql
80+
FROM employees
81+
| LIMIT 1000
82+
```
83+
84+
```esql
85+
ROW a = "2023-01-23T12:15:00.000Z - some text - 127.0.0.1"
86+
| DISSECT a """%{date} - %{msg} - %{ip}"""
87+
| KEEP date, msg, ip
88+
```
89+
90+
```esql
91+
FROM books
92+
| WHERE KQL("author: Faulkner")
93+
| KEEP book_no, author
94+
| SORT book_no
95+
| LIMIT 5
96+
```
97+
98+
```esql
99+
FROM hosts
100+
| STATS COUNT_DISTINCT(ip0), COUNT_DISTINCT(ip1)
101+
```
102+
103+
```esql
104+
ROW message = "foo ( bar"
105+
| WHERE message RLIKE "foo \\( bar"
106+
```
107+
108+
```esql
109+
FROM books
110+
| WHERE author:"Faulkner"
111+
| KEEP book_no, author
112+
| SORT book_no
113+
| LIMIT 5;
114+
```

src/Elastic.Markdown/Assets/hljs.ts

Lines changed: 68 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ const NUMBER = {
4343
relevance: 0
4444
};
4545

46-
4746
hljs.registerLanguage('eql', function() {
4847
return {
4948
case_insensitive: true, // language is case-insensitive
@@ -69,6 +68,74 @@ hljs.registerLanguage('eql', function() {
6968
}
7069
})
7170

71+
hljs.registerLanguage('esql', function() {
72+
return {
73+
case_insensitive: true, // language is case-insensitive
74+
keywords: {
75+
keyword: 'FROM ROW SHOW DISSECT DROP ENRICH EVAL GROK KEEP LIMIT RENAME SORT STATS WHERE METADATA',
76+
literal: ['false','true','null'],
77+
function: [
78+
// aggregate
79+
"AVG", "COUNT", "COUNT_DISTINCT", "MAX", "MEDIAN", "MEDIAN_ABSOLUTE_DEVIATION", "MIN",
80+
"PERCENTILE", "SUM", "TOP", "VALUES", "WEIGHTED_AVG", "BUCKET",
81+
82+
// conditional
83+
"CASE", "COALESCE", "GREATEST", "LEAST",
84+
85+
//Date
86+
"DATE_DIFF", "DATE_EXTRACT", "DATE_FORMAT", "DATE_PARSE", "DATE_TRUNC", "NOW",
87+
88+
//ip
89+
"CIDR_MATCH", "IP_PREFIX",
90+
91+
//math
92+
"ABS", "ACOS", "ASIN", "ATAN", "ATAN2", "CBRT", "CEIL", "COS", "COSH", "E", "EXP", "FLOOR",
93+
"HYPOT", "LOG", "LOG10", "PI", "POW", "ROUND", "SIGNUM", "SIN", "SINH", "SQRT", "TAN",
94+
"TANH", "TAU",
95+
96+
//search
97+
"MATCH", "QSTR",
98+
99+
//spatial
100+
"ST_DISTANCE", "ST_INTERSECTS", "ST_DISJOINT", "ST_CONTAINS", "ST_WITHIN", "ST_X", "ST_Y",
101+
102+
//string
103+
104+
"BIT_LENGTH", "BYTE_LENGTH", "CONCAT", "ENDS_WITH", "FROM_BASE64", "LEFT", "LENGTH", "LOCATE",
105+
"LTRIM", "REPEAT", "REPLACE", "REVERSE", "RIGHT", "RTRIM", "SPACE", "SPLIT", "STARTS_WITH",
106+
"SUBSTRING", "TO_BASE64", "TO_LOWER", "TO_UPPER", "TRIM",
107+
108+
//type conversion
109+
"TO_BOOLEAN", "TO_CARTESIANPOINT", "TO_CARTESIANSHAPE", "TO_DATETIME", "TO_DEGREES",
110+
"TO_DOUBLE", "TO_GEOPOINT", "TO_GEOSHAPE", "TO_INTEGER", "TO_IP", "TO_LONG", "TO_RADIANS",
111+
"TO_STRING", "TO_VERSION",
112+
113+
//multivalued
114+
"MV_APPEND", "MV_AVG", "MV_CONCAT", "MV_COUNT", "MV_DEDUPE", "MV_FIRST", "MV_LAST", "MV_MAX",
115+
"MV_MEDIAN", "MV_MEDIAN_ABSOLUTE_DEVIATION", "MV_MIN", "MV_PERCENTILE", "MV_PSERIES_WEIGHTED_SUM",
116+
"MV_SORT", "MV_SLICE", "MV_SUM", "MV_ZIP",
117+
118+
"KQL"
119+
]
120+
},
121+
contains: [
122+
hljs.QUOTE_STRING_MODE,
123+
hljs.C_LINE_COMMENT_MODE,
124+
{
125+
scope: "operator", // (pathname: path1/path2/dothis) color #ab5656
126+
match: /(?:<|<=|==|::|\w+:|!=|>=|>|LIKE|RLIKE|IS NULL|IS NOT NULL)/,
127+
},
128+
{
129+
scope: "punctuation", // (pathname: path1/path2/dothis) color #ab5656
130+
match: /(?:!?\[|\]|\|)/,
131+
},
132+
NUMBER,
133+
134+
]
135+
}
136+
})
137+
138+
72139
hljs.addPlugin(mergeHTMLPlugin);
73140
export function initHighlight() {
74141

src/Elastic.Markdown/Assets/markdown/code.css

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,86 @@
7979
text-decoration: inherit;
8080
font-weight: inherit;
8181
}
82+
83+
84+
.hljs-built_in,
85+
.hljs-selector-tag,
86+
.hljs-section,
87+
.hljs-link {
88+
color: var(--color-blue-elastic-70)
89+
}
90+
91+
.hljs-keyword {
92+
color: var(--color-blue-elastic-70)
93+
}
94+
95+
.hljs {
96+
color: var(--color-blue-elastic-30) !important;
97+
}
98+
.hljs-subst {
99+
color: var(--color-purple-60)
100+
}
101+
.hljs-function {
102+
color: var(--color-purple-60)
103+
}
104+
105+
.hljs-title,
106+
.hljs-title.function,
107+
.hljs-attr,
108+
.hljs-meta-keyword {
109+
color: var(--color-yellow-50)
110+
}
111+
112+
.hljs-string {
113+
color: var(--color-green-50)
114+
}
115+
.hljs-operator {
116+
color: var(--color-yellow-50)
117+
}
118+
119+
.hljs-meta,
120+
.hljs-name,
121+
.hljs-type,
122+
.hljs-symbol,
123+
.hljs-bullet,
124+
.hljs-addition,
125+
.hljs-variable,
126+
.hljs-template-tag,
127+
.hljs-template-variable {
128+
color: var(--color-yellow-50)
129+
}
130+
131+
.hljs-comment,
132+
.hljs-quote,
133+
.hljs-deletion {
134+
color: var(--color-grey-70)
135+
}
136+
137+
.hljs-punctuation {
138+
color: var(--color-grey-50);
139+
font-weight: bold;
140+
}
141+
142+
.hljs-keyword,
143+
.hljs-selector-tag,
144+
.hljs-literal,
145+
.hljs-title,
146+
.hljs-section,
147+
.hljs-doctag,
148+
.hljs-type,
149+
.hljs-name,
150+
.hljs-strong {
151+
font-weight: bold;
152+
}
153+
154+
.hljs-literal {
155+
color: var(--color-pink-50)
156+
}
157+
.hljs-number {
158+
color: var(--color-teal-50)
159+
}
160+
161+
.hljs-emphasis {
162+
font-style: italic;
163+
}
82164
}

src/Elastic.Markdown/Assets/styles.css

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
@import "tailwindcss";
22
@import "./fonts.css";
33
@import "./theme.css";
4-
@import "highlight.js/styles/github-dark-dimmed.css";
54
@import "./markdown/typography.css";
65
@import "./markdown/list.css";
76
@import "./markdown/tabs.css";

src/Elastic.Markdown/Myst/CodeBlocks/SupportedLanguages.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,8 @@ public static class CodeBlock
181181
{ "zephir", "zep" }, // Zephir
182182

183183
//CUSTOM, Elastic language we wrote highlighters for
184-
{ "eql", "" }
184+
{ "eql", "" },
185+
{ "esql", "" }
185186
};
186187

187188

0 commit comments

Comments
 (0)