Omnes amamus Ansible, sed Ansible est YAML. Multae formae ad conformationem imaginum sunt: ββindices valorum, paria valorum parametri, imaginum INI, YAML, JSON, XML et multi alii. Multis autem de causis ex omnibus, YAML saepe difficilis existimatur. Praesertim, non obstante reficiens minimalismo et infigendo facultates ad operandum cum valoribus hierarchicis, YAML syntaxin molestus esse potest cum suis Pythonicis accessu ad incisum.
Si YAML minxerit te, potes et debes! β Sequentes 10 gradus sume, ut frustrationem tuam ad gradum acceptabilem redigas et in amorem cum YAML incidas. Ut hoc indicem dignum est, decem apices nostri a scabro numerabuntur, meditationes et exercitia spiritualia ad voluntatem adjiciemus.
0. fac tibi editor opus
Non refert quod textum editor habes, probabiliter saltem unum plugin operandi cum YAML. Si non habes, reperi statim et institue. Tempus inquisitionis et instaurationis pluries reddet per omne tempus quod emendare YAML habes.
Exempli gratia editor
Emacs in YAML modum ostentans spatia.
Si ventus editor tuus modum YAML non habet, quaedam problematum operando cum uncinis solvi possunt. Exempli gratia, vexillum GNOME textorum editoris Gedit non habet modum YAML, sed per defectionem syntaxin YAML effert ac te permittit ut opus cum fuluum configurare;
Indentum in Gedit.
Plugin
Id est, vacare discendi de editore tuo dilectissimo. Cognoscere quid ipse communitas progressionis ipsius offerat ad operandum cum YAML et illis notis utendum. Certe non pΕnitet.
1. uti linter
Specimen programmandi linguarum et linguarum notae praedictio syntaxi utuntur. Computers sunt bonae ad praedictibilitatem, quare conceptus ipsius
statuam
$ sudo dnf install yamllint
Tunc solum yamllint currite, transitum fasciculi YAML sisto. Hoc simile est, si fasciculum cum errore ad linteolum transeas;
$ yamllint errorprone.yaml
errorprone.yaml
23:10 error syntax error: mapping values are not allowed here
23:11 error trailing spaces (trailing-spaces)
Numeri in sinistro non sunt temporis, sed erroris coordinatae: ordo et numerus columnae. Erroris descriptio non tibi quicquam narret, sed ubi sit scis. Spectate hunc locum in codice, et verisimilia omnia patebunt.
Cum yamllint nullos errores in tabella reperit, nihil in scrinio impressum est. Si tale silentium te terret ac paulo plus videre vis, tunc linter incurrere potes cum imperio vocis conditionalis per ampersand (&&), sicut hoc:
$ yamllint perfect.yaml && echo "OK"
OK
In POSIX, duplex ampersand ignes si et solum si praecedens mandatum redit 0. et yamllint mox redit numerus errorum inventus, unde haec tota opera conditionalis fabricatur.
2. Scribe in Pythone, non YAML
Si YAML vere minxerit te, modo in eo non scribe, literam. Contingit ut YAML unica forma sit quam applicatio intelligit. Sed etiam in hoc casu, non est necessarium file YAML creare. Scribe quod voles et postea converte. Exempli gratia magna est bibliotheca Pythonis
Conversionis sui
In hoc casu, tabella data est etiam script Python quod YAML generat. Haec methodus ad parvas notitias occidendas aptissima est. Simpliciter scribes datam JSON in Pythone variabili, praemitte illam cum import directivo, et in fine tabella tres lineas ad efficiendum output adde.
#!/usr/bin/python3
import yaml
d={
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
f=open('output.yaml','w')
f.write(yaml.dump(d))
f.close
Nunc hunc fasciculum in Pythone currimus et tabellam output.yaml obtinemus:
$ python3 ./example.json
$ cat output.yaml
glossary:
GlossDiv:
GlossList:
GlossEntry:
Abbrev: ISO 8879:1986
Acronym: SGML
GlossDef:
GlossSeeAlso: [GML, XML]
para: A meta-markup language, used to create markup languages such as DocBook.
GlossSee: markup
GlossTerm: Standard Generalized Markup Language
ID: SGML
SortAs: SGML
title: S
title: example glossary
Hoc perfecte valet YAML, sed yamllint monent te non incipere ab -. Hoc bene manually vel leviter in Scripto Pythone mutari facile corrigi potest.
Conversio per scripta
In hoc casu primum in JSON scribimus, et deinde convertentis currunt ut separatum scriptionem Python, quae YAML ut output producit. Priori methodo comparata, haec methodus melius librat, cum conversio a notitia separata sit.
Primum, exempli causa lima JSON creare.json, exempli gratia, ex
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
Tunc simplicem scripturam convertentem creabimus et eam sub nomine json2yaml.py servabimus. Scriptum hoc utrumque YAML et JSON modulorum Python importat, et fasciculum JSON usoris definitum onerat, conversionem exercet, et notitias in tabella output.yaml scribit.
#!/usr/bin/python3
import yaml
import sys
import json
OUT=open('output.yaml','w')
IN=open(sys.argv[1], 'r')
JSON = json.load(IN)
IN.close()
yaml.dump(JSON, OUT)
OUT.close()
Serva hoc scriptum in viae systematis et currite ut opus fuerit:
$ ~/bin/json2yaml.py example.json
3. Parse multum et saepe
Aliquando utile est ex alio angulo problema intueri. Si molestus es repraesentans relationes inter notitias tuas in YAML, tempus illud in familiarius aliquid transformare potes.
Exempli gratia, si opus es commodae cum dictionariis electronicis vel JSON, potes YAML ad JSON convertere cum duobus iustis praeceptis in concha interactiva Pythonis. 'Dicamus te tabellam mydatam' YAML habere.yaml, hoc est quid simile videretur:
$ python3
>>> f=open('mydata.yaml','r')
>>> yaml.load(f)
{'document': 34843, 'date': datetime.date(2019, 5, 23), 'bill-to': {'given': 'Seth', 'family': 'Kenlon', 'address': {'street': '51b Mornington Roadn', 'city': 'Brooklyn', 'state': 'Wellington', 'postal': 6021, 'country': 'NZ'}}, 'words': 938, 'comments': 'Good article. Could be better.'}
Multa alia huius argumenti exempla reperire potes. Plures praeterea sunt online convertentium et parsers localis in promptu. Noli igitur dubitare informationem reformare, cum videris solum incomprehensibilem confutationem in ea esse.
4. Read in arcu
YAML post longum intervallum reverti, visitare utile est
5. Pseudo-configs
Cum scribo librum vel articulum, semper utile est primum adumbrare prooemium, saltem in forma tabulae contentorum. Idem est cum YAML. Verisimile, habes ideam de notitia quae in tabella YAML scribenda est, sed vere non intellegis quomodo eam inter se coniungas. Priusquam ergo YAML sculptura, pseudo-config ducatur.
Pseudo-config simile est cum pseudo-code, ubi non debes sollicitari de structura vel incisatione, parente filio, de relationibus, de hereditate et nidificatione. Idem est hic: trahis iterationes notitiarum quae in capite tuo oriuntur.
Pseudo-config programmatores enumerant (Martin et Tabitha) eorumque artes (linguarum programmandi: Python, Perl, Pascal et Lisp, Fortran, Erlang, respective).
Postquam pseudo-configo in chartam ducta est, diligenter illud resolve et, si omnia ita ordinantur, in forma fasciculi validi YAML format.
6. Tabs vs. Spatia Dilemma
Dilemma solvere tibi erit
In quolibet textu normali editore, tabs auto- rectas ad certum spatiarum numerum configurare potes, sic rebellio clavium adherentium. tab non timere.
Ut quisque bene novit inimicus YAML, non potes videre differentiam inter tabs et spatia in screen. Cum aliquid non visibile est, plerumque minime meminerunt, postquam omnes alias difficultates possibilis, per cohibitas et evulsas, digessisse. Hora temporis consumpti quaerendo tabulationem curvam vel truncum spatia tantum clamat ut instanter indigeas consilio ad unum vel alterum utendum creare, ac deinde solidam concretam perspiciendam ad obsequium cum ea efficiendum (exempli gratia, per. a Git hamum per linter adigere).
7. Minus plus est (vel plus minus est)
Nonnulli placet scribere in YAML quia structuram extollit. Eodem tempore, active incisum utuntur ad exaggerandam caudices notitiarum. Hoc genus est MALITIA ad imitandum notas linguarum quae in delimiters expressis utuntur.
Huiusmodi structurae exemplum est
# Employee records
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
Quibusdam haec optio adiuvat YAML structuram in capitibus exponere: alii contra, multum supervacaneum in eorum sententia indentum exasperat.
Si autem dominus documenti YAML es et reus est conservandi illud, tunc tu et solus definire debet quomodo incisum utatur. Si moleste magnae padssores sunt, eam retine ad minimum secundum specificationem YAML. Exempli gratia, fasciculus superior documentorum Ansibilis sine ullo detrimento sic rescribi potest:
---
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
8. Usus codicellos
Si eadem errata constanter repetas cum tabellam YAML implens, sensum praebet exemplum ei in commentarium inserere. Tunc proximo tempore hanc paginam solum imitari potes et notitias reales ibi ingredi, exempli gratia:
---
# - <common name>:
# name: Given Surname
# job: JOB
# skills:
# - LANG
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
9 uti aliquid aliud
Si applicatio in te strangulationem non habet, tunc valeret mutato YAML in aliam formam. Subinde, imaginatio imaginum crescere se potest et melius est eas in scripta simplicia in Lua vel Pythone converti.
YAML Magnum est quod multi minimam ac simplicitatem amant, sed a solo instrumento in armamentario tuo longe est. Interdum igitur id negare potes. Parsing bibliothecae facile sunt invenire pro YAML, ergo si optiones migrationum faciles praebes, usores tui hanc defectum relative sine dolore superabunt.
Si sine YAML facere non potes, sume has 10 apices et odium tuum YAML semel et pro omnibus vince!
Source: www.habr.com