Parser konfiguracji INI
Pliki INI to prosty format konfiguracyjny z sekcjami i parami klucz-wartość, historycznie używany przez Windows i wciąż powszechny w wielu aplikacjach (php.ini, my.cnf, setup.cfg). To narzędzie parsuje składnię INI, wyświetla sekcje i właściwości i może konwertować do JSON.
Specyfikacje
Typowe zastosowania
- Inspekcja konfiguracji php.ini lub MySQL my.cnf
- Parsowanie plików Python setup.cfg lub tox.ini
- Przeglądanie plików konfiguracyjnych Git (.gitconfig)
- Debugowanie ustawień aplikacji Windows
- Konwersja starszych konfiguracji INI do JSON lub YAML
Funkcje
- Parsowanie nagłówków [sekcji] i par klucz=wartość
- Obsługa komentarzy (prefiksy ; i #)
- Obsługa wartości w cudzysłowach z sekwencjami escape
- Wyświetlanie właściwości globalnych (przed jakąkolwiek sekcją)
- Konwersja do JSON do programowego użycia
- Sformatowany tryb widoku
- Wyświetlanie komentarzy per sekcja
- Ostrzeżenia parsowania dla nieprawidłowych wpisów
Przyklady
Konfiguracja bazy danych
Wypróbuj →Typowy plik konfiguracyjny bazy danych.
[database]
host=localhost
port=3306
name=myapp_db
user=admin
[cache]
enabled=true
ttl=3600
driver=redisKonfiguracja PHP
Wypróbuj →Fragment pliku php.ini.
; PHP Configuration
[PHP]
memory_limit = 256M
max_execution_time = 30
upload_max_filesize = 64M
[Date]
date.timezone = "America/New_York"Wskazowki
- Nazwy sekcji są niewrażliwe na wielkość liter w większości implementacji.
- Używaj cudzysłowów wokół wartości zawierających znaki specjalne.
- Komentarze tradycyjnie używają ; ale niektóre parsery akceptują też #.
- Zduplikowane klucze w tej samej sekcji mogą nadpisywać lub tworzyć tablice, zależnie od parsera.
Zrozumienie Parser konfiguracji INI
Pliki INI to prosty format konfiguracyjny używający sekcji (w nawiasach kwadratowych) i par klucz-wartość. Mimo braku formalnej specyfikacji, format ten był szeroko używany od wczesnych dni MS-DOS i Windows. PHP używa php.ini, Git używa .gitconfig (styl INI), aplikacje Windows używają plików .ini i wiele starszych systemów polega na tym formacie.
Podstawowa struktura grupuje pary klucz=wartość pod nagłówkami [sekcji]. Wartości to zazwyczaj ciągi znaków, choć niektóre parsery interpretują liczby i wartości logiczne. Komentarze używają średników (;) lub symboli hash (#). Wartości wieloliniowe, zagnieżdżone sekcje i sekwencje escape różnią się między implementacjami, ponieważ nie ma autorytatywnego standardu.
Pliki INI wypełniają lukę między płaskimi formatami klucz-wartość (jak pliki .env) a formatami strukturalnymi (jak TOML i YAML). Zapewniają organizację na poziomie sekcji bez złożoności zagnieżdżonych struktur danych. Dla prostej konfiguracji aplikacji z logicznym grupowaniem, INI pozostaje praktycznym wyborem.
Brak standaryzacji to główna słabość INI. Różne parsery nie zgadzają się co do znaków komentarza, czy klucze rozróżniają wielkość liter, jak obsługiwać zduplikowane klucze i sekcje oraz czy wartości mogą obejmować wiele linii. Rozpoczynając nowy projekt, TOML jest generalnie lepszym wyborem, ponieważ zapewnia tę samą organizację opartą na sekcjach z formalną specyfikacją i bogatszymi typami danych.
TOML został zaprojektowany jako nowoczesny zamiennik INI z formalną specyfikacją. Dodaje natywne typy danych (liczby całkowite, zmiennoprzecinkowe, wartości logiczne, daty, tablice), zagnieżdżone tabele, tablice tabel i ciągi wieloliniowe — funkcje, których INI całkowicie brakuje. Dla nowych projektów TOML jest lepszym wyborem; INI jest głównie istotny dla kompatybilności wstecznej z istniejącymi plikami konfiguracyjnymi.
Wrażliwość na wielkość liter kluczy różni się w zależności od implementacji. Funkcje INI Windows nie rozróżniają wielkości liter, configparser Pythona domyślnie nie rozróżnia wielkości liter dla kluczy, parse_ini_file PHP rozróżnia wielkość liter dla kluczy, ale nie dla sekcji, a konfiguracja Git nie rozróżnia wielkości liter zarówno dla sekcji, jak i nazw kluczy. Zawsze sprawdzaj dokumentację swojego konkretnego parsera. Obsługa znaków specjalnych w wartościach jest podobnie niespójna — niektóre parsery obsługują cytowanie wartości podwójnymi cudzysłowami, niektóre obsługują sekwencje escape, a niektóre traktują wszystko po znaku równości jako wartość dosłowną. Gdy potrzebne są znaki specjalne, zweryfikuj zachowanie swojego konkretnego parsera lub rozważ migrację do TOML.