개요
2024.12.22-[Yaml] 텍스트 표현 - 개행 처리 글을 작성하기 위해 자료를 찾다가 yaml에는 값 재사용을 위한 변수 할당이라는 좋은 문법이 있는 것을 알게 되었다. 변수 할당 방법을 인지하고 있으면 이후에 복잡한 문서도 보다 효율적으로 작성할 수 있을 것 같아 기록차 적어둔다.
anchor
yaml에서는 & 기호(anchor)를 사용하여 변수를 선언할 수 있다.
key: &var_name value
# 예시
default: &default_school
grade: &default_grade 1
group: 서울대학교
description: 1946년에 설립된 국립대
위의 데이터의 경우에는 값 1을 default_grade라는 변수에 저장하고, default 키의 값을 default_school이라는 변수에 저장한다.
alias
이제 위에서 선언한 변수를 참조해 보자. 변수를 참조할 때는 * 기호를 사용한다. 값을 재정의하는 등의 추가 작업이 필요한 경우에는 << 기호를 사용해 오버라이드하기도 한다.
*var_name
# 값 재정의
<<: *var_name
예시로 아래와 같이 student라는 키에 name과 grade를 정의하되, grade는 default_grade 변수값을 참조한다.
default: &default_school
grade: &default_grade 1
group: 서울대학교
description: 1946년에 설립된 국립대
student:
- name: James
grade: *default_grade
이 데이터를 JSON으로 변환하면 다음과 같다.
{
"default": {
"grade": 1,
"group": "서울대학교",
"description": "1946년에 설립된 국립대"
},
"student": [
{
"name": "James",
"grade": 1
}
]
}
저장했던 값에 해당하는 1로 잘 매핑된 것을 확인할 수 있다. 이제 student에 학교 정보를 포함해 보자.
.. 생략 ..
student:
- name: James
<<: *default_school
다음과 같이 grade, group, description 정보가 모두 json으로 잘 파싱 되었다.
{
"default": { .. },
"student": [
{
"name": "James",
"grade": 1,
"group": "서울대학교",
"description": "1946년에 설립된 국립대"
}
]
}
만약 값 재정의가 필요하다면, 해당 값을 다시 정의하면 된다.
.. 생략 ..
student:
- name: James
<<: *default_school
grade: 2
파싱 결과는 아래와 같다.
{
"default": { .. },
"student": [
{
"name": "James",
"grade": 2,
"group": "서울대학교",
"description": "1946년에 설립된 국립대"
}
]
}
참고 문서