mario-deluna / hip
Ultra F***ing simple human readable data serialization.
1.0.0
2015-01-23 18:25 UTC
This package is auto-updated.
Last update: 2024-11-12 08:32:41 UTC
README
Human Input / Simple human readable data markup.
name: "Hip" type: "Markup language" version: 1.0 tags: "markup", "serialization", "language"
Hip does not try to replace any data markups or create a new standard. The target of hip is to be readable and writable by non-technicals folks without out having to explain the syntax.
FAQ
- Why should I use this? Sorry dude I don't know.. This data parser is an experiment and will maybe be implemented into the ClanCatsFramework 2.1. If you are looking for an approved and stable data serialization format use YAML. If you believe Hip could be useful, feel free, every user makes me happy :)
Installation
This Hip parser is written in PHP using PSR-4 autoloading you can install it using composer.
"require":
{
"mario-deluna/hip": "dev-master"
}
Usage
Encoding / Decoding
Decode a hip data string to an array:
Hip\Hip::decode( $hipString );
Encode an array to a hip data string:
Hip\Hip::decode( $myArray );
Reading / Writing files
Read hip file:
Hip\Hip::read( 'my/path/to/file.hip' );
Write hip file:
Hip\Hip::write( 'my/path/to/file.hip', $myArray );
Hip syntax
Simple key values
name: "Zaphod beeblebrox" job: "President of the Galaxy"
wich equals
{ "name": "Zaphod beeblebrox", "job": "President of the Galaxy" }
Multi layer
recipe: duration: 60 ingredients: "eggs", "bacon", "cream", "leek"
wich equals
{ "recipe": { "duration": 60, "ingredients": [ "eggs", "bacon", "cream", "leek" ] } }
Array lists
instruments: - name: "Guitar" strings: 6 -- name: "Bass" strings: 4 -
wich equals
{ "instruments": [ { "name": "Guitar", "strings": 6 }, { "name": "Bass", "strings": 4 } ] }
data types
string: "Hello World" integer: 42 float: 3.14 yepBool: yes nopeBool: no nothing: nil
wich equals
{ "string": "Hello World", "integer": 42, "float": 3.14, "yepBool": true, "nopeBool": false, "nothing": null }
TODO
- Hip config object / utility
- Automatic detect the level indicator ( space, tab etc. )
- more tests...