skip to content
my_small_recipe_book

Yaml 언어 개요

/ 5 min read

Updated:

목차

Collection, 콜렉션

Block 스타일, Flow 스타일

  • Block
    • 들여쓰기로 스코프를 구분, Collection
    • sequence는 - 로 스코프를 시작
    • mapping는 : 로 키, 값 쌍을 만듬
    • #로 주석을 시작함
- 이걸로 시작
# 키와 값을 :로 연결
- 이름: 나무젓가락
길이: 15cm
색깔: 연한 갈색
# 여러 값들을 나열
- 여러가지:
- 커피
- 초콜릿
-
  • Flow
    • 들여쓰기 대신 명시적인 구분자를 사용됨
    • sequence는 [, ], 대괄호로 감싸고 ,, 쉼표로 구분함
- [포스트잇, 노랑색, 정사각형]
샤프심: {
길이: 0.5,
색깔: 녹색,
}

Structures

---, 노드 재활용, complex(복합?) mapping

  • Document 시작, 끝 구분자
    • ---, Document 콘텐츠를 구분하는 지시자
      • 다른 지시자가 없으면 Document의 시작을 알림
    • ..., Document의 끝을 표시 함
      • ---을 쓰는 경우, 새로운 Document의 시작을 알리지 않고도 Document의 끝을 알림
# 아직 시작 아님
---
- 시작
- 중간
-
# 다음 `---` 올 때까지 더 읽거나 혹은 ...으로 Document의 끝을 알림
... # 끝
- 하나
---
-
  • 노드 재활용
    • &을 앞에 붙인 식별자를 anchor
    • *을 앞에 붙인 식별자를 alias, 별칭
    • node를 anchor로 수식하면 anchor와 대응하는 alias로 해당 노드를 재사용할 수 있다.
- &그거 이렇게 여러가지 절들을 이어 붙인 긴 문장도
- *그거 #, anchor와 alias를 쓰면 짧게 쓸 수 있다.
  • complex mapping
    • ? , complex mapping key, 복합 키를 맵핑할 때 쓰는 지시자
# seqeunce: sequence로 구성된 complex mapping
? -
- water
: - 식수
- 공업용수
- 농업용수

Scalars

yaml에서 scalar를 0 이상 길이의 유니코드 문자열로 말함.

작성할 때 |, > 두 가지 기호를 사용할 수 있음.

  • |, 리터럴 스타일, 작성된 줄바꿈이 줄바꿈으로 반영됨.
  • >, folded 접힌 스타일, 작성된 줄바꿈이 공백으로 반영되다가 마지막에 줄바꿈 추가됨.
# 줄바꾸면\n\\n으로 반영됨\n
literal: |
줄바꾸면
\n으로 반영됨
# 줄바꾸면 공백으로 반영됨\n
folded: >
줄바꾸면
공백으로 반영됨

플로우 스타일 사용할 때

  • 모든 줄바꿈은 반영됨
  • 쌍따옴표를 사용한 경우 이스케이프 문자를 사용 가능
  • 이스케이프 문자를 사용하지 않는다면 따옴표를 사용하는 방법을 권장

tags

태그가 없는, 타입이 명시되지 않은 노드들은 프로그램, 읽는 환경에 따라 타입이 정해짐.
예시들에선 주로 fail safe schema에 있는 seq, map, str 사용하고
아니면 JSON schema에 있는 int, float, null 타입도 사용함.

일반적인 정수: 12345
10진법: +12345
8진법: 0o22
16진법: 0x12
# 이렇게 써도 태그가 없어 읽는 상황에 따라 임의로 읽음.

!를 사용한 태그로 타입을 명시할 수 있음.

URI나 핸들을 사용한 태그 단축 표기로 태그를 정의할 수 있음.
처리 환경에서 정의한 태그도 사용 가능함.

태그를 통해 타입을 명시함.
---
not-date: !!str 2024-08-29
picture: !!binary |
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAL9SURBVGhD7Zq9yhNBFIZDSBGwMGUaIaAoiqiNINgEKy8hjZgy/df7oUsIYmEZrNKmsrFIKeoFeAFegJeQcuTNZvKdHebn7O7ZmWXdBw752dlhnpyZ2WEmA/Wf0Qt3nV646/TCqciyTI1GIzUYDC4xm83Udrs9l5ChFcKHw0ENh8OCLA2I73a7c+l6JBeG7GQysYrSGI/H5zvqkVx4Op0WxFar1en74/Golstl4ZoEyYWpkJalILOdFbax2WxO12w/RhVaK7zf79V6vc4//Pmp1OdXSl0/uAl8/v01v16CpMKYsFzCkL18Z8ragvkDJBO2zc5Ofn2xS5qRPQlKJxN2zc5OOFlGQNpDEmGzK7MmJG6WER6iCkMUqyYqi3BByxdWWz75b9d5GQfRhNFY24rKlV3bGJdYbTUq7MqoDl9XNsd4qDwXcWFk0ieJCDW80hhnIiIcyqSOxWJxWiOHMLMrSa3auKJlM1Tn3hCVhEOi3Ey6oHVJU6lG24SCkMoGrVOa0jViy4U2CCHe7Ujd0pSqEV2ZPhvRdTngvvl8ztqmQdlWCJuyCM44pfdxFg5NztCAXSN3sQ9B34Tmw8yu9FABbGFXQ0KCNHwCth7UBKxazV+eIiFrW2c3kV3AEvaNK73nZAa3wTFmfQpLuInGuIZCk7KAJSy9VWobr4g6qzMuLAOprVLfBNd0ZjVBYdpIvNoWD7pM6LopiYglqgkKuxrqCr24cEm+vndLfX97Ry2f3Y4uC4LCrlm4avy9upvvPQV2F5uCPQtJiJ8ySjfcKpwc1IUtHIL9PEZmtXCCLIsJX8A50O6NO3vmFmtkZIUhu3kezl5nhD+95MnQMh9fVD4JrIKsMBXxnQB8eFwsi0CPiCDdnLALdPvsabGsjgiTmJwwRGjjXdkyuz2NwLmQBHLCpogrW/hel3n/6OZ9JGSEzez6JPRjCdmk7yMhI2w9rH6o1A/Zf9FJICNsO699dz9/bRlyY1iToJuWQV645fTCXacX7jq9cNfphbuNUv8AA+wVxfhUbgoAAAAASUVORK5CYII=
application specific tag: !something |
The semantics of the tag
above may be different for
different documents.
타입 명시하기 위해 전역 태그 정의
%TAG ! tag:clarkevans.com,2002:
---
!shape
# Use the ! handle for presenting
# tag:clarkevans.com,2002:circle
- !circle
center: &ORIGIN { x: 73, y: 129 }
radius: 7
- !line
start: *ORIGIN
finish: { x: 89, y: 102 }
- !label
start: *ORIGIN
color: 0xFFEEBB
text: Pretty vector drawing.

전체 예시

기술 문서에 있는 예시
--- # !<tag:clarkevans.com,2002:invoice>
# 명시하지 않은 타입
# :으로 맵핑한 콜랙션
invoice: 34843
date: 2001-01-23
bill-to: &id001
given: Chris
family: Dumars
address:
lines: |
458 Walkman Dr.
Suite #292
city: Royal Oak
state: MI
postal: 48046
ship-to: *id001
product: # 콜렉션의 시퀸스
- sku: BL394D
quantity: 4
description: Basketball
price: 450.00
- sku: BL4438H
quantity: 1
description: Super Hoop
price: 2392.00
tax: 251.42
total: 4443.52
comments: Late afternoon is best.
Backup contact is Nancy
Billsmer @ 338-4338.