YAML

מתוך ויקיפדיה, האנציקלופדיה החופשית

YAML (ראשי תיבות רקורסיביים של YAML Ain't Markup Language - קרי "YAML אינה שפת סימון"; נהגה: יָאמֵל) הוא פורמט סריאליזציה טקסטואלי שנועד להיות קריא בקלות לבן אנוש (human readable), המשמש בדרך כלל לקובצי תצורה (קונפיגורציה) וביישומים בהם מאוחסן או מועבר מידע. הפורמט משמש ביישומים דומים לאלו של XML, אך התחביר (syntax) שלו מינימלי.[1] קינון (nesting) מתבצע באמצעות הזחה, בדומה לפייתון, והגדרת רשימה (list) ומפה (map) מתבצעות בצורה קצרה יותר לעומת XML באמצעות [...] ו-{...} בהתאמה, בדומה ל-JSON, ש-YAML מהווה למעשה הרחבה שלה (כל קובץ JSON הוא גם קובץ YAML תקין).[2]

התקן תומך בהגדרת טיפוסי נתונים מותאמים, אך מעבר לכך YAML תומך בקידוד סקלרים (כמו מחרוזות, מספרים שלמים ומספרי נקודה צפה), רשימות ומפות. הגדרת ערכים בקובץ YAML (בצורת key-value) מתבצעת באמצעות נקודתיים (:), צורת הגדרה שמבוססת על פורמט header-ים בדואר אלקטרוני כפי שמוגדר ב-RFC 0822‎ (תקן ARPA), והמפריד --- המשמש לתיחום בין directives[א] מקורו בתקן הדואר האלקטרוני MIME (‏RFC 2046). הגדרת רצפי מילוט (escape sequences)[ב] מתבצע בצורה דומה ל-C, והגדרת מחרוזות בעלות מספר שורות נעשה באמצעות רווחים בהשראת HTML.[ג]

תמיכה מובנית בכתיבה וקריאה של קובצי YAML קיימת בשפות תכנות רבות.[3] כמה עורכי טקסט כמו Emacs,[ד] וסביבות פיתוח (IDE),[ה] כוללים יכולות המאפשרות עריכה פשוטה של מסמכי YAML, למשל קיבוץ של מבנים מקוננים או התראה אוטומטית על שגיאות תחביר.

סיומת הקובץ המומלצת למסמכי YAML היא .yaml‎[4] (מאז 2006).[5]

היסטוריה[עריכת קוד מקור | עריכה]

התקן הוצע לראשונה בשנת 2001 על ידי קלארק אוונס,[6] שתכנן אותה יחד עם אינגי דוט נט ואורן בן-קיקי.[7] בתחילה הוגדר כי ראשי התיבות YAML משמען Yet Another Markup Language (עוד שפת סימון),[8] אך לאחר מכן שונו ראשי התיבות ל-YAML Ain't Markup Language (‏YAML אינה שפת סימון) - החל מאפריל 2002.[9]

דוגמאות לתחביר בסיסי[עריכת קוד מקור | עריכה]

YAML מאפשרת להגדיר רשימות ומפות או במספר שורות, או בשורה בודדת / בתוך שורה (inline).

הגדרה של פריטים ברשימה במספר שורות נעשית באמצעות מקף ורווח לפני כל פריט:

--- # סרטים אהובים
- Casablanca
- North by Northwest
- The Man Who Wasn't There

בהגדרה של רשימה בשורה אחרת הפריטים מופרדים בפסיק וברווח, עם סוגריים מרובעים לסימון תחילת וסוף הרשימה (בדומה ל-JSON):

--- # רשימת קניות
[milk, pumpkin pie, eggs, juice]

הגדרת מיפוי key-value נעשית באמצעות תחביר של נקודתיים (:) המפרידות בין רכיבי המיפוי. בהגדרה במספר שורות נעשה שימוש בהזחה, ובהגדרה בשורה אחת פריטי המיפוי מפורדים בפסיק וברווח, עם סוגריים מסולסלים לסימון תחילת וסוף המפה (בדומה ל-JSON):

--- # הגדרת מיפוי במספר שורות בהזחה
 name: John Smith
 age: 33
--- # הגדרת מיפוי בתוך השורה
{name: John Smith, age: 33}

בהגדרת מחרוזת אין צורך להוסיף סימני מירכאות. ישנן מספר דרכים להגדרת מחרוזות בעלות מספר שורות. כשמסמנים את תחילת המחרוזת באמצעות התו | נשמרים תווי ירידת השורה, וכשנעשה שימוש בתו < לסימון תחילת המחרוזת − פירוש המחרוזת יתעלם מירידות השורה ויתייחס אליהן כרווחים.

המחרוזת הבאה תכלול את תווי ירידת השורה:

data: |
 There once was a tall man from Ealing
 Who got on a bus to Darjeeling
 It said on the door
 "Please don't sit on the floor"
 So he carefully sat on the ceiling

המחרוזת הבאה תתעלם מתווי ירידת השורה - מלבד המקרה של השורה הריקה (שם תהיה ירידת שורה):

data: >
 Wrapped text
 will be folded
 into a single
 paragraph

 Blank lines denote
 paragraph breaks

ביאורים[עריכת קוד מקור | עריכה]

  1. ^ חלקים במסמך, ניתן לראות זאת כשני מסמכים שונים המוגדרים באותו קובץ
  2. ^ רצף תווים בעל משמעות שונה מהתווים כפשוטם, למשל רצף של כמה תווים שבא לייצג תו אחר שאינו printable.
  3. ^ ב-HTML הגדרת מחרוזת בעלת מספר שורות מתבצעת על ידי הזחה באמצעות טאבים. ב-YAML יש להשתמש ב-folded style לשם כך, כלומר להתחיל את המחרוזת בסימן < וכל שורה תתחיל בסימן רווח, או להתחיל את המחרוזת בסימן | באופן שמשמר תווי ירידת שורה.
  4. ^ גם Sublime באמצעות התוסף Pretty YAML
  5. ^ למשל Eclipse באמצעות מספר תוספים או NetBeans ל-Ruby ו-Ruby on Rails, ראו כאן

קישורים חיצוניים[עריכת קוד מקור | עריכה]

הערות שוליים[עריכת קוד מקור | עריכה]

  1. ^ "Yet Another Markup Language (YAML) 1.0 / Working Draft". 10 בדצמבר 2001. 
  2. ^ "YAML Ain’t Markup Language (YAML) Version 1.2". YAML.org. בדיקה אחרונה ב-8 בינואר 2020. 
  3. ^ "The Official YAML Web Site". yaml.org. 
  4. ^ "YAML Ain't Markup Language". yaml.org. 
  5. ^ "YAML Ain't Markup Language". web.archive.org. 24 בספטמבר 2006. 
  6. ^ Evans, Clark (11 במאי 2001). "YAML Draft 0.1". Yahoo! Tech groups: sml-dev. בדיקה אחרונה ב-21 במרץ 2019. 
  7. ^ "YAML Ain't Markup Language: About". YAML.org. בדיקה אחרונה ב-29 במאי 2019. 
  8. ^ "Yet Another Markup Language (YAML) 1.0". YAML.org. בדיקה אחרונה ב-29 במאי 2019. 
  9. ^ היסטוריית specifications, באתר yaml.org