[ADD] Example of what could be done to display a category content
This commit is contained in:
		
							
								
								
									
										58
									
								
								categ/display.lua
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										58
									
								
								categ/display.lua
									
									
									
									
									
										Executable file
									
								
							@@ -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
 | 
				
			||||||
		Reference in New Issue
	
	Block a user