You've already forked AstralRinth
forked from didirus/AstralRinth
feat: add skript + mcfunction highlightjs support (#4739)
* feat: add skript + mcfunction highlightjs support * fix: lint * fix: dep * lint --------- Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
This commit is contained in:
@@ -15,14 +15,18 @@ import python from 'highlight.js/lib/languages/python'
|
||||
import scala from 'highlight.js/lib/languages/scala'
|
||||
import xml from 'highlight.js/lib/languages/xml'
|
||||
import yaml from 'highlight.js/lib/languages/yaml'
|
||||
import mcfunction from 'highlightjs-mcfunction'
|
||||
|
||||
import { configuredXss, md } from './parse'
|
||||
import { configuredXss, md } from '../parse'
|
||||
import skript from './skript'
|
||||
|
||||
/* REGISTRATION */
|
||||
// Scripting
|
||||
hljs.registerLanguage('javascript', javascript)
|
||||
hljs.registerLanguage('python', python)
|
||||
hljs.registerLanguage('lua', lua)
|
||||
hljs.registerLanguage('skript', skript)
|
||||
hljs.registerLanguage('mcfunction', mcfunction)
|
||||
// Coding
|
||||
hljs.registerLanguage('java', java)
|
||||
hljs.registerLanguage('kotlin', kotlin)
|
||||
@@ -40,6 +44,9 @@ hljs.registerLanguage('properties', properties)
|
||||
// Scripting
|
||||
hljs.registerAliases(['js'], { languageName: 'javascript' })
|
||||
hljs.registerAliases(['py'], { languageName: 'python' })
|
||||
hljs.registerAliases(['sk'], { languageName: 'skript' })
|
||||
hljs.registerAliases(['command'], { languageName: 'mcfunction' })
|
||||
hljs.registerAliases(['kubejs'], { languageName: 'javascript' })
|
||||
// Coding
|
||||
hljs.registerAliases(['kt'], { languageName: 'kotlin' })
|
||||
// Configs
|
||||
140
packages/utils/highlightjs/skript.ts
Normal file
140
packages/utils/highlightjs/skript.ts
Normal file
@@ -0,0 +1,140 @@
|
||||
import type { HLJSApi } from 'highlight.js'
|
||||
|
||||
/*
|
||||
Language: Skript
|
||||
Description: Skript language support for Minecraft server scripting
|
||||
Website: https:
|
||||
Category: scripting
|
||||
*/
|
||||
export default function (hljs: HLJSApi) {
|
||||
const CONTROL_KEYWORDS = {
|
||||
keyword: 'if else while loop return continue at stop cancel false true now',
|
||||
built_in: 'parse do',
|
||||
}
|
||||
|
||||
const ENTITIES = 'player players victim attacker sender loop-player shooter console'
|
||||
const CONDITION_OPERATORS =
|
||||
'contains has have is was were are does can cannot ' +
|
||||
"hasn't haven't isn't wasn't weren't aren't doesn't can't"
|
||||
|
||||
return {
|
||||
name: 'Skript',
|
||||
aliases: ['sk'],
|
||||
case_insensitive: true,
|
||||
keywords: CONTROL_KEYWORDS,
|
||||
contains: [
|
||||
{
|
||||
className: 'comment',
|
||||
begin: '(?<!#)#(?!#)',
|
||||
end: '$',
|
||||
relevance: 0,
|
||||
},
|
||||
{
|
||||
className: 'string',
|
||||
begin: '"',
|
||||
end: '"',
|
||||
illegal: '\\n',
|
||||
contains: [hljs.BACKSLASH_ESCAPE],
|
||||
},
|
||||
|
||||
{
|
||||
className: 'section',
|
||||
begin: '\\bon\\s+',
|
||||
end: ':',
|
||||
excludeEnd: false,
|
||||
keywords: 'on',
|
||||
relevance: 10,
|
||||
},
|
||||
|
||||
{
|
||||
className: 'section',
|
||||
begin: '\\bcommand\\s+/',
|
||||
end: ':',
|
||||
excludeEnd: false,
|
||||
relevance: 10,
|
||||
},
|
||||
|
||||
{
|
||||
className: 'variable',
|
||||
begin: '{',
|
||||
end: '}',
|
||||
contains: [
|
||||
{
|
||||
className: 'variable',
|
||||
begin: ':+',
|
||||
relevance: 0,
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
className: 'params',
|
||||
begin: '<',
|
||||
end: '>',
|
||||
relevance: 5,
|
||||
},
|
||||
|
||||
{
|
||||
className: 'function',
|
||||
begin: '\\b[a-zA-Z_][a-zA-Z0-9_]*(?=\\()',
|
||||
relevance: 0,
|
||||
},
|
||||
|
||||
{
|
||||
className: 'variable',
|
||||
begin: '\\b(loop|event)-[a-zA-Z]+\\b',
|
||||
relevance: 5,
|
||||
},
|
||||
|
||||
{
|
||||
className: 'number',
|
||||
variants: [
|
||||
{ begin: '\\b\\d+(\\.\\d+)?\\s+(tick|second|minute|hour|day)s?\\b' },
|
||||
|
||||
{ begin: '\\ba\\s+(tick|second|minute|hour|day)s?\\b' },
|
||||
|
||||
{ begin: '\\b(minecraft|mc|real|rl|irl)\\s+(tick|second|minute|hour|day)s?\\b' },
|
||||
],
|
||||
relevance: 0,
|
||||
},
|
||||
|
||||
hljs.NUMBER_MODE,
|
||||
|
||||
{
|
||||
className: 'built_in',
|
||||
begin: '\\b(' + ENTITIES + ')\\b',
|
||||
relevance: 0,
|
||||
},
|
||||
|
||||
{
|
||||
className: 'built_in',
|
||||
begin: "(uuid\\s+of|'s\\s+uuid|location\\s+of|'s\\s+location)",
|
||||
relevance: 0,
|
||||
},
|
||||
|
||||
{
|
||||
className: 'operator',
|
||||
begin: '\\b(' + CONDITION_OPERATORS.split(' ').join('|') + ')\\b',
|
||||
relevance: 0,
|
||||
},
|
||||
|
||||
{
|
||||
className: 'operator',
|
||||
begin: '::?',
|
||||
relevance: 0,
|
||||
},
|
||||
|
||||
{
|
||||
className: 'literal',
|
||||
begin: '\\b(true|false)\\b',
|
||||
relevance: 0,
|
||||
},
|
||||
|
||||
{
|
||||
className: 'keyword',
|
||||
begin: '\\b(stop|cancel|halt|enable|disable|trigger|server)\\b',
|
||||
relevance: 5,
|
||||
},
|
||||
],
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
export * from './api'
|
||||
export * from './billing'
|
||||
export * from './changelog'
|
||||
export * from './highlight'
|
||||
export * from './highlightjs'
|
||||
export * from './licenses'
|
||||
export * from './parse'
|
||||
export * from './projects'
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
"@types/three": "^0.172.0",
|
||||
"dayjs": "^1.11.10",
|
||||
"highlight.js": "^11.9.0",
|
||||
"highlightjs-mcfunction": "github:modrinth/better-highlightjs-mcfunction",
|
||||
"markdown-it": "^14.1.0",
|
||||
"ofetch": "^1.3.4",
|
||||
"three": "^0.172.0",
|
||||
|
||||
@@ -9,7 +9,7 @@ export class ModrinthServerError extends Error {
|
||||
public readonly originalError?: Error,
|
||||
public readonly module?: string,
|
||||
public readonly v1Error?: V1ErrorInfo,
|
||||
public readonly responseData?: any,
|
||||
public readonly responseData?: unknown,
|
||||
) {
|
||||
let errorMessage = message
|
||||
let method = 'GET'
|
||||
|
||||
Reference in New Issue
Block a user