YAML - Quy trình
YAML tuân theo một quy trình tiêu chuẩn cho Quy trình. Cấu trúc dữ liệu gốc trong YAML bao gồm các biểu diễn đơn giản như các nút. Nó còn được gọi là Biểu đồ nút biểu diễn.
Nó bao gồm ánh xạ, trình tự và đại lượng vô hướng đang được tuần tự hóa để tạo ra một cây tuần tự hóa. Với tuần tự hóa, các đối tượng được chuyển đổi với dòng byte.
Cây sự kiện tuần tự hóa giúp tạo bản trình bày các luồng ký tự như được biểu diễn trong sơ đồ sau.
Quy trình ngược lại phân tích luồng byte thành cây sự kiện được tuần tự hóa. Sau đó, các nút được chuyển đổi thành đồ thị nút. Các giá trị này sau đó được chuyển đổi trong cấu trúc dữ liệu gốc YAML. Hình bên dưới giải thích điều này -
Thông tin trong YAML được sử dụng theo hai cách: machine processing và human consumption. Bộ xử lý trong YAML được sử dụng như một công cụ cho quy trình chuyển đổi thông tin giữa các khung nhìn bổ sung trong sơ đồ đã cho ở trên. Chương này mô tả các cấu trúc thông tin mà bộ xử lý YAML phải cung cấp trong một ứng dụng nhất định.
YAML bao gồm một thủ tục tuần tự hóa để biểu diễn các đối tượng dữ liệu ở định dạng nối tiếp. Quá trình xử lý thông tin YAML bao gồm ba giai đoạn:Representation, Serialization, Presentation and parsing. Hãy để chúng tôi thảo luận chi tiết từng người trong số họ.
Đại diện
YAML đại diện cho cấu trúc dữ liệu bằng cách sử dụng ba loại nút: sequence, mapping và scalar.
Sự nối tiếp
Trình tự đề cập đến số lượng mục nhập có thứ tự, ánh xạ liên kết không có thứ tự của cặp giá trị khóa. Nó tương ứng với danh sách mảng Perl hoặc Python.
Đoạn mã được hiển thị bên dưới là một ví dụ về biểu diễn trình tự -
product:
- sku : BL394D
quantity : 4
description : Football
price : 450.00
- sku : BL4438H
quantity : 1
description : Super Hoop
price : 2392.00
Lập bản đồ
Mặt khác, ánh xạ biểu thị cấu trúc dữ liệu từ điển hoặc bảng băm. Một ví dụ cho điều tương tự được đề cập dưới đây:
batchLimit: 1000
threadCountLimit: 2
key: value
keyMapping: <What goes here?>
Vô hướng
Vô hướng đại diện cho các giá trị tiêu chuẩn của chuỗi, số nguyên, ngày tháng và kiểu dữ liệu nguyên tử. Lưu ý rằng YAML cũng bao gồm các nút chỉ định cấu trúc kiểu dữ liệu. Để biết thêm thông tin về đại lượng vô hướng, vui lòng tham khảo chương 6 của hướng dẫn này.
Serialization
Quá trình tuần tự hóa là bắt buộc trong YAML để giảm bớt thứ tự khóa và tên neo thân thiện với con người. Kết quả của tuần tự hóa là một cây tuần tự hóa YAML. Nó có thể được duyệt để tạo ra một loạt các lệnh gọi sự kiện của dữ liệu YAML.
Ví dụ về tuần tự hóa được đưa ra dưới đây:
consumer:
class: 'AppBundle\Entity\consumer'
attributes:
filters: ['customer.search', 'customer.order', 'customer.boolean']
collectionOperations:
get:
method: 'GET'
normalization_context:
groups: ['customer_list']
itemOperations:
get:
method: 'GET'
normalization_context:
groups: ['customer_get']
Bài thuyết trình
Đầu ra cuối cùng của tuần tự hóa YAML được gọi là bản trình bày. Nó thể hiện một dòng ký tự theo cách thân thiện với con người. Bộ xử lý YAML bao gồm các chi tiết trình bày khác nhau để tạo luồng, xử lý thụt lề và định dạng nội dung. Quá trình hoàn chỉnh này được hướng dẫn bởi các tùy chọn của người dùng.
Một ví dụ cho quá trình trình bày YAML là kết quả của giá trị JSON được tạo. Hãy quan sát đoạn mã dưới đây để hiểu rõ hơn -
{
"consumer": {
"class": "AppBundle\\Entity\\consumer",
"attributes": {
"filters": [
"customer.search",
"customer.order",
"customer.boolean"
]
},
"collectionOperations": {
"get": {
"method": "GET",
"normalization_context": {
"groups": [
"customer_list"
]
}
}
},
"itemOperations": {
"get": {
"method": "GET",
"normalization_context": {
"groups": [
"customer_get"
]
}
}
}
}
}
Phân tích cú pháp
Phân tích cú pháp là quá trình trình bày ngược lại; nó bao gồm một luồng ký tự và tạo ra một chuỗi sự kiện. Nó loại bỏ các chi tiết được giới thiệu trong quá trình trình bày gây ra các sự kiện tuần tự hóa. Quy trình phân tích cú pháp có thể không thành công do đầu vào không hợp lệ. Về cơ bản, nó là một thủ tục để kiểm tra xem YAML có được định hình tốt hay không.
Hãy xem xét một ví dụ YAML được đề cập bên dưới:
---
environment: production
classes:
nfs::server:
exports:
- /srv/share1
- /srv/share3
parameters:
paramter1
Với ba dấu gạch nối, nó đại diện cho phần bắt đầu của tài liệu với các thuộc tính khác nhau được định nghĩa sau đó.
YAML lint là trình phân tích cú pháp trực tuyến của YAML và giúp phân tích cú pháp cấu trúc YAML để kiểm tra xem nó có hợp lệ hay không. Liên kết chính thức cho YAML lint được đề cập dưới đây:http://www.yamllint.com/
Bạn có thể xem kết quả phân tích cú pháp như hình dưới đây: