java / / 2023. 3. 27. 14:17

yaml 파일에서 multiline 표현하기

yaml의 block 헤더는 3가지로 구성이 되어 있다.

Block Style Indicator

block 스타일은 block 내의 newline이 어떻게 표시될 것인가를 나타낸다. newline을 유지하고 싶다면 literal 스타일을 사용하면 된다. 만일 공백으로 바꾸고 싶다면 folded 스타일을 사용하면 된다.

Block Chomping Indicator

chomping indicator는 글자 마지막에 newline이 있을 때 어떻게 할 것인지를 결정한다. 기본 값인 clip은 글자 마지막에 하나의 newline을 둔다. 모든 newline을 제거하려면 style indicator 뒤에 마이너스 기호(-)인 strip을 사용하면 된다. clip과 strip은 block 끝에 newline이 얼마나 많은지와는 상관없다. 만일 유지하려면 플러스 기호(+)를 사용하면 된다.

Indentation Indicator

block에서 사용하는 공백 수는 첫 라인으로부터 예상될 수 있다. 첫 줄에서 추가적인 공백으로 block을 시작하려면 block identation Indicator를 사용할 필요가 있다. 이런 경우에 첫줄 끝에 인덴트에 사용된 공백 수를 넣으면 된다.

1. Literal 스타일

  • literal은 |으로 표현된다.
  • block 내의 newline을 유지하는 유형
  • 공백(identation)은 유지된다.
1) input : |
name: | 
Hello!

This is
a yaml description.

and some text with
   extra identation
(new line)
(new line)
result
Hello!

This is
a yaml description.

and some text with
   extra identation
(new line)
설명

글자 내에 newline은 유지되고 마지막은 하나의 newline만 존재한다.

2) input : |-
name: | 
Hello!

This is
a yaml description.

and some text with
   extra identation
(new line)
(new line)
result
Hello!

This is
a yaml description.

and some text with
   extra identation
설명

글자 내에 newline은 유지되고 마지막의 newline은 제거된다.

3) input : |+
name: | 
Hello!

This is
a yaml description.

and some text with
   extra identation
(new line)
(new line)
result
Hello!

This is
a yaml description.

and some text with
   extra identation
(new line)
(new line)
설명

글자 내에 newline은 유지되고 마지막의 newline은 2줄로 유지된다.

2. Folded 스타일

  • folded는 > 으로 표현된다.

  • block 내의 newline을 공백으로 변경하는 유형

  • \n\n은 하나의 newline으로 변경된다.

    첫 라인에 공백(identation)은 무시된다.

1) input : >
name: | 
Hello!

This is
a yaml description.

and some text with
   extra identation
(new line)
(new line)
result
Hello!

This is a yaml description.

and some text with
   extra identation
(new line)
설명

글자 내에 newline은 공백으로 대체되고 마지막은 하나의 newline만 존재한다. (1개)

2) input : >-
name: | 
Hello!

This is a yaml description.

and some text with
   extra identation
(new line)
(new line)
result
Hello!

This is a yaml description.

and some text with
   extra identation
설명

글자 내에 newline은 공백으로 대체되고 마지막 newline은 제거된다. (0개)

3) input : >+
name: | 
Hello!

This is
a yaml description.

and some text with
   extra identation
(new line)
(new line)
result
Hello!

This is a yaml description.

and some text with
   extra identation
(new line)
(new line)
설명

글자 내에 newline은 공백으로 대체되고 마지막의 newline은 유지된다. (2개)

참고

https://yaml-multiline.info/

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유