Deprecated: Return type of YDataTable::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/bdavid/prod/georef/yamldoc/ydclasses/ydata.inc.php on line 428

Deprecated: Return type of YamlDataTable::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/bdavid/prod/georef/yamldoc/ydclasses/yamldata.inc.php on line 295
ydc yd.inc.php

Fichier yd.inc.php

File: yd.inc.php - fonctions générales pour yamldoc

doc

Le format externe d'un document est du Yaml.
Le format interne dépend de chaque document et est généré lors de la création du document.
Typiquement un document peut créer des objets à la place de certains arrays pour simplifier la définition
des traitements.
Le format interne peut être stocké dans les fichiers .pser
Un document peut correspondre à une classe Php et à un schéma JSON particuliers indiqués au travers du champ $schema

journal

11/12/2020:
  - installation 'composer require michelf/php-markdown' au lieu de l'utilisation de '../markdown/markdown'
11/7/2020:
  - transfert de la fonction error() depuis id.php
18/4/2020:
  - ajout pour pouvoir créer un doc en CLI d'un paramètre à new_doc(), ydread(), ydsetWriteAccess()
3/4/2020:
  - transfert de id.php dans getDocidYpathFromPath() de la logique de décomposition du chemin d'un fragment
    en [$docid, $ypath]
  - ajout de la fonction getFragmentFromPath() permettant de récupérer de l'extérieur un fragment à partir
    de l'id de son store et du chemin dans le store
28/12/2019:
- ajout showAsHtmlDoc()
28/9/2019:
- utilisation d'un répertoire vendor local
31/7/2019:
- ajout de la possibilité d'avoir plusieurs schema et d'utiliser le premier pour typer le document
25/2/2019:
- amélioration de la récriture des URL dans showText() et showString()
24/2/2019:
- la définition d'une classe YamlDoc se fait en affectant au champ $schema une chaine respectant le motif
  YamlDoc::SCHEMAURIPATTERN
23/2/2019:
- le schéma d'un doc auto-structuré est défini dans le champ $schema
15/2/2019:
- dans showString() une URL vers http://id.georef.eu/{id} est renvoyée vers id.php/{id}
5/2/2019:
- chgt de spec - un php renvoie un array Php au lieu d'un objet YamlDoc
25/1/2019:
- remplacement du mot-clé YamlClass par l'utilisation de $schema avec un URI commencant par YamlDoc::SCHEMAURIPREFIX
3/1/2019:
- améliorations
- ajout de tests unitaires
22/8/2018:
- réécriture de ydext()
28/7/2018:
- utilisation de la classe Store pour déterminer le store
25/7/2018:
- ajout fabrication pser pour document php
21/7/2018:
- correction d'un bug dans showString() pour afficher les liens
18/7/2018:
- restructuration des classes
  - la classe YamlDoc est une classe abstraite de n'importe quel document, elle porte les méthodes génériques
  - les documents par défaut sont définis par la classe BasicYamlDoc
- réorganisation des fichiers
- l'ancien yd.inc.php est scindé en 3 fichiers
  - yd.inc.php qui contient les fonctions
  - yamldoc.inc.php qui contient la définition de la classe abstraite YamlDoc et de l'interface YamlDocElement
  - basicyamldoc.inc.php qui contient la définition de la classe BasicYamlDoc
16/7/2018:
- correction de yread() pour écrire les index
15/7/2018:
- ajout du paramètre docid dans les méthodes show()
11/7/2018:
- les liens Markdown internes au document sont remplacés par un lien indiquant le document courant
29/6-2/7/2018:
- gestion multi-store
- modification de la signature de plusieurs fonctions
12/6/2018:
- correction d'un bug
10/6/2018:
- modification de l'affichage d'un texte et d'une chaine
- une chaine qui commence par http:// ou https:// est remplacée à l'affichage par un lien
- pour un texte, 3 possibilités de formattage:
  - 'si le texte commence par "Content-Type: text/plain\n" alors affichage du texte brut'
  - si le texte commence par "\n" alors affichage du texte considéré comme du HTML
  - sinon le texte est considéré comme du Markdown
9/6/2018:
- modification de showDoc() pour qu'un texte derrière un > soit représenté comme chaine et pas comme texte
- amélioration de l'export en Yaml et JSON notamment des dates
- remplacement des appels des méthodes yaml() et json() sur les YamlDocElement par un appel à php()
7/6/2018:
- traitement du cas $data==null dans YamlDoc::sextract()
- appel des méthodes YamlData::yaml() et YamlData::json()
3/6/2018:
- dans new_yamlDoc() utilisation de la version sérialisée du doc si elle existe et est plus récente que le Yaml
25/5/2018:
- ajout de la gestion des dates lors du parse et pour l'affichage
12/5/2018:
- protection en écriture
- modif new_yamlDoc()
- ajout mécanisme simple de verrouillage des documents en cours de mise à jour
- scission avec catalog.inc.php
11/5/2018:
- migration de Spyc vers https://github.com/symfony/yaml
10/5/2018:
- modif ydwrite(), ydread() et yddelete()
  à l'écriture du document l'extension .php ou .yaml est choisie en fonction du contenu
  à la lecture, on regarde sur le yaml existe sinon on prend le php
6/5/2018:
- traitement des path avec , imbriquées du type:
    doc=baseadmin
    ypath=/tables/name=regionmetro/data/code=84/code,title,(json-ld/geo),(depts/code,title)
- ajout de sort uniquement sur une clé et sans asc/desc
3-4/5/2018:
- traitement de ypath
- y.c. traiter des requêtes du type: ypath=/data/title,(json-ld/geo/box)
1/5/2018:
- refonte pour index.php v2
19/4/2018:
- suppression du cryptage
18/4/2018:
- première version