W poprzednim kroku zrobiliśmy całkiem sporo, ale to dopiero początek. Potrzebne nam będą jeszcze inne funkcje, żeby nasza aplikacja zrobiła wszystko co to chcemy, czyli stworzyła dla nas plik HTML z notami wydania.
W tym kroku dodamy funkcję i prosty szablon, który pozwoli nam przerobić słownik na fragment kodu HTML. Będą to wiersze tabeli, które podstawimy w kolejnych krokach do naszego szablonu HTML. Jak pamiętasz, szablon przygotowaliśmy w kroku 3.
Na początek, dodaj taki mały szablon.
rel_notes_generator.py
Szablon ma w sobie dwa elementy zastępcze, $id
i $description
, które
będziemy zamieniać odpowiednio na klucz i wartość ze słownika. Potrójny
cudzysłów ('''
lub """
) służy do tworzenia łańcuchów znaków, które zajmują
więcej niż jedną linijkę. Dla łańcuchów znaków, które nie wykraczają poza jedną
linijkę używa się pojedynczego cudzysłowu ('
lub "
).
Następnie dodaj kolejną funkcję.
rel_notes_generator.py
Jej zadaniem będzie przekształcenie słownika we fragment kodu HTML. W poprzednim kroku analizowaliśmy poszczególne części składowe funkcji, więc pewnie ta funkcja nie jest już dla Ciebie wielką niewiadomą. Jednak dla porządku przejdźmy po tym co się tutaj dzieje.
Nasza funkcja o nazwie generate_release_notes
przyjmuje jako parametr słownik
(release_notes
), w którym są pary numer zgłoszenia: opis zmian
.
Na początku, tworzymy zmienną rel_note_table_rows
, której wartość to pusty
tekst (''
). W tej zmiennej zapiszemy nasze wiersze tabeli HTML, które
wygenerujemy za pomocą naszego szablonu rel_note_template
.
Następnie, mówimy Pythonowi, żeby dla każdej pary (for id, description
) w
słowniku (release_notes.items()
):
- Wziął szablon
rel_note_template
i podmienił w nim element zastępczy$id
naid
ze słownika (czyli numer zgłoszenia) i zamienił element zastępczy$description
nadescription
ze słownika. Innymi słowy pobieramy ze słownika numer zgłoszenia i opis zmian i wstawiamy je do szablonu (rel_note_template.substitute(id=id, description=description)
). - Dodał wygenerowany wiersz tabeli HTML do zmiennej, którą stworzyliśmy na
początku (
rel_note_table_rows +=
).
Kiedy pętla przejdzie po wszystkich parach w słowniku, funkcja zwróci nam
zmienną z gotowymi wierszami tabeli (return rel_note_table_rows
). W naszym
testowym środowisku, funkcja zwróci nam taki kod:
Dla przypomnienia dodam, że tak jak w poprzednim kroku, tylko stworzyliśmy nową funkcję, ale jeszcze jej nie uruchomiliśmy. To zrobimy dopiero później.