동적 구문 강조


동적 구문 강조는 사용자가 직접 바꿀 수 있는 코드를 강조하는 거예요. 이런 일이 일어나는 곳은 온라인 에디터 한 곳뿐이에요.

Note

코드 조각이나 이터레이션 같은 것은 사용자가 코드를 즉석에서 바꿀 수 없기 때문에 _정적_이에요. 정적 구문 강조를 어떻게 처리하는지 더 알고 싶다면 정적 구문 강조 문서를 확인해 봐요.

구현

동적 구문 강조는 CodeMirror 라이브러리를 사용해요.

언어 지원을 추가할 때는 세 가지 선택지가 있어요:

  1. CodeMirror가 기본으로 지원하는 언어인 경우예요(즉, 지원하는 언어 목록에 있는 경우). 그렇다면 언어 활성화 섹션으로 넘어가요.
  2. 기존 CodeMirror 플러그인을 통해 지원되는 언어인 경우예요. 그렇다면 기존 플러그인 사용하기 섹션으로 넘어가요.
  3. 지원하지 않는 언어인 경우예요. 여기에는 다시 세 가지 방법이 있어요:
    1. 새 플러그인 만들기 섹션에서 설명하듯이 CodeMirror 플러그인을 처음부터 작성해요.
    2. 언어의 구문이 다른 언어의 구문과 (거의) 비슷한 경우(예: Unison의 구문이 Haskell과 비슷함)에는 그 언어의 구문 강조를 사용하는 것을 고려할 수 있어요. 자세한 내용은 언어 활성화 섹션을 참고해요.
    3. 동적 구문 강조를 사용하지 않아요.

언어 활성화

언어에 대한 CodeMirror 지원을 활성화하려면 포럼에 새 주제를 올려요. 그러면 저희(Exercism)가 웹사이트에서 언어의 CodeMirror 지원을 활성화하는 Pull Request를 만들어 드려요.

기존 플러그인 사용하기

기존 플러그인을 사용하려면 플러그인이 NPM에 게시되어 있어야 해요.

플러그인이 NPM에 게시되어 있지 않다면 다음 중 하나를 할 수 있어요:

  1. 플러그인 작성자에게 NPM에 게시할 의향이 있는지 물어봐요.
  2. 저장소를 포크해서 직접 게시해요.
  3. 저희(Exercism)가 저장소를 포크해서 게시하게 해요. 그러려면 포럼에 이렇게 요청하는 새 주제를 열어요.
Note

CodeMirror 웹사이트에는 커뮤니티가 만든 언어 플러그인 목록이 있어요.

다음 단계는 언어를 활성화하는 거예요.

새 플러그인 만들기

시작하기 위한 단계는 다음과 같아요:

  1. 이미 존재하는 게 없는지 확인하려고 기존 codemirror-lang-... 저장소 목록을 확인해요.
  2. 어떤 언어의 CodeMirror 플러그인을 만들고 싶은지 알려주는 새 주제를 Exercism 포럼에 올려요.
  3. CodeMirror 플러그인 저장소가 만들어지면 트랙의 문법을 구현해요.
Note

시작하는 데 도움이 되도록, 만들어 드린 저장소에는 확장하거나 다듬을 수 있는 최소한의 예제 문법이 들어 있어요.

저희 커뮤니티는 정말 친절하고 서로를 잘 도와주기 때문에, 이 과정을 진행하는 동안 기꺼이 도와줄 거예요! 막히면 Exercism 포럼에 새 주제를 올리거나 필요에 따라 exercism/exercism에 새 이슈를 만들어요 🙂

그다음 플러그인을 NPM에 게시해야 해요. 다음 단계는 언어를 활성화하는 거예요.

다른 언어 사용하기

언어의 구문이 다른 언어의 구문과 (거의) 비슷한 경우에는 그 언어의 구문 강조를 사용하는 것을 고려할 수 있어요. 그러려면 다른 언어의 CodeMirror 플러그인을 사용해 트랙을 설정해요. 자세한 내용은 언어 활성화 섹션을 참고해요.