diff --git a/categ/display.lua b/categ/display.lua new file mode 100755 index 0000000..c8359eb --- /dev/null +++ b/categ/display.lua @@ -0,0 +1,58 @@ +#!/usr/bin/env lua + +-- display.lua +-- Display content of a file and attempt to match some specific words +-- author: Olivier DOSSMANN (olivier+lua@dossmann.net) + +--[[ requirement ]]-- +require 'lfs' -- apt-get install liblua5.1-filesystem0 || luarocks install luafilesystem + +function process(filepath) + -- parse given file + for line in io.lines(filepath) do + -- check if this line is a comment ("# my comment"), a category ("[[My category]]Its description") or an element ("Title##Description##URL##Image") + is_comment = string.find(line, '^#(.*)') + is_title = string.find(line, '%[%[(.*)%]%](.*)') + is_element = string.find(line, '(.*)##(.*)##(.*)##(.*)') + if is_comment then + -- do nothing because it's a comment + elseif is_title then + title = '' + for t in string.gmatch(line, '%[%[(.*)%]%].*') do title = title .. t end + description ='' + for d in string.gmatch(line, '%[%[.*%]%](.*)') do description = description .. d end + print("TITLE: " .. '\n\t' .. title .. '\n\t' .. description) + elseif is_element then + title = '' + description = '' + url = '' + img = '' + for t in string.gmatch(line, '(.*)##.*##.*##.*') do title = title .. t end + for d in string.gmatch(line, '.*##(.*)##.*##.*') do description = description .. d end + for u in string.gmatch(line, '.*##.*##(.*)##.*') do url = url .. u end + for i in string.gmatch(line, '.*##.*##.*##(.*)') do img = img .. i end + print("ELEMENT: " .. '\n\t' .. title .. '\n\t' .. description .. '\n\t' .. url .. '\n\t' .. img) + end + end +end + +function help() + print('Usage: ' .. arg[0] .. ' FILE...') +end + +if arg and table.getn(arg) > 0 then + for i, file in pairs(arg) do + if i > 0 then + attr = lfs.attributes(file) + if attr and attr.mode == 'file' then + process(file) + else + print('INFO: ' .. file .. ' is not a file or doesn\'t exists.') + end + end + end +else + print('WARNING: No argument given.') + help() + os.exit(1) +end