[IMP] Lua script - copy images and create their link to be displayed in
homepage
This commit is contained in:
		| @ -3,7 +3,7 @@ | |||||||
|          <span class="element"> |          <span class="element"> | ||||||
|            ${ELEMENT_TITLE} <br /> |            ${ELEMENT_TITLE} <br /> | ||||||
|  |  | ||||||
|            <img src="${IMG_URL}" alt="${IMG_DESC}" title="${IMG_TITLE}" /> |            <img src="${IMG_URL}" alt="${IMG_DESC}" title="${ELEMENT_DESC}" /> | ||||||
|          </span> |          </span> | ||||||
|        </a> |        </a> | ||||||
|      </li> |      </li> | ||||||
|  | |||||||
							
								
								
									
										57
									
								
								porteail.lua
									
									
									
									
									
								
							
							
						
						
									
										57
									
								
								porteail.lua
									
									
									
									
									
								
							| @ -15,6 +15,8 @@ local currentpath = os.getenv('CURDIR') or '.' | |||||||
| local default_dir_category = 'categ' | local default_dir_category = 'categ' | ||||||
| local default_dir_component = 'composants' | local default_dir_component = 'composants' | ||||||
| local default_dir_destination = 'porteail' | local default_dir_destination = 'porteail' | ||||||
|  | local default_dir_img_destination = 'image' | ||||||
|  | local default_dir_img_source = 'img' | ||||||
| -- Default files values | -- Default files values | ||||||
| local default_img_filename = 'generique.png' | local default_img_filename = 'generique.png' | ||||||
| local default_index_filename = 'index.html' | local default_index_filename = 'index.html' | ||||||
| @ -80,9 +82,30 @@ function basename (string, suffix) | |||||||
|   return basename |   return basename | ||||||
| end | end | ||||||
|  |  | ||||||
| function process(filepath, template_categ, template_element) | function processImage(image, source, img_destination, destination, default_img) | ||||||
|  |   -- if no image given, use default one | ||||||
|  |   if not image or image == nil or image == '' then | ||||||
|  |     image = default_img | ||||||
|  |   end | ||||||
|  |   -- create image weblink | ||||||
|  |   result = img_destination .. '/' .. basename(image) | ||||||
|  |   -- check if this image exists | ||||||
|  |   attr = lfs.attributes(destination .. '/' .. result) | ||||||
|  |   if not attr then | ||||||
|  |     img_path = source .. '/' .. image | ||||||
|  |     f = assert(io.open(img_path, 'rb')) | ||||||
|  |     img_src = assert(f:read('*a')) | ||||||
|  |     assert(f:close()) | ||||||
|  |     img_dest = assert(io.open(destination .. '/' .. result, 'wb')) | ||||||
|  |     assert(img_dest:write(img_src)) | ||||||
|  |     assert(img_dest:close()) | ||||||
|  |   end | ||||||
|  |   return result | ||||||
|  | end | ||||||
|  |  | ||||||
|  | function process(filepath, template_categ, template_element, img_destination, destination, img_source, default_img) | ||||||
|   -- parse given file |   -- parse given file | ||||||
|   result = template_categ |   local categ_page = '' | ||||||
|   local elements = {} |   local elements = {} | ||||||
|   for line in io.lines(filepath) do |   for line in io.lines(filepath) do | ||||||
|     local element = '' |     local element = '' | ||||||
| @ -97,7 +120,7 @@ function process(filepath, template_categ, template_element) | |||||||
|       for t in string.gmatch(line, '%[%[(.*)%]%].*') do title = title .. t end |       for t in string.gmatch(line, '%[%[(.*)%]%].*') do title = title .. t end | ||||||
|       description ='' |       description ='' | ||||||
|       for d in string.gmatch(line, '%[%[.*%]%](.*)') do description = description .. d end |       for d in string.gmatch(line, '%[%[.*%]%](.*)') do description = description .. d end | ||||||
|       result = replace(result, {CATEG_TITLE=title, CATEG_DESC=description}) |       categ_page = replace(template_categ, {CATEG_TITLE=title, CATEG_DESC=description}) | ||||||
|     elseif is_element then |     elseif is_element then | ||||||
|       title = '' |       title = '' | ||||||
|       description = '' |       description = '' | ||||||
| @ -107,9 +130,10 @@ function process(filepath, template_categ, template_element) | |||||||
|       for d in string.gmatch(line, '.*##.*##(.*)##.*') do description = description .. d end |       for d in string.gmatch(line, '.*##.*##(.*)##.*') do description = description .. d end | ||||||
|       for u in string.gmatch(line, '.*##(.*)##.*##.*') do url = url .. u end |       for u in string.gmatch(line, '.*##(.*)##.*##.*') do url = url .. u end | ||||||
|       for i in string.gmatch(line, '.*##.*##.*##(.*)') do img = img .. i end |       for i in string.gmatch(line, '.*##.*##.*##(.*)') do img = img .. i end | ||||||
|       -- FIXME: do img process to have url, copy it and have a description |       img_description = " " | ||||||
|       img_title = basename(img) |       img_url = processImage(img, img_source, img_destination, destination, default_img) | ||||||
|       element = replace(template_element, {ELEMENT_URL=url, ELEMENT_DESC=description, ELEMENT_TITLE=title, IMG_TITLE=img_title}) |       url = url:gsub('%&', '%&') | ||||||
|  |       element = replace(template_element, {ELEMENT_URL=url, ELEMENT_DESC=description, ELEMENT_TITLE=title, IMG_URL=img_url, IMG_DESC=img_description}) | ||||||
|       table.insert(elements, element) |       table.insert(elements, element) | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| @ -117,7 +141,7 @@ function process(filepath, template_categ, template_element) | |||||||
|   for k, v in pairs(elements) do |   for k, v in pairs(elements) do | ||||||
|     text_elements = text_elements .. v |     text_elements = text_elements .. v | ||||||
|   end |   end | ||||||
|   result = replace(result, {ELEMENTS=text_elements}) |   local result = replace(categ_page, {ELEMENTS=text_elements}) | ||||||
|   return result |   return result | ||||||
| end | end | ||||||
|  |  | ||||||
| @ -130,11 +154,14 @@ config = getConfig(configFile) | |||||||
| categ = config['CATEGORIES'] or default_dir_category | categ = config['CATEGORIES'] or default_dir_category | ||||||
| component = config['COMPOSANTS'] or default_dir_component | component = config['COMPOSANTS'] or default_dir_component | ||||||
| destination = config['CIBLE'] or default_dir_destination | destination = config['CIBLE'] or default_dir_destination | ||||||
|  | img_destination = config['CIBLE_IMAGE'] or default_dir_img_destination | ||||||
|  | img_source = config['IMAGES'] or default_dir_img_source | ||||||
| -- create values for files | -- create values for files | ||||||
| index_filename = config['INDEX'] or default_index_filename | index_filename = config['INDEX'] or default_index_filename | ||||||
| main_template = config['TEMPLATE_INDEX'] or default_template_index_filename | main_template = config['TEMPLATE_INDEX'] or default_template_index_filename | ||||||
| template_categ_filename = config['TEMPLATE_CATEG'] or default_template_categ_filename | template_categ_filename = config['TEMPLATE_CATEG'] or default_template_categ_filename | ||||||
| template_element_filename = config['TEMPLATE_ELEMENT'] or default_template_element_filename | template_element_filename = config['TEMPLATE_ELEMENT'] or default_template_element_filename | ||||||
|  | default_img = config['DEFAUT_IMG'] or default_img_filename | ||||||
| -- other default values | -- other default values | ||||||
| categ_extension = config['CATEGORIES_EXT'] or default_categ_extension | categ_extension = config['CATEGORIES_EXT'] or default_categ_extension | ||||||
|  |  | ||||||
| @ -152,6 +179,15 @@ assert(template_element_file:close()) | |||||||
| local introduction = '' | local introduction = '' | ||||||
| local menu = '' | local menu = '' | ||||||
|  |  | ||||||
|  | -- Check if public directory exists | ||||||
|  | if lfs.attributes(destination) == nil then | ||||||
|  |   assert(lfs.mkdir(destination)) | ||||||
|  | end | ||||||
|  | -- Check if image directory exists | ||||||
|  | if lfs.attributes(destination .. '/' .. img_destination) == nil then | ||||||
|  |   assert(lfs.mkdir(destination .. '/' .. img_destination)) | ||||||
|  | end | ||||||
|  |  | ||||||
| -- Browse categ directory | -- Browse categ directory | ||||||
| local categories_files = listing (currentpath .. '/' .. categ, categ_extension) | local categories_files = listing (currentpath .. '/' .. categ, categ_extension) | ||||||
| local content = '' | local content = '' | ||||||
| @ -160,18 +196,13 @@ if categories_files then | |||||||
|     -- read category content |     -- read category content | ||||||
|     attr = lfs.attributes(v) |     attr = lfs.attributes(v) | ||||||
|     if attr and attr.mode == 'file' then |     if attr and attr.mode == 'file' then | ||||||
|       content = content .. process(v, template_categ, template_element) |       content = content .. process(v, template_categ, template_element, img_destination, destination, img_source, default_img) | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| else | else | ||||||
|   print ("-- No category file found!") |   print ("-- No category file found!") | ||||||
| end | end | ||||||
|  |  | ||||||
| -- Check if public directory exists |  | ||||||
| if lfs.attributes(destination) == nil then |  | ||||||
|   assert(lfs.mkdir(destination)) |  | ||||||
| end |  | ||||||
|  |  | ||||||
| -- Create index file in destination directory | -- Create index file in destination directory | ||||||
| result = assert(io.open(destination .. '/' .. main_template, 'wb')) | result = assert(io.open(destination .. '/' .. main_template, 'wb')) | ||||||
| -- create substitution table | -- create substitution table | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Olivier DOSSMANN
					Olivier DOSSMANN