Hallo,
in use natural sort by freddy36 · Pull Request #296 · biologist79/ESPuino · GitHub wird die Sortierung von Dateien in Ordnern (Sowohl bei der Playlist Erzeugung, als auch im Web-Datei-Explorer) von einem einfachen strcmp() auf eine natürliche Sortierung umgebaut.
Aktuell müssen bei der Benennung der Dateien ggf. führende 0en genutzt werden, um die vermutlich gewünschte Sortierung zu erhalten.
Mit der Änderung würden Zahlen entsprechend Ihres für Menschen offensichtlichen Wertes sortiert.
Zur Verdeutlichung des Unterschiedes hier ein Beispiel:
standard strcmp() sort | natural sort |
---|---|
Example title (Part 1).mp3 | Example title (Part 1).mp3 |
Example title (Part 10).mp3 | Example title (Part 2).mp3 |
Example title (Part 11).mp3 | Example title (Part 3).mp3 |
Example title (Part 12).mp3 | Example title (Part 4).mp3 |
Example title (Part 13).mp3 | Example title (Part 5).mp3 |
Example title (Part 14).mp3 | Example title (Part 6).mp3 |
Example title (Part 15).mp3 | Example title (Part 7).mp3 |
Example title (Part 16).mp3 | Example title (Part 8).mp3 |
Example title (Part 17).mp3 | Example title (Part 9).mp3 |
Example title (Part 18).mp3 | Example title (Part 10).mp3 |
Example title (Part 19).mp3 | Example title (Part 11).mp3 |
Example title (Part 2).mp3 | Example title (Part 12).mp3 |
Example title (Part 20).mp3 | Example title (Part 13).mp3 |
Example title (Part 21).mp3 | Example title (Part 14).mp3 |
Example title (Part 22).mp3 | Example title (Part 15).mp3 |
Example title (Part 23).mp3 | Example title (Part 16).mp3 |
Example title (Part 24).mp3 | Example title (Part 17).mp3 |
Example title (Part 25).mp3 | Example title (Part 18).mp3 |
Example title (Part 26).mp3 | Example title (Part 19).mp3 |
Example title (Part 27).mp3 | Example title (Part 20).mp3 |
Example title (Part 28).mp3 | Example title (Part 21).mp3 |
Example title (Part 29).mp3 | Example title (Part 22).mp3 |
Example title (Part 3).mp3 | Example title (Part 23).mp3 |
Example title (Part 30).mp3 | Example title (Part 24).mp3 |
Example title (Part 31).mp3 | Example title (Part 25).mp3 |
Example title (Part 32).mp3 | Example title (Part 26).mp3 |
Example title (Part 33).mp3 | Example title (Part 27).mp3 |
Example title (Part 34).mp3 | Example title (Part 28).mp3 |
Example title (Part 35).mp3 | Example title (Part 29).mp3 |
Example title (Part 36).mp3 | Example title (Part 30).mp3 |
Example title (Part 37).mp3 | Example title (Part 31).mp3 |
Example title (Part 38).mp3 | Example title (Part 32).mp3 |
Example title (Part 39).mp3 | Example title (Part 33).mp3 |
Example title (Part 4).mp3 | Example title (Part 34).mp3 |
Example title (Part 5).mp3 | Example title (Part 35).mp3 |
Example title (Part 6).mp3 | Example title (Part 36).mp3 |
Example title (Part 7).mp3 | Example title (Part 37).mp3 |
Example title (Part 8).mp3 | Example title (Part 38).mp3 |
Example title (Part 9).mp3 | Example title (Part 39).mp3 |
Verwendet wird dieser Algorithmus/Bibliothek:
Der PR führ bei mir zu einer 464 Bytes größeren Firmware. Davon entfällt aber etwas mehr als die Hälfte auf den Kommentar in der management.html, was sich durch entsprechende Minification der Datei leicht wieder einsparen lassen würde.
Zusätzlicher HEAP Speicher wird nicht benötigt, der zusätzlich benötigte Stack Speicher dürfte vernachlässigbar sein.
Würde dies bei irgendjemand zu einer unerwarteten Sortierung von Dateien führen)?
Ist eine Konfigurierbarkeit des Features (settings.h oder zur Laufzeit/NVS) gewünscht?
EDIT2:
Umfrage zum bevorzugten Sortieralgorithmus:
- egal, macht keinen Unterschied für mich
- string vergleich (aktuell)
- natürlich - Groß- und Kleinschreibung beachten
- natürlich - Groß- und Kleinschreibung ignorieren
Und zur Konfigurierbarkeit:
- fest im code
- Konfigurierbar (settings.h)
- Konfigurierbar (Webinterface)