UNPKG

@ryusei/code

Version:

<div align="center"> <a href="https://code.ryuseijs.com"> <img alt="RyuseiCode" src="https://code.ryuseijs.com/images/svg/logo.svg" width="70"> </a>

55 lines (47 loc) 1.1 kB
import { Language, LanguageConfig } from '@ryusei/code'; import { json as _json } from '@ryusei/light'; import { Lexer } from '../../core/Lexer/Lexer'; import { assign } from '../../utils'; /** * Returns a JSON Language object. * * @since 0.1.0 * * @return A Language object. */ export function json(): Language { const language = _json(); return assign( { id: language.id, language, lexer: new Lexer( language ) }, jsonConfig() ); } /** * Returns a JSON LanguageConfig object. * * @private * @since 0.1.0 * * @return A LanguageConfig object. */ export function jsonConfig(): LanguageConfig { const scope = [ '!string' ]; const bracketsCompletionData = { close : scope, skip : scope, remove: scope, }; const quotesCompletionData = { close : '@quotes', skip : '@quotes', remove: '@quotes', }; return { indent: [ [ /{$/, /^}/, scope ], [ /\[$/, /^]/, scope ], ], autoClose: [ [ '[', ']', bracketsCompletionData ], [ '{', '}', bracketsCompletionData ], [ '"', '"', quotesCompletionData ], ], }; }