Kunst- en vliegwerk

Beeld u in: een ascii-document van vele vele duizenden lijnen, met daarin een boomstructuur, in deze vorm:

Product
» Bron
» » Source:Intranet|Type:Productbeschrijving|Title:Onze dingen|Date:??|URL:http://www…
» » Source:Intranet|Type:FAQ|Title:xyz|Date:2/4/07|URL:http://www…
» Tarief
» » Bron
» » » Source:Procedure|Type:Tarief|Title:??|Date:??|URL:http://www…
» » Rooster
» » » Optie één
» » » » Suboptie
» » » » » Bron
» » » » » » Source:Intranet|Type:Tarief|Title:Suboptie tarief|Date:??|URL:http://www….
» » » » Nog een suboptie
» » » » » Bron
» » » » » » Source:Intranet|Type:Tarief|Title:Nog een tarief|Date:21/10/2006|URL:http://www…

…en dat moet aanschouwelijk voorgesteld worden. Vele véle duizenden lijnen.

Het is gestructureerd, en de structuur is (meestal) consistent aangehouden, zelfs al is het document met de hand aangemaakt, dus er moet iets uit te krijgen zijn. Maakte ik me sterk, toen het document in zijn eerste vorm voorbijkwam. Mar ‘t is vandaag het uur van de waarheid, en time to put my money where my mouth was, als het ware.

Stap één is beslissen waarin het te visualiseren. Een Access-database met een formpje erop lijkt op het eerste gezicht het snelste: de boomstructuur in een treeview steken, de rest in een lijstje met bronnen, en dan is het meteen mogelijk te navigeren en dergelijke, én te kijken welke bron waar in de boom gebruikt wordt. En als niet iederee Access heeft, dan trek ik toch gewoon Visual Studio boven?

Maar: heb ik wel zin in programmeerwerk? Ja, ik heb zin in programmeerwerk. De betere vraag is: heb ik zin in onderhoud van een quick & dirty ding, tot het inde van mijn dagen?

Neen, daar heb ik geen zin in.

MindManager dus: iedereen heeft die hier staan, het kan omgaan met grote en complexe bomen, én het is mogelijk om op de nodes nota’s te hangen.

En het importeert gestructureerde tekst. Er moet wel gerommeld worden met het document, want alles wat Bron is, moet in een nota bij een node komen en niet als een sub-node. Dus, met andere woorden, ik moet tot iets in deze zin komen:

Product
» Tarief
» » Rooster
» » » Optie één
» » » » Suboptie
» » » » Nog een suboptie

…met dan op de juiste plaatsen, bijvoorbeeld bij die “Nog een suboptie”, in een nota telkens iets in deze zin:

Intranet
Type:Tarief
Title:Nog een tarief
Date:21/10/2006
URL:http://www…

Vroeger zou ik daar snel een script tegen geplakt hebben, in ColdFusion of in PHP of ASP of C# geschreven bijvoorbeeld, maaar ik heb het tegenwoordig veel meer voor de semi-automatische aanpak. Notepad++ en Excel en Word zijn mijn vrienden. En regexen, natuurlijk.

Dus!

Stap één. Document openen in Notepad++. Alle “» » » » » » »” vervangen door <h7>, alle “» » » » » »” door <h6>, etc. Dat geeft me een document dat er zo uitziet:

Product
<h1>Bron
<h2>Source:Intranet|Type:Productbeschrijving|Title:Onze dingen|Date:??|URL:http://www…
<h2>Source:Intranet|Type:FAQ|Title:xyz|Date:2/4/07|URL:http://www…
<h1>Tarief
<h2>Bron
<h3>Source:Procedure|Type:Tarief|Title:??|Date:??|URL:http://www…
<h2>Rooster
<h3>Optie één
<h4>Suboptie
<h5>Bron
<h6>Source:Intranet|Type:Tarief|Title:Suboptie tarief|Date:??|URL:http://www….
<h4>Nog een suboptie
<h5>Bron
<h6>Source:Intranet|Type:Tarief|Title:Nog een tarief|Date:21/10/2006|URL:http://www…

Al die broninformatie moet op paragraafniveau komen onder de heading waar ze thuishoren, dus alle <h[1-7]>Bron mogen weg, en alle <h[1-7]>Source: mogen vervangen worden door <p>. Dat geeft dit:

Product
<p>Intranet|Type:Productbeschrijving|Title:Onze dingen|Date:??|URL:http://www…
<p>Intranet|Type:FAQ|Title:xyz|Date:2/4/07|URL:http://www…
<h1>Tarief
<p>Procedure|Type:Tarief|Title:??|Date:??|URL:http://www…
<h2>Rooster
<h3>Optie één
<h4>Suboptie
<p>Intranet|Type:Tarief|Title:Suboptie tarief|Date:??|URL:http://www….
<h4>Nog een suboptie
<p>Intranet|Type:Tarief|Title:Nog een tarief|Date:21/10/2006|URL:http://www…

Excellent. Alle tags moeten wel gesloten worden op het einde van de lijnen. In twee keer: eerst <p>([^$]*)$ vervangen door <p>\1</p>, en dan <h([1-7])>([^$]*)$ vervangen door <h\1>\2</h\1>. Resultaat:

Product
<p>Intranet|Type:Productbeschrijving|Title:Onze dingen|Date:??|URL:http://www…</p>
<p>Intranet|Type:FAQ|Title:xyz|Date:2/4/07|URL:http://www…</p>
<h1>Tarief</h1>
<p>Procedure|Type:Tarief|Title:??|Date:??|URL:http://www…</p>
<h2>Rooster</h2>
<h3>Optie één</h3>
<h4>Suboptie</h4>
<p>Intranet|Type:Tarief|Title:Suboptie tarief|Date:??|URL:http://www….</p>
<h4>Nog een suboptie</h4>
<p>Intranet|Type:Tarief|Title:Nog een tarief|Date:21/10/2006|URL:http://www…</p>

Hoera! We zijn er al bijna! Nu die paragraafjes een beetje opleuken. Het eerste item is telkens de naam van een bron, dat mag in het vet: vervang <p>([^|]*)| door <p><strong>\1</strong>|. En ze mogen op aparte lijnen, da’s gewoon |Type: en zo vervangen door <br />Type:. Ik zet er voor de properheid nog een <html><head><title> en zo rond, en dan importeren in Word.

Het eerste item stond zonder niveau. Snel opgelost in outline view, en dat ziet er dan zo uit:

Wordboom01

Dit bewaren als een Word-document, en dat document importeren in MindManager, geeft dit:

Mmgrboom01

Hey presto!

Elders over misschien hetzelfde

01.11.2013: Links van 24 mei 2013 tot 1 november 2013 | 19.07.2013: 11% | 25.03.2013: Op zoek naar volk | 28.01.2013: Evaluatie | 06.01.2013: Einde vakantie, begin 2013 | 28.12.2012: De laatste | 20.12.2012: Een dagje Amsterdam | 15.12.2012: Vergaderingen, vergaderingen | 14.12.2012: Feestje! | 16.08.2012: Eerste werkdag

7 Comments

Zeg uw gedacht

Navigatie

Vorige entry:

Volgende entry:

» homepagina, archief

Vriendjes

<insert standard disclaimer>

Alles wat hier staat is mijn eigen opinie. Het wordt niet nagelezen of goedgekeurd door mijn werkgever voor het on-line komt, en ik bied geen enkele garantie voor kwaliteit of correctheid.

Mijn werkgever is het niet noodzakelijk eens met wat ik schrijf, en het spreekt vanzelf dat hij dan ook op geen enkele wijze aansprakelijk kan zijn voor wat ik hier publiceer.