#!/usr/bin/gawk -f ## Readme. ## This script automatically builds html-file with icons in a Context-directory of Icon Theme. ## It requires GAWK (GNU Awk scripting language -- not POSIX-awk, mawk or nawk!). ## To use this script, make it executable (chmod +x table_grassmunk.awk), then run it in a context folder, for example: ### [user@computer places]$ table_grassmunk.awk > places.html ## It will create a HTML-file with table of found icons Grassmunk's decoration. ## The structure of theme MUST be as: ### Theme/Context/Size/icon.png ### For example: SE98/places/48/user-desktop.png ## (NOT ThemeName/places/48X48/user-desktop.png ## and NOT ThemeName/48X48/places/user-desktop.png ## and NOT ThemeName/48/places/user-desktop.png) @load "readdir" @load "filefuncs" function capital(word){ #Make first letter capital return toupper(substr(word,1,1)) tolower(substr(word,2,length(word))) } function iconames(dirar,iconarr,lnarr, i,pwdi,lnfil){ #Get all names of .png icons in this context for(i in dirar){ #split("",lnarr) pwdi=ENVIRON["PWD"]"/"i fs=FS FS="/" while((getline0){ if($3~/(f|l)/&&$2~/\.(pn|sv)g$/)(all_iconar[$2]) if($3~"f"&&$2~/\.png$/){gsub(/\.[^.]*$/,"",$2);iconarr[$2];dirnam=i"/"$2;existar[dirnam]=dirnam} if($3~"l"&&$2~/\.png$/){ #split("",lnarr) #split("",lnarr[$2]) lnfil=pwdi"/"$2 stat(lnfil, statdata) gsub(/\.[^.]*$/,"",$2) # "folder.png" >> "folder" #lnmem=i"/"$2 lnarr[$2][i]=statdata["linkval"] # lnarr["inode-directory"][48]="folder" dirlnam=i"/"$2 # dirlnam="48/inode-directory" existlnar[dirlnam]=dirlnam # existlnar["48/inode-directory"]="48/inode-directory" } } FS=fs } } function prepare(){ #Define html variables and get size folders. fol_nam=ENVIRON["PWD"] gsub(/^.*\//,"",fol_nam) fs=FS FS="/" while((getline0){ if($3=="d"&&$2!~/^\.+$/&&$2*1<=256){if($2~/[0-9]+/){dirar[$2]};dirar_a[$2]} #$2~/[0-9]+/ -- dirar_a -- массив со ВСЕМИ папками (в том числе совсем левыми). } FS=fs head="\n\ \n\ \n\ \n\ \n\ SE98 Icons: "capital(fol_nam)"\n\ \n\ \n\

SE98 Icons: "capital(fol_nam)"

\n\

\n\

Below is the list of all icons using in the "capital(fol_nam)" section. Each icon is identified by its name. Symlinks are belower, they have links to the originals on this page.

\n\

" foot="" } function readsizes_md(sizes_md,sizes_md_a,sizes_md_u_a, # файл-список, массив по порядку, массив уникальных размеров imd,k){ min_s=1000000 max_s=0 while((getline0){gsub("#.*$","");if($0!~/^$/){imd++;sizes_md_a[imd]=$0;sizes_md_u_a[$0]=$0};if($0~/^[0-9]/){max_s=$0*1>max_s?$0:max_s;min_s=$0*1":"") "!["sizes_md_a[k]"]("sizes_md_a[k]"/"ic"." (tolower(sizes_md_a[k])~"scal"?"sv":"pn")"g)" (ic && existlnar[sizes_md_a[k]"/"ic] ? " *" lnarr[ic][sizes_md_a[k]] "*" : "") "|" iconline_md= iconline_md "![""](" (all_iconar_s[ic] && existlnar[sizes_md_a[k]"/" iconoext] ? sizes_md_a[k]"/"lnarr[iconoext][sizes_md_a[k]] ")
*link:* *" lnarr[iconoext][sizes_md_a[k]] "*
" : sizes_md_a[k]"/"all_iconar_s[ic] ")") "|" } icontable_md=icontable_md (icontable_md?"\n":"") iconline_md #print iconline_md } md_comment="Total **" length(all_iconar_s) "** icons in **" tolower(fol_nam) "** context.\n" print head_md "\n" md_comment "\n" md_th "\n" md_line "\n" icontable_md > mdout }else{ mdout="/dev/null" } if(mdbrief){ readsizes_md(sizes_brief,sizes_brief_a,sizes_brief_u_a) brief_head_md="# "capital(fol_nam) "\nOnly the main icons are shown here (without symlinked duplicates, in sizes from "min_s"x"min_s" to "max_s"x"max_s").
The full icon list "(isarray(mdout_minmax)?"with sizes from "mdout_minmax[1]"x"mdout_minmax[1]" to "mdout_minmax[2]"x"mdout_minmax[2]:"")" is there: ["mdout"]("mdout")\n" md_th="| |" md_line="|-|" for(k in sizes_brief_a){ # пробегаем по размерам, указанным в sizes_brief в том порядке, как там перечислено if(sizes_brief_a[k] in dirar_a){ # если указанный размер (имя подпапки) обнаружен в файловой системе md_th=md_th "**" (sizes_brief_a[k]~/^[0-9]+$/?sizes_brief_a[k]"x":"") sizes_brief_a[k] "**|" md_line=md_line "-|" }else{ delete sizes_brief_a[k] # а если папки нет, то и размер нам ни к чему } } asorti(iconarr,iconarr_s) for(ic in iconarr_s){ iconline_md="|**" iconarr_s[ic] "**|" # начинаем строку for(k in sizes_brief_a){ # развиваем строку iconline_md= iconline_md "![""](" sizes_brief_a[k]"/"iconarr_s[ic] "." (tolower(sizes_brief_a[k])~"scal"?"sv":"pn") "g)|" } brieftable_md=brieftable_md (brieftable_md?"\n":"") iconline_md } print brief_head_md "\n" md_th "\n" md_line "\n" brieftable_md > mdbrief }else{ mdbrief="/dev/null" } print head > fileout print "\n" > fileout print "\t" > fileout for(i in dirar){ print "\t\t" > fileout } print "\t\n" > fileout asorti(iconarr,iconarr_s) for(ic in iconarr_s){ print "\t" > fileout for(k in dirar){ #print k"/"ic dirnam=k"/"iconarr_s[ic] imgtag=(existar[dirnam]?"\t\t":"\t\t") print imgtag > fileout } print "\t" > fileout } for(icl in lnarr){ print "\t" > fileout for(k in dirar){ dirlnam=k"/"icl locallink=lnarr[icl][k];gsub(/\.[^.]*$/,"",locallink) # надо сделать из ../../apps/24/system-users ../apps/icons.html#24/system-users htmlpath=htmlname=fol_nam"/"fileout gsub(/[^/]*$/,"",htmlpath) gsub(/^.*\//,"",htmlname) if(locallink~"../../"){ locallink=gensub("/","/"fileout"#",2,gensub("../","",2,locallink)) }else{ locallink="#"k"/"locallink } lnname=lnarr[icl][k];gsub(/\.[^.]*$/,"",lnname) linktext="iconlink "href" "icl linktext=icl "
" href href=""lnname"" imgtag=(isarray(lnarr[icl]) && existlnar[dirlnam]?"\t\t":"\t\t") #if(lnarr[icl][k]){ print imgtag > fileout #} } print "\t" > fileout } print "
" i "
\n" "\t\t\t\""iconarr_s[ic]".png\"\n\t\t\t
"iconarr_s[ic]"\n" "\n\t\t
\n\t\t
\n""\t\t\t\""icl".png\"\n\t\t\t
"linktext"
\n""\n\t\t
\n" "\n\t\t
" > fileout print foot > fileout } BEGIN{ shortcut_icon="../emblems/10/emblem-symbolic-link.png" fileout="icons.html" mdout="icons.md" mdbrief="README.md" #mdout="/dev/stdout" sizes_md="sizes_md" sizes_brief="sizes_brief" pwd=ENVIRON["PWD"] prepare() table() }