Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

52
LINES

< > BotCompany Repo | #267 // JSON Minify in Lua

Lua code

  function minify(jsonString)
    local in_string = false
    local in_multiline_comment = false
    local in_singleline_comment = false
    local string_opener

    local out = {}
    for i=1, #jsonString do
      -- get next (c) and next-next character (cc)

      local c = jsonString:sub(i, i)
      local cc = jsonString:sub(i, i+2)

      -- big switch is by what mode we're in (in_string etc.)
      if in_string then
        if c == string_opener then
          in_string = false
          table.insert(out, c)
        elseif c == '\\' then -- no special treatment needed for \\u, it just works like this too
          table.insert(out, cc)
          i=i+1
        else
          table.insert(out, c)
        end
      elseif in_singleline_comment then
        if c == '\r' or c == '\n' then
          in_singleline_comment = false
        end
      elseif in_multiline_comment then
        if cc == "*/" then
          in_multiline_comment = false
          i=i+1
        end
      else
        -- we're outside of the special modes, so look for mode openers (comment start, string start)
        if cc == "/*" then
          in_multiline_comment = true
          i=i+1
        elseif cc == "//" then
          in_singleline_comment = true
          i=i+1
        elseif c == '"' or c == '\'' then
          in_string = true
          string_opener = c
          table.insert(out, c)
        elseif c ~= ' ' and c ~= '\t' and c ~= '\r' and c ~= '\n' then
          table.insert(out, c)
        end
      end
    end
    return table.concat(out)
  end

Author comment

Translation of http://jsonminify.tinybrain.de

test run  test run with input  download  show line numbers   

Travelled to 12 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt

No comments. add comment

Image recognition results

Recognizer Recognition Result Visualize Recalc
#308 1612 [visualize]

Snippet ID: #267
Snippet name: JSON Minify in Lua
Eternal ID of this version: #267/1
Text MD5: d07b53e5bcdbaa12bcbeb1184a49dde0
Author: stefan
Category: tools
Type: Lua code
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2014-03-29 22:40:46
Source code size: 1612 bytes / 52 lines
Pitched / IR pitched: Yes / Yes
Views / Downloads: 1149 / 299
Referenced in: #3000382 - Answer for ferdie (>> t = 1, f = 0)
#3000383 - Answer for funkoverflow (>> t=1, f=0 okay)