한 파일에 포맷이 공존할 때
Markdown front matter (재방문)
가장 먼저 만난 공존 패턴이야. 위에는 YAML 이나 TOML, JSON 메타데이터를 두고 아래에는 Markdown 본문을 둬. 본문은 사람 몫이고 front matter 는 구조 몫이지. 정적 사이트 생성기는 둘 다 읽고. GFM 트랙 lesson 6 에서 다뤘어.
MDX — Markdown + JSX
MDX 는 Next.js 와 Astro, Docusaurus 가 쓰는 포맷인데, React component 를 Markdown 안으로 불러올 수 있게 해줘. 그래서 <Chart data={[1,2,3]} /> 를 문단 하나처럼 툭 떨어뜨린 Markdown 본문이 나와. component 는 눌러지는 HTML 로 렌더되고 그 주변 글은 계속 Markdown 이야. 두 층에서 좋은 것만 가져온 셈이지.
YAML string 의 임베디드 JSON
CI 에서 흔히 봐. YAML 필드의 값이 JSON 을 문자열로 감싼 형태인 거야. config: '{"key":"value"}' 처럼. 뒤에서 받는 도구가 딱 JSON 을 원할 때 쓸모가 있어. 대신 값을 치러. YAML 을 읽는 쪽에는 그게 그냥 문자열로만 보이고 안쪽 구조는 안 보여. YAML schema validator 도 그 안으로 못 들어가고.
JSON string 의 임베디드 YAML (드물지만 존재)
OpenAPI 생성기가 가끔 x-extension: "yaml-encoded" 같은 덩어리를 뱉어. 훨씬 드물지만 치르는 값은 똑같아. 바깥 파서가 안쪽 구조를 못 봐.
'구조를 문자열에 우겨넣기' 안티패턴: 도구가 중첩 구조를 원래부터 지원한다면 그쪽을 써. JSON 덩어리를 YAML 문자열로 인코딩하는 순간 schema 검증도, autocomplete 도, pretty-print 도 다 죽어. 한 겹을 손으로 벗겨내지 않는 모든 도구에게 그 데이터는 그냥 불투명한 덩어리가 되는 거야. 받는 쪽이 대놓고 그걸 요구할 때만 써.