I have a file with content like this:

item({
     ["attr"] = {
        ["size"] = "62091";
        ["filename"] = "qBuUP9-OTfuzibt6PQX4-g.jpg";
        ["stamp"] = "2023-12-05T19:31:37Z";
        ["xmlns"] = "urn:xmpp:http:upload:0";
        ["content-type"] = "image/jpeg";
     };
     ["key"] = "Wa4AJWFldqRZjBozponbSLRZ";
     ["with"] = "email@address";
     ["when"] = 1701804697;
     ["name"] = "request";
});

I need to know what format this is, and if there exists a tool in linux already to parse this or if I need to write one myself?

Thanks!

  • theit8514@lemmy.world
    link
    fedilink
    arrow-up
    3
    ·
    7 months ago

    This looks like a combination of JSONP and the ES2015 computed property name syntax. JSONP is used to load into web pages using a script tag and execute the function (item) with the data, rather than a direct response from Ajax.

    As for tools, jq may be able to parse this assuming you remove the item( and the last );

    • nybble41@programming.dev
      link
      fedilink
      arrow-up
      5
      ·
      edit-2
      7 months ago

      It’s similar, but JavaScript would use : and , for separators rather than = and ;.

      This is valid Lua table syntax, however. A program creates an embedded Lua environment with an item callback function and runs this file inside it. Something similar could be done to convert it to another format; just define item to output the data as JSON, or whatever other format you prefer.

      The Prosody XMPP server, written in Lua, generates files of this type when serializing lists with the “internal” storage manager. See functions list_store and list_load in util/datamanager.lua.

      • sloppy_diffuser@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        1
        ·
        7 months ago

        Possibly lua? I think it supports brackets and semi-colon from a quick google search, but I could be wrong. Not able to test this moment.