-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

yeah, well then, silly me :)

thanks for the gotcha with templating through the default value, you
actually saved the mailing list from another message from me in the
future :)

cheers

On 28/07/2011 00:52, Romain Beauxis wrote:
> 2011/7/27 okay_awright <[email protected]>:
>> hello everyone,
> 
> Hi!
> 
>> I'm currently migrating and translating all my perl webservice adapters
>> into liquidsoap scripting language (it's amazing what's new since
>> 0.91!), but I've stumbled upon something really odd: of_json is not
>> recognized as a built-in function.
> 
> of_json was just commited 3 days ago and should be part of the next
> beta3 release which should come quite soon (say about a week).
> 
> If you want to use it, you will have to compile the latest HG default
> branch, which I would recommend anyway considering the important bugs
> in harbor that are fixed there.
> 
> By the way, we have to write a proper documentation for of_json but
> let me write a few words about it now that we are talking about it :-)
> 
> In liquidsoap, we need to know the type of everything we manipulate.
> Thus, we can't just have a function of_json of the type:
>   string -> 'a ('a means "anything")
> because we would not be able to know later what is 'a exactly..
> Thus, the function is of type:
>   (default:'a, string) -> 'a
> In this case, if you pass, say, an integer as the default value, then
> we know that the result of of_json will also be an integer. (minor
> note: the json RFC specify that a proper JSON string is an array or an
> object. We also accept simple integers, floats, strings and null).
> 
> This means that, when you use it, you need to provide a default value
> which will be returned in case parsing fails.
> 
> Let's take an example. Suppose that we want to receive a list of
> metadata, encoded as an object:
> { "title": "foo",
>   "artist": "bar" }
> Then, you would use of_json with a default value:
>   [("error","fail")]
> and do:
> # Parse metadata from json
> m = of_json(default= [("error","fail")], json_string)
> 
> In this case, we know exactly what type of data will be parsed from
> the json string. Moreover, the type of the default value will also
> constraint the parser. For instance, in the above example, a json
> string "[1,2,3,4]" will not be accepted and the function will return
> the values passed as default.
> 
> Finally, you can use the default value in two different ways:
>  * To detect that the received json string was invalid/could not be
> parsed to the expected type. In the example above, if of_json return a
> metadata value of [("error","fail")] (the default) then you can detect
> in your code that parsing has failed and return an error to your
> client.
>  * As a default value for the rest of the script, if you do not want
> to care about parsing errors.. This can be useful for instance for
> json-rpc notifications, which should not send any response to the
> client anyway..
> 
> That's all for today, please let us know what awesome things you do
> with liquidsoap and json :-)
> 
> Romain

- -- 
best regards,

okay_awright
<okay_awright AT ddcr DOT biz>
[PGP key on request]
-----BEGIN PGP SIGNATURE-----

iQEcBAEBAgAGBQJOMJlTAAoJEN2X/7ng71pT0H4H/0IAHDbFHue1qjlbxlWM1Cnn
7tBHeoWCdu9CSwNWxTbV0nOnL4UJ5s8p24ivLeHseZK87BRg4nzSg3xTTNVL8EH4
RNpHJ1QsFKUhw8RCKLeu3VX+NS2qtPBuk2yl4OdbASdI7/OE5YQB1jc964i6u94+
hbjuq0lZELvzcACUz1f9rBRVvLfoSffIZx+pI+dFAN/I8jPu/GJGOXzv3LItBjOP
0S9RxuR+PgME0xRl24b8du7SayrnvHYHPs3aA+J97GQzE7qKGjHSptkpdbT4UqUQ
cDzYFi2LT1ZbF2unumR+ZDpTlw/FM6Y2nJOgZTtCDT+wGjzzjeh2DkaiwNGYbcI=
=hkND
-----END PGP SIGNATURE-----

------------------------------------------------------------------------------
Got Input?   Slashdot Needs You.
Take our quick survey online.  Come on, we don't ask for help often.
Plus, you'll get a chance to win $100 to spend on ThinkGeek.
http://p.sf.net/sfu/slashdot-survey
_______________________________________________
Savonet-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/savonet-users

Reply via email to