Request For Comments: Forward Slash als Trennzeichen

Veröffentlicht am 7. Mai 2019 von Natalie Weizenbaum

Schon früh in der Geschichte von Sass wurde entschieden, / als Divisionsoperator zu verwenden, da dies die bei weitem gängigste Darstellung in Programmiersprachen war (und ist). Das / Zeichen wurde in nur sehr wenigen einfachen CSS-Eigenschaften verwendet, und selbst dort war es eine optionale Kurzschreibweise. Daher definierte Sass eine Reihe von Heuristiken, die festlegten, wann / als wörtlicher Schrägstrich gerendert oder als Operator behandelt werden sollte.

Lange Zeit funktionierten diese Heuristiken ziemlich gut. In den letzten Jahren haben jedoch neue Ergänzungen von CSS wie CSS Grid und CSS Color Level 4 den / zunehmend als Trennzeichen verwendet. Die Verwendung desselben Zeichens sowohl für Division als auch für die Trennung durch Schrägstriche wird für Benutzer immer ärgerlicher und wird wahrscheinlich irgendwann unhaltbar werden.

Daher planen wir, / neu zu definieren, damit es *nur* ein Trennzeichen ist. Anstatt eine ungekürzte Zeichenkette zu erstellen (wie es derzeit geschieht, wenn mindestens ein Operand keine Zahl ist), wird eine Liste mit einem neuen Schrägstrich-Trennzeichen erstellt. Zum Beispiel wird 1 / 2 / 3 eine dreielementige, durch Schrägstriche getrennte Liste sein. Die Division wird stattdessen als Funktion geschrieben: divide() (oder math.div() im neuen Modulsystem).

RolloutRollout-Permalink

Dies ist eine wesentliche abwärtsinkompatible Änderung der bestehenden Sass-Semantik, daher werden wir sie in einem dreistufigen Prozess einführen

  1. Die erste Stufe führt keine abwärtsinkompatiblen Änderungen ein. Sie wird

    • Eine Funktion divide() hinzufügen, die genau wie der heutige /-Operator funktioniert, außer dass sie Deprecation-Warnungen für alle Nicht-Zahlen-Argumente erzeugt.
    • Schrägstrich-getrennte Listen zu den Objektmodellen von Sass hinzufügen, *ohne* eine wörtliche Syntax für deren Erstellung. Diese wird später kommen, da sie sonst eine abwärtsinkompatible Änderung wäre.
    • Eine Funktion slash-list() hinzufügen, die schrägstrich-getrennte Listen erstellt.
    • Deprecation-Warnungen für alle /-Operationen ausgeben, die als Division interpretiert werden.
  2. Die zweite Stufe *wird* eine abwärtsinkompatible Änderung sein. Sie wird

    • / ausschließlich zu einem Listen- Trennzeichen machen.
    • divide() dazu bringen, Fehler für Nicht-Zahlen- Argumente auszugeben.
    • Die Funktion slash-list() als veraltet kennzeichnen, da sie dann redundant sein wird.
  3. Die dritte Stufe wird einfach die Funktion slash-list() entfernen. Dies hat keine Priorität und wird bis zur nächsten Hauptversion verzögert.

Feedback gebenPermalink für Feedback geben

Wenn Sie mehr Details darüber wünschen, wie genau das vorgeschlagene Verhalten funktionieren wird, gehen Sie zum Sass-Sprach-Repository und lesen Sie den vollständigen Vorschlag. Sie können die Abschnitte Hintergrund und Zusammenfassung überspringen, da diese oben enthalten sind. Beachten Sie jedoch, dass er als Spezifikation geschrieben ist; er eignet sich hervorragend, um herauszufinden, wie genau ein Grenzfall funktionieren soll, ist aber nicht so gesprächig wie die oben zitierten Abschnitte.

Wenn Sie Bedenken gegen den vorgeschlagenen Text haben oder wenn er einen für Sie wichtigen Anwendungsfall nicht abdeckt, bringen Sie dies bitte im Sass-Sprach-Issue-Tracker zur Sprache. Wir werden ihn mindestens zwei Wochen lang zur Diskussion offen halten, bevor wir den Vorschlag als "akzeptiert" markieren und zur Implementierungs- Phase übergehen.

Bitte beachten Sie jedoch, dass wir zwar Community-Feedback begrüßen, das Design von Sass aber letztendlich in den Händen des Sprachteams liegt. Wir werden die Perspektiven und Anwendungsfälle von Benutzern, die sich äußern, absolut berücksichtigen, aber es ist auch unsere Aufgabe, alle Benutzer zu berücksichtigen, die neu bei Sass oder sogar bei CSS sind und die noch nicht wissen, wie man Blogs liest oder sich zu Issue-Trackern äußert. Denken Sie daran, dass unsere sorgfältigen Entscheidungen Sass zu dem gemacht haben, was es heute ist, und haben Sie Geduld mit uns, wenn wir nicht die Entscheidungen treffen, die Sie treffen würden!