Rst2HTML

Mijn "ReStructured Text naar HTML vertaler in een webpagina" is een één-pagina applicatie. Dat betekent dat je voor het oog steeds in dezelfde pagina aan het werk bent. Technisch gezien is het nnatuurlijk wat ingewikkelder, kijk maar naar wat er op verschillende momenten in het url veld staat, maar er is maar één pagina layout.

Dat betekent wel dat er een heleboel velden en knoppen op het scherm staan:

applicatie interface pagina

Daarmee heb je wel gelijk een overzicht van de hele workflow van de applicatie:

  • laad de configuratie voor een verzameling van pagina's
  • sla deze (weer) op indien nodig
  • laad een restructured text document
  • sla deze op (in elk geval nodig voordaat je de eerste keer een preview kunt doen)
  • preview hoe het eruit gaat zien na omzetting naar HTML
  • sla de source en de omgezette HTML (opnieuw) op
  • laad the omgezette HTML (onder andere nodig als je ze naar de mirror wilt zetten)
  • preview deze (bv. in het geval dat je achteraf nog wijzigingen aanbrengt)
  • sla (de gewijzigde versie) op
  • kopieer de HTML naar de "mirror" bestemming (in feite de lokale versie van de live site)

Om deze dingen te laten werken is het uiteraard nodig een aantal dingen te specificeren:

  • de configuratie instellingen die je gebruikt - meer hierover hier
  • de restructured text source waar je mee werkt - zie hier
  • de locatie waar je het omgezette resultaat wilt bewaren - zie hier
  • een nieuwe naam wanneer je de bestaande niet wilt gebruiken of wanneer er nog geen bekend is

Het "new name" veld doet dienst als een plaatsvervanger voor wat je op een gegeven moment probeert te doen:

  • wanneer je save settings uitvoert vervangt dit de eerder geselected settings naam, wat het mogelijk maakt om een nieuwe site te definiëren
  • wanneer je save source uitvoert vervangt het de geselecteerde source naam zodat je een nieuw document of directory kunt definiëren
  • wanneer je save converted of save html uitvoert vervangt het de geselecteerde doel naam - ik weet niet zeker of dit verstandig is en of het dus mogelijk moet zijn

Naast het omzetten zijn er nog wat zaken mogelijk:

  • je kunt een index over de hele verzameling aanmaken; daarvoor moet je met behulp van het refkey directive referenties in de source teksten definiëren die dan bij gebruik van de create index knop gebruikt worden om een document te maken met verwijzingen
  • je kunt de site waar je mee bezig bent onderverdelen door een source naam te gebruiken die eindigt met een slash; dit werkt net als het aanmaken van een subdirectory. Door deze vervolgens te selecteren in de source selector en load source te gebruiken kun je zorgen dat de documenten die je daarna maakt in deze sectie terecht komen. Je kunt terug naar de hoofdsectie door de .. entry te selecteren om naar toe te gaan.
  • voor het werken met css classes of standaard stukken tekst met desgewenst variabele inhoud kun je de ReST directives feature gebruiken. Een aantal van deze zijn specifiek voor deze applicatie gedefinieerd, deze staan ook vermeld in het applicatiescherm. Ik had gepland om het mogelijk te maken om eigen site-specifieke directives te kunnen maken, bekijken en wijzigen die in een bestand op de server (of in de database) opgeslagen worden maar dat is voorlopig nog niet mogelijk. .

Nog een paar gemaksfunctionaliteiten:

  • in één keer alle pagina's (her)genereren en naar de mirror locatie zetten
  • een overzicht maken van welke pagina's in welke staat van ontwikkeling zijn

De meest recente toevoeging is de mogelijkheid om uit meer data backends te kiezen; een klein settings file op de server maakt het moelijk om te kiezen voor opslag in het bestandssysteem of in een database (MongoDB and PostgreSQL is momenteel mogelijk, misschien maak ik ook nog wel een SQLite variant).

Zoals het nu gebouwd is is dit een applicatie bedoeld om op een lokale webserver (niet over het internet) te draaien; er zijn geen mogelijkheden om plaatjes en dergelijke te uploaden. Ik heb het zo gemaakt dat wanneer je ze in de "mirror" directories zet ze ook in de previews zichtbaar gemaakt kunnen worden. Ik weet nog niet of ik zin heb om het zo te maken dat je hem als een remote applicatie kunt draaien die direct je live server bestanden bijwerk. Momenteel gebruik ik scripts om alleen dat te FTP-en dat ook veranderd is.