diff options
| author | Miguel <m.i@gmx.at> | 2019-02-18 18:24:01 +0100 |
|---|---|---|
| committer | Miguel <m.i@gmx.at> | 2019-02-18 18:24:01 +0100 |
| commit | b71633cad69d0b8fade8419cfd7a333615ad3aee (patch) | |
| tree | 294c1e2015449bfe9fab8a758b995e26fe64308e /080_blog | |
| parent | 1691d68b3fb94aa0d88f74d2d4a373346d77ecbf (diff) | |
simpler is better
Diffstat (limited to '080_blog')
17 files changed, 741 insertions, 0 deletions
diff --git a/080_blog/0010_The-Old-Times/attack.png b/080_blog/0010_The-Old-Times/attack.png Binary files differnew file mode 100644 index 0000000..7c83d63 --- /dev/null +++ b/080_blog/0010_The-Old-Times/attack.png diff --git a/080_blog/0010_The-Old-Times/attack.zip b/080_blog/0010_The-Old-Times/attack.zip Binary files differnew file mode 100644 index 0000000..2d09784 --- /dev/null +++ b/080_blog/0010_The-Old-Times/attack.zip diff --git a/080_blog/0010_The-Old-Times/high1.png b/080_blog/0010_The-Old-Times/high1.png Binary files differnew file mode 100644 index 0000000..93ebf07 --- /dev/null +++ b/080_blog/0010_The-Old-Times/high1.png diff --git a/080_blog/0010_The-Old-Times/high2.png b/080_blog/0010_The-Old-Times/high2.png Binary files differnew file mode 100644 index 0000000..c94a5ef --- /dev/null +++ b/080_blog/0010_The-Old-Times/high2.png diff --git a/080_blog/0010_The-Old-Times/highway.zip b/080_blog/0010_The-Old-Times/highway.zip Binary files differnew file mode 100644 index 0000000..ffc7d7b --- /dev/null +++ b/080_blog/0010_The-Old-Times/highway.zip diff --git a/080_blog/0010_The-Old-Times/index.md b/080_blog/0010_The-Old-Times/index.md new file mode 100644 index 0000000..192a1c7 --- /dev/null +++ b/080_blog/0010_The-Old-Times/index.md @@ -0,0 +1,54 @@ +Games from the past +=================== + + 1990ies + +## About this games + +I recently found this simple and stupid games from times long gone. +I coded them in the 90ies as a teenager. Their source code was fortunatelly lost. + +This DOS MZ exacutables will run fine in a DOSBox. + +## Highway + + Coded: 1999 + Tech: C, DJGPP compiler, Allegro library + +A unique combination of Frogger and the original GTA, which it was probably +inspired by. Control your vehicle with the arrow keys without crashing, +as long as possible. + +Download: [highway.zip](highway.zip) + +{.img-fluid style="width:300px;"} +{.img-fluid style="width:300px;"} + +## Under Attack + + Coded: Early 90ies + Tech: QBasic + +Originally I coded this game for the TI-83 caluclator, later reimplementing +it for my PC **in colors**. As the commander of a the mighty battleship _HMS Miguel_ you need +to use the arrow keys to evade enemy missiles fired from the deepness of the ocean, +by enemy submarines. + +Download: [attack.zip](attack.zip) + +{.img-fluid style="width:300px;"} + +## Operation Naval Storm + + Coded: 1996 + Tech: QBasic + +Another naval warfare classic, based on the well known *Sea Battle* game, played on +paper grids. In this advanced version every player places only one single +ship, measuring 1x1 in size. Try to outperform the brilliant AI. + +{.img-fluid style="width:300px;"} +{.img-fluid style="width:300px;"} + +Download: [naval.zip](naval.zip) + diff --git a/080_blog/0010_The-Old-Times/naval.zip b/080_blog/0010_The-Old-Times/naval.zip Binary files differnew file mode 100644 index 0000000..6155a1e --- /dev/null +++ b/080_blog/0010_The-Old-Times/naval.zip diff --git a/080_blog/0010_The-Old-Times/naval1.png b/080_blog/0010_The-Old-Times/naval1.png Binary files differnew file mode 100644 index 0000000..d351629 --- /dev/null +++ b/080_blog/0010_The-Old-Times/naval1.png diff --git a/080_blog/0010_The-Old-Times/naval2.png b/080_blog/0010_The-Old-Times/naval2.png Binary files differnew file mode 100644 index 0000000..fb45276 --- /dev/null +++ b/080_blog/0010_The-Old-Times/naval2.png diff --git a/080_blog/00010_Old-And-Outdated/00010_Monospace-Font-Bitmap-Generator/index.md b/080_blog/00_Old-And-Outdated/00010_Monospace-Font-Bitmap-Generator/index.md index 3df7719..3df7719 100644 --- a/080_blog/00010_Old-And-Outdated/00010_Monospace-Font-Bitmap-Generator/index.md +++ b/080_blog/00_Old-And-Outdated/00010_Monospace-Font-Bitmap-Generator/index.md diff --git a/080_blog/00010_Old-And-Outdated/00020_Notes-on-Mail-Clients/index.md b/080_blog/00_Old-And-Outdated/00020_Notes-on-Mail-Clients/index.md index 68a7be8..68a7be8 100644 --- a/080_blog/00010_Old-And-Outdated/00020_Notes-on-Mail-Clients/index.md +++ b/080_blog/00_Old-And-Outdated/00020_Notes-on-Mail-Clients/index.md diff --git a/080_blog/00010_Old-And-Outdated/index.md b/080_blog/00_Old-And-Outdated/index.md index 3055918..3055918 100644 --- a/080_blog/00010_Old-And-Outdated/index.md +++ b/080_blog/00_Old-And-Outdated/index.md diff --git a/080_blog/0100_Webkit-Keyboardless-Navigation/index.md b/080_blog/0100_Webkit-Keyboardless-Navigation/index.md new file mode 100644 index 0000000..a56a377 --- /dev/null +++ b/080_blog/0100_Webkit-Keyboardless-Navigation/index.md @@ -0,0 +1,30 @@ +Miguel's Surfing Quick Links +============================ + + April 12, 2018 + +Since I do not want to depend on JavaScript all of the time, I tried to +integrate simple keyboard-only navigation directly into the webkit2gtk+, +as a web extension. + +I use simple unix pipes for communication between the +main thread and my webextension. + +Please note that this is a work in progress! + +You can take a look at both branches at my github repo: [https://github.com/miguelclean/surf-webext-dom](https://github.com/miguelclean/surf-webext-dom). + +The DOM is manipulated on the fly by the browser without any JavaScript involved. + +A little video demonstrating what was achieved so far (inside the glorious, webkit2gtk+ based, suckless surf browser): + +<video style="width:60%;min-width:100pt;" controls> + <source src="v1.mp4" type="video/mp4"> + <source src="v1.ogv" type="video/ogg"> +Your browser does not support the video tag. + +</video> + +The browser itself can be found here: [https://surf.suckless.org/](https://surf.suckless.org/). + + diff --git a/080_blog/0100_Webkit-Keyboardless-Navigation/v1.mp4 b/080_blog/0100_Webkit-Keyboardless-Navigation/v1.mp4 Binary files differnew file mode 100644 index 0000000..a7755f4 --- /dev/null +++ b/080_blog/0100_Webkit-Keyboardless-Navigation/v1.mp4 diff --git a/080_blog/0100_Webkit-Keyboardless-Navigation/v1.ogv b/080_blog/0100_Webkit-Keyboardless-Navigation/v1.ogv Binary files differnew file mode 100644 index 0000000..a086103 --- /dev/null +++ b/080_blog/0100_Webkit-Keyboardless-Navigation/v1.ogv diff --git a/080_blog/020_WWW-Projects/index.md b/080_blog/020_WWW-Projects/index.md new file mode 100644 index 0000000..7264d62 --- /dev/null +++ b/080_blog/020_WWW-Projects/index.md @@ -0,0 +1,536 @@ +Portfolio +========= + +A random selection of Web-sites, Web-shops, Web-portals and Mobile Apps. + +<!--TODO: backlinks/contact +team: julka + matjas + niki +(+koko projects) +vienna-warsaw-berlin +form/tel/contact + +copterwerk +kradwerk +architekturawnetrz +krzysztofidziorek + +todo-app screenshot +--> + +<div class="row"> + +{BEGIN:CARD} +/DATA/GEN/www/casamila.png +Casamila - Architects +casamila.pl +2018 +-badge-secondary online soon +-badge-primary new +-badge-info wordpress + +Complete redesign of the Casamila Architects Website. +Extensive Template customization according to client requirements. +{END:CARD} + +{BEGIN:CARD} +/DATA/GEN/www/shop/bunzlauer.png +Web Shop - Bunzlauer +bunzlauer.shop +2018 +-badge-success online +-badge-primary new +-badge-info OpenCart + +Customized and Optimized OpenCart Webshop specializing in international +shipping of beautiful handcrafted polish pottery. +{END:CARD} + +{BEGIN:CARD} +/DATA/GEN/www/aquarelle.jpg +G. Mueller Watercolors +gerhard-mueller-aquarelle.de +2018 +-badge-success online +-badge-primary new +-badge-info wordpress + +Website of Gerhard Müller hosting his watarcolour paintings. Relaunched 2018. Former TYPO3. +{END:CARD} + +{BEGIN:CARD} +/DATA/GEN/www/mmtour.png +Mille Miglia - Blog +mmtour.krzysztofidziorek.pl +2017 +-badge-success online +-badge-primary new +-badge-info wordpress + +Krzysztof's Blog about his adventures, traveling the Italian +roads of the historic Mille Miglia race in Fall 2017. +{END:CARD} + +{BEGIN:CARD} +/DATA/GEN/apps/atenefunds.png +AteneKOM Funds +GooglePlay / AppStore +2018 +-badge-success online +-badge-primary new +-badge-info iOS +-badge-info Android +-badge-info Symfony + +Overview of the funding possibilities on EU-, national and regional levels. +Entries are continually updated and expanded and can be filtered by topics. +{END:CARD} + +{BEGIN:CARD} +/DATA/GEN/www/mazury.png +Ratuj Mazury +ratuj-mazury.pl +2016 +-badge-success online +-badge-info wordpress + +This Website was launched 2016 and promotes ecological acitivites in the +Masurian area. Template was designed from scratch. +{END:CARD} + + +{BEGIN:CARD} +/DATA/GEN/www/wekkaprojekt.png +Wekka Projekt - Architects +wekka-projekt.pl +2016 +-badge-success online +-badge-info wordpress + +Launched 2016 for an Architectural Office operating in Warsaw, Poland. +Template was designed from scratch. +{END:CARD} + + +{BEGIN:CARD} +/DATA/GEN/www/norti.png +Norton Motorcycles Fan Club +nortonmotorcycles.co.uk +2018 +-badge-success online +-badge-primary new +-badge-info wordpress + +Relaunched 2018 on Wordpress. Fomer TYPO3. +{END:CARD} + + +{BEGIN:CARD} +/DATA/GEN/www/bunzlauer.png +Bunzlauer Keramik +bunzlauerkeramik.at +2018 +-badge-success online +-badge-primary new +-badge-info wordpress + +Austrian Website about Polish Pottery. +Relaunched 2018 on Wordpress. Fomer TYPO3. +{END:CARD} + +{BEGIN:CARD} +/DATA/GEN/apps/cornea.png +Cornea Franz +GooglePlay / AppStore +2013 +-badge-secondary offline +-badge-info iOS +-badge-info Android +-badge-info PHP + +Mobile App with a simple Backend porviding legal News. +{END:CARD} + + +{BEGIN:CARD} +/DATA/GEN/www/shop/link-all.png +Link-All Software +link-all.eu +2013 +-badge-success online +-badge-info OsCommerce + +Webshop offering custom Alfresco hosting in vairous tiers. +Customized OsCommerce. +{END:CARD} + + +{BEGIN:CARD} +/DATA/GEN/www/shop/bildershopping.png +Bilder Shop - Art Prints +bildershopping.at +2010 +-badge-secondary offline +-badge-info OsCommerce + +Custom OsCommerce Webshop selling various Art Prints +{END:CARD} + + +{BEGIN:CARD} +/DATA/GEN/www/shop/nadler.png +Nadler - Wine Shop +nadler-hanny.at +2007 +-badge-success online +-badge-info PHP + +In 2007 coded the super-light custom PHP Shop for the Website of this Austrian Winemaker. +{END:CARD} + + +{BEGIN:CARD} +/DATA/GEN/www/shop/panner.jpg +Panner - Stamp Shop +panner.net +2006 +-badge-secondary offline +-badge-info PHP + +Custom PHP shop specializing in Postal Stamps. Featuring a very extensive +backend for user management and analysis. +{END:CARD} + +{BEGIN:CARD} +/DATA/GEN/www/shop/panner-admin.png +Stamp Shop Backend +panner.net/admin +2006 +-badge-secondary offline +-badge-info PHP + +Custom extensiv backend for the panner.net stamps webshop with complex user management and analytic possibilites. +{END:CARD} + +{BEGIN:CARD} +/DATA/GEN/www/maiden.jpg +Maiden Entertainment +maidenentertainment.com +2005 +-badge-secondary offline +-badge-info PHP + +Website of an independent Music and Video Producer. +{END:CARD} + +{BEGIN:CARD} +/DATA/GEN/www/flipper2.jpg +Flipper Grafik +flipper-grafik.at +2004 +-badge-secondary offline +-badge-info PHP + +Advertising Agency in Vienna, Austria. +{END:CARD} + + + +{BEGIN:CARD} +/DATA/GEN/www/cqs.jpg +Complex Quantum Systems +coqus.at +2006 +-badge-secondary offline +-badge-info PHP + +Website of the Doctoral Program on Complex Quantum Systems of the University Vienna. +{END:CARD} + + +{BEGIN:CARD} +/DATA/GEN/www/ikm.jpg +Institut fuer Kulturmanagement +mdw.ac.at/ikm/ +2003 +-badge-secondary offline +-badge-info Perl + +Website of the IKM Insistute of the University of Music and Performing Arts, Vienna. +Advanced book-browsing tools for the Insitutes library. +{END:CARD} + + +{BEGIN:CARD} +/DATA/GEN/www/preschl.jpg +Claudia Preschl +personal.mdw.ac.at/preschl/ +2004 +-badge-success online + +Website of Prof. Claudia Preschl of the University of Music and Performing Arts, Vienna. +{END:CARD} + + +{BEGIN:CARD} +/DATA/GEN/www/textlabor.jpg +Textlabor +textlabor.at +2006 +-badge-success online +-badge-info PHP + +Website of Jolande Peck-Himmel, PR Consultant specializing in Print and Online Media. +{END:CARD} + + +{BEGIN:CARD} +/DATA/GEN/www/lev.jpg +LEV Wien +levwien.at +2006 +-badge-secondary offline +-badge-info PHP + +Website of the Parents Council of Music Shools of Vienna. +{END:CARD} + + +{BEGIN:CARD} +/DATA/GEN/www/meersalzgrotte.png +Saliseum +meersalzgrotte.at +2008 +-badge-secondary offline +-badge-info PHP + +Very light custom PHP Website of the Sea-Salt-Cave Saliseum in Vienna. +{END:CARD} + + +{BEGIN:CARD} +/DATA/GEN/www/telenetprofi.png +Telenet Profi +telenetprofi.at +2011 +-badge-success online + +Website of a Cell Phone Store in Vienna. +{END:CARD} + + +{BEGIN:CARD} +/DATA/GEN/www/breitbandausschreibungen1.png +Broadband Tenders Germany +breitbandausschreibungen.de +2014 +-badge-success online +-badge-info Symfony + +Platform for Coorindation of German Broadband Tender Programmes. +(_involved until 2014_) + +{END:CARD} + +{BEGIN:CARD} +/DATA/GEN/www/maiden2.png +Maiden Reloaded +maidenenterteinmanet.com +2010 +-badge-secondary offline +-badge-info TYPO3 + +Reloaded version of the Website of the indy Video and Music producer Maiden Enterteinmant +{END:CARD} + +{BEGIN:CARD} +/DATA/GEN/www/brlr1.png +BRLR Monitoring +breitbandbuero.de/monitoring/ +2011 +-badge-success online +-badge-info PHP + +Monitoring of Broadband projects according to the "Bundesrahmenregeleung Leerrorhre" + +{END:CARD} + + +{BEGIN:CARD} +/DATA/GEN/www/atenekom.jpg +AteneKOM Website +atenekom.eu +2012 +-badge-secondary offline +-badge-info TYPO3 + +Former Website of the atene KOM Agency. +{END:CARD} + + +{BEGIN:CARD} +/DATA/GEN/www/todoapp.png +Online Task Management +Intranet +2013 +-badge-info Symfony + +Browser-based tool for Assignment and Monitoring of Tasks within the Company. +{END:CARD} + + +{BEGIN:CARD} +/DATA/GEN/www/sensor.png +Sensor for GIS +Intranet +2013 +-badge-info GeoServer +-badge-info PostGIS +-badge-info OpenLayers + +Tool for spatial Analysis of Broadband related Customer Data. +{END:CARD} + + +{BEGIN:CARD} +/DATA/GEN/www/ringy.png +ZT Ringsmuth +zt-ringsmuth.at +2015 +-badge-secondary offline +-badge-info Joomla + +Website of Civil Engineer Ernst Ringsmuth. +{END:CARD} + +{BEGIN:CARD} +/DATA/GEN/www/platin.png +Platin - Billard & Darts +platin-billard.at +2009 +-badge-secondary offline +-badge-info PHP + +Platin Bar. Works included taking Photographs for this Website as well. +{END:CARD} + +{BEGIN:CARD} +/DATA/GEN/www/balbuza.png +Broetchenstube +broetchenstube-baden.at +2007 +-badge-secondary offline +-badge-info Joomla + +Website of a Catering Company located in Baden, Austria. +{END:CARD} + +{BEGIN:CARD} +/DATA/GEN/www/aufbau.jpg +Cultural Administration Studies +mdw.ac.at/ikm/kulturmanagement/ +2007 +-badge-secondary offline +-badge-info PHP + +Lightweight Website of postgradual studies at the University of Music and Performing Arts, Vienna. +{END:CARD} + +{BEGIN:CARD} +/DATA/GEN/www/kunst-stuecke.png +Kunst-Stuecke Art Gallery +kunst-stuecke.at +2007 +-badge-secondary offline +-badge-info Redaxo + +Light CMS driven Website for an art gallery in Vienna. +{END:CARD} + + +{BEGIN:CARD} +/DATA/GEN/www/cuadro.png +Cuadro Architects +cuadro.com.pl +2006 +-badge-secondary offline +-badge-info PHP + +Architecture Website for Cuadro +{END:CARD} + +{BEGIN:CARD} +/DATA/GEN/www/foto-pschill.png +Gallery for Fotografie Pschill +fotografie-pschill.at +2006 +-badge-secondary offline +-badge-info PHP + +Create a PHP Gallery for this Photographers website. +{END:CARD} + +{BEGIN:CARD} +/DATA/GEN/www/werbereich.png +Werbereich Creative Agency +werbereich.at +2006 +-badge-secondary offline +-badge-info PHP + +Technical implementation of the Website of this Creative Agency +{END:CARD} + +{BEGIN:CARD} +/DATA/GEN/www/immoconnect.png +Immoconnect Real Estate +immoconnect.net +2006 +-badge-secondary offline + +Light single-page Website for an Austrian Real Estate Agency. +{END:CARD} + +{BEGIN:CARD} +/DATA/GEN/www/austria-org-pl.png +Austrian Cultural Forum +austria.org.pl +2007 +-badge-secondary offline +-badge-info PHP + +Impleneted the news archive for the Austrian Cultural Forum located in Warsaw. +{END:CARD} + +{BEGIN:CARD} +/DATA/GEN/www/condition-red.png +Condition Red - Band +condition-red.com +2005 +-badge-secondary offline +-badge-info Flash + +Flash driven Website of the Rock and Metal Band: Condition RED. +{END:CARD} + +{BEGIN:CARD} +/DATA/GEN/www/austrian-wine.png +Austrian Wine +austrian-wine.at +2005 +-badge-secondary offline + +Website for an exporter of Austrian Wines. +{END:CARD} + +{BEGIN:CARD} +/DATA/GEN/www/copterwerk.png +Copterwerk - Drone Services +copterwerk.com +2011 +-badge-secondary offline + +Web presence of a company offering Aerial photography and photogrammetry services. +{END:CARD} + +</div> + diff --git a/080_blog/100_Static-Page-Maker-in-Haskell/index.md b/080_blog/100_Static-Page-Maker-in-Haskell/index.md new file mode 100644 index 0000000..0619078 --- /dev/null +++ b/080_blog/100_Static-Page-Maker-in-Haskell/index.md @@ -0,0 +1,121 @@ +# Static Haskell Website Creator - Miguel's Lair + + April 12, 2018 + +About two weeks ago, for personal reasons, I decided to switch my homepage +from a well known PHP driven CMS solution, to a light and static set +of html pages. + +I used this fact as a pretence to write my own simple static website +generator. And, Yes.. I know there are already hundereds of such genertors +out there, but I wanted to practice haskell and my masturbatory solution +fits in under 100 lines of code. (Including comments and type signatures) + +I use pandoc for all the heavy work, as syntax highlighting and conversion of +markdown to html, anyway. + +## Features + +* No Documentation +* No Database +* Sitemap derived from Directory Tree +* Simple Markdown Files for Content + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ {.haskell .numberLines} +-- +-- Staticus WWW - A minimalistic yet undocumented static website generator +-- coded in April 2018 by Michal Idziorek <m.i@gmx.at> +-- + +module StaticusWWW where + +import Control.Exception +import Control.Monad.Reader +import Data.List +import Data.List.Split +import Data.List.Utils +import Data.Maybe +import Data.Text(pack,unpack) +import Data.Tree +import System.Directory +import Text.Pandoc + +-- generate a HTML link from a href & title +htmlLink :: String -> String -> String +htmlLink href title="<a href='"++href++"'>"++replace "_" " " title++"</a>" + +-- generate HTML breadcrumbs from a list of page titles +genBrc :: [String] -> String +genBrc b | length b < 2 = "" + | otherwise = fst $ foldl lnk ("",0) b + where lnk (a,c) v = (a++" / "++html c v,c+1) + html c = htmlLink (concat (replicate (length b-c-1) "../")) + +-- pure function that generates a single HTML page from: +-- a html template, description, keywords, breadcrumbs, topMenue & submenue +genPage :: String->String->String->[String]->[String]->[String]->String->String +genPage tmpl dsc kw brc top chld md = + foldr rplc tmpl (replacers content (menu "/" top) (menu "./" chld) (genBrc brc) title dsc kw) + where content = either (const "error") unpack res + where res = runPure $ do doc <- readMarkdown def{readerExtensions=(enableExtension Ext_raw_html pandocExtensions )} $ pack md + writeHtml5String def doc + rplc v = replace ("##" ++ fst v ++ "##") (snd v) + title = if null brc then "Home" else replace "_" " " $ last brc + menu p = foldr (fm p) "" + fm p s a = "<li>"++htmlLink (p++s) s ++"</li>"++a + replacers c m m2 b t d k= + [("CONTENT", c) + ,("LOGO", "/DATA/logo.png") + ,("STYLESHEET", "/DATA/style.css") + ,("SITE_TITLE", "Miguel's Lair") + ,("SITE_SUBTITLE", "<br />where information sleepzzZZZzz ...") + ,("TITLE", t) + ,("DESCRIPTION", d) + ,("KEYWORDS", k) + ,("AUTHOR", "Michal Idziorek") + ,("MENU", m) + ,("SUB_MENU", m2) + ,("BREADCRUMBS", b) + ,("FOOTER", "(c) by Miguel 2018")] + +-- get list of subdirectories in given directory, with full relative path +getDirList :: FilePath -> IO [FilePath] +getDirList d = map ((d++"/")++) <$> listDirectory d + >>= filterM doesDirectoryExist + +-- sequence IO Action 'f' for each subdirectory of 'fp' recursively +trvDirTree :: FilePath -> (FilePath -> [FilePath] -> IO()) -> IO () +trvDirTree fp f = unfoldTreeM unf fp >>= sequence_ + where unf p = getDirList p >>= \s -> f p s >>= \l -> + return (return l, s) + +-- write the HTML page generated from current diectory by 'genPage' +wrtPage :: FilePath -> FilePath -> String -> [FilePath] -> FilePath -> [FilePath] -> IO () +wrtPage idx out tmpl top p chld = do + + when (not home) (createDirectory outdir) + + md <- readFile $ p ++ "/index.md" + cfg <- (map ((\(x:xs) -> (x,unwords xs)).words).lines) + <$> catch (readFile $ p++"/config") + ((\_ -> return "") :: IOException -> IO String) + + writeFile (outdir++"/index.html") + (genPage tmpl (lkp cfg "dsc") (lkp cfg "kwd") + brc (menu top) (if home then [] else menu chld) md) + + where home = outdir==out++"/" + remUnder = filter (not.null) . map (dropWhile(=='_').dropWhile(/='_')) + lkp cfg k = fromMaybe "" (lookup k cfg) + menu = remUnder . filter (not . isPrefixOf "00_") . map (last.splitOn "/") . sort + outdir = out ++ "/" ++ intercalate "/" brc + brc = remUnder $ splitOn "/" (drop (length idx) p) + +-- Main IO action: traverses index recursively and calls wrtPage in each +-- subdir, which in turn generates the output directories and html pages +main :: IO () +main = do tmpl <- readFile "./DATA/template.html" + top <- getDirList "./INDEX" + trvDirTree "./INDEX" (wrtPage "./INDEX" "./OUT" tmpl top) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + |
