cross-posted from: https://lemmy.nz/post/4294116

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!

  • vrighter@discuss.tchncs.de
    link
    fedilink
    arrow-up
    5
    ·
    edit-2
    2 年前

    assuming you run it in the right lua environment. The item function must be defined, and we’re only speculating about its return value without seeing proper docs, or the source

    • ∟⊔⊤∦∣≶@lemmy.nzOP
      link
      fedilink
      arrow-up
      5
      ·
      2 年前

      Item is a function?

      Well actually, yeah thats kinda obvious isn’t it now I look at the whole thing.

      Thats fine, I’ll just use a bit of the old sed and json it.

      Aha I have avoided learning Lua yet again!

      • vrighter@discuss.tchncs.de
        link
        fedilink
        arrow-up
        2
        ·
        2 年前

        the code is constructing a table, and passing it to a function called item. But if all you need is the data, you can just remove the function call and assign the table to a variable like so: local myvar = {…}.

        then you can just manipulate the table as usual.

        • ∟⊔⊤∦∣≶@lemmy.nzOP
          link
          fedilink
          arrow-up
          3
          ·
          2 年前

          Unfortunately, this sequence is repeated many many times, so I would need to do a for-each and construct a new table for each inner section…

          There’s gotta be a better way. Time to read the source code and hijack whatever item() is doing.