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>

46 lines (37 loc) 1.02 kB
import { Language, LanguageConfig } from '@ryusei/code'; import { jsx as _jsx } from '@ryusei/light'; import { Lexer } from '../../core/Lexer/Lexer'; import { assign } from '../../utils'; import { htmlConfig } from '../html/html'; import { javascriptConfig } from '../javascript/javascript'; /** * Returns a JSX Language object. * * @since 0.1.0 * * @return A Language object. */ export function jsx(): Language { const language = _jsx(); return assign( { id: language.id, language, lexer: new Lexer( language ) }, jsxConfig() ); } /** * Returns a JSX LanguageConfig object. * * @private * @since 0.1.0 * * @return A LanguageConfig object. */ export function jsxConfig(): LanguageConfig { const js = javascriptConfig(); const html = htmlConfig(); js.indent.push( ...html.indent ); const { autoClose } = html; const config = autoClose.filter( config => config[ 0 ] === '=' )[ 0 ]; if ( config ) { config[ 1 ] = '{}'; } js.autoClose.push( ...html.autoClose ); return js; }