YAML-구문 프리미티브

이 장에서는 YAML의 구문 기본 요소의 다음 측면에 대해 학습합니다.

  • 생산 매개 변수
  • 들여 쓰기 공간
  • 분리 공간
  • 무시 된 줄 접두사
  • 라인 폴딩

각 측면을 자세히 이해합시다.

생산 매개 변수

생산 매개 변수에는 특정 생산에 사용되는 매개 변수 세트와 허용 값 범위가 포함됩니다. 다음 생산 매개 변수 목록은 YAML에서 사용됩니다-

들여 쓰기

문자로 표시 n 또는 m문자 스트림은 포함 된 블록의 들여 쓰기 수준에 따라 다릅니다. 많은 프로덕션에서 이러한 기능을 매개 변수화했습니다.

문맥

다음과 같이 표시됩니다. c. YAML은 두 가지 컨텍스트 그룹을 지원합니다.block stylesflow styles.

스타일

s로 표시됩니다. 스칼라 콘텐츠는 다음 5 가지 스타일 중 하나로 표시 될 수 있습니다.plain, double quoted and single quoted flow, literal and folded block.

씹기

다음과 같이 표시됩니다. t. 블록 스칼라는 블록을 트리밍하는 데 도움이되는 많은 메커니즘을 제공합니다.strip, clipkeep. Chomping은 새 줄 문자열 형식을 지정하는 데 도움이됩니다. 블록 스타일 표현을 사용합니다. Chomping 프로세스는 지표의 도움으로 발생합니다. 인디케이터는 줄 바꿈 문자열로 생성되어야하는 출력을 제어합니다. 줄 바꿈은(-) 연산자와 줄 바꿈이 추가됩니다. (+) 운영자.

chomping 프로세스의 예는 다음과 같습니다.

strip: |-
   text↓
clip: |
   text↓
keep: |+
   text↓

지정된 YAML 예제를 구문 분석 한 후 출력은 다음과 같습니다.

들여 쓰기 공간

YAML 문자 스트림에서 들여 쓰기는 0 개 이상의 문자에 의한 줄 바꿈 문자로 정의됩니다. 명심해야 할 가장 중요한 점은 들여 쓰기에 탭 문자가 없어야한다는 것입니다. 들여 쓰기의 문자는 노드 콘텐츠 정보의 일부로 간주되어서는 안됩니다. 더 나은 이해를 위해 다음 코드를 관찰하십시오.

%YAML 1.1
---
!!map {
   ? !!str "Not indented"
   : !!map {
      ? !!str "By one space"
      : !!str "By four\n spaces\n",
      ? !!str "Flow style"
      : !!seq [
         !!str "By two",
         !!str "Still by two",
         !!str "Again by two",
      ]
   }
}

들여 쓰기 후 볼 수있는 출력은 다음과 같습니다.

{
   "Not indented": {
      "By one space": "By four\n spaces\n", 
      "Flow style": [
         "By two", 
         "Still by two", 
         "Again by two"
      ]
   }
}

분리 공간

YAML은 토큰을 구분하기 위해 공백 문자를 사용합니다. 가장 중요한 점은 YAML의 구분에 탭 문자가 포함되어서는 안된다는 것입니다.

다음 코드는 분리 공간의 사용법을 보여줍니다.

{ · first: · Sammy, · last: · Sosa · }
위에 표시된 구문은 다음과 같은 출력을 제공합니다.
{
   "\u00b7 last": "\u00b7 Sosa \u00b7", 
   "\u00b7 first": "\u00b7 Sammy"
}

무시 된 줄 접두사

빈 접두사는 항상 선행 공백을 포함하는 스칼라 유형에 따라 들여 쓰기를 포함합니다. 일반 스칼라에는 탭 문자가 없어야합니다. 반면에 인용 된 스칼라에는 탭 문자가 포함될 수 있습니다. 블록 스칼라는 들여 쓰기에 완전히 의존합니다.

다음 예제는 체계적인 방식으로 무시 된 줄 접두사의 작동을 보여줍니다-

%YAML 1.1
---
!!map {
   ? !!str "plain"
   : !!str "text lines",
   ? !!str "quoted"
   : !!str "text lines",
   ? !!str "block"
   : !!str "text·®lines\n"
}

블록 스트림에 대한 출력은 다음과 같습니다.

{
   "plain": "text lines", 
   "quoted": "text lines", 
   "block": "text\u00b7\u00aelines\n"
}

라인 폴딩

줄 접기는 가독성을 위해 긴 줄을 끊을 수 있습니다. 짧은 줄이 많을수록 가독성이 향상됩니다. 줄 접기는 긴 줄의 원래 의미에 주목하여 이루어집니다. 다음 예제는 줄 접기를 보여줍니다.

%YAML 1.1
--- !!str
"specific\L\
trimmed\n\n\n\
as space"

다음과 같이 JSON 형식의 줄 접기 출력을 볼 수 있습니다.

"specific\u2028trimmed\n\n\nas space"