История изменений
Исправление LINUX-ORG-RU, (текущая версия) :
Херня какая-то получилась. Всё чаще за собой обнаруживаю что я теряюсь когда дело заходит о комбинациях чего либо.
Кабзда… Деменция и разжижение мозжечка не иначе
local function expand(inp)
local out = { }
local box = { }
local pre = box
for x in inp:gmatch('{(.-)}') do
box.block = x
box.items = { }
box.next_box = { }
for y in (x..','):gmatch('(.-),') do
box.items[#box.items + 1] = y
end
box = box.next_box
end
local function substritute(inp,box,out)
if box and box.items then
for i,_ in ipairs(box.items) do
local item = inp:gsub(box.block,box.items[i])
if not item:find(',') then
out[#out+1] = item
end
substritute(item,box.next_box,out);
end
end
end
substritute(inp,pre,out)
for k,v in ipairs(out) do
out[k] = v:gsub('{',''):gsub('}','')
end
print(table.concat(out,'\n'))
end
expand("~/{.local/share,.config,.cache}/{foo,bar}-package")
Работает строго с единичными {вариантами,для,подмены}
, без выкрутасов и фичей что в шапке описаны.
dron@gnu:~/Рабочий-стол$ lua test.lua
~/.local/share/foo-package
~/.local/share/bar-package
~/.config/foo-package
~/.config/bar-package
~/.cache/foo-package
~/.cache/bar-package
dron@gnu:~/Рабочий-стол$
Но даже такая штука мне самому пригодится, закину тоже в закладки профиля. Только при случае надо переписать.
Каковое моё место в таблице лидеров чемпионата? Первый!! Снизу? :D
И каков мой приз?!!11
И где все участники?…
Исправление LINUX-ORG-RU, :
Херня какая-то получилась. Всё чаще за собой обнаруживаю что я теряюсь когда дело заходит о комбинациях чего либо.
Кабзда… Деменция и разжижение мозжечка не иначе
local function expand(inp)
local out = { }
local box = { }
local pre = box
for x in inp:gmatch('{(.-)}') do
box.block = x
box.items = { }
box.next_box = { }
for y in (x..','):gmatch('(.-),') do
box.items[#box.items + 1] = y
end
box = box.next_box
end
local function substritute(inp,box,out)
if not box or not box.items or #box.items == 0 then
return
end
for i=1,#box.items do
local item = inp:gsub(box.block,box.items[i])
if not item:find(',') then
out[#out+1] = item
end
substritute(item,box.next_box,out);
end
end
substritute(inp,pre,out)
for k,v in ipairs(out) do
out[k] = v:gsub('{',''):gsub('}','')
end
print(table.concat(out,'\n'))
end
local input = "~/{.local/share,.config,.cache}/{foo,bar}-package"
expand(input)
Работает строго с единичными {вариантами,для,подмены}
, без выкрутасов и фичей что в шапке описаны.
dron@gnu:~/Рабочий-стол$ lua test.lua
~/.local/share/foo-package
~/.local/share/bar-package
~/.config/foo-package
~/.config/bar-package
~/.cache/foo-package
~/.cache/bar-package
dron@gnu:~/Рабочий-стол$
Но даже такая штука мне самому пригодится, закину тоже в закладки профиля. Только при случае надо переписать.
Каковое моё место в таблице лидеров чемпионата? Первый!! Снизу? :D
И каков мой приз?!!11
И где все участники?…
Исправление LINUX-ORG-RU, :
Херня какая-то получилась. Всё чаще за собой обнаруживаю что я теряюсь когда дело заходит о комбинациях чего либо. Кабзда… Деменция и разжижение мозжечка не иначе
local function expand(inp)
local out = { }
local box = { }
local pre = box
for x in inp:gmatch('{(.-)}') do
box.block = x
box.items = { }
box.next_box = { }
for y in (x..','):gmatch('(.-),') do
box.items[#box.items + 1] = y
end
box = box.next_box
end
local function substritute(inp,box,out)
if not box or not box.items or #box.items == 0 then
return
end
for i=1,#box.items do
local item = inp:gsub(box.block,box.items[i])
if not item:find(',') then
out[#out+1] = item
end
substritute(item,box.next_box,out);
end
end
substritute(inp,pre,out)
for k,v in ipairs(out) do
out[k] = v:gsub('{',''):gsub('}','')
end
print(table.concat(out,'\n'))
end
local input = "~/{.local/share,.config,.cache}/{foo,bar}-package"
expand(input)
Работает строго с единичными {вариантами,для,подмены}
, без выкрутасов и фичей что в шапке описаны.
dron@gnu:~/Рабочий-стол$ lua test.lua
~/.local/share/foo-package
~/.local/share/bar-package
~/.config/foo-package
~/.config/bar-package
~/.cache/foo-package
~/.cache/bar-package
dron@gnu:~/Рабочий-стол$
Но даже такая штука мне самому пригодится, закину тоже в закладки профиля. Только при случае надо переписать.
Каковое моё место в таблице лидеров чемпионата? Первый!! Снизу? :D
И каков мой приз?!!11
И где все участники?…
Исправление LINUX-ORG-RU, :
Херня какая-то получилась. Всё чаще за собой обнаруживаю что я теряюсь когда дело заходит о комбинациях чего либо. Кабзда… Деменция и разжижение мозжечка не иначе
local function expand(inp)
local out = { }
local box = { }
local pre = box
for x in inp:gmatch('{(.-)}') do
box.block = x
box.items = { }
box.next_box = { }
for y in (x..','):gmatch('(.-),') do
box.items[#box.items + 1] = y
end
box = box.next_box
end
local function substritute(inp,box,out)
if not box or not box.items or #box.items == 0 then
return
end
for i=1,#box.items do
local item = inp:gsub(box.block,box.items[i])
if not item:find(',') then
out[#out+1] = item
end
substritute(item,box.next_box,out);
end
end
substritute(inp,pre,out)
for k,v in ipairs(out) do
out[k] = v:gsub('{',''):gsub('}','')
end
print(table.concat(out,'\n'))
end
local input = "~/{.local/share,.config,.cache}/{foo,bar}-package"
expand(input)
Работает строго с единичными {вариантами,для,подмены}
, без выкрутасов и фичей что в шапке описаны.
dron@gnu:~/Рабочий-стол$ lua test.lua
~/.local/share/foo-package
~/.local/share/bar-package
~/.config/foo-package
~/.config/bar-package
~/.cache/foo-package
~/.cache/bar-package
dron@gnu:~/Рабочий-стол$
Но даже такая штука мне самому пригодится, закину тоже в закладки профиля. Только при случае надо переписать.
Каковое моё место в таблице лидеров чемпионата? Первый!! Снизу? :D
И каков мой приз?!!11
Исходная версия LINUX-ORG-RU, :
Херня какая-то получилась. Всё чаще за собой обнаруживаю что я теряюсь когда дело заходит о комбинациях чего либо. Кабзда… Деменция и разжижение мозжечка не иначе
local function expand(inp)
local out = { }
local box = { }
local pre = box
for x in inp:gmatch('{(.-)}') do
box.block = x
box.items = { }
box.next_box = { }
for y in (x..','):gmatch('(.-),') do
box.items[#box.items + 1] = y
end
box = box.next_box
end
local function substritute(inp,box,out)
if not box or not box.items or #box.items == 0 then
return
end
for i=1,#box.items do
local item = inp:gsub(box.block,box.items[i])
if not item:find(',') then
out[#out+1] = item
end
substritute(item,box.next_box,out);
end
end
substritute(inp,pre,out)
for k,v in ipairs(out) do
out[k] = v:gsub('{',''):gsub('}','')
end
print(table.concat(out,'\n'))
end
local input = "~/{.local/share,.config,.cache}/{foo,bar}-package"
expand(input)
Работает строго с единичными {вариантами,для,подмены}
, без выкрутасов и фичей что в шапке описаны.
dron@gnu:~/Рабочий-стол$ lua test.lua
~/.local/share/foo-package
~/.local/share/bar-package
~/.config/foo-package
~/.config/bar-package
~/.cache/foo-package
~/.cache/bar-package
dron@gnu:~/Рабочий-стол$
Но даже такая штука мне самому пригодится, закину тоже в закладки профиля. Только при случае надо переписать.