UNPKG

@liquify/prettify

Version:

Prettify 🎀 ~ Language beautification support for multiple languages with the Sparser lexing algorithm.

52 lines (46 loc) • 1.81 kB
import { LanguageProperName } from '../common'; import { LiteralUnion } from 'type-fest'; export type PatternTypes = | 'comment.line' // single block comment | 'comment.documentation' // indicates documentation | 'comment.block' // multiline comment | 'meta.import' // import(), require(), import "", #include <> | 'meta.module' // package <name>, module <name> | 'section.scope' // begin, end | 'constant.type' // same like numeric, string, and boolean | 'constant.string' // not important tbh | 'constant.numeric' // Int, Uint, Float, Double | 'constant.boolean' // True, true, False, false | 'constant.dictionary' // Dict, Object, Associative Array | 'constant.array' // well.. array ofc | 'constant.null' // null, undefined, nil | 'keyword' // namespace, class | 'keyword.print' // println, echo, console.log(), System.WriteLine() | 'keyword.variable' // var, let, const' | 'keyword.control' // if, while, for, return, break, continue | 'keyword.visibility' // public, private, protected | 'keyword.other' // async, await, crate, extern | 'keyword.operator' // >, <, -, << not important tbh you could get away with this | 'keyword.function' // func pattern() {, function pattern(), fn pattern() { | 'macro' // @println, println! | 'not'; // not in current language export interface LanguagePattern { pattern: RegExp; type: PatternTypes; nearTop?: boolean; unless?: RegExp; deterministic?: LanguageProperName } export interface Options { heuristic?: boolean; noUnknown?: boolean; } export interface DetectedLanguage { language: LiteralUnion<LanguageProperName, string>; statistics: Record<string, number>; linesOfCode: number; } export interface LanguagePoints { language: LiteralUnion<LanguageProperName, string>; points: number; }