-----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
