Weiterentwicklung

Aneamal wird aktiv weiterentwickelt. Diese Seite listet Probleme und Ideen auf, die auf Bearbeitung warten. Orientierung bieten dabei W-Fragen:

Berücksichtigt werden sollten auch die Fragen, ob es Implikationen für Sicherheit und Datenschutz hätte, ob es Kollisionen mit bestehender Syntax gibt und ob Alternativen denkbar sind.

Bekannte Probleme

Ausgabe bei versehentlichem Laden eines Bildes z. B. mit [a]->

Wenn man mit [a]-> zum Beispiel ein Bild statt wie vorgesehen eine Aneamaldatei lädt, kann die unsinnige Ausgabe den Browser überfordern. (Gemeldet von David) Muss man diese Art der Fehlbedienung durch den Autor verhindern? Und kann man, ohne auch berechtigte Fälle zu beschneiden?

Diskussion

Nur halb angezeigte Vorschaubilder

Es ist bei mit [j]-> generierten Vorschaubildern bei David mehr als einmal vorgekommen, dass diese nicht komplett waren. Leider konnte Martin das Problem nicht ebenfalls provozieren, um die genaue Ursache festzustellen, was ein Beheben schwierig macht. Martin hat zwar Ideen, wie man es beheben könnte, aber kann ihre Tüchtigkeit nicht testen, wenn er das Problem nicht erzeugen kann.

Diskussion

Unerwünschte Liste bei Satzende am Blockanfang

Wenn wie in dem Beispiel:

Faszinierend, dass im rechtwinkligen Dreieck die Formel

$$a^2+b^2=c^2$$

gilt.

Faszinierend, dass im rechtwinkligen Dreieck die Formel

$$a^2+b^2=c^2$$

das Ende eines Satzes am Blockanfang steht („gilt.“), dann interpretiert Aneamal das als Listenpunkt. Dies lässt sich mit einem Backslash verhindern, ist aber ein überraschendes, wohl kaum erwünschtes Verhalten.

Diskussion

Behandlung von Sonderzeichen in Variablennamen unbefriedigend

Hier ein konstruiertes Beispiel:

@\mus{tache: 👨
the @`mus{tache`.
Errors in meta (/projekt/aneamal/entwicklung/index.nml > inline file):
189: Unexpected character in metadata name: mus{tache (more info).

the @mus{tache`.

Errors in the last block (/projekt/aneamal/entwicklung/index.nml > inline file, line 2):
117: Expression not closed: expected ` (more info).

134: Variable name after @ not defined: mus{tache`. (more info).

Hier bewirkt das Sonderzeichen { die Fehlermeldungen. Es gibt aber keinen prinzipiellen Grund, warum dieses Beispiel ungültig sein soll – man könnte auch schlicht „the 👨“ ausgeben.

Diskussion

Code inline am Absatzanfang und Codeblock verwechselbar

Wenn man Code am Absatzanfang kennzeichnen möchte, geht das nicht einfach mit |…| wie sonst im Fließtext, weil das zur Verwechslung mit einem Codeblock führt, welcher mit | am Anfang jeder Zeile gekennzeichnet wird. Im folgenden Beispiel wird also die ganze Zeile als Codeblock interpretiert, nicht nur das erste Wort als Inline-Code:

|echo| gibt in PHP eine Zeichenkette aus

Behelfen kann man sich zum Beispiel mit Gravis, sodass kein | mehr am Absatzanfang steht:

`|echo|` gibt in PHP eine Zeichenkette aus

Diskussion

Variablendefinition und Variablennutzung am Zeilenanfang verwechselbar

Wenn man Variablen am Zeilenanfang verwenden möchte, geht das nicht einfach mit @varname wie sonst im Fließtext, weil das zur Verwechslung mit einer Meta-Variablendefinition führt. So entsteht im folgenden Beispiel ein Fehler:

% Variablendefinition
@ author: Martin

% beabsichtigt als Variablennutzung,
% wird aber als fehlerhafte Definition interpretiert
@author wurde in Potsdam geboren.
Errors in meta (/projekt/aneamal/entwicklung/index.nml > inline file):
189: Unexpected character in metadata name: author wurde in Potsdam geboren. (more info).

Behelfen kann man sich mit Gravis, sodass die genutzte Variable nicht mehr am Zeilenanfang steht:

@ author: Martin

`@author` wurde in Potsdam geboren.

Martin wurde in Potsdam geboren.

Diskussion

Geplantes

Metadaten automatisch laden

Was
Allgemein hinterlegte Metadaten könnten automatisch geladen und genutzt werden, als stünden sie in einer aufgerufenen Aneamaldatei.
Wozu
Sinnvoll wäre das insbesondere für Metadaten, die auf vielen oder allen Seiten eingesetzt werden – eine Javascript-Funktion vielleicht, eine Autorenangabe, ein Feed, Icons, … So müssten die Angaben nicht mehr in zahlreichen Dateien wiederholt werden bzw. wären auch Leuten zugänglich, die sich nicht an PHP in aneamal-config.php herantrauen oder heranmachen wollen.
Warum
Im Vergleich zu wiederholtem Schreiben auf vielen Seiten lassen Effizienzgewinne mehr Zeit für das, was wirklich zählt, und erlauben schnellere Änderungen. Im Vergleich mit aneamal-config.php stellt eine native Aneamal-Lösung eine geringe Lernhürde dar (man weiß ja sowieso, wie Metadaten in Aneamal funktionieren), was wiederum mehr Zeit für das lässt, was zählt.
Woher
/projekt/aneamal/diskussion/code-in-html-head-einfuegen
Wann
16. Wiso 2018, Veröffentlichung Anfang 2019
Wo
function __construct, function load_meta in html.php
Wer
Martin
Wie
analog zu @header.nml, @footer.nml, @aside.nml, @look.css werden Metadaten aus einer Datei @meta.nml geladen
Weitere
aneamal-config.php wird dadurch mit ein paar weiteren möglichen Metadeklarationen ersetzt

Diskussion

HTML-Code in den HTML-<head> einfügen

Was
Mit [h] kann man HTML-Code in den sichtbaren Bereich einer Seite einbinden; Vergleichbares könnte für den nicht-sichtbaren HTML-<head>-Bereich angeboten werden.
Wozu
Zum Beispiel, um Metadaten wie <meta property='og:foo' content='bar'> nach dem Open Graph Protocol einzubinden, die Aneamal nicht selbst unterstützt.
Warum
Dass es außer per aneamal-config.php oder JavaScript derzeit nicht möglich ist, frei Inhalte in den HTML-<head>-Bereich einzubinden, obwohl das im HTML-<body> geht, mag man als künstliche Beschränkung empfinden. Dieser nicht zu unterliegen erhöht die Zufriedenheit von Autoren. Zu klären wäre, welche Vorteile sich für Leser ergeben können.
Woher
David
Wann
25. Tabo 2018, Veröffentlichung zum Anfang 2019
Wo
function meta_link, function meta_heredoc, function head in html.php – zu klären wäre noch, wo genau innerhalb des HTML-<head>-Bereiches eingefügt werden soll
Wer
Martin
Wie
vielleicht per @html-Metaangabe analog zu @style
Weitere
Vereinfachung der sonstigen Metadaten-Syntax wird dadurch möglich.

Diskussion

Anführungszeichen Text gruppieren lassen

Was
In einer Formulierung wie Siehe ->#oben. wird der Punkt als Satzzeichen nicht Teil des Links. Ähnliches wäre bei Anführungszeichen wünschenswert, also zum Beispiel in im "schwarzen ->#Saal" auch das Zeichen " nicht Teil des Links werden zu lassen. Darüber hinaus wäre wünschenswert, dass in im #"roten Raum" die ganze Wortgruppe mit Anführungszeichen zur Sprungmarke wird.
Wozu
Man spart sich dadurch Gravis, die die Grenzen des Links kennzeichnen: im "schwarzen ->#`Saal`", bzw. die ganze Wortgruppe: im #`"roten Raum"`
Warum
Weniger Tipparbeit macht das Schreiben effizienter. Man bekommt auch ein besseres Verhältnis von Inhalt zu Markup, wodurch das im Vordergrund bleibt, worum es hauptsächlich geht.
Woher
Martin
Wann
14. Tabo 2018, Veröffentlichung zum Anfang 2019
Wo
function group, function inline und weitere in html.php
Wer
Martin
Wie
Ähnlich wie (…) und […] würde auch " gruppieren und trotzdem gedruckt werden, wobei die Umsetzung nicht analog geschehen kann, da sich bei " Anfang und Ende nicht unterscheiden. Daher kann " eigentlich nicht geschachtelt sein, was die Verarbeitung einfacher macht. Zu berücksichtigen wäre, dass " auch allein vorkommen kann, zum Beispiel in Winkelangaben.
Weitere

Diskussion

Im Konverter Vorteile von PHP7 und PHP7.1 nutzen

Was
Typdeklaration für Funktionsparameter und Rückgabewerte; PHP-Fehler bei fehlerhaften Modulen und fehlerhafter aneamal-config.php abfangen (ParseError); Null Coalesce Operator nutzen …
Wozu
Code übersichtlicher gestalten und schwer findbare Fehler vermeiden; statt PHP-Fehlermeldungen ansehnliche Aneamal-Fehlermeldungen ausgeben, welche den Seitenaufbau nicht abbrechen
Warum
erleichtert zukünftige Entwicklungsarbeit; professionellerer Eindruck auch bei Nutzern
Woher
Martin auf Basis der PHP-Dokumentation
Wann
zum Anfang 2019, wenn der Security-Support für PHP5.6 (und 7.0) ausgelaufen ist
Wo
functions.php, html.php, ggf. main.php
Wer
Martin
Wie
Migrationsanleitungen 5.6 => 7.0 und 7.0 => 7.1 nutzen
Weitere
strikte Prüfung der Typen einstellen?

Externe Caches unterstützen

Was
zusätzlich zum /aneamal/cache/ auch HTTP-Header Last-Modified/If-Modified-Since unterstützen
Wozu
weniger Traffic für den Server und für einen Wiederbesucher
Warum
Server kann mehr Anfragen parallel behandeln, schnellerer Seitenaufbau erhöht Leserzufriedenheit
Woher
Martin, nachdem er https://jakearchibald.com/2016/caching-best-practices/ gelesen hatte
Wann
zum Anfang 2019
Wo
/aneamal/main.php
Wer
Martin
Wie
wenn eine Datei im Aneamal-Cache älter als das empfangene If-Modified-Since-Datum ist, HTTP-Status-Code 304 Not Modified statt Inhalt zurückgeben; Last-Modified-Header für Dateien aus dem Cache senden
Weitere
Sollte man für /aneamal/pix/ in .htaccess einen Header Cache-Control: max-age mit einem geringen Wert setzen? Sollte man intern auch für den Aneamal-Cache ein Maximalalter setzen können, sodass Änderungen nur in eingebundenen Dateien auch ohne manuelles Leeren des Caches nach einer gewissen Zeit wirksam werden?

Diskussion

Textanordnung in Spalten automatischer Breite

Was
Manchmal besteht ein Text aus vielen kurzen Zeilen, z. B. eine Einkaufsliste oder ein Gedicht. In dem Fall soll man mit : : am Blockanfang signalisieren können, dass der Text in Spalten dargestellt werden soll. Siehe Spalten-Beispiel.
Wozu
das Browserfenster besser ausnutzen
Warum
kann optisch ansprechender aussehen, spart lästiges Scrollen
Woher
Martin
Wann
wenn verbreitete Browser dafür notwendiges CSS unterstützen (siehe u. a. https://www.w3.org/TR/css-sizing-3/#column-sizing, http://caniuse.com/#feat=intrinsic-width)
Wo
html.php, vermutlich function block oder neue Funktion für Textausrichtung
Wer
Martin
Wie
CSS column-width:max-content
Weitere

1 · 86400
2 · 43200
3 · 28800
4 · 21600
5 · 17280
6 · 14400
8 · 10800
9 · 9600
10 · 8640
12 · 7200
15 · 5760
16 · 5400
18 · 4800
20 · 4320
24 · 3600
25 · 3456
27 · 3200
30 · 2880

Column-Test: Bei Browsernterstützung sollte dies in einem breiten Fenster in Spalten angezeigt werden.

Diskussion

Scoped Styles

Was
ermöglichen, dass Stylesheets aus eingebundenen Dateien auch nur den eingebundenen Bereich betreffen und nicht das komplette Dokument, wohingegen Stylesheets aus dem Hauptdokument auch auf eingebundene Bereiche wirken
Wozu
einfachere Kontrolle der Darstellung, geringeres Risiko von Nebenwirkungen
Warum
weniger zerbissene Lippen und ausgerissene Haare; Verhalten von Stylesheets wäre dann analog zum Beispiel zu Metavariablen in Aneamal, die auch an eingebundene Bereiche vererbt werden, aber nicht umgekehrt, und einheitliches Verhalten senkt die Lernkurve, was wiederum zu einer größeren Nutzerzufriedenheit führt
Woher
Martin wünscht sich das quasi seit Anbeginn von Aneamal
Wann
wenn es irgendeine annehmbare Form von Browserunterstützung gibt
Wo
html.php oder im Falle einer Lösung mittels eigenem CSS-Parser eine Extradatei
Wer
Martin?
Wie
auf Browserunterstützung warten/hinwirken oder CSS parsen und automatisch umschreiben, um das Ergebnis zu simulieren, was aber einen riesigen Aufwand oder neue Abhängigkeiten mit andauernder Update-Notwendigkeit bedeutet
Weitere

Diskussion

Automatisierte Tests

Was
Tests für Aneamal-Syntax-Elemente erstellen, die automatisiert ausgeführt und ausgewertet werden
Wozu
um Fehler beim Erweitern des Aneamal-HTML-Konverters und insbesondere unbeabsichtigte Nebenwirkungen zu erkennen; um zu erkennen, ob ein zukünftig möglicher alternativer Aneamal-HTML-Konverter zu gleichen Ergebnissen kommt
Warum
eine möglichst fehlerfreie Software erhöht die Sicherheit und Zufriedenheit von Autoren
Woher
Martin
Wann
?
Wo
Das Testsystem wird nicht in Aneamal integriert, sondern ist davon weitgehend unabhängig.
Wer
Martin?
Wie
.nml-Dokumente werden manuell erstellt, vom Konverter nach HTML übersetzt und die Ausgabe einmalig manuell auf Korrektheit überprüft. Diese Ausgabe wird als statische Datei (Soll-Wert) gespeichert. Der automatische Test besteht darin, die nml-Dokumente erneut vom Konverter übersetzen zu lassen und die Ausgabe mit dem Soll-Wert zu vergleichen. Im Fall von Abweichungen wird der Unterschied gemeldet.
Weitere

Diskussion

Mögliches

Gänsefüßchen überladbar machen

Was
Gänsefüßchenpaare "…" gruppieren Text, stehen aber ansonsten nur für sich selbst. Man könnte erlauben, sie mit einer anderen Funktion zu überladen.
Wozu
Beispielsweise könnten "…" so automatisch in „…“ oder »…« umgewandelt werden oder ansonsten nicht verfügbare HTML-Tags wie <s>, <small> und <q> eingesetzt werden, ohne auf Platzhalter zurückgreifen zu müssen.
Warum
Typografisch korrekte Anführungszeichen sind auf manchen Systemen schwer einzugeben, aber trotzdem schön anzuschauen. Sie leicht erzeugen zu können, kann die Autor- und Leserzufriedenheit erhöhen.
Woher
Martin
Wann
?
Wo
function group, function inline, function jumpgroup und ggf. weitere in html.php
Wer
Martin
Wie
Überladen könnte per Metavariable oder aneamal-config.php definiert werden; das Umsetzen ist dann leicht.
Weitere
Klammern überladbar machen

Diskussion

Vorschaubilder verschiedener Auflösung bei [j]-> generieren

Was
Vorschaubilder mit verschiedenen Auflösungen für ein Original generieren und Browsern als Alternativen anbieten
Wozu
Webseiten werden vom Handy bis zum Wandprojektor heute auf sehr verschiedenen Geräten mit unterschiedlicher Auflösung, Pixeldichte, Datentransfervolumen/-geschwindigkeit angezeigt. Verschiedene Vorschaubilder können den sich daraus ergebenden unterschiedlichen Anforderungen gerecht werden.
Warum
gute Darstellungsqualität verschafft Lesern einen positiven Eindruck; optimierter Datentransfer lässt Seiten ggf. schneller laden und spart so Zeit/Geld für Leser und Seitenbetreiber und hilft dem Suchmaschinenranking => mehr Leser
Woher
Martin beim Verfolgen von Webstandards
Wann
?
Wo
function file_preview in html.php (bei Nutzung von function resize_image in functions.php)
Wer
Martin
Wie
mehrere Vorschaubilder durch unterschiedliche Dateinamen unterscheiden und in HTML per <img srcset> ggf. auch mit sizes-Attribut oder mit <picture>-Element und <source>-Elementen bereitstellen – siehe https://w3c.github.io/html/semantics-embedded-content.html
Weitere

Diskussion

Änderung der Schreibrichtung im Text

Was
explizite Markierungen für eine geänderte oder unbekannte Schreibrichtung im Text
Wozu
um im Fall einer Mischung von Text mit unterschiedlicher Schreibrichtung wie zum Beispiel in einem Arabisch-deutschen-Wörterbuch oder bei Zitaten oder Namensnennungen immer eine korrekte Darstellung zu gewährleisten
Warum
Den Bedürfnissen anderer Kulturkreise entgegenzukommen kann den Nutzerkreis erhöhen. Es wird aber auch Leuten, die hauptsächlich in europäischen Schriftsystemen schreiben, damit erleichtert, über Themen aus anderen Regionen der Welt zu schreiben.
Woher
Martin
Wann
?
Wo
html.php
Wer
Martin
Wie
Man könnte vordefinierter Platzhalter zur Angabe der Schreibrichtung einsetzen – ich dachte zunächst an &< und &>, allerdings ist problematisch, dass diese Zeichen abhängig von der Schreibrichtung der Schrift unterschiedlich herum dargestellt werden können und daher leicht verwechselt werden. Vielleicht wäre es sinnvoll, einfach auf Unicode-Kontrollzeichen zu verweisen.
Weitere

Diskussion

Übersetzung der Fehlermeldungen

Was
die Fehlermeldungen, die Aneamal direkt in einer Website ausgibt, bzw. die verlinkten Erläuterungen zu den Fehlermeldungen in andere Sprachen als Englisch übersetzen
Wozu
höhere Verständlichkeit für Autoren
Warum
Gerade, wenn man etwas falsch gemacht hat, ist es hilfreich, verständliche Erläuterungen in der eigenen Sprache zu erhalten. Das beschleunigt die Behebung und erhöht damit die Autorenzufriedenheit.
Woher
Martin
Wann
?
Wo
Die Präferenz für eine Sprache für Fehlermeldungen könnte in aneamal-config.php hinterlegt werden. Ein Orientierung an der Sprache der bearbeiteten Seite (@lang) erscheint mir weniger sinnvoll, weil sie nicht der Muttersprache des technischen Autors entsprechen muss. In html.php Fehlermeldungen in mehreren Sprachen zu speichern, erscheint mir nicht sinnvoll – eher ein Verzeichnis /aneamal/lang/ mit einer Übersetzungsdatei pro Sprache, vgl. Wordpress.
Für die verlinkten Erläuterungen zu den Fehlermeldungen besteht bereits die Möglichkeit, in aneamal-config.php eine Adresse für Erläuterungen in anderer Sprache zu hinterlegen
Wer
technische Umsetzung Martin; aber Übersetzungen ?
Wie
eine Übersetzungsdatei als Vorlage erstellen und Leute einladen, Übersetzungen anzufertigen; diese auf aneamal.org zum Herunterladen anbieten – wenn eine solche Übersetzungsdatei im Verzeichnis /aneamal/lang/ liegt und der Sprachpräferenz in aneamal-config.php entspricht, die übersetzte Fehlermeldung statt der englischen Fehlermeldung anzeigen
Weitere
aneamal.org mehrsprachig machen

Diskussion

geschachtelte Aufzählungslisten

Was
Nummerierte Listen können geschachtelt sein – das heißt ein Listenpunkt kann selbst eine Liste mit Unterpunkten enthalten. Aufzählungslisten mit <> statt Nummern, können noch nicht geschachtelt werden – das könnte geändert werden.
Wozu
um bei Bedarf Aufzählungen mit Unterpunkten zu realisieren, siehe zum Beispiel https://www.janecke.name/
Warum
Dass man Aufzählungslisten nicht schachteln kann, kann man als künstliche Beschränkung sehen, insbesondere da es bei nummerierten Listen geht – diese könnte man abschaffen und Freiheit ist schön.
Woher
David, Martin
Wann
?
Wo
html.php
Wer
Martin
Wie
?
Weitere
Aufzählungsliste geschachtelt in nummerierter Liste oder umgekehrt erlauben?

Diskussion

Nummerierte Liste mit Nummer als Sprungmarke

Was
Im Fließtext kann man Sprungmarken anlegen, zu denen man Links setzen kann, indem man ein # vorstellt. Man könnte dies ebenfalls bei nummerierten Listen erlauben, sodass #1. noch als Liste erkannt würde und die Listennummer gleichzeitig eine Sprungmarke würde.
Wozu
um wie bei Wikipedia Fußnoten als Liste anlegen zu können; um allgemein Listenstichpunkte referenzieren zu können, z. B. siehe ->#1.
Warum
eine elegantere Syntax macht Autoren glücklich
Woher
Martin
Wann
?
Wo
function block, function ordered_list, function ordered_list_item in html.php
Wer
Martin
Wie
Das # wird nur vor dem Hauptpunkt erkannt; das heißt #1.2. ist gültig und die Sprungmarke lautet in dem Fall in HTML id='1-2'.
1.#2. aber ergibt keinen gültigen Listenunterpunkt.
Weitere
prüfe, ob auch bei anderen Block-Syntaxelementen ein Vorsetzen von # sinnvoll ist

Diskussion

Blöcke in Blöcken

Was
Zitatblöcke > und Anmerkungen ___ können andere Aneamal-Blöcke enthalten. Dies könnte man bei mehr Aneamal-Blöcken ermöglichen, insbesondere in Listen
Wozu
um beispielsweise Listen von Bildern anzufertigen oder in Listen mit [t]- und [x]-Erweiterungen arbeiten zu können
Warum
Flexibilität zu haben macht froh, wenn man sie sich wünscht
Woher
David
Wann
?
Wo
function block und vermutlich weitere in html.php
Wer
Martin
Wie
?
Weitere
alternativ allgemein Bilder und Erweiterungen im Fließtext ermöglichen?

Diskussion

Heredoc-Kurzsyntax

Was
Heredocs bestehen aus einer Anweisung zum Einbinden einer Datei, in der Regel in eckigen Klammern [a-warnung] bzw. als Metaangabe @style, gefolgt von Zeilen die in der Regel alle mit einem | beginnen bzw. bei Metaangaben mit @|. Die wiederholten Zeichen am Zeilenanfang kann man per Sandwich-Markup automatisch setzen lassen, was einem Arbeit erspart. Allerdings erhält man dadurch einen zweizeiligen Start des Heredocs, zum Beispiel:
[a-warnung]
/|/⚠️

Eine einzeilige Lösung wäre wünschenswert.
Wozu
weniger Tipparbeit, mehr Übersichtlichkeit?
Warum
zur Tastenschonung und Freude von Autoren
Woher
David
Wann
?
Wo
html.php
Wer
Martin
Wie
vorzugsweise etwas wie […]/END, doch beachte die unten stehenden Anmerkungen – beim derzeitigen Konverteraufbau wäre etwas wie //…/END leichter umzusetzen
Weitere

Diskussion

Eine Syntax, die sich wie

[a-gedichtbox]/🐾
...
🐾

an das Gewohnte anlehnt, verkompliziert die Verarbeitung auf technischer Seite, wohingegen so etwas wie das Sandwich-Markup relativ einfach ist. Das hängt damit zusammen, dass Sandwich-Markup /…/… wie Kommentare % und Metadaten @ quasi überall am Zeilenanfang stehen kann, wohingegen eckige Klammern […] nur eine Sonderbedeutung haben, wenn sie am Blockanfang stehen. Daher kann Sandwich-Markup sehr früh bei der Interpretation eines Dokumentes verarbeitet werden. Die Zerlegung eines Dokumentes in Blöcke geschieht derzeit erst später. Das ist momentan zu spät für eine Tippsparsyntax, weil vorher schon Leerzeichen und Tabulatorzeichen von allen Zeilenanfängen getilgt werden. In Aneamal haben sie keine Bedeutung. In anderen Dateitypen wie zum Beispiel in Textdateien mit Quellcode der Programmiersprache Python spielen Leerzeichen aber eine entscheidende Rolle. In /2015/mehrdimensional-kuchen-schneiden/ zum Beispiel habe ich Python-Code eingebunden:

|def find (dimensions):
|    def findr (countdown, step, prod, cuts):
|        diff = step * (cuts[-1] - 1) + prod
|        if diff > 0:
|            cuts[-1] -= diff // step
|            diff %= step
|        if countdown == 1:
|            if diff == 0:
|                print (cuts)
|        else:
|            if diff == 0:
|                cuts[-1] += 1
|                diff += step
|            while cuts[-1] != findr (countdown - 1, diff, prod * (cuts[-1] + 1), cuts + [cuts[-1]]):
|                cuts[-1] += 1
|                diff += step
|        return cuts[-1]
|    if isinstance (dimensions, int) and dimensions > 0:
|        findr (dimensions, -1, 2, [1])

Die | am Anfang jeder Zeile verhindern auch, dass die Leerzeichen zur Einrückung der Befehle vom Aneamal-Konverter entfernt werden. Wenn ich hier Sandwich-Markup nutze

/|/🐾
def find (dimensions):
    def findr (countdown, step, prod, cuts):
        diff = step * (cuts[-1] - 1) + prod
        if diff > 0:
            cuts[-1] -= diff // step
            diff %= step
        if countdown == 1:
            if diff == 0:
                print (cuts)
        else:
            if diff == 0:
                cuts[-1] += 1
                diff += step
            while cuts[-1] != findr (countdown - 1, diff, prod * (cuts[-1] + 1), cuts + [cuts[-1]]):
                cuts[-1] += 1
                diff += step
        return cuts[-1]
    if isinstance (dimensions, int) and dimensions > 0:
        findr (dimensions, -1, 2, [1])
🐾

dann funktioniert das noch immer, denn das Sandwich-Markup wird ganz früh verarbeitet und in die Standardsyntax mit | an jedem Zeilenumfang umgewandelt, bevor Leerzeichen am Zeilenanfang entfernt werden. Aber die Zerlegung in Blöcke passiert erst später, sodass eine Verarbeitung von eckigen Klammern, die nur am Blockanfang eine besondere Bedeutung zur Dateieinbindung haben

[t-python]/🐾
def find (dimensions):
    def findr (countdown, step, prod, cuts):
        diff = step * (cuts[-1] - 1) + prod
        if diff > 0:
            cuts[-1] -= diff // step
            diff %= step
        if countdown == 1:
            if diff == 0:
                print (cuts)
        else:
            if diff == 0:
                cuts[-1] += 1
                diff += step
            while cuts[-1] != findr (countdown - 1, diff, prod * (cuts[-1] + 1), cuts + [cuts[-1]]):
                cuts[-1] += 1
                diff += step
        return cuts[-1]
    if isinstance (dimensions, int) and dimensions > 0:
        findr (dimensions, -1, 2, [1])
🐾

derzeit käme, wenn die Leerzeichen schon alle weg sind und der Python-Code also so aussieht:

def find (dimensions):
def findr (countdown, step, prod, cuts):
diff = step * (cuts[-1] - 1) + prod
if diff > 0:
cuts[-1] -= diff // step
diff %= step
if countdown == 1:
if diff == 0:
print (cuts)
else:
if diff == 0:
cuts[-1] += 1
diff += step
while cuts[-1] != findr (countdown - 1, diff, prod * (cuts[-1] + 1), cuts + [cuts[-1]]):
cuts[-1] += 1
diff += step
return cuts[-1]
if isinstance (dimensions, int) and dimensions > 0:
findr (dimensions, -1, 2, [1])

womit er kaputt wäre. Aber das sind technische Details, die sich grundsätzlich lösen lassen.
Klären muss ich allerdings, ob sich solche Details so lösen lassen, dass das Programm nicht
nennenswert langsamer oder komplexer wird. Das relativ frühe Entfernen der Leerzeichen vom
Zeilenanfang spart nämlich einiges an Verarbeitungsaufwand in der Folge ein.

Version ohne mod_rewrite

Was
der Aneamal-Konverter setzt derzeit Unterstützung von URL-Rewriting per mod_rewrite voraus – es soll auch eine Version ohne diese Abhängigkeit geben
Wozu
Einsatz auf Systemen ohne mod_rewrite
Warum
einen größeren Nutzerkreis gewinnen
Woher
Martin
Wann
?
Wo
?
Wer
Martin
Wie
Denkbar wäre, URLs statt domain/pfad/datei als domain/index.php/pfad/datei oder domain/?/pfad/datei anzunehmen. Denkbar wäre auch, die Dateien in der URL mit .nml-Endung aufzurufen und dafür zu sorgen, dass diese Endung mit dem Konverter verknüpft wird
Weitere
Alternativen zu .htaccess anbieten für Server, die mit Alternativen funktionieren

Diskussion

Autokorrekturen statt Fehlermeldungen

Was
Für Fälle, in denen ein Dokument nicht der Aneamal-Syntax entspricht, könnte man definieren, wie diese interpretiert werden sollen, ohne eine Fehlermeldung auszugeben. Beispielsweise könnte in einem Textabsatz bei einem einzigen *, welcher den Beginn eines hervorgehobenen Abschnitts markiert und wozu eigentlich ein weiterer * als Endmarke erwartet wird, definiert werden, dass das Ende des Absatzes dann das Ende des hervorgehobenen Abschnitts ist. Oder es könnte definiert werden, dass ein einziger * in einem Textabsatz gleich \* nur für sich selbst und nicht für einer Hervorhebung steht.
Wozu
dem Autor Korrekturzeit ersparen; das Risiko senken, dass Leser unansehnliche/peinliche Fehlermeldungen sehen
Warum
weniger Störungen ergeben eine höhere Zufriedenheit mit Aneamal
Woher
Martin
Wann
fortlaufend
Wo
html.php
Wer
Martin
Wie
undefinierte Fälle vermeiden, Kurzschreibweisen erlauben, …
Weitere

Diskussion

einfache Update-Funktion

Was
eine automatische Update-Funktion oder eine Hilfe beim Update
Wozu
damit Aneamal-HTML-Konverter im Einsatz leicht auf dem aktuellen Stand bleiben
Warum
sollte eine Sicherheitslücke gefunden werden, wäre es wichtig, diese schnell zu schließen, sodass kein Schaden entsteht; auch ansonsten ist ein komfortables Aktualisieren wichtig im Wettbewerb mit anderer Software
Woher
David, Martin
Wann
?
Wo
?
Wer
Martin, ?
Wie
?
Weitere
Möglichkeit, sich per E-Mail über Updates informieren zu lassen; Update-Möglichkeit für [x]- und [t]-Erweiterungen

Diskussion

eine Installation für mehrere Websites

Was
Es ist möglich, eine Aneamal Installation für zwei Netzauftritte unter derselben Domain zu nutzen, die sich durch den Pfad unterscheiden, zum Beispiel https://example.org/peter/ und https://example.org/paul/. Könnte man es so einrichten, dass dieselbe Installation auch unter verschiedenen Domains liefe?
Wozu
Update-Aufwand reduzieren?
Warum
weniger Aufwand bei Updates erhöht die Bereitschaft dazu, was der Sicherheit zugute kommt; außerdem bleibt so mehrZeit für Inhalte
Woher
David
Wann
?
Wo
?
Wer
Martin
Wie
?
Weitere

Beachte die Möglichkeiten von Kollisionen bei Vorschaubildern und gecacheten Dateien. Datenschutz- und Sicherheitsimplikationen wären zu prüfen. Müsste aneamal-config.php für die in einer Installation verwalteten Websites jeweils getrennt nutzbar sein oder eine Konfiguration für alle Auftritte? Lohnt die zusätzliche Komplexität für den Gewinn an Komfortabilität?

Diskussion

Unwahrscheinliches

Drei- und mehrdimensionale Listen

Was
Zuordnungslisten mit mehr als zwei Schlüsselwörtern pro Eintrag erlauben, siehe Beispiel am Ende von /2015/tabelle-im-texteditor/
Wozu
um entsprechende vorliegende Daten zu visualisieren
Warum
wenn es sich elegant umsetzen ließe, wäre das ein Wettbewerbsvorteil; damit würde eine willkürliche Beschränkung in Aneamal abgebaut und Freiheit ist schön
Woher
Martin
Wann
?
Wo
function relational_list in html.php
Wer
Martin + ?
Wie
In Aneamal muss nur die künstliche Beschränkung aufgehoben werden; aber die Visualisierung zum Beispiel in HTML ist unklar, wenn man von der tabellarischen Darstellung bei zwei Dimensionen ausgeht. Eventuell könnte man Tableisten einsetzen, um in andere zweidimensionale Schnitte einer mehrdimensionalen Liste zu springen.
Weitere

Diskussion

Siehe auch: Verworfene Ideen zur Weiterentwicklung