format-time-string
Funkcja przyjmuje ciąg znaków i zastępuje zestaw specjalnych konstrukcjach w tym ciąg znaków (poprzedzone %
) z jakiegoś konkretnego tekstu.
Chciałbym zaimplementować taką funkcjonalność we własnej funkcji:
- Mam alist między znaków i symboli, takich jak:
'((?n . name) (?r . reputation))
. - Funkcja powinna mieć ciąg podobny do
"My name is %n, and my rep is %r"
. - Należy wymienić
%n
i%r
przy wartości zmiennychname
areputation
, i zwraca wynik. - Powinien obsługiwać
%%
tak samoformat-time-string
(zastąp go%
).
Jak najłatwiej wdrożyć tę funkcję?
Czy istnieje biblioteka lub funkcja, która to ułatwi? %%
Ważne jest prawidłowe obchodzenie się .
Ponieważ elisp ma dość prymitywne udogodnienia do obsługi łańcuchów, lepiej umieścić łańcuch formatu w buforze i iterować:
Drobna subtelność - nie psuje się, gdy
%
na końcu łańcucha występuje samotność, ponieważchar-after
powracanil
na końcu bufora.źródło
Oto kod, którego używam jako ciągu formatu i czasu dla fałszywego kalendarza:
źródło