320x100
커스텀 language를 추가하기 전에 code highlight 설정부터 해야한다.
2024.08.24 - [프로그래밍/Javascript] - [ReactJS] code highlight editor (feat. highlight.js)
[ReactJS] code highlight editor (feat. highlight.js)
1. 실행 결과 2. 원리먼저 highlight.js는 텍스트에 style을 입혀주는 기능을 할 뿐이다. 즉 엘리먼트들을 사용한다는 것인데, textarea나 MUI의 TextField에서는 적용이 불가능하다. 예로 들어 C언어에서
park-duck.tistory.com
1. 기존의 언어 추가
먼저 highlight.js를 보면 기존의 language들이 있다.
예를 들어 c언어를 추가하고 싶다면 아래와 같이 c언어의 라이브러리를 불러와 언어를 등록해 주면 된다
import hljs from 'highlight.js';
import cLang from 'highlight.js/lib/languages/c';
import 'highlight.js/styles/docco.min.css';
hljs.registerLanguage('language-c', cLang);
2. 새로운 언어 추가
새로운 언어에 대한 파일을 만든 뒤 아래와 같이 작성.
(나는 p라는 언어가 있다고 가정하고 p.js로 작성)
export default function(hljs) {
return {
name: 'PLanguage',
keywords: {
keyword: ["IF", "ELSE", "FUNCTION", "WHILE"],
built_in: ["PRINT"],
literal: ["true", "false", "null"],
},
contains: [
hljs.C_LINE_COMMENT_MODE,
{
className: 'string',
begin: '"', end: '"'
},
{
className: 'number',
begin: '\\b\\d+(\\.\\d+)?'
}
]
};
}
p.js 에서 작성한 keyword, built_in, literal, string, number에 대한 p.css 추가
.hljs-keyword {
color: #0077ff;
font-weight: bold;
}
.hljs-built_in {
color: #ff8800;
}
.hljs-literal {
color: #008800;
}
.hljs-number {
color: red;
}
.hljs-string {
color:burlywood;
}
언어 추가
import hljs from 'highlight.js';
import PLanguage from "./p.js";
import "./p.css";
hljs.registerLanguage("language-p", PLanguage);
.......................................
<code ref={codeRef} className={`language-p`} />
3. 결과
반응형
'프로그래밍 > Javascript' 카테고리의 다른 글
[React] MUI: Warning Failed props type error (0) | 2024.10.07 |
---|---|
[ReactJS] code highlight editor (feat. highlight.js) (0) | 2024.08.24 |
[Javascript] 2. Toast UI Grid 셀 합치기(+ header 합치기) (0) | 2024.03.19 |
[javascript] 1. Toast UI Grid 기초(+API 사용법) (0) | 2024.03.14 |
[JS] Drag&Drop 구현 예제(feat. SortableJS) (0) | 2024.02.02 |
댓글