165 lines
4.4 KiB
TypeScript
165 lines
4.4 KiB
TypeScript
import { languages } from 'monaco-editor/esm/vs/editor/editor.api'
|
|
export function editorConfig(
|
|
model: any,
|
|
code: string,
|
|
lang: string,
|
|
automaticLayout: boolean,
|
|
fixedOverflowWidgets: boolean
|
|
) {
|
|
return {
|
|
model,
|
|
value: code,
|
|
language: lang,
|
|
automaticLayout,
|
|
readOnly: false,
|
|
fixedOverflowWidgets,
|
|
autoDetectHighContrast: true,
|
|
//lineNumbers: 'off',
|
|
lineDecorationsWidth: 15,
|
|
lineNumbersMinChars: 2,
|
|
scrollbar: { alwaysConsumeMouseWheel: false },
|
|
folding: false,
|
|
scrollBeyondLastLine: false,
|
|
minimap: {
|
|
enabled: false
|
|
},
|
|
lightbulb: {
|
|
enabled: true
|
|
},
|
|
suggest: {
|
|
showKeywords: true
|
|
},
|
|
bracketPairColorization: {
|
|
enabled: true
|
|
},
|
|
'bracketPairColorization.enabled': true,
|
|
matchBrackets: 'always' as 'always'
|
|
}
|
|
}
|
|
|
|
export function createHash() {
|
|
return (Math.random() + 1).toString(36).substring(2)
|
|
}
|
|
|
|
export function langToExt(lang: string): string {
|
|
switch (lang) {
|
|
case 'javascript':
|
|
return 'js'
|
|
case 'json':
|
|
return 'json'
|
|
case 'sql':
|
|
return 'sql'
|
|
case 'yaml':
|
|
return 'yaml'
|
|
case 'typescript':
|
|
return 'ts'
|
|
case 'python':
|
|
return 'py'
|
|
case 'go':
|
|
return 'go'
|
|
case 'bash':
|
|
return 'sh'
|
|
case 'deno':
|
|
return 'ts'
|
|
default:
|
|
return 'unknown'
|
|
}
|
|
}
|
|
|
|
export const updateOptions = { tabSize: 2, insertSpaces: true }
|
|
|
|
export function convertKind(kind: string): any {
|
|
switch (kind) {
|
|
case Kind.primitiveType:
|
|
case Kind.keyword:
|
|
return languages.CompletionItemKind.Keyword
|
|
case Kind.variable:
|
|
case Kind.localVariable:
|
|
return languages.CompletionItemKind.Variable
|
|
case Kind.memberVariable:
|
|
case Kind.memberGetAccessor:
|
|
case Kind.memberSetAccessor:
|
|
return languages.CompletionItemKind.Field
|
|
case Kind.function:
|
|
case Kind.memberFunction:
|
|
case Kind.constructSignature:
|
|
case Kind.callSignature:
|
|
case Kind.indexSignature:
|
|
return languages.CompletionItemKind.Function
|
|
case Kind.enum:
|
|
return languages.CompletionItemKind.Enum
|
|
case Kind.module:
|
|
return languages.CompletionItemKind.Module
|
|
case Kind.class:
|
|
return languages.CompletionItemKind.Class
|
|
case Kind.interface:
|
|
return languages.CompletionItemKind.Interface
|
|
case Kind.warning:
|
|
return languages.CompletionItemKind.File
|
|
}
|
|
|
|
return languages.CompletionItemKind.Property
|
|
}
|
|
|
|
class Kind {
|
|
public static unknown: string = ''
|
|
public static keyword: string = 'keyword'
|
|
public static script: string = 'script'
|
|
public static module: string = 'module'
|
|
public static class: string = 'class'
|
|
public static interface: string = 'interface'
|
|
public static type: string = 'type'
|
|
public static enum: string = 'enum'
|
|
public static variable: string = 'var'
|
|
public static localVariable: string = 'local var'
|
|
public static function: string = 'function'
|
|
public static localFunction: string = 'local function'
|
|
public static memberFunction: string = 'method'
|
|
public static memberGetAccessor: string = 'getter'
|
|
public static memberSetAccessor: string = 'setter'
|
|
public static memberVariable: string = 'property'
|
|
public static constructorImplementation: string = 'constructor'
|
|
public static callSignature: string = 'call'
|
|
public static indexSignature: string = 'index'
|
|
public static constructSignature: string = 'construct'
|
|
public static parameter: string = 'parameter'
|
|
public static typeParameter: string = 'type parameter'
|
|
public static primitiveType: string = 'primitive type'
|
|
public static label: string = 'label'
|
|
public static alias: string = 'alias'
|
|
public static const: string = 'const'
|
|
public static let: string = 'let'
|
|
public static warning: string = 'warning'
|
|
}
|
|
|
|
export function createDocumentationString(details: any): string {
|
|
let documentationString = displayPartsToString(details.documentation)
|
|
if (details.tags) {
|
|
for (const tag of details.tags) {
|
|
documentationString += `\n\n${tagToString(tag)}`
|
|
}
|
|
}
|
|
return documentationString
|
|
}
|
|
|
|
function tagToString(tag: any): string {
|
|
let tagLabel = `*@${tag.name}*`
|
|
if (tag.name === 'param' && tag.text) {
|
|
const [paramName, ...rest] = tag.text
|
|
tagLabel += `\`${paramName.text}\``
|
|
if (rest.length > 0) tagLabel += ` — ${rest.map((r) => r.text).join(' ')}`
|
|
} else if (Array.isArray(tag.text)) {
|
|
tagLabel += ` — ${tag.text.map((r) => r.text).join(' ')}`
|
|
} else if (tag.text) {
|
|
tagLabel += ` — ${tag.text}`
|
|
}
|
|
return tagLabel
|
|
}
|
|
|
|
export function displayPartsToString(displayParts: any | undefined): string {
|
|
if (displayParts) {
|
|
return displayParts.map((displayPart) => displayPart.text).join('')
|
|
}
|
|
return ''
|
|
}
|