변환기

당신의 사이트에 사용하고자 하는 다른 마크업 언어가 있다면, 해당 언어를 처리할 수 있는 변환기를 직접 구현하면 됩니다. 마크업 언어 마크다운과 Textile 도 이 메소드를 사용해서 구현한 것입니다.

머리말을 잊지 마세요

Jekyll 은 오직 YAML 헤더로 시작하는 파일만 변환합니다. 변환기 플러그인을 추가해서 사용할때도 마찬가지 입니다.

아래 예제는 .upcase 로 끝나는 모든 포스트를 읽어서 UpcaseConverter 로 처리하는 변환기입니다:

module Jekyll
  class UpcaseConverter < Converter
    safe true
    priority :low

    def matches(ext)
      ext =~ /^\.upcase$/i
    end

    def output_ext(ext)
      ".html"
    end

    def convert(content)
      content.upcase
    end
  end
end

변환기는 최소한 아래 3 가지 메소드를 구현해야 합니다:

메소드 설명

matches

주어진 확장자가 이 변환기가 처리할 수 있는 확장자 목록에 포함되어 있는가? 파라메터가 하나 필요합니다: 파일의 확장자 (점 포함). 포함되어 있다면 true 를, 그렇지 않다면 false 를 반환해야 합니다.

output_ext

출력할 파일의 확장자 (점 포함). 일반적으로 ".html" 가 될 것입니다.

convert

컨텐츠를 변환하는 로직. 파라메터가 하나 필요합니다: 변환되지 않은 파일 내용 (머리말 제외). 반드시 문자열을 반환해야 합니다.

위 예제에서, UpcaseConverter#matches 는 확장자가 .upcase 인지 확인하고, 만약 그렇다면 변환기를 사용해 렌더링을 수행합니다. 변환기는 내용을 처리하기 위해 UpcaseConverter#convert 를 호출합니다. 이 예제의 변환기는 단순히 전체 내용을 대문자로 변환합니다. 마지막으로, 변환된 내용을 페이지로 저장할 때 .html 확장자를 사용합니다.