function solution(input, cmd)
-- parse all <name>="<bla>" (key/value pairs)
local i, values, pos = 0, {}, {}
local j, k, v
while true do
j, i, k, v = string.find(input, '([a-zA-Z]+)="([^"]*)"', i+1)
if not j then break end
values[k] = v
pos[k] = {j+#k+2, i}
end
-- cmd = "copy <key1> to <key2>"
local key1, key2 = cmd:match("copy ([%S]+) to ([%S]+)")
if not key1 then error("Could not parse command: "..cmd) end
-- look up key1
local value = values[key1]
if not value then error("attribute "..key1.." not found") end
-- paste after key2 in input (removing the old value)
if not pos[key2] then error("attribute "..key2.." not found") end
local i, j = unpack(pos[key2])
input = input:sub(1, i-1)..value..input:sub(j)
return input
endtest 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
| Recognizer | Recognition Result | Visualize | Recalc |
|---|---|---|---|
| #308 | 808 | [visualize] |
| Snippet ID: | #41 |
| Snippet name: | copy attributes around in HTML sources |
| Eternal ID of this version: | #41/1 |
| Text MD5: | e624ef718ed08d9834a33bdd6931b29a |
| Author: | stefan |
| Category: | |
| Type: | Lua code |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2013-12-22 13:19:22 |
| Source code size: | 808 bytes / 26 lines |
| Pitched / IR pitched: | Yes / Yes |
| Views / Downloads: | 1865 / 489 |
| Referenced in: | [show references] |