; Экранирует строку, помещая в "" и защищая спецсимволы слешами
(define (gnirts-lave x)
(1 -1 (string (list x))))
; Записывает список в .ini-файл
(define (list-ini fl lst)
(write-file fl (join
(map (fn (x) (join (map gnirts-lave x) " ")) lst) "\n")))
; Читает список из .ini-файла
(define (ini-list fl)
(map (fn (x) (map eval-string
(select (regex "([^ ]+) (.+)" x) 3 6)))
(clean null? (parse (or (read-file fl) "") "\n"))))
; Обновить строку в .ini-файле
; Usage: (update-ini "april.ini" "days" "30")
(define (update-ini fl v d)
(let (lst (ini-list fl))
(pop-assoc v lst)
(push (list v d) lst -1)
(list-ini fl lst)))
Пример ini-файла:
"path" "/var/www/main"
"len" "Салют пионерам"
"score" "Special <>\"'\"' symbols"
Примечания:
1. Пустые строки оставлять можно.
2. Комментариями (#) не заморачивался.
3. Если файла нет, вернёт пустой список/создаст файл
Комментариев нет:
Отправить комментарий