From 4082795dc21a834464b04e6101e1113ae7318398 Mon Sep 17 00:00:00 2001 From: Katarzyna Tabor Date: Tue, 20 Sep 2022 22:51:00 +0200 Subject: [PATCH 001/664] zmiana nazwy pliku z blladaWrz na Ballada_Wrzesniowa --- songs/Ballada_Wrzesniowa.xml | 97 ++++++++++++++++++++++++++++++++++++ songs/BlladaWrz.xml | 97 ------------------------------------ 2 files changed, 97 insertions(+), 97 deletions(-) create mode 100644 songs/Ballada_Wrzesniowa.xml delete mode 100644 songs/BlladaWrz.xml diff --git a/songs/Ballada_Wrzesniowa.xml b/songs/Ballada_Wrzesniowa.xml new file mode 100644 index 00000000..542791e8 --- /dev/null +++ b/songs/Ballada_Wrzesniowa.xml @@ -0,0 +1,97 @@ + + + + Jacek Kaczmarski + + Jacek Kaczmarski + Jacek Kaczmarski + + + + + ugośmy na ten dzień czekali + Z nadzieją niecierpliwą w duszy, + Kiedy bez stów Towarzysz Stalin + Na mapie fajką strzałki ruszy. + + + Krzyk jeden pomknął wzdłuż granicy, + I zanim zmilkł zagrzmiały działa. + To w bój z szybkością nawałnicy + Armia Czerwona wyruszała. + + + + A cóż to za historia nowa? + Zdumiona spyta Europa, + + Jak to? To chłopcy Mołotowa + I sojusznicy Ribbentroppa. + + + + Zwycięstw się szlak ich serią znaczy + Sztandar wolności okrył chwałą. + owami polskich posiadaczy + Brukują Ukrainę całą. + + + Pada Podole, w hołdach Wołyń, + Lud pieśnią wita ustrój nowy. + Płoną majątki i kościoły + I Chrystus z kulą w tyle głowy. + + + Nad polem bitwy dłonie wzniosą + We wspólną pięść co dech zapiera + + Nieprzeliczone dzieci Soso, + Niezwyciężony miot Hitlera. + + + + Już starty z map wersalski bękart, + Już wolny Żyd i Białorusin, + Już nigdy więcej Polska ręka + Ich do niczego nie przymusi. + + + Nową im wolność głosi "Prawda", + Świat cały wieść obiega w lot, + Że jeden odtąd łączy sztandar + Gwiazdę, sierp, hakenkreuz i młot. + + + Tych dni historia nie zapomni, + Gdy stary ląd w zdumieniu zastygł + + I święcić będą nam potomni + Po pierwszym września - siedemnasty. + + + + + + + + + + + + + + + Poezja śpiewana + + + + chords + + + Onufry + + + Akordy wg śpiewnika Encore, ja za nie głowy nie dam, bo tego nie gram. + + + diff --git a/songs/BlladaWrz.xml b/songs/BlladaWrz.xml deleted file mode 100644 index d4043565..00000000 --- a/songs/BlladaWrz.xml +++ /dev/null @@ -1,97 +0,0 @@ - - - - Jacek Kaczmarski - - Jacek Kaczmarski - Jacek Kaczmarski - - - - - ugośmy na ten dzień czekali - Z nadzieją niecierpliwą w duszy, - Kiedy bez stów Towarzysz Stalin - Na mapie fajką strzałki ruszy. - - - Krzyk jeden pomknął wzdłuż granicy, - I zanim zmilkł zagrzmiały działa. - To w bój z szybkością nawałnicy - Armia Czerwona wyruszała. - - - - A cóż to za historia nowa? - Zdumiona spyta Europa, - - Jak to? To chłopcy Mołotowa - I sojusznicy Ribbentroppa. - - - - Zwycięstw się szlak ich serią znaczy - Sztandar wolności okrył chwałą. - owami polskich posiadaczy - Brukują Ukrainę całą. - - - Pada Podole, w hołdach Wołyń, - Lud pieśnią wita ustrój nowy. - Płoną majątki i kościoły - I Chrystus z kulą w tyle głowy. - - - Nad polem bitwy dłonie wzniosą - We wspólną pięść co dech zapiera - - Nieprzeliczone dzieci Soso, - Niezwyciężony miot Hitlera. - - - - Już starty z map wersalski bękart, - Już wolny Żyd i Białorusin, - Już nigdy więcej Polska ręka - Ich do niczego nie przymusi. - - - Nową im wolność głosi "Prawda", - Świat cały wieść obiega w lot, - Że jeden odtąd łączy sztandar - Gwiazdę, sierp, hakenkreuz i młot. - - - Tych dni historia nie zapomni, - Gdy stary ląd w zdumieniu zastygł - - I święcić będą nam potomni - Po pierwszym września - siedemnasty. - - - - - - - - - - - - - - - Poezja śpiewana - - - - chords - - - Onufry - - - Akordy wg śpiewnika Encore, ja za nie głowy nie dam, bo tego nie gram. - - - From 541f65033e7dc4788f994bb21681a876c460111e Mon Sep 17 00:00:00 2001 From: Katarzyna Tabor Date: Tue, 20 Sep 2022 22:57:45 +0200 Subject: [PATCH 002/664] =?UTF-8?q?Usuniecie=20z=20piosenek=20zb=C4=99dnyc?= =?UTF-8?q?h=20spacji=20na=20pocz=C4=85tku=20wiersza?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- songs/1788.xml | 98 +++++------ songs/A_my_nie_chcemy_uciekac_stad.xml | 48 +++--- songs/Ach_kiedy_znowu_rusza.xml | 48 +++--- ...Always_look_on_the_bright_side_of_life.xml | 12 +- songs/Ambasadorowie.xml | 72 ++++---- songs/Amsterdam.xml | 64 +++---- songs/AniolIDiable.xml | 22 +-- songs/Bagno.xml | 116 ++++++------- songs/Bajka.xml | 56 +++---- songs/Bal.xml | 24 +-- songs/Ballada_antysojowa.xml | 64 +++---- songs/Ballada_majowa.xml | 50 +++--- songs/Ballada_na_urodziny.xml | 2 +- songs/Ballada_o_Dzikim_Zachodzie.xml | 96 +++++------ songs/Ballada_o_arenie_cyrkowej.xml | 48 +++--- songs/Ballada_o_czesku_piekarzu.xml | 10 +- songs/Ballada_o_krzyzowcu.xml | 8 +- songs/Ballada_o_rozy.xml | 18 +- songs/Ballada_o_swietym_Mikolaju.xml | 14 +- songs/Ballada_o_trzezwym_diable.xml | 106 ++++++------ songs/Balonik.xml | 22 +-- songs/Bar_na_stawach.xml | 2 +- songs/Bar_w_Beskidzie.xml | 38 ++--- songs/Bartne.xml | 64 +++---- songs/Basn.xml | 28 ++-- songs/Bawitko.xml | 44 ++--- songs/Bellonika_z_miastem.xml | 40 ++--- songs/Beskid.xml | 38 ++--- songs/Beskid_jesienia.xml | 28 ++-- songs/Bez_slow.xml | 2 +- songs/Biala_basn.xml | 16 +- songs/Biala_lokomotywa.xml | 54 +++--- songs/Bialy_kaftanik.xml | 6 +- songs/Bieszczadzki_rajd.xml | 22 +-- songs/Bieszczadzkie_anioly.xml | 56 +++---- songs/Blues_dla_malej.xml | 48 +++--- songs/Blues_niepotrzebnych_powrotow.xml | 30 ++-- songs/Bombonierka.xml | 48 +++--- songs/Bosman.xml | 72 ++++---- songs/Broadway.xml | 48 +++--- songs/Bukowina_I.xml | 18 +- songs/Bukowina_II.xml | 30 ++-- songs/Burza.xml | 52 +++--- songs/Chlopaki_nie_placza.xml | 44 ++--- songs/Chodz_pomaluj_moj_swiat.xml | 36 ++-- songs/Chory_na_wyobraznie.xml | 10 +- songs/Chyba_juz_czas_wracac_do_domu.xml | 16 +- songs/Cichutko.xml | 18 +- songs/Czarny_blues_o_czwartej_nad_ranem.xml | 46 ++--- songs/Czasem_nagle_smutniejesz.xml | 26 +-- songs/Dobosz.xml | 74 ++++---- songs/Dym_z_jalowca.xml | 28 ++-- songs/Easy_Rider.xml | 134 +++++++-------- songs/Emeryt.xml | 78 ++++----- songs/Francois_Villon.xml | 64 +++---- songs/Gdy_mnie_kochac_przestaniesz.xml | 52 +++--- songs/Gdziekolwiek.xml | 16 +- songs/Glupi_Gienek.xml | 30 ++-- songs/Gonic_marzenia.xml | 48 +++--- songs/Gorska_ballada.xml | 50 +++--- songs/Goryl.xml | 146 ++++++++-------- songs/Harcerskie_idealy.xml | 24 +-- songs/Hej_przyjaciele.xml | 32 ++-- songs/Hiszpanskie_dziewczyny.xml | 48 +++--- songs/Hymn_harcerski.xml | 18 +- songs/Ida_skauci.xml | 2 +- songs/Idac_zawsze_idz.xml | 36 ++-- songs/Imperatyw.xml | 40 ++--- songs/Jak.xml | 28 ++-- songs/Jaki_byl_ten_dzien.xml | 32 ++-- songs/Jalta.xml | 158 +++++++++--------- songs/Jasnowlosa.xml | 30 ++-- songs/Jaworzyna.xml | 4 +- songs/Jesienna_zaduma_(2).xml | 18 +- songs/Jesienne_wino.xml | 26 +-- songs/Jesienny_obrazek.xml | 28 ++-- .../Jest_juz_za_pozno,_nie_jest_za_pozno.xml | 2 +- songs/Jest_taki_samotny_dom.xml | 48 +++--- songs/Jeszcze_nie_czas.xml | 48 +++--- songs/Kaganek.xml | 6 +- songs/Kantyczka_z_lotu_ptaka.xml | 104 ++++++------ songs/Karol_Levittoux_(4).xml | 116 ++++++------- songs/Kiedy_w_piatek.xml | 2 +- songs/Kim_wlasciwie_bylas.xml | 46 ++--- songs/Klasowka_z_fragmentu_wolnosci.xml | 80 ++++----- songs/Kochaj_mnie_i_dotykaj.xml | 50 +++--- songs/KochamWolnosc.xml | 28 ++-- songs/Kolysanka_dla_Joanny_I.xml | 32 ++-- songs/Kolysanka_dla_misiakow.xml | 34 ++-- songs/Koncert_(4).xml | 38 ++--- songs/Koniec.xml | 44 ++--- songs/Korowod.xml | 80 ++++----- songs/Krajka_(3).xml | 28 ++-- songs/Kubus.xml | 80 ++++----- songs/Lato_z_ptakami_odchodzi.xml | 36 ++-- songs/Lekcja_historii_klasycznej.xml | 32 ++-- songs/Lemkowyna.xml | 62 +++---- songs/Let_it_be.xml | 2 +- songs/List.xml | 28 ++-- songs/Madonna.xml | 8 +- songs/Majka.xml | 4 +- songs/Majster_bieda.xml | 58 +++---- songs/Makatka_z_aniolem.xml | 28 ++-- songs/Marchewkowe_pole.xml | 30 ++-- songs/Medrcy_swiata.xml | 54 +++--- songs/Miasto.xml | 40 ++--- songs/Miedzy_nami_tyle_sniegu.xml | 44 ++--- songs/Milosc.xml | 16 +- songs/Mily_moj.xml | 16 +- songs/Modlitwa.xml | 8 +- songs/Modlitwa_o_wschodzie_slonca.xml | 14 +- songs/Modlitwa_wedrownego_grajka.xml | 56 +++---- songs/Mona.xml | 70 ++++---- songs/Mury.xml | 28 ++-- songs/Muszelki.xml | 56 +++---- songs/Na_potoczku-m_prala.xml | 48 +++--- songs/Nadaremnosc.xml | 8 +- songs/Nasza_klasa.xml | 66 ++++---- songs/Nie_chod_tam.xml | 28 ++-- songs/Nie_chodz_tam.xml | 28 ++-- songs/Nie_lubie_wampirow.xml | 48 +++--- songs/Niebieska_piosenka.xml | 20 +-- songs/Niebo_do_wynajecia.xml | 40 ++--- songs/Niedokonczona_jesienna_fuga.xml | 30 ++-- songs/Niepokoj.xml | 46 ++--- songs/Nierozdziobai.xml | 32 ++-- songs/Noc_albo_oczekiwanie_na_sniadanie.xml | 42 ++--- songs/Noc_w_bacowce.xml | 34 ++-- songs/Nocna_piosenka_o_miescie.xml | 60 +++---- songs/Nuta_z_Ponidzia.xml | 48 +++--- songs/Ocean.xml | 32 ++-- songs/Ogien.xml | 32 ++-- songs/Opadly_mgly_wstaje_nowy_dzien.xml | 14 +- songs/Opowiesc_pewnego_emigranta.xml | 10 +- songs/Pejzaze_harasymowiczowskie.xml | 4 +- songs/Piechota_do_lata.xml | 34 ++-- songs/Piesn_gruzinska.xml | 32 ++-- songs/Piesn_na_wyjscie.xml | 36 ++-- songs/Piesn_o_snie.xml | 80 ++++----- songs/Pijak.xml | 128 +++++++------- songs/PiosenkaMazowiecka.xml | 2 +- songs/Piosenka_dla_Wojtka_Bellona.xml | 34 ++-- ...a_do_spiewania_przy_pokonywaniu_wzgorz.xml | 48 +++--- songs/Piosenka_na_rozgrzanie.xml | 24 +-- songs/Piosenka_o_zajaczku.xml | 38 ++--- songs/Piosenka_turystyczna_1.xml | 38 ++--- songs/Piosenka_turystyczna_2.xml | 90 +++++----- songs/Piosenka_wiosenna.xml | 40 ++--- songs/Pisze_historyczna_powiesc.xml | 30 ++-- songs/Plonie_ognisko_i_szumia_knieje.xml | 32 ++-- songs/Pocaluj_noc.xml | 50 +++--- songs/Powrot.xml | 56 +++---- songs/Powroty.xml | 36 ++-- songs/Pozegnalny_ton.xml | 32 ++-- songs/Pozegnanie.xml | 56 +++---- songs/Pozegnanie_3.xml | 24 +-- songs/Przyjaciolko.xml | 40 ++--- songs/PtakiPtakom.xml | 48 +++--- songs/Roza.xml | 36 ++-- songs/Rzeka.xml | 4 +- songs/Sen_Katarzyny_II.xml | 48 +++--- songs/Sielanka_o_domu.xml | 70 ++++---- songs/Sierpien.xml | 20 +-- songs/Slynny_niebieski_prochowiec.xml | 98 +++++------ songs/Smialy_harpunnik.xml | 30 ++-- songs/Swietlany_krzyz.xml | 18 +- songs/Szanta.xml | 18 +- songs/Tango.xml | 106 ++++++------ songs/Tawerna_pod_pijana_zgraja.xml | 58 +++---- songs/Teksanski.xml | 2 +- songs/Uciekali.xml | 56 +++---- songs/Ukraina.xml | 50 +++--- songs/Ulice_Londyny.xml | 24 +-- songs/Wania.xml | 48 +++--- songs/Wedrowka_z_cieniem.xml | 28 ++-- songs/Wiatr_i_strzyga.xml | 6 +- songs/Wieczor.xml | 64 +++---- songs/Winda_do_nieba.xml | 40 ++--- songs/Wrozba.xml | 36 ++-- songs/Yellow_submarine.xml | 4 +- songs/Zabierz_mnie_na_stacje.xml | 38 ++--- songs/Zazdrosc.xml | 16 +- songs/Zbik.xml | 40 ++--- songs/Zielona_dolina.xml | 52 +++--- songs/Zielone_szkielko.xml | 50 +++--- songs/Zielony_plomien.xml | 64 +++---- songs/Znow_wedrujemy.xml | 44 ++--- songs/Zolnierzyk.xml | 48 +++--- songs/Zrodlo.xml | 60 +++---- songs/ZwawaPiosenkaOZuczku.xml | 16 +- songs/alpuhara.xml | 144 ++++++++-------- songs/balladaoczlowiekuzkwiatami.xml | 28 ++-- songs/bruces.xml | 42 ++--- songs/ciwszyscyludzie.xml | 60 +++---- songs/cos.xml | 8 +- songs/cosjeszcze.xml | 8 +- songs/creutzfeld.xml | 2 +- songs/czarny_kot.xml | 48 +++--- songs/czas.xml | 64 +++---- songs/dezyderata.xml | 82 ++++----- songs/dla_michasia.xml | 44 ++--- songs/dwieskaly.xml | 64 +++---- songs/dzungla.xml | 54 +++--- songs/gormimalo.xml | 64 +++---- songs/idziesobiekrolik.xml | 28 ++-- songs/jakdobrzenam.xml | 48 +++--- songs/jasio.xml | 108 ++++++------ songs/kara_barabasza.xml | 92 +++++----- songs/katarynka.xml | 18 +- songs/kiedy_mowisz.xml | 26 +-- songs/krag.xml | 48 +++--- songs/krajkapelna.xml | 76 ++++----- songs/ksiezniczka_i_pirat.xml | 80 ++++----- songs/leluchow.xml | 16 +- songs/leonardo.xml | 20 +-- songs/listoczekaniu.xml | 24 +-- songs/lumberjack.xml | 94 +++++------ songs/malarze.xml | 32 ++-- songs/moiprzyjaciele.xml | 52 +++--- songs/motyle_pocalunki.xml | 6 +- songs/muchawszklancelemoniady.xml | 54 +++--- songs/mysliwa.xml | 14 +- songs/nadziei_amatorski_zespol.xml | 6 +- songs/najemnicy.xml | 34 ++-- songs/naszaklasa92.xml | 61 ++++--- songs/nielubie.xml | 64 +++---- songs/niepatrznato.xml | 58 +++---- songs/oblawa.xml | 72 ++++---- songs/obok_ciebie.xml | 34 ++-- songs/obokciebie.xml | 38 ++--- songs/obraciachktorzypytalisie.xml | 64 +++---- ...owiedz_na_ankiete_twoj_system_wartosci.xml | 80 ++++----- songs/okrok.xml | 48 +++--- songs/osada.xml | 24 +-- ...tniamruczankaalbospleenkubusiapuchatka.xml | 66 ++++---- songs/pierscienie.xml | 18 +- songs/piesnxxix.xml | 40 ++--- songs/piosenka_o_arbacie.xml | 36 ++-- songs/piosenka_o_krolu_i_zolnierzach.xml | 48 +++--- songs/piosenkadlaprzyjaciela.xml | 34 ++-- songs/piosenkanapisanamimochodem.xml | 84 +++++----- songs/plastelina.xml | 22 +-- songs/pociag.xml | 64 +++---- songs/pozegnanieO.xml | 80 ++++----- songs/prawodzungli.xml | 54 +++--- songs/rajdowa.xml | 42 ++--- songs/rapsodokroluwarnenczyku.xml | 92 +++++----- songs/rover.xml | 64 +++---- songs/scarlett.xml | 24 +-- songs/spotkanie_w_porcie.xml | 92 +++++----- songs/spowiedz.xml | 68 ++++---- songs/tropiki.xml | 28 ++-- songs/tylkochciec.xml | 36 ++-- songs/wasza_wysokosc_kobieto.xml | 30 ++-- songs/wee.xml | 46 ++--- songs/wiodawioda.xml | 28 ++-- songs/wloczedzy.xml | 90 +++++----- songs/wtakacisze.xml | 40 ++--- ...aciagnijcie_na_oknie_niebieska_zaslone.xml | 48 +++--- songs/zalzabulatemo.xml | 36 ++-- songs/zbieg_okolicznosci_lagodzacych.xml | 24 +-- songs/ze_szczytu_schodow.xml | 104 ++++++------ songs/zrodlo_ii.xml | 78 ++++----- songs/zuzanna.xml | 48 +++--- 264 files changed, 5731 insertions(+), 5732 deletions(-) diff --git a/songs/1788.xml b/songs/1788.xml index 9026dc54..97216460 100644 --- a/songs/1788.xml +++ b/songs/1788.xml @@ -10,69 +10,69 @@ Ta pierwsza morska podróż do Australii! - Łotry przy burtach, prostytutki w kojach - + Łotry przy burtach, prostytutki w kojach - Wszyscy się bali, łkali i rzygali W drodze do raju. Przewrotności Twoja - Panie, coś w jeszcze nam nieznanych planach - Miał czarne diabły strzegące wybrzeży - Edenu, który przeznaczyłeś dla nas, - A w który nikt, prawdę mówiąc, nie wierzył! + Panie, coś w jeszcze nam nieznanych planach + Miał czarne diabły strzegące wybrzeży + Edenu, który przeznaczyłeś dla nas, + A w który nikt, prawdę mówiąc, nie wierzył! - Czym żeśmy, marni, zasłużyli na to? - Ten, co zawisnąć miał za kradzież płaszcza - - Płakał nad swoją niechybną zatratą; - Nie widział Ciebie w robaczywych masztach - Statku, co tylko był więzieniem nowym; - Tej co kupczyła ciałami swych dziatek - - Ani przez mgnienie nie przyszło do głowy, - Że to nadziei - nie rozpaczy statek. + Czym żeśmy, marni, zasłużyli na to? + Ten, co zawisnąć miał za kradzież płaszcza - + Płakał nad swoją niechybną zatratą; + Nie widział Ciebie w robaczywych masztach + Statku, co tylko był więzieniem nowym; + Tej co kupczyła ciałami swych dziatek - + Ani przez mgnienie nie przyszło do głowy, + Że to nadziei - nie rozpaczy statek. - Niejeden żołnierz z ponurej eskorty - (Bo czym się ich los od naszego różnił?) - Wiedział, że nigdy już nie ujrzy portu, - Gdzie go podejmą karczmarze usłużni - I płatne dziewki; że zabraknie rumu - Zanim do celu przygnasz okręt szparki. - Z marynarzami pili więc na umór - I - wbrew zakazom - grali o więźniarki. + Niejeden żołnierz z ponurej eskorty + (Bo czym się ich los od naszego różnił?) + Wiedział, że nigdy już nie ujrzy portu, + Gdzie go podejmą karczmarze usłużni + I płatne dziewki; że zabraknie rumu + Zanim do celu przygnasz okręt szparki. + Z marynarzami pili więc na umór + I - wbrew zakazom - grali o więźniarki. - Prawda, nie wszyscy próby Twe przetrwali, - Ale też ciężkoś nas doświadczał, Panie: - Nie oszczędzałeś nam wysokiej fali, - Za którą mnogim przyszło w oceanie - Zakończyć żywot; innym dziąsła zgniły, - Wypadły zęby, rozgorzały wrzody... - Więc znaczą nasz zielony szlak mogiły - Szkorbutu, szału, francuskiej choroby. + Prawda, nie wszyscy próby Twe przetrwali, + Ale też ciężkoś nas doświadczał, Panie: + Nie oszczędzałeś nam wysokiej fali, + Za którą mnogim przyszło w oceanie + Zakończyć żywot; innym dziąsła zgniły, + Wypadły zęby, rozgorzały wrzody... + Więc znaczą nasz zielony szlak mogiły + Szkorbutu, szału, francuskiej choroby. - Nikt nie odnajdzie w ruchomych odchłaniach - Ciał nieszczęśników - oprócz Ciebie, Boże. - Ich żywot grzeszny epitafiów wzbrania, - Lecz - ukarani. Więc wystarczy może, - Żeś się posłużył starszliwym przykładem: - Oni naprawdę dotarli do piekieł, - A umierając nie wierzył z nich żaden, - Że w swym cierpieniu umiera - człowiekiem. + Nikt nie odnajdzie w ruchomych odchłaniach + Ciał nieszczęśników - oprócz Ciebie, Boże. + Ich żywot grzeszny epitafiów wzbrania, + Lecz - ukarani. Więc wystarczy może, + Żeś się posłużył starszliwym przykładem: + Oni naprawdę dotarli do piekieł, + A umierając nie wierzył z nich żaden, + Że w swym cierpieniu umiera - człowiekiem. - Ląd nam się wydał niegościnny, dziki; - Łotr bez honoru, kobieta sprzedajna - Z dnia na dzień - jak się stać ma osadnikiem - Nieznanych światów? Bo rozpoznać Raj nam - Nie było łatwo; znaleść w sobie siłę, - Wbrew przeciwnościom, bez słowa zachęty - By mimo wszystko żyć - nim nam odkryłeś - Kraj szczodry w zboże, złoto i diamenty. + Ląd nam się wydał niegościnny, dziki; + Łotr bez honoru, kobieta sprzedajna + Z dnia na dzień - jak się stać ma osadnikiem + Nieznanych światów? Bo rozpoznać Raj nam + Nie było łatwo; znaleść w sobie siłę, + Wbrew przeciwnościom, bez słowa zachęty + By mimo wszystko żyć - nim nam odkryłeś + Kraj szczodry w zboże, złoto i diamenty. - Łajdacki pomiot, łotrowskie nasienie - Czerpiąc ze spichrza Twoich dóbr wszelakich - - Choć tyle wiemy własnym doświadczeniem: - W nas jest Raj, Piekło - I do obu - szlaki. + Łajdacki pomiot, łotrowskie nasienie + Czerpiąc ze spichrza Twoich dóbr wszelakich - + Choć tyle wiemy własnym doświadczeniem: + W nas jest Raj, Piekło - I do obu - szlaki. diff --git a/songs/A_my_nie_chcemy_uciekac_stad.xml b/songs/A_my_nie_chcemy_uciekac_stad.xml index dfb8a497..55041cf9 100644 --- a/songs/A_my_nie_chcemy_uciekac_stad.xml +++ b/songs/A_my_nie_chcemy_uciekac_stad.xml @@ -9,52 +9,52 @@ - Stanął w ogniu nasz wielki dom - Dym w korytarzach kręci sznury - Jest głęboka, naprawdę czarna noc - Z piwnic płonące uciekają szczury + Stanął w ogniu nasz wielki dom + Dym w korytarzach kręci sznury + Jest głęboka, naprawdę czarna noc + Z piwnic płonące uciekają szczury - Krzyczę przez okno, czoło w szybę wgniatam - Haustem powietrza robię w żarze wyłom - Ten kto mnie słyszy ma mnie za wariata - Woła: co jeszcze świrze ci się śniło? + Krzyczę przez okno, czoło w szybę wgniatam + Haustem powietrza robię w żarze wyłom + Ten kto mnie słyszy ma mnie za wariata + Woła: co jeszcze świrze ci się śniło? - Więc chwytam kraty rozgrzane do białości - Twarz swoją widzę, twarz w przekleństwach - A obok sąsiad patrzy z ciekawością - Jak płonie na nim kaftan bezpieczeństwa + Więc chwytam kraty rozgrzane do białości + Twarz swoją widzę, twarz w przekleństwach + A obok sąsiad patrzy z ciekawością + Jak płonie na nim kaftan bezpieczeństwa - Dym w dziurce od klucza, a drzwi bez klamek - Pękają tynki wzdłuż spoconej ściany - Wsuwam swój język w rozpalony zamek - Śmieje się za mną ktoś jak obłąkany + Dym w dziurce od klucza, a drzwi bez klamek + Pękają tynki wzdłuż spoconej ściany + Wsuwam swój język w rozpalony zamek + Śmieje się za mną ktoś jak obłąkany - Lecz większość śpi nadal, przez sen się uśmiecha + Lecz większość śpi nadal, przez sen się uśmiecha A kto się zbudzi nie wierzy w przebudzenie - Krzyk w wytłumionych salach nie zna echa + Krzyk w wytłumionych salach nie zna echa Na rusztach łóżek milczy przerażenie - Ci przywiązani dymem materacy + Ci przywiązani dymem materacy Przepowiadają życia swego słowa - Nam pod nogami żarzą się posadzki + Nam pod nogami żarzą się posadzki Deszcz iskier z sufitu osiada na głowach - Dym coraz gęstszy, obcy ktoś się wdziera + Dym coraz gęstszy, obcy ktoś się wdziera A my wciśnięci w najdalszy sali kąt - Tędy -- wrzeszczy -- niech was jasna cholera! + Tędy -- wrzeszczy -- niech was jasna cholera! A my nie chcemy uciekać stąd - A my nie chcemy uciekać stąd + A my nie chcemy uciekać stąd Krzyczymy w szale wściekłości i pokory - Stanął w ogniu nasz wielki dom + Stanął w ogniu nasz wielki dom Dom dla psychicznie i nerwowo chorych diff --git a/songs/Ach_kiedy_znowu_rusza.xml b/songs/Ach_kiedy_znowu_rusza.xml index c9750612..2786bfad 100644 --- a/songs/Ach_kiedy_znowu_rusza.xml +++ b/songs/Ach_kiedy_znowu_rusza.xml @@ -9,34 +9,34 @@ - Minęło wiele miesięcy - Ale mnie nic nie minęło - Czas dla mnie w miejscu przystanął - Takie jest chłopcy, takie jest piekło - Na odgłos kroków po schodach - Serce wciąż skacze do gardła - Że może to jednak to ona - Ona to piękna moja zagłada + Minęło wiele miesięcy + Ale mnie nic nie minęło + Czas dla mnie w miejscu przystanął + Takie jest chłopcy, takie jest piekło + Na odgłos kroków po schodach + Serce wciąż skacze do gardła + Że może to jednak to ona + Ona to piękna moja zagłada - Ach, kiedy znowu ruszą dla mnie dni - Noce i dni - I pory roku krążyć zaczną znów - Jak obieg krwi - Lato jesień zima wiosna - Do Boliwii droga prosta - Wiosna lato jesień zima - Nic mi nie przypomina + Ach, kiedy znowu ruszą dla mnie dni + Noce i dni + I pory roku krążyć zaczną znów + Jak obieg krwi + Lato jesień zima wiosna + Do Boliwii droga prosta + Wiosna lato jesień zima + Nic mi nie przypomina - Ni żyć już można mi umrzeć - Wypłakane łzy doszczętnie - Oddycham ledwie i z bólem - Kością mi w gardle staje powietrze - Czy tak już będzie i będzie - Boże mój Boże mój Boże - Zawsze i wszędzie w obłędzie - Boże mój wbiłeś we mnie wszytkie noże + Ni żyć już można mi umrzeć + Wypłakane łzy doszczętnie + Oddycham ledwie i z bólem + Kością mi w gardle staje powietrze + Czy tak już będzie i będzie + Boże mój Boże mój Boże + Zawsze i wszędzie w obłędzie + Boże mój wbiłeś we mnie wszytkie noże diff --git a/songs/Always_look_on_the_bright_side_of_life.xml b/songs/Always_look_on_the_bright_side_of_life.xml index 62133329..4751b33b 100644 --- a/songs/Always_look_on_the_bright_side_of_life.xml +++ b/songs/Always_look_on_the_bright_side_of_life.xml @@ -3,19 +3,19 @@ Monthy Python - Some things in life are bad they can really make you mad + Some things in life are bad they can really make you mad Other things just make you swear and curse - When you've chewing a life's gristle Don't grumble give a whistle + When you've chewing a life's gristle Don't grumble give a whistle And this'll help things turn out for the best And always look on the bright side of life - Always look on the light side of life + Always look on the light side of life If life seems jolly rotten there's something you've forgotten and that's to laugh and smile and dance and sing. - When you're feeling in the dumps don't be silly chumps + When you're feeling in the dumps don't be silly chumps Just purse your lips and whistle - that's the thing @@ -33,8 +33,8 @@ just before you draw your terminal breath - Life's a pice of shit when you look at it - Life's a laugh and death's a joke that's true + Life's a pice of shit when you look at it + Life's a laugh and death's a joke that's true You'll see it's all a show keep'em laughing as you go just remember that the last laugh is on you diff --git a/songs/Ambasadorowie.xml b/songs/Ambasadorowie.xml index 7c4c135a..ce8f5ce4 100644 --- a/songs/Ambasadorowie.xml +++ b/songs/Ambasadorowie.xml @@ -9,52 +9,52 @@ - Jeszcze pod ręką globus - z taką mapą świata, - Na jaką stać strategię, plany i marzenia. - Jeszcze insygnia władzy, sobolowa szata, - Gęsty, trefiony włos i ręki gest bez drżenia. - Jeszcze w zasięgu dłoni zegar - jeszcze wcześnie, - Pewności siebie ruch wskazówki nie odbiera. - Wzrok - lustro duszy - widzi wszystko nawet we śnie, - Któremu spokój niesie Cyfra i Litera. + Jeszcze pod ręką globus - z taką mapą świata, + Na jaką stać strategię, plany i marzenia. + Jeszcze insygnia władzy, sobolowa szata, + Gęsty, trefiony włos i ręki gest bez drżenia. + Jeszcze w zasięgu dłoni zegar - jeszcze wcześnie, + Pewności siebie ruch wskazówki nie odbiera. + Wzrok - lustro duszy - widzi wszystko nawet we śnie, + Któremu spokój niesie Cyfra i Litera. - Tyle zrobili już, jak na swe młode lata, - Ulega dziejów wosk ich nieomylnym śladom - - To George de Selve - obiecujący dyplomata - I Jean de Dinteville - francuski ambasador. + Tyle zrobili już, jak na swe młode lata, + Ulega dziejów wosk ich nieomylnym śladom - + To George de Selve - obiecujący dyplomata + I Jean de Dinteville - francuski ambasador. - Dyskretny przepych - tylko echem dostojeństwa, - Turecki dywan, włoska lutnia - znak obycia. - W milczących ustach bezwzględnego smak zwycięstwa, - W postawach - wielkość - osiągnięta już za życia. - Ciężka kotara obu wspiera tym - co kryje. - Patrzą przed siebie śmiało, pewni swoich racji, - Wszak dyplomacja włada wszystkim dziś - co żyje, - A oni - kwiat szesnastowiecznej dyplomacji! + Dyskretny przepych - tylko echem dostojeństwa, + Turecki dywan, włoska lutnia - znak obycia. + W milczących ustach bezwzględnego smak zwycięstwa, + W postawach - wielkość - osiągnięta już za życia. + Ciężka kotara obu wspiera tym - co kryje. + Patrzą przed siebie śmiało, pewni swoich racji, + Wszak dyplomacja włada wszystkim dziś - co żyje, + A oni - kwiat szesnastowiecznej dyplomacji! - Nie wiedzą, co to ból, co dżuma, albo katar. - Zachciankom wielkich - świat uczyni zawsze zadość! - To George de Selve - obiecujący dyplomata - I Jean de Dinteville - francuski ambasador. + Nie wiedzą, co to ból, co dżuma, albo katar. + Zachciankom wielkich - świat uczyni zawsze zadość! + To George de Selve - obiecujący dyplomata + I Jean de Dinteville - francuski ambasador. - Lecz w nastrojonej lutni nagle struna pęka - I żółkną brzegi kart w otwartej wiedzy księdze... - Za krucyfiksem błądzi mimowolnie ręka - Strzałka zegara iść zaczyna coraz prędzej! - Straszliwy kształt przed nimi zjawia się w pół kroku - I niszczy spokój - czy artysta się wygłupia? - Nie, to nie żart! Na kształt ten trzeba spojrzeć z boku! - Żeby zobaczyć jasno, że to czaszka trupia! + Lecz w nastrojonej lutni nagle struna pęka + I żółkną brzegi kart w otwartej wiedzy księdze... + Za krucyfiksem błądzi mimowolnie ręka + Strzałka zegara iść zaczyna coraz prędzej! + Straszliwy kształt przed nimi zjawia się w pół kroku + I niszczy spokój - czy artysta się wygłupia? + Nie, to nie żart! Na kształt ten trzeba spojrzeć z boku! + Żeby zobaczyć jasno, że to czaszka trupia! - Byli - i nie ma ich, ach - cóż za wielka strata! - Jak nazywali się? Któż dzisiaj tego świadom? - Ach! George de Selve! Obiecujący dyplomata... - Ach! Jean de Dinteville, francuski ambasador... + Byli - i nie ma ich, ach - cóż za wielka strata! + Jak nazywali się? Któż dzisiaj tego świadom? + Ach! George de Selve! Obiecujący dyplomata... + Ach! Jean de Dinteville, francuski ambasador... diff --git a/songs/Amsterdam.xml b/songs/Amsterdam.xml index 1905efa6..e1222bf5 100644 --- a/songs/Amsterdam.xml +++ b/songs/Amsterdam.xml @@ -9,48 +9,48 @@ - Jest port wielki jak świat, co się zwie Amsterdam, - Marynarze od lat pieśni swe nucą tam. - Jest jak świat wielki port, marynarze w nim śpią, - Jak daleki śpi fiord, zanim świt zbudzi go. + Jest port wielki jak świat, co się zwie Amsterdam, + Marynarze od lat pieśni swe nucą tam. + Jest jak świat wielki port, marynarze w nim śpią, + Jak daleki śpi fiord, zanim świt zbudzi go. - Jest port wielki jak świat, marynarze w nim mrą, - Umierają co świt, pijąc piwo i klnąc. - Jest port wielki jak świat, co się zwie Amsterdam, - Marynarze od lat nowi rodzą się tam. + Jest port wielki jak świat, marynarze w nim mrą, + Umierają co świt, pijąc piwo i klnąc. + Jest port wielki jak świat, co się zwie Amsterdam, + Marynarze od lat nowi rodzą się tam. - Marynarze od lat złażą tam ze swych łajb, - Obrus wielki jak świat czeka ich w każdej z knajp. - Obnażają swe kły skłonne wgryźć się w tę noc, - W tłuste podbrzusza ryb, w spasły księżyc i w noc. + Marynarze od lat złażą tam ze swych łajb, + Obrus wielki jak świat czeka ich w każdej z knajp. + Obnażają swe kły skłonne wgryźć się w tę noc, + W tłuste podbrzusza ryb, w spasły księżyc i w noc. - Do łapczywych ich łap wszystko wpada na żer, - Tłuszcz skapuje kap, kap, z rybich wątrób i serc. - Potem pijani w sztok w mrok odchodzą gdzieś, - A z bebechów ich wkrąg płynie czkawka i śmiech. + Do łapczywych ich łap wszystko wpada na żer, + Tłuszcz skapuje kap, kap, z rybich wątrób i serc. + Potem pijani w sztok w mrok odchodzą gdzieś, + A z bebechów ich wkrąg płynie czkawka i śmiech. - Jest port wielki jak świat, co się zwie Amsterdam, - Marynarze od lat tańce swe tańczą tam. - Lubią to bez dwóch zdań, lubią to bez zdań dwóch, - Gdy o brzuchy swych pań ocierają swój brzuch. + Jest port wielki jak świat, co się zwie Amsterdam, + Marynarze od lat tańce swe tańczą tam. + Lubią to bez dwóch zdań, lubią to bez zdań dwóch, + Gdy o brzuchy swych pań ocierają swój brzuch. - Potem buch kogoś w łeb, aż na dwoje mu pękł, - Bo wybrzydzał się kiep na harmonii mdły jęk. - Akordeon też już wydał ostatni dech, - I znów obrus i tłuszcz, i znów czkawka i śmiech. + Potem buch kogoś w łeb, aż na dwoje mu pękł, + Bo wybrzydzał się kiep na harmonii mdły jęk. + Akordeon też już wydał ostatni dech, + I znów obrus i tłuszcz, i znów czkawka i śmiech. - Jest port wielki jak świat, co się zwie Amsterdam, - Marynarze od lat zdrowie pań piją tam. - Pań tych zdrowie co noc piją w grudzień, czy w maj, - Które za złota trzos otwierają im raj. + Jest port wielki jak świat, co się zwie Amsterdam, + Marynarze od lat zdrowie pań piją tam. + Pań tych zdrowie co noc piją w grudzień, czy w maj, + Które za złota trzos otwierają im raj. - A gin, wódka i grog, a grog, wódka i gin - Rozpalają im wzrok, skrzydeł przydają im. - Żeby na skrzydłach tych mogli wzlecieć, hen, tam, - Skąd się smarka na świat i na port Amsterdam. + A gin, wódka i grog, a grog, wódka i gin + Rozpalają im wzrok, skrzydeł przydają im. + Żeby na skrzydłach tych mogli wzlecieć, hen, tam, + Skąd się smarka na świat i na port Amsterdam. diff --git a/songs/AniolIDiable.xml b/songs/AniolIDiable.xml index 9e9bdfa1..725c95f6 100644 --- a/songs/AniolIDiable.xml +++ b/songs/AniolIDiable.xml @@ -11,29 +11,29 @@ Idzie diabeł ścieżką krętą pełen myśli złych - Nie pożyczył mu na piwo, nie pożyczył nikt. - ońce smaży go od rana, wiatr gorący dmucha, - Diabeł się z pragnienia słania w ten piekielny upał. + Nie pożyczył mu na piwo, nie pożyczył nikt. + ońce smaży go od rana, wiatr gorący dmucha, + Diabeł się z pragnienia słania w ten piekielny upał. Idzie Anioł wśród zieleni, dobrze mu się wiedzie, - Pełno grosza ma w kieszeni i przyjaciół wszędzie. - Nagle przystanęli obaj na drodze pod śliwą. - Zobaczyli, że im wyszedł browar naprzeciwko. + Pełno grosza ma w kieszeni i przyjaciół wszędzie. + Nagle przystanęli obaj na drodze pod śliwą. + Zobaczyli, że im wyszedł browar naprzeciwko. - Nie ma szczęścia na tym świecie ni sprawiedliwości, + Nie ma szczęścia na tym świecie ni sprawiedliwości, Anioł pije piwo trzecie, Diabeł mu zazdrości. - Postaw kufla mówi Diabeł - Bóg ci wynagrodzi, - My artyści w taki upał żyć musimy w zgodzie. + Postaw kufla mówi Diabeł - Bóg ci wynagrodzi, + My artyści w taki upał żyć musimy w zgodzie. - Na to Anioł zatrzepotał skrzydeł pióropuszem + Na to Anioł zatrzepotał skrzydeł pióropuszem I powiada - dam ci dychę w zamian za twą duszę. - Musiał Diabeł Aniołowi wściekłą duszę sprzedać + Musiał Diabeł Aniołowi wściekłą duszę sprzedać I stworzyli sobie piekło z odrobiną nieba. diff --git a/songs/Bagno.xml b/songs/Bagno.xml index 33253fff..958cdc80 100644 --- a/songs/Bagno.xml +++ b/songs/Bagno.xml @@ -9,99 +9,99 @@ - Wujek Euzebiusz dał mi kilka cegieł - Żebym zbudował zamek bo miałem kilka cegieł - Które dał mi wujek Euzebiusz - Więc zbudowałem zamek na skalistym podłożu - Ale utonął w bagnie bo podłoże było skaliste - Prawie jak dusza wujka Euzebiusza + Wujek Euzebiusz dał mi kilka cegieł + Żebym zbudował zamek bo miałem kilka cegieł + Które dał mi wujek Euzebiusz + Więc zbudowałem zamek na skalistym podłożu + Ale utonął w bagnie bo podłoże było skaliste + Prawie jak dusza wujka Euzebiusza - Wujek Euzebiusz, je je je... + Wujek Euzebiusz, je je je... - Więc chciałem więcej cegieł - Od wujka Euzebiusza - Ale wujek Euzebiusz - Niestety utonął w bagnie - Bo podłoże było skaliste - Więc resztę cegieł - Wziąłem od ciotki Matyldy + Więc chciałem więcej cegieł + Od wujka Euzebiusza + Ale wujek Euzebiusz + Niestety utonął w bagnie + Bo podłoże było skaliste + Więc resztę cegieł + Wziąłem od ciotki Matyldy - Ciotka Matylda, je je je... + Ciotka Matylda, je je je... - Więc zbudowałem zamek nowy - Na skalistym podłożu - Ale utonął w bagnie bo podłoże było skaliste (prawie) - A ciotka Matylda wyleciała w powietrze - Bo paliła fajkę w atmosferze pełnej metanu - I była duża dziura do której wpadła - Ciotka Matylda + Więc zbudowałem zamek nowy + Na skalistym podłożu + Ale utonął w bagnie bo podłoże było skaliste (prawie) + A ciotka Matylda wyleciała w powietrze + Bo paliła fajkę w atmosferze pełnej metanu + I była duża dziura do której wpadła + Ciotka Matylda - Duża dziura, je je je... + Duża dziura, je je je... - Więc następne cegły wyłowiłem z bagna wędką - Ale ciotki Matyldy i wujka Euzebiusza - Nie wyłowiłem z bagna bo byli brzydcy i starzy - I śmierdzieli tak bardzo jak śpiwór Szymona + Więc następne cegły wyłowiłem z bagna wędką + Ale ciotki Matyldy i wujka Euzebiusza + Nie wyłowiłem z bagna bo byli brzydcy i starzy + I śmierdzieli tak bardzo jak śpiwór Szymona - Śpiwór Szymona, je je je... + Śpiwór Szymona, je je je... - Poszedłem po rozum do Tłuszcza - I zbudowalem cegielnię z cegieł wyjętych z bagna - By zrobić więcej cegieł - I zbudowałem zamek na skalistym podłożu - Ale utonął w bagnie bo podłoże było skaliste - Jak kamień nerkowy małego ślicznego zajączka + Poszedłem po rozum do Tłuszcza + I zbudowalem cegielnię z cegieł wyjętych z bagna + By zrobić więcej cegieł + I zbudowałem zamek na skalistym podłożu + Ale utonął w bagnie bo podłoże było skaliste + Jak kamień nerkowy małego ślicznego zajączka - Kamień nerkowy, je je je... + Kamień nerkowy, je je je... - Więc wyłowiłem osła i krowę prosto z bagna - I poszła na dno cegielnia - Z zasady zachowania masy na dnie bagna - A potem z osła i krowy wyłonił się nagle m - A z mułu zrobiłem cegły + Więc wyłowiłem osła i krowę prosto z bagna + I poszła na dno cegielnia + Z zasady zachowania masy na dnie bagna + A potem z osła i krowy wyłonił się nagle m + A z mułu zrobiłem cegły - Osioł i krowa, je je je... + Osioł i krowa, je je je... - I zbudowałem zamek - Ale byłem sprytniejszy i postawiłem zamek - Na żabiej łapce i stał piękny zamek - Sięgął wieżami nieba i ten zamek stał tak długo - Aż grzmotnął w niego piorun + I zbudowałem zamek + Ale byłem sprytniejszy i postawiłem zamek + Na żabiej łapce i stał piękny zamek + Sięgął wieżami nieba i ten zamek stał tak długo + Aż grzmotnął w niego piorun - Grzmotnął piorun, je je je... + Grzmotnął piorun, je je je... - Ale zamek miał piorunochron piękny chromowy piorunochron - ugi jak kamień nerkowy małego ślicznego zajączka - Lecz było to stresujące szczególnie dla żabiej łapki - Która nagle skoczyła o pięć mil dalej + Ale zamek miał piorunochron piękny chromowy piorunochron + ugi jak kamień nerkowy małego ślicznego zajączka + Lecz było to stresujące szczególnie dla żabiej łapki + Która nagle skoczyła o pięć mil dalej - Żabia łapka, je je je... + Żabia łapka, je je je... - A pięć mil dalej też było skaliste bagno i zamek - Poszedł na dno bo nie wytrzymał napięcia powierzchniowego - A pieśń już kończyć trzeba - Bo kartka nam się kończy na której są zapisane - Godziny porannego budzenia + A pięć mil dalej też było skaliste bagno i zamek + Poszedł na dno bo nie wytrzymał napięcia powierzchniowego + A pieśń już kończyć trzeba + Bo kartka nam się kończy na której są zapisane + Godziny porannego budzenia - Czary--mary, zmieniamy gitary + Czary--mary, zmieniamy gitary diff --git a/songs/Bajka.xml b/songs/Bajka.xml index 8c0df026..e039ceb6 100644 --- a/songs/Bajka.xml +++ b/songs/Bajka.xml @@ -9,46 +9,46 @@ - Żył raz kiedyś król o wzroku jak nikt na świecie - Lecz było to powodem że kłopot wielki miał - Gdy rano przetarł oczy przez okno z zamku wyjżał - Gdzieś na krańcach świata widział łańcuch wielkich gór - Źle to kiedy coś przeciw królewskiej woli staje - I powstrzymuje bieg jego spojrzenia - Posłał więc król po dwóch swoich synów - A gdy stanęli przed nim do starszeg rzekł: + Żył raz kiedyś król o wzroku jak nikt na świecie + Lecz było to powodem że kłopot wielki miał + Gdy rano przetarł oczy przez okno z zamku wyjżał + Gdzieś na krańcach świata widział łańcuch wielkich gór + Źle to kiedy coś przeciw królewskiej woli staje + I powstrzymuje bieg jego spojrzenia + Posłał więc król po dwóch swoich synów + A gdy stanęli przed nim do starszeg rzekł: - Gdzieś na krańcach świata są wysokie góry - Idź tam i powiedz mi co za nimi jest + Gdzieś na krańcach świata są wysokie góry + Idź tam i powiedz mi co za nimi jest - Spełnił wolę ojca pierwszy jego syn - Szedł długo na kamieniach raniąc swoje stopy - Wspinał się wytrwale a gdy na szczycie był - Mógł zobaczyć ogromne spienione fale morza - Gdy wrócił znów do domu w ramiona ojca wpadł - Mów szybko co jest dalej chcę to wiedzieć teraz - A gdy zdyszany syn powiedział co jest za górami - Do drugiego z nich rzecze ojciec tak + Spełnił wolę ojca pierwszy jego syn + Szedł długo na kamieniach raniąc swoje stopy + Wspinał się wytrwale a gdy na szczycie był + Mógł zobaczyć ogromne spienione fale morza + Gdy wrócił znów do domu w ramiona ojca wpadł + Mów szybko co jest dalej chcę to wiedzieć teraz + A gdy zdyszany syn powiedział co jest za górami + Do drugiego z nich rzecze ojciec tak - Tam gdzie kończy się świat jest ogromne morze - Płyń tam i powiedz mi co też za nim jest + Tam gdzie kończy się świat jest ogromne morze + Płyń tam i powiedz mi co też za nim jest - Choć drogę miał trudniejszą ojca prośbę spełnił - Przemykał się swym statkiem przez cisze i sztormy - Aż nadzszedł wreszcie dzień i marynarz z masztu krzyknął - Kapitanie ląd przed nami widzę łańcuch wielkich gór - Więc wyprawił swoje sługi by niosły wieść do króla - A kiedy sam się zjawił jak wryty stanął w drzwiach - Król prawie cały był zżarty przez ciekawość - Usta tylko drgały mówiąc rozkaz ten + Choć drogę miał trudniejszą ojca prośbę spełnił + Przemykał się swym statkiem przez cisze i sztormy + Aż nadzszedł wreszcie dzień i marynarz z masztu krzyknął + Kapitanie ląd przed nami widzę łańcuch wielkich gór + Więc wyprawił swoje sługi by niosły wieść do króla + A kiedy sam się zjawił jak wryty stanął w drzwiach + Król prawie cały był zżarty przez ciekawość + Usta tylko drgały mówiąc rozkaz ten diff --git a/songs/Bal.xml b/songs/Bal.xml index 9ca3d003..fa72c02a 100644 --- a/songs/Bal.xml +++ b/songs/Bal.xml @@ -9,24 +9,24 @@ - Moje myśli proszę was, siądźcie jak kruki koło mnie - I z wierszami wraz zapytajcie co słychać u mnie - Ściany przyjaciółki mego domu, jeżeli potraficie - Zapytajcie chociaż raz, jak tam świat mój, jak moje życie + Moje myśli proszę was, siądźcie jak kruki koło mnie + I z wierszami wraz zapytajcie co słychać u mnie + Ściany przyjaciółki mego domu, jeżeli potraficie + Zapytajcie chociaż raz, jak tam świat mój, jak moje życie - A u mnie wir a u mnie bal - Trwa stypa po miłości - I od toastów huczy stół - I ja jedyny z moich gości + A u mnie wir a u mnie bal + Trwa stypa po miłości + I od toastów huczy stół + I ja jedyny z moich gości - Dziś nic dla ciebie moja pani, nie pogrążysz mnie w żadnym grobie - Odnalazłem dłoń własną dłoń wyciągniętą ku sobie - Rano wyjdę już spokojny, z uśmiechem przyklejonym do twarzy - I rozdam krukom wesołe wiersze na sen, na spełnienie marzeń + Dziś nic dla ciebie moja pani, nie pogrążysz mnie w żadnym grobie + Odnalazłem dłoń własną dłoń wyciągniętą ku sobie + Rano wyjdę już spokojny, z uśmiechem przyklejonym do twarzy + I rozdam krukom wesołe wiersze na sen, na spełnienie marzeń diff --git a/songs/Ballada_antysojowa.xml b/songs/Ballada_antysojowa.xml index f988bfcf..2b1d6b51 100644 --- a/songs/Ballada_antysojowa.xml +++ b/songs/Ballada_antysojowa.xml @@ -9,44 +9,44 @@ - Brnąłem do ciebie, barze, - Przez mrozy i wiatry, - Przez śnieżyce i zaspy - Fagarasz i Tatry - Przez bezbarwne, bez smaku - Kotlety sojowe - I wreszcie mięso w barze - O tyle lepsze od soi, że aż odbiera mowę + Brnąłem do ciebie, barze, + Przez mrozy i wiatry, + Przez śnieżyce i zaspy + Fagarasz i Tatry + Przez bezbarwne, bez smaku + Kotlety sojowe + I wreszcie mięso w barze + O tyle lepsze od soi, że aż odbiera mowę - A teraz jeść, nareszcie jeść - Mięsiwa --- nie soję - Smakowe kubki cieszą się - A jelita z tęsknoty aż stoją - Cięlęcina, wołowina - Zapachem swym nęci - Od mięsa krów, szalonych krów - Wprost w głowie się kręci Vivat mięso! + A teraz jeść, nareszcie jeść + Mięsiwa --- nie soję + Smakowe kubki cieszą się + A jelita z tęsknoty aż stoją + Cięlęcina, wołowina + Zapachem swym nęci + Od mięsa krów, szalonych krów + Wprost w głowie się kręci Vivat mięso! - yną przeze mnie kęsy - Rozkoszy dodając - Wielka jest kiełbasy moc - O jej smaku nie wspominając - Tkwi w moim wnętrzu mięso - Z mięsa siła ogromna powstaje - Kwatermistrz --- soi z Tesco fan - Nawet nie wie ile dobre mięso daje + yną przeze mnie kęsy + Rozkoszy dodając + Wielka jest kiełbasy moc + O jej smaku nie wspominając + Tkwi w moim wnętrzu mięso + Z mięsa siła ogromna powstaje + Kwatermistrz --- soi z Tesco fan + Nawet nie wie ile dobre mięso daje - Mięso, mięso wspaniałe jest - A soja nie całkiem - Jak soję zjesz, to bardzo chcesz - Kwatermistrza uderzyć wałkiem - Marzy mi się, marzy mi się - Z kiełbasą fasolka - Jeśli kwatermistrz soję da - To będzie rozpierdolka + Mięso, mięso wspaniałe jest + A soja nie całkiem + Jak soję zjesz, to bardzo chcesz + Kwatermistrza uderzyć wałkiem + Marzy mi się, marzy mi się + Z kiełbasą fasolka + Jeśli kwatermistrz soję da + To będzie rozpierdolka diff --git a/songs/Ballada_majowa.xml b/songs/Ballada_majowa.xml index 3c2ebe65..cde84699 100644 --- a/songs/Ballada_majowa.xml +++ b/songs/Ballada_majowa.xml @@ -9,37 +9,37 @@ - Brnąłem do ciebie maju - Przez mrozy i biele, - Przez śnieżyce i zaspy - I lute zawieje - Przez bezbarwne szpitalne - Korytarze stycznia - W tych korytarzach słońce - Gasło ustawicznie + Brnąłem do ciebie maju + Przez mrozy i biele, + Przez śnieżyce i zaspy + I lute zawieje + Przez bezbarwne szpitalne + Korytarze stycznia + W tych korytarzach słońce + Gasło ustawicznie - A teraz maj dokoła maj - Wyświęca ogrody - I cały ja i cały ja - Zanurzony w Jordanie pogody - A teraz maj i maj i maj - Dokoła się święci - Od wonnych bzów szalonych bzów - Wprost w głowie się kręci... + A teraz maj dokoła maj + Wyświęca ogrody + I cały ja i cały ja + Zanurzony w Jordanie pogody + A teraz maj i maj i maj + Dokoła się święci + Od wonnych bzów szalonych bzów + Wprost w głowie się kręci... - I płyną przeze mnie dmuchawce - Jak dzieciństwa echa - I wielka jest majowa moc - Kiedy niebo się do ziemi uśmiecha - Śpi w twoim wnętrzu chłopiec - W chłopcu pierwszy zachwyt poznaję - Z twoich ziaren wyrosną sady - Strudzonemu pielgrzymką ulżyj - Dodaj wiary + I płyną przeze mnie dmuchawce + Jak dzieciństwa echa + I wielka jest majowa moc + Kiedy niebo się do ziemi uśmiecha + Śpi w twoim wnętrzu chłopiec + W chłopcu pierwszy zachwyt poznaję + Z twoich ziaren wyrosną sady + Strudzonemu pielgrzymką ulżyj + Dodaj wiary diff --git a/songs/Ballada_na_urodziny.xml b/songs/Ballada_na_urodziny.xml index 29bb4a97..20e57d72 100644 --- a/songs/Ballada_na_urodziny.xml +++ b/songs/Ballada_na_urodziny.xml @@ -13,7 +13,7 @@ - Jakby nigdy nic brodzę już w smudze cienia + Jakby nigdy nic brodzę już w smudze cienia I widzę jak zachodzi słonko ojca i matki diff --git a/songs/Ballada_o_Dzikim_Zachodzie.xml b/songs/Ballada_o_Dzikim_Zachodzie.xml index c5efdde6..a6595b72 100644 --- a/songs/Ballada_o_Dzikim_Zachodzie.xml +++ b/songs/Ballada_o_Dzikim_Zachodzie.xml @@ -9,69 +9,69 @@ - Potwierdzają to setne przykłady - Że westerny wciąż jeszcze są w modzie - Wysłuchajcie więc państwo ballady - O tak zwanym najdzikszym zachodzie - Miasto było tam jakich tysiące - Wokół preria i skały naprzeciw - Jak gdzie indziej świeciło tam słońce - Marli starcy, rodziły się dzieci + Potwierdzają to setne przykłady + Że westerny wciąż jeszcze są w modzie + Wysłuchajcie więc państwo ballady + O tak zwanym najdzikszym zachodzie + Miasto było tam jakich tysiące + Wokół preria i skały naprzeciw + Jak gdzie indziej świeciło tam słońce + Marli starcy, rodziły się dzieci - I tym tylko od innych różni się ta ballada - Że w tym mieście gdzieś na prerii krańcach - Na jednego mieszkańca jeden szeryf przypadał - Jeden szeryf na jednego mieszkańca + I tym tylko od innych różni się ta ballada + Że w tym mieście gdzieś na prerii krańcach + Na jednego mieszkańca jeden szeryf przypadał + Jeden szeryf na jednego mieszkańca - Konsekwencje ten fakt miał ogromne - Bo nikt w mieście za spluwę nie chwytał - I od dawna już każdy zapomniał - Jak wygląda prawdziwy bandyta - Choć finanse poniekąd leżały - Gospodarka i przemysł był na nic - Ale każdy, czy duży, czy mały - Czuł się za to bezpieczny bez granic + Konsekwencje ten fakt miał ogromne + Bo nikt w mieście za spluwę nie chwytał + I od dawna już każdy zapomniał + Jak wygląda prawdziwy bandyta + Choć finanse poniekąd leżały + Gospodarka i przemysł był na nic + Ale każdy, czy duży, czy mały + Czuł się za to bezpieczny bez granic - Bo tym tylko od innych różni się ta ballada - Że w tym mieście gdzieś na prerii krańcach - Na jednego mieszkańca jeden szeryf przypadał - Jeden szeryf na jednego mieszkańca + Bo tym tylko od innych różni się ta ballada + Że w tym mieście gdzieś na prerii krańcach + Na jednego mieszkańca jeden szeryf przypadał + Jeden szeryf na jednego mieszkańca - Jeśli państwa historia ta nudzi - To pocieszcie się tym, że nareszcie - Którejś nocy krzyk ludzi obudził - Bank rozbity, bandyci są w mieście - Dobrzy ludzie na próżno wołacie - Nikt nie wstanie za spluwę nie chwyci - Skoro każdy świadomość zatracił - Czym się różnią od ludzi bandyci + Jeśli państwa historia ta nudzi + To pocieszcie się tym, że nareszcie + Którejś nocy krzyk ludzi obudził + Bank rozbity, bandyci są w mieście + Dobrzy ludzie na próżno wołacie + Nikt nie wstanie za spluwę nie chwyci + Skoro każdy świadomość zatracił + Czym się różnią od ludzi bandyci - A tym tylko od innych różni się ta ballada - Że w tym mieście gdzieś na prerii krańcach - Na każdego człowieka nagle strach upadł blady - Od szeryfa do zwykłego mieszkańca + A tym tylko od innych różni się ta ballada + Że w tym mieście gdzieś na prerii krańcach + Na każdego człowieka nagle strach upadł blady + Od szeryfa do zwykłego mieszkańca - Potwierdzają to setne przykłady - Że westerny wciąż jeszcze są w modzie - Wysłuchaliście państwo ballady - O tak zwanym najdzikszym zachodzie - Miasto było tam jakich tysiące - Ludzkie w nim krzyżowały się drogi - Lecz nie wszystkim świeciło tam słońce - Bo bandyci krążyli bez trwogi + Potwierdzają to setne przykłady + Że westerny wciąż jeszcze są w modzie + Wysłuchaliście państwo ballady + O tak zwanym najdzikszym zachodzie + Miasto było tam jakich tysiące + Ludzkie w nim krzyżowały się drogi + Lecz nie wszystkim świeciło tam słońce + Bo bandyci krążyli bez trwogi - Wyciągnijmy więc morał w tej balladzie ukryty - Gdy nie grozi nam żadne rififi - Że czasami najtrudniej rozpoznać bandytę + Wyciągnijmy więc morał w tej balladzie ukryty + Gdy nie grozi nam żadne rififi + Że czasami najtrudniej rozpoznać bandytę - Gdy dokoła sami szeryfi + Gdy dokoła sami szeryfi diff --git a/songs/Ballada_o_arenie_cyrkowej.xml b/songs/Ballada_o_arenie_cyrkowej.xml index bc56d82a..7b5e1842 100644 --- a/songs/Ballada_o_arenie_cyrkowej.xml +++ b/songs/Ballada_o_arenie_cyrkowej.xml @@ -9,40 +9,40 @@ - Na koniec rozwiązano teatr - Więc cała w sztucznych ogniach teraz - Kręci się arena cyrkowa - Naszych czasów metafora + Na koniec rozwiązano teatr + Więc cała w sztucznych ogniach teraz + Kręci się arena cyrkowa + Naszych czasów metafora - Nic tu na pewno wszystko na niby - Małpka jest w cyrku idolem - Karzeł podkręca szatańską korbkę - Arena toczy się kołem + Nic tu na pewno wszystko na niby + Małpka jest w cyrku idolem + Karzeł podkręca szatańską korbkę + Arena toczy się kołem - Niczym piłeczki w palcach żonglerów - Duszyczki nasze wirują w koło - Życie przestało być sztuką - I stało się sztuczką cyrkową + Niczym piłeczki w palcach żonglerów + Duszyczki nasze wirują w koło + Życie przestało być sztuką + I stało się sztuczką cyrkową - Dwie siostry syjamskie prawda kłamstwo - Wbiegają w zwinnych podskokach - Nikt nie odróżni jednej od drugiej - Są w jednakowych trykotach + Dwie siostry syjamskie prawda kłamstwo + Wbiegają w zwinnych podskokach + Nikt nie odróżni jednej od drugiej + Są w jednakowych trykotach - Bóg gdyby nawet w krzaku ognistym - Pojawił się między nami - Mówilibyśmy że to magik - Kolejną sztuczką nas mami + Bóg gdyby nawet w krzaku ognistym + Pojawił się między nami + Mówilibyśmy że to magik + Kolejną sztuczką nas mami - Lecz dokąd można w cyrku żyć - Pytamy stojąc na głowie - Słyszymy drwiący błazna śmiech - I to jedyna odpowiedź + Lecz dokąd można w cyrku żyć + Pytamy stojąc na głowie + Słyszymy drwiący błazna śmiech + I to jedyna odpowiedź diff --git a/songs/Ballada_o_czesku_piekarzu.xml b/songs/Ballada_o_czesku_piekarzu.xml index 06e42043..e011b3e8 100644 --- a/songs/Ballada_o_czesku_piekarzu.xml +++ b/songs/Ballada_o_czesku_piekarzu.xml @@ -3,7 +3,7 @@ Wolna Grupa Bukowina - + Chleba takiego jak ten od Cześka @@ -16,11 +16,11 @@ Mówił: nad chleby ten chleb od Cześka - chleb się chlebie chleb się chlebie + chleb się chlebie chleb się chlebie bo nad chleb być może co! - chleb się chlebie chleb się chlebie - niech ci nigdy nie zabraknie - drożdży wody rąk i ziarna (mruczał Czesiek tak noc w noc) + chleb się chlebie chleb się chlebie + niech ci nigdy nie zabraknie + drożdży wody rąk i ziarna (mruczał Czesiek tak noc w noc) A o porankach chlebem pachnących diff --git a/songs/Ballada_o_krzyzowcu.xml b/songs/Ballada_o_krzyzowcu.xml index b04841fd..7185113b 100644 --- a/songs/Ballada_o_krzyzowcu.xml +++ b/songs/Ballada_o_krzyzowcu.xml @@ -19,10 +19,10 @@ Żebyś przybył doń z daleka. - Na na na - Na na na na na na na na - Na na na na na na na na - Na na na na na na na na na na na na + Na na na + Na na na na na na na na + Na na na na na na na na + Na na na na na na na na na na na na Wolniej, wolniej, wstrzymaj konia. diff --git a/songs/Ballada_o_rozy.xml b/songs/Ballada_o_rozy.xml index bf616c65..59ea06f8 100644 --- a/songs/Ballada_o_rozy.xml +++ b/songs/Ballada_o_rozy.xml @@ -14,9 +14,9 @@ Ubrany czarno niedorzeczny W kwitnącym znalazł się ogrodzie Przepłoszył dłonią ptasie śpiewy - Zatoczył się od mocnych woni - A kiedy róży dojrzał krzewy - Bardzo głęboko się ukłonił + Zatoczył się od mocnych woni + A kiedy róży dojrzał krzewy + Bardzo głęboko się ukłonił Patrzał i oto od spojrzenia @@ -24,9 +24,9 @@ I z ciszy liścia z tego cienia Pąsowa nagle popatrzała Dwa pąki dwojga piersi strzegły - Uśmiech jak róża się rozwinął - Wargi gorąco krwią nabiegły - I rosę z płatków spił jak wino + Uśmiech jak róża się rozwinął + Wargi gorąco krwią nabiegły + I rosę z płatków spił jak wino Drapieżnie bronią kolce dzikie @@ -35,9 +35,9 @@ W mięsistość płonnie się zanurzył Trwało to dłużej od westchnienia - A potem umknął niby złodziej - Zginął jak plama w światłocieniach - Dziwny nieboszczyk czy przechodzień + A potem umknął niby złodziej + Zginął jak plama w światłocieniach + Dziwny nieboszczyk czy przechodzień diff --git a/songs/Ballada_o_swietym_Mikolaju.xml b/songs/Ballada_o_swietym_Mikolaju.xml index 2bfdbcc8..7df8db97 100644 --- a/songs/Ballada_o_swietym_Mikolaju.xml +++ b/songs/Ballada_o_swietym_Mikolaju.xml @@ -10,19 +10,19 @@ W rozstrzelonej chacie - Rozpaliłem ogień + Rozpaliłem ogień Z rozwalonych pieców - Pieśni wyniosłem węgle - Naciągnąłem na drzazgi gontów + Pieśni wyniosłem węgle + Naciągnąłem na drzazgi gontów Błękitną płachtę nieba - Będę malował od nowa + Będę malował od nowa Wioskę w dolinie Święty Mikołaju Opowiedz jak tu było - Jakie pieśni śpiewano + Jakie pieśni śpiewano Gdzie się pasły konie @@ -32,8 +32,8 @@ Z wypalonych źrenic Tylko deszcze płyną - Ej ślepcze nauczę swoje dziecko po łemkowsku - Będziecie razem żebr + Ej ślepcze nauczę swoje dziecko po łemkowsku + Będziecie razem żebr W malowanych wioskach diff --git a/songs/Ballada_o_trzezwym_diable.xml b/songs/Ballada_o_trzezwym_diable.xml index 164d4757..4acccf23 100644 --- a/songs/Ballada_o_trzezwym_diable.xml +++ b/songs/Ballada_o_trzezwym_diable.xml @@ -9,81 +9,81 @@ - Pod wieczór dobrze było gdy - Na polu pełnym zbóż - Z diabłem się spotkał Dobry Pan - I Jego Anioł Stróż + Pod wieczór dobrze było gdy + Na polu pełnym zbóż + Z diabłem się spotkał Dobry Pan + I Jego Anioł Stróż - Diabeł był zdrowy jak ten rydz - Po prostu czart na schw - Anioł zalany w drobny mak - Na nogach ledwo st - Uuu... Na nogach ledwo st + Diabeł był zdrowy jak ten rydz + Po prostu czart na schw + Anioł zalany w drobny mak + Na nogach ledwo st + Uuu... Na nogach ledwo st - Chłop gdy usłyszał Pana głos - Poprosił ich na stronę - I poczęstował z flachy wprost - Świeżutkim samogonem + Chłop gdy usłyszał Pana głos + Poprosił ich na stronę + I poczęstował z flachy wprost + Świeżutkim samogonem - Pociągnął zdrowo Anioł Stróż - I flachę Panu d - A czart do gardła nie lał nic - A czart się tylko śmi - Ha ha... A czart się tylko śmi + Pociągnął zdrowo Anioł Stróż + I flachę Panu d + A czart do gardła nie lał nic + A czart się tylko śmi + Ha ha... A czart się tylko śmi - Robotnik co z roboty szedł - Przez drogi asfaltowe - Wyciągnął z torby chleba pół - I tyleż wyborowej + Robotnik co z roboty szedł + Przez drogi asfaltowe + Wyciągnął z torby chleba pół + I tyleż wyborowej - Pociągnął zdrowo Anioł Stróż - I flachę Panu d - A czart do gardła nie lał nic - A czart się tylko śmi - Ha ha... A czart się tylko śmi + Pociągnął zdrowo Anioł Stróż + I flachę Panu d + A czart do gardła nie lał nic + A czart się tylko śmi + Ha ha... A czart się tylko śmi - Ksiądz proboszcz który wracał z mszy - Prywatnym samochodem - Zaprosił na plebanię i - Ugościł starym miodem + Ksiądz proboszcz który wracał z mszy + Prywatnym samochodem + Zaprosił na plebanię i + Ugościł starym miodem - Pociągnął zdrowo Anioł Stróż - I flachę Panu d - A czart do gardła nie lał nic - A czart się tylko śmi - Ha ha... A czart się tylko śmi + Pociągnął zdrowo Anioł Stróż + I flachę Panu d + A czart do gardła nie lał nic + A czart się tylko śmi + Ha ha... A czart się tylko śmi - Minister wyznań witał się - Z Panem jak z własnym bratem - A potem piękny toast wzniósł - Wytwornym ,,Araratem'' + Minister wyznań witał się + Z Panem jak z własnym bratem + A potem piękny toast wzniósł + Wytwornym ,,Araratem'' - Pociągnął zdrowo Anioł Stróż - I flachę Panu d - A czart do gardła nie lał nic - A czart się tylko śmi - Ha ha... A czart się tylko śmi + Pociągnął zdrowo Anioł Stróż + I flachę Panu d + A czart do gardła nie lał nic + A czart się tylko śmi + Ha ha... A czart się tylko śmi - A rano gdy ich dopadł kac - W przydrożnym wiejskim rowie - Anioł do Pana rzecze tak - Mój dobry Panie powiedz + A rano gdy ich dopadł kac + W przydrożnym wiejskim rowie + Anioł do Pana rzecze tak + Mój dobry Panie powiedz - Czy diabeł sobie wszył czy co - Że trzeźwym musi b - Pan odpowiedział spójrz na kraj - On już nie musi pić. + Czy diabeł sobie wszył czy co + Że trzeźwym musi b + Pan odpowiedział spójrz na kraj + On już nie musi pić. diff --git a/songs/Balonik.xml b/songs/Balonik.xml index c2129b4f..9f0a817f 100644 --- a/songs/Balonik.xml +++ b/songs/Balonik.xml @@ -3,29 +3,29 @@ Bułat Okudżawa - acze dziewczynka, - Balon uciekł jej, - Ludzie mówią -- nie płacz, + acze dziewczynka, + Balon uciekł jej, + Ludzie mówią -- nie płacz, A balonik hen. - acze dziewczyna, - Chłopca trzeba jej, - Ludzie mówią -- nie płacz, + acze dziewczyna, + Chłopca trzeba jej, + Ludzie mówią -- nie płacz, A balonik hen. - acze kobieta, - Mąż porzucił ją, - Ludzie mówią -- nie płacz, + acze kobieta, + Mąż porzucił ją, + Ludzie mówią -- nie płacz, A balonik hen. - acze staruszka, - Życie moje wróć! + acze staruszka, + Życie moje wróć! A balonik wrócił diff --git a/songs/Bar_na_stawach.xml b/songs/Bar_na_stawach.xml index 17b8aec9..693df27b 100644 --- a/songs/Bar_na_stawach.xml +++ b/songs/Bar_na_stawach.xml @@ -18,7 +18,7 @@ Jeszcze się w nocy kołysze miasto 8,15 na stawach bar - Bramę otwiera wchodzimy tedy + Bramę otwiera wchodzimy tedy Ja i Hnatowicz Jan diff --git a/songs/Bar_w_Beskidzie.xml b/songs/Bar_w_Beskidzie.xml index 9368d0d6..2474641d 100644 --- a/songs/Bar_w_Beskidzie.xml +++ b/songs/Bar_w_Beskidzie.xml @@ -10,52 +10,52 @@ - La la la... + La la la... Jeśli chcesz z gardła kurz wypłukać - Tu każdy wskaże ci drogę + Tu każdy wskaże ci drogę W bok od przystanku PKS--u - W prawo od szosy asfaltowej + W prawo od szosy asfaltowej Kuszą napisy ołówkiem kopiowym - Na drzwiach od dziesiątej otwartych + Na drzwiach od dziesiątej otwartych Dziś polecamy kotlet mielony - I lokal kategorii czwartej + I lokal kategorii czwartej - Lej się chmielu, lej się chmielu - Nieś muzyko po bukowym lesie - Panna Zosia ma w oczach dwa nieba - Trochę lata z nowej beczki przyniesie + Lej się chmielu, lej się chmielu + Nieś muzyko po bukowym lesie + Panna Zosia ma w oczach dwa nieba + Trochę lata z nowej beczki przyniesie - La la la... + La la la... W środku chłopaki rzucają łaciną - O sufit i o cztery ściany + O sufit i o cztery ściany Dym z extra mocnych strzela jak szampan - Bledną obrusy lniane + Bledną obrusy lniane Za to wieczorem gdy lipiec duszny Okna otworzy na oścież Gwiazdy wpadają do pełnych kufli - Poobgryzanych jak paznokcie + Poobgryzanych jak paznokcie - La la la... + La la la... Kiedy chłopaki na nogach z waty - Wracają po mokrej kolacji + Wracają po mokrej kolacji Świat się jak okręt morski kołysze - Gościniec dziwnie ślimaczy + Gościniec dziwnie ślimaczy A czasem któryś ze strachem na wróble - Pogada o polityce + Pogada o polityce Jedynie cerkiew marszczy zgorszona - Szorstkie od gnotów lice + Szorstkie od gnotów lice - La la la... + La la la... diff --git a/songs/Bartne.xml b/songs/Bartne.xml index 96e6fbe1..2476637c 100644 --- a/songs/Bartne.xml +++ b/songs/Bartne.xml @@ -9,44 +9,44 @@ - Na zachodzie słońce jeszcze się toczy - I butelka nad ławą rzuca cień - Wojtek Bellon zagląda mi w oczy - W Bartnem pod bacówką gaśnie dzień - Mówią mi, że gdy gram jego song - Głos mi drży i do oczu płyną łzy - Wojtek przez głośniki wypiek Cześka sławi - Jego pieśń ponad góry niosą mgły + Na zachodzie słońce jeszcze się toczy + I butelka nad ławą rzuca cień + Wojtek Bellon zagląda mi w oczy + W Bartnem pod bacówką gaśnie dzień + Mówią mi, że gdy gram jego song + Głos mi drży i do oczu płyną łzy + Wojtek przez głośniki wypiek Cześka sławi + Jego pieśń ponad góry niosą mgły - Utonęły w zieleni gór i puchu nieba - W morzu liści i w wełnianym swetrze z traw - Moja pamięć moje myśli niezbadane - Zaklęte w melodii ruskich chat - Gdzieś na krańcu świata gdzie nie widać piekieł - Tylko niebo na ikonach srebrem lśni - Święty spokój ofiaruje nam Mikołaj - Święty spokój w jego skośnych oczach tkwi + Utonęły w zieleni gór i puchu nieba + W morzu liści i w wełnianym swetrze z traw + Moja pamięć moje myśli niezbadane + Zaklęte w melodii ruskich chat + Gdzieś na krańcu świata gdzie nie widać piekieł + Tylko niebo na ikonach srebrem lśni + Święty spokój ofiaruje nam Mikołaj + Święty spokój w jego skośnych oczach tkwi - Dobry Pan mnie wiedzie wyboistą drogą - Dobry Pan życzenia moje zna - W górach myśli poszybują ku pradawnym bogom - A w kopułach cerkwi wieczność trwa - Na tej drodze różne słowa już padały - Słowa złe i dobre, miłość szła i śmierć - Tylko buki w górach niewzruszone stoją - Jakby chciały się do nieba wznieść + Dobry Pan mnie wiedzie wyboistą drogą + Dobry Pan życzenia moje zna + W górach myśli poszybują ku pradawnym bogom + A w kopułach cerkwi wieczność trwa + Na tej drodze różne słowa już padały + Słowa złe i dobre, miłość szła i śmierć + Tylko buki w górach niewzruszone stoją + Jakby chciały się do nieba wznieść - Nikt nie spieszy się, nie zżyma, nie złorzeczy - Życie musi mieć swój smak i stały takt - Wprawdzie życia tutaj nie da się zaprzeczyć - Każde słowo znaczy to, co znaczyć ma - Nie ma miejsca na spojrzenia ukradkowe - Tutaj ludziom musisz patrzeć prosto w twarz - Tutaj serce na wszystko masz gotowe - Tu na szczytach blisko nieba wiecznie trwasz + Nikt nie spieszy się, nie zżyma, nie złorzeczy + Życie musi mieć swój smak i stały takt + Wprawdzie życia tutaj nie da się zaprzeczyć + Każde słowo znaczy to, co znaczyć ma + Nie ma miejsca na spojrzenia ukradkowe + Tutaj ludziom musisz patrzeć prosto w twarz + Tutaj serce na wszystko masz gotowe + Tu na szczytach blisko nieba wiecznie trwasz diff --git a/songs/Basn.xml b/songs/Basn.xml index ab34d2e5..0837e078 100644 --- a/songs/Basn.xml +++ b/songs/Basn.xml @@ -16,17 +16,17 @@ W zaklętym sadzie barwny sen - W wieczornym tchnieniu szepty gwiazd + W wieczornym tchnieniu szepty gwiazd Zielony księżyc pośród drzew Niebieskie jabłka z kosza kradł. - Zaśnij, zaśnij, już ucichł miasta gwar - Zaśnij, zaśnij, w zegarze starym drzemie czas - Śnij o wiośnie, śnij o lesie, - W ptasim locie szukaj słów, - Śnij o morzu, o bezkresie, - Daj marzeniom mknąć bez tchu. + Zaśnij, zaśnij, już ucichł miasta gwar + Zaśnij, zaśnij, w zegarze starym drzemie czas + Śnij o wiośnie, śnij o lesie, + W ptasim locie szukaj słów, + Śnij o morzu, o bezkresie, + Daj marzeniom mknąć bez tchu. @@ -35,7 +35,7 @@ W zaklętym sadzie barwny sen - W szeptaniu gwiezdnym stara baśń + W szeptaniu gwiezdnym stara baśń Malutki rycerz odpiął miecz, Z ogromnym smokiem w kości gra. @@ -47,7 +47,7 @@ W zaklętym sadzie barwny sen - W bezmiarze liści wiatru szum + W bezmiarze liści wiatru szum W głębokim lesie szary wilk Małej dziewczynki strzeże snu. @@ -59,16 +59,16 @@ W zaklętym sadzie barwny sen - W obłoku mglistym skrzaci ci + W obłoku mglistym skrzaci ci W zamczysku mrocznym stary król Biednej sierotce nuci pieśń. - Śnij o wiośnie, śnij o lesie, - Niech się wije senna nić. - Śnij o morzu, o bezkresie - Niech marzeniom starczy sił... + Śnij o wiośnie, śnij o lesie, + Niech się wije senna nić. + Śnij o morzu, o bezkresie + Niech marzeniom starczy sił... W zaklętym sadzie... diff --git a/songs/Bawitko.xml b/songs/Bawitko.xml index 1e0af076..1d42bab2 100644 --- a/songs/Bawitko.xml +++ b/songs/Bawitko.xml @@ -9,19 +9,19 @@ - Wagą zabraną Temidzie - Bawimy się w sprawiedliwość - Na jednej szali zło kładziemy + Wagą zabraną Temidzie + Bawimy się w sprawiedliwość + Na jednej szali zło kładziemy - Na drugiej dobro i litość + Na drugiej dobro i litość - Wszyscy się cieszą z równowagi - Gardła zdzieramy w wiwatach - Wszyscy się cieszą z równowagi + Wszyscy się cieszą z równowagi + Gardła zdzieramy w wiwatach + Wszyscy się cieszą z równowagi - Wskazówkę puszczamy po latach + Wskazówkę puszczamy po latach @@ -37,34 +37,34 @@ - Księgami bawimy się w mądrość - Zabawa to dla upartych - Z ksiąg budujemy nauki i domy + Księgami bawimy się w mądrość + Zabawa to dla upartych + Z ksiąg budujemy nauki i domy - A przecież księgi to karty + A przecież księgi to karty - Raz huczą brawa, raz działa + Raz huczą brawa, raz działa Już się gubimy w erratach - Na ile to mądre na ile starczy + Na ile to mądre na ile starczy - Ktoś nas osądzi po latach + Ktoś nas osądzi po latach - Jest jeszcze jedna zabawa - Też popularna choć nienowa - Do niej potrzebne jest dwoje ludzi + Jest jeszcze jedna zabawa + Też popularna choć nienowa + Do niej potrzebne jest dwoje ludzi - I słowa, i słowa, i słowa + I słowa, i słowa, i słowa - Słowami bawimy się w miłość - owa składamy w kwiatach - Potem przyprószą je liście jesieni + Słowami bawimy się w miłość + owa składamy w kwiatach + Potem przyprószą je liście jesieni Odgrzebujemy po latach diff --git a/songs/Bellonika_z_miastem.xml b/songs/Bellonika_z_miastem.xml index 77478e68..06514199 100644 --- a/songs/Bellonika_z_miastem.xml +++ b/songs/Bellonika_z_miastem.xml @@ -9,34 +9,34 @@ - Która to znów piosenka + Która to znów piosenka Dla której Joanny - Za oknem pierwszy tramwaj - Oddzwonił nowy dzi - Która to noc bezsenna + Za oknem pierwszy tramwaj + Oddzwonił nowy dzi + Która to noc bezsenna Która kartka biała - Na wątłym płatku niesie - Jak ołów ciężką treść + Na wątłym płatku niesie + Jak ołów ciężką treść - Za oknem wielkiego miasta szum - I uciec by się chciało - W ramionach Twoich jak w górach - Bezpiecznie schronić się - Za oknem wielkiego miasta chłód - I tylko Twoje ciało - W półmroku obiecuje - Spokojny ciepły sen + Za oknem wielkiego miasta szum + I uciec by się chciało + W ramionach Twoich jak w górach + Bezpiecznie schronić się + Za oknem wielkiego miasta chłód + I tylko Twoje ciało + W półmroku obiecuje + Spokojny ciepły sen - Która to znowu wojna + Która to znowu wojna Za jaką znów sprawę - Co nic nam nie przyniesie - Prócz paru smutnych dat - Która to noc bezsenna + Co nic nam nie przyniesie + Prócz paru smutnych dat + Która to noc bezsenna Prześcieradło blade - Całując Twoje włosy - Powoli zmieniam świat + Całując Twoje włosy + Powoli zmieniam świat diff --git a/songs/Beskid.xml b/songs/Beskid.xml index c41cf44e..67aed635 100644 --- a/songs/Beskid.xml +++ b/songs/Beskid.xml @@ -5,33 +5,33 @@ A w Beskidzie rozzłocony buk A w Beskidzie rozzłocony buk - Będę chodził bukowiną z dłutem w ręku - By w dziewczęcych twarzach uśmiech rzeźbić - Niech nie płaczą j - Niech się cieszą po kapliczkach moich dróg. + Będę chodził bukowiną z dłutem w ręku + By w dziewczęcych twarzach uśmiech rzeźbić + Niech nie płaczą j + Niech się cieszą po kapliczkach moich dróg. - W Beskidzie malowany cerkiewny dach - W Beskidzie zapach miodu w bukowych pniach - Tutaj wracam gdy ruda jesień - Na przełęcze swój tobół niesie - Słucham bicia dzwonów w przedwieczorny czas + W Beskidzie malowany cerkiewny dach + W Beskidzie zapach miodu w bukowych pniach + Tutaj wracam gdy ruda jesień + Na przełęcze swój tobół niesie + Słucham bicia dzwonów w przedwieczorny czas - W Beskidzie malowany wiatrami dom - W Beskidzie tutaj słowa inaczej brzmią - Kiedy krzyczę w jesienną ciszę - Kiedy wiatrem szeleszczą liście - Kiedy wolność się tuli w ciepło moich rąk - Gdy jak źrebak się tuli do mych rąk. + W Beskidzie malowany wiatrami dom + W Beskidzie tutaj słowa inaczej brzmią + Kiedy krzyczę w jesienną ciszę + Kiedy wiatrem szeleszczą liście + Kiedy wolność się tuli w ciepło moich rąk + Gdy jak źrebak się tuli do mych rąk. A w Beskidzie zamyślony czas A w Beskidzie zamyślony czas - Będę chodził gór poddaszem - By zerwanych marzeń struny - Przewiązywać w niespokojne dłonie drzew - Niech mi grają na rozstajach moich dróg. + Będę chodził gór poddaszem + By zerwanych marzeń struny + Przewiązywać w niespokojne dłonie drzew + Niech mi grają na rozstajach moich dróg. diff --git a/songs/Beskid_jesienia.xml b/songs/Beskid_jesienia.xml index 54bbc582..49fd2b3c 100644 --- a/songs/Beskid_jesienia.xml +++ b/songs/Beskid_jesienia.xml @@ -9,27 +9,27 @@ - Już pustką świecą hale, samotny gnie się świerk, - Na granitowej skale, zmęczony rogacz legł. - Słoneczko ledwie wstaje a już się kładzie spać, - Już tylko wiatr po polanie zaczyna liście gnać. + Już pustką świecą hale, samotny gnie się świerk, + Na granitowej skale, zmęczony rogacz legł. + Słoneczko ledwie wstaje a już się kładzie spać, + Już tylko wiatr po polanie zaczyna liście gnać. - O, już się złoci hora, gromadki szuka ptak, - Już to jesienna pora i bliskiej zimy znak + O, już się złoci hora, gromadki szuka ptak, + Już to jesienna pora i bliskiej zimy znak - Buki jak ogień gorzą, modrzewiom żółknie włos, - Rano wschodzącą zorzę liliowy wita wrzos. - Szałasy smutne stoją, ogień nie trzaska w nich, - Pasterze już nie poją w źródłach owieczek swych. + Buki jak ogień gorzą, modrzewiom żółknie włos, + Rano wschodzącą zorzę liliowy wita wrzos. + Szałasy smutne stoją, ogień nie trzaska w nich, + Pasterze już nie poją w źródłach owieczek swych. - Ucichła już trąbita, juhasów zamilkł śpiew. - Tylko na skalnych szczytach wiatr śpiewa pośród drzew. - Z południa Tatry dumne patrzą na Beskid swój, - A chmurki jak rozumne zdobią go w złoty strój. + Ucichła już trąbita, juhasów zamilkł śpiew. + Tylko na skalnych szczytach wiatr śpiewa pośród drzew. + Z południa Tatry dumne patrzą na Beskid swój, + A chmurki jak rozumne zdobią go w złoty strój. diff --git a/songs/Bez_slow.xml b/songs/Bez_slow.xml index abf35153..ebb5da1c 100644 --- a/songs/Bez_slow.xml +++ b/songs/Bez_slow.xml @@ -26,7 +26,7 @@ Wbrew pozorom ostatni refren śpiewa się tylko do połowy!!! Tam powietrze ma inny smak. Porzuć kroków rytm na bruku, Spróbuj -- znajdziesz, jeśli szukać - Zechcesz -- nowy świat, własny świat. + Zechcesz -- nowy świat, własny świat. Płyną ludzie miastem szarzy, diff --git a/songs/Biala_basn.xml b/songs/Biala_basn.xml index 123e3e18..86743996 100644 --- a/songs/Biala_basn.xml +++ b/songs/Biala_basn.xml @@ -9,17 +9,17 @@ - W osypanych śnieżnym puchem - Koleinach leśnych dróg - Wznieca wiatr nagłym podmuchem - Burze lśniących bielą smug. + W osypanych śnieżnym puchem + Koleinach leśnych dróg + Wznieca wiatr nagłym podmuchem + Burze lśniących bielą smug. - Świt przejrzysty, wklęty w ciszę, - Zatopiony w śnieżną jaśń, - Blaskiem słońca w brzozach pisze + Świt przejrzysty, wklęty w ciszę, + Zatopiony w śnieżną jaśń, + Blaskiem słońca w brzozach pisze - Oszronioną, mroźną baśń. + Oszronioną, mroźną baśń. diff --git a/songs/Biala_lokomotywa.xml b/songs/Biala_lokomotywa.xml index 92ea80d9..fd6fabc7 100644 --- a/songs/Biala_lokomotywa.xml +++ b/songs/Biala_lokomotywa.xml @@ -9,41 +9,41 @@ - Sunęła poprzez czarne łąki - Sunęła przez spalony las - Mijała bram zwęglone szczątki - Płynęła przez wspomnienia miast - Biała lokomotywa - Skąd wzięła się w krainie śmierci - Ta żywa zjawa, istny cud - Tu pośród pustych marnych wierszy - Tu gdzie już tylko czarny kurz - Biała lokomotywa + Sunęła poprzez czarne łąki + Sunęła przez spalony las + Mijała bram zwęglone szczątki + Płynęła przez wspomnienia miast + Biała lokomotywa + Skąd wzięła się w krainie śmierci + Ta żywa zjawa, istny cud + Tu pośród pustych marnych wierszy + Tu gdzie już tylko czarny kurz + Biała lokomotywa - Ach czyj, ach czyj to jest - Tak piękny hojny gest - Kto mi tu przysłał ją + Ach czyj, ach czyj to jest + Tak piękny hojny gest + Kto mi tu przysłał ją Bym się wydostał stąd - Ach któż, no któż to może b - Beze mnie kto nie umie ż - I bym zmartwychstał błaga mnie + Ach któż, no któż to może b + Beze mnie kto nie umie ż + I bym zmartwychstał błaga mnie By mnie obudził jasny zew - Białej lokomotywy + Białej lokomotywy - Suniemy poprzez czarne łąki - Suniemy przez spalony las - Mijamy bram zwęglone szczątki - Płyniemy przez wspomnienia miast - Z białą lokomotywą - Gdzie brzęczą pszczoły, pluszcze rzeka - Gdzie słońca blask i cienie drzew - Do tej, co na mnie w życiu czeka - Do życia znowu nieś mnie ni - Biała lokomotywo + Suniemy poprzez czarne łąki + Suniemy przez spalony las + Mijamy bram zwęglone szczątki + Płyniemy przez wspomnienia miast + Z białą lokomotywą + Gdzie brzęczą pszczoły, pluszcze rzeka + Gdzie słońca blask i cienie drzew + Do tej, co na mnie w życiu czeka + Do życia znowu nieś mnie ni + Biała lokomotywo diff --git a/songs/Bialy_kaftanik.xml b/songs/Bialy_kaftanik.xml index efb3f4c1..6a39c4af 100644 --- a/songs/Bialy_kaftanik.xml +++ b/songs/Bialy_kaftanik.xml @@ -30,7 +30,7 @@ Ach...Tak chciałbym zw biały kaftanik mi - I leczyć się, leczyć się, leczyć się, na mózg + I leczyć się, leczyć się, leczyć się, na mózg @@ -61,7 +61,7 @@ Ty wciąż jesteś wariat lekarz się postarzał Nie rozumiesz tego bo ci myśleć strach - I pójdziesz przed siebie w asyście psychiatrów + I pójdziesz przed siebie w asyście psychiatrów Twą drogę wyznaczy korytarzy szlak @@ -72,7 +72,7 @@ - Ach... Jak dobrze zw biały kaftanik mi I leczyć się, leczyć się, leczyć się, na mózg + Ach... Jak dobrze zw biały kaftanik mi I leczyć się, leczyć się, leczyć się, na mózg diff --git a/songs/Bieszczadzki_rajd.xml b/songs/Bieszczadzki_rajd.xml index 4c314d48..fe98dc92 100644 --- a/songs/Bieszczadzki_rajd.xml +++ b/songs/Bieszczadzki_rajd.xml @@ -9,31 +9,31 @@ - Zebrało się nas tutaj wielu takich jak ty - Siadaj z nami przyjacielu a zaśpiewamy ci + Zebrało się nas tutaj wielu takich jak ty + Siadaj z nami przyjacielu a zaśpiewamy ci - Rajd rajd bieszczadzki rajd - Czy to w słońce czy to w deszcz + Rajd rajd bieszczadzki rajd + Czy to w słońce czy to w deszcz Idziesz z nami przyjacielu - Bo sam chcesz + Bo sam chcesz - Każdy harcerz przeżyć chce ten bieszczadzki rajd - Aby wzmocnićswoje siły jemy dużo pajd + Każdy harcerz przeżyć chce ten bieszczadzki rajd + Aby wzmocnićswoje siły jemy dużo pajd - Czasem chleba nam brakuje ale fajno jest - Ktoś nas wtedy poratuje to braterski gest + Czasem chleba nam brakuje ale fajno jest + Ktoś nas wtedy poratuje to braterski gest - Może kiedyś tu za rok wszysczy się spotkamy - Obsiądziemy ogień w koło i tak zaśpiewamy + Może kiedyś tu za rok wszysczy się spotkamy + Obsiądziemy ogień w koło i tak zaśpiewamy diff --git a/songs/Bieszczadzkie_anioly.xml b/songs/Bieszczadzkie_anioly.xml index e0d0b9e6..42d10de7 100644 --- a/songs/Bieszczadzkie_anioly.xml +++ b/songs/Bieszczadzkie_anioly.xml @@ -9,46 +9,46 @@ - Anioły są takie ciche, zwłaszcza te w Bieszczadach - Gdy spotkasz takiego w górach, wiele z nim nie pogadasz - Najwyżej na ucho ci powie, gdy będzie w dobrym humorze - Że skrzydła nosi w plecaku nawet przy dobrej pogodzie + Anioły są takie ciche, zwłaszcza te w Bieszczadach + Gdy spotkasz takiego w górach, wiele z nim nie pogadasz + Najwyżej na ucho ci powie, gdy będzie w dobrym humorze + Że skrzydła nosi w plecaku nawet przy dobrej pogodzie - Anioły są całe zielone, zwłaszcza te w Bieszczadach - W trawie łatwo się kryją i w opuszczonych sadach - W zielone grają ukradkiem, nawet karty mają zielone - Zielone mają pojęcie, a nawet zielony kielonek + Anioły są całe zielone, zwłaszcza te w Bieszczadach + W trawie łatwo się kryją i w opuszczonych sadach + W zielone grają ukradkiem, nawet karty mają zielone + Zielone mają pojęcie, a nawet zielony kielonek - Anioły bieszczadzkie, bieszczadzkie anioły - Dużo w was radości i dobrej pogody - Bieszczadzkie anioły, anioły bieszczadzkie - Gdy skrzydłem cię dotkną, już jesteś ich bratem + Anioły bieszczadzkie, bieszczadzkie anioły + Dużo w was radości i dobrej pogody + Bieszczadzkie anioły, anioły bieszczadzkie + Gdy skrzydłem cię dotkną, już jesteś ich bratem - Anioły są całkiem samotne, zwłaszcza te w Bieszczadach - W kapliczkach zimą drzemią, choć może im nie wypada - Czasem taki anioł samotny zapomni, dokąd ma lecieć - I wtedy całe Bieszczady mają szaloną uciechę + Anioły są całkiem samotne, zwłaszcza te w Bieszczadach + W kapliczkach zimą drzemią, choć może im nie wypada + Czasem taki anioł samotny zapomni, dokąd ma lecieć + I wtedy całe Bieszczady mają szaloną uciechę - Anioły, bieszczadzkie, bieszczadzkie anioły - Dużo w was radości i dobrej pogody - Bieszczadzkie anioły, anioły bieszczadzkie - Gdy skrzydłem cię trącą, już jesteś ich bratem + Anioły, bieszczadzkie, bieszczadzkie anioły + Dużo w was radości i dobrej pogody + Bieszczadzkie anioły, anioły bieszczadzkie + Gdy skrzydłem cię trącą, już jesteś ich bratem - Anioły są wiecznie ulotne, zwłaszcza te w Bieszczadach - Nas też czasami nosi po ich anielskich śladach - One nam przyzwalają i skrzydłem wskazują drogę - I wtedy w nas się zapala wieczny bieszczadzki ogień + Anioły są wiecznie ulotne, zwłaszcza te w Bieszczadach + Nas też czasami nosi po ich anielskich śladach + One nam przyzwalają i skrzydłem wskazują drogę + I wtedy w nas się zapala wieczny bieszczadzki ogień - Anioły, bieszczadzkie, bieszczadzkie anioły - Dużo w was radości i dobrej pogody - Bieszczadzkie anioły, anioły bieszczadzkie - Gdy skrzydłem cię musną, już jesteś ich bratem + Anioły, bieszczadzkie, bieszczadzkie anioły + Dużo w was radości i dobrej pogody + Bieszczadzkie anioły, anioły bieszczadzkie + Gdy skrzydłem cię musną, już jesteś ich bratem diff --git a/songs/Blues_dla_malej.xml b/songs/Blues_dla_malej.xml index f2200e8b..4688303f 100644 --- a/songs/Blues_dla_malej.xml +++ b/songs/Blues_dla_malej.xml @@ -6,34 +6,34 @@ Stare Dobre Małżeństwo - Wystukaj po torach do mnie list - Wtedy naprawdę nie wyjedziesz cała - Niech będzie w nim lokomotywy gwizd - Tylko to zrób jeszcze dla mnie Mała - Wystukaj po torach do mnie list - Choćby w alfabecie Morse'a - Moja ulica jeszcze twardo śpi - Jeśli tak chcesz w liście zostań + Wystukaj po torach do mnie list + Wtedy naprawdę nie wyjedziesz cała + Niech będzie w nim lokomotywy gwizd + Tylko to zrób jeszcze dla mnie Mała + Wystukaj po torach do mnie list + Choćby w alfabecie Morse'a + Moja ulica jeszcze twardo śpi + Jeśli tak chcesz w liście zostań - A mogliśmy Mała razem łąką iść - Świt witać po kolana w rosie - A mogliśmy Mała razem piwo pić - Dom nasz zamienić na sto pociech - A mogliśmy Mała konie kraść - Z niebieskiego boskiego pastwiska - A mogliśmy Mała w środku lata - Zbudować słoneczną przystań + A mogliśmy Mała razem łąką iść + Świt witać po kolana w rosie + A mogliśmy Mała razem piwo pić + Dom nasz zamienić na sto pociech + A mogliśmy Mała konie kraść + Z niebieskiego boskiego pastwiska + A mogliśmy Mała w środku lata + Zbudować słoneczną przystań - Napisz od serca do mnie list - I zamieszkaj w tym liście cała - Niech śmiechu dużo będzie w nim - Obiecaj mi to dzisiaj Mała - Napisz od serca do mnie list - Lecz proszę nie wysyłaj go nigdy - W szufladzie zamknij go na klucz - Niech czeka wciąż lepszych dni + Napisz od serca do mnie list + I zamieszkaj w tym liście cała + Niech śmiechu dużo będzie w nim + Obiecaj mi to dzisiaj Mała + Napisz od serca do mnie list + Lecz proszę nie wysyłaj go nigdy + W szufladzie zamknij go na klucz + Niech czeka wciąż lepszych dni diff --git a/songs/Blues_niepotrzebnych_powrotow.xml b/songs/Blues_niepotrzebnych_powrotow.xml index 361deec9..dbfba72c 100644 --- a/songs/Blues_niepotrzebnych_powrotow.xml +++ b/songs/Blues_niepotrzebnych_powrotow.xml @@ -3,31 +3,31 @@ Elżbieta Adamiak - Dopala się świeca, maleńki płomień drży - Powoli zza pieca wychodzą szare sny - Zacięła się płyta, adapter się biedzi - Stukają w podłogę zmęczeni sąsiedzi - Więc idź już, nie wracaj, nie przeszkadzaj mi + Dopala się świeca, maleńki płomień drży + Powoli zza pieca wychodzą szare sny + Zacięła się płyta, adapter się biedzi + Stukają w podłogę zmęczeni sąsiedzi + Więc idź już, nie wracaj, nie przeszkadzaj mi - Nie było cię długo, przestałam liczyć dni - Wolałeś tę drugą, kwiaciarkę z vis a vis - Zapomniał korytarz, jak brzmią twoje kroki - Nie poznał cię nawet twój fotel głęboki - Więc po co tu siedzisz, dziwisz nocne ćmy + Nie było cię długo, przestałam liczyć dni + Wolałeś tę drugą, kwiaciarkę z vis a vis + Zapomniał korytarz, jak brzmią twoje kroki + Nie poznał cię nawet twój fotel głęboki + Więc po co tu siedzisz, dziwisz nocne ćmy - Posłuchaj, latarnie wołają cię zza mgły - Nie patrz tak na mnie, wiesz przecież, gdzie są drzwi - Potrafię bez ciebie oddychać i śpiewać - Choć coraz bezbarwniej jest ptakom na drzewach - A tamte dwie krople, to wcale nie są łzy + Posłuchaj, latarnie wołają cię zza mgły + Nie patrz tak na mnie, wiesz przecież, gdzie są drzwi + Potrafię bez ciebie oddychać i śpiewać + Choć coraz bezbarwniej jest ptakom na drzewach + A tamte dwie krople, to wcale nie są łzy diff --git a/songs/Bombonierka.xml b/songs/Bombonierka.xml index 10ff1532..86fccca7 100644 --- a/songs/Bombonierka.xml +++ b/songs/Bombonierka.xml @@ -9,46 +9,46 @@ - A gdy patrzę tak - Śmiejesz się - Śmiejesz się + A gdy patrzę tak + Śmiejesz się + Śmiejesz się - Dzień pogania noc świtem purpurowym - Ty jak czarny kot kończysz łowy - Nic mi do twych zdrad, chociaż dziwi, że + Dzień pogania noc świtem purpurowym + Ty jak czarny kot kończysz łowy + Nic mi do twych zdrad, chociaż dziwi, że Ich gorzkawy smak ciągle kusi cię - A gdy patrzę tak, śmiejesz się: - Nic mi do twych zdrad - Ale wiem + A gdy patrzę tak, śmiejesz się: + Nic mi do twych zdrad + Ale wiem - Choć papierków po cukierkach - Tu i ówdzie ślad - Marzy ci się bombonierka - Taka jak ja - Niby nic, a jednak zerkasz - Jak się dostać do pudełka + Choć papierków po cukierkach + Tu i ówdzie ślad + Marzy ci się bombonierka + Taka jak ja + Niby nic, a jednak zerkasz + Jak się dostać do pudełka Odkryć tajemnicę słodką - Delikatnie zdjąć złotko + Delikatnie zdjąć złotko - Choć papierków po cukierkach - Ślad i tam i tu - Marzy ci się bombonierka + Choć papierków po cukierkach + Ślad i tam i tu + Marzy ci się bombonierka Istny cud - Żeby tak nasycić się + Żeby tak nasycić się Ale wciąż w zapasie mieć I rozgryzać tę zagadkę Tę zagadkę - Po ostatnią czekoladkę + Po ostatnią czekoladkę - Noc pogania dzień szafirowym zmierzchem - Tobie kocich gier nie dość jeszcze - Nic mi do twych zdrad, chociaż dziwi, że + Noc pogania dzień szafirowym zmierzchem + Tobie kocich gier nie dość jeszcze + Nic mi do twych zdrad, chociaż dziwi, że Ostry kolor kłamstw nie razi cię diff --git a/songs/Bosman.xml b/songs/Bosman.xml index 55b2bf3f..55004df5 100644 --- a/songs/Bosman.xml +++ b/songs/Bosman.xml @@ -3,52 +3,52 @@ - Na pokładzie od rana - Ciągle słychać bosmana, - Bez potrzeby cholernie się drze. - Choćbyś ręce poranił, - Bosman zawsze cię zgani - I powiada: ,,Zrobione jest źle!'' + Na pokładzie od rana + Ciągle słychać bosmana, + Bez potrzeby cholernie się drze. + Choćbyś ręce poranił, + Bosman zawsze cię zgani + I powiada: ,,Zrobione jest źle!'' - ,,Jeszcze raz czyścić działo, - Cóż wam chłopcy się stało? - Jak do żarcia, to każdy się rwie. - To nie balia niemiecka, - Trzeba wiedzieć od dziecka, - Że to okręt wojenny RP.'' + ,,Jeszcze raz czyścić działo, + Cóż wam chłopcy się stało? + Jak do żarcia, to każdy się rwie. + To nie balia niemiecka, + Trzeba wiedzieć od dziecka, + Że to okręt wojenny RP.'' - Ale czasem się zdarzy, - Że się bosman rozmarzy - Każdy bosman uczucie to zna. - Gdy go wtedy poprosisz, - Swą harmonię przynosi, - Siada w kącie na rufie i gra. + Ale czasem się zdarzy, + Że się bosman rozmarzy + Każdy bosman uczucie to zna. + Gdy go wtedy poprosisz, + Swą harmonię przynosi, + Siada w kącie na rufie i gra. - Opowiada o morzach, - O bezkresnych przestworzach - I o walkach, co przeżył on sam. - O dziewczętach z Bombaju, - Co namiętnie kochają - I całują tak mocno do krwi. + Opowiada o morzach, + O bezkresnych przestworzach + I o walkach, co przeżył on sam. + O dziewczętach z Bombaju, + Co namiętnie kochają + I całują tak mocno do krwi. - A gdy spytasz go tylko, - O czym marzył przed chwilką, - Czemu nagle pojaśniał mu wzrok? - Mówi: ,,W Gdyni, w Orłowie, - Będę chodził na głowie, - Tak mi przypadł do serca ten port.'' + A gdy spytasz go tylko, + O czym marzył przed chwilką, + Czemu nagle pojaśniał mu wzrok? + Mówi: ,,W Gdyni, w Orłowie, + Będę chodził na głowie, + Tak mi przypadł do serca ten port.'' - Bosman skończył, wiatr ścicha, - Aż tu nagle, u licha! - Pojaśniało coś nagle we mgle - Poznał bosman, jak cała - Polska w blaskach wstawała, - Na pokładzie okrętu RP. + Bosman skończył, wiatr ścicha, + Aż tu nagle, u licha! + Pojaśniało coś nagle we mgle + Poznał bosman, jak cała + Polska w blaskach wstawała, + Na pokładzie okrętu RP. diff --git a/songs/Broadway.xml b/songs/Broadway.xml index dc1a99b4..516b9815 100644 --- a/songs/Broadway.xml +++ b/songs/Broadway.xml @@ -10,47 +10,47 @@ Ponoć refreny są różne, np. zaczynają się od słów ,,Cały Broadway'', ,, - Po ulicy przetaczał się bajecznie barwny tłum - Migotała reklama jakiejś wody ,,Silver moon'' - I drapacze drapały wierzchołkami brzuchy chmur - Kiedy dołem przejeżdżał gigantyczny wozów sznur + Po ulicy przetaczał się bajecznie barwny tłum + Migotała reklama jakiejś wody ,,Silver moon'' + I drapacze drapały wierzchołkami brzuchy chmur + Kiedy dołem przejeżdżał gigantyczny wozów sznur - Taki Broadway to Broadway z kolorowych pięknych kart - Taki Broadway to Broadway którym się zachwyca świat + Taki Broadway to Broadway z kolorowych pięknych kart + Taki Broadway to Broadway którym się zachwyca świat - A na rogu ulicy może być czterdzieści dwa - Stary murzyn wirtuoz na gitarze bluesa grał - Tak namiętnie jak tylko czarny umie bluesa grać - Całe serce w to włożył żeby innym ludziom dać + A na rogu ulicy może być czterdzieści dwa + Stary murzyn wirtuoz na gitarze bluesa grał + Tak namiętnie jak tylko czarny umie bluesa grać + Całe serce w to włożył żeby innym ludziom dać - Taki Broadway ten Broadway z kolorowych pięknych kart - Taki Broadway ten Broadway którym się zachwyca świat + Taki Broadway ten Broadway z kolorowych pięknych kart + Taki Broadway ten Broadway którym się zachwyca świat - Czasem ktoś się zatrzymał i na życie quartra dał - Czasem słyszał jak mówią, że ten czarny dobrze gra - Wtedy ruszał do baru bo już nie mógł tego znieść - Że nie czują przechodnie jaka w bluesach drzemie treść + Czasem ktoś się zatrzymał i na życie quartra dał + Czasem słyszał jak mówią, że ten czarny dobrze gra + Wtedy ruszał do baru bo już nie mógł tego znieść + Że nie czują przechodnie jaka w bluesach drzemie treść - Aż któregoś popołudnia kiedy grał za marny grosz - Stanął przy nim z gitarą niepozorny biały gość - I choć na tej gitarze prawie jak amator grał - To wyśpiewał genialnie to co czarny w sercu miał + Aż któregoś popołudnia kiedy grał za marny grosz + Stanął przy nim z gitarą niepozorny biały gość + I choć na tej gitarze prawie jak amator grał + To wyśpiewał genialnie to co czarny w sercu miał - A gdy skończył się koncert stary Murzyn go zaprosił - Na kolejne popołudnie i te bluesy na dwa głosy - Potem spytał go jeszcze skąd znasz me niedole - I usłyszał odpowiedź ,,bracie I'm from Poland'' + A gdy skończył się koncert stary Murzyn go zaprosił + Na kolejne popołudnie i te bluesy na dwa głosy + Potem spytał go jeszcze skąd znasz me niedole + I usłyszał odpowiedź ,,bracie I'm from Poland'' diff --git a/songs/Bukowina_I.xml b/songs/Bukowina_I.xml index 67cc8798..35eadc32 100644 --- a/songs/Bukowina_I.xml +++ b/songs/Bukowina_I.xml @@ -11,26 +11,26 @@ W Bukowinie góry w niebie postrzępionym W Bukowinie rosną skrzydła świętym bukom - Minął dzień wiatrem z hal rozdzwoniony - I nie mogę znaleźć Bukowiny + Minął dzień wiatrem z hal rozdzwoniony + I nie mogę znaleźć Bukowiny I nie mogę znaleźć - Chociaż gwiazdy mnie prowadzą ciągle szukam + Chociaż gwiazdy mnie prowadzą ciągle szukam W Bukowinie zarośnięte echem lasy W Bukowinie liść zieleni się i złoci - Śpiewa czasem banior ciemnym basem - I nie mogę znaleźć Bukowiny + Śpiewa czasem banior ciemnym basem + I nie mogę znaleźć Bukowiny I nie mogę znaleźć - Choć już szukam godzin krocie i dni krocie + Choć już szukam godzin krocie i dni krocie W Bukowinie deszczem z chmur opada Okrzyk ptasi zawieszony w niebie - Nocka gwiezdną gadkę górom gada - I nie mogę znaleźć Bukowiny + Nocka gwiezdną gadkę górom gada + I nie mogę znaleźć Bukowiny I nie mogę znaleźć - Choć mnie woła Bukowina wciąż do siebie + Choć mnie woła Bukowina wciąż do siebie diff --git a/songs/Bukowina_II.xml b/songs/Bukowina_II.xml index a9498e7b..a2a1f138 100644 --- a/songs/Bukowina_II.xml +++ b/songs/Bukowina_II.xml @@ -9,37 +9,37 @@ - Dość wytoczyli bań próżnych przed domy kalecy - Żyją jak żyli, bezwolni, głusi i ślepi + Dość wytoczyli bań próżnych przed domy kalecy + Żyją jak żyli, bezwolni, głusi i ślepi Nie współczuj, szkoda łez i żalu Bezbarwni są, bo chcą być szarzy - Ty wyżej, wej bądź i dalej - Niż ci, co się wyzbyli marzeń. + Ty wyżej, wej bądź i dalej + Niż ci, co się wyzbyli marzeń. - Niechaj zalśni Bukowina w barwie malin - Niechaj zabrzmi Bukowina w wiatru szumie - Dzień minął, dzień minął, nadszedł wieczór + Niechaj zalśni Bukowina w barwie malin + Niechaj zabrzmi Bukowina w wiatru szumie + Dzień minął, dzień minął, nadszedł wieczór Świece gwiazd zapalił - Siadł przy ogniu, pieśń posłyszał i umilkł. + Siadł przy ogniu, pieśń posłyszał i umilkł. - Po dniach zgiełkliwych, po nocach wyłożonych brukiem - W zastygłym szkliwie gwiazd neonowych próżno szukać + Po dniach zgiełkliwych, po nocach wyłożonych brukiem + W zastygłym szkliwie gwiazd neonowych próżno szukać Tego, co tylko zielonością Na palcach zaplecionych drzemie - Rozewrzyj dłonie mocniej, mocniej - Za kark chwyć słońce, sięgnij w niebo. + Rozewrzyj dłonie mocniej, mocniej + Za kark chwyć słońce, sięgnij w niebo. Odnaleźć musisz, gdzie góry chmurom dłoń podają - Gdzie deszcz i susza, gdzie lipce, październiki, maje + Gdzie deszcz i susza, gdzie lipce, październiki, maje Stają się rokiem, węzłem życia. Twój dom bukowy zawieszony - U nieba pnia kroplą żywicy - Błękitny, złoty i zielony. + U nieba pnia kroplą żywicy + Błękitny, złoty i zielony. diff --git a/songs/Burza.xml b/songs/Burza.xml index a7cc4533..3e542854 100644 --- a/songs/Burza.xml +++ b/songs/Burza.xml @@ -9,39 +9,39 @@ - Znów chmury zmęczone przysiadły na grani - Ciężkimi brzuchami pieszczą górskie grzbiety - Już drzewa jęknęły smagnięte wichrami - I trawy przerażone knują głośne szepty + Znów chmury zmęczone przysiadły na grani + Ciężkimi brzuchami pieszczą górskie grzbiety + Już drzewa jęknęły smagnięte wichrami + I trawy przerażone knują głośne szepty - Umilkły już ptaki w gniazdach cicho siedzą - Świat czeka w napięciu z licem pociemniałym - Zbudziły się biesy, z driadami tańczą - Już błysk srebrnej nici zalśnił oniemiały + Umilkły już ptaki w gniazdach cicho siedzą + Świat czeka w napięciu z licem pociemniałym + Zbudziły się biesy, z driadami tańczą + Już błysk srebrnej nici zalśnił oniemiały - Pierwsze ciężkie krople dopadły już ziemi - Jak ślepi mocarze chcą powalić wszystko - Już strumienie wody leją się za nimi, - Szumiąc potokami spływają z gór szybko + Pierwsze ciężkie krople dopadły już ziemi + Jak ślepi mocarze chcą powalić wszystko + Już strumienie wody leją się za nimi, + Szumiąc potokami spływają z gór szybko - Nowa srebrna nić przecięła czerń nieba + Nowa srebrna nić przecięła czerń nieba Echo przerażone ryczy dzikim grzmotem - Drzewa w wiatru graniu szamoczą się z deszczem - Jak rycerze antyczni zmagając się z sobą + Drzewa w wiatru graniu szamoczą się z deszczem + Jak rycerze antyczni zmagając się z sobą - Jak turkot karety znów grzmot się przewalił - I znów atakują kropli ciężkich fale - A te, co dopadły straciwszy swą siłę - Strumieniem wezbranym z góry odpływają + Jak turkot karety znów grzmot się przewalił + I znów atakują kropli ciężkich fale + A te, co dopadły straciwszy swą siłę + Strumieniem wezbranym z góry odpływają - I fala za falą i w dół jak lawina, - Lecz sił już nie starcza ni kroplom ni wiatrom + I fala za falą i w dół jak lawina, + Lecz sił już nie starcza ni kroplom ni wiatrom I nagle blask słońca przez chmury przenika @@ -49,12 +49,12 @@ - I cisza i spokój i znów świergot ptaka - I słońce szaleje wśród zroszonej trawy - I drzewa co z włosów wytrzepują krople - I wszystko się cieszy po deszczowej kurzawie + I cisza i spokój i znów świergot ptaka + I słońce szaleje wśród zroszonej trawy + I drzewa co z włosów wytrzepują krople + I wszystko się cieszy po deszczowej kurzawie - I cisza + I cisza diff --git a/songs/Chlopaki_nie_placza.xml b/songs/Chlopaki_nie_placza.xml index bf999da9..a11cffaf 100644 --- a/songs/Chlopaki_nie_placza.xml +++ b/songs/Chlopaki_nie_placza.xml @@ -3,34 +3,34 @@ T.Love - Mówisz, życie jak cukierek - Gorzkie jest czasami - Mówisz panna zostawiła - Kumple dawno cię olali - Ale nie bój nic - minie jakiś czas - Poczuj chłodny świt, wszystko przejdzie ci + Mówisz, życie jak cukierek + Gorzkie jest czasami + Mówisz panna zostawiła + Kumple dawno cię olali + Ale nie bój nic - minie jakiś czas + Poczuj chłodny świt, wszystko przejdzie ci - U-u-u chłopaki - U-u-u nie płaczą - U-u-u chłopaki - U-u-u nie płaczą - Nie nie nie nie nie nie + U-u-u chłopaki + U-u-u nie płaczą + U-u-u chłopaki + U-u-u nie płaczą + Nie nie nie nie nie nie - Nie masz kaski - odpuść sobie - Jutro przecież też jest dzień - Może kiedyś ci pomogę - Może ty nie wystawisz mnie - Ale nie bój nic - minie jakiś czas - Poczuj chłodny świt, wszystko przejdzie ci + Nie masz kaski - odpuść sobie + Jutro przecież też jest dzień + Może kiedyś ci pomogę + Może ty nie wystawisz mnie + Ale nie bój nic - minie jakiś czas + Poczuj chłodny świt, wszystko przejdzie ci - U-u-u chłopaki - U-u-u nie płaczą - U-u-u chłopaki - U-u-u nie płaczą - Nie nie nie nie nie nie + U-u-u chłopaki + U-u-u nie płaczą + U-u-u chłopaki + U-u-u nie płaczą + Nie nie nie nie nie nie diff --git a/songs/Chodz_pomaluj_moj_swiat.xml b/songs/Chodz_pomaluj_moj_swiat.xml index a3fa501e..2ecfb750 100644 --- a/songs/Chodz_pomaluj_moj_swiat.xml +++ b/songs/Chodz_pomaluj_moj_swiat.xml @@ -3,32 +3,32 @@ Dwa Plus Jeden - Piszesz mi w liście, że kiedy pada - Kiedy nasturcje na deszczu mokną - Siadasz przy stole, wyjmujesz farby - I kolorowe otwierasz okno + Piszesz mi w liście, że kiedy pada + Kiedy nasturcje na deszczu mokną + Siadasz przy stole, wyjmujesz farby + I kolorowe otwierasz okno - Trawa i drzewa są takie szare - Barwę popiołu przybrało niebo - W ciszy tak smutno szepce zegarek - O czasie co mi go wcale nie trzeba + Trawa i drzewa są takie szare + Barwę popiołu przybrało niebo + W ciszy tak smutno szepce zegarek + O czasie co mi go wcale nie trzeba - Więc chodź pomaluj mi świat - Na żółto i na niebiesko - Niech na niebie stanie tęcza malowana twoja kredką + Więc chodź pomaluj mi świat + Na żółto i na niebiesko + Niech na niebie stanie tęcza malowana twoja kredką - Więc chodź pomaluj mi życie - Niech świat mój się zarumieni - Niech na niebie zalśni tęcza kolorami całej ziemi + Więc chodź pomaluj mi życie + Niech świat mój się zarumieni + Niech na niebie zalśni tęcza kolorami całej ziemi - Za siódmą górą i siódmą rzeka - Swoje sny zamieniasz na pejzaże - Niebem się wlecze wyblakłe słońce - Oświetla ludzkie wyblakle twarze + Za siódmą górą i siódmą rzeka + Swoje sny zamieniasz na pejzaże + Niebem się wlecze wyblakłe słońce + Oświetla ludzkie wyblakle twarze diff --git a/songs/Chory_na_wyobraznie.xml b/songs/Chory_na_wyobraznie.xml index cbb2e05d..a77328ff 100644 --- a/songs/Chory_na_wyobraznie.xml +++ b/songs/Chory_na_wyobraznie.xml @@ -25,17 +25,17 @@ Dawno już w mieście drwił z niego każdy Pośmiewiskiem był ludziom na co dzień Ot wariat chory na wyobraźnię - Wiecznie w drodze spóźniony przechodzień + Wiecznie w drodze spóźniony przechodzień Dokąd idziesz pytali go bliscy Z tego bracie to trzeba się leczyć A on brał tekturową walizkę - I wychodził swym obrazom naprzeciw mówiąc + I wychodził swym obrazom naprzeciw mówiąc Idę tam gdzie bezmiar błękitu Światłocienie cyprysów przy drodze - Feerią barw każdy ranek rozkwita + Feerią barw każdy ranek rozkwita Chociaż wiem że do celu nie dojdę @@ -56,11 +56,11 @@ Gdy malował świat milkł jak zaklęty Kurczył się w skrawek płótna na ramach A on pieścił je jak pierś kobiety - W siedmiobarwnych tęcz kreskach i plamach + W siedmiobarwnych tęcz kreskach i plamach Kiedy skończył wpatrywał się w ciszę By natchnieniem nasycić znów duszę A gdy już dał się marszandom wykpić - Pił noc całą by z brzaskiem wyruszyć mówiąc + Pił noc całą by z brzaskiem wyruszyć mówiąc diff --git a/songs/Chyba_juz_czas_wracac_do_domu.xml b/songs/Chyba_juz_czas_wracac_do_domu.xml index b72d22f0..1bd04a41 100644 --- a/songs/Chyba_juz_czas_wracac_do_domu.xml +++ b/songs/Chyba_juz_czas_wracac_do_domu.xml @@ -11,28 +11,28 @@ Zawinięte w kłębek drogi - Liczą na twój czas + Liczą na twój czas Zamieniony w wielkie słońce - Dzień powoli gasł + Dzień powoli gasł - Chyba już czas wracać do domu + Chyba już czas wracać do domu W słońcu się chyli wierzbiny liść - Chyba już czas wracać do domu + Chyba już czas wracać do domu W ciszy powrotu tak iść i iść O zielonej mokrej ziemi - ośniej śpiewa wiatr + ośniej śpiewa wiatr By najkrótszą drogę wybrać - Wróży z liści kart + Wróży z liści kart Światło dnia już pobłądziło - W drzewach i na ścieżce + W drzewach i na ścieżce Nie okryty mrokiem został - Tylko wyraz ,,jeszcze'' + Tylko wyraz ,,jeszcze'' diff --git a/songs/Cichutko.xml b/songs/Cichutko.xml index 8354c4f3..ed6dfb37 100644 --- a/songs/Cichutko.xml +++ b/songs/Cichutko.xml @@ -9,19 +9,19 @@ - Cichutko, pomaleńku - Gdzie wiatr w gałęziach drzew - Dogania ciszę ptasich gniazd + Cichutko, pomaleńku + Gdzie wiatr w gałęziach drzew + Dogania ciszę ptasich gniazd - Gdzie gwiazd milczących dal - Odległa, niewiadoma - Ukryta w bezmiar swej piękności + Gdzie gwiazd milczących dal + Odległa, niewiadoma + Ukryta w bezmiar swej piękności - Cichutko, pomaleńku - Przez świata dziwny świat - Nie zważaj na okrutne oczy dnia + Cichutko, pomaleńku + Przez świata dziwny świat + Nie zważaj na okrutne oczy dnia diff --git a/songs/Czarny_blues_o_czwartej_nad_ranem.xml b/songs/Czarny_blues_o_czwartej_nad_ranem.xml index c1bf17a1..530525e2 100644 --- a/songs/Czarny_blues_o_czwartej_nad_ranem.xml +++ b/songs/Czarny_blues_o_czwartej_nad_ranem.xml @@ -9,50 +9,50 @@ - Czwarta nad ranem, może sen przyjdzie + Czwarta nad ranem, może sen przyjdzie Może mnie odwiedzisz - Czwarta nad ranem może sen przyjdzie + Czwarta nad ranem może sen przyjdzie Może mnie odwiedzisz - Czemu Cię nie ma na odległość ręki - Czemu mówimy do siebie listami - Gdy Ci to śpiewam u mnie pełnia lata - Gdy to usłyszysz będzie środek zimy + Czemu Cię nie ma na odległość ręki + Czemu mówimy do siebie listami + Gdy Ci to śpiewam u mnie pełnia lata + Gdy to usłyszysz będzie środek zimy - Czemu się budzę o czwartej nad ranem - I włosy twoje próbuję ugłaskać - Lecz nigdzie nie ma twoich włosów - Jest tylko blada nocna lampka - Łysa śpiewaczka + Czemu się budzę o czwartej nad ranem + I włosy twoje próbuję ugłaskać + Lecz nigdzie nie ma twoich włosów + Jest tylko blada nocna lampka + Łysa śpiewaczka - Śpiewamy bluesa bo czwarta nad ranem - Tak cicho żeby nie zbudzić sąsiadów - Czajnik z gwizdkiem świruje na gazie - Myślałby kto że rodem z Manhattanu + Śpiewamy bluesa bo czwarta nad ranem + Tak cicho żeby nie zbudzić sąsiadów + Czajnik z gwizdkiem świruje na gazie + Myślałby kto że rodem z Manhattanu - Herbata czarna myśli rozjaśnia - A list twój sam się czyta - Że można go śpiewać, za oknem mruczą bluesa + Herbata czarna myśli rozjaśnia + A list twój sam się czyta + Że można go śpiewać, za oknem mruczą bluesa Topole z Krupniczej - I jeszcze strażak wszedł na solo - Ten z Mariackiej wieży - Jego trąbka jak księżyc biegnie nad topolą + I jeszcze strażak wszedł na solo + Ten z Mariackiej wieży + Jego trąbka jak księżyc biegnie nad topolą Nigdzie się jej nie spieszy - Już piąta, może sen przyjdzie + Już piąta, może sen przyjdzie Może mnie odwiedzisz - Już piąta, może sen przyjdzie + Już piąta, może sen przyjdzie Może mnie odwiedzisz diff --git a/songs/Czasem_nagle_smutniejesz.xml b/songs/Czasem_nagle_smutniejesz.xml index dfdb804a..838f16fa 100644 --- a/songs/Czasem_nagle_smutniejesz.xml +++ b/songs/Czasem_nagle_smutniejesz.xml @@ -9,16 +9,16 @@ - Czasem nagle smutniejesz - To jakby dnia ubywa - I nie wiem jak ci pomóc - Więc tylko proszę wybacz + Czasem nagle smutniejesz + To jakby dnia ubywa + I nie wiem jak ci pomóc + Więc tylko proszę wybacz - Czasem łzy w twoich oczach - Na krótką chwilę goszczą - I nie wiem czy coś mówić - I nawet nie wiem po co + Czasem łzy w twoich oczach + Na krótką chwilę goszczą + I nie wiem czy coś mówić + I nawet nie wiem po co @@ -27,13 +27,13 @@ Ze śmiechu mego śmieszne I znowu dnia przybywa - Powietrze staje się lżejsze + Powietrze staje się lżejsze - I lżejsza staje się wędrówka - Z plecakiem wciąż coraz cięższym - Nad domem przysiadła tęcza - Na nieba niebieskiej gałęzi + I lżejsza staje się wędrówka + Z plecakiem wciąż coraz cięższym + Nad domem przysiadła tęcza + Na nieba niebieskiej gałęzi diff --git a/songs/Dobosz.xml b/songs/Dobosz.xml index a2f81b67..7487eb63 100644 --- a/songs/Dobosz.xml +++ b/songs/Dobosz.xml @@ -9,53 +9,53 @@ - Przez czarne miasta białe wsie - Po zaśnieżonych drogach - Przeciwko sobie armie dwie - Uparcie szły na wroga - I siały armie śmierć ze sobą - Po miastach i po wioskach - A w każdej armii kroczył dobosz - Co werbel miał i rozkaz + Przez czarne miasta białe wsie + Po zaśnieżonych drogach + Przeciwko sobie armie dwie + Uparcie szły na wroga + I siały armie śmierć ze sobą + Po miastach i po wioskach + A w każdej armii kroczył dobosz + Co werbel miał i rozkaz - Doboszu graj doboszu idź - Choćby się świat zawalił - Trzeba nam iść i w werbel b - Przed siebie dalej i dalej - Poprzez bitewny zgiełk i kurz - Do broni krzycz do broni - Bo tamten dobosz to twój wróg - I śmierć mu werbel dzwoni + Doboszu graj doboszu idź + Choćby się świat zawalił + Trzeba nam iść i w werbel b + Przed siebie dalej i dalej + Poprzez bitewny zgiełk i kurz + Do broni krzycz do broni + Bo tamten dobosz to twój wróg + I śmierć mu werbel dzwoni - Aż wreszcie na rozstajach dróg - Armia się z armią zwarła - I przyczajona w bębnach śmierć - Skoczyła im do gardła - I krew na śniegu zbiegła strugą - I zamilkły armie obie - Tylko dwa bębny długo długo - Warczały przeciw sobie + Aż wreszcie na rozstajach dróg + Armia się z armią zwarła + I przyczajona w bębnach śmierć + Skoczyła im do gardła + I krew na śniegu zbiegła strugą + I zamilkły armie obie + Tylko dwa bębny długo długo + Warczały przeciw sobie - Koło dobosza dobosz legł - Na skraju wsi pod dębem - I z drzewa się posypał śnieg - I werblem zbudził bęben - I zagrał bęben naprzód naprzód - I toczy się po drogach - A drugi mu wtóruje w marszu - A drugi zagrał odzew + Koło dobosza dobosz legł + Na skraju wsi pod dębem + I z drzewa się posypał śnieg + I werblem zbudził bęben + I zagrał bęben naprzód naprzód + I toczy się po drogach + A drugi mu wtóruje w marszu + A drugi zagrał odzew - Spokojnie leżą armie dwie - Pod krzyżem na rozstajach - I tylko nocą poprzez śnieg - Dwa bębny werblem grają - Jednaki odzew grają... + Spokojnie leżą armie dwie + Pod krzyżem na rozstajach + I tylko nocą poprzez śnieg + Dwa bębny werblem grają + Jednaki odzew grają... diff --git a/songs/Dym_z_jalowca.xml b/songs/Dym_z_jalowca.xml index 8ddbf293..da317fbe 100644 --- a/songs/Dym_z_jalowca.xml +++ b/songs/Dym_z_jalowca.xml @@ -10,32 +10,32 @@ Dym z jałowca łzy wyciska, - Noc się coraz wyżej wznosi. + Noc się coraz wyżej wznosi. Strumień srebrną falą błyska, - Czyjś głos w leśnej ciszy prosi, ciszy prosi, ciszy prosi… + Czyjś głos w leśnej ciszy prosi, ciszy prosi, ciszy prosi… - Żeby była taka noc, - Kiedy myśli mkną do Boga, - Żeby były takie dni, - Że się przy Nim ciągle jest. - Żeby był przy tobie ktoś, - Kogo nie zniechęci droga, - Abyś plecak swoich win - Stromą ścieżką umiał nieść. + Żeby była taka noc, + Kiedy myśli mkną do Boga, + Żeby były takie dni, + Że się przy Nim ciągle jest. + Żeby był przy tobie ktoś, + Kogo nie zniechęci droga, + Abyś plecak swoich win + Stromą ścieżką umiał nieść. Usiądź z nami przy ognisku, - omień twarz ci zarumieni. + omień twarz ci zarumieni. Usiądziemy przy nim blisko, - Jedną myślą połączeni, połączeni, połączeni… + Jedną myślą połączeni, połączeni, połączeni… Tuż za szczytem się zatrzymaj, - Spójrz jak gwiazdy w dół spadają. + Spójrz jak gwiazdy w dół spadają. Spójrz jak drży kosodrzewina, - Góry z tobą wraz wołają, wraz wołają, wraz wołają… + Góry z tobą wraz wołają, wraz wołają, wraz wołają… diff --git a/songs/Easy_Rider.xml b/songs/Easy_Rider.xml index 881818af..cca9a789 100644 --- a/songs/Easy_Rider.xml +++ b/songs/Easy_Rider.xml @@ -9,89 +9,89 @@ - A kiedy nic już nie miałem w mieście do roboty - Bo na większość poetów skończył się tu popyt - Wsiadłem w auto i rzekłem pora mi uciekać - Do tej Polski gdzie jeszcze kocha się człowieka - Tam gdzie rowy przydrożne ubarwione mleczem - Zapraszają wędrowca: wstąpcie do miasteczek! + A kiedy nic już nie miałem w mieście do roboty + Bo na większość poetów skończył się tu popyt + Wsiadłem w auto i rzekłem pora mi uciekać + Do tej Polski gdzie jeszcze kocha się człowieka + Tam gdzie rowy przydrożne ubarwione mleczem + Zapraszają wędrowca: wstąpcie do miasteczek! - Easy Rider - Przeszło mi przez głowę - Easy Rider - upiec jednym słowem - Lecz ciagnęły mnie panny - Ciepłe jak poranek - Kiedy mleko skwaszone - Wnoszą mi na ganek - Easy Rider, Easy Rider + Easy Rider + Przeszło mi przez głowę + Easy Rider + upiec jednym słowem + Lecz ciagnęły mnie panny + Ciepłe jak poranek + Kiedy mleko skwaszone + Wnoszą mi na ganek + Easy Rider, Easy Rider - W miasteczku pierwszym zamknięty był jedyny hotel - Bo personel miał wolne właśnie w tę sobotę - A w prywatnym mieszkaniu drzwi otworzył blondyn - I zapytał mnie z miejsca jakie masz poglądy - Sprawiedliwość i prawda to jest dla mnie wszystko - Wtedy padła odpowiedź: zjeżdżaj aktywisto + W miasteczku pierwszym zamknięty był jedyny hotel + Bo personel miał wolne właśnie w tę sobotę + A w prywatnym mieszkaniu drzwi otworzył blondyn + I zapytał mnie z miejsca jakie masz poglądy + Sprawiedliwość i prawda to jest dla mnie wszystko + Wtedy padła odpowiedź: zjeżdżaj aktywisto - Easy Rider - Przeszło mi przez głowę - Easy Rider - upiec jednym słowem - Lecz ciągnęły mnie dalej - Wierzby malowane - I te nasze dziewczyny - Ładne jak z pisanek - Easy Rider, Easy Rider + Easy Rider + Przeszło mi przez głowę + Easy Rider + upiec jednym słowem + Lecz ciągnęły mnie dalej + Wierzby malowane + I te nasze dziewczyny + Ładne jak z pisanek + Easy Rider, Easy Rider - W następnym domku z ogródkiem miejski prokurator - Różom kolce przycinał równo ciął sekator - Przywitałem się grzecznie prosząc o mieszkanie - On zapytał mnie tylko jakie ma pan zdanie - Sprawiedliwość i prawda to jest dla mnie wszystko - Wtedy padła odpowiedź: odejdź ekstremisto + W następnym domku z ogródkiem miejski prokurator + Różom kolce przycinał równo ciął sekator + Przywitałem się grzecznie prosząc o mieszkanie + On zapytał mnie tylko jakie ma pan zdanie + Sprawiedliwość i prawda to jest dla mnie wszystko + Wtedy padła odpowiedź: odejdź ekstremisto - Easy Rider - Przeszło mi przez głowę - Easy Rider - upiec jednym słowem - Lecz ciągnęło mnie jeszcze - Do gościnnych wiosek - Gdzie częstują każdego - Miodem i bigosem - Easy Rider, Easy Rider + Easy Rider + Przeszło mi przez głowę + Easy Rider + upiec jednym słowem + Lecz ciągnęło mnie jeszcze + Do gościnnych wiosek + Gdzie częstują każdego + Miodem i bigosem + Easy Rider, Easy Rider - Solidny dom z pruskiej cegły siatką ogrodzony - I na bramie tabliczka: obcym wstęp wzbroniony - I na ganku gospodarz czerstwy jak bochenek - Wziął przywitał pytaniem co najbardziej cenię - Sprawiedliwość i prawda to jest dla mnie wszystko - Burek bierz miastowego będzie widowisko + Solidny dom z pruskiej cegły siatką ogrodzony + I na bramie tabliczka: obcym wstęp wzbroniony + I na ganku gospodarz czerstwy jak bochenek + Wziął przywitał pytaniem co najbardziej cenię + Sprawiedliwość i prawda to jest dla mnie wszystko + Burek bierz miastowego będzie widowisko - Easy Rider - Przeszło mi przez głowę - Easy Rider - upiec jednym słowem - Lecz ciągnęło mnie jeszcze - W strony te dalekie - Gdzie tak swojsko nam pachnie - Sianem i człowiekiem - Easy Rider, Easy Rider + Easy Rider + Przeszło mi przez głowę + Easy Rider + upiec jednym słowem + Lecz ciągnęło mnie jeszcze + W strony te dalekie + Gdzie tak swojsko nam pachnie + Sianem i człowiekiem + Easy Rider, Easy Rider - A kiedy minął już miesiąc w mej samotnej drodze - Gdzieś na szlaku zatrzymał pojazd mój wędrowiec - Sprawiedliwość i prawda rzekłem do rodaka - I był pierwszym co spytał: dobrze, ale jaka? - I podzielił się ze mną chlebem i kłopotem - To był też Easy Rider tylko na piechotę - Easy Rider + A kiedy minął już miesiąc w mej samotnej drodze + Gdzieś na szlaku zatrzymał pojazd mój wędrowiec + Sprawiedliwość i prawda rzekłem do rodaka + I był pierwszym co spytał: dobrze, ale jaka? + I podzielił się ze mną chlebem i kłopotem + To był też Easy Rider tylko na piechotę + Easy Rider diff --git a/songs/Emeryt.xml b/songs/Emeryt.xml index 3742331a..77412bc8 100644 --- a/songs/Emeryt.xml +++ b/songs/Emeryt.xml @@ -9,60 +9,60 @@ - Leżysz wtulona w pościel - Coś cichutko mruczysz przez sen - Łóżko szerokie, a pościel świeża - Za oknem prawie dzień - A jeszcze niedawno koja - W niej pachnący rybą koc - Fale bijące o pokład - I bosmana zdarty głos + Leżysz wtulona w pościel + Coś cichutko mruczysz przez sen + Łóżko szerokie, a pościel świeża + Za oknem prawie dzień + A jeszcze niedawno koja + W niej pachnący rybą koc + Fale bijące o pokład + I bosmana zdarty głos - To wszystko było minęło zostało tylko wspomnienie - Już nie poczuję wibracji pokładu gdy kable grają - Już tylko dom i ogródek i tak aż do śmierci - A przecież stare żaglowce po morzach jeszcze pływają + To wszystko było minęło zostało tylko wspomnienie + Już nie poczuję wibracji pokładu gdy kable grają + Już tylko dom i ogródek i tak aż do śmierci + A przecież stare żaglowce po morzach jeszcze pływają - Nie gniewaj się kochanie - Że trudno ze mną żyć - Że zapomniałem kupić mleko + Nie gniewaj się kochanie + Że trudno ze mną żyć + Że zapomniałem kupić mleko I gary zmyć - Lecz jeszcze niedawno pokład - Mym drugim domem był - Tam nie stało się w kolejkach - Tam nie było miejsca dla złych + Lecz jeszcze niedawno pokład + Mym drugim domem był + Tam nie stało się w kolejkach + Tam nie było miejsca dla złych - Upłynie sporo czasu - Nim przyzwyczaję się - Czterdzieści lat na morzu - Zamkniętych w jeden dzień - Skąd lekarz może wiedzieć - Że za morzem tęskno mi - Że duszę się na lądzie - Że śni mi się pokład pełen ryb + Upłynie sporo czasu + Nim przyzwyczaję się + Czterdzieści lat na morzu + Zamkniętych w jeden dzień + Skąd lekarz może wiedzieć + Że za morzem tęskno mi + Że duszę się na lądzie + Że śni mi się pokład pełen ryb - Wiem masz do mnie żal - Mieliśmy do przyjaciół iść - Spotkałem kolegę z rejsu - On w morze idzie dziś - Siedziałem potem na kei - Ze łzami patrzyłem na port - Jeszcze przyjdzie taki dzień - Kiedy opuszczę go a na razie + Wiem masz do mnie żal + Mieliśmy do przyjaciół iść + Spotkałem kolegę z rejsu + On w morze idzie dziś + Siedziałem potem na kei + Ze łzami patrzyłem na port + Jeszcze przyjdzie taki dzień + Kiedy opuszczę go a na razie - To wszystko było minęło zostało tylko wspomnienie - Już nie poczuję wibracji pokładu gdy kable grają - Już tylko dom i ogródek i tak aż do śmierci + To wszystko było minęło zostało tylko wspomnienie + Już nie poczuję wibracji pokładu gdy kable grają + Już tylko dom i ogródek i tak aż do śmierci - A przecież stare żaglowce po morzach jeszcze pływają + A przecież stare żaglowce po morzach jeszcze pływają diff --git a/songs/Francois_Villon.xml b/songs/Francois_Villon.xml index 3dabd989..725fee73 100644 --- a/songs/Francois_Villon.xml +++ b/songs/Francois_Villon.xml @@ -3,44 +3,44 @@ Bułat Okudżawa - Dopóki nam Ziemia kręci się, - Dopóki jest tak czy siak, - Panie, ofiaruj każdemu z nas - Czego mu w życiu brak. - Mędrcowi darować głowę racz, - Tchórzowi dać konia chciej, - Sypnij grosz szczęściarzom - I mnie w opiece swej miej. + Dopóki nam Ziemia kręci się, + Dopóki jest tak czy siak, + Panie, ofiaruj każdemu z nas + Czego mu w życiu brak. + Mędrcowi darować głowę racz, + Tchórzowi dać konia chciej, + Sypnij grosz szczęściarzom + I mnie w opiece swej miej. - Dopóki nam Ziemia obraca się, - O, Panie, daj nam znak. - Władzy spragnionym uczyń, - By władza poszła im w smak. - Hojnych puść między żebraków, - Niech się poczują lżej, - Daj Kainowi skruchę - I mnie w opiece swej miej. + Dopóki nam Ziemia obraca się, + O, Panie, daj nam znak. + Władzy spragnionym uczyń, + By władza poszła im w smak. + Hojnych puść między żebraków, + Niech się poczują lżej, + Daj Kainowi skruchę + I mnie w opiece swej miej. - Ja wiem, że Ty wszystko możesz, - Ja wierzę w Twą moc i gest, - Jak wierzy żołnierz zabity, - Że w siódmym niebie jest, - Jak zmysł każdy chłonie z wiarą - Twój ledwie słyszalny głos, - Jak wszyscy wierzymy w Ciebie, - Nie wiedząc, co niesie los. + Ja wiem, że Ty wszystko możesz, + Ja wierzę w Twą moc i gest, + Jak wierzy żołnierz zabity, + Że w siódmym niebie jest, + Jak zmysł każdy chłonie z wiarą + Twój ledwie słyszalny głos, + Jak wszyscy wierzymy w Ciebie, + Nie wiedząc, co niesie los. - Panie zielonooki mój - Boże jedyny spraw, - Dopóki nam Ziemia toczy się - Zdumiona obrotem spraw, - Dopóki czasu i prochu - Wciąż jeszcze wystarcza jej, - Dajże nam wszystkim po trochu - I mnie w opiece swej miej. + Panie zielonooki mój + Boże jedyny spraw, + Dopóki nam Ziemia toczy się + Zdumiona obrotem spraw, + Dopóki czasu i prochu + Wciąż jeszcze wystarcza jej, + Dajże nam wszystkim po trochu + I mnie w opiece swej miej. diff --git a/songs/Gdy_mnie_kochac_przestaniesz.xml b/songs/Gdy_mnie_kochac_przestaniesz.xml index b6d8cc4d..806c1d35 100644 --- a/songs/Gdy_mnie_kochac_przestaniesz.xml +++ b/songs/Gdy_mnie_kochac_przestaniesz.xml @@ -9,36 +9,36 @@ - Gdy mnie kochać przestaniesz to powiedz - Powiedz kiedy mnie kochać przestaniesz - To się człowiek wypłacze jak człowiek - W białym łóżku nad ranem - Nie przysyłaj mi listów ostatnich - Nie owijaj w bawełnę słów paru - Lepiej siądźmy do ciepłej kolacji - Pod okapem wieczoru + Gdy mnie kochać przestaniesz to powiedz + Powiedz kiedy mnie kochać przestaniesz + To się człowiek wypłacze jak człowiek + W białym łóżku nad ranem + Nie przysyłaj mi listów ostatnich + Nie owijaj w bawełnę słów paru + Lepiej siądźmy do ciepłej kolacji + Pod okapem wieczoru - Na talerzach świecy blask - Dymi waza pełna gwiazd - A pod stołem kot się łasi - Coś stuknęło na tarasie - Może wiatr - Piętro wyżej ćwiczą Liszta - A zawiane towarzystwo - Gdzieś pod bramą wykrzykuje - Stróż im tego nie daruje - Stróż artysta + Na talerzach świecy blask + Dymi waza pełna gwiazd + A pod stołem kot się łasi + Coś stuknęło na tarasie + Może wiatr + Piętro wyżej ćwiczą Liszta + A zawiane towarzystwo + Gdzieś pod bramą wykrzykuje + Stróż im tego nie daruje + Stróż artysta - Posiedzimy tak sobie we dwoje - Pośród spraw których nigdy nie bo - Potem w starym zacisznym pokoju - Znowu wyznasz mi mość - Gdy mnie kochać przestaniesz bez racji - Powiedz o tym od razu kochany - Wtedy zjemy kolejną kolację - Na wieczoru dywanie + Posiedzimy tak sobie we dwoje + Pośród spraw których nigdy nie bo + Potem w starym zacisznym pokoju + Znowu wyznasz mi mość + Gdy mnie kochać przestaniesz bez racji + Powiedz o tym od razu kochany + Wtedy zjemy kolejną kolację + Na wieczoru dywanie diff --git a/songs/Gdziekolwiek.xml b/songs/Gdziekolwiek.xml index 651a9d2c..4d0c1188 100644 --- a/songs/Gdziekolwiek.xml +++ b/songs/Gdziekolwiek.xml @@ -9,14 +9,14 @@ - Gdziekolwiek będziesz, cokolwiek się stanie - Będą miejsca w książkach i miejsca przy stole - Kasztan kiedy kwitnie lub owoc otwiera - Będą drzewa, ulice, ktoś nagle zawoła - Ktoś do drzwi zapuka, pamięć przyniesie - Z kwiatem, z godziną, z kolorem - Gdziekolwiek będziesz, cokolwiek się stanie - Gdziekolwiek będziesz + Gdziekolwiek będziesz, cokolwiek się stanie + Będą miejsca w książkach i miejsca przy stole + Kasztan kiedy kwitnie lub owoc otwiera + Będą drzewa, ulice, ktoś nagle zawoła + Ktoś do drzwi zapuka, pamięć przyniesie + Z kwiatem, z godziną, z kolorem + Gdziekolwiek będziesz, cokolwiek się stanie + Gdziekolwiek będziesz Gdziekolwiek będziesz, cokolwiek się stanie diff --git a/songs/Glupi_Gienek.xml b/songs/Glupi_Gienek.xml index b9fab759..af87ed41 100644 --- a/songs/Glupi_Gienek.xml +++ b/songs/Glupi_Gienek.xml @@ -3,25 +3,25 @@ Stare Dobre Małżeństwo - Gienek gra na gitarze - Miał być szewcem G - Lecz mu nie wyszło - Za oknem jesień - Przybija podkówki - Chyba na przyszłość + Gienek gra na gitarze + Miał być szewcem G + Lecz mu nie wyszło + Za oknem jesień + Przybija podkówki + Chyba na przyszłość - Gitara Gienka jest taka cienka - Po prostu mało ma strun - Lecz Gienek jej wierzy, - Wie że struna pęka - Zwłaszcza gdy cienka i już + Gitara Gienka jest taka cienka + Po prostu mało ma strun + Lecz Gienek jej wierzy, + Wie że struna pęka + Zwłaszcza gdy cienka i już - Gienek nie będzie już szewcem - Bo wbił sobie w głowę gwóźdź - Woli gitarę mieć za żonę - Z gitarą bierze ślub + Gienek nie będzie już szewcem + Bo wbił sobie w głowę gwóźdź + Woli gitarę mieć za żonę + Z gitarą bierze ślub diff --git a/songs/Gonic_marzenia.xml b/songs/Gonic_marzenia.xml index 1d277bb9..e4147320 100644 --- a/songs/Gonic_marzenia.xml +++ b/songs/Gonic_marzenia.xml @@ -9,45 +9,45 @@ Za tumanom - Na włóczęgę dziś wyruszyć przyszła pora, - Las nas woła śpiewem ptaków, szumem drzew - I wołają nas już pola i jeziora, - Zeszłoroczny nasz wesoły pomnąc śpiew. - Ludzie mają swoje prace, ludzie lubią się bogacić, - Pełne brzuchy mają chcą mieć pełen trzos. + Na włóczęgę dziś wyruszyć przyszła pora, + Las nas woła śpiewem ptaków, szumem drzew + I wołają nas już pola i jeziora, + Zeszłoroczny nasz wesoły pomnąc śpiew. + Ludzie mają swoje prace, ludzie lubią się bogacić, + Pełne brzuchy mają chcą mieć pełen trzos. - A ja gonię, a ja gonię swe marzenia, - Szukam szczęścia gdzie kaczeńce i gdzie wrzos. + A ja gonię, a ja gonię swe marzenia, + Szukam szczęścia gdzie kaczeńce i gdzie wrzos. - Tak to proste że i gadać szkoda czasu, - Tylko plecak wziąć i iść przed siebie tak. - Szukać wiatru i zapachu szukać lasu, - Jak najdalej z zadymionych wielkich miast. - Zrozum bracie, to tak trzeba łóżkiem trawa, dachem drzewa, - Z wiatrem gonić i z ptakami śpiewać w głos! + Tak to proste że i gadać szkoda czasu, + Tylko plecak wziąć i iść przed siebie tak. + Szukać wiatru i zapachu szukać lasu, + Jak najdalej z zadymionych wielkich miast. + Zrozum bracie, to tak trzeba łóżkiem trawa, dachem drzewa, + Z wiatrem gonić i z ptakami śpiewać w głos! - Trzeba gonić trzeba gonić swe marzenia - I nie czekać ile trosk przyniesie los! + Trzeba gonić trzeba gonić swe marzenia + I nie czekać ile trosk przyniesie los! - Tym co iść nie lubią, mówię do widzenia, - Za dni kilka może się spotkamy znów. - Idę w świat, by tam dogonić swe marzenia, - Aby spełnić kilka swoich złotych snów. - Więc z dziewczyną swą pod rękę i z gitarą, i z piosenką, - Precz mi smutki, precz przykrości słońce świeć! + Tym co iść nie lubią, mówię do widzenia, + Za dni kilka może się spotkamy znów. + Idę w świat, by tam dogonić swe marzenia, + Aby spełnić kilka swoich złotych snów. + Więc z dziewczyną swą pod rękę i z gitarą, i z piosenką, + Precz mi smutki, precz przykrości słońce świeć! - Idę gonić idę gonić swe marzenia - I spokoju szukać pośród starch drzew. + Idę gonić idę gonić swe marzenia + I spokoju szukać pośród starch drzew. diff --git a/songs/Gorska_ballada.xml b/songs/Gorska_ballada.xml index f70d9e2a..b7a49669 100644 --- a/songs/Gorska_ballada.xml +++ b/songs/Gorska_ballada.xml @@ -16,42 +16,42 @@ - Przyłączył się do nas na jednej z wędrówek - Razem z nami przemierzał górskie szlaki - Rzadko do kogoś odezwał się słowem - Lecz chyba mu dobrze było z nami - Raz kiedyś w schronisku gdy noc nas zdybała - Otworzył jakiś zeszyt wypłowiały - Spod palców spłynęły mu dźwięki gitary - I słowa nieznane lecz bliskie + Przyłączył się do nas na jednej z wędrówek + Razem z nami przemierzał górskie szlaki + Rzadko do kogoś odezwał się słowem + Lecz chyba mu dobrze było z nami + Raz kiedyś w schronisku gdy noc nas zdybała + Otworzył jakiś zeszyt wypłowiały + Spod palców spłynęły mu dźwięki gitary + I słowa nieznane lecz bliskie - Bo zagrał swą balladę - A w niej zamknął echa gór - Bo zagrał swą balladę - Górskich potoków szum + Bo zagrał swą balladę + A w niej zamknął echa gór + Bo zagrał swą balladę + Górskich potoków szum - Od tego wieczoru już zawsze nam śpiewał - O nim samym mówiły piosenki - Jakieś imię dziewczyny wspomnienia dużego miasta - Dym z ognisk i noce nieprzespane - Na jednym ze szlaków pożegnał się z nami - Odszedł drogą inną nieznaną - Odszedł jak Majster Bieda może kiedyś powróci - Zawsze na niego czekamy + Od tego wieczoru już zawsze nam śpiewał + O nim samym mówiły piosenki + Jakieś imię dziewczyny wspomnienia dużego miasta + Dym z ognisk i noce nieprzespane + Na jednym ze szlaków pożegnał się z nami + Odszedł drogą inną nieznaną + Odszedł jak Majster Bieda może kiedyś powróci + Zawsze na niego czekamy - By zagrał swą balladę - A w niej zamknął echa gór - By zagrał swą balladę - Górskich potoków szum + By zagrał swą balladę + A w niej zamknął echa gór + By zagrał swą balladę + Górskich potoków szum - Górskich potoków szum + Górskich potoków szum diff --git a/songs/Goryl.xml b/songs/Goryl.xml index 65a77c72..ce39258c 100644 --- a/songs/Goryl.xml +++ b/songs/Goryl.xml @@ -9,104 +9,104 @@ Le Gorille - W naszym zoo trzymali goryla - W klatce z bardzo grubych krat - Zaś przed nią baby stawały co chwila - I podziwiały samca bez szat - Zwłaszcza na jedną część jego ciała - Wszystkie bezwstydnie gapiły się wciąż - Nie powiem na co lecz nie było to małe - Każda wzdychała gdzie przy nim mój mąż + W naszym zoo trzymali goryla + W klatce z bardzo grubych krat + Zaś przed nią baby stawały co chwila + I podziwiały samca bez szat + Zwłaszcza na jedną część jego ciała + Wszystkie bezwstydnie gapiły się wciąż + Nie powiem na co lecz nie było to małe + Każda wzdychała gdzie przy nim mój mąż - Strzeż się goryla + Strzeż się goryla - Lecz oto małpa wychodzi ukradkiem - Ku zaskoczeniu szacownych p - Chyba ktoś źle zamknął klatkę - Jak to się stało nie wiem sam - Goryl stanął wolnością zachwycon - I odezwał się słowem tym - Od dziś nie będę już dziewicą - A oto jak słowo przeszło w czyn + Lecz oto małpa wychodzi ukradkiem + Ku zaskoczeniu szacownych p + Chyba ktoś źle zamknął klatkę + Jak to się stało nie wiem sam + Goryl stanął wolnością zachwycon + I odezwał się słowem tym + Od dziś nie będę już dziewicą + A oto jak słowo przeszło w czyn - Dyrektor zoo postradał zmysły - I powtarzał ciągle bez tchu - Mój goryl nie miał nigdy samicy - On jest silniejszy niż ludzi stu - Gdy dowiedziały się o tym niewiasty - Zaraz podniosły straszliwy krzyk - I zamiast skorzystać z wielkiej szansy - Idiotki dały drapaka w mig + Dyrektor zoo postradał zmysły + I powtarzał ciągle bez tchu + Mój goryl nie miał nigdy samicy + On jest silniejszy niż ludzi stu + Gdy dowiedziały się o tym niewiasty + Zaraz podniosły straszliwy krzyk + I zamiast skorzystać z wielkiej szansy + Idiotki dały drapaka w mig - Nawet te z nich co jeszcze przed chwilą - Marzyły o małpim supermanie - Teraz zwiewały aż się kurzyło - A więc to były tylko marzenia - Ten ich strach był tym mniej zrozumiały - Że przecież goryl to na schwał chłop - Bo nawet Don Juan nie dałby mu rady - Szczęście było dosłownie o krok + Nawet te z nich co jeszcze przed chwilą + Marzyły o małpim supermanie + Teraz zwiewały aż się kurzyło + A więc to były tylko marzenia + Ten ich strach był tym mniej zrozumiały + Że przecież goryl to na schwał chłop + Bo nawet Don Juan nie dałby mu rady + Szczęście było dosłownie o krok - Ludzie pierzchnęli we wszystkie strony - Bo dziki samiec przeraził ich tak - Pozostał tylko pewien sędzia młody - I jakaś staruszka (stuletni wrak) - Goryl widząc jedynie tych dwoje - Poczuł gwałtowny erotyki głód - Więc aby żądze swe zaspokoić - Ku nim skierował swój kaczy chód + Ludzie pierzchnęli we wszystkie strony + Bo dziki samiec przeraził ich tak + Pozostał tylko pewien sędzia młody + I jakaś staruszka (stuletni wrak) + Goryl widząc jedynie tych dwoje + Poczuł gwałtowny erotyki głód + Więc aby żądze swe zaspokoić + Ku nim skierował swój kaczy chód - Starucha czując nagłą ochotę - Westchnęła -- więc jednak zdarzył się cud - Ktoś jeszcze miewa do mnie ciągoty - Już nie liczyłam na szczęścia łut - Ciekawe jaką samicę tu znajdzie - Chyba tę starą przecież nie mnie - Pomyślał sędzia lecz przyszłość zasię - Dowiodła jak bardzo mylił się + Starucha czując nagłą ochotę + Westchnęła -- więc jednak zdarzył się cud + Ktoś jeszcze miewa do mnie ciągoty + Już nie liczyłam na szczęścia łut + Ciekawe jaką samicę tu znajdzie + Chyba tę starą przecież nie mnie + Pomyślał sędzia lecz przyszłość zasię + Dowiodła jak bardzo mylił się - Bo zastanówmy się w tym momencie - Gdyby ktoś inny na miejscu małpy - Musiał tu wybrać starucha czy sędzia - Komu z nich szczęścia spróbować dałby - Ja gdybym rozwiązać miał osobiście - Alternatywę taką już dz - Bym wybrał babinę oczywiście - Choć włos się jeży na samą myśl + Bo zastanówmy się w tym momencie + Gdyby ktoś inny na miejscu małpy + Musiał tu wybrać starucha czy sędzia + Komu z nich szczęścia spróbować dałby + Ja gdybym rozwiązać miał osobiście + Alternatywę taką już dz + Bym wybrał babinę oczywiście + Choć włos się jeży na samą myśl - Ale niestety co prawda goryl - Jest arcymistrzem w miłosnej grze - Lecz jeśli chodzi o smak czy urodę - Wiadomo powszechnie raczej nie - Albowiem zamiast zgwałcić staruchę - Jak to uczynił by byle kto - Ten sędziego ułapił za ucho - I w jakieś krzaki zaciągnął go + Ale niestety co prawda goryl + Jest arcymistrzem w miłosnej grze + Lecz jeśli chodzi o smak czy urodę + Wiadomo powszechnie raczej nie + Albowiem zamiast zgwałcić staruchę + Jak to uczynił by byle kto + Ten sędziego ułapił za ucho + I w jakieś krzaki zaciągnął go - Dalszego ciągu zdradzić nie mogę - Chociaż i miejsce na to i czas - Lecz mi nie wolno a wielka szkoda - Bo ubawiło by to was - Jako że sędzia w szczytowym momencie - Zapłakał głośno i krzyknął ,,mamo'' - Zupełnie jak człowiek którego na ścięcie - Skazał był właśnie tego dnia rano + Dalszego ciągu zdradzić nie mogę + Chociaż i miejsce na to i czas + Lecz mi nie wolno a wielka szkoda + Bo ubawiło by to was + Jako że sędzia w szczytowym momencie + Zapłakał głośno i krzyknął ,,mamo'' + Zupełnie jak człowiek którego na ścięcie + Skazał był właśnie tego dnia rano diff --git a/songs/Harcerskie_idealy.xml b/songs/Harcerskie_idealy.xml index 69ca3bf2..355054a9 100644 --- a/songs/Harcerskie_idealy.xml +++ b/songs/Harcerskie_idealy.xml @@ -15,22 +15,22 @@ A zaraz pod nim harcerskich dziesięć praw. - Ramię pręż, słabość krusz i nie zawiedź w potrzebie, - Podaj swą pomocną dłoń Tym, co liczą na Ciebie, - Zmieniaj świat, zawsze bądź sprawiedliwy i odważny, - Śmiało zwalczaj wszelkie zło, niech twym bratem będzie każdy. + Ramię pręż, słabość krusz i nie zawiedź w potrzebie, + Podaj swą pomocną dłoń Tym, co liczą na Ciebie, + Zmieniaj świat, zawsze bądź sprawiedliwy i odważny, + Śmiało zwalczaj wszelkie zło, niech twym bratem będzie każdy. - I świeć przykładem, świeć, - I leć w przestworza leć, - I nieś ze sobą wieść, - Że być harcerzem chcesz. + I świeć przykładem, świeć, + I leć w przestworza leć, + I nieś ze sobą wieść, + Że być harcerzem chcesz. - A gdy spyta cię ktoś: „Skąd ten krzyż na twej piersi”, - Z dumą odpowiesz mu: ,,Taki mają najdzielniejsi - I choć mało mam lat w mym harcerskim mundurze - Bogu, ludziom i ojczyźnie na ich wieczną chwałę służę.'' + A gdy spyta cię ktoś: „Skąd ten krzyż na twej piersi”, + Z dumą odpowiesz mu: ,,Taki mają najdzielniejsi + I choć mało mam lat w mym harcerskim mundurze + Bogu, ludziom i ojczyźnie na ich wieczną chwałę służę.'' diff --git a/songs/Hej_przyjaciele.xml b/songs/Hej_przyjaciele.xml index 84f1b10d..29a0dbe9 100644 --- a/songs/Hej_przyjaciele.xml +++ b/songs/Hej_przyjaciele.xml @@ -9,29 +9,29 @@ - Tam, dokąd chciałem już nie dojdę, szkoda zdzierać nóg, - Już wędrówki naszej wspólnej nadchodzi kres. - Wy pójdziecie inną drogą zostawicie mnie, - Odejdziecie — sam zostanę na rozstaju dróg. + Tam, dokąd chciałem już nie dojdę, szkoda zdzierać nóg, + Już wędrówki naszej wspólnej nadchodzi kres. + Wy pójdziecie inną drogą zostawicie mnie, + Odejdziecie — sam zostanę na rozstaju dróg. - Hej przyjaciele, przyjaciele, hej, zostańcie ze mną, - Przecież wszystko to co miałem oddałem Wam. - Hej przyjaciele, przyjaciele, hej, choć chwilę jedną, - Znowu w życiu mi nie wyszło, znowu będę sam. + Hej przyjaciele, przyjaciele, hej, zostańcie ze mną, + Przecież wszystko to co miałem oddałem Wam. + Hej przyjaciele, przyjaciele, hej, choć chwilę jedną, + Znowu w życiu mi nie wyszło, znowu będę sam. - Znów spóźniłem się na pociąg i odjechał już, - Tylko jego mglisty koniec zamajaczył mi. - Stoję smutny na peronie z tą walizką jedną - Tak, jak człowiek, który zgubił od domu swego klucz. + Znów spóźniłem się na pociąg i odjechał już, + Tylko jego mglisty koniec zamajaczył mi. + Stoję smutny na peronie z tą walizką jedną + Tak, jak człowiek, który zgubił od domu swego klucz. - Tam, dokąd chciałem już nie dojdę, szkoda zdzierać nóg, - Już wędrówki naszej wspólnej nadchodzi kres. - Wy pójdziecie inną drogą zostawicie mnie, - Zamazanych drogowskazów nie odczytam już. + Tam, dokąd chciałem już nie dojdę, szkoda zdzierać nóg, + Już wędrówki naszej wspólnej nadchodzi kres. + Wy pójdziecie inną drogą zostawicie mnie, + Zamazanych drogowskazów nie odczytam już. diff --git a/songs/Hiszpanskie_dziewczyny.xml b/songs/Hiszpanskie_dziewczyny.xml index 381ea17d..4615ff76 100644 --- a/songs/Hiszpanskie_dziewczyny.xml +++ b/songs/Hiszpanskie_dziewczyny.xml @@ -9,43 +9,43 @@ - Żegnajcie nam dziś hiszpańskie dziewczyny - Żegnajcie nam dziś marzenia ze snów - Ku brzegom angielskim już ruszać nam pora - Lecz kiedyś na pewno wrócimy tu znów + Żegnajcie nam dziś hiszpańskie dziewczyny + Żegnajcie nam dziś marzenia ze snów + Ku brzegom angielskim już ruszać nam pora + Lecz kiedyś na pewno wrócimy tu znów - I smak waszych ust hiszpańskie dziewczyny - W noc ciemną i złą nam będzie się śnił - Leniwie popłyną znów rejsu godziny - Wspomnienie ust waszych przysporzy nam sił + I smak waszych ust hiszpańskie dziewczyny + W noc ciemną i złą nam będzie się śnił + Leniwie popłyną znów rejsu godziny + Wspomnienie ust waszych przysporzy nam sił - Niedługo ujrzymy znów w dali Cape Deadman - I głowę baranią sterczącą wśród wzgórz - I statki stojące na redzie przy Plymouth - Klarować kotwicę najwyższy czas j + Niedługo ujrzymy znów w dali Cape Deadman + I głowę baranią sterczącą wśród wzgórz + I statki stojące na redzie przy Plymouth + Klarować kotwicę najwyższy czas j - A potem znów żagle na masztach rozkwitną - Kurs szyper wyznaczy na Portland i Wight - I znów stara łajba potoczy się ciężko - Przez fale w kierunku na Beachie Fairlie + A potem znów żagle na masztach rozkwitną + Kurs szyper wyznaczy na Portland i Wight + I znów stara łajba potoczy się ciężko + Przez fale w kierunku na Beachie Fairlie - Zabłysną nam bielą skał zęby spod Dover - I znów noc w kubryku wśród legend i bajd - Powoli i znojnie tak płynie nam życie - Na wodach i w portach South Foreland Light + Zabłysną nam bielą skał zęby spod Dover + I znów noc w kubryku wśród legend i bajd + Powoli i znojnie tak płynie nam życie + Na wodach i w portach South Foreland Light - I smak waszych ust hiszpańskie dziewczyny - W noc ciemną i złą nam będzie się śnił - Leniwie popłyną znów rejsu godziny - Wspomnienie ust waszych przysporzy nam sił + I smak waszych ust hiszpańskie dziewczyny + W noc ciemną i złą nam będzie się śnił + Leniwie popłyną znów rejsu godziny + Wspomnienie ust waszych przysporzy nam sił diff --git a/songs/Hymn_harcerski.xml b/songs/Hymn_harcerski.xml index 11be6cd9..0ec7b342 100644 --- a/songs/Hymn_harcerski.xml +++ b/songs/Hymn_harcerski.xml @@ -12,15 +12,15 @@ - Wszystko co nasze Polsce oddamy - W niej tylko życie, więc idziem żyć - Świty się bielą otwórzmy bramy - Rozkaz wydany, wstań w słońce idź - Ramię pręż, słabość krusz - Ducha tęż ojczyźnie miłej służ - Na jej zew w bój czy w trud - Pójdzie rad harcerzy polskich ród - Harcerzy polskich ród + Wszystko co nasze Polsce oddamy + W niej tylko życie, więc idziem żyć + Świty się bielą otwórzmy bramy + Rozkaz wydany, wstań w słońce idź + Ramię pręż, słabość krusz + Ducha tęż ojczyźnie miłej służ + Na jej zew w bój czy w trud + Pójdzie rad harcerzy polskich ród + Harcerzy polskich ród diff --git a/songs/Ida_skauci.xml b/songs/Ida_skauci.xml index f29d004b..b981ffaa 100644 --- a/songs/Ida_skauci.xml +++ b/songs/Ida_skauci.xml @@ -31,7 +31,7 @@ Rzucim światu pieśń o cudzie raz, dwa, trzy Będziem śpiewać pieśń radości O wspaniałym dniu wolności raz, dwa, trzy, - raz, dwa, trzy, raz, dwa, trzy + raz, dwa, trzy, raz, dwa, trzy diff --git a/songs/Idac_zawsze_idz.xml b/songs/Idac_zawsze_idz.xml index a381d6ad..66dd6ba8 100644 --- a/songs/Idac_zawsze_idz.xml +++ b/songs/Idac_zawsze_idz.xml @@ -10,39 +10,39 @@ Przyszedł do mnie, jak do swego - Twarz z powieści Witkacego mi + Twarz z powieści Witkacego mi I dwie książki. Jak nie patrzeć - Bursa Andrzej i Wojaczek Raf + Bursa Andrzej i Wojaczek Raf W oczach miał zmęczenie światem - I chciał ze mną, tak jak z bratem iść w rozmowy szał + I chciał ze mną, tak jak z bratem iść w rozmowy szał Więc od razu bez przymiarki - Takie słowne dwa ogarki mi d + Takie słowne dwa ogarki mi d - Siedząc, zawsze siedź + Siedząc, zawsze siedź Idąc, zawsze idź - Pierwsze kroki stawiaj w chmurach - Choćbyś wiedział, że nie wskórasz - W takich chmurach nic + Pierwsze kroki stawiaj w chmurach + Choćbyś wiedział, że nie wskórasz + W takich chmurach nic Absolutnie nic - Kiedy mówisz, mów - Kiedy milczysz, milcz - Niechaj wielka będzie cisza - Tak by każdy ją usłyszał - ośniej niż twój krzyk - Więc: kiedy milczysz, milcz + Kiedy mówisz, mów + Kiedy milczysz, milcz + Niechaj wielka będzie cisza + Tak by każdy ją usłyszał + ośniej niż twój krzyk + Więc: kiedy milczysz, milcz Milczeliśmy przez godzinę - Popijając połowinę pod kwas + Popijając połowinę pod kwas Gdy byliśmy już w rozpędzie - Wstał, powiedział: na mnie będzie już czas + Wstał, powiedział: na mnie będzie już czas Jeszcze na mnie spojrzał, jak ten - Który miał miasteczka każdy wie, gdzie + Który miał miasteczka każdy wie, gdzie Na odchodnym, bez przymiarki - Rzucił słowne dwa ogarki bym pamiętał, że + Rzucił słowne dwa ogarki bym pamiętał, że diff --git a/songs/Imperatyw.xml b/songs/Imperatyw.xml index 222b1a94..14cbfaeb 100644 --- a/songs/Imperatyw.xml +++ b/songs/Imperatyw.xml @@ -9,30 +9,30 @@ - Będziemy szli nieprzerwanie - W ulewie skwarze huraganie - Przez chwiejne mosty grząskie bagna - Chaszcze pustynie i mokradła - Będziemy szli przez zamiecie - Przez grudnie, marce, czerwce, sierpnie - Upalne lata mroźne zimy - Będziemy szli nie zawrócimy + Będziemy szli nieprzerwanie + W ulewie skwarze huraganie + Przez chwiejne mosty grząskie bagna + Chaszcze pustynie i mokradła + Będziemy szli przez zamiecie + Przez grudnie, marce, czerwce, sierpnie + Upalne lata mroźne zimy + Będziemy szli nie zawrócimy - Z wiarą w następny zakręt drogi - Co znów okaże się nie ten - W tajne przymierze z Panem Bogiem - W naszego trudu jakiś sens + Z wiarą w następny zakręt drogi + Co znów okaże się nie ten + W tajne przymierze z Panem Bogiem + W naszego trudu jakiś sens - Będziemy szli bez wytchnienia - Upadający ze zmęczenia - Bez gromkich fanfar i okrzyków - Bez pozy dumnych wojowników - Będziemy szli wbrew logice - Powolnym marszem całe życie - Będziemy mówić że już dosyć - I dalej, dalej, dalej kroczyć + Będziemy szli bez wytchnienia + Upadający ze zmęczenia + Bez gromkich fanfar i okrzyków + Bez pozy dumnych wojowników + Będziemy szli wbrew logice + Powolnym marszem całe życie + Będziemy mówić że już dosyć + I dalej, dalej, dalej kroczyć diff --git a/songs/Jak.xml b/songs/Jak.xml index d3980e08..6e25b157 100644 --- a/songs/Jak.xml +++ b/songs/Jak.xml @@ -11,47 +11,47 @@ Jak po nocnym niebie sunące - Białe obłoki nad lasem + Białe obłoki nad lasem Jak na szyi wędrowca apaszka szamotana wiatrem Jak wyciągnięte tam powyżej - Gwiaździste ramiona wasze - A tu są nasze, a tu są nasze + Gwiaździste ramiona wasze + A tu są nasze, a tu są nasze Jak suchy szloch w tę dżdżystą noc - Jak winny li niewinny sumienia wyrzut - Że się żyje gdy umarło tylu tylu tylu + Jak winny li niewinny sumienia wyrzut + Że się żyje gdy umarło tylu tylu tylu Jak suchy szloch w tę dżdżystą noc - Jak lizać rany celnie zadane - Jak lepić serce w proch potrzaskane + Jak lizać rany celnie zadane + Jak lepić serce w proch potrzaskane Jak suchy szloch w tę dżdżystą noc - Pudowy kamień, pudowy kamień - Ja na nim stanę, on na mnie stanie - On na mnie stanie, spod niego wstanę + Pudowy kamień, pudowy kamień + Ja na nim stanę, on na mnie stanie + On na mnie stanie, spod niego wstanę Jak suchy szloch w tę dżdżystą noc - Jak złota kula nad wodami + Jak złota kula nad wodami Jak świt pod spuchniętymi powiekami Jak zorze miłe śliczne polany - Jak słońca pierś jak garb swój nieść - Jak do was siostry mgławicowe ten zawodzący śpiew + Jak słońca pierś jak garb swój nieść + Jak do was siostry mgławicowe ten zawodzący śpiew @@ -59,7 +59,7 @@ Jak biec do końca potem odpoczniesz Potem odpoczniesz cudne manowce - Cudne manowce, cudne, cudne manowce + Cudne manowce, cudne, cudne manowce diff --git a/songs/Jaki_byl_ten_dzien.xml b/songs/Jaki_byl_ten_dzien.xml index 661565ac..6ef9cb43 100644 --- a/songs/Jaki_byl_ten_dzien.xml +++ b/songs/Jaki_byl_ten_dzien.xml @@ -9,28 +9,28 @@ - Późno już, otwiera się mrok, - Sen podchodzi do drzwi na palcach jak kot. - Nadchodzi czas ucieczki na aut. - Gdy kolejny mój dzień wspomieniem się stał. + Późno już, otwiera się mrok, + Sen podchodzi do drzwi na palcach jak kot. + Nadchodzi czas ucieczki na aut. + Gdy kolejny mój dzień wspomieniem się stał. - Jaki był ten dzień, co darował co wziął, - Czy mnie wyniósł pod niebo czy rzucił na dno? - Jaki był ten dzień, czy coś zmienił czy nie, - Czy był tylko nadzieją na dobre i złe? + Jaki był ten dzień, co darował co wziął, + Czy mnie wyniósł pod niebo czy rzucił na dno? + Jaki był ten dzień, czy coś zmienił czy nie, + Czy był tylko nadzieją na dobre i złe? - Łagodny mrok zasłania mi twarz, - Jakby przeczuł, że chcę być sobą choć raz. - Nie skarżę się, że mam to co mam, - Że przegrałem coś znów, że jestem znów sam. + Łagodny mrok zasłania mi twarz, + Jakby przeczuł, że chcę być sobą choć raz. + Nie skarżę się, że mam to co mam, + Że przegrałem coś znów, że jestem znów sam. - Jaki był ten dzień, co darował co wziął, - Czy mnie wyniósł pod niebo czy rzucił na dno? - Jaki był ten dzień, czy coś zmienił czy nie, - Czy był tylko nadzieją na dobre i złe? + Jaki był ten dzień, co darował co wziął, + Czy mnie wyniósł pod niebo czy rzucił na dno? + Jaki był ten dzień, czy coś zmienił czy nie, + Czy był tylko nadzieją na dobre i złe? diff --git a/songs/Jalta.xml b/songs/Jalta.xml index c7973769..eb969d39 100644 --- a/songs/Jalta.xml +++ b/songs/Jalta.xml @@ -9,100 +9,100 @@ - Jak nowa rezydencja carów - użba swe obowiązki zna - Precz wysiedlono stąd Tatarów - Gdzie na świat wyrok zapaść ma + Jak nowa rezydencja carów + użba swe obowiązki zna + Precz wysiedlono stąd Tatarów + Gdzie na świat wyrok zapaść ma Okna już widzą słyszą ściany - Jak kaszle nad cygarem lew - Jak skrzypi wózek popychany - Z kalekim demokratą w tle - Lecz nikt nie widzi i nie słyszy - Co robi Góral w krymską noc - Gdy gestem w wiernych towarzyszy - Wpaja swą legendarną moc + Jak kaszle nad cygarem lew + Jak skrzypi wózek popychany + Z kalekim demokratą w tle + Lecz nikt nie widzi i nie słyszy + Co robi Góral w krymską noc + Gdy gestem w wiernych towarzyszy + Wpaja swą legendarną moc - Nie miejcie żalu do Stalina - Nie on się za tym wszystkim krył - Przecież to nie jest jego wina - Że Roosevelt w Jałcie nie miał s - Gdy się triumwirat wspólnie br - Za świata historyczne kształty - Wiadomo kto Cezara gr - I tak rozumieć trzeba Jałtę + Nie miejcie żalu do Stalina + Nie on się za tym wszystkim krył + Przecież to nie jest jego wina + Że Roosevelt w Jałcie nie miał s + Gdy się triumwirat wspólnie br + Za świata historyczne kształty + Wiadomo kto Cezara gr + I tak rozumieć trzeba Jałtę - W resztce cygara mdłym ogniku - Pływała Lwa Albionu twarz - Nie rozmawiajmy o Bałtyku - Po co w Europie tyle państw - Polacy -- chodzi tylko o to - Żeby gdzieś w końcu mogli żyć - Z tą Polską zawsze są kłopoty - Kaleka troszczy się i drży - Lecz uspokaja ich gospodarz - Pożółkły dłonią głaszcząc wąs - Mój kraj pomocną dłoń im poda - Potem niech rządzą się jak chcą + W resztce cygara mdłym ogniku + Pływała Lwa Albionu twarz + Nie rozmawiajmy o Bałtyku + Po co w Europie tyle państw + Polacy -- chodzi tylko o to + Żeby gdzieś w końcu mogli żyć + Z tą Polską zawsze są kłopoty + Kaleka troszczy się i drży + Lecz uspokaja ich gospodarz + Pożółkły dłonią głaszcząc wąs + Mój kraj pomocną dłoń im poda + Potem niech rządzą się jak chcą - Nie miejcie żalu do Churchilla - Nie on wszak za tym wszystkim stał - Wszak tylko po to tylko był tryumwirat - By Stalin dostał to co chciał - Komu zależy na pokoju - Ten zawsze cofnie się przed gwałtem - Wygra, kto się nie boi wojen - I tak rozumieć trzeba Jałtę + Nie miejcie żalu do Churchilla + Nie on wszak za tym wszystkim stał + Wszak tylko po to tylko był tryumwirat + By Stalin dostał to co chciał + Komu zależy na pokoju + Ten zawsze cofnie się przed gwałtem + Wygra, kto się nie boi wojen + I tak rozumieć trzeba Jałtę - Ściana pałacu słuch napina - Gdy do kaleki mówi Lew - Ja wierzę w szczerość słów Stalina - Dba chyba o radziecką krew - I potakuje mu kaleka - Niezłomny demokracji stróż - Stalin to ktoś na miarę wieku - Oto mąż stanu, oto wódz! - Bo sojusz wielkich to nie zmowa - To przyszłość świata, wolność, ład - Przy nim i słaby się uchowa - I swoją część otrzyma strat + Ściana pałacu słuch napina + Gdy do kaleki mówi Lew + Ja wierzę w szczerość słów Stalina + Dba chyba o radziecką krew + I potakuje mu kaleka + Niezłomny demokracji stróż + Stalin to ktoś na miarę wieku + Oto mąż stanu, oto wódz! + Bo sojusz wielkich to nie zmowa + To przyszłość świata, wolność, ład + Przy nim i słaby się uchowa + I swoją część otrzyma strat - Nie miejcie żalu do Roosevelta - Pomyślcie ile musiał znieść - Fajka, dym cygar i butelka - Churchill co miał sojusze gdzieś - Wszakże radziły trzy imperia - Nad granicami co zatarte - W szczegółach zaś już siedział Beria - I tak rozumieć trzeba Jałtę + Nie miejcie żalu do Roosevelta + Pomyślcie ile musiał znieść + Fajka, dym cygar i butelka + Churchill co miał sojusze gdzieś + Wszakże radziły trzy imperia + Nad granicami co zatarte + W szczegółach zaś już siedział Beria + I tak rozumieć trzeba Jałtę - Więc delegacje odleciały - Ucichł na Krymie carski gród - Gdy na zachodzie działa grzmiały - Transporty ludzi szły na wschód - Świat wolny święcił potem tryumf - Opustoszały nagle fronty - W kwiatach już prezydenta grób - A tam transporty i transporty - Czerwony świt się z nocy budzi - Z woli wyborców odszedł Churchill - A tam transporty żywych ludzi - A tam obozy długiej śmierci + Więc delegacje odleciały + Ucichł na Krymie carski gród + Gdy na zachodzie działa grzmiały + Transporty ludzi szły na wschód + Świat wolny święcił potem tryumf + Opustoszały nagle fronty + W kwiatach już prezydenta grób + A tam transporty i transporty + Czerwony świt się z nocy budzi + Z woli wyborców odszedł Churchill + A tam transporty żywych ludzi + A tam obozy długiej śmierci - Nie miejcie więc do Trójcy żalu - Wyrok historii za nią stał - Opracowany w każdym calu - Każdy z nich chronił, co już miał - Mógł mylić się, zwiedziony chwilą - Nie był Polakiem ani Bałtem - Tylko ofiary się nie mylą - I tak rozumieć trzeba Jałtę + Nie miejcie więc do Trójcy żalu + Wyrok historii za nią stał + Opracowany w każdym calu + Każdy z nich chronił, co już miał + Mógł mylić się, zwiedziony chwilą + Nie był Polakiem ani Bałtem + Tylko ofiary się nie mylą + I tak rozumieć trzeba Jałtę diff --git a/songs/Jasnowlosa.xml b/songs/Jasnowlosa.xml index 02de66dd..fadca729 100644 --- a/songs/Jasnowlosa.xml +++ b/songs/Jasnowlosa.xml @@ -3,29 +3,29 @@ Tonam & Synowie - Na tańcach ją poznałem długowłosą blond - Dziewczynę moich marzeń, nie wiadomo, skąd + Na tańcach ją poznałem długowłosą blond + Dziewczynę moich marzeń, nie wiadomo, skąd Ona się tam wzięła piękna niczym kwiat - Czy jak syrena wyszła z morza czy ją przygnał wiatr + Czy jak syrena wyszła z morza czy ją przygnał wiatr - Żegnaj Irlandio, czas w drogę mi j - W porcie gotowa stoi moja łódź - Na wielki ocean przyjdzie mi zaraz wyjść - I pożegnać się z dziewczyną na Lough Sholin + Żegnaj Irlandio, czas w drogę mi j + W porcie gotowa stoi moja łódź + Na wielki ocean przyjdzie mi zaraz wyjść + I pożegnać się z dziewczyną na Lough Sholin - Ująłem ją za rękę delikatną jak - Latem mały motyl albo róży kwiat - Poszedłem z nią na plażę wsłuchać się w szum fal - Pokazałem jasnowłosej wielki morza czar + Ująłem ją za rękę delikatną jak + Latem mały motyl albo róży kwiat + Poszedłem z nią na plażę wsłuchać się w szum fal + Pokazałem jasnowłosej wielki morza czar - Za moment wyruszam w długi, trudny rejs - I z piękną mą dziewczyną przyjdzie rozstać się - Żagle pójdą w górę, wiatr mnie pogna w przód - I przez morza mnie powiedzie, ty zostaniesz tu. + Za moment wyruszam w długi, trudny rejs + I z piękną mą dziewczyną przyjdzie rozstać się + Żagle pójdą w górę, wiatr mnie pogna w przód + I przez morza mnie powiedzie, ty zostaniesz tu. diff --git a/songs/Jaworzyna.xml b/songs/Jaworzyna.xml index c5bc9309..8ee5e0c6 100644 --- a/songs/Jaworzyna.xml +++ b/songs/Jaworzyna.xml @@ -19,10 +19,10 @@ Jaworzyna górom się kłania Spod obłoków szczyt odsłania - Pogoda będzie jutro będzie ładny świt + Pogoda będzie jutro będzie ładny świt Rozchmurzyła się Jaworzyna Już nie płacze śmiać się zaczyna - Pogoda będzie jutro nie będzie smutny nikt + Pogoda będzie jutro nie będzie smutny nikt Noc się ściele na lasach mokrych diff --git a/songs/Jesienna_zaduma_(2).xml b/songs/Jesienna_zaduma_(2).xml index 5e3bbb5a..1584ee18 100644 --- a/songs/Jesienna_zaduma_(2).xml +++ b/songs/Jesienna_zaduma_(2).xml @@ -11,30 +11,30 @@ Nic nie mam Zdmuchnęła mnie ta jesień całkiem - Nawet nie wiem + Nawet nie wiem Jak tam sprawy za lasem - Rano wstaję poemat chwalę - Biorę się za słowo jak za chleb + Rano wstaję poemat chwalę + Biorę się za słowo jak za chleb - Rzeczywiście tak jak księżyc - Ludzie znają mnie tylko z jednej + Rzeczywiście tak jak księżyc + Ludzie znają mnie tylko z jednej Jesiennej strony Nic nie mam Tylko z daszkiem nieba zamyślony kaszkiet - Nie zważam + Nie zważam Na mody byle jakie - Piszę wyłącznie piszę wyłącznie + Piszę wyłącznie piszę wyłącznie Uczuć starym drapakiem - Rzeczywiście tak jak księżyc - Ludzie zn ają mnie tylko z jednej + Rzeczywiście tak jak księżyc + Ludzie zn ają mnie tylko z jednej Jesiennej strony diff --git a/songs/Jesienne_wino.xml b/songs/Jesienne_wino.xml index 1708cbb4..d91c0aca 100644 --- a/songs/Jesienne_wino.xml +++ b/songs/Jesienne_wino.xml @@ -17,20 +17,20 @@ Usiądź razem ze mną - Spróbuj mego wina + Spróbuj mego wina Z czereśni wiśni resztek lata - Choć jesień się zaczyna - Tyle tej jesieni - Jeszcze jest przed nami + Choć jesień się zaczyna + Tyle tej jesieni + Jeszcze jest przed nami Zdążysz wrócić do domu - Nim noc zawita nad drogami, hej! + Nim noc zawita nad drogami, hej! Słońce stało w zenicie, bił południowy żar A w gardle kurz przebytych dróg Co tam spocznę chwilę przecież nie zaszkodzi - Do przejścia niedaleką jeszcze drogę mam - A ona kusi + Do przejścia niedaleką jeszcze drogę mam + A ona kusi @@ -38,18 +38,18 @@ Pod starą karczmą co rynek zamyka Zabrała moje srebro duszę i ostrogi Zostało pragnienie i tępy głowy ból - I pamięć jej słów + I pamięć jej słów Usiądź razem ze mną - Spróbuj mego wina + Spróbuj mego wina Z czereśni wiśni resztek lata - Choć jesień się zaczyna - Tyle tej jesieni - Jeszcze jest przed nami + Choć jesień się zaczyna + Tyle tej jesieni + Jeszcze jest przed nami Zdążysz wrócić do domu - Nim noc zawita nad drogami, hej! + Nim noc zawita nad drogami, hej! diff --git a/songs/Jesienny_obrazek.xml b/songs/Jesienny_obrazek.xml index 2c2d6582..26f53f5a 100644 --- a/songs/Jesienny_obrazek.xml +++ b/songs/Jesienny_obrazek.xml @@ -9,16 +9,16 @@ - Klucz ptaków na niebie wygląda wspaniale - Choć chmury zwiastują deszczową pogodę - Wiatr liście pozrywał i rzucił na trawę - A niebo jest dziwnie różowe + Klucz ptaków na niebie wygląda wspaniale + Choć chmury zwiastują deszczową pogodę + Wiatr liście pozrywał i rzucił na trawę + A niebo jest dziwnie różowe - Jesienny obrazek malują małe ręce + Jesienny obrazek malują małe ręce Las i ptaki i nic więcej - Jesienny obrazek malują małe ręce + Jesienny obrazek malują małe ręce Las i ptaki i nic więcej @@ -27,10 +27,10 @@ - W tym małym obrazku zmieściło się wszystko - Co jesień ze sobą przyniosła na pola - I słońce i deszcz i namiot niebieski - Rozbity pod starą topolą + W tym małym obrazku zmieściło się wszystko + Co jesień ze sobą przyniosła na pola + I słońce i deszcz i namiot niebieski + Rozbity pod starą topolą @@ -38,10 +38,10 @@ - Deszcz chyba już pada, lecz słońce wciąż świeci - Zaraz powinna pojawić się tęcza - To cały obrazek spod dziecinnej ręki - I cała to o nim piosenka + Deszcz chyba już pada, lecz słońce wciąż świeci + Zaraz powinna pojawić się tęcza + To cały obrazek spod dziecinnej ręki + I cała to o nim piosenka diff --git a/songs/Jest_juz_za_pozno,_nie_jest_za_pozno.xml b/songs/Jest_juz_za_pozno,_nie_jest_za_pozno.xml index 5d480939..bb3ec29b 100644 --- a/songs/Jest_juz_za_pozno,_nie_jest_za_pozno.xml +++ b/songs/Jest_juz_za_pozno,_nie_jest_za_pozno.xml @@ -9,7 +9,7 @@ - Jeszcze zdążymy w dżungli ludzkości siebie odnaleźć + Jeszcze zdążymy w dżungli ludzkości siebie odnaleźć Tęskność zawrotna przybliża nas diff --git a/songs/Jest_taki_samotny_dom.xml b/songs/Jest_taki_samotny_dom.xml index bdb0f07a..f2255a36 100644 --- a/songs/Jest_taki_samotny_dom.xml +++ b/songs/Jest_taki_samotny_dom.xml @@ -9,47 +9,47 @@ - Uderzył deszcz, wybuchła noc, przy drodze pusty dwór - W katedrach drzew, w przyłbicach gór wagnerowski ton + Uderzył deszcz, wybuchła noc, przy drodze pusty dwór + W katedrach drzew, w przyłbicach gór wagnerowski ton - Za witraża dziwnym szkłem pustych komnat chłód - W szary pył rozbity czas, martwy, pusty dwór + Za witraża dziwnym szkłem pustych komnat chłód + W szary pył rozbity czas, martwy, pusty dwór - Dorzucam drew, bo ogień zgasł, ciągle burza trwa - Nagle feeria barw i mnóstwo świec, ktoś na skrzypcach gra + Dorzucam drew, bo ogień zgasł, ciągle burza trwa + Nagle feeria barw i mnóstwo świec, ktoś na skrzypcach gra - Gotyckie odrzwia chylą się i skrzypiąc suną w bok - I biała pani płynie z nich, w brylantowej mgle + Gotyckie odrzwia chylą się i skrzypiąc suną w bok + I biała pani płynie z nich, w brylantowej mgle - Zawirował z nami dwór, rudych włosów płomień - Nad górami lecę, lecę z nią, różę trzyma w dłoni + Zawirował z nami dwór, rudych włosów płomień + Nad górami lecę, lecę z nią, różę trzyma w dłoni - (A po nocy przychodzi dzień, a po burzy spokój - Nagle ptaki budzą mnie, tłukąc się do okien) + (A po nocy przychodzi dzień, a po burzy spokój + Nagle ptaki budzą mnie, tłukąc się do okien) - (A po nocy przychodzi dzień, a po burzy spokój) - Znowu szary, pusty dom, gdzie schroniłem się - (Nagle ptaki budzą mnie, tłukąc się do okien) - I najmilsza z wszystkich, wszystkich mi, na witraża szkle + (A po nocy przychodzi dzień, a po burzy spokój) + Znowu szary, pusty dom, gdzie schroniłem się + (Nagle ptaki budzą mnie, tłukąc się do okien) + I najmilsza z wszystkich, wszystkich mi, na witraża szkle - (A po nocy przychodzi dzień, a po burzy spokój) - Znowu w drogę, w drogę trzeba iść, w życie się zanurzyć - (Nagle ptaki budzą mnie, tłukąc się do okien) - Chociaż w ręce jeszcze tkwi lekko zwiędła róża + (A po nocy przychodzi dzień, a po burzy spokój) + Znowu w drogę, w drogę trzeba iść, w życie się zanurzyć + (Nagle ptaki budzą mnie, tłukąc się do okien) + Chociaż w ręce jeszcze tkwi lekko zwiędła róża - (A po nocy przychodzi dzień, a po burzy spokój) - Lecz po nocy przychodzi dzień, a po burzy spokój - (Nagle ptaki budzą mnie, tłukąc się do okien) - Nagle ptaki budzą mnie, tłukąc się do okien + (A po nocy przychodzi dzień, a po burzy spokój) + Lecz po nocy przychodzi dzień, a po burzy spokój + (Nagle ptaki budzą mnie, tłukąc się do okien) + Nagle ptaki budzą mnie, tłukąc się do okien diff --git a/songs/Jeszcze_nie_czas.xml b/songs/Jeszcze_nie_czas.xml index 482da628..f35b007f 100644 --- a/songs/Jeszcze_nie_czas.xml +++ b/songs/Jeszcze_nie_czas.xml @@ -3,37 +3,37 @@ - Wieczór w granatowym swym płaszczu - Gwiazdy już pozapalał - Z kątów wyłażą zrudziałe smutki - A my gramy na swych gitarach - I ciche nutki zbieramy - By grały nam razem do taktu - Niebieskie myśli odganiamy - Bo przecież jeszcze nie czas + Wieczór w granatowym swym płaszczu + Gwiazdy już pozapalał + Z kątów wyłażą zrudziałe smutki + A my gramy na swych gitarach + I ciche nutki zbieramy + By grały nam razem do taktu + Niebieskie myśli odganiamy + Bo przecież jeszcze nie czas - Jeszcze nie czas swe marzenia do walizek kłaść - Jeszcze nie czas, by piosenki nasze śpiewał tylko wiatr - Jeszcze nie czas, by gitary spały na dnie szaf - Póki tyle jest muzyki jeszcze w nas + Jeszcze nie czas swe marzenia do walizek kłaść + Jeszcze nie czas, by piosenki nasze śpiewał tylko wiatr + Jeszcze nie czas, by gitary spały na dnie szaf + Póki tyle jest muzyki jeszcze w nas - A kiedy zabraknie przyjaciół - By wieczór przegadać do rana - To przecież masz jeszcze swoją gitarę - Strun kilka, melodii parę - Gdy piasek nie chce się wsypać - Pod oczy i do snu zaprosić - To trzeba gdzieś odejść, by dłużej nie płakać - I smutku w swym sercu nie nosić + A kiedy zabraknie przyjaciół + By wieczór przegadać do rana + To przecież masz jeszcze swoją gitarę + Strun kilka, melodii parę + Gdy piasek nie chce się wsypać + Pod oczy i do snu zaprosić + To trzeba gdzieś odejść, by dłużej nie płakać + I smutku w swym sercu nie nosić - Gdy włożą cię w dębową skrzynkę - Niech włożą razem z gitarą - Niech w niebie ci grają struny srebrzyste - Melodię twą ukochaną + Gdy włożą cię w dębową skrzynkę + Niech włożą razem z gitarą + Niech w niebie ci grają struny srebrzyste + Melodię twą ukochaną diff --git a/songs/Kaganek.xml b/songs/Kaganek.xml index 298d7fbf..a8073cdd 100644 --- a/songs/Kaganek.xml +++ b/songs/Kaganek.xml @@ -13,21 +13,21 @@ Płomień chwieje się, tańczy i drga. By wskazywać drogę zbłąkanym, W oknie twoim się pali do dnia, - Do dnia, do dnia... + Do dnia, do dnia... Każdy z nas szuka gdzieś swego światła By mu drogę wskazało przez mrok Każdy z nas wierzy w mały kaganek By móc prędzej w tę noc zrobić krok - Zrobić krok, zrobić krok... + Zrobić krok, zrobić krok... Może kiedy i ty stąd wyruszysz Przyjdzie nocą wędrować przez trakt Jakoś raźniej ci będzie na duszy Gdy światełko zobaczysz wśród chat - Wśród chat, wśród chat... + Wśród chat, wśród chat... diff --git a/songs/Kantyczka_z_lotu_ptaka.xml b/songs/Kantyczka_z_lotu_ptaka.xml index f578da96..89dfe272 100644 --- a/songs/Kantyczka_z_lotu_ptaka.xml +++ b/songs/Kantyczka_z_lotu_ptaka.xml @@ -9,74 +9,74 @@ - — Patrz, mój dobrotliwy Boże, - Na swój ulubiony ludek, - Jak wychodzi rano w zboże - Zginać harde karki z trudem. - Patrz jak schyla się nad pracą, - Jak pokornie klęski znosi - I nie pyta – Po co? Za co? - Czasem o coś Cię poprosi + — Patrz, mój dobrotliwy Boże, + Na swój ulubiony ludek, + Jak wychodzi rano w zboże + Zginać harde karki z trudem. + Patrz jak schyla się nad pracą, + Jak pokornie klęski znosi + I nie pyta – Po co? Za co? + Czasem o coś Cię poprosi - — Ujmij trochę łaski nieba! - Daj spokoju w zamian chleba! - Innym udziel swej miłości! - Nam – sprawiedliwości! + — Ujmij trochę łaski nieba! + Daj spokoju w zamian chleba! + Innym udziel swej miłości! + Nam – sprawiedliwości! - — Smuć się, Chryste Panie, w chmurze - Widząc, jak się naród bawi, - Znowu chciałby być przedmurzem - I w pogańskiej krwi się pławić. - Dymią kuźnie i warsztaty, - Lecz nie pracą a – skargami, - Że nie taka jak przed laty - Łaska Twoja nad hufcami: + — Smuć się, Chryste Panie, w chmurze + Widząc, jak się naród bawi, + Znowu chciałby być przedmurzem + I w pogańskiej krwi się pławić. + Dymią kuźnie i warsztaty, + Lecz nie pracą a – skargami, + Że nie taka jak przed laty + Łaska Twoja nad hufcami: - — Siły grożą Ci nieczyste - Daj nam wsławić się, o Chryste! - Kalwin, Litwin nam ubliża! - Dźwigniem ciężar Krzyża! + — Siły grożą Ci nieczyste + Daj nam wsławić się, o Chryste! + Kalwin, Litwin nam ubliża! + Dźwigniem ciężar Krzyża! - — Załam ręce, Matko Boska; - Upadają obyczaje, - Nie pomogła modłom chłosta – - Młodzież w szranki ciała staje. - W nędzy gzi się krew gorąca - Bez sumienia, bez oddechu, - Po czym z własnych trzewi strząsa - Niedojrzały owoc grzechu. + — Załam ręce, Matko Boska; + Upadają obyczaje, + Nie pomogła modłom chłosta – + Młodzież w szranki ciała staje. + W nędzy gzi się krew gorąca + Bez sumienia, bez oddechu, + Po czym z własnych trzewi strząsa + Niedojrzały owoc grzechu. - — Co zbawienie nam, czy piekło! - Byle życie nie uciekło! - Jeszcze będzie czas umierać! - Żyjmy tu i teraz! + — Co zbawienie nam, czy piekło! + Byle życie nie uciekło! + Jeszcze będzie czas umierać! + Żyjmy tu i teraz! - — Grzmijcie gniewem Wszyscy Święci! - Handel lud zalewa boży, - Obce kupce i klienci - W złote wabią go obroże. - Liczy chciwy Żyd i Niemiec - Dziś po ile polska czystość; - Kupi dusze, kupi ziemie - I zostawi pośmiewisko... + — Grzmijcie gniewem Wszyscy Święci! + Handel lud zalewa boży, + Obce kupce i klienci + W złote wabią go obroże. + Liczy chciwy Żyd i Niemiec + Dziś po ile polska czystość; + Kupi dusze, kupi ziemie + I zostawi pośmiewisko... - — Co nam hańba, gdy talary - Mają lepszy kurs od wiary! - Wymienimy na walutę - Honor i pokutę! + — Co nam hańba, gdy talary + Mają lepszy kurs od wiary! + Wymienimy na walutę + Honor i pokutę! - — Jeden naród, tyle kwestii! - Wszystkich naraz – nie wysłuchasz! – - Zadumali się Niebiescy - W imię Ojca, Syna, Ducha... + — Jeden naród, tyle kwestii! + Wszystkich naraz – nie wysłuchasz! – + Zadumali się Niebiescy + W imię Ojca, Syna, Ducha... diff --git a/songs/Karol_Levittoux_(4).xml b/songs/Karol_Levittoux_(4).xml index 6f00a17e..e27c9324 100644 --- a/songs/Karol_Levittoux_(4).xml +++ b/songs/Karol_Levittoux_(4).xml @@ -9,82 +9,82 @@ - Zbrodniczy spisek w gimnazjalnej klasie - Zagraża państwu w jego spokój godzi + Zbrodniczy spisek w gimnazjalnej klasie + Zagraża państwu w jego spokój godzi Inspiratorów wkrótce wykryć da się - Wciąż niepoprawni Polaczkowie młodzi - Ten Levittoux był hersztem jak się zdaje - Przez niego w duszę sączy się trucizna - Śledztwo prowadźcie zgodnie ze zwyczajem - W mig się przyzna prędko się przyzna + Wciąż niepoprawni Polaczkowie młodzi + Ten Levittoux był hersztem jak się zdaje + Przez niego w duszę sączy się trucizna + Śledztwo prowadźcie zgodnie ze zwyczajem + W mig się przyzna prędko się przyzna - Drogi panie Levittoux - Prawdę wyznać chciej - Gdy wspólników podasz tu - Sercu będzie lżej - Milczysz panie Levittoux - Nie unikniesz kar - Młodzież wiodłeś ty ku złu - Smuci się nasz car + Drogi panie Levittoux + Prawdę wyznać chciej + Gdy wspólników podasz tu + Sercu będzie lżej + Milczysz panie Levittoux + Nie unikniesz kar + Młodzież wiodłeś ty ku złu + Smuci się nasz car - Mury kazamat dostatecznie grube - Żeby krzyk każdy wytłumić dokładnie - ogosławiony kto przejdzie tę próbę - A kto się złamie przekleństwo nań spadnie - Logika dziejów nakłada kajdany - Sprawiedliwości zgrzytają zasuwy - I ciągle jedna myśl tłucze o ściany - Nic nie mówić, nie mówić, nie mówić + Mury kazamat dostatecznie grube + Żeby krzyk każdy wytłumić dokładnie + ogosławiony kto przejdzie tę próbę + A kto się złamie przekleństwo nań spadnie + Logika dziejów nakłada kajdany + Sprawiedliwości zgrzytają zasuwy + I ciągle jedna myśl tłucze o ściany + Nic nie mówić, nie mówić, nie mówić - Wszakże panie Levittoux - Nie działałeś sam - Gdy cię pozbawimy snu - Wszystko powiesz nam - Miejże rozum Levittoux - Próżny jest twój trud - Żadnej strawy nie dać mu - By go złamał głód + Wszakże panie Levittoux + Nie działałeś sam + Gdy cię pozbawimy snu + Wszystko powiesz nam + Miejże rozum Levittoux + Próżny jest twój trud + Żadnej strawy nie dać mu + By go złamał głód - Na przesłuchaniu wziął czterysta pałek - Konieczny był tu bezpośredni przymus - Śledztwo da skutek jeśli jest wytrwałe - Bez końca przecież nie może się trzymać - Zwinięty w szmatę leży sztandar ciała - Szarpie go w strzępy ptaszysko dwugłowe - Krwią pokreślona pleców karta biała - Na niej napis nie powiem, nie powiem + Na przesłuchaniu wziął czterysta pałek + Konieczny był tu bezpośredni przymus + Śledztwo da skutek jeśli jest wytrwałe + Bez końca przecież nie może się trzymać + Zwinięty w szmatę leży sztandar ciała + Szarpie go w strzępy ptaszysko dwugłowe + Krwią pokreślona pleców karta biała + Na niej napis nie powiem, nie powiem - W końcu z ciebie Levittoux - Tryśnie zeznań zdrój - Zaznasz knuta dzień po dniu - Pęknie upór twój - Chciałeś uciec Levittoux - Coś ci słabo szło - Krzycz do ostatniego tchu - Nas nie wzruszy to + W końcu z ciebie Levittoux + Tryśnie zeznań zdrój + Zaznasz knuta dzień po dniu + Pęknie upór twój + Chciałeś uciec Levittoux + Coś ci słabo szło + Krzycz do ostatniego tchu + Nas nie wzruszy to - Ponad siennikiem migoce kaganek - Mniej boli ogień niźli ran płomienie - Dziś sobie takie rozścielę posłanie - Co moją celę w jeden krzyk zamieni - Skąpo tu światła Moskale mi dali + Ponad siennikiem migoce kaganek + Mniej boli ogień niźli ran płomienie + Dziś sobie takie rozścielę posłanie + Co moją celę w jeden krzyk zamieni + Skąpo tu światła Moskale mi dali Ale wystarczy żeby spłonął człowiek - Patrzcie jak długo ten więzień się pali - Co już nic nie powie, nie powie + Patrzcie jak długo ten więzień się pali + Co już nic nie powie, nie powie - Zwęglone resztki wyniesiono rano - Ból szybko wsiąka w kamień cytadeli - Po incydencie tym rozkaz wydano - By więźniom światła nie dawać do celi + Zwęglone resztki wyniesiono rano + Ból szybko wsiąka w kamień cytadeli + Po incydencie tym rozkaz wydano + By więźniom światła nie dawać do celi diff --git a/songs/Kiedy_w_piatek.xml b/songs/Kiedy_w_piatek.xml index 80c97aac..fdf9a835 100644 --- a/songs/Kiedy_w_piatek.xml +++ b/songs/Kiedy_w_piatek.xml @@ -3,7 +3,7 @@ Strąkowski - Kiedy w piątek słońce świeci + Kiedy w piątek słońce świeci Serce mi do góry wzlata Że w sobotę wezmę plecak W podróż do mojego świata. diff --git a/songs/Kim_wlasciwie_bylas.xml b/songs/Kim_wlasciwie_bylas.xml index 65a8fc1e..35430583 100644 --- a/songs/Kim_wlasciwie_bylas.xml +++ b/songs/Kim_wlasciwie_bylas.xml @@ -16,42 +16,42 @@ Nikt nie zna ścieżek gwiazd - Wybrańcem kto wśród nas - Zapukał ktoś to do mnie gość + Wybrańcem kto wśród nas + Zapukał ktoś to do mnie gość Włóczyłem się jak ci - Czekałem na ten dzi - Już stoisz w drzwiach jak dziwny ptak + Czekałem na ten dzi + Już stoisz w drzwiach jak dziwny ptak - Więc bardzo proszę wejdź - Tu siadaj rozgość się - I zdradź mi kim tyś jest madame - Albo nie zdradzaj mi - Lepiej nie mówmy nic - Lepiej nie mówmy nic + Więc bardzo proszę wejdź + Tu siadaj rozgość się + I zdradź mi kim tyś jest madame + Albo nie zdradzaj mi + Lepiej nie mówmy nic + Lepiej nie mówmy nic Nieśmiało sunie brzask - Zatrzymać chciałbym czas - Inaczej jest czas musi biec + Zatrzymać chciałbym czas + Inaczej jest czas musi biec Gdzieś w dali zapiał kur - Niemodny wdziewasz strój - Już stoisz w drzwiach jak dziwny ptak + Niemodny wdziewasz strój + Już stoisz w drzwiach jak dziwny ptak - Więc jednak musisz pójść - Posyłasz mi przez próg - Ulotny uśmiech swój madame - Lecz będę czekać przyjdź - Gdy tylko zechcesz przyjdź - Będziemy razem ż + Więc jednak musisz pójść + Posyłasz mi przez próg + Ulotny uśmiech swój madame + Lecz będę czekać przyjdź + Gdy tylko zechcesz przyjdź + Będziemy razem ż - Ja będę czekać przyjdź - Gdy tylko zechcesz przyjdź - Będziemy razem ż + Ja będę czekać przyjdź + Gdy tylko zechcesz przyjdź + Będziemy razem ż diff --git a/songs/Klasowka_z_fragmentu_wolnosci.xml b/songs/Klasowka_z_fragmentu_wolnosci.xml index 1a7d0026..4fba9c6c 100644 --- a/songs/Klasowka_z_fragmentu_wolnosci.xml +++ b/songs/Klasowka_z_fragmentu_wolnosci.xml @@ -3,56 +3,56 @@ Krzysztof Daukszewicz - Nie pomni dziś filozof pan - Historyk i teolog - Kto pierwszy krzyknął - Wolność dam! - Czy tyran, czy też prorok? - I co na myśli człek ów miał - Też nikt z nas nie pamięta - Czy łańcuch, co dwie ręce skuł - Czy rozerwane pęta? + Nie pomni dziś filozof pan + Historyk i teolog + Kto pierwszy krzyknął - Wolność dam! + Czy tyran, czy też prorok? + I co na myśli człek ów miał + Też nikt z nas nie pamięta + Czy łańcuch, co dwie ręce skuł + Czy rozerwane pęta? - Lecz: Wolność! Wolny! - Jak pięknie się odmienia - Wolność! Wolny! - Przez wieki bez wytchnienia - Wolność! Wolny! - I nikt jej nie rozbudził - Bo wolność, ludzie - To tylko lep na ludzi + Lecz: Wolność! Wolny! + Jak pięknie się odmienia + Wolność! Wolny! + Przez wieki bez wytchnienia + Wolność! Wolny! + I nikt jej nie rozbudził + Bo wolność, ludzie + To tylko lep na ludzi - Bo ten, co wisiał w cieniu drzew - Przed śmiercią się pocieszał - Że to za wolność, chociaż też - Tak myślał ten, co wieszał - A ten, co wydał rozkaz: śmierć - Szampanem się uraczył - Bo wyrok brzmiał: za wolność! - Więc pan sędzia mu wybaczył + Bo ten, co wisiał w cieniu drzew + Przed śmiercią się pocieszał + Że to za wolność, chociaż też + Tak myślał ten, co wieszał + A ten, co wydał rozkaz: śmierć + Szampanem się uraczył + Bo wyrok brzmiał: za wolność! + Więc pan sędzia mu wybaczył - I trwa to już tysiące lat - I nic się tu nie zmienia - Krzyczymy przede wszystkim tak - By spały nam sumienia - Choć każdy wiek przykłady dał - Te przypłacone głową - By wierzyć, że ta wolność - To nie tylko piękne słowo + I trwa to już tysiące lat + I nic się tu nie zmienia + Krzyczymy przede wszystkim tak + By spały nam sumienia + Choć każdy wiek przykłady dał + Te przypłacone głową + By wierzyć, że ta wolność + To nie tylko piękne słowo - Więc leją się przez cały czas - Krwi purpurowe strugi - Bo zawsze jednym bywa śmierć - By wolność była drugim - I zawsze jakiś człowiek jest - Co w czasach niespokojnych - Zarzuca sobie pętlę, bo - Naprawdę chce być wolnym + Więc leją się przez cały czas + Krwi purpurowe strugi + Bo zawsze jednym bywa śmierć + By wolność była drugim + I zawsze jakiś człowiek jest + Co w czasach niespokojnych + Zarzuca sobie pętlę, bo + Naprawdę chce być wolnym diff --git a/songs/Kochaj_mnie_i_dotykaj.xml b/songs/Kochaj_mnie_i_dotykaj.xml index ffb8eba6..0268c7ec 100644 --- a/songs/Kochaj_mnie_i_dotykaj.xml +++ b/songs/Kochaj_mnie_i_dotykaj.xml @@ -8,57 +8,57 @@ Dawnych mistyków ludzkiej duszy pieśń - Księżyca ciemna strona + Księżyca ciemna strona Słońce zabija na raty nas - W nadfiolecie + W nadfiolecie Schodami do nieba zacząłem się piąć - Tam nie ma autostrady + Tam nie ma autostrady Myślę o Tobie, a ptakiem jest myśl - Zbytek słów - Me światy są obce bez nocy i dnia - Tam wiersze z obłędu powstają + Zbytek słów + Me światy są obce bez nocy i dnia + Tam wiersze z obłędu powstają Lecz póki tu jestem, proszę, kochaj mnie, - Dotykaj mnie... + Dotykaj mnie... - Dotykaj delikatnie, bezszelestnie, ciepłem palców - Dotykaj, aksamitnie, rzęs pokłonem, nie przestawaj - Dotykaj, całowaniem i oddechem, tak jak lubisz - Dotykaj, smugą włosów, niby muślin, bólowi zadaj ból + Dotykaj delikatnie, bezszelestnie, ciepłem palców + Dotykaj, aksamitnie, rzęs pokłonem, nie przestawaj + Dotykaj, całowaniem i oddechem, tak jak lubisz + Dotykaj, smugą włosów, niby muślin, bólowi zadaj ból Kochaniem samotność można wypić do dna - Choć to trudne + Choć to trudne Miłość prawdziwą daje tylko Bóg - I zrozumienie + I zrozumienie Wszędzie Go szukam, dla niego chcę ż - Wbrew potępieniom + Wbrew potępieniom Tęsknię za ciszą bezludnych wysp, - Dzikich pl - Me światy są obce bez nocy i dnia - Tam wiersze z obłędu powstają + Dzikich pl + Me światy są obce bez nocy i dnia + Tam wiersze z obłędu powstają Lecz póki tu jestem, proszę, kochaj mnie, - Dotykaj mnie... + Dotykaj mnie... - Wiem, że chcesz wspólnych snów - Dam ci je, nie bój się, nie bój s + Wiem, że chcesz wspólnych snów + Dam ci je, nie bój się, nie bój s Dziwne jest piękne, wciąż twierdzę tak - Gorsząc dewotów + Gorsząc dewotów Na urodziny sam sobie dziś dam - Znak pokoju + Znak pokoju Kochaniem samotność można wypić do dna - Choć to trudne + Choć to trudne Więcej nic nie mów, tylko przytul się - Dotykaj mnie... + Dotykaj mnie... I więcej nic nie mów, tylko kochaj mnie - Jestem Twój... + Jestem Twój... diff --git a/songs/KochamWolnosc.xml b/songs/KochamWolnosc.xml index ca5d2eee..27071444 100644 --- a/songs/KochamWolnosc.xml +++ b/songs/KochamWolnosc.xml @@ -9,24 +9,24 @@ - Tak niewiele żądam - Tak niewiele pragnę - Tak niewiele widziałem - Tak niewiele zobaczę - Tak niewiele myślę - Tak niewiele znaczę - Tak niewiele słyszałem - Tak niewiele potrafię + Tak niewiele żądam + Tak niewiele pragnę + Tak niewiele widziałem + Tak niewiele zobaczę + Tak niewiele myślę + Tak niewiele znaczę + Tak niewiele słyszałem + Tak niewiele potrafię - Wolność, kocham i rozumiem - Wolności oddać nie umiem + Wolność, kocham i rozumiem + Wolności oddać nie umiem - Tak niewiele miałem - Tak niewiele mam - Mogę stracić wszystko - Mogę zostać sam + Tak niewiele miałem + Tak niewiele mam + Mogę stracić wszystko + Mogę zostać sam diff --git a/songs/Kolysanka_dla_Joanny_I.xml b/songs/Kolysanka_dla_Joanny_I.xml index b55da363..51261266 100644 --- a/songs/Kolysanka_dla_Joanny_I.xml +++ b/songs/Kolysanka_dla_Joanny_I.xml @@ -3,29 +3,29 @@ Wolna Grupa Bukowina - Zanim mi sen na oczy spłynie - Moje myśli szybują przez lufcik - Żeby cię ujrzeć w ową chwilę - Gdy włosy czeszesz przed lustrem + Zanim mi sen na oczy spłynie + Moje myśli szybują przez lufcik + Żeby cię ujrzeć w ową chwilę + Gdy włosy czeszesz przed lustrem - A kiedy zaśniesz w ciepłej pościeli - Zmęczone długim przelotem - Jak ptaki głowy w skrzydła wtulają - Patrząc na sen twój spokojny + A kiedy zaśniesz w ciepłej pościeli + Zmęczone długim przelotem + Jak ptaki głowy w skrzydła wtulają + Patrząc na sen twój spokojny - Niech ci się przyśnią pory roku - Niech grają we śnie twoim i tańczą - Jesień prężąca liście do lotu - Lato w upale słonecznym + Niech ci się przyśnią pory roku + Niech grają we śnie twoim i tańczą + Jesień prężąca liście do lotu + Lato w upale słonecznym - A jeśli zima, to w śniegu cała - Wiosna w miłków wiosennych łąkach + A jeśli zima, to w śniegu cała + Wiosna w miłków wiosennych łąkach - Śpij, moje myśli nad tobą czuwają - Na parapecie za oknem + Śpij, moje myśli nad tobą czuwają + Na parapecie za oknem diff --git a/songs/Kolysanka_dla_misiakow.xml b/songs/Kolysanka_dla_misiakow.xml index e317a7ec..d01e4dcf 100644 --- a/songs/Kolysanka_dla_misiakow.xml +++ b/songs/Kolysanka_dla_misiakow.xml @@ -4,33 +4,33 @@ W tym pokoju bardzo cicho dziś - Po trzech dniach nareszcie śpisz - Gdzieś za drzwiami został ból + Po trzech dniach nareszcie śpisz + Gdzieś za drzwiami został ból Całych siebie chcemy dać - Kilku ludzi dobrze nas zna - Tylko czasem słabnie nam puls + Kilku ludzi dobrze nas zna + Tylko czasem słabnie nam puls - Już dobrze, dobrze j + Już dobrze, dobrze j - Może trzeba upaść na twarz - Swoje rzeczy ubogiemu dać - I zacząć malować bez farb - Przeklinamy dzień za dniem - Śpisz, bo życie nie jest snem - Taki ciężar tylko zgina ci kark + Może trzeba upaść na twarz + Swoje rzeczy ubogiemu dać + I zacząć malować bez farb + Przeklinamy dzień za dniem + Śpisz, bo życie nie jest snem + Taki ciężar tylko zgina ci kark - W kącie siedzi Anioł Stróż - Strzeże naszych ciał i dusz - Za godzinę muszę wyjść - Przyjdź po bliskość moich ust - Chcę Ci dać trochę wiary w cud - Póki możesz moje wino pij + W kącie siedzi Anioł Stróż + Strzeże naszych ciał i dusz + Za godzinę muszę wyjść + Przyjdź po bliskość moich ust + Chcę Ci dać trochę wiary w cud + Póki możesz moje wino pij diff --git a/songs/Koncert_(4).xml b/songs/Koncert_(4).xml index 50ab783d..fd4c386d 100644 --- a/songs/Koncert_(4).xml +++ b/songs/Koncert_(4).xml @@ -14,31 +14,31 @@ W kołnierz wtulam twarz Chowam się przed miastem - Jego cienie żłobią w mojej twarzy wąwóz - Trzeszczy jak ułamek szkła - Mój codzienny niepokój - Jak wydostać się z cienia - Może wtedy + Jego cienie żłobią w mojej twarzy wąwóz + Trzeszczy jak ułamek szkła + Mój codzienny niepokój + Jak wydostać się z cienia + Może wtedy - Gdyby koncert grać - Ten na trąbki i skrzypce - Tak by dźwięki ułożyły się w wiersz - Gdyby łyżką światła - Rozweselić to wszystko - Żeby we mnie zaśpiewało coś t - Żeby we mnie zaśpiewało coś t + Gdyby koncert grać + Ten na trąbki i skrzypce + Tak by dźwięki ułożyły się w wiersz + Gdyby łyżką światła + Rozweselić to wszystko + Żeby we mnie zaśpiewało coś t + Żeby we mnie zaśpiewało coś t - Rośnie we mnie mgła - Jak ze studzien stu - Nie wiem ilu trzeba ksiąg, by ją rozwi - Jedno wiem, że muszę biec - Póki sił mi wystarczy - Póki tylko ta nuta - Mam ją w sobie + Rośnie we mnie mgła + Jak ze studzien stu + Nie wiem ilu trzeba ksiąg, by ją rozwi + Jedno wiem, że muszę biec + Póki sił mi wystarczy + Póki tylko ta nuta + Mam ją w sobie diff --git a/songs/Koniec.xml b/songs/Koniec.xml index 50df7047..09295353 100644 --- a/songs/Koniec.xml +++ b/songs/Koniec.xml @@ -9,40 +9,40 @@ - Już ostatni płomień zgasł - Trzeba odejść kryjąc twarz - Przez życzliwie uchylone drzwi + Już ostatni płomień zgasł + Trzeba odejść kryjąc twarz + Przez życzliwie uchylone drzwi - Ktoś powiedział nazbyt wiele - Ktoś się poczuł przyjacielem - I z dnia na dzień nie zostało nic + Ktoś powiedział nazbyt wiele + Ktoś się poczuł przyjacielem + I z dnia na dzień nie zostało nic - Ktoś powiedział nazbyt wiele - Ktoś się poczuł przyjacielem - I z dnia na dzień nie zostało nic + Ktoś powiedział nazbyt wiele + Ktoś się poczuł przyjacielem + I z dnia na dzień nie zostało nic - Jutro wstanie nowy dzień po staremu - Dzwoni mleczarz butelkami daje zn - I na pewno nic na zewnątrz się nie zmieni - Trzeba sobie tylko jakoś z sobą samym radę d + Jutro wstanie nowy dzień po staremu + Dzwoni mleczarz butelkami daje zn + I na pewno nic na zewnątrz się nie zmieni + Trzeba sobie tylko jakoś z sobą samym radę d - Już ostatni płomień zgasł - To już koniec na mnie czas - Drugi brzeg w oddali dawno znikł + Już ostatni płomień zgasł + To już koniec na mnie czas + Drugi brzeg w oddali dawno znikł - Tyle serca kosztowało - Jak wyjść teraz z tego cało - Gdy z dnia na dzień nie zostało nic + Tyle serca kosztowało + Jak wyjść teraz z tego cało + Gdy z dnia na dzień nie zostało nic - Tyle serca kosztowało - Jak wyjść teraz z tego cało - Gdy z dnia na dzień nie zostało nic + Tyle serca kosztowało + Jak wyjść teraz z tego cało + Gdy z dnia na dzień nie zostało nic diff --git a/songs/Korowod.xml b/songs/Korowod.xml index 1dee2e6c..f3f4ae8d 100644 --- a/songs/Korowod.xml +++ b/songs/Korowod.xml @@ -9,54 +9,54 @@ - Kto pierwszy szedł przed siebie - Kto pierwszy cel wyznaczył - Kto pierwszy w nas rozpoznał - Kto wrogów kto przyjaciół - Kto pierwszy sławę wszelką - I włości swe miał za nic - A kto nie umiał zasnąć - Nim nie wymyślił granic? + Kto pierwszy szedł przed siebie + Kto pierwszy cel wyznaczył + Kto pierwszy w nas rozpoznał + Kto wrogów kto przyjaciół + Kto pierwszy sławę wszelką + I włości swe miał za nic + A kto nie umiał zasnąć + Nim nie wymyślił granic? - Kto pierwszy w noc bezsenną - Wymyślił wielką armię - Kto został bohaterem - Kto żył i umarł marnie - Kto pierwszy został panem - Kto pierwszy został sługą - Kto musiał wstawać wcześnie - A kto mógł spać za długo? + Kto pierwszy w noc bezsenną + Wymyślił wielką armię + Kto został bohaterem + Kto żył i umarł marnie + Kto pierwszy został panem + Kto pierwszy został sługą + Kto musiał wstawać wcześnie + A kto mógł spać za długo? - Zapatrzeni w słońce - Zapatrzeni w niebo - Zapatrzeni w tańcu - Zapatrzeni w siebie - Wciąż niepewni siebie - Siebie niewiadomi - Pytać wciąż będziemy - Pytać po kryjomu + Zapatrzeni w słońce + Zapatrzeni w niebo + Zapatrzeni w tańcu + Zapatrzeni w siebie + Wciąż niepewni siebie + Siebie niewiadomi + Pytać wciąż będziemy + Pytać po kryjomu - Kto pierwszy szedł przed siebie - Kto pierwszy cel wyznaczył - Kto pierwszy w nas rozpoznał - Kto wrogów kto przyjaciół - Kto pierwszy możnym radził - A kto był buntownikiem - Kto pierwszy został sobą - Kto pierwszy został nikim? + Kto pierwszy szedł przed siebie + Kto pierwszy cel wyznaczył + Kto pierwszy w nas rozpoznał + Kto wrogów kto przyjaciół + Kto pierwszy możnym radził + A kto był buntownikiem + Kto pierwszy został sobą + Kto pierwszy został nikim? - Kto pierwszy był fakirem - Kto pierwszy astrologiem - Kto pierwszy został królem - A kto chciał zostać bogiem - Kto z gwiazdozbioru Wega - Patrząc na Ziemię zgadnie - Kto pierwszy był człowiekiem - Kto będzie nim ostatni? + Kto pierwszy był fakirem + Kto pierwszy astrologiem + Kto pierwszy został królem + A kto chciał zostać bogiem + Kto z gwiazdozbioru Wega + Patrząc na Ziemię zgadnie + Kto pierwszy był człowiekiem + Kto będzie nim ostatni? diff --git a/songs/Krajka_(3).xml b/songs/Krajka_(3).xml index 6f355ce2..a13a2d41 100644 --- a/songs/Krajka_(3).xml +++ b/songs/Krajka_(3).xml @@ -9,28 +9,28 @@ - Chorałem dzwonków dzień rozkwita - Jeszcze od rosy rzęsy mokre - We mgle turkoce pierwsza bryka - ońce wyrusza na włóczęgę + Chorałem dzwonków dzień rozkwita + Jeszcze od rosy rzęsy mokre + We mgle turkoce pierwsza bryka + ońce wyrusza na włóczęgę - Drogą pylistą, drogą polną - Jak kolorowa panny krajka - ońce się wznosi nad stodołą - Będzie tańczyć walca + Drogą pylistą, drogą polną + Jak kolorowa panny krajka + ońce się wznosi nad stodołą + Będzie tańczyć walca A ja mam swoją gitarę - Spodnie wytarte i buty stare - Wiatry niosą mnie na skrzydłach + Spodnie wytarte i buty stare + Wiatry niosą mnie na skrzydłach - Zmoknięte świerszcze stroją skrzypce - Żuraw się wsparł o cembrowinę - Wiele nanosi wody jeszcze - Wielu się ludzi z niej napije + Zmoknięte świerszcze stroją skrzypce + Żuraw się wsparł o cembrowinę + Wiele nanosi wody jeszcze + Wielu się ludzi z niej napije diff --git a/songs/Kubus.xml b/songs/Kubus.xml index 179dfa23..1314e886 100644 --- a/songs/Kubus.xml +++ b/songs/Kubus.xml @@ -9,59 +9,59 @@ - Na stole stoi wazonik, - Pierdut w wazonik kamieniem, - Jak pięknie wazonik zadzwoni, - Cichutko spadając na ziemię. - Na łóżku śpi sobie babcia, - Lecz babcia jest trochę głucha, - Lecz może mej babci pomoże, - Gdy włożę jej druta do ucha. + Na stole stoi wazonik, + Pierdut w wazonik kamieniem, + Jak pięknie wazonik zadzwoni, + Cichutko spadając na ziemię. + Na łóżku śpi sobie babcia, + Lecz babcia jest trochę głucha, + Lecz może mej babci pomoże, + Gdy włożę jej druta do ucha. - To walczyk grzecznego Kubusia, - Znanego w całym miasteczku, - Co nocą do majtek nie siusia, - I grzecznie się bawi w piaseczku. + To walczyk grzecznego Kubusia, + Znanego w całym miasteczku, + Co nocą do majtek nie siusia, + I grzecznie się bawi w piaseczku. - Dziadkowi, co od lat trzydziestu - Fajeczkę ćmi nałogowo, - Zamieniam tytoń ,,Amfora'' - Z mieszanką ciut ciut wybuchową. - Gdy dziadek się w nocy obudził, - Fajeczkę zapalił po cichu, - To tak mu buchnęło z cybucha, - Że babci szukał na strychu. + Dziadkowi, co od lat trzydziestu + Fajeczkę ćmi nałogowo, + Zamieniam tytoń ,,Amfora'' + Z mieszanką ciut ciut wybuchową. + Gdy dziadek się w nocy obudził, + Fajeczkę zapalił po cichu, + To tak mu buchnęło z cybucha, + Że babci szukał na strychu. - Mój tata to też jest aparat, - Czasami nie wraca do domu, - Lecz ja go tego oduczę, - Do kawy wsypuję mu bromu. - O mamie mojej w tym względzie - Powiedzieć nie mogę nic złego, - Na wszelki wypadek do zupy - Dolewam jej kwasu solnego. + Mój tata to też jest aparat, + Czasami nie wraca do domu, + Lecz ja go tego oduczę, + Do kawy wsypuję mu bromu. + O mamie mojej w tym względzie + Powiedzieć nie mogę nic złego, + Na wszelki wypadek do zupy + Dolewam jej kwasu solnego. - Na górze mieszka sąsiadka, - Której nie lubi mamusia, - Więc jutro jej z samego rana, - W butelkę po mleku nasiusiam. - Malutką córeczkę sąsiadki - Po cichu w bramie zaszkoczę, - Na siłę jej ściągnę majteczki - I gumkę wyciągnę na procę. + Na górze mieszka sąsiadka, + Której nie lubi mamusia, + Więc jutro jej z samego rana, + W butelkę po mleku nasiusiam. + Malutką córeczkę sąsiadki + Po cichu w bramie zaszkoczę, + Na siłę jej ściągnę majteczki + I gumkę wyciągnę na procę. - I rośnie nam Kubuś malutki, - I rośnie nam Kubuś wspaniały, - I rośnie nam chluba narodu, - Przepraszam dziś naród za mały. + I rośnie nam Kubuś malutki, + I rośnie nam Kubuś wspaniały, + I rośnie nam chluba narodu, + Przepraszam dziś naród za mały. diff --git a/songs/Lato_z_ptakami_odchodzi.xml b/songs/Lato_z_ptakami_odchodzi.xml index 97413051..1d47eefe 100644 --- a/songs/Lato_z_ptakami_odchodzi.xml +++ b/songs/Lato_z_ptakami_odchodzi.xml @@ -9,36 +9,36 @@ - Lato z ptakami odchodzi - Wiatr skręca liście w warkocze - Dywanem okrywa szlaki - Szkarłaty wiesza na zboczach + Lato z ptakami odchodzi + Wiatr skręca liście w warkocze + Dywanem okrywa szlaki + Szkarłaty wiesza na zboczach - Przyoblekam myśli w kolory - W liści złoto w buków purpurę - Palę w ogniu letnie wspomnienia - Idę wymachując kosturem + Przyoblekam myśli w kolory + W liści złoto w buków purpurę + Palę w ogniu letnie wspomnienia + Idę wymachując kosturem - Idę w góry cieszyć się życiem - Oddać dłoniom halnego włosy - W szelest liści wsłuchać się pragnę - W odlatujących ptaków głosy + Idę w góry cieszyć się życiem + Oddać dłoniom halnego włosy + W szelest liści wsłuchać się pragnę + W odlatujących ptaków głosy - ony pot czuję w ustach - Dzień spracowany ucieka + ony pot czuję w ustach + Dzień spracowany ucieka Anioł zapala gwiazdy Oświetla drogę człowieka - Już niedługo rozpalę ogień - Na rozległej górskiej polanie - Już niedługo szałas zielony - Wśród dostojnych buków powstanie + Już niedługo rozpalę ogień + Na rozległej górskiej polanie + Już niedługo szałas zielony + Wśród dostojnych buków powstanie diff --git a/songs/Lekcja_historii_klasycznej.xml b/songs/Lekcja_historii_klasycznej.xml index b9a978ce..88b0e89b 100644 --- a/songs/Lekcja_historii_klasycznej.xml +++ b/songs/Lekcja_historii_klasycznej.xml @@ -9,30 +9,30 @@ - Galia est omnis divisa in partes tres - Quorum unam incolunt Belgae aliam Aquitani - Tertiam qui ipsorum lingua Celtae nostra Gali apelantur - O ave Caesar, morituri te salutant! + Galia est omnis divisa in partes tres + Quorum unam incolunt Belgae aliam Aquitani + Tertiam qui ipsorum lingua Celtae nostra Gali apelantur + O ave Caesar, morituri te salutant! - Nad Europą twardy krok legionów grzmi - Nieunikniony wróży koniec republiki - Gniją wzgórza galijskie w pomieszanej krwi - A Juliusz Cezar pisze swoje pamiętniki + Nad Europą twardy krok legionów grzmi + Nieunikniony wróży koniec republiki + Gniją wzgórza galijskie w pomieszanej krwi + A Juliusz Cezar pisze swoje pamiętniki - Pozwól Cezarze gdy zdobędziemy cały świat - Gwałcić rabować sycić wszelkie pożądania - Proste prośby żołnierzy te same są od lat - A Juliusz Cezar milcząc zabaw nie zabrania + Pozwól Cezarze gdy zdobędziemy cały świat + Gwałcić rabować sycić wszelkie pożądania + Proste prośby żołnierzy te same są od lat + A Juliusz Cezar milcząc zabaw nie zabrania - Cywilizuje podbite narody nowy ład - Rosną krzyże przy drogach od Renu do Nilu - Skargą krzykiem i płaczem rozbrzmiewa cały świat - A Juliusz Cezar ćwiczy lapidarność stylu + Cywilizuje podbite narody nowy ład + Rosną krzyże przy drogach od Renu do Nilu + Skargą krzykiem i płaczem rozbrzmiewa cały świat + A Juliusz Cezar ćwiczy lapidarność stylu diff --git a/songs/Lemkowyna.xml b/songs/Lemkowyna.xml index 26c7c94f..b772575c 100644 --- a/songs/Lemkowyna.xml +++ b/songs/Lemkowyna.xml @@ -9,55 +9,55 @@ - Dusza moja kamienna - I serce z kamienia + Dusza moja kamienna + I serce z kamienia I oczy zmrożone - Granitami szczytów - Zimne echo ulicy + Granitami szczytów + Zimne echo ulicy Odbija kroki I kolana chłodzi posadzka kościoła - I cóż mi powiesz - Panienko przeczysta jarzębino + I cóż mi powiesz + Panienko przeczysta jarzębino Ikono leśna - Przydrożna leszczyno - Czegóż mnie nauczysz - Pod drewnianym dachem - Płomykiem lampki drżącym - Bukowym zapachem + Przydrożna leszczyno + Czegóż mnie nauczysz + Pod drewnianym dachem + Płomykiem lampki drżącym + Bukowym zapachem - onie moje stalowe - I nerwy ze stali - Zimna porcelana - Błyszczący widelec - Nawet krzyż na ścianę - Wykrojony z blachy + onie moje stalowe + I nerwy ze stali + Zimna porcelana + Błyszczący widelec + Nawet krzyż na ścianę + Wykrojony z blachy I żelaznym gwoździem - Przybity do muru + Przybity do muru - Nigdy nie zrozumiem - Waszych ciepłych dłoni + Nigdy nie zrozumiem + Waszych ciepłych dłoni I drewnianych łyżek - Nasiąkniętych zupą - Twarz przytulam do belek - Lecz ukłon do progu + Nasiąkniętych zupą + Twarz przytulam do belek + Lecz ukłon do progu I wracam do siebie - Żelazną koleją + Żelazną koleją - I cóż mi powiesz - Panienko przeczysta jarzębino + I cóż mi powiesz + Panienko przeczysta jarzębino Ikono leśna - Przydrożna leszczyno - Czegóż mnie nauczysz - Pod drewnianym dachem - Płomykiem lampki drżącym - Bukowym zapachem + Przydrożna leszczyno + Czegóż mnie nauczysz + Pod drewnianym dachem + Płomykiem lampki drżącym + Bukowym zapachem diff --git a/songs/Let_it_be.xml b/songs/Let_it_be.xml index e14bdd6a..c9d72a04 100644 --- a/songs/Let_it_be.xml +++ b/songs/Let_it_be.xml @@ -3,7 +3,7 @@ The Beatles - When I find myself in times of trouble, Mother Mary comes to me + When I find myself in times of trouble, Mother Mary comes to me Speaking words of wisdom, let it be diff --git a/songs/List.xml b/songs/List.xml index a529874a..e0aaf174 100644 --- a/songs/List.xml +++ b/songs/List.xml @@ -22,33 +22,33 @@ Zawsze będę tak żyć bez serca Lecz nagle zjawiłaś się Ty i pomóc chciałaś mi - Czemu? - nie wiem do dziś + Czemu? - nie wiem do dziś Przygarnęłaś mnie bo byłem jak bezpański pies I nie wiem skąd wzięłaś do serca mego klej - Dałaś mi ciepło swe dałaś mi dobroć swą - Twe piękno było dla mnie i serce twe + Dałaś mi ciepło swe dałaś mi dobroć swą + Twe piękno było dla mnie i serce twe - Byłem tak szczęśliwy, mało szczęścia przedtem miałem - Skleiłaś serce me -- kochać zacząłem Cię + Byłem tak szczęśliwy, mało szczęścia przedtem miałem + Skleiłaś serce me -- kochać zacząłem Cię - Lecz wielkie szczęście tak już jest nie może dla mnie wiecznie trwać - Gdy już kochałem Cię ode mnie odwróciłaś się - To moja wina, tak ja wiem, miłości mojej nie można znieść - Lecz za te chwile szczęścia -- dziękuję Ci + Lecz wielkie szczęście tak już jest nie może dla mnie wiecznie trwać + Gdy już kochałem Cię ode mnie odwróciłaś się + To moja wina, tak ja wiem, miłości mojej nie można znieść + Lecz za te chwile szczęścia -- dziękuję Ci - Ten list piszę teraz bo rozmawiać ze mną nie chcesz już - Może zaśpiewam kiedyś go by go wysłuchać ktoś mógł - Może ten ktoś gdzieś spotka Cię, opowie dziękczynienie me + Ten list piszę teraz bo rozmawiać ze mną nie chcesz już + Może zaśpiewam kiedyś go by go wysłuchać ktoś mógł + Może ten ktoś gdzieś spotka Cię, opowie dziękczynienie me W ten sposób dowiesz się Jak bardzo wciąż niestety kocham Cię @@ -59,8 +59,8 @@ - P.S. Naprawdę dziękuję Ci za to że dzięki Tobie mogę znowu kochać ludzi - Że mogę śpiewać im o szczęściu którego zasmakowałem przy Tobie + P.S. Naprawdę dziękuję Ci za to że dzięki Tobie mogę znowu kochać ludzi + Że mogę śpiewać im o szczęściu którego zasmakowałem przy Tobie diff --git a/songs/Madonna.xml b/songs/Madonna.xml index b4a7d4a1..ff672614 100644 --- a/songs/Madonna.xml +++ b/songs/Madonna.xml @@ -9,10 +9,10 @@ - Polsko--ruska madonna - Polsko--starocerkiewna + Polsko--ruska madonna + Polsko--starocerkiewna Z gorejącego złota - Z żywego drewna, srebra + Z żywego drewna, srebra Bizantyjsko--słowiańska @@ -25,7 +25,7 @@ Nie bojarska, nie carska Zasmucona, kamienna twarz Nie bojarska, nie carska - Zasmucona, chłopska ikona + Zasmucona, chłopska ikona diff --git a/songs/Majka.xml b/songs/Majka.xml index 6378504c..3775faf7 100644 --- a/songs/Majka.xml +++ b/songs/Majka.xml @@ -13,8 +13,8 @@ Do mej najdroższej, jak rzeka wiernej - O, o, Majka, nie jestem Ciebie wart - Majka, zmieniłbym dla Ciebie cały świat + O, o, Majka, nie jestem Ciebie wart + Majka, zmieniłbym dla Ciebie cały świat Choć dni mijają i czas ucieka diff --git a/songs/Majster_bieda.xml b/songs/Majster_bieda.xml index 3c8f198e..fa67d18c 100644 --- a/songs/Majster_bieda.xml +++ b/songs/Majster_bieda.xml @@ -7,41 +7,41 @@ - Skąd przychodził kto go znał - Kto mu rękę podał kiedy - Nad rowem siadał wyjmował chleb - Serem przekładał i dzielił się z psem - Tyle wszystkiego co z sobą miał - Majster Bieda + Skąd przychodził kto go znał + Kto mu rękę podał kiedy + Nad rowem siadał wyjmował chleb + Serem przekładał i dzielił się z psem + Tyle wszystkiego co z sobą miał + Majster Bieda - Czapkę z głowy ściągał gdy - Wiatr gałęzie chylił drzewom - Śmiał się do słońca i śpiewał do gwiazd - Drogę bez końca co przed nim szła - Znał jak pięć palców jak szeląg zły - Majster Bieda + Czapkę z głowy ściągał gdy + Wiatr gałęzie chylił drzewom + Śmiał się do słońca i śpiewał do gwiazd + Drogę bez końca co przed nim szła + Znał jak pięć palców jak szeląg zły + Majster Bieda - Nikt nie pytał skąd się wziął - Gdy do ognia się przysiadał - Wtulał się w krąg ciepła jak w kożuch - Znużony drogą wędrowiec boży - Zasypiał długo gapiąc się w noc - Majster Bieda + Nikt nie pytał skąd się wziął + Gdy do ognia się przysiadał + Wtulał się w krąg ciepła jak w kożuch + Znużony drogą wędrowiec boży + Zasypiał długo gapiąc się w noc + Majster Bieda - Aż nastąpił taki rok - Smutny rok tak widać trzeba - Nie przyszedł Bieda zieloną wiosną - Miejsce gdzie siadał zielskiem zarosło - I choć niejeden wytężał wzrok - Choć lato pustym gościńcem przeszło - Z rudymi liśćmi jesieni schedą - Wiatrem niesiony popłynął w przeszłość - Wiatrem niesiony popłynął w przeszłość - Wiatrem niesiony popłynął w przeszłość - Majster Bieda + Aż nastąpił taki rok + Smutny rok tak widać trzeba + Nie przyszedł Bieda zieloną wiosną + Miejsce gdzie siadał zielskiem zarosło + I choć niejeden wytężał wzrok + Choć lato pustym gościńcem przeszło + Z rudymi liśćmi jesieni schedą + Wiatrem niesiony popłynął w przeszłość + Wiatrem niesiony popłynął w przeszłość + Wiatrem niesiony popłynął w przeszłość + Majster Bieda diff --git a/songs/Makatka_z_aniolem.xml b/songs/Makatka_z_aniolem.xml index bcc3f82f..b32f597a 100644 --- a/songs/Makatka_z_aniolem.xml +++ b/songs/Makatka_z_aniolem.xml @@ -9,24 +9,24 @@ - Na twarzy twej rumieńce - Jakbyś był uduchowiony - Przez gruźlicę płuc a dobroć twą nieziemską - Zamykasz na niebieski klucz - Zamykasz na niebieski klucz + Na twarzy twej rumieńce + Jakbyś był uduchowiony + Przez gruźlicę płuc a dobroć twą nieziemską + Zamykasz na niebieski klucz + Zamykasz na niebieski klucz - Najczęściej można spotkać cię - Nad przepaścią lukrowaną - Gdy przez dziurawą kładkę - Przeprowadzasz swoje dzieci + Najczęściej można spotkać cię + Nad przepaścią lukrowaną + Gdy przez dziurawą kładkę + Przeprowadzasz swoje dzieci - Nocą może chciałbyś - Oderwać się od ściany - Ale jedno skrzydło gwóźdź ci przedziurawił - Więc zostajesz z nami - Na wieki wieków amen + Nocą może chciałbyś + Oderwać się od ściany + Ale jedno skrzydło gwóźdź ci przedziurawił + Więc zostajesz z nami + Na wieki wieków amen diff --git a/songs/Marchewkowe_pole.xml b/songs/Marchewkowe_pole.xml index 39c531c0..f3cec0a3 100644 --- a/songs/Marchewkowe_pole.xml +++ b/songs/Marchewkowe_pole.xml @@ -3,13 +3,13 @@ Lady Pank - Marchewkowe pole rośnie wokół mnie - W marchewkowym - Polu jak warzywo tkwię - Głową na dół - Zakopany niczym struś - Chcesz mnie spotkać - Głowę obok w ziemię włóż + Marchewkowe pole rośnie wokół mnie + W marchewkowym + Polu jak warzywo tkwię + Głową na dół + Zakopany niczym struś + Chcesz mnie spotkać + Głowę obok w ziemię włóż Wszystko się może zdarzyć @@ -19,14 +19,14 @@ - Marchewkowe - O ogrodzie miewam sny - W marchewkowym - Stanie jest najlepiej mi - Rosnę sobie - Dołem głowa górą nać - Kto mi powie - Co się jeszcze może stać + Marchewkowe + O ogrodzie miewam sny + W marchewkowym + Stanie jest najlepiej mi + Rosnę sobie + Dołem głowa górą nać + Kto mi powie + Co się jeszcze może stać diff --git a/songs/Medrcy_swiata.xml b/songs/Medrcy_swiata.xml index b856eb8e..9bf8103d 100644 --- a/songs/Medrcy_swiata.xml +++ b/songs/Medrcy_swiata.xml @@ -9,10 +9,10 @@ - Mędrcy świata monarchowie - Gdzie spiesznie dążycie - Powiedzcież nam trzej królowie - Chcecie widzieć dziecię + Mędrcy świata monarchowie + Gdzie spiesznie dążycie + Powiedzcież nam trzej królowie + Chcecie widzieć dziecię @@ -22,49 +22,49 @@ I berła nie dzierży A proroctwo jego zgonu - Już się w świecie szerzy + Już się w świecie szerzy - Mędrcy świata, złość okrutna - Dziecię prześladuje - Wieść okropna wieść to smutna - Herod spisek knuje + Mędrcy świata, złość okrutna + Dziecię prześladuje + Wieść okropna wieść to smutna + Herod spisek knuje - Nic monarchów nie odstrasza - Do Betlejem spieszą - Gwiazda zbawcę im ogłasza - Nadzieją się cieszą + Nic monarchów nie odstrasza + Do Betlejem spieszą + Gwiazda zbawcę im ogłasza + Nadzieją się cieszą - Przed Maryją stoją społem - Niosą Panu dary - Przed Jezusem biją czołem - Składają ofiary + Przed Maryją stoją społem + Niosą Panu dary + Przed Jezusem biją czołem + Składają ofiary - Trzykroć szczęśliwi królowie - Któż wam nie zazdrości - Cóż my damy, kto nam powie - Pałając z miłości + Trzykroć szczęśliwi królowie + Któż wam nie zazdrości + Cóż my damy, kto nam powie + Pałając z miłości - Tak jak każą nam kapłani - Damy dar troisty - Modły pracę niosąc w dani + Tak jak każą nam kapłani + Damy dar troisty + Modły pracę niosąc w dani I żar serca czysty - To kadzidło mirrę złoto - Niesiem Jezu szczerze - Co dajemy Ci z ochotą + To kadzidło mirrę złoto + Niesiem Jezu szczerze + Co dajemy Ci z ochotą Od nas przyjm w ofierze diff --git a/songs/Miasto.xml b/songs/Miasto.xml index 3d590de7..978febf7 100644 --- a/songs/Miasto.xml +++ b/songs/Miasto.xml @@ -12,30 +12,30 @@ - Ciemną nocą po schodach uliczek - Po gorących Mostu kamieniach - Pełen piwa łeb niosę w chmurach - I gitarę i pustkę w kieszeniach + Ciemną nocą po schodach uliczek + Po gorących Mostu kamieniach + Pełen piwa łeb niosę w chmurach + I gitarę i pustkę w kieszeniach - Żegnam się z Miastem - Które sto się moje - Jego wieże jego drogi - Kroki moje - Żegnam się z Miastem - Jego Mostem gdzie wieczorem - Spadały gwiazdy monet - Za muzykę + Żegnam się z Miastem + Które sto się moje + Jego wieże jego drogi + Kroki moje + Żegnam się z Miastem + Jego Mostem gdzie wieczorem + Spadały gwiazdy monet + Za muzykę - Nazbierałem po całym Mieście - Sprawy ważne i te nic nie warte - Ot w podeszwach dziury na wylot - Bicie dzwonów, bramy otwarte + Nazbierałem po całym Mieście + Sprawy ważne i te nic nie warte + Ot w podeszwach dziury na wylot + Bicie dzwonów, bramy otwarte @@ -43,10 +43,10 @@ - Gwiazdy w rzece tu się zaczyna - I tu kończy opowieść moja - Chciałbym dzisiaj jak wtedy wieczorem - Siedzieć z Tobą na Moście Karola + Gwiazdy w rzece tu się zaczyna + I tu kończy opowieść moja + Chciałbym dzisiaj jak wtedy wieczorem + Siedzieć z Tobą na Moście Karola diff --git a/songs/Miedzy_nami_tyle_sniegu.xml b/songs/Miedzy_nami_tyle_sniegu.xml index bb52ad37..372dce29 100644 --- a/songs/Miedzy_nami_tyle_sniegu.xml +++ b/songs/Miedzy_nami_tyle_sniegu.xml @@ -9,34 +9,34 @@ - Ślady Twoje zasypało - W śniegu całkiem się zgubiły - Szukać trudno --- wszędzie biało - Czekać --- też nad moje siły + Ślady Twoje zasypało + W śniegu całkiem się zgubiły + Szukać trudno --- wszędzie biało + Czekać --- też nad moje siły Gdzie Cię poniosło na tych saniach? - Co Ci się stało w środku zimy? - A jeszcze latem byłaś ze mną - Czy w twoje życie wszedł ktoś inny? + Co Ci się stało w środku zimy? + A jeszcze latem byłaś ze mną + Czy w twoje życie wszedł ktoś inny? - Między nami tyle śniegu - Między nami tyle lodu - Czy trafimy znów na siebie - W naszych oknach szyby chłodu + Między nami tyle śniegu + Między nami tyle lodu + Czy trafimy znów na siebie + W naszych oknach szyby chłodu Może wiosna Cię odmieni - Może lato da zapomnieć - Czekam tylko do jesieni - Więc przypomnij sobie o mnie + Może lato da zapomnieć + Czekam tylko do jesieni + Więc przypomnij sobie o mnie - Mam po Tobie listów kilka - I krzyżówkę bez dwóch haseł - Pięć biletów tramwajowych - Pewnie dzisiaj też nie zasnę - Bo wciąż w myślach biję się ze sobą - Gdybyś dziś znów stanęła na progu - Ze śniegu pewnie bym Cię otrzepał - I dziękował sam nie wiem komu + Mam po Tobie listów kilka + I krzyżówkę bez dwóch haseł + Pięć biletów tramwajowych + Pewnie dzisiaj też nie zasnę + Bo wciąż w myślach biję się ze sobą + Gdybyś dziś znów stanęła na progu + Ze śniegu pewnie bym Cię otrzepał + I dziękował sam nie wiem komu diff --git a/songs/Milosc.xml b/songs/Milosc.xml index abeabd4c..afdc4375 100644 --- a/songs/Milosc.xml +++ b/songs/Milosc.xml @@ -9,30 +9,30 @@ - ońce słońce w ramionach + ońce słońce w ramionach Czy twego ciała kryształ pełen Owoców białych gdzie zdrój zielony tryska - Gdzie oczy miękkie w mroku + Gdzie oczy miękkie w mroku Tak pół mnie a pół Bogu - Twych kroków korowody + Twych kroków korowody W urojonych alejach twe odbicia U wody jak w pragnieniach nadziejach Twe usta u źródeł To syte to znów głodne - I Twój śmiech i płakanie + I Twój śmiech i płakanie Nie odpłynie zostanie - Uniosę je przeniosę + Uniosę je przeniosę Jak ramionami głosem - W czas daleki wysoko - W obcowanie obłokom - Tak pół mnie a pół Tobie + W czas daleki wysoko + W obcowanie obłokom + Tak pół mnie a pół Tobie diff --git a/songs/Mily_moj.xml b/songs/Mily_moj.xml index b58ea9eb..466908f0 100644 --- a/songs/Mily_moj.xml +++ b/songs/Mily_moj.xml @@ -13,11 +13,11 @@ - Do mnie tu przyjdź i słuchaj pieśni - Złożonej z tęsknot, marzeń wyobraźni + Do mnie tu przyjdź i słuchaj pieśni + Złożonej z tęsknot, marzeń wyobraźni A jeśli chcesz to zabrzmi głośniej - Ty dodasz do niej miłość swą + Ty dodasz do niej miłość swą Miły mój w deszczu do mnie biegł @@ -34,11 +34,11 @@ - Ta wielka noc gdy pierwszy strach + Ta wielka noc gdy pierwszy strach Trzymał ciała nasze na odległość ramion - Dawno już dziś zszarzała zbladła - Wchodzimy razem w jasny dzi + Dawno już dziś zszarzała zbladła + Wchodzimy razem w jasny dzi @@ -46,10 +46,10 @@ - Gdy miły mój zgubi drogę + Gdy miły mój zgubi drogę I mówi do mnie -- daj mi rękę miła Nie trzeba już nic więcej mówić - Dzielimy każdy śmiech i łzy + Dzielimy każdy śmiech i łzy diff --git a/songs/Modlitwa.xml b/songs/Modlitwa.xml index 6c97c678..e98d36b9 100644 --- a/songs/Modlitwa.xml +++ b/songs/Modlitwa.xml @@ -9,25 +9,25 @@ - Jeśli nas Matka Boska nie obroni + Jeśli nas Matka Boska nie obroni To co się stanie z tym narodem? Codzienne modły więc zanoszę do niej By ocaliła nas przed głodem - Przed głodem ust, którym zabrakło chleba + Przed głodem ust, którym zabrakło chleba Przed głodem serc, w których nie mieszka miłość Przed głodem zemsty, której nam nie trzeba Przed głodem władzy, co jest tylko siłą - Jeśli nas Matka Boska nie obroni + Jeśli nas Matka Boska nie obroni To co się stanie z Polakami? Codzienne modły więc zanoszę do niej By ocaliła nas przed nami - Nami, co toną, tonąc innych topią + Nami, co toną, tonąc innych topią Co marzą, innym odmawiając marzeń Co z głową w pętli jeszcze nogą kopią By ślad zostawić na kopniętej twarzy diff --git a/songs/Modlitwa_o_wschodzie_slonca.xml b/songs/Modlitwa_o_wschodzie_slonca.xml index b29d6258..34551330 100644 --- a/songs/Modlitwa_o_wschodzie_slonca.xml +++ b/songs/Modlitwa_o_wschodzie_slonca.xml @@ -10,21 +10,21 @@ Ponadto rozmieszczenie chwytów jest takie, jak ja śpiewam, niekoniecznie zgodn - Każdy Twój wyrok przyjmę twardy - Przed mocą Twoją się ukorzę + Każdy Twój wyrok przyjmę twardy + Przed mocą Twoją się ukorzę Ale chroń mnie Panie od pogardy - Przed nienawiścią strzeż mnie Boże + Przed nienawiścią strzeż mnie Boże - Wszak Tyś jest niezmierzone dobro - Którego nie wyrażą słowa + Wszak Tyś jest niezmierzone dobro + Którego nie wyrażą słowa Więc mnie od nienawiści obroń I od pogardy mnie zachowaj - Co postanowisz niech się ziści - Niechaj się wola Twoja stanie + Co postanowisz niech się ziści + Niechaj się wola Twoja stanie Ale zbaw mnie od nienawiści Ocal mnie od pogardy Panie diff --git a/songs/Modlitwa_wedrownego_grajka.xml b/songs/Modlitwa_wedrownego_grajka.xml index b2671e26..332d86af 100644 --- a/songs/Modlitwa_wedrownego_grajka.xml +++ b/songs/Modlitwa_wedrownego_grajka.xml @@ -9,43 +9,43 @@ - Przy małej wiejskiej kapliczce - Stojącej wedle drogi - Ukląkł rzępoląc na skrzypkach - Wędrowny grajek ubogi - Od czasu do czasu grający - Bezzębne otwierał wargi - To przekomarzał się z Bogiem - To znowu się korzył bez skargi + Przy małej wiejskiej kapliczce + Stojącej wedle drogi + Ukląkł rzępoląc na skrzypkach + Wędrowny grajek ubogi + Od czasu do czasu grający + Bezzębne otwierał wargi + To przekomarzał się z Bogiem + To znowu się korzył bez skargi - Hej Panie Boże coś wielkim - Gazdą nad gazdami - Po coś mi dał taką skrzypkę - Co jeno tumani i mami + Hej Panie Boże coś wielkim + Gazdą nad gazdami + Po coś mi dał taką skrzypkę + Co jeno tumani i mami - Spraw to ażebym na zawsze - Umiał dziękować ci Panie - Że sobie rzępolę jak mogę - Że daję ci na co mnie stanie - A jeszcze bardziej chroń mnie - I od najmniejszej zawiści - Że są na świecie grajkowie - Pełni szumniejszych myśli + Spraw to ażebym na zawsze + Umiał dziękować ci Panie + Że sobie rzępolę jak mogę + Że daję ci na co mnie stanie + A jeszcze bardziej chroń mnie + I od najmniejszej zawiści + Że są na świecie grajkowie + Pełni szumniejszych myśli - I niechaj pomnę w mym życiu - Czy bliskim czy też dalekim - Żem człekiem jest przede wszystkim - I niczym więcej jak człekiem - Spraw w końcu by przy tej kapliczce - Obok tej wiejskiej drogi - Klękał i grywał na skrzypkach - Wędrowny grajek ubogi + I niechaj pomnę w mym życiu + Czy bliskim czy też dalekim + Żem człekiem jest przede wszystkim + I niczym więcej jak człekiem + Spraw w końcu by przy tej kapliczce + Obok tej wiejskiej drogi + Klękał i grywał na skrzypkach + Wędrowny grajek ubogi diff --git a/songs/Mona.xml b/songs/Mona.xml index 43d1c182..dfde8433 100644 --- a/songs/Mona.xml +++ b/songs/Mona.xml @@ -9,66 +9,66 @@ Lifeboat "Mona" - Był pięćdziesiąty dziewiąty rok, - Pamiętam ten grudniowy dzień, - Gdy ośmiu mężczyzn zabrał sztorm - Gdzieś w oceanu wieczny cień. + Był pięćdziesiąty dziewiąty rok, + Pamiętam ten grudniowy dzień, + Gdy ośmiu mężczyzn zabrał sztorm + Gdzieś w oceanu wieczny cień. - W grudniowy płaszcz okryta śmierć - Spod czarnych nieba zeszła chmur, + W grudniowy płaszcz okryta śmierć + Spod czarnych nieba zeszła chmur, Przy brzegu konał smukły bryg, - Na pomoc "Mona" poszła mu. + Na pomoc "Mona" poszła mu. - Gdy przyszedł sygnał każdy z nich - Wpół dojedzonej strawy dzban + Gdy przyszedł sygnał każdy z nich + Wpół dojedzonej strawy dzban Porzucił by na przystań biec, - By ruszyć w dziki z morzem tan. + By ruszyć w dziki z morzem tan. - Był pięćdziesiąty dziewiąty rok, - Pamiętam ten grudniowy dzień, - Gdy ośmiu mężczyzn zabrał sztorm - Gdzieś w oceanu wieczny cień. + Był pięćdziesiąty dziewiąty rok, + Pamiętam ten grudniowy dzień, + Gdy ośmiu mężczyzn zabrał sztorm + Gdzieś w oceanu wieczny cień. - A fale wściekle biły w brzeg, - Ryk morza tłumił chłopców krzyk, - "Mona" do brygu dzielnie szła, - Lecz brygu już nie widział nikt. + A fale wściekle biły w brzeg, + Ryk morza tłumił chłopców krzyk, + "Mona" do brygu dzielnie szła, + Lecz brygu już nie widział nikt. - Na brzegu kobiet niemy szloch, - W ramiona ich nie wrócą już, + Na brzegu kobiet niemy szloch, + W ramiona ich nie wrócą już, Gdy oceanu twarda pięść - Uderzy w ratowniczą łódź. + Uderzy w ratowniczą łódź. - Był pięćdziesiąty dziewiąty rok, - Pamiętam ten grudniowy dzień, - Gdy ośmiu mężczyzn zabrał sztorm - Gdzieś w oceanu wieczny cień. + Był pięćdziesiąty dziewiąty rok, + Pamiętam ten grudniowy dzień, + Gdy ośmiu mężczyzn zabrał sztorm + Gdzieś w oceanu wieczny cień. - I tylko krwawy słońca dysk - Schyliło już po ciężkim dniu, + I tylko krwawy słońca dysk + Schyliło już po ciężkim dniu, Mrok okrył morze, niebo, brzeg, - Wiecznego całun ścieląc snu. + Wiecznego całun ścieląc snu. - Wiem dobrze, że synowie ich - Też w morze pójdą, kiedy znów + Wiem dobrze, że synowie ich + Też w morze pójdą, kiedy znów Do oczu komuś zajrzy śmierć - I wezwie ratowniczą łódź. + I wezwie ratowniczą łódź. - Był pięćdziesiąty dziewiąty rok, - Pamiętam ten grudniowy dzień, - Gdy ośmiu mężczyzn zabrał sztorm - Gdzieś w oceanu wieczny cień. + Był pięćdziesiąty dziewiąty rok, + Pamiętam ten grudniowy dzień, + Gdy ośmiu mężczyzn zabrał sztorm + Gdzieś w oceanu wieczny cień. diff --git a/songs/Mury.xml b/songs/Mury.xml index e5a280d9..e59f816e 100644 --- a/songs/Mury.xml +++ b/songs/Mury.xml @@ -18,25 +18,25 @@ I pogrzebią stary świat! - Wkrótce na pamięć znali pieśń i sama melodia bez słów - Niosła ze sobą starą treść, dreszcze na wskroś serc i głów - Śpiewali więc, klaskali w rytm, jak wystrzał poklask ich brzmiał - I ciążył łańcuch, zwlekał świt - On wciąż śpiewał i grał + Wkrótce na pamięć znali pieśń i sama melodia bez słów + Niosła ze sobą starą treść, dreszcze na wskroś serc i głów + Śpiewali więc, klaskali w rytm, jak wystrzał poklask ich brzmiał + I ciążył łańcuch, zwlekał świt + On wciąż śpiewał i grał - Aż zobaczyli ilu ich, poczuli siłę i czas - I z pieśnią, że już blisko świt szli ulicami miast - Zwalali pomniki i rwali bruk: Ten z nami? Ten przeciw nam? - Kto sam ten nasz najgorszy wróg! - A śpiewak także był sam + Aż zobaczyli ilu ich, poczuli siłę i czas + I z pieśnią, że już blisko świt szli ulicami miast + Zwalali pomniki i rwali bruk: Ten z nami? Ten przeciw nam? + Kto sam ten nasz najgorszy wróg! + A śpiewak także był sam - Patrzył na równy tłumów marsz - Milczał wsłuchany w kroków huk - A mury rosły, rosły, rosły - Łańcuch kołysał się u nóg + Patrzył na równy tłumów marsz + Milczał wsłuchany w kroków huk + A mury rosły, rosły, rosły + Łańcuch kołysał się u nóg diff --git a/songs/Muszelki.xml b/songs/Muszelki.xml index 1b3ab08a..f85fc269 100644 --- a/songs/Muszelki.xml +++ b/songs/Muszelki.xml @@ -9,59 +9,59 @@ - Zrywamy się przed świtem, nie myśląc o śniadaniu - Milczący, źli a przy tym zupełnie niewyspani. - Okrągły księżyc drwi z nas jak puste dno butelki; + Zrywamy się przed świtem, nie myśląc o śniadaniu + Milczący, źli a przy tym zupełnie niewyspani. + Okrągły księżyc drwi z nas jak puste dno butelki; - Lecz nam to nie pierwszyzna, idziemy po muszelki. + Lecz nam to nie pierwszyzna, idziemy po muszelki. - Szlak wiedzie brzegiem morza na zachód - w kołdrze mroku, - Więc z tyłu pełznie zorza cierpliwie krok po kroku. - Na piasku rosną cienie jak rozciągnięte szelki - + Szlak wiedzie brzegiem morza na zachód - w kołdrze mroku, + Więc z tyłu pełznie zorza cierpliwie krok po kroku. + Na piasku rosną cienie jak rozciągnięte szelki - - Idziemy niestrudzenie, idziemy po muszelki. + Idziemy niestrudzenie, idziemy po muszelki. - Muszelki - rzecz nietrwała, po prawdzie nic nie warta, - Ale córeczka chciała - córeczka jest uparta. - Z fal słońce się wychyla jak złota pierś modelki; + Muszelki - rzecz nietrwała, po prawdzie nic nie warta, + Ale córeczka chciała - córeczka jest uparta. + Z fal słońce się wychyla jak złota pierś modelki; - Umyka nam ta chwila - idziemy po muszelki. + Umyka nam ta chwila - idziemy po muszelki. - Palców u stóp maleństwa kaleczą się boleśnie. - Co robić? Na przekleństwa za późno - i za wcześnie - - Na wątpliwości antrakt, na cierpień bagatelki, + Palców u stóp maleństwa kaleczą się boleśnie. + Co robić? Na przekleństwa za późno - i za wcześnie - + Na wątpliwości antrakt, na cierpień bagatelki, - Bo zgrzyta zębów mantra - idziemy po muszelki. + Bo zgrzyta zębów mantra - idziemy po muszelki. - Pierś słońca już w zenicie wspiera się nam na plecach - Potężnym żarem życia jak samo serce pieca. - Pot ciurka strumykami, dziurawią piach kropelki; + Pierś słońca już w zenicie wspiera się nam na plecach + Potężnym żarem życia jak samo serce pieca. + Pot ciurka strumykami, dziurawią piach kropelki; - Wyschnięci na pergamin idziemy po muszelki. + Wyschnięci na pergamin idziemy po muszelki. - W krąg wodorostów zieleń piętrzy się drwiącą warstwą - I cuchnie - a muszelek? Muszelek - na lekarstwo! - Nie w naszej widać mocy odnaleźć skarb tak wielki! + W krąg wodorostów zieleń piętrzy się drwiącą warstwą + I cuchnie - a muszelek? Muszelek - na lekarstwo! + Nie w naszej widać mocy odnaleźć skarb tak wielki! - Na skórze, w chłodzie nocy pęcznieją nam bąbelki. + Na skórze, w chłodzie nocy pęcznieją nam bąbelki. - Lecz córcia łapką gładką pieczeń skwierczącą klepie: - - Nie przejmuj się tak, Tatku! Jutro ci pójdzie lepiej! - Los żaden nas nie zmoże, choć przeszkód pełen wszelkich! + Lecz córcia łapką gładką pieczeń skwierczącą klepie: + - Nie przejmuj się tak, Tatku! Jutro ci pójdzie lepiej! + Los żaden nas nie zmoże, choć przeszkód pełen wszelkich! - Chwała Ci dobry Boże za drogę po muszelki! + Chwała Ci dobry Boże za drogę po muszelki! diff --git a/songs/Na_potoczku-m_prala.xml b/songs/Na_potoczku-m_prala.xml index c22decda..1e66af49 100644 --- a/songs/Na_potoczku-m_prala.xml +++ b/songs/Na_potoczku-m_prala.xml @@ -9,40 +9,40 @@ - Na potoczku-m prała, - Na werboczku-m kłała, - Pomoży mi, Pan’e Boże, - Szczo-m sobi dumała. + Na potoczku-m prała, + Na werboczku-m kłała, + Pomoży mi, Pan’e Boże, + Szczo-m sobi dumała. - Jam sobi dumała - Chłopcia mołodoho, - A mene wydali - Za dida staroho. + Jam sobi dumała + Chłopcia mołodoho, + A mene wydali + Za dida staroho. - Jak mn’e wydawali, - Tak mene kazali, - Abyś moja Doniu - Dida czestuwała. + Jak mn’e wydawali, + Tak mene kazali, + Abyś moja Doniu + Dida czestuwała. - Ja dida czesuju, - Czestuwaty muszu, - Pomoży mi, Pan’e Boże, - Wiźmi z dida duszu! + Ja dida czesuju, + Czestuwaty muszu, + Pomoży mi, Pan’e Boże, + Wiźmi z dida duszu! - Wiźmi z dida duszu, - Taj powiś na chruszu, - Szczuby starym znaty, - Jak mołodu braty. + Wiźmi z dida duszu, + Taj powiś na chruszu, + Szczuby starym znaty, + Jak mołodu braty. - Zabrał Boh staroho, - Nie dał mołodoho. - Pomoży mi, Pan’e Boże, - Widdaj choć staroho! + Zabrał Boh staroho, + Nie dał mołodoho. + Pomoży mi, Pan’e Boże, + Widdaj choć staroho! diff --git a/songs/Nadaremnosc.xml b/songs/Nadaremnosc.xml index dc979eb8..07784175 100644 --- a/songs/Nadaremnosc.xml +++ b/songs/Nadaremnosc.xml @@ -9,11 +9,11 @@ - W znoju słońca mozolnie razem z ciszą dzwoni - Rozgrzanych płotów chrust. - Pocałunek sam siebie składa mi na skroni, + W znoju słońca mozolnie razem z ciszą dzwoni + Rozgrzanych płotów chrust. + Pocałunek sam siebie składa mi na skroni, - Sam - bez pomocy ust... + Sam - bez pomocy ust... diff --git a/songs/Nasza_klasa.xml b/songs/Nasza_klasa.xml index 47072235..7e37594b 100644 --- a/songs/Nasza_klasa.xml +++ b/songs/Nasza_klasa.xml @@ -9,61 +9,61 @@ - Co się stało z naszą klasą, pyta Adam w Tel Awiwie, - Ciężko sprostać takim czasom, ciężko w ogóle żyć uczciwie, - Co się stało z naszą klasą, Wojtek w Szwecji w porno--klubie - Pisze dobrze mi tu płacą za to, co i tak wszak lubię - Za to, co i tak wszak lubię + Co się stało z naszą klasą, pyta Adam w Tel Awiwie, + Ciężko sprostać takim czasom, ciężko w ogóle żyć uczciwie, + Co się stało z naszą klasą, Wojtek w Szwecji w porno--klubie + Pisze dobrze mi tu płacą za to, co i tak wszak lubię + Za to, co i tak wszak lubię - Kaśka z Piotrkiem są w Kanadzie, bo tam mają perspektywy, - Staszek w Stanach sobie radzi, Paweł do Paryża przywykł, - Gośka z Przemkiem ledwie przędą, w maju będzie trzeci bachor, - Próżno skarżą się urzędom, że też chcieliby na Zachód. - Że też chcieliby na Zachód. + Kaśka z Piotrkiem są w Kanadzie, bo tam mają perspektywy, + Staszek w Stanach sobie radzi, Paweł do Paryża przywykł, + Gośka z Przemkiem ledwie przędą, w maju będzie trzeci bachor, + Próżno skarżą się urzędom, że też chcieliby na Zachód. + Że też chcieliby na Zachód. - Za to Magda jest w Madrycie i wychodzi za Hiszpana, - Maciek w grudniu stracił życie, gdy chodzili po mieszkaniach, - Janusz ten co zawiść budził, że go każda fala niesie - Jest chirurgiem, leczy ludzi, ale brat mu się powiesił. + Za to Magda jest w Madrycie i wychodzi za Hiszpana, + Maciek w grudniu stracił życie, gdy chodzili po mieszkaniach, + Janusz ten co zawiść budził, że go każda fala niesie + Jest chirurgiem, leczy ludzi, ale brat mu się powiesił. Ale brat mu się powiesił. - Marek siedzi za odmowę, bo nie strzelał do Michała. + Marek siedzi za odmowę, bo nie strzelał do Michała. A ja piszę ich historię i to już jest klasa cała. - Jeszcze Filip fizyk w Moskwie dziś nagrody różne zbiera, - Jeździ kiedy chce do Polski, był przyjęty przez premiera. - Był przyjęty przez premiera. + Jeszcze Filip fizyk w Moskwie dziś nagrody różne zbiera, + Jeździ kiedy chce do Polski, był przyjęty przez premiera. + Był przyjęty przez premiera. Odnalazłem klasę całą na wygnaniu, w kraju, w grobie, Ale coś się pozmieniało, każdy sobie żywot skrobie. Odnalazłem całą klasę, wyrośniętą i dojrzałą. - Rozdrapałem młodość naszą, lecz za bardzo nie bolało. - Lecz za bardzo nie bolo. + Rozdrapałem młodość naszą, lecz za bardzo nie bolało. + Lecz za bardzo nie bolo. - Już nie chłopcy lecz mężczyźni, już kobiety nie dziewczyny. - odość szybko się zabliźni, nie ma w tym niczyjej winy. - Wszyscy są odpowiedzialni, wszyscy mają w życiu cele, - Wszyscy w miarę są normalni, ale przecież to niewiele. + Już nie chłopcy lecz mężczyźni, już kobiety nie dziewczyny. + odość szybko się zabliźni, nie ma w tym niczyjej winy. + Wszyscy są odpowiedzialni, wszyscy mają w życiu cele, + Wszyscy w miarę są normalni, ale przecież to niewiele. Ale przecież to niewiele. - Nie wiem sam co mi się marzy, jaka z gwiazd nade mną świeci, - Gdy wśród tych nieobcych twarzy szukam ciągle twarzy dzieci, - Czemu wciąż przez ramię zerkam, choć nie woła nikt: "kolego!" - Że ktoś ze mną zagra w berka, lub przynajmniej w chowanego... - Lub przynajmniej w chowanego... + Nie wiem sam co mi się marzy, jaka z gwiazd nade mną świeci, + Gdy wśród tych nieobcych twarzy szukam ciągle twarzy dzieci, + Czemu wciąż przez ramię zerkam, choć nie woła nikt: "kolego!" + Że ktoś ze mną zagra w berka, lub przynajmniej w chowanego... + Lub przynajmniej w chowanego... - asne pędy, własne liście zapuszczamy każdy sobie + asne pędy, własne liście zapuszczamy każdy sobie I korzenie oczywiście, na wygnaniu,w kraju,w grobie - W dół, na boki, wzwyż ku słońcu, na stracenie, w prawo, w lewo. - Kto pamięta, że to w końcu jedno i to samo drzewo. - Jedno i to samo drzewo. + W dół, na boki, wzwyż ku słońcu, na stracenie, w prawo, w lewo. + Kto pamięta, że to w końcu jedno i to samo drzewo. + Jedno i to samo drzewo. diff --git a/songs/Nie_chod_tam.xml b/songs/Nie_chod_tam.xml index 5eda85f3..ffb5939a 100644 --- a/songs/Nie_chod_tam.xml +++ b/songs/Nie_chod_tam.xml @@ -12,18 +12,18 @@ Tak smutno patrzysz przez otwarte okno Już się latarnie w mieście zapalają I nic nie mówisz patrzysz tylko w dół - Nie chodź tam gdzie uliczny obcy tłum + Nie chodź tam gdzie uliczny obcy tłum Usiądź tu obok mnie w fotelu - onecznikowe pestki gr + onecznikowe pestki gr A ja piosenkę Ci zanucę - Tę której słuchać chciałabyś - Nie strącaj z biurka kałamarza - Nie zrywaj z kalendarza dni - Jeśli nie lubisz tej piosenki + Tę której słuchać chciałabyś + Nie strącaj z biurka kałamarza + Nie zrywaj z kalendarza dni + Jeśli nie lubisz tej piosenki Inną, ładniejszą zagram Ci @@ -31,23 +31,23 @@ Zasnęło słońce gdzieś za antenami Wyłażą koty z piwnic i śmietników Zadzwonił tramwaj już ostatni kurs - Nie chodź tam puste place zniknął tłum + Nie chodź tam puste place zniknął tłum Kiedy przyjdziesz do mnie znów pojutrze Popatrzysz smutno przez okno otwarte Wsłuchasz się w miasta przedwieczorny szum - Powiem Ci -- nie chodź tam gdzie obcy tłum + Powiem Ci -- nie chodź tam gdzie obcy tłum - Siądziesz tu obok mnie w fotelu - onecznikowe pestki gryźć + Siądziesz tu obok mnie w fotelu + onecznikowe pestki gryźć A ja piosenkę Ci zanucę - Tę której słuchać chciałab - Może kałamarz strącisz z biurka - Lub z kalendarza zerwiesz dzi - Może już lubisz tę piosenkę + Tę której słuchać chciałab + Może kałamarz strącisz z biurka + Lub z kalendarza zerwiesz dzi + Może już lubisz tę piosenkę A może nawet lubisz mnie diff --git a/songs/Nie_chodz_tam.xml b/songs/Nie_chodz_tam.xml index 59a80a7f..d3ab5f52 100644 --- a/songs/Nie_chodz_tam.xml +++ b/songs/Nie_chodz_tam.xml @@ -12,39 +12,39 @@ Tak smutno patrzysz przez otwarte okno Już się latarnie w mieście zapalają I nic nie mówisz patrzysz tylko w dół - Nie chodź tam gdzie uliczny obcy tłum + Nie chodź tam gdzie uliczny obcy tłum Usiądź tu obok mnie w fotelu - onecznikowe pestki gr + onecznikowe pestki gr A ja piosenkę Ci zanucę - Tę której słuchać chciałabyś - Nie strącaj z biurka kałamarza - Nie zrywaj z kalendarza dni - Jeśli nie lubisz tej piosenki + Tę której słuchać chciałabyś + Nie strącaj z biurka kałamarza + Nie zrywaj z kalendarza dni + Jeśli nie lubisz tej piosenki Inną, ładniejszą zagram Ci Zasnęło słońce gdzieś za antenami Wyłażą koty z piwnic i śmietników Zadzwonił tramwaj już ostatni kurs - Nie chodź tam puste place zniknął tłum + Nie chodź tam puste place zniknął tłum A kiedy przyjdziesz do mnie znów pojutrze Popatrzysz smutno przez okno otwarte Wsłuchasz się w miasta przedwieczorny szum - Powiem Ci -- nie chodź tam gdzie obcy tłum + Powiem Ci -- nie chodź tam gdzie obcy tłum - Siądziesz tu obok mnie w fotelu - onecznikowe pestki gryźć + Siądziesz tu obok mnie w fotelu + onecznikowe pestki gryźć A ja piosenkę Ci zanucę - Tę której słuchać chciałab - Może kałamarz strącisz z biurka - Lub z kalendarza zerwiesz dzi - Może już lubisz tę piosenkę + Tę której słuchać chciałab + Może kałamarz strącisz z biurka + Lub z kalendarza zerwiesz dzi + Może już lubisz tę piosenkę A może nawet lubisz mnie diff --git a/songs/Nie_lubie_wampirow.xml b/songs/Nie_lubie_wampirow.xml index ae7d39fd..4360562b 100644 --- a/songs/Nie_lubie_wampirow.xml +++ b/songs/Nie_lubie_wampirow.xml @@ -9,38 +9,38 @@ - Mrok zapada, ciemna noc - Gwiazdy już na niebie świecą - Na dole lampy świecą - Więc światła jest co nieco - Więc czemu to plugastwo pęta się?! + Mrok zapada, ciemna noc + Gwiazdy już na niebie świecą + Na dole lampy świecą + Więc światła jest co nieco + Więc czemu to plugastwo pęta się?! - Nie lubię wampirów jak jasna cholera - Jak spotkam, natrzaskam po ryju! - To straszna hołota, bo brzydsza od błota - A wszystkim się rzuca na szyję! - Nie lubię wampirów, bo ryje to brzydkie - A zęby ma gorsze od zwierzy - Te zęby wystają --- zahaczy w tramwaju - I robią się dziury w odzieży! + Nie lubię wampirów jak jasna cholera + Jak spotkam, natrzaskam po ryju! + To straszna hołota, bo brzydsza od błota + A wszystkim się rzuca na szyję! + Nie lubię wampirów, bo ryje to brzydkie + A zęby ma gorsze od zwierzy + Te zęby wystają --- zahaczy w tramwaju + I robią się dziury w odzieży! Ajajajajaj, jak ja ich nie lubię! - Czemu to łazi takie głupie? - Gębę ma, jakby ukradł małpie - Zęby takie, że w plecy się podrapie + Czemu to łazi takie głupie? + Gębę ma, jakby ukradł małpie + Zęby takie, że w plecy się podrapie - Nie lubię wampirów i innych straszydeł - Jak spotkam, łeb wyrwę z płucami! - Bo wyje to w nocy, nie wiadomo po co - I zgrzyta o marmur zębami! - Ja wstaję codziennie na siódmą do pracy - Z siekierą się w nocy nie pętam - Ja wyspać się muszę, lecz kiedyś się wkurzę - Wytłukę w niedziele i święta! + Nie lubię wampirów i innych straszydeł + Jak spotkam, łeb wyrwę z płucami! + Bo wyje to w nocy, nie wiadomo po co + I zgrzyta o marmur zębami! + Ja wstaję codziennie na siódmą do pracy + Z siekierą się w nocy nie pętam + Ja wyspać się muszę, lecz kiedyś się wkurzę + Wytłukę w niedziele i święta! diff --git a/songs/Niebieska_piosenka.xml b/songs/Niebieska_piosenka.xml index 4dbf392a..71d119d3 100644 --- a/songs/Niebieska_piosenka.xml +++ b/songs/Niebieska_piosenka.xml @@ -13,9 +13,9 @@ Krętymi każe iść Kto nas usprawiedliwi gdy Pan się będzie dziwił Że to już właśnie my - Ja wstawię się za Tobą i z podniesioną głową + Ja wstawię się za Tobą i z podniesioną głową Dziękować będę że - Pan dał mi właśnie Ciebie w radości i w potrzebie + Pan dał mi właśnie Ciebie w radości i w potrzebie Na lepsze i na złe @@ -23,21 +23,21 @@ Bo chciałem tak i j I razem chleb jedliśmy i równym krokiem szliśmy Wśród wichrów pośród burz - Ty wciąż mnie ratowałaś za rękę mnie trzymałaś + Ty wciąż mnie ratowałaś za rękę mnie trzymałaś Gdy z drogi chciałem zejść - A ja otuchy krople gdy oczy miałaś mokre + A ja otuchy krople gdy oczy miałaś mokre Nie raz musiałem nieść I tak będziemy stali aż w tej niebieskiej sali Do walca zaczną gr Ja wtedy z pierwszym taktem poproszę Cię i raptem - Zaczniemy wirować, wolniutko walcować - I kręcąc się kręcić na palcach na pięcie - Troszeczkę bezmyślnie jak wiosną przebiśnieg - Ty nieco szalona, cóż żona to żona - I w mojej twa ręka niebieska piosenka - Za serca nas chwyta niebieska muzyka + Zaczniemy wirować, wolniutko walcować + I kręcąc się kręcić na palcach na pięcie + Troszeczkę bezmyślnie jak wiosną przebiśnieg + Ty nieco szalona, cóż żona to żona + I w mojej twa ręka niebieska piosenka + Za serca nas chwyta niebieska muzyka diff --git a/songs/Niebo_do_wynajecia.xml b/songs/Niebo_do_wynajecia.xml index 53bb40f0..8e3093ca 100644 --- a/songs/Niebo_do_wynajecia.xml +++ b/songs/Niebo_do_wynajecia.xml @@ -4,40 +4,40 @@ - Na tablicy ogłoszeń pod hasłem lokale - Przeczytałem przedwczoraj ogłoszenie ciekawe. - Na tablicy ogłoszeń fioletowym flamastrem - Ktoś nabazgrał słów kilka, dziwna była ich treść: + Na tablicy ogłoszeń pod hasłem lokale + Przeczytałem przedwczoraj ogłoszenie ciekawe. + Na tablicy ogłoszeń fioletowym flamastrem + Ktoś nabazgrał słów kilka, dziwna była ich treść: - Tam, gdzie spokój jest święty, no, bo święci są pańscy, - Szklanką ciepłej herbaty poczęstuje cię pan. + Tam, gdzie spokój jest święty, no, bo święci są pańscy, + Szklanką ciepłej herbaty poczęstuje cię pan. - Pomyślałem to świetnie - takie niebo na ziemi, - Grzechów nikt nie przelicza nikt nie szpera w szufladzie. - Pomyślałem: to świetnie i spojrzałem na adres, - Lecz deszcz rozmył litery i już nie wiem gdzie jest... + Pomyślałem to świetnie - takie niebo na ziemi, + Grzechów nikt nie przelicza nikt nie szpera w szufladzie. + Pomyślałem: to świetnie i spojrzałem na adres, + Lecz deszcz rozmył litery i już nie wiem gdzie jest... - Gdy wróciłem do domu, gdzie się błękit z betonem splata - W Babel wysoki sięgający do chmur, - Zaparzyłem herbatę w swym pokoju nad światem, myśląc: - Nic nie straciłem, pewnie tak jest i tam + Gdy wróciłem do domu, gdzie się błękit z betonem splata + W Babel wysoki sięgający do chmur, + Zaparzyłem herbatę w swym pokoju nad światem, myśląc: + Nic nie straciłem, pewnie tak jest i tam - Niebo do wynajęcia, niebo z widokiem na raj. - Niebo do wynajęcia, niebo z widokiem - Niebo do wynajęcia, niebo z widokiem na raj. - Niebo do wynajęcia, niebo... - Niebo do wynajęcia, niebo z widokiem na raj. - Niebo do wynajęcia, niebo... + Niebo do wynajęcia, niebo z widokiem na raj. + Niebo do wynajęcia, niebo z widokiem + Niebo do wynajęcia, niebo z widokiem na raj. + Niebo do wynajęcia, niebo... + Niebo do wynajęcia, niebo z widokiem na raj. + Niebo do wynajęcia, niebo... diff --git a/songs/Niedokonczona_jesienna_fuga.xml b/songs/Niedokonczona_jesienna_fuga.xml index acfea824..b0f8de62 100644 --- a/songs/Niedokonczona_jesienna_fuga.xml +++ b/songs/Niedokonczona_jesienna_fuga.xml @@ -16,40 +16,40 @@ A jeśli mnie dom buczyną spięty - tej nocy przyjmie w swoje progi - zapalę gwiazdy w nocy głębi + tej nocy przyjmie w swoje progi + zapalę gwiazdy w nocy głębi a sam zakwitnę górskim głogiem A jeśli mnie dom buczyną spięty - tej nocy przyjmie w swoje progi - zapalę gwiazdy w nocy głębi + tej nocy przyjmie w swoje progi + zapalę gwiazdy w nocy głębi a sam zakwitnę głogiem - Beskid kołysze się i szumi - i chwiać się będzie drżeniem nieba + Beskid kołysze się i szumi + i chwiać się będzie drżeniem nieba i horyzontu zmieni drogi - i umrzeć moim słowom nie da + i umrzeć moim słowom nie da - Do końca drogi swej noc zmierza - i płoną drzewa w nocnym chłodzie - czy gościem będę w nim czy muszę - do domu swego wejść jak złodziej + Do końca drogi swej noc zmierza + i płoną drzewa w nocnym chłodzie + czy gościem będę w nim czy muszę + do domu swego wejść jak złodziej - Beskid woła znak mi daje - wiem oto droga już niedługa - i trwa świt złocąc wyświechtana - jesiennym wiatrem biedna fuga + Beskid woła znak mi daje + wiem oto droga już niedługa + i trwa świt złocąc wyświechtana + jesiennym wiatrem biedna fuga diff --git a/songs/Niepokoj.xml b/songs/Niepokoj.xml index 05f203bd..5eeb6801 100644 --- a/songs/Niepokoj.xml +++ b/songs/Niepokoj.xml @@ -9,36 +9,36 @@ - Mosty które pod osłoną nocy - Przerzuciliśmy do siebie - Porywa świt - Trwa potop jutrzenki po obu brzegach - Bezradnie biegamy - Ręce do siebie wyciągamy + Mosty które pod osłoną nocy + Przerzuciliśmy do siebie + Porywa świt + Trwa potop jutrzenki po obu brzegach + Bezradnie biegamy + Ręce do siebie wyciągamy - Twoje oczy - Rozwarte szeroko rozstaniem - Oddalają się i serce za nimi podąża - Oglądając się raz po raz za siebie - Oglądając się za siebie + Twoje oczy + Rozwarte szeroko rozstaniem + Oddalają się i serce za nimi podąża + Oglądając się raz po raz za siebie + Oglądając się za siebie - Przez niebo przebiega dreszcz niepokoju - Rozstępuje się świat - Na dwie połowy - I coraz mniejsza staje się - Włosów chmura - Kasztanowa + Przez niebo przebiega dreszcz niepokoju + Rozstępuje się świat + Na dwie połowy + I coraz mniejsza staje się + Włosów chmura + Kasztanowa - I twoja ręka wyrwana z mojej - Do stacji - Zbliżają s - Robotnicy dnia powszedniego - O twarzach przeraźliwie - Trzeźwych + I twoja ręka wyrwana z mojej + Do stacji + Zbliżają s + Robotnicy dnia powszedniego + O twarzach przeraźliwie + Trzeźwych diff --git a/songs/Nierozdziobai.xml b/songs/Nierozdziobai.xml index 657c955a..db63f96f 100644 --- a/songs/Nierozdziobai.xml +++ b/songs/Nierozdziobai.xml @@ -9,29 +9,29 @@ - Nie rozdziobią nas kruki - Ni wrony, ani nic! - Nie rozszarpią na sztuki - Poezji wściekłe kły! + Nie rozdziobią nas kruki + Ni wrony, ani nic! + Nie rozszarpią na sztuki + Poezji wściekłe kły! - Ruszaj się Bruno, idziemy na piwo; - Niechybnie brakuje tam nas! - Od stania w miejscu niejeden już zginął, - Niejeden zginął już kwiat! + Ruszaj się Bruno, idziemy na piwo; + Niechybnie brakuje tam nas! + Od stania w miejscu niejeden już zginął, + Niejeden zginął już kwiat! - Nie omami nas forsa - Ni sławy pusty dźwięk! - Inną ścigamy postać: - Realnej zjawy tren! + Nie omami nas forsa + Ni sławy pusty dźwięk! + Inną ścigamy postać: + Realnej zjawy tren! - Nie zdechniemy tak szybko, - Jak sobie roi śmierć! - Ziemia dla nas za płytka, - Fruniemy w góry gdzieś! + Nie zdechniemy tak szybko, + Jak sobie roi śmierć! + Ziemia dla nas za płytka, + Fruniemy w góry gdzieś! diff --git a/songs/Noc_albo_oczekiwanie_na_sniadanie.xml b/songs/Noc_albo_oczekiwanie_na_sniadanie.xml index f1424d93..b4593b45 100644 --- a/songs/Noc_albo_oczekiwanie_na_sniadanie.xml +++ b/songs/Noc_albo_oczekiwanie_na_sniadanie.xml @@ -6,35 +6,35 @@ Stare Dobre Małżeństwo - Ty się pochyl róża-bóg - ty się do mnie pochyl i - i na ucho jak kolczyk róża-bóg - aaa... + Ty się pochyl róża-bóg + ty się do mnie pochyl i + i na ucho jak kolczyk róża-bóg + aaa... - Moje ucho ma dzban - z niego pić tylko tobie nikomu - a twój kolczyk jak ucho na dzban - aaa... + Moje ucho ma dzban + z niego pić tylko tobie nikomu + a twój kolczyk jak ucho na dzban + aaa... - O modlitwy mnie wabisz - O, wabisz. Że błysk noża - w najpiękniejsze serce kozy - aaa... + O modlitwy mnie wabisz + O, wabisz. Że błysk noża + w najpiękniejsze serce kozy + aaa... - Z tobą czystość zachować to gorzej - każdy lew by się spalił już dawno - las popiołu z jego grzywy nic więcej - aaa... + Z tobą czystość zachować to gorzej + każdy lew by się spalił już dawno + las popiołu z jego grzywy nic więcej + aaa... - Ty się pochyl róża-bóg - Ty się do mnie pochyl we mnie - Wytryśniemy jak słońce wytryśnie - aaa... - aaa... + Ty się pochyl róża-bóg + Ty się do mnie pochyl we mnie + Wytryśniemy jak słońce wytryśnie + aaa... + aaa... diff --git a/songs/Noc_w_bacowce.xml b/songs/Noc_w_bacowce.xml index cae18eec..8c2ca744 100644 --- a/songs/Noc_w_bacowce.xml +++ b/songs/Noc_w_bacowce.xml @@ -3,31 +3,31 @@ - Porwały nas deszczem, + Porwały nas deszczem, Przegoniły wiatrem - I zdały na siebie. - W przygodnym nam domu - Miejsca nie zagrzały, - W tym górskim niby niebie. + I zdały na siebie. + W przygodnym nam domu + Miejsca nie zagrzały, + W tym górskim niby niebie. - I dziury w tym niebie - Wiatrem łatane, + I dziury w tym niebie + Wiatrem łatane, W bacówce tylko my sami. - I nic nie mówimy - Tylko dotyk ręki - By nie psuć chwil, - Co przed nami + I nic nie mówimy + Tylko dotyk ręki + By nie psuć chwil, + Co przed nami - A mrok - sprzymierzeniec - Przygarnął mi Ciebie, - Ciepło - Twoje ręce. - (Ech) stara bacówko - Niebo w nas się rodzi, - Przyjaźń czy coś więcej. + A mrok - sprzymierzeniec + Przygarnął mi Ciebie, + Ciepło - Twoje ręce. + (Ech) stara bacówko + Niebo w nas się rodzi, + Przyjaźń czy coś więcej. diff --git a/songs/Nocna_piosenka_o_miescie.xml b/songs/Nocna_piosenka_o_miescie.xml index f3884bf3..71388f6a 100644 --- a/songs/Nocna_piosenka_o_miescie.xml +++ b/songs/Nocna_piosenka_o_miescie.xml @@ -11,50 +11,50 @@ - W mieście jak ryby tramwaje - A miasto jak studnia bez dna - A niebo jak żuraw, a niebo jak żuraw - Schyla się nocą i świtem powstaje - Nad rybną studnią bez dna + W mieście jak ryby tramwaje + A miasto jak studnia bez dna + A niebo jak żuraw, a niebo jak żuraw + Schyla się nocą i świtem powstaje + Nad rybną studnią bez dna - Zaułków lipcem sparzonych - Wyciszyć nie może zmrok - Zasiedli na ławkach, zasiedli na ławkach - Ludzie co twarze dniem umęczone - Pod lipiec kładą i zmrok, pod lipiec kładą i zmrok + Zaułków lipcem sparzonych + Wyciszyć nie może zmrok + Zasiedli na ławkach, zasiedli na ławkach + Ludzie co twarze dniem umęczone + Pod lipiec kładą i zmrok, pod lipiec kładą i zmrok - Nie śpię, bo spotkać chcę w mieście - Tę ciszę, co gęsta jak noc - Rozmawiać z krokami, swoimi krokami - I oto idę nocy na przeciw - Bo wokół cisza i noc + Nie śpię, bo spotkać chcę w mieście + Tę ciszę, co gęsta jak noc + Rozmawiać z krokami, swoimi krokami + I oto idę nocy na przeciw + Bo wokół cisza i noc - Czekam, aż neon przytłumi - Rozmyta latarnia dnia - Odnajdą się cienie, odnajdą się cienie - I ludźmi ulice zatłumią - Czekam na przyjście dnia, czekam na przyjście dnia + Czekam, aż neon przytłumi + Rozmyta latarnia dnia + Odnajdą się cienie, odnajdą się cienie + I ludźmi ulice zatłumią + Czekam na przyjście dnia, czekam na przyjście dnia - W mieście jak ryby tramwaje - A miasto jak studnia bez dna - A niebo jak żuraw, a niebo jak żuraw - Schyla się nocą i świtem powstaje - Nad rybną studnią bez dna + W mieście jak ryby tramwaje + A miasto jak studnia bez dna + A niebo jak żuraw, a niebo jak żuraw + Schyla się nocą i świtem powstaje + Nad rybną studnią bez dna - W mieście jak ryby tramwaje - A miasto jak studnia bez dna - A niebo jak żuraw, a niebo jak żuraw - Schyla się nocą i świtem powstaje - Nad rybną studnią bez dna + W mieście jak ryby tramwaje + A miasto jak studnia bez dna + A niebo jak żuraw, a niebo jak żuraw + Schyla się nocą i świtem powstaje + Nad rybną studnią bez dna diff --git a/songs/Nuta_z_Ponidzia.xml b/songs/Nuta_z_Ponidzia.xml index ed74301d..6bb327ac 100644 --- a/songs/Nuta_z_Ponidzia.xml +++ b/songs/Nuta_z_Ponidzia.xml @@ -3,38 +3,38 @@ Wolna Grupa Bukowina - Polami, polami, po miedzach, po miedzach - Po błocku skisłym w mgłę i wiatr - Nie za szybko, kroki drobiąc - Idzie wiosna, idzie nam - Idzie wiosna, idzie + Polami, polami, po miedzach, po miedzach + Po błocku skisłym w mgłę i wiatr + Nie za szybko, kroki drobiąc + Idzie wiosna, idzie nam + Idzie wiosna, idzie - Rozłożyła wiosna spódnicę zieloną - Przykryła błota bury łan - Pachnie ziemia ciałem młodym - Póki wiosna, póki trwa - Póki wiosna, póki trwa + Rozłożyła wiosna spódnicę zieloną + Przykryła błota bury łan + Pachnie ziemia ciałem młodym + Póki wiosna, póki trwa + Póki wiosna, póki trwa - Rozpuściła wiosna warkocze kwieciste - Zbarwniały łąki niczym kram - Będzie odpust pod Wiślicą + Rozpuściła wiosna warkocze kwieciste + Zbarwniały łąki niczym kram + Będzie odpust pod Wiślicą - Póki wiosna, póki trwa - Póki wiosna, póki trwa + Póki wiosna, póki trwa + Póki wiosna, póki trwa - Ponidzie wiosenne, Ponidzie leniwe - Pręży się jak do słońca kot, - Rozciągnięte po tych polach - Lichych lasach, pstrych łozinach - Skałkach słońcem rozognionych - Nidą w łąkach roziskrzoną - Na Ponidziu wiosna trwa - Na Ponidziu wiosna trwa - Na Ponidziu + Ponidzie wiosenne, Ponidzie leniwe + Pręży się jak do słońca kot, + Rozciągnięte po tych polach + Lichych lasach, pstrych łozinach + Skałkach słońcem rozognionych + Nidą w łąkach roziskrzoną + Na Ponidziu wiosna trwa + Na Ponidziu wiosna trwa + Na Ponidziu diff --git a/songs/Ocean.xml b/songs/Ocean.xml index 245d021a..2fc8ba1d 100644 --- a/songs/Ocean.xml +++ b/songs/Ocean.xml @@ -9,37 +9,37 @@ - Oceanie sinowłosy białe statki ku mnie wyślij - Dwa kamyki moje myśli na otwartych dłoniach niosę - Daj mi miejsce w głębi morza szczyptę lądu, szczyptę skały - Tu zbuduję zamek biały, tutaj gniazdo swe założę + Oceanie sinowłosy białe statki ku mnie wyślij + Dwa kamyki moje myśli na otwartych dłoniach niosę + Daj mi miejsce w głębi morza szczyptę lądu, szczyptę skały + Tu zbuduję zamek biały, tutaj gniazdo swe założę - Gdzieś daleko w stu stolicach żyją ludzie, biją w dzwony - Niezliczone bataliony przyczajone na granicach - Marszałkowie szklanoocy palą owce i dziewczęta - Kto o kwiatach dziś pamięta, szumią giełdy w głębi nocy + Gdzieś daleko w stu stolicach żyją ludzie, biją w dzwony + Niezliczone bataliony przyczajone na granicach + Marszałkowie szklanoocy palą owce i dziewczęta + Kto o kwiatach dziś pamięta, szumią giełdy w głębi nocy - W głębi morza zabłąkany nie chcę nic o ludziach słyszeć - Biały kolor, kolor ciszy, w moim zamku białe ściany - W moim zamku gdzieś w ogrodzie będę czytać wschodnie baśnie - Zanim słońce w morzu zgaśnie, żeby z morza powstać co dzień + W głębi morza zabłąkany nie chcę nic o ludziach słyszeć + Biały kolor, kolor ciszy, w moim zamku białe ściany + W moim zamku gdzieś w ogrodzie będę czytać wschodnie baśnie + Zanim słońce w morzu zgaśnie, żeby z morza powstać co dzień - A gdy ludzie wypełnieni nienawiścią w jednej chwili - Zniszczą wszystko co stworzyli wielkim ogniem z wnętrza ziemi - Znikną lądy zniknie morze nie wie nikt co będzie potem - W białych światach ja z powrotem w łonie matki się ułożę + A gdy ludzie wypełnieni nienawiścią w jednej chwili + Zniszczą wszystko co stworzyli wielkim ogniem z wnętrza ziemi + Znikną lądy zniknie morze nie wie nikt co będzie potem + W białych światach ja z powrotem w łonie matki się ułożę diff --git a/songs/Ogien.xml b/songs/Ogien.xml index 6fe11037..c6a3da59 100644 --- a/songs/Ogien.xml +++ b/songs/Ogien.xml @@ -3,29 +3,29 @@ - Zwyczaj to stary jak świat - Ogień, ogień, ogień - Rozpalmy blisko nas - Ogień, ogień, ogień + Zwyczaj to stary jak świat + Ogień, ogień, ogień + Rozpalmy blisko nas + Ogień, ogień, ogień - Dla spóźnionego wędrowca, - Dla wszystkich spóźnionych w noc - Rozpalmy tu, rozpalmy tu - Ogień, ogień, ogień + Dla spóźnionego wędrowca, + Dla wszystkich spóźnionych w noc + Rozpalmy tu, rozpalmy tu + Ogień, ogień, ogień - Pierwsza gwiazdka już wzeszła, - Czas by ogień rozpalić - Lipy, sosny i buki - Chylą gałęzie ku nam + Pierwsza gwiazdka już wzeszła, + Czas by ogień rozpalić + Lipy, sosny i buki + Chylą gałęzie ku nam - Najpiękniejsze ogniska - Z trzaskiem sypią się skry - Wokół samych przyjaciół masz - Zaśpiewaj z nami i ty + Najpiękniejsze ogniska + Z trzaskiem sypią się skry + Wokół samych przyjaciół masz + Zaśpiewaj z nami i ty diff --git a/songs/Opadly_mgly_wstaje_nowy_dzien.xml b/songs/Opadly_mgly_wstaje_nowy_dzien.xml index 6ea5a9f2..2561022d 100644 --- a/songs/Opadly_mgly_wstaje_nowy_dzien.xml +++ b/songs/Opadly_mgly_wstaje_nowy_dzien.xml @@ -9,16 +9,16 @@ - Opadły mgły i miasto ze snu się budzi - Górą czmycha już noc - Ktoś tam cicho czeka by ktoś powrócił - Do gwiazd jest bliżej niż krok - Pies się włóczy popod murami bezdomny - Niesie się tęsknota czyjaś na świata cztery strony + Opadły mgły i miasto ze snu się budzi + Górą czmycha już noc + Ktoś tam cicho czeka by ktoś powrócił + Do gwiazd jest bliżej niż krok + Pies się włóczy popod murami bezdomny + Niesie się tęsknota czyjaś na świata cztery strony - A Ziemia toczy toczy swój garb uroczy + A Ziemia toczy toczy swój garb uroczy Toczy toczy się los Ty co płaczesz ażeby śmiać mógł się ktoś diff --git a/songs/Opowiesc_pewnego_emigranta.xml b/songs/Opowiesc_pewnego_emigranta.xml index 3d939505..385cf9aa 100644 --- a/songs/Opowiesc_pewnego_emigranta.xml +++ b/songs/Opowiesc_pewnego_emigranta.xml @@ -11,11 +11,11 @@ Nie bój się, nie zabraknie, to krajowa czysta - Ja widzisz przed wojną byłem komunista - Bo ja chciałem być kimś, bo ja byłem Żyd - A jak Żyd nie był kimś, to ten Żyd był nikt - Może stąd dla świata tyle z nas pożytku - Że bankierom i skrzypkom nie mówią: ty Żydku! + Ja widzisz przed wojną byłem komunista + Bo ja chciałem być kimś, bo ja byłem Żyd + A jak Żyd nie był kimś, to ten Żyd był nikt + Może stąd dla świata tyle z nas pożytku + Że bankierom i skrzypkom nie mówią: ty Żydku! Ja bankierem nie byłem, ani wirtuozem diff --git a/songs/Pejzaze_harasymowiczowskie.xml b/songs/Pejzaze_harasymowiczowskie.xml index 883bcea3..e207fa3c 100644 --- a/songs/Pejzaze_harasymowiczowskie.xml +++ b/songs/Pejzaze_harasymowiczowskie.xml @@ -21,14 +21,14 @@ I był Beskid i były słowa Zanurzone po pępki w cerkwi baniach - Rozłożyście złotych + Rozłożyście złotych Smagających się wiatrem do krwi Moje myśli biegały końmi Po niebieskich mokrych połoninach I modliłem się złożywszy dłonie - Do gór do madonny brunatnolicej + Do gór do madonny brunatnolicej A gdy serce kroplami tęsknoty Jęło spadać na góry sine Czarodziejskim kwiatem paproci diff --git a/songs/Piechota_do_lata.xml b/songs/Piechota_do_lata.xml index 7e7f7a93..de425c61 100644 --- a/songs/Piechota_do_lata.xml +++ b/songs/Piechota_do_lata.xml @@ -9,40 +9,40 @@ - Znów przyjdzie maj, a z majem bzy + Znów przyjdzie maj, a z majem bzy I czekać mam na lepsze dni - Znów przyjdzie mi nosić przykrótkie sny + Znów przyjdzie mi nosić przykrótkie sny - I do lata, do lata, do lata, piechotą będę szła + I do lata, do lata, do lata, piechotą będę szła Ah, ah, ah, ah, yeah, yeah, yeah, uh, uh, uh - Znów kupisz mi coś na imieniny + Znów kupisz mi coś na imieniny Mmmm, ja to wiem i czuję, że - Znów przyjdzie mi nosić przykrótkie sny + Znów przyjdzie mi nosić przykrótkie sny - I do lata, do lata, do lata, piechotą będę szła + I do lata, do lata, do lata, piechotą będę szła Ah, ah, ah, ah, yeah, yeah, yeah, uh, uh, uh - Przykrótkie sny nie w porę - Zbyt lekko się ubiorę - Noc długa, świt w szronach - I wiosna spóźniona - I twoje słowa zimne, - Że nie ma drogi innej - Do lata, do lata, do lata tak dłuży się czas - Gdybyś tylko chciał! + Przykrótkie sny nie w porę + Zbyt lekko się ubiorę + Noc długa, świt w szronach + I wiosna spóźniona + I twoje słowa zimne, + Że nie ma drogi innej + Do lata, do lata, do lata tak dłuży się czas + Gdybyś tylko chciał! - To było by to lato j + To było by to lato j I słońce i szaleństwo burz - Lecz dajesz mi tylko przykrótkie sny + Lecz dajesz mi tylko przykrótkie sny - Więc do lata, do lata, do lata, piechotą będę szła + Więc do lata, do lata, do lata, piechotą będę szła Ah, ah, ah, ah, yeah, yeah, yeah, uh, uh, uh diff --git a/songs/Piesn_gruzinska.xml b/songs/Piesn_gruzinska.xml index 0b43143e..f152ffdf 100644 --- a/songs/Piesn_gruzinska.xml +++ b/songs/Piesn_gruzinska.xml @@ -3,24 +3,24 @@ Bułat Okudżawa - Spulchnię ziemię na zboczu i pestkę winogron w niej złożę, - A gdy winnym owocem gronowa obrodzi mi wić, - Zwołam wiernych przyjaciół i serce przed nimi otworzę… - Bo doprawdy — czyż warto inaczej na ziemi tej żyć? - Cóż, czym chata bogata! Darujcie, że progi za niskie, - Mówcie wprost, czy się godzi siąść przy mnie, ucztować i pić. - Pan Bóg grzechy wybaczy i winy odpuści mi wszystkie… - Bo doprawdy — czyż warto inaczej na ziemi tej żyć? + Spulchnię ziemię na zboczu i pestkę winogron w niej złożę, + A gdy winnym owocem gronowa obrodzi mi wić, + Zwołam wiernych przyjaciół i serce przed nimi otworzę… + Bo doprawdy — czyż warto inaczej na ziemi tej żyć? + Cóż, czym chata bogata! Darujcie, że progi za niskie, + Mówcie wprost, czy się godzi siąść przy mnie, ucztować i pić. + Pan Bóg grzechy wybaczy i winy odpuści mi wszystkie… + Bo doprawdy — czyż warto inaczej na ziemi tej żyć? - W czerni swej i czerwieni zaśpiewa mi znów moja Dali, - Runę w czerni i bieli do stóp jej, niech przędzie swą nić! - I o wszystkim zapomnę i umrę z miłości i żalu... - Bo doprawdy — czyż warto inaczej na ziemi tej żyć? - A gdy zmierzch się zakłębi i cienie po kątach się splotą, - Niech się cisną do oczu, niech wiecznie pozwolą mi śn - Płowy bawół i orzeł srebrzysty i pstrąg szczerozłoty… - Bo doprawdy — czyż warto inaczej na ziemi tej żyć? + W czerni swej i czerwieni zaśpiewa mi znów moja Dali, + Runę w czerni i bieli do stóp jej, niech przędzie swą nić! + I o wszystkim zapomnę i umrę z miłości i żalu... + Bo doprawdy — czyż warto inaczej na ziemi tej żyć? + A gdy zmierzch się zakłębi i cienie po kątach się splotą, + Niech się cisną do oczu, niech wiecznie pozwolą mi śn + Płowy bawół i orzeł srebrzysty i pstrąg szczerozłoty… + Bo doprawdy — czyż warto inaczej na ziemi tej żyć? diff --git a/songs/Piesn_na_wyjscie.xml b/songs/Piesn_na_wyjscie.xml index 46a85951..02e9dc51 100644 --- a/songs/Piesn_na_wyjscie.xml +++ b/songs/Piesn_na_wyjscie.xml @@ -11,29 +11,29 @@ Idź człowieku idź rozpowiedz - Idźcie wszystkie stany - Kolorowi biali czarni - Idźcie zwłaszcza wy ludkowie - Przez na oścież bramy + Idźcie wszystkie stany + Kolorowi biali czarni + Idźcie zwłaszcza wy ludkowie + Przez na oścież bramy - Dla wszystkich starczy miejsca - Pod wielkim dachem nieba - Rozejdźcie się po drogach - Po łąkach, po rozłogach - Po polach, błoniach i wygonach - W blasku słońca, w cieniu chmur - Rozejdźcie się po niżu - Rozejdźcie się po wyżu - Rozejdźcie się po płaskowyżu - W blasku słońca w cieniu chmur + Dla wszystkich starczy miejsca + Pod wielkim dachem nieba + Rozejdźcie się po drogach + Po łąkach, po rozłogach + Po polach, błoniach i wygonach + W blasku słońca, w cieniu chmur + Rozejdźcie się po niżu + Rozejdźcie się po wyżu + Rozejdźcie się po płaskowyżu + W blasku słońca w cieniu chmur - Dla wszystkich starczy miejsca - Pod wielkim dachem nieba + Dla wszystkich starczy miejsca + Pod wielkim dachem nieba - Na ziemi której ja i ty - Nie zamienimy w bagno krwi + Na ziemi której ja i ty + Nie zamienimy w bagno krwi diff --git a/songs/Piesn_o_snie.xml b/songs/Piesn_o_snie.xml index a37a87d5..484cf9d9 100644 --- a/songs/Piesn_o_snie.xml +++ b/songs/Piesn_o_snie.xml @@ -9,54 +9,54 @@ - Z zimna drżąc przy domowym ognisku - Zasłuchani w głodowy kiszek marsz - Po ostatnim wypijmy kieliszku - Zanim świecy dotli się blask - Papierosa puśćmy dokoła - Przeczytajmy z zakazanych coś ksiąg - Bo nad ranem nikt przecież nie woła - Nikt nie wywoła nas stąd + Z zimna drżąc przy domowym ognisku + Zasłuchani w głodowy kiszek marsz + Po ostatnim wypijmy kieliszku + Zanim świecy dotli się blask + Papierosa puśćmy dokoła + Przeczytajmy z zakazanych coś ksiąg + Bo nad ranem nikt przecież nie woła + Nikt nie wywoła nas stąd - Gdzie łajdak pokaja się szczerze - Gdzie złodziej odda swój łup - Gdzie ktoś zanim powie nie wierzę - Świętemu upadnie do stóp - Gdzie krzywdy nie będą pomszczone - Lecz wynagrodzone do cna - Gdzie dziecko bezpiecznie zrodzone - Siądzie obok jagnięcia i lwa + Gdzie łajdak pokaja się szczerze + Gdzie złodziej odda swój łup + Gdzie ktoś zanim powie nie wierzę + Świętemu upadnie do stóp + Gdzie krzywdy nie będą pomszczone + Lecz wynagrodzone do cna + Gdzie dziecko bezpiecznie zrodzone + Siądzie obok jagnięcia i lwa - Otuleni w swoją obecność - Czując w ustach wspomnienia smak - Nie dbajmy o świadomą konieczność - Co w twarze sypie nam mak - Noc jest jedna i świt jest po nocy - Pod zamkniętą powieką trwa blask - I nikomu nie zabraknie pomocy - Dopóki nie zabraknie mu nas + Otuleni w swoją obecność + Czując w ustach wspomnienia smak + Nie dbajmy o świadomą konieczność + Co w twarze sypie nam mak + Noc jest jedna i świt jest po nocy + Pod zamkniętą powieką trwa blask + I nikomu nie zabraknie pomocy + Dopóki nie zabraknie mu nas - Gdzie zdrada to wtręt z obcej mowy - Podobnie jak przemoc i gwałt - Gdzie myśli nie chowa się w słowa - Lecz jawny jej daje się kształt - Gdzie rozpacz i ból są kojone - I żadna nie kala się łza - Gdzie dziecko bezpiecznie zrodzone - Siądzie obok jagnięcia i lwa + Gdzie zdrada to wtręt z obcej mowy + Podobnie jak przemoc i gwałt + Gdzie myśli nie chowa się w słowa + Lecz jawny jej daje się kształt + Gdzie rozpacz i ból są kojone + I żadna nie kala się łza + Gdzie dziecko bezpiecznie zrodzone + Siądzie obok jagnięcia i lwa - Ktoś powie to senne marzenie - Nie ma nic prawdziwszego od snu - Więc w obecność swą otuleni - Wspólnie wyśnimy go tu - Ktoś powie to senne marzenie - Nie ma nic prawdziwszego od snu - Więc w obecność swą otuleni - Wspólnie wyśnimy go tu + Ktoś powie to senne marzenie + Nie ma nic prawdziwszego od snu + Więc w obecność swą otuleni + Wspólnie wyśnimy go tu + Ktoś powie to senne marzenie + Nie ma nic prawdziwszego od snu + Więc w obecność swą otuleni + Wspólnie wyśnimy go tu diff --git a/songs/Pijak.xml b/songs/Pijak.xml index c2d66de4..489571dc 100644 --- a/songs/Pijak.xml +++ b/songs/Pijak.xml @@ -9,99 +9,99 @@ - Napełnij szklankę mi - Ostatni nalej raz - Napełnij szklankę mi - I pójdę bo już czas - Nie płaczę pozwól p - Bo wstyd mi sobą b + Napełnij szklankę mi + Ostatni nalej raz + Napełnij szklankę mi + I pójdę bo już czas + Nie płaczę pozwól p + Bo wstyd mi sobą b - Napełnij szklankę mi - Napełnij szklankę mi + Napełnij szklankę mi + Napełnij szklankę mi - Pijemy zdrowie twe - Bo łatwo mówić że - oży wszystko s - Że już nie będzie źle - Tym lepiej jeśli te - Proroctwa kłamstwem są + Pijemy zdrowie twe + Bo łatwo mówić że + oży wszystko s + Że już nie będzie źle + Tym lepiej jeśli te + Proroctwa kłamstwem są - Upiję wkrótce się - I zgubię ufność swą + Upiję wkrótce się + I zgubię ufność swą - Pijemy zdrowie tych - Co dziś weseli są - Przyjaciół krewnych złych - Co z mego życia drwią - Tym lepiej jeśli mnie - Rozdrażnią drwiną swą + Pijemy zdrowie tych + Co dziś weseli są + Przyjaciół krewnych złych + Co z mego życia drwią + Tym lepiej jeśli mnie + Rozdrażnią drwiną swą - Upiję wkrótce się - I zgubię nienawiść swą + Upiję wkrótce się + I zgubię nienawiść swą - Napełnij szklankę mi - Ostatni nalej raz - Napełnij szklankę mi - I pójdę bo już czas - Tym lepiej jeśli mnie - Rozdrażni wino twe + Napełnij szklankę mi + Ostatni nalej raz + Napełnij szklankę mi + I pójdę bo już czas + Tym lepiej jeśli mnie + Rozdrażni wino twe - Upiję wkrótce się - Upiję wkrótce się + Upiję wkrótce się + Upiję wkrótce się - Za moje zdrowie pij - Pijemy z winy mnie - I jeśli chcesz to bij - A jeśli nie to nie - Tym lepiej jeśli mnie - Cios dosięgnie twój + Za moje zdrowie pij + Pijemy z winy mnie + I jeśli chcesz to bij + A jeśli nie to nie + Tym lepiej jeśli mnie + Cios dosięgnie twój - Upiję wkrótce się - I żal zgubię mój + Upiję wkrótce się + I żal zgubię mój - Za te dziewczyny pij - Co będą kochać mnie - Za te dziewczyny pij - Co mówią o mnie źle - Tym lepiej jeśli te - Dziewczyny zimne są + Za te dziewczyny pij + Co będą kochać mnie + Za te dziewczyny pij + Co mówią o mnie źle + Tym lepiej jeśli te + Dziewczyny zimne są - Upiję wkrótce się - I zgubię miłość swą + Upiję wkrótce się + I zgubię miłość swą - Więc pijmy póki czas - Aż zwalę się pod stół - Bym nie czuł to com cz - Bym zgubił to com cz - Więc pijmy póki źle - Więc pijmy żeby pić + Więc pijmy póki czas + Aż zwalę się pod stół + Bym nie czuł to com cz + Bym zgubił to com cz + Więc pijmy póki źle + Więc pijmy żeby pić - Upiję wkrótce s - Nadziei zerwę n + Upiję wkrótce s + Nadziei zerwę n - Napełnij szklankę mi - Ostatni nalej raz - Napełnij szklankę mi - I pójdę bo już czas - Nie płaczę zostaw mnie - Rozjaśnia wszystko się + Napełnij szklankę mi + Ostatni nalej raz + Napełnij szklankę mi + I pójdę bo już czas + Nie płaczę zostaw mnie + Rozjaśnia wszystko się - Napełnij szklankę mi - Napełnij szklankę mi + Napełnij szklankę mi + Napełnij szklankę mi diff --git a/songs/PiosenkaMazowiecka.xml b/songs/PiosenkaMazowiecka.xml index 6cca1ad3..468325c1 100644 --- a/songs/PiosenkaMazowiecka.xml +++ b/songs/PiosenkaMazowiecka.xml @@ -21,7 +21,7 @@ Wyślę pocztą gołębią cztery mile za piec. - I nic więcej, bo przecież nad taką równiną + I nic więcej, bo przecież nad taką równiną No jak tu nie lecieć, no jak tu nie płynąć Od końca do końca, na teraz na teraz i zawsze No jak tu nie słuchać, no jak tu nie patrzeć. diff --git a/songs/Piosenka_dla_Wojtka_Bellona.xml b/songs/Piosenka_dla_Wojtka_Bellona.xml index 483456c5..5d848316 100644 --- a/songs/Piosenka_dla_Wojtka_Bellona.xml +++ b/songs/Piosenka_dla_Wojtka_Bellona.xml @@ -9,30 +9,30 @@ - Powiedz dokąd znów wędrujesz - Czy daleko jest twój sad - Hen w krainy buczynowe - Ze mną tam układa pieśni wiatr - Hen w krainy buczynowe - Ze mną tam nikogo tylko wiatr + Powiedz dokąd znów wędrujesz + Czy daleko jest twój sad + Hen w krainy buczynowe + Ze mną tam układa pieśni wiatr + Hen w krainy buczynowe + Ze mną tam nikogo tylko wiatr - Zmierzchy grają a przestrzenie - asny im podają dźwięk - Takie śpiewy z nimi lub milczenie - W którym znika każdy dawny lęk - W takich śpiewach i milczeniu - W szumie świętych buków zginął lęk + Zmierzchy grają a przestrzenie + asny im podają dźwięk + Takie śpiewy z nimi lub milczenie + W którym znika każdy dawny lęk + W takich śpiewach i milczeniu + W szumie świętych buków zginął lęk - Zaszumiały cię powietrza + Zaszumiały cię powietrza I ruszyłeś sam na szlak - Ten ostatni ten najlepszy - Przyszedł czas Pan dał ci znak + Ten ostatni ten najlepszy + Przyszedł czas Pan dał ci znak - Ten ostatni ten najlepszy - Przyszedł czas Pan dał ci znak + Ten ostatni ten najlepszy + Przyszedł czas Pan dał ci znak diff --git a/songs/Piosenka_do_spiewania_przy_pokonywaniu_wzgorz.xml b/songs/Piosenka_do_spiewania_przy_pokonywaniu_wzgorz.xml index bf83ba2f..12a91cc0 100644 --- a/songs/Piosenka_do_spiewania_przy_pokonywaniu_wzgorz.xml +++ b/songs/Piosenka_do_spiewania_przy_pokonywaniu_wzgorz.xml @@ -9,40 +9,40 @@ - Tam gdzie szkoła na Nowowiejskiej street - Harcerzyków luźny oddział szedł - Drużynie trzeba dziś świeżej krwi - Harcerzyków dwudziestej pierwszej + Tam gdzie szkoła na Nowowiejskiej street + Harcerzyków luźny oddział szedł + Drużynie trzeba dziś świeżej krwi + Harcerzyków dwudziestej pierwszej - A że byłem wtedy durny kiep - Kota szybko wzięła mnie za łeb - W słoniowe trepy obuli mnie - Harcerzyki z dwudziestej pierwszej + A że byłem wtedy durny kiep + Kota szybko wzięła mnie za łeb + W słoniowe trepy obuli mnie + Harcerzyki z dwudziestej pierwszej - Jak o prawa upominać się - Lech z Magnudem nauczyli mnie - Niejeden zuch dzięki temu wył - Mały zuch z dwudziestej pierwszej + Jak o prawa upominać się + Lech z Magnudem nauczyli mnie + Niejeden zuch dzięki temu wył + Mały zuch z dwudziestej pierwszej - Nikt nie zliczy ile forsy dał - Parking na który Ekspert wszystkich gnał - Dla chwały twej o drużyno ma - Dla kochanej dwudziestej pierwszej + Nikt nie zliczy ile forsy dał + Parking na który Ekspert wszystkich gnał + Dla chwały twej o drużyno ma + Dla kochanej dwudziestej pierwszej - Hen daleko miły został dom - Kiedyś dostał kopertę do swych rąk - Komendant ten numer wyciął ci - Adaś Foland z dwudziestej pierwszej + Hen daleko miły został dom + Kiedyś dostał kopertę do swych rąk + Komendant ten numer wyciął ci + Adaś Foland z dwudziestej pierwszej - Gdy harcerzy szyk formuje się - W żadnym rzędzie nie zobaczysz mnie - W nieznane podły wiedzie los - Los b.s. z dwudziestej pierwszej + Gdy harcerzy szyk formuje się + W żadnym rzędzie nie zobaczysz mnie + W nieznane podły wiedzie los + Los b.s. z dwudziestej pierwszej diff --git a/songs/Piosenka_na_rozgrzanie.xml b/songs/Piosenka_na_rozgrzanie.xml index eb409e3d..3ea56825 100644 --- a/songs/Piosenka_na_rozgrzanie.xml +++ b/songs/Piosenka_na_rozgrzanie.xml @@ -9,22 +9,22 @@ - Zimno tak, że aż strach, jakże rozgrzać się - Korowody chłodnych myśli oziębiają mnie - Nie pomaga łyk herbaty, ani ciepły szal - Urojone z sopli kraty jak roztopić mam + Zimno tak, że aż strach, jakże rozgrzać się + Korowody chłodnych myśli oziębiają mnie + Nie pomaga łyk herbaty, ani ciepły szal + Urojone z sopli kraty jak roztopić mam - Piosenka na rozgrzanie, na rozgrzanie serc - Rozgrzewa mnie takie granie, jak w domu ciepły piec - W przytulnym cieple nutek, w przytulnym cieple pauz - Z zimnego jak lód serca wypłynie czasem łza + Piosenka na rozgrzanie, na rozgrzanie serc + Rozgrzewa mnie takie granie, jak w domu ciepły piec + W przytulnym cieple nutek, w przytulnym cieple pauz + Z zimnego jak lód serca wypłynie czasem łza - Jak dziewczynka z zapałkami chcę ciepła, miłości - Nie rozgrzeję się słowami tymi, co ze złości - Nie rozbawią mnie pajace, co na sznurkach skaczą - Chociaż wszystkim nam tak zimno, dobrze dziś pajacom + Jak dziewczynka z zapałkami chcę ciepła, miłości + Nie rozgrzeję się słowami tymi, co ze złości + Nie rozbawią mnie pajace, co na sznurkach skaczą + Chociaż wszystkim nam tak zimno, dobrze dziś pajacom diff --git a/songs/Piosenka_o_zajaczku.xml b/songs/Piosenka_o_zajaczku.xml index ddcd8084..cb5503e6 100644 --- a/songs/Piosenka_o_zajaczku.xml +++ b/songs/Piosenka_o_zajaczku.xml @@ -5,35 +5,35 @@ Mam mało czasu tak mało jak piachu - W dziecięcej garści nad rzeką - Zwieram powieki zatrzymać obraz - Co z moich wspomnień ucieka + W dziecięcej garści nad rzeką + Zwieram powieki zatrzymać obraz + Co z moich wspomnień ucieka - Bledną kolory i płynie, płynie - Rzeka po szarej łące - I płynie płynie nie realniejąc - Rzeką zielony zajączek + Bledną kolory i płynie, płynie + Rzeka po szarej łące + I płynie płynie nie realniejąc + Rzeką zielony zajączek - Biegnę wciąż biegnę przed siebie w siebie - Tęczę rozgarniam rękami - Letnim upałem wytrzeć do sucha - Spotniałą wilgotną pamięć + Biegnę wciąż biegnę przed siebie w siebie + Tęczę rozgarniam rękami + Letnim upałem wytrzeć do sucha + Spotniałą wilgotną pamięć - Rzeki jaszczurka w trawie się wije - Słońce się chyli zrudziałe - Wieczną zieloność zachować w oczach - Tak wiele pragnę tak mało + Rzeki jaszczurka w trawie się wije + Słońce się chyli zrudziałe + Wieczną zieloność zachować w oczach + Tak wiele pragnę tak mało - Bledną wspomnienia i płynie rzeka - Bez końca i bez początku - Nasyć me oczy kolorem rosy - I drzwi mi otwórz zajączku + Bledną wspomnienia i płynie rzeka + Bez końca i bez początku + Nasyć me oczy kolorem rosy + I drzwi mi otwórz zajączku diff --git a/songs/Piosenka_turystyczna_1.xml b/songs/Piosenka_turystyczna_1.xml index b12b2f64..afaf7e31 100644 --- a/songs/Piosenka_turystyczna_1.xml +++ b/songs/Piosenka_turystyczna_1.xml @@ -9,32 +9,32 @@ - Szliśmy tak już chyba szósty dzi - Przed nami stoi szczyt, cel naszej drogi - Szliśmy tak już chyba szósty dzi - Po bokach wysychały siana stogi + Szliśmy tak już chyba szósty dzi + Przed nami stoi szczyt, cel naszej drogi + Szliśmy tak już chyba szósty dzi + Po bokach wysychały siana stogi Ani świeci słońce ani pada deszcz - W tym roku góry jakieś takie + W tym roku góry jakieś takie - Szliśmy tak już chyba szósty dzi - Aż Kapeć powiedział czas w doliny nam wyruszyć - Może napotkamy jakiś sklep - I parę flaszek piwa uda się osuszyć + Szliśmy tak już chyba szósty dzi + Aż Kapeć powiedział czas w doliny nam wyruszyć + Może napotkamy jakiś sklep + I parę flaszek piwa uda się osuszyć A tam było jak w raju - O której byś nie przyszedł - Zawsze piwo dają + O której byś nie przyszedł + Zawsze piwo dają - Szliśmy tak już chyba szósty dzi - A w każdej knajpie tak co najmniej cztery piwa - Za oknami ciągle sterczy szczyt - A drogi jakoś wcale nie ubywa - ,,Piwo albo góry!'' powiedziałem - Odpowiedział ,,Oczywiście góry! - Kelner, jeszcze cztery piwa!'' + Szliśmy tak już chyba szósty dzi + A w każdej knajpie tak co najmniej cztery piwa + Za oknami ciągle sterczy szczyt + A drogi jakoś wcale nie ubywa + ,,Piwo albo góry!'' powiedziałem + Odpowiedział ,,Oczywiście góry! + Kelner, jeszcze cztery piwa!'' Ani świeci słońce ani pada deszcz - W tym roku góry jakieś takie + W tym roku góry jakieś takie diff --git a/songs/Piosenka_turystyczna_2.xml b/songs/Piosenka_turystyczna_2.xml index 38a89b0e..9bc30f9e 100644 --- a/songs/Piosenka_turystyczna_2.xml +++ b/songs/Piosenka_turystyczna_2.xml @@ -9,74 +9,74 @@ - Gdy na rajd wyruszaliśmy - Wszyscy byli dobrej myśli - Buty mocno zawiązali - I plecaki zarzucili - Pomyśleli jak to fajnie - Będzie siedzieć przy ognisku - Gdy na las się kładą cienie + Gdy na rajd wyruszaliśmy + Wszyscy byli dobrej myśli + Buty mocno zawiązali + I plecaki zarzucili + Pomyśleli jak to fajnie + Będzie siedzieć przy ognisku + Gdy na las się kładą cienie A nad głową iskra błyska - Kilometry już za nami + Kilometry już za nami A przed nami zachód słońca Echo niesie nad górami - Pieśń radosną pieśń bez końca + Pieśń radosną pieśń bez końca - La la la la la - La la la la la la la la la la - La la la la la - La la la la la la la la + La la la la la + La la la la la la la la la la + La la la la la + La la la la la la la la - Góry stały ponad nami - Całe w niebie postrzępionyme - Las zielony w nim po pępki - Banie cerkwi zanurzone - Rozbiliśmy swe namioty - Zaraz obok przy potoku - Rozpaliło się ognisko - Dym zakręcił łezkę w oku - Kilometry już za nami + Góry stały ponad nami + Całe w niebie postrzępionyme + Las zielony w nim po pępki + Banie cerkwi zanurzone + Rozbiliśmy swe namioty + Zaraz obok przy potoku + Rozpaliło się ognisko + Dym zakręcił łezkę w oku + Kilometry już za nami A przed nami zachód słońca Echo niesie nad górami - Pieśń radosną pieśń bez końca + Pieśń radosną pieśń bez końca A wieczorem z pierwszą gwiazdą - Wystrzeliły z bełtów korki - Kwaśno cierpkim smakiem wina - Przełamaliśmy bariery - Między nami a pewnymi - Dziewczynami co w namiocie + Wystrzeliły z bełtów korki + Kwaśno cierpkim smakiem wina + Przełamaliśmy bariery + Między nami a pewnymi + Dziewczynami co w namiocie Obok miały swoje leża I nie były wcale brzydkie - Pierwsze lody już za nami + Pierwsze lody już za nami A przed nami ranek blady Echo niesie nad górami - Zew miłosnej serenady + Zew miłosnej serenady - Kiedy się obudziliśmy - Było dobrze już południe - Potok toczył za namiotem - Swoje wody porywiste - Gdy mnie dzisiaj ze snu budzi - Dziecka płacz a żona nęka - Podziękować chcę Stachurze + Kiedy się obudziliśmy + Było dobrze już południe + Potok toczył za namiotem + Swoje wody porywiste + Gdy mnie dzisiaj ze snu budzi + Dziecka płacz a żona nęka + Podziękować chcę Stachurze I Krzysiowi Myszkowskiemu - La la la la la - La la la la la la la la la la - La la la la la - La la la la la la la la - La la la la la - La la la la la la la la la la - La la la la la - La la la la la la la la + La la la la la + La la la la la la la la la la + La la la la la + La la la la la la la la + La la la la la + La la la la la la la la la la + La la la la la + La la la la la la la la diff --git a/songs/Piosenka_wiosenna.xml b/songs/Piosenka_wiosenna.xml index cce80d07..fc2d4988 100644 --- a/songs/Piosenka_wiosenna.xml +++ b/songs/Piosenka_wiosenna.xml @@ -13,37 +13,37 @@ - Zagram dla ciebie na każdej gitarze świata - Na ulic fletach, na nitkach babiego lata - Wyśpiewam jak potrafię księżyce na rozstajach - I wrześnie i stycznie i maje - I zagubione dźwięki i barwy na płótnach Vlamincka - I słońce wędrujące promienia ścieżynką + Zagram dla ciebie na każdej gitarze świata + Na ulic fletach, na nitkach babiego lata + Wyśpiewam jak potrafię księżyce na rozstajach + I wrześnie i stycznie i maje + I zagubione dźwięki i barwy na płótnach Vlamincka + I słońce wędrujące promienia ścieżynką - Graj nam graj pieśni skrzydlata - Wiosna taniec nasz niesie po łąkach - Zatańczymy się w sobie do lata - Zatańczymy się w sobie bez końca + Graj nam graj pieśni skrzydlata + Wiosna taniec nasz niesie po łąkach + Zatańczymy się w sobie do lata + Zatańczymy się w sobie bez końca - A blask, co oświetla me ręce gdy piszę - Nabrzmiał potrzebą rozerwania ciszy - Przez okno wyciekł pełna go teraz chmara wronia - Dziobi się w dziobów końcach, a w ogonach ogoni - A pieśń moja to niknie, to wraca - I nie wiem co bym zrobił gdybym ją utrac + A blask, co oświetla me ręce gdy piszę + Nabrzmiał potrzebą rozerwania ciszy + Przez okno wyciekł pełna go teraz chmara wronia + Dziobi się w dziobów końcach, a w ogonach ogoni + A pieśń moja to niknie, to wraca + I nie wiem co bym zrobił gdybym ją utrac - Graj nam graj pieśni skrzydlata - Wiosna taniec nasz niesie po łąkach - Zatańczymy się w sobie do lata - Zatańczymy się w sobie bez końca + Graj nam graj pieśni skrzydlata + Wiosna taniec nasz niesie po łąkach + Zatańczymy się w sobie do lata + Zatańczymy się w sobie bez końca diff --git a/songs/Pisze_historyczna_powiesc.xml b/songs/Pisze_historyczna_powiesc.xml index b0562918..734a919c 100644 --- a/songs/Pisze_historyczna_powiesc.xml +++ b/songs/Pisze_historyczna_powiesc.xml @@ -9,17 +9,17 @@ Ja piszu istoryczeskij raman - Zdobi mego stołu blat + Zdobi mego stołu blat Szkło po zagranicznym piwie, - W nim czerwony róży kwiat + W nim czerwony róży kwiat Z pąka rodzi się cierpliwie. - Więc pod czujnym okiem tym, + Więc pod czujnym okiem tym, Piszę historyczną powieść, - Lecz nie mogę naprzód iść, + Lecz nie mogę naprzód iść, Myląc prolog z epilogiem. - Nasłuchuję, wypatruję + Nasłuchuję, wypatruję I spisuję to, co czuję, Piszę prozą lub rymuję, @@ -27,31 +27,31 @@ Ale nie chcę schlebiać Wam. Takie są natury prawa, Zmieniać ich nie mamy prawa, - Czemu piszę nie wiem sam. + Czemu piszę nie wiem sam. - Już przede mną kartek sto, + Już przede mną kartek sto, Nieprzebyte śnieżne dale, - Lecz dlaczego i mój los, + Lecz dlaczego i mój los, W wątek się wplątuje stale? - Czemu wciąż się pragnę b + Czemu wciąż się pragnę b Z przeciwnikiem wymyślonym, - Bohaterem nie chcąc b + Bohaterem nie chcąc b W stan spoczynku przeniesionym? - Prawda i w zmyśleniu tkwi, + Prawda i w zmyśleniu tkwi, Ale powieść nie gotowa, - Więc pozwólcie pisać mi + Więc pozwólcie pisać mi Aż do ostatniego słowa. - Pragnę, póki róży kwiat + Pragnę, póki róży kwiat Na mym stole czerwienieje, - Krzyczeć, kiedy milczy świat, + Krzyczeć, kiedy milczy świat, Szeptać, kiedy świat szaleje - Nasłuchuję, wypatruję + Nasłuchuję, wypatruję I spisuję to co czuję. diff --git a/songs/Plonie_ognisko_i_szumia_knieje.xml b/songs/Plonie_ognisko_i_szumia_knieje.xml index 27afbd81..33eee749 100644 --- a/songs/Plonie_ognisko_i_szumia_knieje.xml +++ b/songs/Plonie_ognisko_i_szumia_knieje.xml @@ -3,28 +3,28 @@ - Płonie ognisko i szumią knieje - Drużynowy jest wśród nas - Opowiada starodawne dzieje - Bohaterski wskrzesza czasg A7 d + Płonie ognisko i szumią knieje + Drużynowy jest wśród nas + Opowiada starodawne dzieje + Bohaterski wskrzesza czasg A7 d - O rycerstwie spod kresowych granic - O obrońcach naszych polskich granic - A ponad nami wiatr szumny wieje - I dębowy huczy las + O rycerstwie spod kresowych granic + O obrońcach naszych polskich granic + A ponad nami wiatr szumny wieje + I dębowy huczy las - Już do odwrotu głos trąbki wzywa - Alarmując ze wszech stron - Wstaje wiara w ordynku szczęśliwa - Serca biją zgodny ton + Już do odwrotu głos trąbki wzywa + Alarmując ze wszech stron + Wstaje wiara w ordynku szczęśliwa + Serca biją zgodny ton - Każda twarz się w uniesieniu płoni - Każdy laskę krzepko dzierży w dłoni - A z młodzieńczej się piersi wyrywa - Pieśń potężna, pieśń jak dzwon. + Każda twarz się w uniesieniu płoni + Każdy laskę krzepko dzierży w dłoni + A z młodzieńczej się piersi wyrywa + Pieśń potężna, pieśń jak dzwon. diff --git a/songs/Pocaluj_noc.xml b/songs/Pocaluj_noc.xml index 2869d74a..7567d725 100644 --- a/songs/Pocaluj_noc.xml +++ b/songs/Pocaluj_noc.xml @@ -3,35 +3,35 @@ Varius Manx - Przez palce zwykłych dni - Oglądasz świat - W pośpiechu gubiąc sny - Twój śmiech zawstydza cię - Więc wolisz nie śmiać się - Niż chwilę śmiesznym być + Przez palce zwykłych dni + Oglądasz świat + W pośpiechu gubiąc sny + Twój śmiech zawstydza cię + Więc wolisz nie śmiać się + Niż chwilę śmiesznym być - Spróbuj choć raz - Odsłonić twarz - I spojrzeć prosto w słońce - Zachwycić się - Po prostu tak - I wzruszyć jak najmocniej - Nie bój się bać - Gdy chcesz to płacz - Idź szukać wiatru w polu - Pocałuj noc - W najwyższą z gwiazd - Zapomnij się i tańcz + Spróbuj choć raz + Odsłonić twarz + I spojrzeć prosto w słońce + Zachwycić się + Po prostu tak + I wzruszyć jak najmocniej + Nie bój się bać + Gdy chcesz to płacz + Idź szukać wiatru w polu + Pocałuj noc + W najwyższą z gwiazd + Zapomnij się i tańcz - Zakładasz szary płaszcz - Łatwo wtapiasz się - W upiornie trzeźwy świt - Obmyślasz każdy gest - Na wypadek by - Nikt nie odkrył kim - Naprawdę jesteś! + Zakładasz szary płaszcz + Łatwo wtapiasz się + W upiornie trzeźwy świt + Obmyślasz każdy gest + Na wypadek by + Nikt nie odkrył kim + Naprawdę jesteś! diff --git a/songs/Powrot.xml b/songs/Powrot.xml index 1787d515..2a85360b 100644 --- a/songs/Powrot.xml +++ b/songs/Powrot.xml @@ -9,47 +9,47 @@ - Na twój powrót zgotowałam w beczce kąpiel. - Kilka kwiatów z łąki wplotłam w długie włosy. - Jagód kosz największy uzbierałam w lesie. - Czekam ciebie, spoglądając wzdłuż drogi. + Na twój powrót zgotowałam w beczce kąpiel. + Kilka kwiatów z łąki wplotłam w długie włosy. + Jagód kosz największy uzbierałam w lesie. + Czekam ciebie, spoglądając wzdłuż drogi. - Jeszcze noce takie ciepłe i gwiaździste. - Jeszcze w worku trochę chleba pozostało. - Jeszcze świerszcze koncert grają na równinie. - Jeszcze lata tyle w górach, choć tak mało. + Jeszcze noce takie ciepłe i gwiaździste. + Jeszcze w worku trochę chleba pozostało. + Jeszcze świerszcze koncert grają na równinie. + Jeszcze lata tyle w górach, choć tak mało. - Żółte liście znaczą Twój szlak. - Zimny wiatr czesze trawy na szczytach. - Tyle razy przemierzałeś ten świat. - Tyle lat się tym światem zachwycasz. + Żółte liście znaczą Twój szlak. + Zimny wiatr czesze trawy na szczytach. + Tyle razy przemierzałeś ten świat. + Tyle lat się tym światem zachwycasz. - Na twój powrót upiekłam świeży bochen. - Ciepły sweter zrobiłam na drutach. - Rozpaliłam na kominku jasny płomień. - Jeszcze dzisiaj powinieneś przecież wrócić. + Na twój powrót upiekłam świeży bochen. + Ciepły sweter zrobiłam na drutach. + Rozpaliłam na kominku jasny płomień. + Jeszcze dzisiaj powinieneś przecież wrócić. - Znowuż wiatr odprowadza mnie w doliny. - Słońce żegna odbijając się w strumienu. - Stare drzewa pochylają swe korony. - Jeszcze chwilę odpocznę na kamieniu. + Znowuż wiatr odprowadza mnie w doliny. + Słońce żegna odbijając się w strumienu. + Stare drzewa pochylają swe korony. + Jeszcze chwilę odpocznę na kamieniu. - Na twój powrót cieszę się już od tygodnia. - Pojaśniało z tej radości w całej izbie. - Pachnie kawa, słońce skrzy się w starym lustrze. - Idzie ktoś, serce mocniej bije. + Na twój powrót cieszę się już od tygodnia. + Pojaśniało z tej radości w całej izbie. + Pachnie kawa, słońce skrzy się w starym lustrze. + Idzie ktoś, serce mocniej bije. - Koniec lasu, widać dach starego domu. - Domu, w którym tyle już się wydarzyło. - Wracam tu do ciebie, jak co roku. - Może z wiosną razem wyruszymy. + Koniec lasu, widać dach starego domu. + Domu, w którym tyle już się wydarzyło. + Wracam tu do ciebie, jak co roku. + Może z wiosną razem wyruszymy. diff --git a/songs/Powroty.xml b/songs/Powroty.xml index 048565b8..4ab8c547 100644 --- a/songs/Powroty.xml +++ b/songs/Powroty.xml @@ -2,30 +2,30 @@ - Boję się nieba w twoich oczach - Jeszcze drżysz ze zmęczenia i potu - Świat chcesz dzielić na białe i czarne - Miły, boję się twoich powrotów + Boję się nieba w twoich oczach + Jeszcze drżysz ze zmęczenia i potu + Świat chcesz dzielić na białe i czarne + Miły, boję się twoich powrotów - Boję się chmur nad twoim czołem - Kiedy ręce do krwi otarte - Dumnie kładziesz przede mną na stole - Miły, boję się twoich powrotów + Boję się chmur nad twoim czołem + Kiedy ręce do krwi otarte + Dumnie kładziesz przede mną na stole + Miły, boję się twoich powrotów - Drżysz jeszcze, oczy zamglone - Zrobisz wszystko o co poproszę - Muszę wierzyć, przecież mnie kochasz - Krótka chwila i wracasz - Krótka chwila i wracasz - Krótka chwila i wracasz na morze + Drżysz jeszcze, oczy zamglone + Zrobisz wszystko o co poproszę + Muszę wierzyć, przecież mnie kochasz + Krótka chwila i wracasz + Krótka chwila i wracasz + Krótka chwila i wracasz na morze - Boję się morza w twoich myślach - Kiedy jesteś do drogi już gotów - Leżysz przy mnie, oczy otwarte - Miły, boję się twoich powrotów + Boję się morza w twoich myślach + Kiedy jesteś do drogi już gotów + Leżysz przy mnie, oczy otwarte + Miły, boję się twoich powrotów diff --git a/songs/Pozegnalny_ton.xml b/songs/Pozegnalny_ton.xml index adb5b26e..48769dee 100644 --- a/songs/Pozegnalny_ton.xml +++ b/songs/Pozegnalny_ton.xml @@ -5,41 +5,41 @@ Chyba dobrze wiesz już jaką z dróg - Popłyniesz kiedy serce rośnie ci nadzieją, + Popłyniesz kiedy serce rośnie ci nadzieją, Że jeszcze są schowane gdzi - Nieznane lądy, które życie twe odmienią. + Nieznane lądy, które życie twe odmienią. Chyba dobrze wiesz już jaką z dróg - Wśród fal i białej piany statek twój popłynie, + Wśród fal i białej piany statek twój popłynie, A jeśli tak - spotkamy się - Na jakiejś łajbie, którą szczęście swe odkryjesz. + Na jakiejś łajbie, którą szczęście swe odkryjesz. - Morza i oceany grzmią - Pieśni pożegnalny ton - Jeszcze nieraz zobaczymy się, - Czas stawiać żagle i z portu wyruszyć nam w rejs. + Morza i oceany grzmią + Pieśni pożegnalny ton + Jeszcze nieraz zobaczymy się, + Czas stawiać żagle i z portu wyruszyć nam w rejs. W kolorowych światłach keja lśni - I główki portu sennie mówią "do widzenia", + I główki portu sennie mówią "do widzenia", A jutro, gdy nastanie świt, - W rejs wyruszymy, by odkrywać swe marzenia. + W rejs wyruszymy, by odkrywać swe marzenia. Nim ostatni akord wybrzmi j - Na pustej scenie nieme staną mikrofony, + Na pustej scenie nieme staną mikrofony, Ostatni raz śpiewamy dz - Na pożegnanie wszystkim morzem urzeczonym. + Na pożegnanie wszystkim morzem urzeczonym. - Morza i oceany grzmią - Pieśni pożegnalny ton - Jeszcze nieraz zobaczymy się, - Czas stawiać żagle i z portu wyruszyć nam w rejs. + Morza i oceany grzmią + Pieśni pożegnalny ton + Jeszcze nieraz zobaczymy się, + Czas stawiać żagle i z portu wyruszyć nam w rejs. diff --git a/songs/Pozegnanie.xml b/songs/Pozegnanie.xml index 8f84b4c6..df56e609 100644 --- a/songs/Pozegnanie.xml +++ b/songs/Pozegnanie.xml @@ -9,41 +9,41 @@ - Spójrz przez okno -- wiosna śniegi rozgania - Coraz dłuższe dnie, wiatr cieplejszy - Na mnie czas, przyszła pora rozstania, - Worek gotów do drogi w kącie leży - Nie idź jeszcze, jeszcze czas, jeszcze zdążysz - Jeszcze wiosna zbyt krótka, by jej wierzyć - Jeszcze śnieg dość głęboki, jeszcze błoto na drogach, - Jeszcze mróz wieczorami się jeży + Spójrz przez okno -- wiosna śniegi rozgania + Coraz dłuższe dnie, wiatr cieplejszy + Na mnie czas, przyszła pora rozstania, + Worek gotów do drogi w kącie leży + Nie idź jeszcze, jeszcze czas, jeszcze zdążysz + Jeszcze wiosna zbyt krótka, by jej wierzyć + Jeszcze śnieg dość głęboki, jeszcze błoto na drogach, + Jeszcze mróz wieczorami się jeży - Daj mi jeszcze kilka dni proszę o to - Pozwól się jeszcze sobą nacieszyć - Ty wyruszysz gnany swoją tęsknotą - Ja zostanę samotna jak księżyc + Daj mi jeszcze kilka dni proszę o to + Pozwól się jeszcze sobą nacieszyć + Ty wyruszysz gnany swoją tęsknotą + Ja zostanę samotna jak księżyc - Już jaskółki gniazdo w oknie budują, - Słyszysz? Bocian na łące klekocze, - Dzikie gęsi po obłokach wędrują, - Spałaś już -- pierwsza burza była w nocy - Popatrz -- wiatr ciemne chmury nawiewa, - Dzisiaj nie idź, posiedź ze mną jeszcze - Tyle miałam Ci do powiedzenia, - Widzisz, pada. Nie zdążysz przed deszczem + Już jaskółki gniazdo w oknie budują, + Słyszysz? Bocian na łące klekocze, + Dzikie gęsi po obłokach wędrują, + Spałaś już -- pierwsza burza była w nocy + Popatrz -- wiatr ciemne chmury nawiewa, + Dzisiaj nie idź, posiedź ze mną jeszcze + Tyle miałam Ci do powiedzenia, + Widzisz, pada. Nie zdążysz przed deszczem - Muszę iść, woła mnie chmurna przestrzeń, - W przyszłym roku mogę nie dać już rady, - Przecież wrócę tu z ostatnim deszczem - Przecież wrócę do Ciebie jak zawsze. - Wiem że wrócisz, ale zrozum obawę - Przecież Ciebie nie będzie pół roku - Tyle czasu nie widzieć twej twarzy... - Idź już. Może ten deszcz przejdzie bokiem + Muszę iść, woła mnie chmurna przestrzeń, + W przyszłym roku mogę nie dać już rady, + Przecież wrócę tu z ostatnim deszczem + Przecież wrócę do Ciebie jak zawsze. + Wiem że wrócisz, ale zrozum obawę + Przecież Ciebie nie będzie pół roku + Tyle czasu nie widzieć twej twarzy... + Idź już. Może ten deszcz przejdzie bokiem diff --git a/songs/Pozegnanie_3.xml b/songs/Pozegnanie_3.xml index 1af4772f..f5819686 100644 --- a/songs/Pozegnanie_3.xml +++ b/songs/Pozegnanie_3.xml @@ -3,22 +3,22 @@ - Ogniska już dogasa blask - Braterski splećmy krąg - W wieczornej ciszy, w świetle gwiazd - Ostatni uścisk rąk + Ogniska już dogasa blask + Braterski splećmy krąg + W wieczornej ciszy, w świetle gwiazd + Ostatni uścisk rąk - Kto raz przyjaźni poznał moc - Nie będzie trwonił słów - Przy innym ogniu, w inną noc - Do zobaczenia znów + Kto raz przyjaźni poznał moc + Nie będzie trwonił słów + Przy innym ogniu, w inną noc + Do zobaczenia znów - Nie zgaśnie tej przyjaźni żar - Co połączyła nas - Nie pozwolimy, by ją starł - Nieubłagany czas + Nie zgaśnie tej przyjaźni żar + Co połączyła nas + Nie pozwolimy, by ją starł + Nieubłagany czas diff --git a/songs/Przyjaciolko.xml b/songs/Przyjaciolko.xml index d2f01de1..20c3468c 100644 --- a/songs/Przyjaciolko.xml +++ b/songs/Przyjaciolko.xml @@ -9,36 +9,36 @@ - Przyjdź znasz ten dom i drzwi - Materac zmęczony i fotel wysiedziany - Nie musisz dzwonić pukać wejdź - Posiedzimy pomyślimy pogadamy + Przyjdź znasz ten dom i drzwi + Materac zmęczony i fotel wysiedziany + Nie musisz dzwonić pukać wejdź + Posiedzimy pomyślimy pogadamy O tym, że miłość nie chce przyjść O tym, że przyjaźń nie wystarczy O tym, że ciężko nam bywa i źle - O walkach przegranych i powrotach na tarczy - Też o tym, że my, że Ty i ja - Że łatwiej martwić się we dwoje + O walkach przegranych i powrotach na tarczy + Też o tym, że my, że Ty i ja + Że łatwiej martwić się we dwoje O tym, że przyjaźń jednak trwa - Choć świata, choć jutra tak bardzo się boję + Choć świata, choć jutra tak bardzo się boję - Wyjdziesz rano zmęczona - Bo trudna jak zawsze ta nasza rozmowa - Za nami zostaną wspólne łzy - A w duszy zostaną nam słowa + Wyjdziesz rano zmęczona + Bo trudna jak zawsze ta nasza rozmowa + Za nami zostaną wspólne łzy + A w duszy zostaną nam słowa - Że chociaż miłość nie chce przyjść - I przyjaźń czasem nie wystarczy - Że chociaż ciężko nam bywa i źle - Choć zdarza się czasem powrócić na tarczy - To jednak trwamy, Ty i ja - I lepiej zmieniać świat we dwoje - I przyjaźń żyje, rośnie, trwa - I dzięki niej trochę mniej świata się boję + Że chociaż miłość nie chce przyjść + I przyjaźń czasem nie wystarczy + Że chociaż ciężko nam bywa i źle + Choć zdarza się czasem powrócić na tarczy + To jednak trwamy, Ty i ja + I lepiej zmieniać świat we dwoje + I przyjaźń żyje, rośnie, trwa + I dzięki niej trochę mniej świata się boję diff --git a/songs/PtakiPtakom.xml b/songs/PtakiPtakom.xml index 4d807cb5..8ed00c36 100644 --- a/songs/PtakiPtakom.xml +++ b/songs/PtakiPtakom.xml @@ -9,42 +9,42 @@ - Wybiegani, wysłuchani, wybawieni - Siądźcie wkoło do ogniska mego stóp - Chcę powiedzieć wam o tamtej złej jesieni - Z której przyszedł ten harcerski leśny grób + Wybiegani, wysłuchani, wybawieni + Siądźcie wkoło do ogniska mego stóp + Chcę powiedzieć wam o tamtej złej jesieni + Z której przyszedł ten harcerski leśny grób - Myśli mieli rozczochrane jak wy dzisiaj - I mundury te dzisiejsze mieli też - Lecz stanęli w pogotowiu, gdy padł wystrzał - Aby bronić tej największej z wielkich wież + Myśli mieli rozczochrane jak wy dzisiaj + I mundury te dzisiejsze mieli też + Lecz stanęli w pogotowiu, gdy padł wystrzał + Aby bronić tej największej z wielkich wież - Harcerze, którym słowa na ustach zamierały - Harcerki, którym uśmiech zabrał wojny czas - Jak ptaki po przestworzach losu szybowały - I padały jak puszczony bez nadziei głaz + Harcerze, którym słowa na ustach zamierały + Harcerki, którym uśmiech zabrał wojny czas + Jak ptaki po przestworzach losu szybowały + I padały jak puszczony bez nadziei głaz - Mogli odejść, mogli uciec w swoje jutro - Nikt by słowa im powiedzieć nie był śmiał - Lecz zostali, chociaż było im tak trudno - Gdy za strzałem padał ciągle drugi strzał + Mogli odejść, mogli uciec w swoje jutro + Nikt by słowa im powiedzieć nie był śmiał + Lecz zostali, chociaż było im tak trudno + Gdy za strzałem padał ciągle drugi strzał - To dla Polski tak czuwali dniem i nocą - Polski sztandar osłaniali piersią swą - I odeszli, kiedy wzięto ich przemocą - Aby w ziemię wtopić całą duszę swą + To dla Polski tak czuwali dniem i nocą + Polski sztandar osłaniali piersią swą + I odeszli, kiedy wzięto ich przemocą + Aby w ziemię wtopić całą duszę swą - Niech im pokłon odda nasze pokolenie - Tym, co umrzeć tam umieli mimo snów - I gdy przyjdą, by podeptać nam marzenia - Polski sztandar my osłońmy piersią znów + Niech im pokłon odda nasze pokolenie + Tym, co umrzeć tam umieli mimo snów + I gdy przyjdą, by podeptać nam marzenia + Polski sztandar my osłońmy piersią znów diff --git a/songs/Roza.xml b/songs/Roza.xml index 6cc1f784..4689fa95 100644 --- a/songs/Roza.xml +++ b/songs/Roza.xml @@ -9,31 +9,31 @@ - Czym purpurowe maki - Na ciemną rzucał drogę? - Sen miałem, ale jaki? - Przypomnieć już nie mogę + Czym purpurowe maki + Na ciemną rzucał drogę? + Sen miałem, ale jaki? + Przypomnieć już nie mogę - Twojeż to były usta? - Moje to były dłonie? - Głąb sadu mego pusta - We wrotach księżyc płonie - Twojeż to były usta? - A moje były dłonie? + Twojeż to były usta? + Moje to były dłonie? + Głąb sadu mego pusta + We wrotach księżyc płonie + Twojeż to były usta? + A moje były dłonie? - Dni się za dniami dłużą - Noce w jeziorach witam - Kiedy Ty kwitniesz różo? - Ja nigdy nie zakwitam + Dni się za dniami dłużą + Noce w jeziorach witam + Kiedy Ty kwitniesz różo? + Ja nigdy nie zakwitam - Ja nigdy nie zakwitam - Twójże to głos o różo? - Słowo po słowie chwytam - Dni się za dniami dłużą + Ja nigdy nie zakwitam + Twójże to głos o różo? + Słowo po słowie chwytam + Dni się za dniami dłużą diff --git a/songs/Rzeka.xml b/songs/Rzeka.xml index e8ffad5d..53782702 100644 --- a/songs/Rzeka.xml +++ b/songs/Rzeka.xml @@ -3,7 +3,7 @@ Wolna Grupa Bukowina - + Wsłuchany w twą cichą piosenkę Wyszedłem na brzeg pierwszy raz @@ -15,7 +15,7 @@ Wiedziałaś gdzie stopy znużone prowadzić Gdy sił już było brak. Brak... - + Wieże miast, łuny świateł Ich oczy zszarzałe nie raz diff --git a/songs/Sen_Katarzyny_II.xml b/songs/Sen_Katarzyny_II.xml index 10f38d34..8351b40a 100644 --- a/songs/Sen_Katarzyny_II.xml +++ b/songs/Sen_Katarzyny_II.xml @@ -5,46 +5,46 @@ Jacek Kaczmarski - Na smyczy trzymam filozofów Europy - Podparłam armią marmurowe Piotra stropy - Mam psy, sokoły, konie - kocham łów szalenie - A wokół same zające i jelenie + Na smyczy trzymam filozofów Europy + Podparłam armią marmurowe Piotra stropy + Mam psy, sokoły, konie - kocham łów szalenie + A wokół same zające i jelenie Pałace stawiam, głowy ścinam Kiedy mi przyjdzie na to chęć - Mam biografów, portrecistów - I jeszcze jedno pragnę mi + Mam biografów, portrecistów + I jeszcze jedno pragnę mi - Stój Katarzyno! Koronę Carów - Sen taki jak ten może Ci z głowy zdjąć! + Stój Katarzyno! Koronę Carów + Sen taki jak ten może Ci z głowy zdjąć! - Kobietą jestem ponad miarę swoich czasów - Nie bawią mnie umizgi bladych lowelasów - Ich miękkich palców dotyk budzi obrzydzenie - Już wolę łowić zające i jelenie + Kobietą jestem ponad miarę swoich czasów + Nie bawią mnie umizgi bladych lowelasów + Ich miękkich palców dotyk budzi obrzydzenie + Już wolę łowić zające i jelenie Ze wstydu potem ten i ów - Rzekł o mnie: niewyżyta niemra! - I pod batogiem nago biegł - Po śniegu dookoła Kremla! + Rzekł o mnie: niewyżyta niemra! + I pod batogiem nago biegł + Po śniegu dookoła Kremla! - Kochanka trzeba mi takiego jak imperium - Co by mnie brał tak jak ja daję - całą pełnią - Co by i władcy i poddańca był wcieleniem - I mi zastąpił zające i jelenie + Kochanka trzeba mi takiego jak imperium + Co by mnie brał tak jak ja daję - całą pełnią + Co by i władcy i poddańca był wcieleniem + I mi zastąpił zające i jelenie Co by rozumiał tak jak ja - Ten głupi dwór rozdanych ról - I pośród pochylonych głów - Dawał mi rozkosz albo ból! + Ten głupi dwór rozdanych ról + I pośród pochylonych głów + Dawał mi rozkosz albo ból! - Gdyby się taki kochanek kiedyś znalazł - Wiem! Sama wiem! Kazałabym go ściąć! + Gdyby się taki kochanek kiedyś znalazł + Wiem! Sama wiem! Kazałabym go ściąć! diff --git a/songs/Sielanka_o_domu.xml b/songs/Sielanka_o_domu.xml index 07ffc67b..c489b0fd 100644 --- a/songs/Sielanka_o_domu.xml +++ b/songs/Sielanka_o_domu.xml @@ -10,50 +10,50 @@ A jeśli dom będę miał - To będzie bukowy koniecznie - Pachnący i słoneczny - Wieczorem usiądę, wiatr gra - A zegar na ścianie gwarzy + To będzie bukowy koniecznie + Pachnący i słoneczny + Wieczorem usiądę, wiatr gra + A zegar na ścianie gwarzy Dobrze się idzie, panie zegarze - Tik tak, tik tak, tik tak - Świeca skwierczy i mruga przewrotnie - Więc puszczam oko do niej - Dobry humor dziś pani ma - Dobry humor dziś pani ma + Tik tak, tik tak, tik tak + Świeca skwierczy i mruga przewrotnie + Więc puszczam oko do niej + Dobry humor dziś pani ma + Dobry humor dziś pani ma - Szukam, szukania mi trzeba + Szukam, szukania mi trzeba Domu gitarą i piórem - A góry nade mną jak niebo - A niebo nade mną jak góry + A góry nade mną jak niebo + A niebo nade mną jak góry - Gdy głosy usłyszę u drzwi - Czyjekolwiek, wejdźcie -- poproszę - Jestem zbieraczem głosów - A dom mój bardzo lubi gdy - Śmiech ściany mu rozjaśnia - I gędźby lubi i pieśni - Wpadnijcie na parę chwil - Kiedy los was zawiedzie w te strony - Bo dom mój otworem stoi - Dla takich jak my - Dla takich jak wy + Gdy głosy usłyszę u drzwi + Czyjekolwiek, wejdźcie -- poproszę + Jestem zbieraczem głosów + A dom mój bardzo lubi gdy + Śmiech ściany mu rozjaśnia + I gędźby lubi i pieśni + Wpadnijcie na parę chwil + Kiedy los was zawiedzie w te strony + Bo dom mój otworem stoi + Dla takich jak my + Dla takich jak wy - Zaproszę dzień i noc - Zaproszę cztery wiatry - Dla wszystkich drzwi otwarte - Ktoś poda pierwszy ton - Zagramy na góry koncert - Buków porą pachnącą - Nasiąkną ściany grą - A zmęczonym wędrownikom - Odpocząć pozwolą muzyką - Bo taki będzie mój dom - Bo taki będzie mój dom - Bo taki będzie mój dom + Zaproszę dzień i noc + Zaproszę cztery wiatry + Dla wszystkich drzwi otwarte + Ktoś poda pierwszy ton + Zagramy na góry koncert + Buków porą pachnącą + Nasiąkną ściany grą + A zmęczonym wędrownikom + Odpocząć pozwolą muzyką + Bo taki będzie mój dom + Bo taki będzie mój dom + Bo taki będzie mój dom diff --git a/songs/Sierpien.xml b/songs/Sierpien.xml index b055da7a..4b9aa985 100644 --- a/songs/Sierpien.xml +++ b/songs/Sierpien.xml @@ -11,25 +11,25 @@ Wiersz Gałczyńskiego nosi tytuł ,,O sierpniu'', zaś piosenka Wierzbickiego j Stanęły pod mym oknem jak wiejscy muzykanci - Gwiazdy zielonooki sierpień po sadzie tańczył + Gwiazdy zielonooki sierpień po sadzie tańczył Księżycem całowany sad się rozrzewnił - Lekki i cygański był taniec sierpnia + Lekki i cygański był taniec sierpnia - Łzy co nam z oczu zlecą - Ziemi o nas powiedzą - Chodźmy w drogę łzy w drodze obeschną - Łzy nie przynoszą ujmy - A my w tę noc wędrujmy - Roziskrzoną rozśpiewaną bezkresną + Łzy co nam z oczu zlecą + Ziemi o nas powiedzą + Chodźmy w drogę łzy w drodze obeschną + Łzy nie przynoszą ujmy + A my w tę noc wędrujmy + Roziskrzoną rozśpiewaną bezkresną Stanęły pod mym oknem jak wiejscy muzykanci - Gwiazdy zielonooki sierpień po sadzie tańczył + Gwiazdy zielonooki sierpień po sadzie tańczył Raz złocistość w korze drzew drżała to sen ją płoszył - Ludzie mrużyli noc otwierała oczy + Ludzie mrużyli noc otwierała oczy diff --git a/songs/Slynny_niebieski_prochowiec.xml b/songs/Slynny_niebieski_prochowiec.xml index 97208cdb..f245c7e7 100644 --- a/songs/Slynny_niebieski_prochowiec.xml +++ b/songs/Slynny_niebieski_prochowiec.xml @@ -9,50 +9,50 @@ Famous Blue Raincoat - Jest czwarta nad ranem - Już kończy się grudzień - List piszę do Ciebie - Czy dobrze się czujesz - W New Yorku jest zimno - Poza tym w porządku - Muzyka na Clinton street - Gra na okrągło + Jest czwarta nad ranem + Już kończy się grudzień + List piszę do Ciebie + Czy dobrze się czujesz + W New Yorku jest zimno + Poza tym w porządku + Muzyka na Clinton street + Gra na okrągło - Podobno budujesz - Swój własny dom - W głębi pustyni + Podobno budujesz + Swój własny dom + W głębi pustyni Od życia nie chcesz już nic - Lecz musiałeś zachować wspomnienia + Lecz musiałeś zachować wspomnienia - A Jane do dziś - Kosmyk włosów ma Twych - Wiem gdy dawałeś go jej - Myślałeś już o tym by zwi + A Jane do dziś + Kosmyk włosów ma Twych + Wiem gdy dawałeś go jej + Myślałeś już o tym by zwi Lecz niełatwo jest zwi - Gdy tu byłeś ostatnio - Wyglądałeś jak starzec - Podniszczyłeś swój słynny - Niebieski prochowiec - Do każdego pociągu - Wychodziłeś na dworzec - Bez swej Lili Marlene - Pojechałeś do domu + Gdy tu byłeś ostatnio + Wyglądałeś jak starzec + Podniszczyłeś swój słynny + Niebieski prochowiec + Do każdego pociągu + Wychodziłeś na dworzec + Bez swej Lili Marlene + Pojechałeś do domu Dałeś mojej kobiecie - Z Twego życia zaledwie strzęp + Z Twego życia zaledwie strzęp Nie jest już moją żoną - Lecz twoją też nie + Lecz twoją też nie - Wciąż widzę Cię - Z różą w zębach choć wiem - Że to tani był greps - Lecz spodobał się Jane + Wciąż widzę Cię + Z różą w zębach choć wiem + Że to tani był greps + Lecz spodobał się Jane Jane pozdrawia cię t @@ -64,32 +64,32 @@ - Cóż mam ci powiedzieć - Mój bracie mój kacie - Sam nie wiem czy pisać - Czy nie - Brakuje mi ciebie - Przebaczam od siebie - To dobrze żeś w drogę - Mi wszedł + Cóż mam ci powiedzieć + Mój bracie mój kacie + Sam nie wiem czy pisać + Czy nie + Brakuje mi ciebie + Przebaczam od siebie + To dobrze żeś w drogę + Mi wszedł A może byś tak tutaj wpadł Do mnie lub do Jane Pomyśl Twój wróg sypia twardo - A jego żona nudzi się + A jego żona nudzi się - Więc dziękuję ci że - Wypędziłeś jej z oczu ten żal - Ja myślałem, że musi być tak - Nie starałem się więc + Więc dziękuję ci że + Wypędziłeś jej z oczu ten żal + Ja myślałem, że musi być tak + Nie starałem się więc - A Jane do dziś - Kosmyk włosów ma twych - Wiem że gdy dawałeś go jej - Myślałeś już o tym by zwi + A Jane do dziś + Kosmyk włosów ma twych + Wiem że gdy dawałeś go jej + Myślałeś już o tym by zwi @@ -101,8 +101,8 @@ - Z poważaniem - Leonard Cohen + Z poważaniem + Leonard Cohen diff --git a/songs/Smialy_harpunnik.xml b/songs/Smialy_harpunnik.xml index cf92a56c..ca4b8614 100644 --- a/songs/Smialy_harpunnik.xml +++ b/songs/Smialy_harpunnik.xml @@ -9,53 +9,53 @@ The Bold Harpooner - Nasz "Diament" prawie gotów już, w cieśninach nie ma kry. - Na kei piękne panny stoją, w oczach błyszczą łzy. - Kapitan w niebo wlepia wzrok, ruszamy lada dzień, - yniemy tam, gdzie słońca blask nie mąci nocy cień. + Nasz "Diament" prawie gotów już, w cieśninach nie ma kry. + Na kei piękne panny stoją, w oczach błyszczą łzy. + Kapitan w niebo wlepia wzrok, ruszamy lada dzień, + yniemy tam, gdzie słońca blask nie mąci nocy cień. A więc krzycz: O-ho, ho! Odwagę w sercu miej! - Wielorybów cielska groźne są, lecz dostaniemy je! + Wielorybów cielska groźne są, lecz dostaniemy je! - Hej, panno, powiedz po co łzy? Nic nie zatrzyma mnie, - Bo prędzej w lodach kwiat zakwitnie, niż wycofam się. - No, nie płacz, mała, wrócę tu, nasz los nie taki zły, - Bo da dukatów wór za tran i wielorybie kły. + Hej, panno, powiedz po co łzy? Nic nie zatrzyma mnie, + Bo prędzej w lodach kwiat zakwitnie, niż wycofam się. + No, nie płacz, mała, wrócę tu, nasz los nie taki zły, + Bo da dukatów wór za tran i wielorybie kły. A więc krzycz: O-ho, ho! Odwagę w sercu miej! - Wielorybów cielska groźne są, lecz dostaniemy je! + Wielorybów cielska groźne są, lecz dostaniemy je! Na decku Stary wąchał wiatr, lunetę w ręku miał. - Na łodziach, co zwisały już z harpunem każdy stał. + Na łodziach, co zwisały już z harpunem każdy stał. I dmucha tu, i dmucha tam! Ogromne stado wkrąg. - Harpuny, wiosła, liny brać! I ciągaj, brachu, ciąg! + Harpuny, wiosła, liny brać! I ciągaj, brachu, ciąg! A więc krzycz: O-ho, ho! Odwagę w sercu miej! - Wielorybów cielska groźne są, lecz dostaniemy je! + Wielorybów cielska groźne są, lecz dostaniemy je! I dla wieloryba już ostatni to dzień, - Bo śmiały harpunnik uderza weń! + Bo śmiały harpunnik uderza weń! A więc krzycz: O-ho, ho! Odwagę w sercu miej! - Wielorybów cielska groźne są, lecz dostaniemy je! + Wielorybów cielska groźne są, lecz dostaniemy je! diff --git a/songs/Swietlany_krzyz.xml b/songs/Swietlany_krzyz.xml index a4c4883a..f1cd28e3 100644 --- a/songs/Swietlany_krzyz.xml +++ b/songs/Swietlany_krzyz.xml @@ -3,19 +3,19 @@ - Idziemy w jasną z błękitu utkaną dal, - Drogą wśród łąk, pól bezkresnych - I wśród zbóż szumiących fal. + Idziemy w jasną z błękitu utkaną dal, + Drogą wśród łąk, pól bezkresnych + I wśród zbóż szumiących fal. - Cicho, szeroko jak okiem spojrzenie śle. - Jakieś się snują marzenia - W wieczornej spowitej mgle + Cicho, szeroko jak okiem spojrzenie śle. + Jakieś się snują marzenia + W wieczornej spowitej mgle - Idziemy naprzód i ciągle pniemy się wzwyż, - By zdobyć szczyt ideałów: - Świetlany harcerski krzyż. + Idziemy naprzód i ciągle pniemy się wzwyż, + By zdobyć szczyt ideałów: + Świetlany harcerski krzyż. diff --git a/songs/Szanta.xml b/songs/Szanta.xml index c29ba1d7..5674498d 100644 --- a/songs/Szanta.xml +++ b/songs/Szanta.xml @@ -9,33 +9,33 @@ - Mam ci pełną marzeń główkę, - Morze myśli mnie rozmarza. + Mam ci pełną marzeń główkę, + Morze myśli mnie rozmarza. Mam prześliczną małą łódkę, Tylko brak mi... marynarza. - W łódce małej i ciaśniutkiej, - By rozszerzyć krąg podróży + W łódce małej i ciaśniutkiej, + By rozszerzyć krąg podróży Niech marynarz wetknie w łódkę Jakiś maszt możliwie duży - Jestem bardzo młoda jeszcze, + Jestem bardzo młoda jeszcze, Obca morska mi robota. - Och, cudowne czuję dreszcze, + Och, cudowne czuję dreszcze, Gdy mnie uczy trzymać szota. I nie było wcale smutno, - Gdy w około wody tafla, + Gdy w około wody tafla, A marynarz podniósł płótno @@ -52,8 +52,8 @@ Niech się skończy... nie za szybko! - Gdy ucichły w końcu fale, - Drżąc zmęczona się rozmarzam. + Gdy ucichły w końcu fale, + Drżąc zmęczona się rozmarzam. Nie jest takie smutne wcale diff --git a/songs/Tango.xml b/songs/Tango.xml index 62e89e23..7ea7d3ee 100644 --- a/songs/Tango.xml +++ b/songs/Tango.xml @@ -9,73 +9,73 @@ - Było ciemno, więc niewiele sam widziałem - i pamiętam też niewiele - Było ciemno, wiem, że z pochyloną głową stałem - tak, jak stoi się w kościele - A więc: stałem, nie widziałem, było ciemno, - lecz słyszałem wciąż - Ten głos, ten głos, ten głos + Było ciemno, więc niewiele sam widziałem + i pamiętam też niewiele + Było ciemno, wiem, że z pochyloną głową stałem + tak, jak stoi się w kościele + A więc: stałem, nie widziałem, było ciemno, + lecz słyszałem wciąż + Ten głos, ten głos, ten głos - Podejdź bliżej, więc podszedłem jak skruszony obywatel - do przedstawiciela władzy - Podejdź bliżej, już wiedziałem że ucieczka błyskawiczna - tu niczemu nie zaradzi - Więc poszedłem, posłuchałem, było ciemno, - wciąż myślałem czyj - Ten głos, ten głos, ten głos + Podejdź bliżej, więc podszedłem jak skruszony obywatel + do przedstawiciela władzy + Podejdź bliżej, już wiedziałem że ucieczka błyskawiczna + tu niczemu nie zaradzi + Więc poszedłem, posłuchałem, było ciemno, + wciąż myślałem czyj + Ten głos, ten głos, ten głos - To nie wróg był, bo głos cichy i subtelny - ale polski i nieskazitelny - To nie Bóg był, ten by zaraz mnie zapytał - czy mój światopogląd celny - Więc to nie był wróg na pewno, bo nad głową - tuż nade mną usłyszałem - Ten głos, ten głos, ten głos + To nie wróg był, bo głos cichy i subtelny + ale polski i nieskazitelny + To nie Bóg był, ten by zaraz mnie zapytał + czy mój światopogląd celny + Więc to nie był wróg na pewno, bo nad głową + tuż nade mną usłyszałem + Ten głos, ten głos, ten głos - Ty to masz szczęście, że w tym momencie - Żyć ci przyszło w kraju nad Wisłą - Ty to masz szczęście - Twój kraj szczęśliwy, piękny, prawdziwy - Ludzie uczynni, w sercach niewinni - Twój kraj szczęśliwy + Ty to masz szczęście, że w tym momencie + Żyć ci przyszło w kraju nad Wisłą + Ty to masz szczęście + Twój kraj szczęśliwy, piękny, prawdziwy + Ludzie uczynni, w sercach niewinni + Twój kraj szczęśliwy - Było ciemno, więc nie mogłem stwierdzić komu - pomyliły się epoki lub stulecia - Było ciemno, może to Mickiewicz jaki - bo tak zgrabnie romantyczną wiarę krzesał - Trochę niezorientowany, bo w tym kraju tak kochanym - dawno nie był już widziany + Było ciemno, więc nie mogłem stwierdzić komu + pomyliły się epoki lub stulecia + Było ciemno, może to Mickiewicz jaki + bo tak zgrabnie romantyczną wiarę krzesał + Trochę niezorientowany, bo w tym kraju tak kochanym + dawno nie był już widziany - Może Norwid, bo coś plótł, że łza gdzieś znad planety spada - i groby przecieka - Ale skąd by, skąd by wiedział, że na jego słowa - ktoś tu jeszcze może czekać - Teraz w m odzie nie Norwidy, filozofy, okryjbidy, - więc czyj - Ten głos, ten głos, ten głos + Może Norwid, bo coś plótł, że łza gdzieś znad planety spada + i groby przecieka + Ale skąd by, skąd by wiedział, że na jego słowa + ktoś tu jeszcze może czekać + Teraz w m odzie nie Norwidy, filozofy, okryjbidy, + więc czyj + Ten głos, ten głos, ten głos - Było ciemno, więc sam nie wiem, jak do domu - wprost doszedłem i do siebie - Było ciemno, a ja czułem się jak w niebie, - choć dlaczego nie wiem, nie wiem - Z pochyloną głową stałem, wierzcie: ja nie zwariowałem, - lecz jak dziecko powtarzałem - Na głos, na głos, na głos + Było ciemno, więc sam nie wiem, jak do domu + wprost doszedłem i do siebie + Było ciemno, a ja czułem się jak w niebie, + choć dlaczego nie wiem, nie wiem + Z pochyloną głową stałem, wierzcie: ja nie zwariowałem, + lecz jak dziecko powtarzałem + Na głos, na głos, na głos - Ja to mam szczęście, że w tym momencie - Żyć mi przyszło w kraju nad Wisłą - Ja to mam szczęście - Mój kraj szczęśliwy, piękny, prawdziwy - Ludzie uczynni, w sercach niewinni - Mój kraj szczęśliwy + Ja to mam szczęście, że w tym momencie + Żyć mi przyszło w kraju nad Wisłą + Ja to mam szczęście + Mój kraj szczęśliwy, piękny, prawdziwy + Ludzie uczynni, w sercach niewinni + Mój kraj szczęśliwy diff --git a/songs/Tawerna_pod_pijana_zgraja.xml b/songs/Tawerna_pod_pijana_zgraja.xml index a684e5bf..15265442 100644 --- a/songs/Tawerna_pod_pijana_zgraja.xml +++ b/songs/Tawerna_pod_pijana_zgraja.xml @@ -3,47 +3,47 @@ Grzegorz Bukała - Kiedy niebo do morza przytula się z płaczem - Licho sosny garbate do reszty wykrzywia - Brzegiem morza wędrują bezdomni tułacze - I nikt nie wie skąd idą, jaki wiatr ich przywiał + Kiedy niebo do morza przytula się z płaczem + Licho sosny garbate do reszty wykrzywia + Brzegiem morza wędrują bezdomni tułacze + I nikt nie wie skąd idą, jaki wiatr ich przywiał - Do tawerny ,,Pod pijaną zgrają'' - Do tańczących, rozhukanych ścian - I do dziewcząt, które serca - Za złamany grosz oddają - Nie pytając, czy kto kiep, czy drań. + Do tawerny ,,Pod pijaną zgrają'' + Do tańczących, rozhukanych ścian + I do dziewcząt, które serca + Za złamany grosz oddają + Nie pytając, czy kto kiep, czy drań. - Kiedy wiatry noc chmurną przegonią za wodę, - Gdy pół--słońce pół nieba, pół morza rozpali, - Opuszczają wędrowcy uśpioną gospodę, - Z pierwszą bryzą znikają w pomarszczonej dali. + Kiedy wiatry noc chmurną przegonią za wodę, + Gdy pół--słońce pół nieba, pół morza rozpali, + Opuszczają wędrowcy uśpioną gospodę, + Z pierwszą bryzą znikają w pomarszczonej dali. - A w tawernie ,,Pod pijaną zgrają'' - Spływa smutek z okopconych ścian, - A dziewczyny z pół--grosików - Amulety układają - Na kochanie, na tęsknotę i na żal. + A w tawernie ,,Pod pijaną zgrają'' + Spływa smutek z okopconych ścian, + A dziewczyny z pół--grosików + Amulety układają + Na kochanie, na tęsknotę i na żal. - Kiedy chandra jesienna jak mgła cię otoczy, - Kiedy wszystko postawisz na kartę przegraną, - Zamiast siedzieć bezczynnie i płakać lub psioczyć - Weź węzełek na plecy, ruszaj w świat w nieznane. + Kiedy chandra jesienna jak mgła cię otoczy, + Kiedy wszystko postawisz na kartę przegraną, + Zamiast siedzieć bezczynnie i płakać lub psioczyć + Weź węzełek na plecy, ruszaj w świat w nieznane. - Do tawerny ,,Pod pijaną zgrają'' - Do tańczących, rozhukanych ścian - I do dziewcząt, które serca - Za złamany grosz oddają - Nie pytając, czyś ty kiep, czy drań + Do tawerny ,,Pod pijaną zgrają'' + Do tańczących, rozhukanych ścian + I do dziewcząt, które serca + Za złamany grosz oddają + Nie pytając, czyś ty kiep, czy drań - Nie pytają, czyś ty kiep, czy drań - Nie pytają, czyś ty kiep + Nie pytają, czyś ty kiep, czy drań + Nie pytają, czyś ty kiep diff --git a/songs/Teksanski.xml b/songs/Teksanski.xml index ec90fbcb..f5970a3e 100644 --- a/songs/Teksanski.xml +++ b/songs/Teksanski.xml @@ -9,7 +9,7 @@ Piosenka musi posiadać tekst - Gdyby chociaż mucha zjawiła się + Gdyby chociaż mucha zjawiła się Mogłabym ją zabić a później to opisać diff --git a/songs/Uciekali.xml b/songs/Uciekali.xml index 61668239..921ce577 100644 --- a/songs/Uciekali.xml +++ b/songs/Uciekali.xml @@ -9,46 +9,46 @@ - Tej nocy Anioł przyszedł do Józefa: - Zbudźcie dzieciątko co tak słodko śpi - Judea dziś to niebezpieczna strefa - I policzone małych chłopców dni. + Tej nocy Anioł przyszedł do Józefa: + Zbudźcie dzieciątko co tak słodko śpi + Judea dziś to niebezpieczna strefa + I policzone małych chłopców dni. - Namiestnik Herod ciągle drży w obawie, - Że chociaż władzę dzierży jego dł - I rzymski cesarz patrzy nań łaskawie - To w rączkach dzieci może kryć się broń. + Namiestnik Herod ciągle drży w obawie, + Że chociaż władzę dzierży jego dł + I rzymski cesarz patrzy nań łaskawie + To w rączkach dzieci może kryć się broń. - Uciekali, uciekali, uciekali - Na osiołku przez pustyni żar - Jak najdalej, jak najdalej, jak najdalej - Ukryć Dziecię, bezcenny ich skarb. + Uciekali, uciekali, uciekali + Na osiołku przez pustyni żar + Jak najdalej, jak najdalej, jak najdalej + Ukryć Dziecię, bezcenny ich skarb. - Ciężko ojczyznę wspominać w pustyni - Mieliśmy jakoś zapewniony byt - Choć czasem patrol mijał drzwi świątyni - Zawsze się modlić mógł pobożny Żyd. + Ciężko ojczyznę wspominać w pustyni + Mieliśmy jakoś zapewniony byt + Choć czasem patrol mijał drzwi świątyni + Zawsze się modlić mógł pobożny Żyd. - Lecz może trzeba szlakiem iść wygnania - Tak jak przodkowie nasi kiedyś szli - Może nie tu jest Ziemia Obiecana - Może gdzie indziej będzie rósł nasz Syn. + Lecz może trzeba szlakiem iść wygnania + Tak jak przodkowie nasi kiedyś szli + Może nie tu jest Ziemia Obiecana + Może gdzie indziej będzie rósł nasz Syn. - Jeszcze nie wiemy co nam przeznaczone - Lecz choć przeczucia czasem dręczą złe - Ojciec Niebieski weźmie nas w obronę - I znowu Anioł zjawi się we śnie. + Jeszcze nie wiemy co nam przeznaczone + Lecz choć przeczucia czasem dręczą złe + Ojciec Niebieski weźmie nas w obronę + I znowu Anioł zjawi się we śnie. - Piasek przysypał szlaki do Betlejem - Zabłądzić łatwo, trudny każdy krok - Tak mało mamy, tylko tę nadzieję - Która rozjaśnia nam codzienny mrok. + Piasek przysypał szlaki do Betlejem + Zabłądzić łatwo, trudny każdy krok + Tak mało mamy, tylko tę nadzieję + Która rozjaśnia nam codzienny mrok. diff --git a/songs/Ukraina.xml b/songs/Ukraina.xml index d0dbe8f4..88f78953 100644 --- a/songs/Ukraina.xml +++ b/songs/Ukraina.xml @@ -3,44 +3,44 @@ - Hej, tam gdzieś znad czarnej wody - Siada na koń Kozak młody - Czule żegna się z dziewczyną - Jeszcze czulej z Ukrainą a G(7) + Hej, tam gdzieś znad czarnej wody + Siada na koń Kozak młody + Czule żegna się z dziewczyną + Jeszcze czulej z Ukrainą a G(7) - Hej, hej, hej sokoły - Omijajcie góry, lasy, pola, doły - Dzwoń, dzwoń, dzwoń dzwoneczku - Mój stepowy skowroneczku - Mój stepowy dzwoń, dzwoń, dzwoń + Hej, hej, hej sokoły + Omijajcie góry, lasy, pola, doły + Dzwoń, dzwoń, dzwoń dzwoneczku + Mój stepowy skowroneczku + Mój stepowy dzwoń, dzwoń, dzwoń - Ładnych dziewcząt jest nie mało - Lecz najwięcej w Ukrainie - Tam me serce pozostało - Przy kochanej mej dziewczynie + Ładnych dziewcząt jest nie mało + Lecz najwięcej w Ukrainie + Tam me serce pozostało + Przy kochanej mej dziewczynie - Ona jedna tam została - Jaskółeczka moja, miła mała - A ja jeden w obcej stronie - Dniem i nocą tęsknię do niej + Ona jedna tam została + Jaskółeczka moja, miła mała + A ja jeden w obcej stronie + Dniem i nocą tęsknię do niej - Żal, żal za dziewczyną - Za kochaną Ukrainą - Żal, żal serce płacze - Już cię więcej nie zobaczę + Żal, żal za dziewczyną + Za kochaną Ukrainą + Żal, żal serce płacze + Już cię więcej nie zobaczę - Wina, wina, wina dajcie - A jak umrę pochowajcie - Na zielonej Ukrainie - Przy kochanej mej dziewczynie. + Wina, wina, wina dajcie + A jak umrę pochowajcie + Na zielonej Ukrainie + Przy kochanej mej dziewczynie. diff --git a/songs/Ulice_Londyny.xml b/songs/Ulice_Londyny.xml index 5000863a..7cb8bb01 100644 --- a/songs/Ulice_Londyny.xml +++ b/songs/Ulice_Londyny.xml @@ -29,24 +29,24 @@ I może wtedy zmienisz swoje zdanie. - Czy pamiętasz kobietę, która błąka się po mieście, - W jej pięknej niegdyś sukni nie zliczyłbyś dziś łat, - Już nic nie mówi, wzrok ją niesie przed siebie, - W dwóch starych torbach cały dom swój ma. + Czy pamiętasz kobietę, która błąka się po mieście, + W jej pięknej niegdyś sukni nie zliczyłbyś dziś łat, + Już nic nie mówi, wzrok ją niesie przed siebie, + W dwóch starych torbach cały dom swój ma. - Czy pamiętasz starego pijaka z dzielnicy slumsów, - Jestcieniem swego życia, ulica to jego dom, - Ciepłem darmowej zupy ogrzał dłonie swe. - Pomyśl, jeśli umrze dziś, czy ktoś uroni łzę? + Czy pamiętasz starego pijaka z dzielnicy slumsów, + Jestcieniem swego życia, ulica to jego dom, + Ciepłem darmowej zupy ogrzał dłonie swe. + Pomyśl, jeśli umrze dziś, czy ktoś uroni łzę? - Przed przytułkiem dla biednych żołnierzy stary człowiek siadł, - Blask jego medali czas już dawno skradł - I tylko o litość prosi w swej pieśni zimowy wiatr - Dla bohaterów, o których zapomniał bezduszny świat. + Przed przytułkiem dla biednych żołnierzy stary człowiek siadł, + Blask jego medali czas już dawno skradł + I tylko o litość prosi w swej pieśni zimowy wiatr + Dla bohaterów, o których zapomniał bezduszny świat. diff --git a/songs/Wania.xml b/songs/Wania.xml index 28ebe3ab..67e67b3c 100644 --- a/songs/Wania.xml +++ b/songs/Wania.xml @@ -9,40 +9,40 @@ Wańka Marozaw - I czegóż chcieć od tego Wani? - Wszak jego winy nie ma w tym. - Wszystkiemu winna tamta pani, - Że poszedł za nią tak jak w dym. + I czegóż chcieć od tego Wani? + Wszak jego winy nie ma w tym. + Wszystkiemu winna tamta pani, + Że poszedł za nią tak jak w dym. - A pasowałoby mu wszystko, - Juz lepiej wszystko niż ten traf, - Że z cyrku złapie go artystka, - Na linie tańcząc pośród braw. + A pasowałoby mu wszystko, + Juz lepiej wszystko niż ten traf, + Że z cyrku złapie go artystka, + Na linie tańcząc pośród braw. - Gdy w pierwszym geście powitania - Nad głową wzniosła białą dłoń, - Wciągnęło Wanię pożądanie - Bez reszty w swą przepastną toń. + Gdy w pierwszym geście powitania + Nad głową wzniosła białą dłoń, + Wciągnęło Wanię pożądanie + Bez reszty w swą przepastną toń. - Marusię swą porzucił najpierw, - A potem co noc aż do dnia - Z artystką szalał w chińskiej knajpie, - A tam Marusia z żalu schła. + Marusię swą porzucił najpierw, + A potem co noc aż do dnia + Z artystką szalał w chińskiej knajpie, + A tam Marusia z żalu schła. - A Wania tamtej na stół ciska - Meduzy i w trzech smakach drób, - Nie wiedząc nic, że ta artystka - Wciąż wodę z mózgu robi mu. + A Wania tamtej na stół ciska + Meduzy i w trzech smakach drób, + Nie wiedząc nic, że ta artystka + Wciąż wodę z mózgu robi mu. - Bo nie wierzymy w czas kochania, - Że miłość biedy przyda nam, - Ech, Wania, Wania, biedny Wania, - Ot spójrz - po linie idziesz sam. + Bo nie wierzymy w czas kochania, + Że miłość biedy przyda nam, + Ech, Wania, Wania, biedny Wania, + Ot spójrz - po linie idziesz sam. diff --git a/songs/Wedrowka_z_cieniem.xml b/songs/Wedrowka_z_cieniem.xml index 7db79dd4..790d27ab 100644 --- a/songs/Wedrowka_z_cieniem.xml +++ b/songs/Wedrowka_z_cieniem.xml @@ -9,45 +9,45 @@ - Po ulic mokrym, ciemnym tle, + Po ulic mokrym, ciemnym tle, Pod prószącymi latarniami, - Ja wlokę cień, cień wlecze mnie, + Ja wlokę cień, cień wlecze mnie, Kałuże lśnią nam pod nogami... - Dawno nie było nam tak źle -- + Dawno nie było nam tak źle -- Zostaliśmy zupełnie sami. - Ja wlokę cień, cień wlecze mnie, + Ja wlokę cień, cień wlecze mnie, Kałuże lśnią nam pod nogami... - Ja się zawiodłem, cień zawiódł się -- + Ja się zawiodłem, cień zawiódł się -- Tak jest już z tymi dziewczynami! - I wlokę go, on wlecze mnie, + I wlokę go, on wlecze mnie, Kałuże lśnią nam pod nogami... - Ja mówię: z jej kaprysów drwię, + Ja mówię: z jej kaprysów drwię, Nie będzie kierowała nami! - I wlokę go, on wlecze mnie, + I wlokę go, on wlecze mnie, Kałuże lśnią nam pod nogami... - Był czas gdy cień mój cieszył się -- + Był czas gdy cień mój cieszył się -- Jak ona mnie -- jej cień go mamił... - I wlokę go, on wlecze mnie, + I wlokę go, on wlecze mnie, Kałuże lśnią nam pod nogami... - A teraz mówi: z żalu kpię! + A teraz mówi: z żalu kpię! Lecz dobrze wiem, że mówiąc -- kłamie, - Więc wlokę cień, cień wlecze mnie, + Więc wlokę cień, cień wlecze mnie, Kałuże lśnią nam pod nogami... - Tak pocieszamy wzajem się + Tak pocieszamy wzajem się Idąc długimi ulicami... - Ja wlokę cień, cień wlecze mnie, + Ja wlokę cień, cień wlecze mnie, Kałuże lśnią nam pod nogami. diff --git a/songs/Wiatr_i_strzyga.xml b/songs/Wiatr_i_strzyga.xml index 51a27a96..823fcd1e 100644 --- a/songs/Wiatr_i_strzyga.xml +++ b/songs/Wiatr_i_strzyga.xml @@ -10,9 +10,9 @@ Podkradnę się, w twoich włosach zanurzę dłoń, - Pobiegnę dalej, zniknę, wsiąknę w trawę, - Podejdę chyłkiem, szarpnę za sukni skraj, - Zanim obejrzysz się już mnie nie będzie wcale. + Pobiegnę dalej, zniknę, wsiąknę w trawę, + Podejdę chyłkiem, szarpnę za sukni skraj, + Zanim obejrzysz się już mnie nie będzie wcale. Psotniku -- wietrze, gdzie znów ukryłeś się? diff --git a/songs/Wieczor.xml b/songs/Wieczor.xml index fae2ac4e..444c7d27 100644 --- a/songs/Wieczor.xml +++ b/songs/Wieczor.xml @@ -9,44 +9,44 @@ - Spójrz, odchodzi noc, - Odchodzi tam gdzie rosną maki. - Maków łan i bławatków modry wzór, - Modry wzór na czerwonym dywanie. - Posłuchaj, gdzieś daleko ktoś gra, - Zmienia wciąż rytm na przekór. - A jutro pójdziesz ze mną, - Odmieniona przez świt, - Uśmiechnięta, rozmarzona, - Zawstydzona jak nikt. + Spójrz, odchodzi noc, + Odchodzi tam gdzie rosną maki. + Maków łan i bławatków modry wzór, + Modry wzór na czerwonym dywanie. + Posłuchaj, gdzieś daleko ktoś gra, + Zmienia wciąż rytm na przekór. + A jutro pójdziesz ze mną, + Odmieniona przez świt, + Uśmiechnięta, rozmarzona, + Zawstydzona jak nikt. - I zagrają nam muzyki wszystkich dni, - Wszystkich nocy otulonych w dobry sen, - Gdy do tańca razem znów będziemy szli, - A najdłuższy z tańców to jest właśnie ten, - Kiedy grają nam muzyki wszystkich dni, - Wszystkich nocy otulonych w dobry sen. + I zagrają nam muzyki wszystkich dni, + Wszystkich nocy otulonych w dobry sen, + Gdy do tańca razem znów będziemy szli, + A najdłuższy z tańców to jest właśnie ten, + Kiedy grają nam muzyki wszystkich dni, + Wszystkich nocy otulonych w dobry sen. - Szept, najcichszy szept, - Oddać ma najgłębszą ciszę. - Możesz nic nie mówić i tak wiem, - Co się w myślach mych zapisze. - Świeć, świeć mi gwiazdo w tę noc, - Nie chcę sama wchodzić w przyszłość. - A jutro, kiedy będę - Odmieniona przez świt, - Uśmiechnięta, rozmarzona, - Zawstydzona jak nikt. + Szept, najcichszy szept, + Oddać ma najgłębszą ciszę. + Możesz nic nie mówić i tak wiem, + Co się w myślach mych zapisze. + Świeć, świeć mi gwiazdo w tę noc, + Nie chcę sama wchodzić w przyszłość. + A jutro, kiedy będę + Odmieniona przez świt, + Uśmiechnięta, rozmarzona, + Zawstydzona jak nikt. - Oczarują nas pejzaże wszystkich zim, - Wszystkich wiosen, w których wieczne lato trwa, - Aż zmęczeni mocno malowaniem tym, - Rozbijemy o podłogę trochę szkła - I zachwycą nas pejzaże wszystkich zim, - Wszystkich wiosen, w których wieczne lato trwa. + Oczarują nas pejzaże wszystkich zim, + Wszystkich wiosen, w których wieczne lato trwa, + Aż zmęczeni mocno malowaniem tym, + Rozbijemy o podłogę trochę szkła + I zachwycą nas pejzaże wszystkich zim, + Wszystkich wiosen, w których wieczne lato trwa. diff --git a/songs/Winda_do_nieba.xml b/songs/Winda_do_nieba.xml index eac35914..3236a0ee 100644 --- a/songs/Winda_do_nieba.xml +++ b/songs/Winda_do_nieba.xml @@ -3,36 +3,36 @@ Dwa Plus Jeden - Mój piękny panie, raz zobaczony w technikolorze - Piszę do pana ostatni list - Już mi lusterko z tym pana zdjęciem też nie pomoże - Pora mi dzisiaj do ślubu iść + Mój piękny panie, raz zobaczony w technikolorze + Piszę do pana ostatni list + Już mi lusterko z tym pana zdjęciem też nie pomoże + Pora mi dzisiaj do ślubu iść - Mój piękny panie ja go nie kocham, taka jest prawda - Pan główną rolę gra w każdym śnie - Ale dziewczyna przez życie nie może iść całkiem sama - Życie jest życiem pan przecież wie + Mój piękny panie ja go nie kocham, taka jest prawda + Pan główną rolę gra w każdym śnie + Ale dziewczyna przez życie nie może iść całkiem sama + Życie jest życiem pan przecież wie - Już mi niosą suknię z welonem - Już Cyganie czekają z muzyką - Koń do taktu zamiata ogonem - Mendelsonem stukają kopyta + Już mi niosą suknię z welonem + Już Cyganie czekają z muzyką + Koń do taktu zamiata ogonem + Mendelsonem stukają kopyta - Jeszcze ryżem sypną na szczęście - Gości tłum coś fałszywie odśpiewa - Złoty krążek mi wcisną na rękę + Jeszcze ryżem sypną na szczęście + Gości tłum coś fałszywie odśpiewa + Złoty krążek mi wcisną na rękę - I powiozą mnie windą do nieba + I powiozą mnie windą do nieba - Mój piękny panie z tego wszystkiego nie mogłam zasnąć - Więc nie mógł mi się pan przyśnić dziś - I tak odchodzę bez pożegnania jakby z nienacka - Ktoś między nami zatrzasnął drzwi + Mój piękny panie z tego wszystkiego nie mogłam zasnąć + Więc nie mógł mi się pan przyśnić dziś + I tak odchodzę bez pożegnania jakby z nienacka + Ktoś między nami zatrzasnął drzwi diff --git a/songs/Wrozba.xml b/songs/Wrozba.xml index 94df9b15..c76b2d8c 100644 --- a/songs/Wrozba.xml +++ b/songs/Wrozba.xml @@ -9,46 +9,46 @@ Primieta - Jeśli w niebie krąży kruk, - Wojnę nam wypowie wróg. + Jeśli w niebie krąży kruk, + Wojnę nam wypowie wróg. - Zabić kruka — prosta rzecz, + Zabić kruka — prosta rzecz, - To i wróg odejdzie precz. + To i wróg odejdzie precz. - Zabić kruka — prosta rzecz, - To i wróg odejdzie precz. + Zabić kruka — prosta rzecz, + To i wróg odejdzie precz. - A kto chciałby strzelić doń, + A kto chciałby strzelić doń, - Musi załadować broń. + Musi załadować broń. A jak trafi broń do rąk, - Rychło przyjdzie dalszy ciąg: + Rychło przyjdzie dalszy ciąg: - Dość wypalić, bracie mój, + Dość wypalić, bracie mój, - Żeby kul zaświstał rój. + Żeby kul zaświstał rój. A tym kulom nie żal nas, - Więc trafiają co i raz, + Więc trafiają co i raz, - Czy to w głowę, czy to w brzuch, + Czy to w głowę, czy to w brzuch, - Wszystko jedno — wróg, czy druh. + Wszystko jedno — wróg, czy druh. - Wszystko jedno — wróg czy druh, - Wszystko rozniesione w puch, + Wszystko jedno — wróg czy druh, + Wszystko rozniesione w puch, - Krąży kruk w czerwonej mgle, + Krąży kruk w czerwonej mgle, - Nie ma kto mu strzelić w łeb. + Nie ma kto mu strzelić w łeb. diff --git a/songs/Yellow_submarine.xml b/songs/Yellow_submarine.xml index 3a46423a..5f91a104 100644 --- a/songs/Yellow_submarine.xml +++ b/songs/Yellow_submarine.xml @@ -4,7 +4,7 @@ In the town where I was born - Lived a man who sailed the sea. + Lived a man who sailed the sea. And he told us of his life In the land of submarines. @@ -15,7 +15,7 @@ In our yellow submarine. - We all live in a yellow submarine, + We all live in a yellow submarine, Yellow submarine, yellow submarine. / 2x diff --git a/songs/Zabierz_mnie_na_stacje.xml b/songs/Zabierz_mnie_na_stacje.xml index 9a0c5af6..6a2cddc2 100644 --- a/songs/Zabierz_mnie_na_stacje.xml +++ b/songs/Zabierz_mnie_na_stacje.xml @@ -9,43 +9,43 @@ - Zabierz mnie na stację - Daj mi bilet w garść - Czas na medytację nadszedł - Bo nie mam już żadnych szans + Zabierz mnie na stację + Daj mi bilet w garść + Czas na medytację nadszedł + Bo nie mam już żadnych szans - Miałem kiedyś wszystko - Mogłem krzyczeć mam - Dziś jak bańka sen mój prysnął + Miałem kiedyś wszystko + Mogłem krzyczeć mam + Dziś jak bańka sen mój prysnął I jestem sam, całkiem sam - Miałem stu przyjaciół - I otwarte wszędzie drzwi - Dzisiaj nie wiem czy majaczę - Czy życie moje mi się śni + Miałem stu przyjaciół + I otwarte wszędzie drzwi + Dzisiaj nie wiem czy majaczę + Czy życie moje mi się śni - Miałem kiedyś ciebie - Miasta zgiełk i blask - Dziś na moim niebie nie ma - Nie, nie ma nawet gwiazd + Miałem kiedyś ciebie + Miasta zgiełk i blask + Dziś na moim niebie nie ma + Nie, nie ma nawet gwiazd - Zabierz mnie na stację - Daj mi bilet w garść - Czas na medytację nadszedł - Bo jestem sam i nie mam żadnych szans + Zabierz mnie na stację + Daj mi bilet w garść + Czas na medytację nadszedł + Bo jestem sam i nie mam żadnych szans diff --git a/songs/Zazdrosc.xml b/songs/Zazdrosc.xml index 4b785643..6283de9e 100644 --- a/songs/Zazdrosc.xml +++ b/songs/Zazdrosc.xml @@ -3,16 +3,16 @@ Hey - chwile gdy wolałabym martwym widzieć cię - Nie musiałabym się tobą dzielić nie nie - Gdybym mogła schowałabym twoje oczy w mojej kieszeni - Żebyś nie mógł oglądać tych, które są dla nas zagrożeniem + chwile gdy wolałabym martwym widzieć cię + Nie musiałabym się tobą dzielić nie nie + Gdybym mogła schowałabym twoje oczy w mojej kieszeni + Żebyś nie mógł oglądać tych, które są dla nas zagrożeniem - Do pracy nie mogę puścić cię nie nie - Tam tyle kobiet, każda w myślach gwałci cię - Złotą klatkę sprawię ci, będę karmić owocami - A do nogi przymocuję złotą kulę z diamentami + Do pracy nie mogę puścić cię nie nie + Tam tyle kobiet, każda w myślach gwałci cię + Złotą klatkę sprawię ci, będę karmić owocami + A do nogi przymocuję złotą kulę z diamentami diff --git a/songs/Zbik.xml b/songs/Zbik.xml index 73c43ab2..719aea16 100644 --- a/songs/Zbik.xml +++ b/songs/Zbik.xml @@ -8,42 +8,42 @@ - Jest w Warszawie oddział zwany - „Żbikiem” - zna go świat. - Zacnych mężów ród wybrany - Sam rycerzy kwiat. + Jest w Warszawie oddział zwany + „Żbikiem” - zna go świat. + Zacnych mężów ród wybrany + Sam rycerzy kwiat. - Każdy tu sie dobrze czuje - Jeśli chłop jak ćwik. - Reguł trzy obowiązuje - - Stosuj je - toś „Żbik”. + Każdy tu sie dobrze czuje + Jeśli chłop jak ćwik. + Reguł trzy obowiązuje - + Stosuj je - toś „Żbik”. - Trzeba dzień i noc pracować. - Dla pośpiechu stać. + Trzeba dzień i noc pracować. + Dla pośpiechu stać. Obiad jadać tylko w święta. A, broń Boże, spać. - Lecz to wszystko nie jest ważne. - Każdy z nas to wie - - Kto nie w „Żbiku” na pociechę - Niechaj śpi i je. + Lecz to wszystko nie jest ważne. + Każdy z nas to wie - + Kto nie w „Żbiku” na pociechę + Niechaj śpi i je. - Niechaj patrzy sie z zazdrością. - Jak tu dobrze nam. + Niechaj patrzy sie z zazdrością. + Jak tu dobrze nam. A gdy chętkę już poczuje. - Niech tu wstąpi sam! + Niech tu wstąpi sam! - Pozna, że kto wszedł do „Żbika” - Stracił serce swe. - Jaki morał stąd wynika - + Pozna, że kto wszedł do „Żbika” + Stracił serce swe. + Jaki morał stąd wynika - O tym każdy wie. diff --git a/songs/Zielona_dolina.xml b/songs/Zielona_dolina.xml index 8a16b8de..df456942 100644 --- a/songs/Zielona_dolina.xml +++ b/songs/Zielona_dolina.xml @@ -9,36 +9,36 @@ - Chcę dzień nowy zawsze witać - Gdzieś daleko razem z tobą - Zapach siana w stajni wdychać - Kurz przebytej drogi - Chcę mieć z tobą piec kaflowy - Dwoje dzieci i podróże - Trochę słońca, a gdy trzeba - Z piorunami burze + Chcę dzień nowy zawsze witać + Gdzieś daleko razem z tobą + Zapach siana w stajni wdychać + Kurz przebytej drogi + Chcę mieć z tobą piec kaflowy + Dwoje dzieci i podróże + Trochę słońca, a gdy trzeba + Z piorunami burze - Czeka nas w dolinie - Gdzieś na końcu świata - Zima sroga, a daleka - I jesienna chlapa - Czeka nas w dolinie drewniane poddasze - Dzikie wino na murze - I senny bieg zdarzeń - Czeka nas w dolinie urwana rozmowa - I kołyska pod ścianą - Buk, klon i brzoza + Czeka nas w dolinie + Gdzieś na końcu świata + Zima sroga, a daleka + I jesienna chlapa + Czeka nas w dolinie drewniane poddasze + Dzikie wino na murze + I senny bieg zdarzeń + Czeka nas w dolinie urwana rozmowa + I kołyska pod ścianą + Buk, klon i brzoza - Chcę dla Ciebie słów i ciszy - Niepokojów, które łamią - Wierszy, które ukołyszą - I nie będą kłamać - Chcę dla Ciebie wrarzeń myśli - Tych nie dokończonch - Nocy, które ukołyszą - Miłość twą szaloną + Chcę dla Ciebie słów i ciszy + Niepokojów, które łamią + Wierszy, które ukołyszą + I nie będą kłamać + Chcę dla Ciebie wrarzeń myśli + Tych nie dokończonch + Nocy, które ukołyszą + Miłość twą szaloną diff --git a/songs/Zielone_szkielko.xml b/songs/Zielone_szkielko.xml index cd37cc01..5bc0262c 100644 --- a/songs/Zielone_szkielko.xml +++ b/songs/Zielone_szkielko.xml @@ -9,43 +9,43 @@ - Stoję na słońcu, łapię w palce czas - Nitki babiego lata - Patrzę na świat przez szkło bez krat - Przez dno butelki + Stoję na słońcu, łapię w palce czas + Nitki babiego lata + Patrzę na świat przez szkło bez krat + Przez dno butelki - Włosy rozwiane głaszczą mi twarz - Świat jest bez końca zielony - Człowiek na słońcu to właśnie ja - A może, a może nie człowiek + Włosy rozwiane głaszczą mi twarz + Świat jest bez końca zielony + Człowiek na słońcu to właśnie ja + A może, a może nie człowiek - Leżę na ziemi, wdycham zapach traw - Obłoki skłębione - Zielone szkiełko całą prawdę zna - Wie dokąd idę schylony + Leżę na ziemi, wdycham zapach traw + Obłoki skłębione + Zielone szkiełko całą prawdę zna + Wie dokąd idę schylony - Palce mi ziębną gdy przyjdzie świt - Nie wiem od rosy czy wstydu - Człowiek na ziemi to właśnie ja - A może człowieka widmo + Palce mi ziębną gdy przyjdzie świt + Nie wiem od rosy czy wstydu + Człowiek na ziemi to właśnie ja + A może człowieka widmo - Lecę gdzieś w przepaść, widzę czarne dno - Słyszę jak krew stęchnie w żyłach - Spływa po twarzy powietrza prąd - To cel mnie znalazł i wybrał + Lecę gdzieś w przepaść, widzę czarne dno + Słyszę jak krew stęchnie w żyłach + Spływa po twarzy powietrza prąd + To cel mnie znalazł i wybrał - Znalazłem drogę, którą chcę - Przejść aż na drugą snu stronę - Zielone szkiełko przecina dłoń + Znalazłem drogę, którą chcę + Przejść aż na drugą snu stronę + Zielone szkiełko przecina dłoń - Spadam na ziemię, spadam na ziemię + Spadam na ziemię, spadam na ziemię - Jak promień + Jak promień diff --git a/songs/Zielony_plomien.xml b/songs/Zielony_plomien.xml index bb09a6de..3e623cca 100644 --- a/songs/Zielony_plomien.xml +++ b/songs/Zielony_plomien.xml @@ -9,45 +9,45 @@ - W dąbrowy gęstym listowiu - yska zielona skra - Trzepoce z wiatrem jak płomi - Mundur harcerski nasz - Czapka troszeczkę na bakier - Dusza rogata w niej - Wiatr polny w uszach i kwiaty - W pachnących włosach drzew + W dąbrowy gęstym listowiu + yska zielona skra + Trzepoce z wiatrem jak płomi + Mundur harcerski nasz + Czapka troszeczkę na bakier + Dusza rogata w niej + Wiatr polny w uszach i kwiaty + W pachnących włosach drzew - Tam gdzie się kończy horyzont - Leży nieznany ląd - Ziemia jest trochę garbata - Więc go nie widać stąd - Kreską przebiega błękitną - Strzępioną pasmem gór - Żeglują ku tej granicy - Białe okręty chmur + Tam gdzie się kończy horyzont + Leży nieznany ląd + Ziemia jest trochę garbata + Więc go nie widać stąd + Kreską przebiega błękitną + Strzępioną pasmem gór + Żeglują ku tej granicy + Białe okręty chmur - Gdzie niskie niebo usypia - Na rosochatych pniach - Gdziekolwiek namiot rozpinam - Będzie kraina ta - Zieleń o zmroku wilgotna - Z niebieską plamką dnia - Cisza jak gwiazda ogromna - W grzywie złocistych traw + Gdzie niskie niebo usypia + Na rosochatych pniach + Gdziekolwiek namiot rozpinam + Będzie kraina ta + Zieleń o zmroku wilgotna + Z niebieską plamką dnia + Cisza jak gwiazda ogromna + W grzywie złocistych traw - W dąbrowy gęstym listowiu - yska zielona skra - Trzepoce płomień zielony - Mundur harcerski nasz - Czapka troszeczkę na bakier - Lecz nie poprawiaj jej - Polny za uchem masz kwiatek + W dąbrowy gęstym listowiu + yska zielona skra + Trzepoce płomień zielony + Mundur harcerski nasz + Czapka troszeczkę na bakier + Lecz nie poprawiaj jej + Polny za uchem masz kwiatek - Duszy rogatej lżej + Duszy rogatej lżej diff --git a/songs/Znow_wedrujemy.xml b/songs/Znow_wedrujemy.xml index e3754c3e..06a428a3 100644 --- a/songs/Znow_wedrujemy.xml +++ b/songs/Znow_wedrujemy.xml @@ -10,40 +10,40 @@ Znów wędrujemy ciepłym krajem - Malachitową łąką morza + Malachitową łąką morza Ptaki powrotne umierają - Wśród pomarańczy na rozdrożach + Wśród pomarańczy na rozdrożach Na fioletowoszarych łąkach - Niebo rozpina płynność arkad - Pejzaż w powieki miękko wsiąka - Zakrz epła sól na nagich wargach + Niebo rozpina płynność arkad + Pejzaż w powieki miękko wsiąka + Zakrz epła sól na nagich wargach - A wiczorami w prądach zatok - Noc liże morze słodką grzywą + A wiczorami w prądach zatok + Noc liże morze słodką grzywą Jak miękkie gruszki brzmieje lato - Wiatrem sparzone jak pokrzywą - Przed fontannami perłowymi - Noc winogrona gwiazd rozdaje - Znów wędrujemy ciepłą ziemią - Znów wędrujemy ciepłym + Wiatrem sparzone jak pokrzywą + Przed fontannami perłowymi + Noc winogrona gwiazd rozdaje + Znów wędrujemy ciepłą ziemią + Znów wędrujemy ciepłym Krajem - Malachitową łąką morza - Ptaki powrotne umierają - Wśród pomarańczy na rozdrożach + Malachitową łąką morza + Ptaki powrotne umierają + Wśród pomarańczy na rozdrożach Znów wędrujemy ciepłym krajem - Malachitową łąką morza + Malachitową łąką morza Ptaki powrotne umierają - Wśród pomarańczy na rozdrożach - Przed fontannami perłowymi - Noc winogrona gwiazd rozdaje - Znów wędrujemy ciepłą ziemią - Znów wędrujemy ciepłym + Wśród pomarańczy na rozdrożach + Przed fontannami perłowymi + Noc winogrona gwiazd rozdaje + Znów wędrujemy ciepłą ziemią + Znów wędrujemy ciepłym Krajem - Malachitową łąką morza + Malachitową łąką morza diff --git a/songs/Zolnierzyk.xml b/songs/Zolnierzyk.xml index d4939ce5..0d9c6478 100644 --- a/songs/Zolnierzyk.xml +++ b/songs/Zolnierzyk.xml @@ -9,40 +9,40 @@ Piesienka o bumażnam sałdatie - Raz pewien żołnierz sobie żył, - Odważny i zawzięty, - Lecz cóż?… zabawka tylko był, - Z kartonu był wycięty. + Raz pewien żołnierz sobie żył, + Odważny i zawzięty, + Lecz cóż?… zabawka tylko był, + Z kartonu był wycięty. - Choć zmieniać świat i zwalczać zło - Niezmiennie był gotowy, - Stał ciągle wśród zabawek, bo - Był tylko papierowy. + Choć zmieniać świat i zwalczać zło + Niezmiennie był gotowy, + Stał ciągle wśród zabawek, bo + Był tylko papierowy. - I w ogień gotów był, jak w dym, - Pójść za Was bez namowy, - I mieliście sto pociech z nim — - Bo był on papierowy. + I w ogień gotów był, jak w dym, + Pójść za Was bez namowy, + I mieliście sto pociech z nim — + Bo był on papierowy. - I nie ujawniał przed nim sztab - Tajemnic swych wojskowych. - A czemu tak? A temu tak, - Że był on papierowy. + I nie ujawniał przed nim sztab + Tajemnic swych wojskowych. + A czemu tak? A temu tak, + Że był on papierowy. - Wyzywał los, w pogardzie miał - Tchórzliwych maruderów, - I „Ognia! Ognia!” ciągle łkał, - Choć przecież był z papieru. + Wyzywał los, w pogardzie miał + Tchórzliwych maruderów, + I „Ognia! Ognia!” ciągle łkał, + Choć przecież był z papieru. - Niejeden wódz już w ogniu znikł, - Niejeden szeregowy… - I poszedł w ogień… Zginął w mig - Żołnierzyk papierowy. + Niejeden wódz już w ogniu znikł, + Niejeden szeregowy… + I poszedł w ogień… Zginął w mig + Żołnierzyk papierowy. diff --git a/songs/Zrodlo.xml b/songs/Zrodlo.xml index e80ffd44..8480d54a 100644 --- a/songs/Zrodlo.xml +++ b/songs/Zrodlo.xml @@ -9,46 +9,46 @@ - Płynie rzeka wąwozem jak dnem koleiny, która samą siebie żłobiła - Rosną ściany wąwozu, z obu stron coraz wyżej, tam na górze są ponoć równiny; - I im więcej tej wody, tym się głębiej potoczy - Sama biorąc na siebie cień zboczy... + Płynie rzeka wąwozem jak dnem koleiny, która samą siebie żłobiła + Rosną ściany wąwozu, z obu stron coraz wyżej, tam na górze są ponoć równiny; + I im więcej tej wody, tym się głębiej potoczy + Sama biorąc na siebie cień zboczy... - Piach spod nurtu ucieka, nurt po piachu się wije, własna w czeluść ciągnie go siła. - Ale jest ciągle rzeka na dnie rozpadliny, jest i będzie, będzie jak była, - Bo źródło - Bo źródło - Wciąż bije. + Piach spod nurtu ucieka, nurt po piachu się wije, własna w czeluść ciągnie go siła. + Ale jest ciągle rzeka na dnie rozpadliny, jest i będzie, będzie jak była, + Bo źródło + Bo źródło + Wciąż bije. - A na ścianach wąwozu pasy barw i wyżłobień, tej rzeki historia tych brzegów - - Ślady głazów rozmytych, cienie drzew powalonych, muł zgarnięty pod siebie wbrew sobie - A hen, w dole blask nikły ciągle ziemię rozcina, - Ziemia nad nim się zrastać zaczyna... + A na ścianach wąwozu pasy barw i wyżłobień, tej rzeki historia tych brzegów - + Ślady głazów rozmytych, cienie drzew powalonych, muł zgarnięty pod siebie wbrew sobie + A hen, w dole blask nikły ciągle ziemię rozcina, + Ziemia nad nim się zrastać zaczyna... - Z obu stron żwir i glina, by zatrzymać go w biegu, woda syczy i wchłania Lecz żyje - I zakręca, omija, wsiąka, wspina się, pieni, ale płynie, wciąż płynie wbrew brzegom - - Bo źródło - Bo źródło - Wciąż bije. + Z obu stron żwir i glina, by zatrzymać go w biegu, woda syczy i wchłania Lecz żyje + I zakręca, omija, wsiąka, wspina się, pieni, ale płynie, wciąż płynie wbrew brzegom - + Bo źródło + Bo źródło + Wciąż bije. - I są miejsca gdzie w szlamie woda niemal zastygła pod kożuchem brudnej zieleni; - Tam ślad, prędzej niż ten co zostawił go, znika - niewidoczne bagienne są sidła. - Ale źródło wciąż bije, tłoczy puls między stoki, - Więc jest nurt, choć ukryty dla oka! + I są miejsca gdzie w szlamie woda niemal zastygła pod kożuchem brudnej zieleni; + Tam ślad, prędzej niż ten co zostawił go, znika - niewidoczne bagienne są sidła. + Ale źródło wciąż bije, tłoczy puls między stoki, + Więc jest nurt, choć ukryty dla oka! - Nieba prawie nie widać, czeluść chłodna i ciemna, niech się sypią lawiny kamieni! - I niech łączą się zbocza bezlitosnych wąwozów, - Bo cóż drąży kształt przyszłych przestrzeni - Jak nie rzeka podziemna? - Groty w skałach wypłucze, żyły złote odkryje - - Bo źródło - Bo źródło - Wciąż bije. + Nieba prawie nie widać, czeluść chłodna i ciemna, niech się sypią lawiny kamieni! + I niech łączą się zbocza bezlitosnych wąwozów, + Bo cóż drąży kształt przyszłych przestrzeni + Jak nie rzeka podziemna? + Groty w skałach wypłucze, żyły złote odkryje - + Bo źródło + Bo źródło + Wciąż bije. diff --git a/songs/ZwawaPiosenkaOZuczku.xml b/songs/ZwawaPiosenkaOZuczku.xml index aaa97b88..387cd780 100644 --- a/songs/ZwawaPiosenkaOZuczku.xml +++ b/songs/ZwawaPiosenkaOZuczku.xml @@ -9,19 +9,19 @@ - Gdy żre mnie nostalgia i chandra mnie tłucze - I nuda się czai przy ścianie sowacza, sowacza + Gdy żre mnie nostalgia i chandra mnie tłucze + I nuda się czai przy ścianie sowacza, sowacza - Pojawia się skądyś na stole mym żuczek - I nóżki swe drobne rozkracza rozkracza, rozkracza + Pojawia się skądyś na stole mym żuczek + I nóżki swe drobne rozkracza rozkracza, rozkracza - I chodzi po gładkiej powierzchni czerniawy - Tu kropkę zostawi, a tam drobny szlaczek, -bny szlaczek + I chodzi po gładkiej powierzchni czerniawy + Tu kropkę zostawi, a tam drobny szlaczek, -bny szlaczek - I co raz to w nóżkę podrapie się prawą - Lub wyrwie spod paszki swej kłaczek, swej kłaczek, swej kłaczek + I co raz to w nóżkę podrapie się prawą + Lub wyrwie spod paszki swej kłaczek, swej kłaczek, swej kłaczek diff --git a/songs/alpuhara.xml b/songs/alpuhara.xml index 6b98ed93..a72db3fc 100644 --- a/songs/alpuhara.xml +++ b/songs/alpuhara.xml @@ -9,112 +9,112 @@ - Już w gruzach leżą Maurów posady, - Naród ich dźwiga żelaza, - Bronią się jeszcze twierdze Grenady, - Ale w Grenadzie zaraza. + Już w gruzach leżą Maurów posady, + Naród ich dźwiga żelaza, + Bronią się jeszcze twierdze Grenady, + Ale w Grenadzie zaraza. - Broni się jeszcze z wierz Alpuhary - Almanzor z garstką rycerzy, - Hiszpan pod miastem zatknął sztandary, - Jutro do szturmu uderzy. + Broni się jeszcze z wierz Alpuhary + Almanzor z garstką rycerzy, + Hiszpan pod miastem zatknął sztandary, + Jutro do szturmu uderzy. - O wschodzi słońca ryknęły spiże, - Rwą się okopy, mur wali, - Już z minaretów błysnęły krzyże, - Hiszpanie zamku dostali. + O wschodzi słońca ryknęły spiże, + Rwą się okopy, mur wali, + Już z minaretów błysnęły krzyże, + Hiszpanie zamku dostali. - Jeden Almanzor widząc swe roty - Zbite w upornej obronie, - Przerżnął się między szable i groty, - Uciekł i zmylił pogonie. + Jeden Almanzor widząc swe roty + Zbite w upornej obronie, + Przerżnął się między szable i groty, + Uciekł i zmylił pogonie. - Hiszpan na świeżej zamku ruinie, - Pomiędzy gruzy i trupy, - Zastawia ucztę, kąpie się w winie, - Rozdziela brańce i łupy. + Hiszpan na świeżej zamku ruinie, + Pomiędzy gruzy i trupy, + Zastawia ucztę, kąpie się w winie, + Rozdziela brańce i łupy. - Wtem straż oddźwierna wodzom donosi, - Że rycerz z obcej krainy - O posłuchanie co rychlej prosi, - Ważne przynosząc nowiny. + Wtem straż oddźwierna wodzom donosi, + Że rycerz z obcej krainy + O posłuchanie co rychlej prosi, + Ważne przynosząc nowiny. - Był to Almazor, król muzułmanów, - Rzucił bezpieczne ukrycie, - Sam się oddaje w ręce Hiszpanów - I tylko błaga o życie. + Był to Almazor, król muzułmanów, + Rzucił bezpieczne ukrycie, + Sam się oddaje w ręce Hiszpanów + I tylko błaga o życie. - Hiszpanie -- woła -- na waszym progu, - Przychodzę czołem uderzyć, - Przychodzę służyć waszemu Bogu, - Waszym prorokom uwierzyć. + Hiszpanie -- woła -- na waszym progu, + Przychodzę czołem uderzyć, + Przychodzę służyć waszemu Bogu, + Waszym prorokom uwierzyć. - Niechaj rozgłosi sława przed światem, - Że Arab, król zwalczony, - Swoich zwyciężców chce zostać bratem, - Wasalem obcej korony. + Niechaj rozgłosi sława przed światem, + Że Arab, król zwalczony, + Swoich zwyciężców chce zostać bratem, + Wasalem obcej korony. - Hiszpanie męstwo cenić umieją; - Gdy Alamnzora poznali, - Wódz go uścisnął, inni koleją - Jak towarzysza witali. + Hiszpanie męstwo cenić umieją; + Gdy Alamnzora poznali, + Wódz go uścisnął, inni koleją + Jak towarzysza witali. - Almanzor wszystkich wzajemnie witał, - Wodza najczulej uścisnął, - Objął za szyję, za ręce chwytał, - Na ustach jego zawisnął. + Almanzor wszystkich wzajemnie witał, + Wodza najczulej uścisnął, + Objął za szyję, za ręce chwytał, + Na ustach jego zawisnął. - A wtem osłabnął, padł na kolana, - Ale rękami drżącemi - Wiążąc swój zawój do nóg Hiszpana - Ciągnął się za nim po ziemi. + A wtem osłabnął, padł na kolana, + Ale rękami drżącemi + Wiążąc swój zawój do nóg Hiszpana + Ciągnął się za nim po ziemi. - Spojrzał dokoła, wszystkich zadziwił, - Zbladłe, zsiniałe miał lice, - Śmiechem okropnym usta wykrzywił, - Krwią mu nabiegły źrenice. + Spojrzał dokoła, wszystkich zadziwił, + Zbladłe, zsiniałe miał lice, + Śmiechem okropnym usta wykrzywił, + Krwią mu nabiegły źrenice. - Patrzcie, o giaury! jam siny, blady, - Zgadnijcie czyim ja posłem? - Jam was oszukał, wracam z Grenady, - Ja wam zarazę przyniosłem. + Patrzcie, o giaury! jam siny, blady, + Zgadnijcie czyim ja posłem? + Jam was oszukał, wracam z Grenady, + Ja wam zarazę przyniosłem. - Pocałowniem wszczepiłem w duszę - Jad, co was będzie pożerał, - Pójdźcie i patrzcie na me katusze: - Wy tak musicie umierać! + Pocałowniem wszczepiłem w duszę + Jad, co was będzie pożerał, + Pójdźcie i patrzcie na me katusze: + Wy tak musicie umierać! - Rzuca się, krzyczy, ściąga ramiona, - Chciałby uściśnieniem wiecznym - Wszystkich Hiszpanów przykuć do łona; - Śmieje się śmiechem serdecznym. + Rzuca się, krzyczy, ściąga ramiona, + Chciałby uściśnieniem wiecznym + Wszystkich Hiszpanów przykuć do łona; + Śmieje się śmiechem serdecznym. - Śmiał się -- już skonał -- jeszcze powieki, - Jeszcze się usta nie zwarły. - I śmiech piekielny został na wieki - Do zimnych liców przywarły. + Śmiał się -- już skonał -- jeszcze powieki, + Jeszcze się usta nie zwarły. + I śmiech piekielny został na wieki + Do zimnych liców przywarły. - Hiszpanie trwożni z miasta uciekli, - Dżuma za nimi w ślad biegła; - Z gór Alpuhary nim się wywleki, - Reszta ich wojska poległa. + Hiszpanie trwożni z miasta uciekli, + Dżuma za nimi w ślad biegła; + Z gór Alpuhary nim się wywleki, + Reszta ich wojska poległa. diff --git a/songs/balladaoczlowiekuzkwiatami.xml b/songs/balladaoczlowiekuzkwiatami.xml index 04a3ce38..623b37ec 100644 --- a/songs/balladaoczlowiekuzkwiatami.xml +++ b/songs/balladaoczlowiekuzkwiatami.xml @@ -9,38 +9,38 @@ - Zbierał człowiek na łące kwiaty pięknie pachnące, - Kwiaty pięknie kwitnące zrywał człowiek na łące, + Zbierał człowiek na łące kwiaty pięknie pachnące, + Kwiaty pięknie kwitnące zrywał człowiek na łące, Piękne kwiaty, hej, na łące, piękne kwiaty. - Najpierw były rumianki, białe jak śnieg jest biały, - Człowiek stał wśród rumianków, człowiek biały był cały, + Najpierw były rumianki, białe jak śnieg jest biały, + Człowiek stał wśród rumianków, człowiek biały był cały, Wśród rumianków, cały biały, wśród rumianków. - Druga łąka zielona, hej, zielona tam trawa, - Człowik rzucił rumianek, jął zielonym się stawać, + Druga łąka zielona, hej, zielona tam trawa, + Człowik rzucił rumianek, jął zielonym się stawać, Hej, zielonym, hej, się stawać, hej, zielonym. - Ach, cudowna jest zieleń, pięknie żyć wśród zieleni, - Jednak nudzi się człowiek, życie pragnie odmienić, + Ach, cudowna jest zieleń, pięknie żyć wśród zieleni, + Jednak nudzi się człowiek, życie pragnie odmienić, Hej, odmienić, życie pragnie, hej, odmienić. - Hej, zakwitły już maki, maki piękne czerwone, - Hej, kuszące są maki, człowiek ruszył w ich stronę, + Hej, zakwitły już maki, maki piękne czerwone, + Hej, kuszące są maki, człowiek ruszył w ich stronę, Hej, w czerwone, ruszył w stronę, hej, w czerwone. - Maki zwiędły i zbladły, koniec ich jakże marny, - Człowiek czerwień porzucił, żeby stanąć przy czarnym, + Maki zwiędły i zbladły, koniec ich jakże marny, + Człowiek czerwień porzucił, żeby stanąć przy czarnym, Żeby stanąc, hej, przy czarnym, żeby stanąć. - Idzie człowiek po łące, zrywa kwiaty pachnące, - Wypatrując na polu, spokojniejszych kolorów, + Idzie człowiek po łące, zrywa kwiaty pachnące, + Wypatrując na polu, spokojniejszych kolorów, Hej, kolorów, spokojniejszych, hej, kolorów. diff --git a/songs/bruces.xml b/songs/bruces.xml index c56e8682..62ecc79c 100644 --- a/songs/bruces.xml +++ b/songs/bruces.xml @@ -9,33 +9,33 @@ - Immanuel Kant was a real piss-ant - who was very rarely stable. - Heideggar, Heideggar was a boozy beggar - who could think you under the table. - David Hume could out-consume - Schoppenhauer and Hegel. - And Whittgenstein was a beery swine - who was just as sloshed as Schlegel. + Immanuel Kant was a real piss-ant + who was very rarely stable. + Heideggar, Heideggar was a boozy beggar + who could think you under the table. + David Hume could out-consume + Schoppenhauer and Hegel. + And Whittgenstein was a beery swine + who was just as sloshed as Schlegel. - There's nothing Nietzsche couldn't teach 'ya - 'bout the raising of the wrist. - Socrates, himself, was permanently pissed. + There's nothing Nietzsche couldn't teach 'ya + 'bout the raising of the wrist. + Socrates, himself, was permanently pissed. - John Stewart Mill, of his own free will - On half a pint of shanty was particularly ill. - Plato they say could stick it away, - Half a crate of whiskey every day. - Aristotle, Aristotle was a bugger for the bottle, - And Hoppes was fond of his dram. - And Rene Descartes was a drunken fart. - "I drink, therefore I am." + John Stewart Mill, of his own free will + On half a pint of shanty was particularly ill. + Plato they say could stick it away, + Half a crate of whiskey every day. + Aristotle, Aristotle was a bugger for the bottle, + And Hoppes was fond of his dram. + And Rene Descartes was a drunken fart. + "I drink, therefore I am." - Yes, Socrates himself is particularly missed; - A lovely little thinker, but a bugger when he's pissed. + Yes, Socrates himself is particularly missed; + A lovely little thinker, but a bugger when he's pissed. diff --git a/songs/ciwszyscyludzie.xml b/songs/ciwszyscyludzie.xml index 29999e4a..8f81fa12 100644 --- a/songs/ciwszyscyludzie.xml +++ b/songs/ciwszyscyludzie.xml @@ -9,44 +9,44 @@ - Ci wszyscy ludzie, którzy poszli precz - Z naszego życia, z naszego życia, - To także nasza rzecz, nie tylko ich to rzecz, - To stawka winy nie do przebicia. - To także nasza rzecz, nie tylko ich to rzecz, - To stawka winy nie do przebicia. + Ci wszyscy ludzie, którzy poszli precz + Z naszego życia, z naszego życia, + To także nasza rzecz, nie tylko ich to rzecz, + To stawka winy nie do przebicia. + To także nasza rzecz, nie tylko ich to rzecz, + To stawka winy nie do przebicia. - Ci wszyscy ludzie, których kazał minąć - Nasz pośpiech nagły, nasz pośpiech nagły, - Nieodwracalnie z pamięci naszej giną - I całych światów kształt odchodzi w diabły. - Nieodwracalnie z pamięci naszej giną - I całych światów kształt odchodzi w diabły. + Ci wszyscy ludzie, których kazał minąć + Nasz pośpiech nagły, nasz pośpiech nagły, + Nieodwracalnie z pamięci naszej giną + I całych światów kształt odchodzi w diabły. + Nieodwracalnie z pamięci naszej giną + I całych światów kształt odchodzi w diabły. - Ci wszyscy ludzie, których nie ma j - (Nas dla nich nie ma też, nas dla nich nie ma) - Wiedzą, że nawet nie wiemy gdzie ich grób, - Że oni dla nas to tylko rozmów temat. - Wiedzą, że nawet nie wiemy gdzie ich grób, - Że oni dla nas to tylko rozmów temat. + Ci wszyscy ludzie, których nie ma j + (Nas dla nich nie ma też, nas dla nich nie ma) + Wiedzą, że nawet nie wiemy gdzie ich grób, + Że oni dla nas to tylko rozmów temat. + Wiedzą, że nawet nie wiemy gdzie ich grób, + Że oni dla nas to tylko rozmów temat. - Ci wszyscy ludzie, którzy wokół nas - Zawsze - nie tacy, zawsze - nie tacy, - Niegodni rozmów i niegodni łask - - Są, żyją, błądzą, więc nie mają racji. - Niegodni rozmów i niegodni łask - - Są, żyją, błądzą, więc nie mają racji. + Ci wszyscy ludzie, którzy wokół nas + Zawsze - nie tacy, zawsze - nie tacy, + Niegodni rozmów i niegodni łask - + Są, żyją, błądzą, więc nie mają racji. + Niegodni rozmów i niegodni łask - + Są, żyją, błądzą, więc nie mają racji. - Ci wszyscy ludzie, czyli wszyscy - my - My pominięci, my pochowani, - Żyjemy, jak pozwalaliśmy żyć -- - Niepamiętanym, niewysłuchanym. - Żyjemy, jak pozwalaliśmy żyć -- - Niepamiętanym, niewysłuchanym. + Ci wszyscy ludzie, czyli wszyscy - my + My pominięci, my pochowani, + Żyjemy, jak pozwalaliśmy żyć -- + Niepamiętanym, niewysłuchanym. + Żyjemy, jak pozwalaliśmy żyć -- + Niepamiętanym, niewysłuchanym. diff --git a/songs/cos.xml b/songs/cos.xml index 5be2c1fc..eeb1a0ba 100644 --- a/songs/cos.xml +++ b/songs/cos.xml @@ -9,10 +9,10 @@ - Był koń, - zdechł koń, - fajny był, - szkoda go. + Był koń, + zdechł koń, + fajny był, + szkoda go. diff --git a/songs/cosjeszcze.xml b/songs/cosjeszcze.xml index 2e839196..c16bf122 100644 --- a/songs/cosjeszcze.xml +++ b/songs/cosjeszcze.xml @@ -9,10 +9,10 @@ - Były dwa kleszcze, - Zdechły dwa kleszcze, - Fajne były, - Pośpiewajmy jeszcze. + Były dwa kleszcze, + Zdechły dwa kleszcze, + Fajne były, + Pośpiewajmy jeszcze. diff --git a/songs/creutzfeld.xml b/songs/creutzfeld.xml index c33c15bb..b724b944 100644 --- a/songs/creutzfeld.xml +++ b/songs/creutzfeld.xml @@ -10,7 +10,7 @@ - Creutzfeld Jakob naszym przyjacielem jest! + Creutzfeld Jakob naszym przyjacielem jest! diff --git a/songs/czarny_kot.xml b/songs/czarny_kot.xml index a3acddb8..64df229d 100644 --- a/songs/czarny_kot.xml +++ b/songs/czarny_kot.xml @@ -9,40 +9,40 @@ Czornyj kot - Na podwórku, tuż za bramą, - Czarnej sieni czarny wlot. - W sieni dzień i noc tak samo - Rezyduje Czarny Kot. + Na podwórku, tuż za bramą, + Czarnej sieni czarny wlot. + W sieni dzień i noc tak samo + Rezyduje Czarny Kot. - Uśmiechając się pod wąsem, - Czai się w ciemnościach, łotr. - Drą się koty wniebogłosy, - Ale milczy Czarny Kot. + Uśmiechając się pod wąsem, + Czai się w ciemnościach, łotr. + Drą się koty wniebogłosy, + Ale milczy Czarny Kot. - Myszy dawno już nie łowi, - Stroszy wąs i śmieje się -- - Łapie wszystkich nas za słowo - I kiełbasę naszą żre. + Myszy dawno już nie łowi, + Stroszy wąs i śmieje się -- + Łapie wszystkich nas za słowo + I kiełbasę naszą żre. - Ani żąda, ani prosi, - Kryje w ślepiach żółty blask. - Każdy sam mu coś wynosi, - Jeszcze mu się kłania w pas. + Ani żąda, ani prosi, + Kryje w ślepiach żółty blask. + Każdy sam mu coś wynosi, + Jeszcze mu się kłania w pas. - Nie zamiauczy ani razu, - Ale z sieni - ani rusz; - O framugę ostrzy pazur, - Jakbyś miał na gardle nóż! + Nie zamiauczy ani razu, + Ale z sieni - ani rusz; + O framugę ostrzy pazur, + Jakbyś miał na gardle nóż! - Stąd też wszyscy przygnębieni, - Wszystko w domu - byle jak... - Światło by założyć w sieni... - Ale jakoś chętnych brak! + Stąd też wszyscy przygnębieni, + Wszystko w domu - byle jak... + Światło by założyć w sieni... + Ale jakoś chętnych brak! diff --git a/songs/czas.xml b/songs/czas.xml index d85beeea..c8d83acd 100644 --- a/songs/czas.xml +++ b/songs/czas.xml @@ -9,58 +9,58 @@ - Czas płynie wciąż tak jak wąż poplątany ogon + Czas płynie wciąż tak jak wąż poplątany ogon Dnia minionego mgłą ktoś wypatruje nocą - Gwiazd zimny śmiech wiatru gwizd szary przedsmak świata - Jest nie ma nic chwil minionych już nie złapiesz. - Tylko czas płynie wciąż tak jak wąż poplątany ogon + Gwiazd zimny śmiech wiatru gwizd szary przedsmak świata + Jest nie ma nic chwil minionych już nie złapiesz. + Tylko czas płynie wciąż tak jak wąż poplątany ogon Dnia minionego mgłą ktoś wypatruje nocą - Gwiazd zimny śmiech wiatru gwizd szary przedsmak świata - Jest nie ma nic chwil minionych już nie złapiesz. + Gwiazd zimny śmiech wiatru gwizd szary przedsmak świata + Jest nie ma nic chwil minionych już nie złapiesz. - Spójrz! Oto życia twego tajemnicza księga. - Pisana piórem gwiazd, atramentem tęczy. - W ozdobnych kartach zatrzymany czas. - Burzowe chmury, słoneczny blask. - Świat znany i nieznany... + Spójrz! Oto życia twego tajemnicza księga. + Pisana piórem gwiazd, atramentem tęczy. + W ozdobnych kartach zatrzymany czas. + Burzowe chmury, słoneczny blask. + Świat znany i nieznany... - Patrz! W pajęczynę zawiązane twoje drogi. - Poplątane wiatrem, pomylone mrokiem. - W zaułków gąszczu, spłoszona myśl. - Iluzja, przepaść, wątła nić. - Ostrożnie stawiasz kroki! + Patrz! W pajęczynę zawiązane twoje drogi. + Poplątane wiatrem, pomylone mrokiem. + W zaułków gąszczu, spłoszona myśl. + Iluzja, przepaść, wątła nić. + Ostrożnie stawiasz kroki! - Spójrz! W starym kotle kipi wywar z twoich marzeń. - Pragnienie, żądza, potrzeba, władza. - W kipieli wiary - namiętności błysk. - W oparach jawy - tęsknoty krzyk: - Obejrzyj się za siebie! + Spójrz! W starym kotle kipi wywar z twoich marzeń. + Pragnienie, żądza, potrzeba, władza. + W kipieli wiary - namiętności błysk. + W oparach jawy - tęsknoty krzyk: + Obejrzyj się za siebie! - Wiedz! Ja znam wszystkie twoje tajemnice. - Układam twoje myśli. Niczego nie ukryjesz. - To moja dłoń układa twój szlak. - Pod nogi piasek czy w plecy wiatr. - Beze mnie nic nie znaczysz! + Wiedz! Ja znam wszystkie twoje tajemnice. + Układam twoje myśli. Niczego nie ukryjesz. + To moja dłoń układa twój szlak. + Pod nogi piasek czy w plecy wiatr. + Beze mnie nic nie znaczysz! - Czas płynie wciąż tak jak wąż poplątany ogon + Czas płynie wciąż tak jak wąż poplątany ogon Dnia minionego mgłą ktoś wypatruje nocą - Gwiazd zimny śmiech wiatru gwizd szary przedsmak świata - Jest nie ma nic chwil minionych już nie złapiesz. + Gwiazd zimny śmiech wiatru gwizd szary przedsmak świata + Jest nie ma nic chwil minionych już nie złapiesz. - Tylko czas płynie wciąż tak jak wąż poplątany ogon + Tylko czas płynie wciąż tak jak wąż poplątany ogon Dnia minionego mgłą ktoś wypatruje nocą - Gwiazd zimny śmiech wiatru gwizd szary przedsmak świata - Jest nie ma nic chwil minionych już nie złapiesz. + Gwiazd zimny śmiech wiatru gwizd szary przedsmak świata + Jest nie ma nic chwil minionych już nie złapiesz. diff --git a/songs/dezyderata.xml b/songs/dezyderata.xml index a4a7e76b..ab938264 100644 --- a/songs/dezyderata.xml +++ b/songs/dezyderata.xml @@ -12,19 +12,19 @@ Utwór powstał w 1927 roku. W roku 1933 autor złożył go w formie życzeń na - Dezyderata, dezyderata... - Przechodź spokojnie przez hałas i pośpiech - i pamiętaj, jaki spokój można znaleźć w ciszy. - O ile to możliwe bez wyrzekania się siebie - bądź na dobrej stopie ze wszystkimi. + Dezyderata, dezyderata... + Przechodź spokojnie przez hałas i pośpiech + i pamiętaj, jaki spokój można znaleźć w ciszy. + O ile to możliwe bez wyrzekania się siebie + bądź na dobrej stopie ze wszystkimi. - Wypowiadaj swoją prawdę - jasno i spokojnie, - wysłuchaj innych, - nawet tępych i nieświadomych, + Wypowiadaj swoją prawdę + jasno i spokojnie, + wysłuchaj innych, + nawet tępych i nieświadomych, oni też mają - swoja opowieść, + swoja opowieść, oni też mają opowieść. @@ -33,51 +33,51 @@ Utwór powstał w 1927 roku. W roku 1933 autor złożył go w formie życzeń na Unikaj głośnych i napastliwych, unikaj głośnych są udręką ducha. - Niech twoje osiągnięcia zarówno jak plany - będą dla Ciebie źródłem radości. - Bądź ostrożny w interesach, bądź ostrożny w interesach, - na świecie bowiem pełno oszustwa. - Bądź sobą, zwłaszcza - nie udawaj uczucia. + Niech twoje osiągnięcia zarówno jak plany + będą dla Ciebie źródłem radości. + Bądź ostrożny w interesach, bądź ostrożny w interesach, + na świecie bowiem pełno oszustwa. + Bądź sobą, zwłaszcza + nie udawaj uczucia. Ani też nie podchodź - cynicznie do miłości, - bo ona jest - wieczna jak trawa, - bo ona jest wieczna. + cynicznie do miłości, + bo ona jest + wieczna jak trawa, + bo ona jest wieczna. - Unikaj głośnych i napastliwych, + Unikaj głośnych i napastliwych, unikaj głośnych, są udręką ducha. - Przyjmij spokojnie co ci lata doradzają - z wdziękiem wyrzekając się spraw młodości. - Jesteś dzieckiem wszechświata nie mniej niż drzewa i gwiazdy, - masz prawo być tutaj. + Przyjmij spokojnie co ci lata doradzają + z wdziękiem wyrzekając się spraw młodości. + Jesteś dzieckiem wszechświata nie mniej niż drzewa i gwiazdy, + masz prawo być tutaj. - Tak więc żyj w zgodzie z Bogiem, - czymkolwiek On ci się wydaje, - w zgiełkliwym pomieszaniu - życia zachowaj spokój, - w zgiełkliwym pomieszaniu - życia zachowaj - spokój ze swą duszą. + Tak więc żyj w zgodzie z Bogiem, + czymkolwiek On ci się wydaje, + w zgiełkliwym pomieszaniu + życia zachowaj spokój, + w zgiełkliwym pomieszaniu + życia zachowaj + spokój ze swą duszą. - Przy całej swej złudności, - znoju i rozwianych marzeniach - jest to piękny świat, jest to piękny świat. + Przy całej swej złudności, + znoju i rozwianych marzeniach + jest to piękny świat, jest to piękny świat. - Znalezione w starym kościele - Świętego Pawła w Baltimore. - datowane tysiąc sześćset dziewiędziesiąty drugi rok. + Znalezione w starym kościele + Świętego Pawła w Baltimore. + datowane tysiąc sześćset dziewiędziesiąty drugi rok. - Przy całej swej złudności, - znoju i rozwianych marzeniach - jest to piękny świat, jest to piękny świat. + Przy całej swej złudności, + znoju i rozwianych marzeniach + jest to piękny świat, jest to piękny świat. diff --git a/songs/dla_michasia.xml b/songs/dla_michasia.xml index 98aecc5f..a173a66e 100644 --- a/songs/dla_michasia.xml +++ b/songs/dla_michasia.xml @@ -9,35 +9,35 @@ - Nie wierzyłem, dobry Boże, - Że się zdarzyć tyle może, - Że cię kiedyś, mały synku, będę miał. - Spadłeś z nieba mi akurat, - Kiedy szedłem z głową w chmurach -- - -- Niedospany, skacowany i jak palec sam. + Nie wierzyłem, dobry Boże, + Że się zdarzyć tyle może, + Że cię kiedyś, mały synku, będę miał. + Spadłeś z nieba mi akurat, + Kiedy szedłem z głową w chmurach -- + -- Niedospany, skacowany i jak palec sam. - Dam Ci plecak pełen marzeń, - Grać nauczę na gitarze, - Na barana Cię przeniosę - Przez świat smutny jak kalosze. + Dam Ci plecak pełen marzeń, + Grać nauczę na gitarze, + Na barana Cię przeniosę + Przez świat smutny jak kalosze. - Miejsca zagrzać nie umiałem, - Trochę grałem, malowałem, - Życie mi się nieustannie wychylało z ram. - Spadłeś z nieba mi akurat, - Kiedy szedłem z głową w chmurach -- - Niedospany, skacowany i jak palec sam. + Miejsca zagrzać nie umiałem, + Trochę grałem, malowałem, + Życie mi się nieustannie wychylało z ram. + Spadłeś z nieba mi akurat, + Kiedy szedłem z głową w chmurach -- + Niedospany, skacowany i jak palec sam. - Może kiedyś Ci opowiem, - Kim są ludzie, a kim człowiek, - O jaszczurkach w skórze kobiet, które sączą jad. - Może kiedyś -- a na razie - Dam Ci plecak pełen marzeń - I poniosę na barana przez parszywy świat. + Może kiedyś Ci opowiem, + Kim są ludzie, a kim człowiek, + O jaszczurkach w skórze kobiet, które sączą jad. + Może kiedyś -- a na razie + Dam Ci plecak pełen marzeń + I poniosę na barana przez parszywy świat. diff --git a/songs/dwieskaly.xml b/songs/dwieskaly.xml index b67e4939..4f0b4e00 100644 --- a/songs/dwieskaly.xml +++ b/songs/dwieskaly.xml @@ -10,52 +10,52 @@ - Po sztormach, burzach, nawałnicach, szkwałach - Na dwóch bliźniaczych zamieszkałem skałach. - Trzymam się obu w ciszy i zawiei -- - Skały rozpaczy i skały nadziei. + Po sztormach, burzach, nawałnicach, szkwałach + Na dwóch bliźniaczych zamieszkałem skałach. + Trzymam się obu w ciszy i zawiei -- + Skały rozpaczy i skały nadziei. - Obie prastare i obie rzeźbione - Siłą żywiołów nieświadomych znaczeń; - Skałą rozpaczy -- nadzieje stracone, - Skałą nadziei -- przetrwane rozpacze. + Obie prastare i obie rzeźbione + Siłą żywiołów nieświadomych znaczeń; + Skałą rozpaczy -- nadzieje stracone, + Skałą nadziei -- przetrwane rozpacze. - Po sztormach, burzach, nawałnicach, szkwałach - Na dwóch bliźniaczych zamieszkałem skałach. - Od świtu do zmierzchu, od zmierzchu do świtu - Na skale grozy i skale zachwytu. + Po sztormach, burzach, nawałnicach, szkwałach + Na dwóch bliźniaczych zamieszkałem skałach. + Od świtu do zmierzchu, od zmierzchu do świtu + Na skale grozy i skale zachwytu. - Obie potężne i obie wspaniałe - Wbrew horyzontom posągowe pozy; - Na skale grozy - zachwyty zwietrzałe, - W skale zachwytu - ciemna ruda grozy. + Obie potężne i obie wspaniałe + Wbrew horyzontom posągowe pozy; + Na skale grozy - zachwyty zwietrzałe, + W skale zachwytu - ciemna ruda grozy. - Po sztormach, burzach, nawałnicach, szkwałach - Na dwóch bliźniaczych zamieszkałem skałach. - Czekały na mnie przecież od początku: - Skała szaleństwa i skała rozsądku. + Po sztormach, burzach, nawałnicach, szkwałach + Na dwóch bliźniaczych zamieszkałem skałach. + Czekały na mnie przecież od początku: + Skała szaleństwa i skała rozsądku. - Obie lekarstwem przeciw nudzie ducha, - Obie modlitwy godne i przekleństwa; - W skale szaleństwa - rozsądku grań krucha, - W skale rozsądku - jaskinie szaleństwa. + Obie lekarstwem przeciw nudzie ducha, + Obie modlitwy godne i przekleństwa; + W skale szaleństwa - rozsądku grań krucha, + W skale rozsądku - jaskinie szaleństwa. - Po sztormach, burzach, nawałnicach, szkwałach - Na dwóch bliźniaczych zamieszkałem skałach. - Jedna dla drugiej lustrem i wyrzutem, - A przecież z jednej energii wyklute. + Po sztormach, burzach, nawałnicach, szkwałach + Na dwóch bliźniaczych zamieszkałem skałach. + Jedna dla drugiej lustrem i wyrzutem, + A przecież z jednej energii wyklute. - Łączy je w głębiach niewidoczny korzeń - Którym na trwałe w sedno bytu wbite; - Tam, gdzie rozsądek - rozpaczą i grozą - Nadzieja - szaleństwem, szaleństwo - zachwytem. + Łączy je w głębiach niewidoczny korzeń + Którym na trwałe w sedno bytu wbite; + Tam, gdzie rozsądek - rozpaczą i grozą + Nadzieja - szaleństwem, szaleństwo - zachwytem. diff --git a/songs/dzungla.xml b/songs/dzungla.xml index f4ac8cd7..b2f62846 100644 --- a/songs/dzungla.xml +++ b/songs/dzungla.xml @@ -9,37 +9,37 @@ - Szedłem kiedyś po pustyni, - Tam mnie napadł goryl dziki, + Szedłem kiedyś po pustyni, + Tam mnie napadł goryl dziki, - Hej, hej, hej, hej, hej, + Hej, hej, hej, hej, hej, A pustynia była wielka, - Więc na drzewo jemu zwiałem. + Więc na drzewo jemu zwiałem. - Hej, hej, hej, hej, hej, - ungla, dżungla, pustynia, - ungla, dżungla, pustynia - ungla, dżungla, pustynia. + Hej, hej, hej, hej, hej, + ungla, dżungla, pustynia, + ungla, dżungla, pustynia + ungla, dżungla, pustynia. - Pewnej księżycowej nocy - Kobra zjadła mi pięć kocy, + Pewnej księżycowej nocy + Kobra zjadła mi pięć kocy, - Zawinięty w szósty byłem + Zawinięty w szósty byłem I dynamit podpaliłem. - Raz tubylcy mnie złapali, - No i zjeść mnie zamierzali, + Raz tubylcy mnie złapali, + No i zjeść mnie zamierzali, @@ -50,32 +50,32 @@ - Proszę państwa oto miś, - Miś jest bardzo grzeczny dziś, + Proszę państwa oto miś, + Miś jest bardzo grzeczny dziś, - Chętnie państwu łapę poda, - Nie chce podać, a to szkoda. + Chętnie państwu łapę poda, + Nie chce podać, a to szkoda. - Dzik jest dziki, dzik jest zły, - Dzik ma bardzo ostre kły, + Dzik jest dziki, dzik jest zły, + Dzik ma bardzo ostre kły, - Kto spotyka w lesie dzika, - Ten na drzewo zaraz zmyka. + Kto spotyka w lesie dzika, + Ten na drzewo zaraz zmyka. - Na go, na go, na gondoli, - Pewna para się całuje, + Na go, na go, na gondoli, + Pewna para się całuje, - Wietrzyk bardzo łajbą buja, + Wietrzyk bardzo łajbą buja, Ona trzyma go za rękę. @@ -83,13 +83,13 @@ Idzie harcerz borem, lasem, - Wymachuje swym kompasem, + Wymachuje swym kompasem, A harcerka robi zupę, - Harcerz łapię ją za słowa. + Harcerz łapię ją za słowa. @@ -111,4 +111,4 @@ Nie wiem do końca jak jest z refrenami. - \ No newline at end of file + diff --git a/songs/gormimalo.xml b/songs/gormimalo.xml index 4e8ff386..405efdf0 100644 --- a/songs/gormimalo.xml +++ b/songs/gormimalo.xml @@ -30,41 +30,41 @@ - Drogi Mistrzu, Mistrzu mojej drogi, + Drogi Mistrzu, Mistrzu mojej drogi, - Mistrzu Jerzy i Mistrzu Wojciechu, + Mistrzu Jerzy i Mistrzu Wojciechu, - Przez was w górach schodziłem nogi, + Przez was w górach schodziłem nogi, - Nie mogąc złapać oddechu. + Nie mogąc złapać oddechu. - Gór, co stoją nigdy nie dogonię, + Gór, co stoją nigdy nie dogonię, - Znikających punktów na mapie, + Znikających punktów na mapie, - Jakie miejsce nazwę swym domem, + Jakie miejsce nazwę swym domem, - Jakim dotrę do niego szlakiem. + Jakim dotrę do niego szlakiem. - Gór mi mało i trzeba mi więcej, + Gór mi mało i trzeba mi więcej, - Żeby przetrwać od zimy do zimy, + Żeby przetrwać od zimy do zimy, - Ktoś mnie skazał na wieczną wędrówkę + Ktoś mnie skazał na wieczną wędrówkę - Po śladach, które sam zostawiłem. + Po śladach, które sam zostawiłem. - Góry, góry i ciągle mi nie dość, + Góry, góry i ciągle mi nie dość, - Skazanemu na gór dożywocie, + Skazanemu na gór dożywocie, - Świat na dobre mi zbieszczadział, + Świat na dobre mi zbieszczadział, - Szczyty wolnym mijają mnie krokiem. + Szczyty wolnym mijają mnie krokiem. @@ -80,21 +80,21 @@ - Pańscy święci, święci bezpańscy, + Pańscy święci, święci bezpańscy, - Święty Jerzy, Mikołaju, Michale, + Święty Jerzy, Mikołaju, Michale, - Starodawni gór świętych mieszkańcy, + Starodawni gór świętych mieszkańcy, - Imię wasze pieśniami wychwalam. + Imię wasze pieśniami wychwalam. - Gór, co stoją nigdy nie dogonię, + Gór, co stoją nigdy nie dogonię, - Znikających punktów na mapie, + Znikających punktów na mapie, - I chaty, by nazwać ją swym domem, + I chaty, by nazwać ją swym domem, - Do której żaden szlak by nie trafił. + Do której żaden szlak by nie trafił. @@ -102,21 +102,21 @@ - Gór mi mało i trzeba mi więcej, + Gór mi mało i trzeba mi więcej, - Żeby przetrwać od zimy do zimy, + Żeby przetrwać od zimy do zimy, - Ktoś mnie skazał na wieczną wędrówkę, + Ktoś mnie skazał na wieczną wędrówkę, - Po śladach, które sam zostawiłem. + Po śladach, które sam zostawiłem. - Góry, góry i ciągle mi nie dość, + Góry, góry i ciągle mi nie dość, - Skazanemu na gór dożywocie, + Skazanemu na gór dożywocie, - Świat na dobre mi zbieszczadział, + Świat na dobre mi zbieszczadział, - Szczyty wolnym mijają mnie krokiem. + Szczyty wolnym mijają mnie krokiem. diff --git a/songs/idziesobiekrolik.xml b/songs/idziesobiekrolik.xml index bcb69d1d..5b682383 100644 --- a/songs/idziesobiekrolik.xml +++ b/songs/idziesobiekrolik.xml @@ -11,9 +11,9 @@ Idzie sobie królik, słychać kroki Bolka, - Bolo idzie z nożem, będzie rozpierdolka. - Już przyleciał Bolek i w króliku dłubie, - Królik już nie żyje, Bolo ma to w dupie. + Bolo idzie z nożem, będzie rozpierdolka. + Już przyleciał Bolek i w króliku dłubie, + Królik już nie żyje, Bolo ma to w dupie. @@ -26,25 +26,25 @@ Aa, fajnie, co? - ońce raźniej świeci, swąd się w polu snuje, - Bolo dalej pruje, królik już się psuje. - Spróbował go Bolo, już zielony wszędzie, + ońce raźniej świeci, swąd się w polu snuje, + Bolo dalej pruje, królik już się psuje. + Spróbował go Bolo, już zielony wszędzie, Uwaga, uwaga, Bolo bekać będzie. - Mnoża się króliki, patroszyć je można, - Sytuacja niezła, tylko trochę gorzej z rytmem. - Króliki na polu, już się cieszy Bolek, - Bo dla niego mięso, dla nas zaś rosołek. + Mnoża się króliki, patroszyć je można, + Sytuacja niezła, tylko trochę gorzej z rytmem. + Króliki na polu, już się cieszy Bolek, + Bo dla niego mięso, dla nas zaś rosołek. - Patroszyć króliki w myśl ludowych przysłów - To jeden z największych, ludzkich idiotyzmów. - Skończył się już królik, flaków nie ma prawie, - Bolo niedomyty zaczął dłubać w trawie. + Patroszyć króliki w myśl ludowych przysłów + To jeden z największych, ludzkich idiotyzmów. + Skończył się już królik, flaków nie ma prawie, + Bolo niedomyty zaczął dłubać w trawie. diff --git a/songs/jakdobrzenam.xml b/songs/jakdobrzenam.xml index af782747..07825118 100644 --- a/songs/jakdobrzenam.xml +++ b/songs/jakdobrzenam.xml @@ -20,41 +20,41 @@ - Jak dobrze nam zdobywać góry + Jak dobrze nam zdobywać góry - I młodą piersią chłonąć wiatr. + I młodą piersią chłonąć wiatr. - Prężnymi stopy deptać chmury + Prężnymi stopy deptać chmury - I palce ranić o szczyt Tatr. + I palce ranić o szczyt Tatr. - Mieć w uszach szum, strumieni śpiew, + Mieć w uszach szum, strumieni śpiew, - A w żyłach rozognioną krew, + A w żyłach rozognioną krew, - Hejże hej, hejże ha, + Hejże hej, hejże ha, - Żyjmy więc póki czas, + Żyjmy więc póki czas, - Bo kto wie, bo kto wie, + Bo kto wie, bo kto wie, - Kiedy znowu ujrzę Was. + Kiedy znowu ujrzę Was. - Jak dobrze nam głęboką nocą + Jak dobrze nam głęboką nocą - Wędrować jasną wstęgą szos, + Wędrować jasną wstęgą szos, - Patrzeć jak gwiazdy niebo złocą + Patrzeć jak gwiazdy niebo złocą - I czekać, co przyniesie los. + I czekać, co przyniesie los. @@ -62,29 +62,29 @@ - Jak dobrze nam tak przy ognisku + Jak dobrze nam tak przy ognisku - Tęczową wstęgę marzeń snuć, + Tęczową wstęgę marzeń snuć, - Patrzeć jak w niebo iskra tryska + Patrzeć jak w niebo iskra tryska - I wokół siebe przyjaźń czuć. + I wokół siebe przyjaźń czuć. - Mieć w oczach blask i ogna żar, + Mieć w oczach blask i ogna żar, - A w duszy mieć młodości czar. + A w duszy mieć młodości czar. - Hejże hej, hejże ha, + Hejże hej, hejże ha, - Żyjmy więc póki czas, + Żyjmy więc póki czas, - Bo kto wie, bo kto wie, + Bo kto wie, bo kto wie, - Kiedy znowu ujrzę Was. + Kiedy znowu ujrzę Was. diff --git a/songs/jasio.xml b/songs/jasio.xml index 10e4101e..2142c52b 100644 --- a/songs/jasio.xml +++ b/songs/jasio.xml @@ -10,102 +10,102 @@ Ojców dom pożegnał głupi Jasio, - Szukać Wody Życia rad nierad. - Stopy ścisnął swym niedobrym braciom, - Którzy siłą go wysłali w świat. - Schedę jego wezmą i zmarnują -- - Nic powiedzieć nie mógł, choćby chciał, - Więc wyruszył w drogę pogwizdując -- - Starczy mu, że mowę zwierząt znał, - Starczy mu, że mowę zwierząt znał. + Szukać Wody Życia rad nierad. + Stopy ścisnął swym niedobrym braciom, + Którzy siłą go wysłali w świat. + Schedę jego wezmą i zmarnują -- + Nic powiedzieć nie mógł, choćby chciał, + Więc wyruszył w drogę pogwizdując -- + Starczy mu, że mowę zwierząt znał, + Starczy mu, że mowę zwierząt znał. - -- Głupi Jasiu, głupi Jasiu -- - Śmiał się w lesie szczebiot ptasi - -- Prawda to, że ci rozumu brak! - Woda Życia nie istnieje, + -- Głupi Jasiu, głupi Jasiu -- + Śmiał się w lesie szczebiot ptasi + -- Prawda to, że ci rozumu brak! + Woda Życia nie istnieje, A w obczyźnie nam zmarniejesz -- Ale on przed siebie szedł i tak, Ale on przed siebie szedł i tak. - Szedł za słonkiem tam, gdzie zachodziło; - Pod stopami chrzęścił złoty żwir. + Szedł za słonkiem tam, gdzie zachodziło; + Pod stopami chrzęścił złoty żwir. Ale złoto Jasia nie olśniło, - Wsłuchał się w wieczorny ptaków tryl. - -- Idź -- ćwierkały ptaki -- do stolicy, - Gdzie umiera Król na łożu z piór. + Wsłuchał się w wieczorny ptaków tryl. + -- Idź -- ćwierkały ptaki -- do stolicy, + Gdzie umiera Król na łożu z piór. Uzdrów go wywarem z ziarn pszenicy, On ci władzę da i jedną z cór, On ci władzę da i jedną z cór. - -- Głupi Jasiu, głupi Jasiu -- - Wabił w lesie szczebiot ptasi - -- Wszak bogactwo lepsze jest od biedy! - Nie istnieje Woda Życia, - Więc przynajmniej miej coś z życia -- + -- Głupi Jasiu, głupi Jasiu -- + Wabił w lesie szczebiot ptasi + -- Wszak bogactwo lepsze jest od biedy! + Nie istnieje Woda Życia, + Więc przynajmniej miej coś z życia -- Ale on i tak przed siebie szedł, Ale on i tak przed siebie szedł. - Nie chciał władzy Jasio, bo był głupi + Nie chciał władzy Jasio, bo był głupi I nie myślał o najsłodszym z ciał, - Bo by się miłością, władzą upił, + Bo by się miłością, władzą upił, A on Wodę Życia znaleźć miał. - Zawędrował w osypiska dzikie, - Gdzie się węże wiły mu u nóg. + Zawędrował w osypiska dzikie, + Gdzie się węże wiły mu u nóg. Uciekłby, kto mądry, przed ich sykiem, Ale Jasio syk zrozumieć mógł, Ale Jasio syk zrozumieć mógł. - -- Głupi Jasiu, głupi Jasiu, - Jeśliś nas się nie przestraszył, + -- Głupi Jasiu, głupi Jasiu, + Jeśliś nas się nie przestraszył, Idź przed siebie ścieżką na sam szczyt. - Lecz uważaj na uroki, - Nie oglądaj się na boki, - Bo cię wtedy nie ocali nikt, - Bo cię wtedy nie ocali nikt. + Lecz uważaj na uroki, + Nie oglądaj się na boki, + Bo cię wtedy nie ocali nikt, + Bo cię wtedy nie ocali nikt. - Pnie się w górę ścieżką kamienistą - Wśród upiorów, widm, bezgłowych ciał, - Ale nie przeraża go to wszystko - Bo nie takie strachy z domu znał. - Widzi już na szczycie, jak ze źródła - Woda Życia tryska srebrną mgłą, + Pnie się w górę ścieżką kamienistą + Wśród upiorów, widm, bezgłowych ciał, + Ale nie przeraża go to wszystko + Bo nie takie strachy z domu znał. + Widzi już na szczycie, jak ze źródła + Woda Życia tryska srebrną mgłą, A przy źródle jeden z braci mruga -- - Popatrz Jasiu w dół, tam jest twój dom, - Popatrz Jasiu w dół, tam jest twój dom. + Popatrz Jasiu w dół, tam jest twój dom, + Popatrz Jasiu w dół, tam jest twój dom. - upi Jasiu, głupi Jasiu, - Coś na złudę się połasił, - Raz spojrzałeś w dół, jedyny raz, - Na nic trud i droga krwawa, - Zniknął dom i brata zjawa + upi Jasiu, głupi Jasiu, + Coś na złudę się połasił, + Raz spojrzałeś w dół, jedyny raz, + Na nic trud i droga krwawa, + Zniknął dom i brata zjawa I zmieniłeś się pod szczytem w głaz, I zmieniłeś się pod szczytem w głaz. - Wraca teraz głupi Jaś z kamienia, - Pełznie drogą rok po roku cal, - Lecz przeminą całe pokolenia, - Nim pokonać zdoła złota dal. + Wraca teraz głupi Jaś z kamienia, + Pełznie drogą rok po roku cal, + Lecz przeminą całe pokolenia, + Nim pokonać zdoła złota dal. A gdy dotrze już do domu kamień, - Dzieciom ktoś opowie o nim baśń + Dzieciom ktoś opowie o nim baśń I pojawi się przy starej bramie Ożywiony baśnią głupi Jaś, Ożywiony baśnią głupi Jaś. - upi Jasiu, głupi Jasiu, - Rozumiałeś mowę ptasią, + upi Jasiu, głupi Jasiu, + Rozumiałeś mowę ptasią, Ale więcej już rozumiesz dziś -- - W baśniach śpią prawdziwe dzieje, - Woda Życia nie istnieje, + W baśniach śpią prawdziwe dzieje, + Woda Życia nie istnieje, Ale zawsze warto po nią iść, Ale zawsze warto po nią iść. diff --git a/songs/kara_barabasza.xml b/songs/kara_barabasza.xml index 4e7d981f..87aa2e42 100644 --- a/songs/kara_barabasza.xml +++ b/songs/kara_barabasza.xml @@ -9,79 +9,79 @@ - W karczmie z widokiem na Golgotę - Możesz się dzisiaj napić z łotrem, - Leje się wino krwawe, złote, - Stoły i pyski świecą mokre. - Ten ścisk to zysk dla gospodarza, - Wieść się po mieście szerzy chyża, - Że można ujrzeć tu zbrodniarza, - Co właśnie wyłgał się od krzyża. + W karczmie z widokiem na Golgotę + Możesz się dzisiaj napić z łotrem, + Leje się wino krwawe, złote, + Stoły i pyski świecą mokre. + Ten ścisk to zysk dla gospodarza, + Wieść się po mieście szerzy chyża, + Że można ujrzeć tu zbrodniarza, + Co właśnie wyłgał się od krzyża. - Żyjemy! Dobra nasza! - Co z życia chcesz, za życia bierz! - Pijmy za Barabasza! - Barabasz pije też! + Żyjemy! Dobra nasza! + Co z życia chcesz, za życia bierz! + Pijmy za Barabasza! + Barabasz pije też! - Pije, lecz mowy nie odzyskał, - Jeszcze nie pojął, że ocalał. - oń, która kubek wina ściska -- - Jakby ściskała łeb bretnala. - Stopy pod stołem plącze w tańcu, - Szaleńca, co o drogę pyta: - Każda z nich stopą jest skazańca, - A wolna! Żywa! Nieprzebita! + Pije, lecz mowy nie odzyskał, + Jeszcze nie pojął, że ocalał. + oń, która kubek wina ściska -- + Jakby ściskała łeb bretnala. + Stopy pod stołem plącze w tańcu, + Szaleńca, co o drogę pyta: + Każda z nich stopą jest skazańca, + A wolna! Żywa! Nieprzebita! - Piją mieszczanie i żebracy, - Żołdacy odstawili włócznie + Piją mieszczanie i żebracy, + Żołdacy odstawili włócznie I piją też po ciężkiej pracy, - Bawi się całe miasto hucznie. - Namiestnik dał dowody łaski! - Bez łaski -- czymże byłby żywot? - Toasty, śpiewy i oklaski + Bawi się całe miasto hucznie. + Namiestnik dał dowody łaski! + Bez łaski -- czymże byłby żywot? + Toasty, śpiewy i oklaski - -- Jest na tym świecie sprawiedliwość! + -- Jest na tym świecie sprawiedliwość! - Ryknął Barabasz śmiechem wreszcie, - Ręce szeroko rozkrzyżował - + Ryknął Barabasz śmiechem wreszcie, + Ręce szeroko rozkrzyżował - I poszła nowa wieść po mieście: - -- Żyje! Żartuje, bestia zdrowa! - ychać w pałacu, co się święci, - Próżno się Piłat usnąć stara, - Bezładnie tańczą mu w pamięci + -- Żyje! Żartuje, bestia zdrowa! + ychać w pałacu, co się święci, + Próżno się Piłat usnąć stara, + Bezładnie tańczą mu w pamięci - owa - polityka, tłum i wiara... + owa - polityka, tłum i wiara... - W karczmie z widokiem na Golgotę - Blask świtu po skorupach skacze, - Gospodarz przegnał precz hołotę + W karczmie z widokiem na Golgotę + Blask świtu po skorupach skacze, + Gospodarz przegnał precz hołotę I liczy zysk. Barabasz płacze. - W karczmie z widokiem na Golgotę - Blask świtu po skorupach skacze, - Gospodarz przegnał precz hołotę - I liczy zysk. Barabasz płacze. + W karczmie z widokiem na Golgotę + Blask świtu po skorupach skacze, + Gospodarz przegnał precz hołotę + I liczy zysk. Barabasz płacze. - Barabasz płacze. + Barabasz płacze. - Żyjemy! Dobra nasza! - Co z życia chcesz, za życia bierz! - Pijmy za Barabasza! - Barabasz człowiek też! + Żyjemy! Dobra nasza! + Co z życia chcesz, za życia bierz! + Pijmy za Barabasza! + Barabasz człowiek też! diff --git a/songs/katarynka.xml b/songs/katarynka.xml index f6ef5ca4..6b245753 100644 --- a/songs/katarynka.xml +++ b/songs/katarynka.xml @@ -9,19 +9,19 @@ Szaemanka - Zwodnico -- katarynko, teój głos tak słodko brzmi, - Ach, dokąd, katarynko, wskazujesz drogę mi? - Po różnych drogach wielu dreptałem w życiu dość, - Lecz powiedz, jak do celu mam w ciasnych butach dojść. + Zwodnico -- katarynko, teój głos tak słodko brzmi, + Ach, dokąd, katarynko, wskazujesz drogę mi? + Po różnych drogach wielu dreptałem w życiu dość, + Lecz powiedz, jak do celu mam w ciasnych butach dojść. - Robota jest robotą -- a któż by bez niej żył? - Roboty mamy potąd, niech tylko starczy sił. - Wiadomo -- bywa różnie, wiadomo -- ma się dość, - A przydałby się uśmiech, gdy życie daje w kość. + Robota jest robotą -- a któż by bez niej żył? + Roboty mamy potąd, niech tylko starczy sił. + Wiadomo -- bywa różnie, wiadomo -- ma się dość, + A przydałby się uśmiech, gdy życie daje w kość. - Robota jest robotą. + Robota jest robotą. diff --git a/songs/kiedy_mowisz.xml b/songs/kiedy_mowisz.xml index ba17bfcb..61f1591b 100644 --- a/songs/kiedy_mowisz.xml +++ b/songs/kiedy_mowisz.xml @@ -9,21 +9,21 @@ - Nie płacz w liście - nie pisz że los ciebie kopnął - nie ma sytuacji na ziemi bez wyjścia - kiedy Bóg drzwi zamyka - to otwiera okno - kiedy Bóg drzwi zamyka - to otwiera okno - odetchnij popatrz + Nie płacz w liście + nie pisz że los ciebie kopnął + nie ma sytuacji na ziemi bez wyjścia + kiedy Bóg drzwi zamyka - to otwiera okno + kiedy Bóg drzwi zamyka - to otwiera okno + odetchnij popatrz - spadają z obłoków - małe wielkie nieszczęścia potrzebne do szczęścia - a od zwykłych rzeczy naucz się spokoju - i zapomnij że jesteś gdy mówisz że kochasz - i zapomnij że jesteś gdy mówisz że kochasz - kiedy Bóg drzwi zamyka to otwiera okno - więc zapomnij że jesteś gdy mówisz że kochasz + spadają z obłoków + małe wielkie nieszczęścia potrzebne do szczęścia + a od zwykłych rzeczy naucz się spokoju + i zapomnij że jesteś gdy mówisz że kochasz + i zapomnij że jesteś gdy mówisz że kochasz + kiedy Bóg drzwi zamyka to otwiera okno + więc zapomnij że jesteś gdy mówisz że kochasz diff --git a/songs/krag.xml b/songs/krag.xml index e274444d..17d4d128 100644 --- a/songs/krag.xml +++ b/songs/krag.xml @@ -9,39 +9,39 @@ - Zamkniemy w kręgu światło - Wysokich jasnych gwiazd. - Zamkniemy w kręgu płomień, - Ogniska ciepły blask. - Zamkniemy w kręgu radość, - By nie uciekła stąd. + Zamkniemy w kręgu światło + Wysokich jasnych gwiazd. + Zamkniemy w kręgu płomień, + Ogniska ciepły blask. + Zamkniemy w kręgu radość, + By nie uciekła stąd. - A potem bratnie słowo - Podamy z rąk do rąk. + A potem bratnie słowo + Podamy z rąk do rąk. - Zamkniemy w kręgu siłę, - Niech nie opuszcza nas. - Zamkniemy w kręgu wiarę, - Że wróci dobry czas. - Zamkniemy w kręgu pamięć, - By nie uciekła stąd, + Zamkniemy w kręgu siłę, + Niech nie opuszcza nas. + Zamkniemy w kręgu wiarę, + Że wróci dobry czas. + Zamkniemy w kręgu pamięć, + By nie uciekła stąd, - A potem bratnie słowo - Podamy z rąk do rąk. + A potem bratnie słowo + Podamy z rąk do rąk. - Zamkniemy w kręgu drogi, - Wytrwałość naszych nóg, - Zamkniemy w kręgu słońce, - By rozpraszało chłód. - Zamkniemy w kręgu przyjaźń, - By nie uciekła stąd. + Zamkniemy w kręgu drogi, + Wytrwałość naszych nóg, + Zamkniemy w kręgu słońce, + By rozpraszało chłód. + Zamkniemy w kręgu przyjaźń, + By nie uciekła stąd. - A potem bratnie słowo - Podamy z rąk do rąk. + A potem bratnie słowo + Podamy z rąk do rąk. diff --git a/songs/krajkapelna.xml b/songs/krajkapelna.xml index ddda7a0d..2f871734 100644 --- a/songs/krajkapelna.xml +++ b/songs/krajkapelna.xml @@ -20,21 +20,21 @@ - Chorałem dzwonków dzień rozkwita, + Chorałem dzwonków dzień rozkwita, - Jeszcze od rosy rzęsy mokre, + Jeszcze od rosy rzęsy mokre, - We mgle turkoce pierwsza bryka, + We mgle turkoce pierwsza bryka, - ońce wyrusza na włóczęgę. + ońce wyrusza na włóczęgę. - Drogą pylistą, drogą polną, + Drogą pylistą, drogą polną, - Jak kolorowa panny krajka, + Jak kolorowa panny krajka, - ońce się wznosi nad stodołą, + ońce się wznosi nad stodołą, - Będzie tańczyć walca. + Będzie tańczyć walca. @@ -44,47 +44,47 @@ A ja mam swoją gitarę, - Spodnie wytarte i buty stare, + Spodnie wytarte i buty stare, - Wiatry niosą mnie daleko, + Wiatry niosą mnie daleko, A ja mam swoją gitarę, - Spodnie wytarte i buty stare, + Spodnie wytarte i buty stare, - Wiatry niosą mnie. + Wiatry niosą mnie. - Schrypnięte skrzypki stroją świerszcze, + Schrypnięte skrzypki stroją świerszcze, - Żuraw się wsparł o cembrowinę, + Żuraw się wsparł o cembrowinę, - Wiele nanosi wody jeszcze, + Wiele nanosi wody jeszcze, - Wielu się ludzi z niej napije. + Wielu się ludzi z niej napije. - Helios dojechał na południe, + Helios dojechał na południe, Od potu ludzkie karki mokre, - W kurzu terkoce druga bryka, + W kurzu terkoce druga bryka, - ońce w zenicie nad stodołą. + ońce w zenicie nad stodołą. - Drogą pylistą, drogą polną, + Drogą pylistą, drogą polną, - Jak kolorowa panny krajka, + Jak kolorowa panny krajka, - ońce w zenicie nad stodołą, + ońce w zenicie nad stodołą, - Dalej tańczy walca. + Dalej tańczy walca. @@ -92,21 +92,21 @@ - Zapachem siana gra muzyka, + Zapachem siana gra muzyka, - Wieczorną rosą zioła mokre, + Wieczorną rosą zioła mokre, - Drogą przemknęła trzecia bryka, + Drogą przemknęła trzecia bryka, - Purpurą płoną strzechy złote. + Purpurą płoną strzechy złote. - Drogą pylistą, drogą polną, + Drogą pylistą, drogą polną, - Jak kolorowa panny krajka, + Jak kolorowa panny krajka, - ońce zachodzi za stodołę, + ońce zachodzi za stodołę, - Kończy tańczyć walca. + Kończy tańczyć walca. @@ -114,23 +114,23 @@ - Poszumem, mgły się dzień zamyka, + Poszumem, mgły się dzień zamyka, Ostatni świerszcz już schował skrzypce, - W ciszy terkoce czwarta bryka, + W ciszy terkoce czwarta bryka, - ońce już zaszło za stodołę. + ońce już zaszło za stodołę. - Drogą pylistą, drogą polną, + Drogą pylistą, drogą polną, - Jak kolorowa panny krajka, + Jak kolorowa panny krajka, - ońce już zaszło za stodołą, + ońce już zaszło za stodołą, - Zakończyło walca. + Zakończyło walca. diff --git a/songs/ksiezniczka_i_pirat.xml b/songs/ksiezniczka_i_pirat.xml index 23a21efb..4ae58b06 100644 --- a/songs/ksiezniczka_i_pirat.xml +++ b/songs/ksiezniczka_i_pirat.xml @@ -9,73 +9,73 @@ - Pirat z soli i goryczy - W sieci świata się szamocze. - Gwiazdy drżą Księżniczce w oczach, - W pustym zamku sowa krzyczy. - On zza mórz przyzywa burze, - By mu szlak kreśliły w toni. - Ona wdycha z linii dłoni, - Bukiet tęsknot i odurzeń. - On zza mórz przyzywa burze. + Pirat z soli i goryczy + W sieci świata się szamocze. + Gwiazdy drżą Księżniczce w oczach, + W pustym zamku sowa krzyczy. + On zza mórz przyzywa burze, + By mu szlak kreśliły w toni. + Ona wdycha z linii dłoni, + Bukiet tęsknot i odurzeń. + On zza mórz przyzywa burze. Z niewiadomych oddali Płynie fala ku fali. Czy ją spotka, czy minie - W ciemnych wirów gęstwinie? + W ciemnych wirów gęstwinie? - Sztorm go rzuca na wybrzeże, - Gdzie Księżniczki stoi zamek. - Ona mu otwiera bramę, - Pirat ją w ramiona bierze. - Tętnią ściany i sklepienia - Cieni szeptem i oddechem, - Jego serce -- suchy wiecheć, - Lecz jej serce jest z płomienia. - Tętnią ściany i sklepienia. + Sztorm go rzuca na wybrzeże, + Gdzie Księżniczki stoi zamek. + Ona mu otwiera bramę, + Pirat ją w ramiona bierze. + Tętnią ściany i sklepienia + Cieni szeptem i oddechem, + Jego serce -- suchy wiecheć, + Lecz jej serce jest z płomienia. + Tętnią ściany i sklepienia. Fala z falą się zderza Poszukując przymierza. Czy je znajdą, splątane, - Czy rozprysną się w pianę? + Czy rozprysną się w pianę? - On ją trzyma, ona krzyczy, - Ona krzyczy, kielich strąca. - Tak się miesza w nich bez końca - Trunek tęsknot i goryczy. - Usypiają o poranku, - Oślepieni swym olśnieniem, - Ścichły echa, zgasły cienie, - Milczy sowa w pustym zamku. - Usypiają o poranku. + On ją trzyma, ona krzyczy, + Ona krzyczy, kielich strąca. + Tak się miesza w nich bez końca + Trunek tęsknot i goryczy. + Usypiają o poranku, + Oślepieni swym olśnieniem, + Ścichły echa, zgasły cienie, + Milczy sowa w pustym zamku. + Usypiają o poranku. Fala wtapia się w falę I zapada w oddale. Czy wśród burz i kipieli - Nic ich już nie rozdzieli? + Nic ich już nie rozdzieli? - On odpływa odurzony, - Zdobyć dla niej złote grody. - Bierze w drogę tęsknot słodycz, - Jej czekanie smak ma słony. - Czy on świat zdobędzie dla niej - I Księżniczka z nim odpłynie? - Czy on wróci i zostanie, - Czy za widnokręgiem zginie? - Czy on świat zdobędzie dla niej? + On odpływa odurzony, + Zdobyć dla niej złote grody. + Bierze w drogę tęsknot słodycz, + Jej czekanie smak ma słony. + Czy on świat zdobędzie dla niej + I Księżniczka z nim odpłynie? + Czy on wróci i zostanie, + Czy za widnokręgiem zginie? + Czy on świat zdobędzie dla niej? Płyną fale przed siebie I znikają w oddali. Nie pytajcie się fali - O to, czego nikt nie wie. + O to, czego nikt nie wie. diff --git a/songs/leluchow.xml b/songs/leluchow.xml index eb1a2f78..f95ed579 100644 --- a/songs/leluchow.xml +++ b/songs/leluchow.xml @@ -15,28 +15,28 @@ Tylko to nam pomoże - W Leluchowie - miła - Czereśnie dziko krwawią - Tam granicy pilnuje całkiem + W Leluchowie - miła + Czereśnie dziko krwawią + Tam granicy pilnuje całkiem Wesoły anioł - W Leluchowie - miła - Zaczyna się koniec świata - Tam anioł traci głowę + W Leluchowie - miła + Zaczyna się koniec świata + Tam anioł traci głowę Z brzozami się brata Wyjedź ze mną do lata Przecież jeszcze nie koniec Schowaj trochę uśmiechu - Na naszą wspólną drogę + Na naszą wspólną drogę Kiedy będziesz już ze mną To nikomu nie powiem Że szczęśliwi byliśmy - Kiedyś w Leluchowie + Kiedyś w Leluchowie diff --git a/songs/leonardo.xml b/songs/leonardo.xml index ff04015d..06f6a955 100644 --- a/songs/leonardo.xml +++ b/songs/leonardo.xml @@ -22,11 +22,11 @@ Ja nie wesoła, ale z kokardą, - Lecę do słońca, hej Leonardo! + Lecę do słońca, hej Leonardo! A ja się kręcę, bo stać nie warto, - Naprzód planeto, hej Leonardo! + Naprzód planeto, hej Leonardo! @@ -34,9 +34,9 @@ - Dość jest wszystkiego, dojść można wszędzie. + Dość jest wszystkiego, dojść można wszędzie. - Dość jest wszystkiego, dojść można wszędzie. + Dość jest wszystkiego, dojść można wszędzie. @@ -46,11 +46,11 @@ Diabeł mnie trzyma, targa za włosy, - Dokąd, wariatko, chcesz dziś wyruszyć? + Dokąd, wariatko, chcesz dziś wyruszyć? A ja gotowa, ja z halabardą - Lecę do słońca, hej Leonardo! + Lecę do słońca, hej Leonardo! @@ -60,11 +60,11 @@ Panie w koronie, Panie z liczydłem, - Nie chcę być mrówką -- ja chcę być szczygłem, + Nie chcę być mrówką -- ja chcę być szczygłem, A moja sława, droga i muzyka - Do brązowego życia pomyka. + Do brązowego życia pomyka. @@ -74,11 +74,11 @@ Przyszłam z bylekąd, ale co z tego - Zmierzch jest daleko, hej, hej kolego! + Zmierzch jest daleko, hej, hej kolego! Odłóżmy sprawę, kochany synku, - Na jakieś dziesięć miejsc po przecinku... + Na jakieś dziesięć miejsc po przecinku... diff --git a/songs/listoczekaniu.xml b/songs/listoczekaniu.xml index 6bbf642d..88964a82 100644 --- a/songs/listoczekaniu.xml +++ b/songs/listoczekaniu.xml @@ -11,34 +11,34 @@ Śmiechem pisane z kalendarza, Kartki rozwiały się po świecie, - U obcych ludzi śpią w rupieciach - Pamiątki niegdysiejszych zdarzeń. + U obcych ludzi śpią w rupieciach + Pamiątki niegdysiejszych zdarzeń. Leniwie daty chat się chylą Przed karczmą w stylu nowoczesnym. - A tej dla Ciebie słowa pieśni, - Którego nie ma który byłeś. + A tej dla Ciebie słowa pieśni, + Którego nie ma który byłeś. - Znów pora, nasza górska jesieni, - Powietrze liśćmi rozzłocone, - Pachnie drewnianym ciepłem domu - I mrokiem starych opowieści. + Znów pora, nasza górska jesieni, + Powietrze liśćmi rozzłocone, + Pachnie drewnianym ciepłem domu + I mrokiem starych opowieści. Przyjdzie rzuci twoje imię, Ze śmiechem spyta jak Ci leci, - A tej dla ciebie słowa pieśni, - Którego nie ma który byłeś. + A tej dla ciebie słowa pieśni, + Którego nie ma który byłeś. Dni na okrągło jak kapusta, Czas ani miodem ani mlekiem, - Może czekaniem na człowieka - Wypełnić miejsce po nim puste. + Może czekaniem na człowieka + Wypełnić miejsce po nim puste. diff --git a/songs/lumberjack.xml b/songs/lumberjack.xml index e880fd06..033e3248 100644 --- a/songs/lumberjack.xml +++ b/songs/lumberjack.xml @@ -9,76 +9,76 @@ - Lumberjack: - I never wanted to be in such a shambledy sketch. - I always wanted to be...a lumberjack! - Leaping from tree to tree... - as they float down the mighty rivers of British Columbia! - The larch...the redwood...the mighty sequioa... - with my best girl by my side! - The giant deadwood, the spruce... - the little Californian root tree! We'd sing, sing, sing! + Lumberjack: + I never wanted to be in such a shambledy sketch. + I always wanted to be...a lumberjack! + Leaping from tree to tree... + as they float down the mighty rivers of British Columbia! + The larch...the redwood...the mighty sequioa... + with my best girl by my side! + The giant deadwood, the spruce... + the little Californian root tree! We'd sing, sing, sing! - Lumberjack : + Lumberjack : I'm a lumberjack and I'm OK, - I sleep all night and I work all day. + I sleep all night and I work all day. - Choir and Girl : - He's a lumberjack and he's OK, - he sleeps all night and he works all day. + Choir and Girl : + He's a lumberjack and he's OK, + he sleeps all night and he works all day. - Lumberjack : - I cut down trees, I eat my lunch, I go to the lavatory. - On Wednesdays I go shopping, and have buttered scones for tea. + Lumberjack : + I cut down trees, I eat my lunch, I go to the lavatory. + On Wednesdays I go shopping, and have buttered scones for tea. - Choir : - He cuts down trees, he eats his lunch, he goes to the lavatory. - On Wednesdays he goes shopping, and has buttered scones for tea. + Choir : + He cuts down trees, he eats his lunch, he goes to the lavatory. + On Wednesdays he goes shopping, and has buttered scones for tea. - Lumberjack : - I'm a lumberjack and I'm OK, - I sleep all night and I work all day. + Lumberjack : + I'm a lumberjack and I'm OK, + I sleep all night and I work all day. - Choir : - He's a lumberjack and he's OK, - he sleeps all night and he works all day. + Choir : + He's a lumberjack and he's OK, + he sleeps all night and he works all day. - Lumberjack : - I cut down trees, I skip and jump, I like to press wild flowers. - I put on women's clothing, and hang around in bars. + Lumberjack : + I cut down trees, I skip and jump, I like to press wild flowers. + I put on women's clothing, and hang around in bars. - Choir : - He cuts down trees, he skips and jumps, he likes to press wild flowers. - He puts on women's clothing, and hangs around in bars? + Choir : + He cuts down trees, he skips and jumps, he likes to press wild flowers. + He puts on women's clothing, and hangs around in bars? - Lumberjack: - I'm a lumberjack and I'm OK, - I sleep all night and I work all day . + Lumberjack: + I'm a lumberjack and I'm OK, + I sleep all night and I work all day . - Choir and Girl : - He's a lumberjack and he's OK, - he sleeps all night and he works all day. + Choir and Girl : + He's a lumberjack and he's OK, + he sleeps all night and he works all day. - Lumberjack : - I cut down trees, I wear high heels, suspenders and a bra. - I wish I'd been a girlie, just like my dear papa. + Lumberjack : + I cut down trees, I wear high heels, suspenders and a bra. + I wish I'd been a girlie, just like my dear papa. - Choir : - He cuts down trees, he wears high heels, suspenders and a bra? + Choir : + He cuts down trees, he wears high heels, suspenders and a bra? - John Cleese: What kind of god damn fairy cunny fairy faggot... + John Cleese: What kind of god damn fairy cunny fairy faggot... - All except Girl : - I'm a lumberjack and I'm OK, - I sleep all night and I work all day. + All except Girl : + I'm a lumberjack and I'm OK, + I sleep all night and I work all day. I'm a lumberjack and I'm OK! diff --git a/songs/malarze.xml b/songs/malarze.xml index 6fa2da53..c63f04ec 100644 --- a/songs/malarze.xml +++ b/songs/malarze.xml @@ -9,35 +9,35 @@ Żywopiscy - Hej, malarze, nuże pędzle zanurzajcie - W zorze miasta o wieczorze, w nasze dziś. + Hej, malarze, nuże pędzle zanurzajcie + W zorze miasta o wieczorze, w nasze dziś. - Niech powtórzą gwar podwórek na Arbacie - Wasze pędzle jak jesienny lotny liść. + Niech powtórzą gwar podwórek na Arbacie + Wasze pędzle jak jesienny lotny liść. - Zanurzajcie, kładźcie farby jak się patrzy, - Kładźcie błękit, kładźcie razem blask i cień. + Zanurzajcie, kładźcie farby jak się patrzy, + Kładźcie błękit, kładźcie razem blask i cień. - Namalujcie i z zapałem, i z sympatią, - Jak z sympatią przechadzamy się dzień w dzień. + Namalujcie i z zapałem, i z sympatią, + Jak z sympatią przechadzamy się dzień w dzień. - Niech zatłoczą się ulice rozbudzone! - Niech się zacznie, niech się ziści to, co chce! + Niech zatłoczą się ulice rozbudzone! + Niech się zacznie, niech się ziści to, co chce! - Wy malujcie, wszystko będzie policzone. - Nie będziemy zgadywali: dobrze? źle? + Wy malujcie, wszystko będzie policzone. + Nie będziemy zgadywali: dobrze? źle? - Przesądzajcie nasze losy jak sędziowie, - Pokosztować nam przyszłości dajcie kęs. + Przesądzajcie nasze losy jak sędziowie, + Pokosztować nam przyszłości dajcie kęs. - Choć nie znamy się, malujcie nas na zdrowie, - A ja tym, co nie pojmują, wskażę sens! + Choć nie znamy się, malujcie nas na zdrowie, + A ja tym, co nie pojmują, wskażę sens! diff --git a/songs/moiprzyjaciele.xml b/songs/moiprzyjaciele.xml index 16fec3be..d09f1016 100644 --- a/songs/moiprzyjaciele.xml +++ b/songs/moiprzyjaciele.xml @@ -9,39 +9,39 @@ - Kiedy was nie ma, to jakby nagle - Zabrakło w moim życiu muzyki, - Kiedy was nie ma to czas mnie straszy, - Że przeminę, że będę chwilą. - Kiedy was nie ma, to jakby niebo - Miało się rozstać na zawsze ze słońcem, - Kiedy was nie ma, dość mam wszystkiego - I pragnę z stąd na zawsze odejść. + Kiedy was nie ma, to jakby nagle + Zabrakło w moim życiu muzyki, + Kiedy was nie ma to czas mnie straszy, + Że przeminę, że będę chwilą. + Kiedy was nie ma, to jakby niebo + Miało się rozstać na zawsze ze słońcem, + Kiedy was nie ma, dość mam wszystkiego + I pragnę z stąd na zawsze odejść. - Moi przyjaciele, moi przyjaciele, - Moi przyjaciele, bądźcie zawsze ze mną, - Moi przyjaciele, moi przyjaciele, - Z Wami wiem, że wszystko mogę, - Że wystarczy tylko chcieć. + Moi przyjaciele, moi przyjaciele, + Moi przyjaciele, bądźcie zawsze ze mną, + Moi przyjaciele, moi przyjaciele, + Z Wami wiem, że wszystko mogę, + Że wystarczy tylko chcieć. - Jak mam wyśpiewać, jak mam dziękować? - Jak wytłumaczyć, że bez was mnie nie ma? - Przytulam do was swoją miłość, - I wdzięczność swą w modlitwę zamieniam. - Milion aniołków narysuje - I wszystkie razem postrącam z nieba, - Dom na górze wybuduje - I zagram dla was kiedy trzeba. + Jak mam wyśpiewać, jak mam dziękować? + Jak wytłumaczyć, że bez was mnie nie ma? + Przytulam do was swoją miłość, + I wdzięczność swą w modlitwę zamieniam. + Milion aniołków narysuje + I wszystkie razem postrącam z nieba, + Dom na górze wybuduje + I zagram dla was kiedy trzeba. - Moi przyjaciele, moi przyjaciele, - Moi przyjaciele, bądźcie zawsze ze mną, - Moi przyjaciele, moi przyjaciele, - Z Wami wiem, że wszystko mogę, - Że wystarczy tylko chcieć. + Moi przyjaciele, moi przyjaciele, + Moi przyjaciele, bądźcie zawsze ze mną, + Moi przyjaciele, moi przyjaciele, + Z Wami wiem, że wszystko mogę, + Że wystarczy tylko chcieć. diff --git a/songs/motyle_pocalunki.xml b/songs/motyle_pocalunki.xml index 024eda13..d0aae9c5 100644 --- a/songs/motyle_pocalunki.xml +++ b/songs/motyle_pocalunki.xml @@ -14,21 +14,21 @@ Co noc wpatrywać się w Twoje oczy Aż wreszcie rumieniec zniknie z Twoich lic... - Z Twoich lic, z Twoich lic, z Twoich lic, z Twoich. + Z Twoich lic, z Twoich lic, z Twoich lic, z Twoich. Choćby życie miało trwać tylko chwilę, Zaraz potem przyszła śmierć. Jak maleńkie kolorowe motyle Będziemy wirować, nim przyjdzie - jego kres, jego kres, jego kres, jego kres. + jego kres, jego kres, jego kres, jego kres. Tak bliscy sobie w jednym oddechu, Wyruszać będziemy w nasze dni. Czułość zamykać w serdecznym uśmiechu. A nocą szukać w ciałach naszych chwil, - Naszych chwil, naszych chwil, naszych chwil, naszych. + Naszych chwil, naszych chwil, naszych chwil, naszych. diff --git a/songs/muchawszklancelemoniady.xml b/songs/muchawszklancelemoniady.xml index d879fc04..82695fd8 100644 --- a/songs/muchawszklancelemoniady.xml +++ b/songs/muchawszklancelemoniady.xml @@ -10,39 +10,39 @@ - Oliwnej lampy płomyk się wypalił, - W rodzynki się zmarszczyły winogrona. - Wbrew sobie, syty baśni, usnął kalif, - Za włos go szarpie małpka oswojona. + Oliwnej lampy płomyk się wypalił, + W rodzynki się zmarszczyły winogrona. + Wbrew sobie, syty baśni, usnął kalif, + Za włos go szarpie małpka oswojona. - Śnij nieszczęsny, śnij szczęściarzu - O swej wierze i zwątpieniu, - Śnij o łasce, śnij o karze, + Śnij nieszczęsny, śnij szczęściarzu + O swej wierze i zwątpieniu, + Śnij o łasce, śnij o karze, O oazie i pragnieniu. - O pustyni i wielbłądzie, - O bogactwie i o nędzy. - Kołowrotek śnij i kądziel, - Ład dywanu, chaos przędzy. - Wyśnij skrzydlatego konia, - Wyśnij osła pod kieratem, - Labiryntu sieć na dłoniach, - Każdą zdobycz i utratę. - Śnij korzenie, śnij owoce, - Śnij pałace, śnij ruiny, - Dni milczące, gwarne noce, - Góry mrok i blask kotliny. - We śnie nie śpiesz się, masz czas, - Snom daj płynąć, a nie płonąć, - Śnij, jak śni się tylko raz - Swą maleńką nieskończoność... + O pustyni i wielbłądzie, + O bogactwie i o nędzy. + Kołowrotek śnij i kądziel, + Ład dywanu, chaos przędzy. + Wyśnij skrzydlatego konia, + Wyśnij osła pod kieratem, + Labiryntu sieć na dłoniach, + Każdą zdobycz i utratę. + Śnij korzenie, śnij owoce, + Śnij pałace, śnij ruiny, + Dni milczące, gwarne noce, + Góry mrok i blask kotliny. + We śnie nie śpiesz się, masz czas, + Snom daj płynąć, a nie płonąć, + Śnij, jak śni się tylko raz + Swą maleńką nieskończoność... - I tak minęła noc tysięczna pierwsza, - Odpłynął śpiewny głos Szeherezady, - Nie słychać w palenisku śmiechu świerszcza, - Trup muchy pływa w szklance lemoniady. + I tak minęła noc tysięczna pierwsza, + Odpłynął śpiewny głos Szeherezady, + Nie słychać w palenisku śmiechu świerszcza, + Trup muchy pływa w szklance lemoniady. diff --git a/songs/mysliwa.xml b/songs/mysliwa.xml index c853fea3..fe2c5896 100644 --- a/songs/mysliwa.xml +++ b/songs/mysliwa.xml @@ -19,13 +19,13 @@ Więc chyba pójdzie jak po mydle - Od zwierza do zwierza - Byle do mnie należał - Od duszy po pięty - Moją magią owładnięty - Na łowy, na łowy - Co tam okres godowy - Na tygrysa, na byka + Od zwierza do zwierza + Byle do mnie należał + Od duszy po pięty + Moją magią owładnięty + Na łowy, na łowy + Co tam okres godowy + Na tygrysa, na byka I niech gra muzyka diff --git a/songs/nadziei_amatorski_zespol.xml b/songs/nadziei_amatorski_zespol.xml index ea3c3689..8ff30459 100644 --- a/songs/nadziei_amatorski_zespol.xml +++ b/songs/nadziei_amatorski_zespol.xml @@ -13,7 +13,7 @@ A słowa same jak motyle sfruwają z warg i lecą w mrok. Któż namm gorącą piosnkę przysłał, choć ziąb i rzeką płynie kra? - Nadziei amatorski zespół, co pod batutą serca gra. + Nadziei amatorski zespół, co pod batutą serca gra. @@ -21,7 +21,7 @@ Zacinał ostro w nasze twarze i w karki bezlitośnie tłukł. Kiedy ochrypną już dowódcy, kto u żołnierzy posłuch ma? - Nadziei amatorski zespół, co pod batutą serca gra! + Nadziei amatorski zespół, co pod batutą serca gra! @@ -29,7 +29,7 @@ Flecista drutem flet obwiązał, lecz każdy pręży się jak lew! Łatany strój, instrument kiepski, ale najwięcej zbiera braw - Nadziei amatorski zespół, co pod batutą serca gra! + Nadziei amatorski zespół, co pod batutą serca gra! diff --git a/songs/najemnicy.xml b/songs/najemnicy.xml index 13c20f83..2bd1b23c 100644 --- a/songs/najemnicy.xml +++ b/songs/najemnicy.xml @@ -9,40 +9,40 @@ - W dżunglach Katangi i bagnach Konga, - W stepach Jemenu, w piaskach Sudanu, - Gdzie śmierć swe żniwa zbiera codziennie - Walczą psy wojny, najemni żołnierze. + W dżunglach Katangi i bagnach Konga, + W stepach Jemenu, w piaskach Sudanu, + Gdzie śmierć swe żniwa zbiera codziennie + Walczą psy wojny, najemni żołnierze. - Czerwone łuny na niebie, czarna dokoła noc - I naprzód, wciąż naprzód najemni żołnierze + Czerwone łuny na niebie, czarna dokoła noc + I naprzód, wciąż naprzód najemni żołnierze - I vive la guerre, i vive la morte... + I vive la guerre, i vive la morte... - Gdy huczą działa, świszczą pociski, - Gdy serce wali jak opętane - Brudni od kurzu, od potu ciemni - Biegną w ataku, biegną w nieznane. + Gdy huczą działa, świszczą pociski, + Gdy serce wali jak opętane + Brudni od kurzu, od potu ciemni + Biegną w ataku, biegną w nieznane. - Gdy przy ognisku, przy ognisku siąda + Gdy przy ognisku, przy ognisku siąda I dawne dzieje wspominać zaczną, Uśmiech rozjaśni zmęczone twarze, - Gdy z bronią w ręku wśród dżungli zasną. + Gdy z bronią w ręku wśród dżungli zasną. - Dla tych, co w piaskach Zambii i Konga, + Dla tych, co w piaskach Zambii i Konga, I dla tych, co w bezimiennych grobach, - Dla wszystkich, którzy polegli w walce, - Bóg wojny wieniec niesie laurowy. + Dla wszystkich, którzy polegli w walce, + Bóg wojny wieniec niesie laurowy. @@ -64,4 +64,4 @@ Chyba autor jest generalnie nieznany - \ No newline at end of file + diff --git a/songs/naszaklasa92.xml b/songs/naszaklasa92.xml index a3d7b14e..89f2881f 100644 --- a/songs/naszaklasa92.xml +++ b/songs/naszaklasa92.xml @@ -15,83 +15,83 @@ Osiągnęliśmy dojrzałość, zajmujemy stanowiska, - Co się zżarło i wychlało - na zmęczonych puchnie pyskach. + Co się zżarło i wychlało - na zmęczonych puchnie pyskach. - - Cośmy pozapominali - zostawiło w oczach pustkę; + - Cośmy pozapominali - zostawiło w oczach pustkę; - Żar zwycięstwa nas wypalił, jak karabinową łuskę, + Żar zwycięstwa nas wypalił, jak karabinową łuskę, - Jak karabinową łuskę. + Jak karabinową łuskę. - Rysiek wreszcie umył ręce, dotąd czarne po drukarni, + Rysiek wreszcie umył ręce, dotąd czarne po drukarni, - Procesuje się zawzięcie o nagłówek "Solidarni". + Procesuje się zawzięcie o nagłówek "Solidarni". - Julek grać nie umiał w piłkę, zwali go - "pryszczata menda", + Julek grać nie umiał w piłkę, zwali go - "pryszczata menda", - Taktyki ujawnił żyłkę w otoczeniu Prezydenta, + Taktyki ujawnił żyłkę w otoczeniu Prezydenta, - W otoczenia Prezydenta. + W otoczenia Prezydenta. - Kopnął źle, wszedł do rezerwy, ale nawet z ławki - kopie, + Kopnął źle, wszedł do rezerwy, ale nawet z ławki - kopie, - Nie zawiodą Julka nerwy w Zjednoczonej Europie... + Nie zawiodą Julka nerwy w Zjednoczonej Europie... Ela żyje nawet nieźle, co rok jeździ do Nepalu, - Przekazuje, co przywiezie, przetrwa z tego, co odpalą, + Przekazuje, co przywiezie, przetrwa z tego, co odpalą, - Przetrwa z tego, co odpalą. + Przetrwa z tego, co odpalą. - Lena wyszła nieszczęśliwie za bezwzględne beztalencie, + Lena wyszła nieszczęśliwie za bezwzględne beztalencie, - Co się dziesięć lat nią żywi: Lena urok ma i wzięcie, + Co się dziesięć lat nią żywi: Lena urok ma i wzięcie, - Zdzich uczciwie robi pieniądz, więc nerwice ma i wrzody + Zdzich uczciwie robi pieniądz, więc nerwice ma i wrzody - Ale mu zazdrości Henio, niezadbany, zły i głodny, + Ale mu zazdrości Henio, niezadbany, zły i głodny, - Niezadbany, zły i głodny... + Niezadbany, zły i głodny... - Za wzór zawsze robił Henio odrzucania trefnych ofert: + Za wzór zawsze robił Henio odrzucania trefnych ofert: - Znał Pascala i Montaigne'a, etyki był filozofem. + Znał Pascala i Montaigne'a, etyki był filozofem. - Z tej zazdrości i z tej złości znów dziś robi za wyrocznię + Z tej zazdrości i z tej złości znów dziś robi za wyrocznię - Etykę mu cel uprościł zniszczy Zdzicha zanim spocznie, + Etykę mu cel uprościł zniszczy Zdzicha zanim spocznie, - Zniszczy Zdzicha zanim spocznie. + Zniszczy Zdzicha zanim spocznie. - W sumie przyszłościowy rocznik w wiek XXI-wszy wchodzi: + W sumie przyszłościowy rocznik w wiek XXI-wszy wchodzi: - Dzieci Marca, Grudnia, stoczni, chrzestni bólów przy porodzie; + Dzieci Marca, Grudnia, stoczni, chrzestni bólów przy porodzie; - Kajam się za wstyd i gorycz, za niewyważenie racji; + Kajam się za wstyd i gorycz, za niewyważenie racji; - Więc ze skruchą i pokorą uzupełniam obserwacje, + Więc ze skruchą i pokorą uzupełniam obserwacje, @@ -105,15 +105,15 @@ Irka z Jurkiem gdzieś ugrzęźli na wsi krytej eternitem, - Pewnie się nie odnaleźli w Trzeciej Rzeczypospolitej. + Pewnie się nie odnaleźli w Trzeciej Rzeczypospolitej. - Zbyszek, Romek, Anka, Paweł są tak prawi, że aż łyso + Zbyszek, Romek, Anka, Paweł są tak prawi, że aż łyso I czym żyją, nie wiem nawet, więc i nie ma o czym pisać, - Więc i nie ma o czym pisać. + Więc i nie ma o czym pisać. @@ -173,4 +173,3 @@ - \ No newline at end of file diff --git a/songs/nielubie.xml b/songs/nielubie.xml index 8199d1f5..1bc771f1 100644 --- a/songs/nielubie.xml +++ b/songs/nielubie.xml @@ -9,44 +9,44 @@ Ja nie lublu - Ja nienawidzę fatalnego końca, - Nie lubię kiedy los się śmieje w nos. - Nie znosze pory roku, dnia, miesiąca, - Gdy kością w gardle własny staje głos. - Nie lubię, gdy się draństwem chełpią dranie, - Nie lubię, gdy nieśmiali drżą jak liść. - Ani, gdy zaglądając mi przez ramię, - Ktoś obcy razem ze mną czyta list! + Ja nienawidzę fatalnego końca, + Nie lubię kiedy los się śmieje w nos. + Nie znosze pory roku, dnia, miesiąca, + Gdy kością w gardle własny staje głos. + Nie lubię, gdy się draństwem chełpią dranie, + Nie lubię, gdy nieśmiali drżą jak liść. + Ani, gdy zaglądając mi przez ramię, + Ktoś obcy razem ze mną czyta list! - Nie lubię siebie, gdy mnie tchórz obleci, - I wstyd i wstręt ogarnia wtedy mnie. - Bardzo nie lubię, gdy strzelają w plecy, - A kiedy między oczy także nie! - Nie wierzę ludziom, gdy za głośno klaszczą, - We mgle frazesów głupio mi i źle. - Nie lubię, gdy pod sierść mnie jacyś głaszczą, - I gdy żelazo zgrzyta mi po szkle! + Nie lubię siebie, gdy mnie tchórz obleci, + I wstyd i wstręt ogarnia wtedy mnie. + Bardzo nie lubię, gdy strzelają w plecy, + A kiedy między oczy także nie! + Nie wierzę ludziom, gdy za głośno klaszczą, + We mgle frazesów głupio mi i źle. + Nie lubię, gdy pod sierść mnie jacyś głaszczą, + I gdy żelazo zgrzyta mi po szkle! - Odpycha mnie zarozumiała sytość - I mierzi język, co zapomniał słów - Takich zwyczajnych: ,,honor'', ,,przyzwoitość''... - O, niechby je przypomniał sobie znów! - Nie bawi mnie, gdy dołki kopią w nocy, - Gdy podstawiają nogę -- kiepski żart. - Nie lubię i przemocy i niemocy, - Tylko Chrystusa mi na krzyżu żal... + Odpycha mnie zarozumiała sytość + I mierzi język, co zapomniał słów + Takich zwyczajnych: ,,honor'', ,,przyzwoitość''... + O, niechby je przypomniał sobie znów! + Nie bawi mnie, gdy dołki kopią w nocy, + Gdy podstawiają nogę -- kiepski żart. + Nie lubię i przemocy i niemocy, + Tylko Chrystusa mi na krzyżu żal... - W zaduchu plotek duszę się i krztuszę, - Mam za złe pustym, rozmemłanym dniom. - Nie lubię, gdy butami włażą w duszę, - A jeszcze bardziej, kiedy plują w nią! - Nie miłe mi igrzyska, targowiska! - Ich zgiełk i taniość i w rękawie nóż! - Słyszałem, że jutrzenka zmian na błyska, - Lecz tego nie polubię nigdy już! + W zaduchu plotek duszę się i krztuszę, + Mam za złe pustym, rozmemłanym dniom. + Nie lubię, gdy butami włażą w duszę, + A jeszcze bardziej, kiedy plują w nią! + Nie miłe mi igrzyska, targowiska! + Ich zgiełk i taniość i w rękawie nóż! + Słyszałem, że jutrzenka zmian na błyska, + Lecz tego nie polubię nigdy już! diff --git a/songs/niepatrznato.xml b/songs/niepatrznato.xml index 914fb7f3..a1fc04f5 100644 --- a/songs/niepatrznato.xml +++ b/songs/niepatrznato.xml @@ -9,45 +9,45 @@ - Świat jest taki a nie inny i zapewne się nie zmieni - ogłosili wczoraj słynni dwaj uczeni - a w przypadku słynnych ludzi każda myśl jest całkiem dobra - więc ci goście otrzymali zaraz Nobla - Mieli rację jest jak było czyli całkiem nieciekawie - w rowie leży pierwsza miłość po zabawie - jak się bawić to się bawić krzyż na szyi w dłoni "seta" - i na niebie czasem zjawi się kometa + Świat jest taki a nie inny i zapewne się nie zmieni + ogłosili wczoraj słynni dwaj uczeni + a w przypadku słynnych ludzi każda myśl jest całkiem dobra + więc ci goście otrzymali zaraz Nobla + Mieli rację jest jak było czyli całkiem nieciekawie + w rowie leży pierwsza miłość po zabawie + jak się bawić to się bawić krzyż na szyi w dłoni "seta" + i na niebie czasem zjawi się kometa - Zamknij oczy nie patrz na to moja miła - pod powieką znaczenie lepsze są widoki - i w tym nasza siła i w tym nasza siła - że umiemy jeszcze czasem marzyć + Zamknij oczy nie patrz na to moja miła + pod powieką znaczenie lepsze są widoki + i w tym nasza siła i w tym nasza siła + że umiemy jeszcze czasem marzyć - Jak się bawić to się bawić a tu biedy coraz więcej - i ważniejszy jest karabin niźli serce - tutaj się zabawą żyje za to tępe rządzą głowy - a czasami kretyn z kijem bejsbolowym - Nie patrz miła na to wszystko człowiek musi się szanować - niech nie schyla się za nisko twoja głowa - lecz na chwilę moment jeden za to z góry ci dziękuję - otwórz oczy tylko kiedy mnie całujesz + Jak się bawić to się bawić a tu biedy coraz więcej + i ważniejszy jest karabin niźli serce + tutaj się zabawą żyje za to tępe rządzą głowy + a czasami kretyn z kijem bejsbolowym + Nie patrz miła na to wszystko człowiek musi się szanować + niech nie schyla się za nisko twoja głowa + lecz na chwilę moment jeden za to z góry ci dziękuję + otwórz oczy tylko kiedy mnie całujesz - A na resztę zamknij oczy moja miła - pod powieką znaczenie lepsze są widoki - i w tym nasza siła i w tym nasza siła - że umiemy jeszcze czasem marzyć + A na resztę zamknij oczy moja miła + pod powieką znaczenie lepsze są widoki + i w tym nasza siła i w tym nasza siła + że umiemy jeszcze czasem marzyć - A na resztę zamknij oczy moja miła - pod powieką znaczenie lepsze są obrazy + A na resztę zamknij oczy moja miła + pod powieką znaczenie lepsze są obrazy - i w tym nasza siła i w tym nasza siła - że umiemy jeszcze czasem marzyć + i w tym nasza siła i w tym nasza siła + że umiemy jeszcze czasem marzyć @@ -69,4 +69,4 @@ - \ No newline at end of file + diff --git a/songs/oblawa.xml b/songs/oblawa.xml index a9641e4e..8d2e49fd 100644 --- a/songs/oblawa.xml +++ b/songs/oblawa.xml @@ -9,60 +9,60 @@ - Skulony w jakiejś ciemnej jamie smaczniem sobie spał - I spały małe wilczki dwa - zupełnie ślepe jeszcze - Wtem stary wilk przewodnik co życie dobrze znał - Łeb podniósł warknął groźnie aż mną szarpnęły dreszcze + Skulony w jakiejś ciemnej jamie smaczniem sobie spał + I spały małe wilczki dwa - zupełnie ślepe jeszcze + Wtem stary wilk przewodnik co życie dobrze znał + Łeb podniósł warknął groźnie aż mną szarpnęły dreszcze - Poczułem nagle wokół siebie nienawistną woń - Woń która tłumi wszelki spokój zrywa wszystkie sny - Z daleka ktoś gdzieś krzyknął nagle krótki rozkaz: goń - I z czterech stron wypadły na nas cztery gończe psy + Poczułem nagle wokół siebie nienawistną woń + Woń która tłumi wszelki spokój zrywa wszystkie sny + Z daleka ktoś gdzieś krzyknął nagle krótki rozkaz: goń + I z czterech stron wypadły na nas cztery gończe psy - Obława! Obława! Na młode wilki obława! - Te dzikie zapalczywe, w gęstym lesie wychowane! - Krąg śniegu wydeptany! W tym kręgu plama krwawa! - Ciała wilcze kłami gończych psów szarpane! + Obława! Obława! Na młode wilki obława! + Te dzikie zapalczywe, w gęstym lesie wychowane! + Krąg śniegu wydeptany! W tym kręgu plama krwawa! + Ciała wilcze kłami gończych psów szarpane! - Ten który rzucił na mnie się niewiele szczęścia miał - Bo wypadł prosto mi na kły i krew trysnęła z rany - Gdym teraz - ile w łapach sił - przed siebie prosto rwał - Ujrzałem małe wilczki dwa na strzępy rozszarpane! + Ten który rzucił na mnie się niewiele szczęścia miał + Bo wypadł prosto mi na kły i krew trysnęła z rany + Gdym teraz - ile w łapach sił - przed siebie prosto rwał + Ujrzałem małe wilczki dwa na strzępy rozszarpane! - Zginęły ślepe, ufne tak puszyste kłębki dwa - Bezradne na tym świecie złym nie wiedząc kto je zdławił - I zginie także stary wilk choć życie dobrze zna - Bo z trzema naraz walczy psami i z ran trzech naraz krwawi + Zginęły ślepe, ufne tak puszyste kłębki dwa + Bezradne na tym świecie złym nie wiedząc kto je zdławił + I zginie także stary wilk choć życie dobrze zna + Bo z trzema naraz walczy psami i z ran trzech naraz krwawi - Wypadłem na otwartą przestrzeń pianę z pyska tocząc - Lecz tutaj też ze wszystkich stron - zła mnie otacza woń! - A myśliwemu co mnie dojrzał już się śmieją oczy - I ręka pewna, niezawodna podnosi w górę broń! + Wypadłem na otwartą przestrzeń pianę z pyska tocząc + Lecz tutaj też ze wszystkich stron - zła mnie otacza woń! + A myśliwemu co mnie dojrzał już się śmieją oczy + I ręka pewna, niezawodna podnosi w górę broń! - Rzucam się w bok, na oślep gnam aż ziemia spod łap tryska - I wtedy pada pierwszy strzał co kark mi rozszarpuje - Wciąż pędzę, słyszę jak on klnie! I krew mi płynie z pyska - On strzela po raz drugi! Lecz teraz już pudłuje! + Rzucam się w bok, na oślep gnam aż ziemia spod łap tryska + I wtedy pada pierwszy strzał co kark mi rozszarpuje + Wciąż pędzę, słyszę jak on klnie! I krew mi płynie z pyska + On strzela po raz drugi! Lecz teraz już pudłuje! - Wyrwałem się z obławy tej schowałem w jakiś las - Lecz ile szczęścia miałem w tym to każdy chyba przyzna - Leżałem w śniegu jak nieżywy długi długi czas - Po strzale zaś na zawsze mi została krwawa blizna! + Wyrwałem się z obławy tej schowałem w jakiś las + Lecz ile szczęścia miałem w tym to każdy chyba przyzna + Leżałem w śniegu jak nieżywy długi długi czas + Po strzale zaś na zawsze mi została krwawa blizna! - Lecz nie skończyła się obława i nie śpią gończe psy - I giną ciągle wilki młode na całym wielkim świecie - Nie dajcie z siebie zedrzeć skór! Brońcie się i wy! - O, bracia wilcy! Brońcie się nim wszyscy wyginiecie! + Lecz nie skończyła się obława i nie śpią gończe psy + I giną ciągle wilki młode na całym wielkim świecie + Nie dajcie z siebie zedrzeć skór! Brońcie się i wy! + O, bracia wilcy! Brońcie się nim wszyscy wyginiecie! diff --git a/songs/obok_ciebie.xml b/songs/obok_ciebie.xml index ceb908dd..8aed90d0 100644 --- a/songs/obok_ciebie.xml +++ b/songs/obok_ciebie.xml @@ -9,41 +9,41 @@ - Pewnie nie zdążę opłynąć świata, - Nie są mi dane Everesty sine, + Pewnie nie zdążę opłynąć świata, + Nie są mi dane Everesty sine, Ale do szczęścia wystarczyć może - Lekki podmuch nad Niegocinem. + Lekki podmuch nad Niegocinem. - A Ty, miły, szukasz czegoś stale, - Na końcu świata, albo jeszcze dalej -- w niebie, - Przemierzając morza całe, - A to coś jest obok Ciebie. + A Ty, miły, szukasz czegoś stale, + Na końcu świata, albo jeszcze dalej -- w niebie, + Przemierzając morza całe, + A to coś jest obok Ciebie. - yńcie koledzy w dalekie Horny, - Zorza otuli nad biegunami, + yńcie koledzy w dalekie Horny, + Zorza otuli nad biegunami, A moje szczęście bywa po prostu - Wschodem słońca nad Wigrami. + Wschodem słońca nad Wigrami. - Nie chcą się spełniać wielkie marzenia, - Chodzę po ziemi więc mocno, mój kotku, - Krótki jest opis mojego szczęścia -- - To łajba z Tobą w środku. + Nie chcą się spełniać wielkie marzenia, + Chodzę po ziemi więc mocno, mój kotku, + Krótki jest opis mojego szczęścia -- + To łajba z Tobą w środku. A Ty, miły, szukasz czegoś stale, - Na końcu świata, albo jeszcze dalej -- w niebie, - Przemierzając morza całe, - A ten ktoś jest obok Ciebie. + Na końcu świata, albo jeszcze dalej -- w niebie, + Przemierzając morza całe, + A ten ktoś jest obok Ciebie. diff --git a/songs/obokciebie.xml b/songs/obokciebie.xml index 91c8c80c..6931d34b 100644 --- a/songs/obokciebie.xml +++ b/songs/obokciebie.xml @@ -9,39 +9,39 @@ - Pewnie nie zdążę opłynąć świata, - Nie są mi dane Everesty sine, - Ale do szczęścia wystarczyć może - Lekki podmuch nad Niegocinem. + Pewnie nie zdążę opłynąć świata, + Nie są mi dane Everesty sine, + Ale do szczęścia wystarczyć może + Lekki podmuch nad Niegocinem. - A Ty, miły, szukasz czegoś stale - Na końcu świata , albo jeszcze dalej, w niebie, - Przemierzając morza całe, - A to coś jest obok Ciebie. + A Ty, miły, szukasz czegoś stale + Na końcu świata , albo jeszcze dalej, w niebie, + Przemierzając morza całe, + A to coś jest obok Ciebie. - yńcie koledzy w dalekie Horny, - Zorza otuli nad biegunami, + yńcie koledzy w dalekie Horny, + Zorza otuli nad biegunami, A moje szczęście bywa po prostu - Wschodem słońca nad Wigrami. + Wschodem słońca nad Wigrami. - Nie chcą się spełniać wielkie marzenia, - Chodzę po ziemi więc mocno, mój kotku, - Krótki jest opis mojego szczęścia: - To łajba z Tobą w środku. + Nie chcą się spełniać wielkie marzenia, + Chodzę po ziemi więc mocno, mój kotku, + Krótki jest opis mojego szczęścia: + To łajba z Tobą w środku. - A Ty, miły, szukasz kogoś stale, - Na końcu świata, albo jeszcze dalej, w niebie, - Przemierzając morza całe obok, - A ten ktoś jest obok ciebie. + A Ty, miły, szukasz kogoś stale, + Na końcu świata, albo jeszcze dalej, w niebie, + Przemierzając morza całe obok, + A ten ktoś jest obok ciebie. diff --git a/songs/obraciachktorzypytalisie.xml b/songs/obraciachktorzypytalisie.xml index c901bf11..e0faef40 100644 --- a/songs/obraciachktorzypytalisie.xml +++ b/songs/obraciachktorzypytalisie.xml @@ -9,45 +9,45 @@ - Wyszli bracia, wiatr we włosach, co za czas, - W oczach gwiazdy i drzewa na spodzie, - Pochyleni, zanurzeni po pas, - Brodzą w nocy czerwcowej jak w wodzie. - Zatrzaśnięte na krzyż okiennice, - Nieskoszony jescze zapach łąk - I już płoną pozrywane księżyce - W białych lampach zamkniętych rąk. + Wyszli bracia, wiatr we włosach, co za czas, + W oczach gwiazdy i drzewa na spodzie, + Pochyleni, zanurzeni po pas, + Brodzą w nocy czerwcowej jak w wodzie. + Zatrzaśnięte na krzyż okiennice, + Nieskoszony jescze zapach łąk + I już płoną pozrywane księżyce + W białych lampach zamkniętych rąk. - A z miłością się nie jest, czy jest, - Powiedz pierwszy, z kochania słyniesz. - Jeśli nie ma, to i tak szkoda łez, - Jeśli jest, to i tak kiedyś minie. - Wędrowali tak pewnego dnia, - Wędrowali tak w głębokie sny. - Pierwszym bratem chyba byłem ja, - Drugim bratem pewnie byłeś ty. + A z miłością się nie jest, czy jest, + Powiedz pierwszy, z kochania słyniesz. + Jeśli nie ma, to i tak szkoda łez, + Jeśli jest, to i tak kiedyś minie. + Wędrowali tak pewnego dnia, + Wędrowali tak w głębokie sny. + Pierwszym bratem chyba byłem ja, + Drugim bratem pewnie byłeś ty. - Czy to życie jest, czy tylko sen, - Pomyśl pierwszy, potem ja pomyślę. - I dziwili się to tamten, to ten, - Las się chwieje, jakby stał na Wiśle. - Mamy umrzeć, czy żyć dalej, może wiesz, - Rozważ pierwszy, potem ja rozważę, - A już spadał powoli jak zmierzch - Odgłos dzwonów bijących na twarze. + Czy to życie jest, czy tylko sen, + Pomyśl pierwszy, potem ja pomyślę. + I dziwili się to tamten, to ten, + Las się chwieje, jakby stał na Wiśle. + Mamy umrzeć, czy żyć dalej, może wiesz, + Rozważ pierwszy, potem ja rozważę, + A już spadał powoli jak zmierzch + Odgłos dzwonów bijących na twarze. - A z miłością się nie jest, czy jest, - Powiedz pierwszy, z kochania słyniesz. - Jeśli nie ma, to i tak szkoda łez, - Jeśli jest, to i tak kiedyś minie. + A z miłością się nie jest, czy jest, + Powiedz pierwszy, z kochania słyniesz. + Jeśli nie ma, to i tak szkoda łez, + Jeśli jest, to i tak kiedyś minie. - Wędrowali tak pewnego dnia, - Wędrowali tak w głębokie sny. - Pierwszym bratem chyba byłem ja, - Drugim bratem pewnie byłeś ty. + Wędrowali tak pewnego dnia, + Wędrowali tak w głębokie sny. + Pierwszym bratem chyba byłem ja, + Drugim bratem pewnie byłeś ty. diff --git a/songs/odpowiedz_na_ankiete_twoj_system_wartosci.xml b/songs/odpowiedz_na_ankiete_twoj_system_wartosci.xml index 1b691834..abb01035 100644 --- a/songs/odpowiedz_na_ankiete_twoj_system_wartosci.xml +++ b/songs/odpowiedz_na_ankiete_twoj_system_wartosci.xml @@ -9,52 +9,52 @@ - Polityka mi wisi - Dorodnym kalafiorem. - Błogosławieni cisi - I ci, co pyszczą w porę. - Historia mnie nie bierze, - Literatura nudzi. - Ja tam dziś w nic nie wierzę, - A już na bank - nie w ludzi. - Nawet drzewa twardnieją, by przyć, - Co tu mówić o ludziach, frajerzy! + Polityka mi wisi + Dorodnym kalafiorem. + Błogosławieni cisi + I ci, co pyszczą w porę. + Historia mnie nie bierze, + Literatura nudzi. + Ja tam dziś w nic nie wierzę, + A już na bank - nie w ludzi. + Nawet drzewa twardnieją, by przyć, + Co tu mówić o ludziach, frajerzy! - A jak się urządzili - Ci z władz i z opozycji? - Ten bił, a tego bili -- - Obydwaj dziś w policji. - Więc żaden mnie nie skusi - Na byle ćmoje-boje. - ogosławieni głusi - I ci, co słyszą swoje. - Nawet drzewa, by przeżyć, korzenie - Zapuszczają głęboko pod ziemię. + A jak się urządzili + Ci z władz i z opozycji? + Ten bił, a tego bili -- + Obydwaj dziś w policji. + Więc żaden mnie nie skusi + Na byle ćmoje-boje. + ogosławieni głusi + I ci, co słyszą swoje. + Nawet drzewa, by przeżyć, korzenie + Zapuszczają głęboko pod ziemię. - Katabas kirchę wznosi - Nie dla nas, a dla Pana. - Więc jakby sam się prosił - By z glana kapelana. - Mnie tego nikt nie wrzepi, - Ja chcę mieć święty spokój. - ogosławieni ślepi - I ci, co widzą w mroku. - Nawet drzewa rosną w ciemnościach, - W dupie mają -- na czyich kościach. + Katabas kirchę wznosi + Nie dla nas, a dla Pana. + Więc jakby sam się prosił + By z glana kapelana. + Mnie tego nikt nie wrzepi, + Ja chcę mieć święty spokój. + ogosławieni ślepi + I ci, co widzą w mroku. + Nawet drzewa rosną w ciemnościach, + W dupie mają -- na czyich kościach. - Mnie nie rajcuje kasa, - Kwatera czy gablota. - Jak trafię skórę -- klasa -- - Pieroga wyłomotam. - Wykaże test, żem HIVnik, - To w żyłę -- i odjadę. - ogosławieni sztywni - I ci, co żyją z czadem. - Nawet drzewa próchnieją przedwcześnie, - A przecież istnieją bezgrzesznie. + Mnie nie rajcuje kasa, + Kwatera czy gablota. + Jak trafię skórę -- klasa -- + Pieroga wyłomotam. + Wykaże test, żem HIVnik, + To w żyłę -- i odjadę. + ogosławieni sztywni + I ci, co żyją z czadem. + Nawet drzewa próchnieją przedwcześnie, + A przecież istnieją bezgrzesznie. diff --git a/songs/okrok.xml b/songs/okrok.xml index 80273d8e..b72c26b9 100644 --- a/songs/okrok.xml +++ b/songs/okrok.xml @@ -9,40 +9,40 @@ - O krok od źródła konają z pragnienia. - O krok od piekła szaleją z rozkoszy. - Trzeźwieją z marzeń o krok od spełnienia. - O krok od celu własny cień ich płoszy. + O krok od źródła konają z pragnienia. + O krok od piekła szaleją z rozkoszy. + Trzeźwieją z marzeń o krok od spełnienia. + O krok od celu własny cień ich płoszy. - Krok od triumfu opuszczają głowy. - Podnoszą głowy o krok od wyroku. - O krok od łaski tracą dar wymowy. - Krok od przepaści przyspieszają kroku. + Krok od triumfu opuszczają głowy. + Podnoszą głowy o krok od wyroku. + O krok od łaski tracą dar wymowy. + Krok od przepaści przyspieszają kroku. - O krok od zemsty nagle wielcy duchem. - O krok od drogi błądzą w próżnych sporach. - O krok od czynu wolą frazy kruche. - O krok od jutra przeżywają wczoraj. + O krok od zemsty nagle wielcy duchem. + O krok od drogi błądzą w próżnych sporach. + O krok od czynu wolą frazy kruche. + O krok od jutra przeżywają wczoraj. - O krok od zgody pusta złość ich bierze. - O krok od wiedzy wdychają zabobon. - O krok od Boga zaprzeczają wierze. - O krok od siebie nie chcą stać się sobą. + O krok od zgody pusta złość ich bierze. + O krok od wiedzy wdychają zabobon. + O krok od Boga zaprzeczają wierze. + O krok od siebie nie chcą stać się sobą. - O krok od śmierci żywot im niedrogi. - O krok od życia śnią minione kaźnie. - Gromadzą księgi o krok od pożogi. - O krok od klęski czują się najraźniej. + O krok od śmierci żywot im niedrogi. + O krok od życia śnią minione kaźnie. + Gromadzą księgi o krok od pożogi. + O krok od klęski czują się najraźniej. - Tak przez godzinę, dzień, miesiąc, rok, - Aż zrobią ten jeden nieuchronny krok... - Tak przez godzinę, dzień, miesiąc, rok - Aż zrobią ten jeden nieuchronny krok. + Tak przez godzinę, dzień, miesiąc, rok, + Aż zrobią ten jeden nieuchronny krok... + Tak przez godzinę, dzień, miesiąc, rok + Aż zrobią ten jeden nieuchronny krok. diff --git a/songs/osada.xml b/songs/osada.xml index f2d3f288..c234e1d1 100644 --- a/songs/osada.xml +++ b/songs/osada.xml @@ -20,11 +20,11 @@ - Nad jeziorem las otwiera wrota swe, + Nad jeziorem las otwiera wrota swe, Więc rozbij namiot i nie przejmuj się. - Wokół ciebie bratnie serca są, + Wokół ciebie bratnie serca są, One pomogą zabić w tobie zło. @@ -32,27 +32,27 @@ - Nie zapomnisz nigdy j + Nie zapomnisz nigdy j - Tych lasów zielonych, + Tych lasów zielonych, - Tej osady pośród wzgórz, + Tej osady pośród wzgórz, - Co tętni tak jak krew. + Co tętni tak jak krew. - Niech poniesie gromki śpiew + Niech poniesie gromki śpiew - Nasz hymn ocalonych, + Nasz hymn ocalonych, - W tej osadzie pośród wzgórz, + W tej osadzie pośród wzgórz, - Gdzie czas nie liczy się już. + Gdzie czas nie liczy się już. - Wciąż na nowo swój odkrywasz świat, + Wciąż na nowo swój odkrywasz świat, Las dla ciebie zawsze jest jak brat, @@ -68,7 +68,7 @@ - Gdy wyjechać masz już stąd to nie smuć się, + Gdy wyjechać masz już stąd to nie smuć się, Bo na pewno znów spotkamy się diff --git a/songs/ostatniamruczankaalbospleenkubusiapuchatka.xml b/songs/ostatniamruczankaalbospleenkubusiapuchatka.xml index 666fec01..e1905725 100644 --- a/songs/ostatniamruczankaalbospleenkubusiapuchatka.xml +++ b/songs/ostatniamruczankaalbospleenkubusiapuchatka.xml @@ -9,55 +9,55 @@ - uchaj, Maleństwo, słuchaj dziecię, - Jak Mama Kangurzyca płacze... - Hohonie włóczą się po lesie, - Na próżno szuka cię Prosiaczek. - W gęstwinie jego hart nic niewart, - Gdy Krzyś się nudzi... bo - dojrzewa. + uchaj, Maleństwo, słuchaj dziecię, + Jak Mama Kangurzyca płacze... + Hohonie włóczą się po lesie, + Na próżno szuka cię Prosiaczek. + W gęstwinie jego hart nic niewart, + Gdy Krzyś się nudzi... bo - dojrzewa. - Wielkie przekleństwo dorosłości + Wielkie przekleństwo dorosłości Określa marny los zwierzątek: - Królik Puchatka nie ugości, + Królik Puchatka nie ugości, A Kłapouchy straci wątek - - Nie będzie więcej filozofem, - Gdy Krzyś okaże się Krzysztofem. + Nie będzie więcej filozofem, + Gdy Krzyś okaże się Krzysztofem. - Zabawa się wypełni trwogą; - Krzysztof z Weltschmerzem się boryka - - apouchemu urwie ogon, - Z wściekłością prztyknie w nos Królika, + Zabawa się wypełni trwogą; + Krzysztof z Weltschmerzem się boryka - + apouchemu urwie ogon, + Z wściekłością prztyknie w nos Królika, A co najgorsze w tym przekleństwie -- - Całkiem zapomni o Maleństwie. + Całkiem zapomni o Maleństwie. - Tygrysek tranu nie dostanie, - (Namiętność całkiem nałogowa) - Z pomocą nie pospieszy ani - Z pigułką - Przemądrzała Sowa, - Kto zresztą wie, co stara bredzi, - Gdy nikt jej nigdy nie odwiedzi? + Tygrysek tranu nie dostanie, + (Namiętność całkiem nałogowa) + Z pomocą nie pospieszy ani + Z pigułką - Przemądrzała Sowa, + Kto zresztą wie, co stara bredzi, + Gdy nikt jej nigdy nie odwiedzi? - Kubuś Puchatek, jak do trunku - Nad dzbankiem miodu łepek skłania. - Dla znacznie większych to rozumków - Sprawy są nie do rozwikłania. - Małe co nieco nie wyjaśni - Jakże tu żyć po śmierci... baśni. + Kubuś Puchatek, jak do trunku + Nad dzbankiem miodu łepek skłania. + Dla znacznie większych to rozumków + Sprawy są nie do rozwikłania. + Małe co nieco nie wyjaśni + Jakże tu żyć po śmierci... baśni. - Kiedyś drewnianym pudłem duszy - Potrząśnie Krzysztof, jak skrzypcami. - Może się nawet trochę wzruszy, - Lecz raczej wzruszy ramionami. - Bo, chociaż baśń ożywią smyczki, - To tylko raz się gra w patyczki. + Kiedyś drewnianym pudłem duszy + Potrząśnie Krzysztof, jak skrzypcami. + Może się nawet trochę wzruszy, + Lecz raczej wzruszy ramionami. + Bo, chociaż baśń ożywią smyczki, + To tylko raz się gra w patyczki. diff --git a/songs/pierscienie.xml b/songs/pierscienie.xml index 0f0a76bd..46773bfb 100644 --- a/songs/pierscienie.xml +++ b/songs/pierscienie.xml @@ -9,14 +9,14 @@ - Trzy Pierścienie dla królów elfów pod otwartym niebem, - Siedem dla władców krasnali w ich kamiennych pałacach, - Dziewięć dla śmiertelników, ludzi śmiedci podległych, - Jeden dla Wladcy Ciemności na czarnym tronie - W krainie Mordor, gdzie zaległy cienie, - Jeden, by wszystkimi rządzić, Jeden, by wszystkie odnaleźć, - Jeden, by wszystkie zgromadzić i w ciemności związać - W krainie Mordor, gdzie zaległy cienie. + Trzy Pierścienie dla królów elfów pod otwartym niebem, + Siedem dla władców krasnali w ich kamiennych pałacach, + Dziewięć dla śmiertelników, ludzi śmiedci podległych, + Jeden dla Wladcy Ciemności na czarnym tronie + W krainie Mordor, gdzie zaległy cienie, + Jeden, by wszystkimi rządzić, Jeden, by wszystkie odnaleźć, + Jeden, by wszystkie zgromadzić i w ciemności związać + W krainie Mordor, gdzie zaległy cienie. @@ -37,4 +37,4 @@ - \ No newline at end of file + diff --git a/songs/piesnxxix.xml b/songs/piesnxxix.xml index 4f64d3d4..e12746a7 100644 --- a/songs/piesnxxix.xml +++ b/songs/piesnxxix.xml @@ -30,21 +30,21 @@ - Całe życie w niebo idzie + Całe życie w niebo idzie - Mój połoniński pochód + Mój połoniński pochód - I buki srebrni jeźdźcy + I buki srebrni jeźdźcy - Nad nimi wiosny sokół + Nad nimi wiosny sokół - I nadal tamtej połoniny wiatr + I nadal tamtej połoniny wiatr - I chmur wiosennych grzywy + I chmur wiosennych grzywy - I na chorągwi wspomnień twarz + I na chorągwi wspomnień twarz - Z włosami wiejącymi + Z włosami wiejącymi @@ -52,13 +52,13 @@ - Jak ciała nasze w mrocznym rytmie + Jak ciała nasze w mrocznym rytmie - Wznosiły się góry opadały + Wznosiły się góry opadały - Tak dzieje się gdy wiosna przyjdzie + Tak dzieje się gdy wiosna przyjdzie - Wypala miłość stare trawy + Wypala miłość stare trawy @@ -68,21 +68,21 @@ - Całe życie w niebo idzie + Całe życie w niebo idzie - Mój połoniński pochód + Mój połoniński pochód - I buki srebrni jeźdźcy + I buki srebrni jeźdźcy - Nad nimi wiosny sokół + Nad nimi wiosny sokół - Jak popiół rozwiały się grzechy + Jak popiół rozwiały się grzechy - W ciszy ktoś zawilce zasiał + W ciszy ktoś zawilce zasiał - I tylko grzmią włosy przestrzeni + I tylko grzmią włosy przestrzeni - W wielkich oknach mego świata + W wielkich oknach mego świata diff --git a/songs/piosenka_o_arbacie.xml b/songs/piosenka_o_arbacie.xml index e26090ca..61b870d9 100644 --- a/songs/piosenka_o_arbacie.xml +++ b/songs/piosenka_o_arbacie.xml @@ -9,28 +9,28 @@ - Rzeczny wir, rwący prąd, obca nazwa, łatwy rytm, - Lecz przejrzysty Twój nurt, jak kryniczny zdrój! - Ach, Arbacie, toś Ty, wiecznym przeznaczeniem mym! - W Tobie radość i gniew, w Tobie śmiech i ból. - Ach, Arbacie, toś Ty, wiecznym przeznaczeniem mym! - W Tobie radość i gniew, w Tobie śmiech i ból. + Rzeczny wir, rwący prąd, obca nazwa, łatwy rytm, + Lecz przejrzysty Twój nurt, jak kryniczny zdrój! + Ach, Arbacie, toś Ty, wiecznym przeznaczeniem mym! + W Tobie radość i gniew, w Tobie śmiech i ból. + Ach, Arbacie, toś Ty, wiecznym przeznaczeniem mym! + W Tobie radość i gniew, w Tobie śmiech i ból. - Gdy przechodniów Twych tłum sunie obok rojem pstrym, - Tak pospieszny ich krok, tak powszedni ślad. - Ach, Arbacie, toś Ty, wiarą i zbawieniem mym! - Wyślizgany Twój bruk to mój cały świat. - Ach, Arbacie, toś Ty, wiarą i zbawieniem mym! - Wyślizgany Twój bruk to mój cały świat. + Gdy przechodniów Twych tłum sunie obok rojem pstrym, + Tak pospieszny ich krok, tak powszedni ślad. + Ach, Arbacie, toś Ty, wiarą i zbawieniem mym! + Wyślizgany Twój bruk to mój cały świat. + Ach, Arbacie, toś Ty, wiarą i zbawieniem mym! + Wyślizgany Twój bruk to mój cały świat. - Czarów nie da się zdjąć mocą dobrą, ani złą, - Choćbym tysiąc śnił miast, nie zamieszkam w nich! - Ach, Arbacie, toś Ty, ziemią obiecaną mą! - Niezbadanych Twych dróg nie przemierzy nikt. - Ach, Arbacie, toś Ty, ziemią obiecaną mą! - Niezbadanych Twych dróg nie przemierzy nikt. + Czarów nie da się zdjąć mocą dobrą, ani złą, + Choćbym tysiąc śnił miast, nie zamieszkam w nich! + Ach, Arbacie, toś Ty, ziemią obiecaną mą! + Niezbadanych Twych dróg nie przemierzy nikt. + Ach, Arbacie, toś Ty, ziemią obiecaną mą! + Niezbadanych Twych dróg nie przemierzy nikt. diff --git a/songs/piosenka_o_krolu_i_zolnierzach.xml b/songs/piosenka_o_krolu_i_zolnierzach.xml index 167f04c3..a64c090f 100644 --- a/songs/piosenka_o_krolu_i_zolnierzach.xml +++ b/songs/piosenka_o_krolu_i_zolnierzach.xml @@ -9,40 +9,40 @@ Piesienka o korole i sołdatach - A kiedy na państwo ościenne wyruszał nasz król, - Królowa na drogę sucharów mu wór nasuszyła - I dziury na szatach mężowskich starannie zaszyła, - I w dwóch zawiniątkach mu dała machorkę i sól. + A kiedy na państwo ościenne wyruszał nasz król, + Królowa na drogę sucharów mu wór nasuszyła + I dziury na szatach mężowskich starannie zaszyła, + I w dwóch zawiniątkach mu dała machorkę i sól. - A kiedy się żegnał i zamku przekroczyć miał próg, - Objęła go czule i łzę uroniła rzęsistą: - -- A dajże im w kość, bo okrzyczy cię lud pacyfistą - I zabierz im słodkie pierniczki, bo przecież to wróg. + A kiedy się żegnał i zamku przekroczyć miał próg, + Objęła go czule i łzę uroniła rzęsistą: + -- A dajże im w kość, bo okrzyczy cię lud pacyfistą + I zabierz im słodkie pierniczki, bo przecież to wróg. - Pod wodzą kaprala oddziały czekają już dwa: - Trzech smutnych żołnierzy i tyluż żołnierzy wesołych. - Rzekł król: -- Furda prasa i radio, i cztery żywioły! - Victoria nas czeka i w ogóle, chłopcy, hurra! + Pod wodzą kaprala oddziały czekają już dwa: + Trzech smutnych żołnierzy i tyluż żołnierzy wesołych. + Rzekł król: -- Furda prasa i radio, i cztery żywioły! + Victoria nas czeka i w ogóle, chłopcy, hurra! - Nim zmilkły oklaski, marszowa rozległa się pieśń, - Po drodze do armii król rozkaz skierował odgórny: - Wesołych żołnierzy dać kazał do intendentury, - A smutnych żołnierzy zostawił w piechocie i cześć! + Nim zmilkły oklaski, marszowa rozległa się pieśń, + Po drodze do armii król rozkaz skierował odgórny: + Wesołych żołnierzy dać kazał do intendentury, + A smutnych żołnierzy zostawił w piechocie i cześć! - I oto jutrzenka zwycięstwa już błyska zza chmur, - Trzech smutnych żołnierzy spisano co prawda na manko, - A kapral moralny pion tracąc ożenił się z branką, - Lecz łupem zwycięzców ogromny pierniczków padł wór! + I oto jutrzenka zwycięstwa już błyska zza chmur, + Trzech smutnych żołnierzy spisano co prawda na manko, + A kapral moralny pion tracąc ożenił się z branką, + Lecz łupem zwycięzców ogromny pierniczków padł wór! - Więc grzmijcie orkiestry! Niech serca uderzą nam w takt! - Niech smutek przelotny nam piersi radosnej nie gniecie! - Cóż smutnym żołnierzom po życiu na wesołym świecie? - A słodkich pierniczków dla wszystkich nie starczy i tak! + Więc grzmijcie orkiestry! Niech serca uderzą nam w takt! + Niech smutek przelotny nam piersi radosnej nie gniecie! + Cóż smutnym żołnierzom po życiu na wesołym świecie? + A słodkich pierniczków dla wszystkich nie starczy i tak! diff --git a/songs/piosenkadlaprzyjaciela.xml b/songs/piosenkadlaprzyjaciela.xml index df7dc4c7..21c6822f 100644 --- a/songs/piosenkadlaprzyjaciela.xml +++ b/songs/piosenkadlaprzyjaciela.xml @@ -9,46 +9,46 @@ - Przeczekamy jeszcze jedną zimę, - Żeby znów móc się spotkać, + Przeczekamy jeszcze jedną zimę, + Żeby znów móc się spotkać, j Przyjacielu, - Opowiedzieć co dobrego, - I zapomnieć o złych chwilach, + Opowiedzieć co dobrego, + I zapomnieć o złych chwilach, j Przyjacielu, - A gdy wiosną wyschną drogi, - Dogonimy tych co przeszli obok. + A gdy wiosną wyschną drogi, + Dogonimy tych co przeszli obok. - Przeczekamy ciszę między nami, - Płoche słowa i rozmowy nieskończone, - Chleba nigdy nam nie zbrakło, - Popatrz znowu kwitnie jabłoń, - Przyjacielu gwiazda spadła. + Przeczekamy ciszę między nami, + Płoche słowa i rozmowy nieskończone, + Chleba nigdy nam nie zbrakło, + Popatrz znowu kwitnie jabłoń, + Przyjacielu gwiazda spadła. - Przeczekamy jeszcze jedno lato, - Wciąż nie wierząc że na karku mamy jesień, + Przeczekamy jeszcze jedno lato, + Wciąż nie wierząc że na karku mamy jesień, j Przyjacielu, - A dziewczynom co odeszły, - Odeślemy listy z deszczu, + A dziewczynom co odeszły, + Odeślemy listy z deszczu, j Przyjacielu, - Żeby życia zbyt nie trudzić, - To epilog dopiszemy garścią złudzeń. + Żeby życia zbyt nie trudzić, + To epilog dopiszemy garścią złudzeń. diff --git a/songs/piosenkanapisanamimochodem.xml b/songs/piosenkanapisanamimochodem.xml index 42349374..c1b4b110 100644 --- a/songs/piosenkanapisanamimochodem.xml +++ b/songs/piosenkanapisanamimochodem.xml @@ -9,56 +9,56 @@ - Słońce błyśnie między wschodem a zachodem, - Mimochodem obrysuje miasto chmur. - Jednych dziegciem dzień nakarmi, innych miodem, - Temu głowę wzniesie, temu napnie sznur. - Trochę starsze znów się stanie to, co młode, - Jakby strzepnął ptak kolejną kroplę z piór -- - Mimochodem, mimochodem, - Jakby strzepnął kroplę z piór. + Słońce błyśnie między wschodem a zachodem, + Mimochodem obrysuje miasto chmur. + Jednych dziegciem dzień nakarmi, innych miodem, + Temu głowę wzniesie, temu napnie sznur. + Trochę starsze znów się stanie to, co młode, + Jakby strzepnął ptak kolejną kroplę z piór -- + Mimochodem, mimochodem, + Jakby strzepnął kroplę z piór. - Tym pod nogi róż kobierzec, tamtym - kłodę, - Pozostałym, mimochodem -- byle co. - Frustrat skargę śle, laureat pisze odę, - Raz się dobro jawi złem, raz -- dobrem zło. - Słowo wpada w morze słów, jak kamień w wodę, - Krążek myśli pozostawi, brnąc na dno -- - Mimochodem, mimochodem, - Krążek myśli, brnąc na dno. + Tym pod nogi róż kobierzec, tamtym - kłodę, + Pozostałym, mimochodem -- byle co. + Frustrat skargę śle, laureat pisze odę, + Raz się dobro jawi złem, raz -- dobrem zło. + Słowo wpada w morze słów, jak kamień w wodę, + Krążek myśli pozostawi, brnąc na dno -- + Mimochodem, mimochodem, + Krążek myśli, brnąc na dno. - Cierpi syty, niepojętym zdjęty głodem, - Zgłodniałego -- mimochodem syci złość. - Temu -- mostu przęsło, temu - dom z ogrodem, - Komuś o coś chodzi, za kimś -- chodzi coś: - Na stracenie, na pożytek i na szkodę, - Jak złośliwie między psy rzucona kość -- - Mimochodem, mimochodem, - Między psy rzucona kość. + Cierpi syty, niepojętym zdjęty głodem, + Zgłodniałego -- mimochodem syci złość. + Temu -- mostu przęsło, temu - dom z ogrodem, + Komuś o coś chodzi, za kimś -- chodzi coś: + Na stracenie, na pożytek i na szkodę, + Jak złośliwie między psy rzucona kość -- + Mimochodem, mimochodem, + Między psy rzucona kość. - Tańczą, walczą, zieją żarem, zioną chłodem, - Mimochodem spalą w pył, zetną w lód. - Swego Boga za słomianą szarpią brodę, - By im dał nadziei źdźbło, ładu łut. - Sen -- za jawę biorą, karę -- za nagrodę, - Odtwarzając krótkie scherzo swe - bez nut, - Mimochodem, mimochodem, - Krótkie scherzo swe -- bez nut. + Tańczą, walczą, zieją żarem, zioną chłodem, + Mimochodem spalą w pył, zetną w lód. + Swego Boga za słomianą szarpią brodę, + By im dał nadziei źdźbło, ładu łut. + Sen -- za jawę biorą, karę -- za nagrodę, + Odtwarzając krótkie scherzo swe - bez nut, + Mimochodem, mimochodem, + Krótkie scherzo swe -- bez nut. - Nic już więcej z tego rymu nie wywiodę, - Mimochodem układając cierpką pieśń. - Pocieszenie tylko dodam na osłodę, - Że w niej drzemie mimochodem ważka treść: - Chwila światła między wschodem a zachodem, - Wobec której trudno tak po prostu przejść - Mimochodem, mimochodem, - Trudno tak po prostu przejść. - Mimochodem... Mimochodem -- - Miasto chmur, chwile szczęść. + Nic już więcej z tego rymu nie wywiodę, + Mimochodem układając cierpką pieśń. + Pocieszenie tylko dodam na osłodę, + Że w niej drzemie mimochodem ważka treść: + Chwila światła między wschodem a zachodem, + Wobec której trudno tak po prostu przejść + Mimochodem, mimochodem, + Trudno tak po prostu przejść. + Mimochodem... Mimochodem -- + Miasto chmur, chwile szczęść. diff --git a/songs/plastelina.xml b/songs/plastelina.xml index 1972fa5a..4192837f 100644 --- a/songs/plastelina.xml +++ b/songs/plastelina.xml @@ -9,24 +9,24 @@ - Ulepiłem sobie domek z niewidzialnej plasteliny, - Dwa okienka, dwa kominy z niewidzialnej plasteliny, - A w okienku kwiatki bratki z niewidzialnej plasteliny, - A dla taty krawat w kratkę z niewidzialnej plasteliny. + Ulepiłem sobie domek z niewidzialnej plasteliny, + Dwa okienka, dwa kominy z niewidzialnej plasteliny, + A w okienku kwiatki bratki z niewidzialnej plasteliny, + A dla taty krawat w kratkę z niewidzialnej plasteliny. - La, ... + La, ... - Ulepiłem sobie pieska mięciutkiego z czarnym pyszczkiem , - Lalę Kasie i Tereskę, i pistolet, i siostrzyczkę, - Namęczyłem się ogromnie stłukłem łokieć, zbiłem szklanke, - Mamo, tato chodźcie do mnie mam tu dla was niespodziankę. + Ulepiłem sobie pieska mięciutkiego z czarnym pyszczkiem , + Lalę Kasie i Tereskę, i pistolet, i siostrzyczkę, + Namęczyłem się ogromnie stłukłem łokieć, zbiłem szklanke, + Mamo, tato chodźcie do mnie mam tu dla was niespodziankę. - Czemu na mnie tak patrzycie i zdziwione macie miny, - Czyście nigdy nie widzieli, niewidzialnej plasteliny. + Czemu na mnie tak patrzycie i zdziwione macie miny, + Czyście nigdy nie widzieli, niewidzialnej plasteliny. diff --git a/songs/pociag.xml b/songs/pociag.xml index 087e71a9..339787bb 100644 --- a/songs/pociag.xml +++ b/songs/pociag.xml @@ -9,52 +9,52 @@ - Opadły mgły i pociąg ze snu się budzi, - Górą snuje się dym, - Przy ruszaniu szybkim się ktoś wywrócił, - Ktoś tam śpi na koledze swym. - Pies się włóczy po pod kołami bez głowy, - Trzeba zmienić jazdy kierunek, - otek niesie młotkowy. + Opadły mgły i pociąg ze snu się budzi, + Górą snuje się dym, + Przy ruszaniu szybkim się ktoś wywrócił, + Ktoś tam śpi na koledze swym. + Pies się włóczy po pod kołami bez głowy, + Trzeba zmienić jazdy kierunek, + otek niesie młotkowy. - A ciuchcia toczy, toczy swój skład uroczy, - Toczy, toczy się skład. + A ciuchcia toczy, toczy swój skład uroczy, + Toczy, toczy się skład. - Ty, co wisisz na lampie, by stać mógł ktoś, - Już dość, już dość, już dość! - Nie ma tu tuneli drutów z prądem brak, - A więc wdrapuj się szybko na dach. + Ty, co wisisz na lampie, by stać mógł ktoś, + Już dość, już dość, już dość! + Nie ma tu tuneli drutów z prądem brak, + A więc wdrapuj się szybko na dach. - Bo nowy dzień wstaje, bo nowy dzień wstaje, - Nowy dzień, + Bo nowy dzień wstaje, bo nowy dzień wstaje, + Nowy dzień, - Wstaje nowy dzień. + Wstaje nowy dzień. - Z czarnego snu już miasto się wynurza, - ońce rozpędza mrok. - Na koleje polskie się ktoś oburza, - Bo coraz większy jest tlok. - Śpi na półce nad nami osób pięć pospołu, - Ale półka urwać się nie może, - Trzymamy ją od dołu. + Z czarnego snu już miasto się wynurza, + ońce rozpędza mrok. + Na koleje polskie się ktoś oburza, + Bo coraz większy jest tlok. + Śpi na półce nad nami osób pięć pospołu, + Ale półka urwać się nie może, + Trzymamy ją od dołu. - A ciuchcia toczy, toczy swój skład uroczy, - Toczy, toczy się skład. + A ciuchcia toczy, toczy swój skład uroczy, + Toczy, toczy się skład. - Ty, co leżysz na dachu, by stać mógł ktoś, - Już dość, już dość, już dość! - Usiądź sobie z brzegu i zrób miejsce nam, - Bo my zaraz wdrapiemy się tam. + Ty, co leżysz na dachu, by stać mógł ktoś, + Już dość, już dość, już dość! + Usiądź sobie z brzegu i zrób miejsce nam, + Bo my zaraz wdrapiemy się tam. - Bo nowy dzień wstaje, bo nowy dzień wstaje, - Nowy dzień. + Bo nowy dzień wstaje, bo nowy dzień wstaje, + Nowy dzień. - Wstaje nowy dzień. + Wstaje nowy dzień. diff --git a/songs/pozegnanieO.xml b/songs/pozegnanieO.xml index f2a065e3..7e7a675e 100644 --- a/songs/pozegnanieO.xml +++ b/songs/pozegnanieO.xml @@ -9,67 +9,67 @@ - Na ile wiary brak gorącej, - Że jest na niebie jakiś bóg, - Na tyle wiąże koniec z końcem - Łańcucha katorżnika nóg. - Na ile wciąż nadzieja szarpie, - Że coś się dla nas w mrokach tli, + Na ile wiary brak gorącej, + Że jest na niebie jakiś bóg, + Na tyle wiąże koniec z końcem + Łańcucha katorżnika nóg. + Na ile wciąż nadzieja szarpie, + Że coś się dla nas w mrokach tli, - Na tyle wigilijne karpie - Śnią smacznie swe beztroskie sny. + Na tyle wigilijne karpie + Śnią smacznie swe beztroskie sny. - Piosenka pożegnania -- - Piosenką jest utraty, - Żegnałem ludzi i zdania -- - Traciłem całe światy. - I nic nie pozostało - Prócz tego, co nucicie! + Piosenka pożegnania -- + Piosenką jest utraty, + Żegnałem ludzi i zdania -- + Traciłem całe światy. + I nic nie pozostało + Prócz tego, co nucicie! - To wcale nie jest mało - Tak żegnać całe życie. + To wcale nie jest mało + Tak żegnać całe życie. - Na ile trwa, co odchodzi, - Nabite na Historii hak, - Na tyle zauważą młodzi, - Że jednak czegoś jest im brak. - Na ile ufa młody dureń - W niewyczerpany zapas lat, + Na ile trwa, co odchodzi, + Nabite na Historii hak, + Na tyle zauważą młodzi, + Że jednak czegoś jest im brak. + Na ile ufa młody dureń + W niewyczerpany zapas lat, - Na tyle mu bezbronną skórę - Tnie raz po raz bezwzględny bat. + Na tyle mu bezbronną skórę + Tnie raz po raz bezwzględny bat. - Na ile zdolny jest do krzyku - W obronie innych każdy z nas, - Na tyle trwa ten kraj pomników, - Strumieniem podmywany głaz. - Na ile skory do ofiary - Jest ten, co bluźnił, łgał i kradł, + Na ile zdolny jest do krzyku + W obronie innych każdy z nas, + Na tyle trwa ten kraj pomników, + Strumieniem podmywany głaz. + Na ile skory do ofiary + Jest ten, co bluźnił, łgał i kradł, - Na tyle wierzy człowiek stary - W to, że ocali własny świat. + Na tyle wierzy człowiek stary + W to, że ocali własny świat. - Ach, świat przebrzmiałych dźwięków - Jakąż melodię wiódł! - Już jej nie wskrzesisz ręką, - Już nie ma tamtych nut... + Ach, świat przebrzmiałych dźwięków + Jakąż melodię wiódł! + Już jej nie wskrzesisz ręką, + Już nie ma tamtych nut... - Ach, z tego, czego już nie ma - Jakiż by mógł być świat! + Ach, z tego, czego już nie ma + Jakiż by mógł być świat! Ale to inny temat -- - Nam już nie starczy lat... + Nam już nie starczy lat... @@ -92,4 +92,4 @@ - \ No newline at end of file + diff --git a/songs/prawodzungli.xml b/songs/prawodzungli.xml index 09863165..bfb3fd97 100644 --- a/songs/prawodzungli.xml +++ b/songs/prawodzungli.xml @@ -11,58 +11,58 @@ Oto jest zbiór praw dżungli -- jak niebo wieczysty, niemylny, - Ginie wilk, co je łamie; wilk, co ich słucha jest szczęśliwy i silny. - Jak pnącza, co pień opasują, tak Prawo wkoło nas się winie, + Ginie wilk, co je łamie; wilk, co ich słucha jest szczęśliwy i silny. + Jak pnącza, co pień opasują, tak Prawo wkoło nas się winie, - Bo wilk jest siłą drużyny, a siła wilka w drużynie. + Bo wilk jest siłą drużyny, a siła wilka w drużynie. - Pij do syta, lecz w miarę. Kąp się codziennie od kity do głowy, - A pomnij, że dzień jest od spania, a noc przeznaczona na łowy. - Niechaj się szakal łasi tygrysom! Lecz ty, gdy wyrośniesz, o, szczenię, + Pij do syta, lecz w miarę. Kąp się codziennie od kity do głowy, + A pomnij, że dzień jest od spania, a noc przeznaczona na łowy. + Niechaj się szakal łasi tygrysom! Lecz ty, gdy wyrośniesz, o, szczenię, - Pamiętaj, że wilk jest łowcą -- i sam ma zdobywać jedzenie. + Pamiętaj, że wilk jest łowcą -- i sam ma zdobywać jedzenie. - Gdy spotkają się dwa stada i nie chcą sobie ustąpić uprzejmie, - Leż spokojnie, bo może starszyzna bezkrwawo spór ten rozejmie. - Nora jest wilka schronieniem, lecz gdy wykopał ją nazbyt widocznie, + Gdy spotkają się dwa stada i nie chcą sobie ustąpić uprzejmie, + Leż spokojnie, bo może starszyzna bezkrwawo spór ten rozejmie. + Nora jest wilka schronieniem, lecz gdy wykopał ją nazbyt widocznie, - Rada mu prześle przestrogę, ażeby się przeniósł niezwłocznie. + Rada mu prześle przestrogę, ażeby się przeniósł niezwłocznie. - Gdyś zaczął łów przed północą, milcz -- nie budź lasu szczekaniem, - Bo spłoszysz nam wszelką zwierzynę i my bez łupu zostaniem. - Poluj dla siebie, dla szczeniąt, dla druhów. Krew taka nie brudzi! + Gdyś zaczął łów przed północą, milcz -- nie budź lasu szczekaniem, + Bo spłoszysz nam wszelką zwierzynę i my bez łupu zostaniem. + Poluj dla siebie, dla szczeniąt, dla druhów. Krew taka nie brudzi! - Lecz bez potrzeby nie poluj! Po siedmiokroć wara polować na ludzi! + Lecz bez potrzeby nie poluj! Po siedmiokroć wara polować na ludzi! - Gdy porwiesz zdobycz słabszemu, nie pożeraj wszystkiego w próżności. - Nędzarz jest w Prawa opiece, zostaw mu choć skórę i kości! - Zdobycz drużyny ma służyć za jadło całej drużynie, + Gdy porwiesz zdobycz słabszemu, nie pożeraj wszystkiego w próżności. + Nędzarz jest w Prawa opiece, zostaw mu choć skórę i kości! + Zdobycz drużyny ma służyć za jadło całej drużynie, - A kto tę zdobycz chciał unieść do własnej nory, niech zginie! + A kto tę zdobycz chciał unieść do własnej nory, niech zginie! - Wilczyca ma prawo do leża. Gdy samcom powiodą się łowy, - Wolno jej żądać dziesięcin dla wilcząt -- i nigdy nie dozna odmowy! - Wilk -- ojciec jest panem w swej norze. To wolny myśliwiec włóczęga! + Wilczyca ma prawo do leża. Gdy samcom powiodą się łowy, + Wolno jej żądać dziesięcin dla wilcząt -- i nigdy nie dozna odmowy! + Wilk -- ojciec jest panem w swej norze. To wolny myśliwiec włóczęga! - Sądzi go jeno Rada, a władza drużyny go nie dosięga. + Sądzi go jeno Rada, a władza drużyny go nie dosięga. - Gdy Prawo jest w czymś niedokładne, szukajcie pomocy w swym herszcie: - On starszy, mocniejszy i mędrszy -- więc jego przepisów się dzierżcie! - Takie są Prawa Puszczańskie. Wyliczyć je -- niepodobieństwo! + Gdy Prawo jest w czymś niedokładne, szukajcie pomocy w swym herszcie: + On starszy, mocniejszy i mędrszy -- więc jego przepisów się dzierżcie! + Takie są Prawa Puszczańskie. Wyliczyć je -- niepodobieństwo! - Lecz sercem Prawa, głową i koścem jest... posłuszeństwo! + Lecz sercem Prawa, głową i koścem jest... posłuszeństwo! diff --git a/songs/rajdowa.xml b/songs/rajdowa.xml index 2428c5bb..e70bab6f 100644 --- a/songs/rajdowa.xml +++ b/songs/rajdowa.xml @@ -10,32 +10,32 @@ - Naszej ziemi śpiewamy, ziemi pokłon składamy, - Taki prosty, serdeczny, harcerski, - Niechaj echo poniesie tę balladę rajdowa - W nowe jutro i przyszłość nową. + Naszej ziemi śpiewamy, ziemi pokłon składamy, + Taki prosty, serdeczny, harcerski, + Niechaj echo poniesie tę balladę rajdowa + W nowe jutro i przyszłość nową. - Właśnie tu na tej ziemi, młody harcerz meldował - Swą gotowość umierać za Polske. - Tak, jak ty niesiesz plecak, on niósł w ręku karabin - W sercu miłość, nadzieję i troskę. - Może tu w Nowej Słupi, Daleszycach, Bielicach - Brzozowymi krzyżami znaczonych, - Swą dziewczynę pozegnał nic nie wiedząc, że tylko - Kilka dni życia mu przeznaczone. + Właśnie tu na tej ziemi, młody harcerz meldował + Swą gotowość umierać za Polske. + Tak, jak ty niesiesz plecak, on niósł w ręku karabin + W sercu miłość, nadzieję i troskę. + Może tu w Nowej Słupi, Daleszycach, Bielicach + Brzozowymi krzyżami znaczonych, + Swą dziewczynę pozegnał nic nie wiedząc, że tylko + Kilka dni życia mu przeznaczone. - Na pomniku wyryto, ze szesnaście mial wiosen, - Że byl śmialy, odważny, radosny. - Kiedy padał płakała cała puszcza jodłowa, - Nie doczekal czekanje tak wiosny. - I choć on nie doczekał, to nie zginał tak sobie -- - Przetarł szlak, którym dzisiaj wedrujesz, - Kiedy tak przy ognisku spiewasz sobie balladę, - Tak jak on w sercu ojczyzne czujesz. + Na pomniku wyryto, ze szesnaście mial wiosen, + Że byl śmialy, odważny, radosny. + Kiedy padał płakała cała puszcza jodłowa, + Nie doczekal czekanje tak wiosny. + I choć on nie doczekał, to nie zginał tak sobie -- + Przetarł szlak, którym dzisiaj wedrujesz, + Kiedy tak przy ognisku spiewasz sobie balladę, + Tak jak on w sercu ojczyzne czujesz. @@ -59,4 +59,4 @@ W takiej wersji śpiewa Barakowa z 281. Nie znam autorów. - \ No newline at end of file + diff --git a/songs/rapsodokroluwarnenczyku.xml b/songs/rapsodokroluwarnenczyku.xml index 48aacc37..e7deda5b 100644 --- a/songs/rapsodokroluwarnenczyku.xml +++ b/songs/rapsodokroluwarnenczyku.xml @@ -9,39 +9,39 @@ - Lśni chorągiew pozłocista - Chrzęści zbroja szmelcowana - Jedzie, jedzie król Władysław - By poskromić bisurmana. + Lśni chorągiew pozłocista + Chrzęści zbroja szmelcowana + Jedzie, jedzie król Władysław + By poskromić bisurmana. - Po wąwozach brzmią cykady, - Koń królewski raźnie parska, - Dzielny Węgier, Jan Hunyady - Sprawdza szyki klnąc z madziarska. + Po wąwozach brzmią cykady, + Koń królewski raźnie parska, + Dzielny Węgier, Jan Hunyady + Sprawdza szyki klnąc z madziarska. - Nad wzgórzami wstają zorze, - Wojsko w marszu rumor czyni, - - O, już widać Czarne Morze! - Mówi legat Cesarini. + Nad wzgórzami wstają zorze, + Wojsko w marszu rumor czyni, + - O, już widać Czarne Morze! + Mówi legat Cesarini. - Król naprędce je śniadanie, - Jan Hunyady wszedł z łoskotem: - - Nawalili wenecjanie, - Wycofali swoją flotę! + Król naprędce je śniadanie, + Jan Hunyady wszedł z łoskotem: + - Nawalili wenecjanie, + Wycofali swoją flotę! - Król odstawił kubek z winem, - Blask mu strzelił spod powieki: - - Uderzamy za godzinę + Król odstawił kubek z winem, + Blask mu strzelił spod powieki: + - Uderzamy za godzinę A Wenecji - wstyd na wieki! - Jeszcze Warna w dali drzemie, - Jeszcze nisko stoi słońce, + Jeszcze Warna w dali drzemie, + Jeszcze nisko stoi słońce, A pancerni - strzemię w strzemię, @@ -50,17 +50,17 @@ A pancerni - kopia w kopię - Ku piaszczystym patrzą brzegom... - - No to cześć, daj pyska chłopie! - - Mówi król do Hunyadego. + Ku piaszczystym patrzą brzegom... + - No to cześć, daj pyska chłopie! - + Mówi król do Hunyadego. I błysnęły jednym blaskiem - Setki mieczy wyszarpniętych + Setki mieczy wyszarpniętych I zgrzytnęły jednym trzaskiem - Setki przyłbic zatrzaśniętych, + Setki przyłbic zatrzaśniętych, @@ -69,48 +69,48 @@ I huknęły dzwony w mieście, I ruszyli - najpierw stępa, - Potem kłusem, cwałem wreszcie, + Potem kłusem, cwałem wreszcie, - Poszła dzielna polska jazda, - Poszli Węgrzy niczym diabli, - Jak stalowa, ostra drzazga, - Jak błyszczące ostrze szabli, + Poszła dzielna polska jazda, + Poszli Węgrzy niczym diabli, + Jak stalowa, ostra drzazga, + Jak błyszczące ostrze szabli, I widziano jak lecieli - Pędem wielkim i szalonym, + Pędem wielkim i szalonym, I widziano, jak tonęli - W morzu Turków niezmierzonym. + W morzu Turków niezmierzonym. - Po czym z piórem, siadł nad kartą - Mnich uczony, stary skryba: - - Warto było, czy nie warto? - Odwrót byłby lepszy chyba... + Po czym z piórem, siadł nad kartą + Mnich uczony, stary skryba: + - Warto było, czy nie warto? + Odwrót byłby lepszy chyba... - Chrzanił zacny zjadacz chleba - Czas nad nami wartko goni, + Chrzanił zacny zjadacz chleba + Czas nad nami wartko goni, I tak kiedyś umrzeć trzeba, - To już lepiej tak jak oni. + To już lepiej tak jak oni. - Z resztą - koniec dzieło wieńczy, - Mnich w klasztorze kipnął marnie, + Z resztą - koniec dzieło wieńczy, + Mnich w klasztorze kipnął marnie, A szalony król Warneńczyk - Ma grobowiec w pięknej Warnie, + Ma grobowiec w pięknej Warnie, I szanują go Bułgarzy - I nas - dzięki niemu - cenią, - Więc na czarnomorskiej plaży - aniam się królewskim cieniom. + I nas - dzięki niemu - cenią, + Więc na czarnomorskiej plaży + aniam się królewskim cieniom. diff --git a/songs/rover.xml b/songs/rover.xml index 5a8ce631..dee39f69 100644 --- a/songs/rover.xml +++ b/songs/rover.xml @@ -9,52 +9,52 @@ - I'm a a rover and seldom sober - I'm a rover, o' high degree; - And when I'm drinking, I'm always thinking - How to gain my love's company. + I'm a a rover and seldom sober + I'm a rover, o' high degree; + And when I'm drinking, I'm always thinking + How to gain my love's company. - Though the nicht be dark as dungeon - No' a star to be seen above, - I will be guided without a stumble - Into the airms o' my ain true love. + Though the nicht be dark as dungeon + No' a star to be seen above, + I will be guided without a stumble + Into the airms o' my ain true love. - He steppit up to her bedroom window, - Kneelin' gently upon a stone; - He rappit at her bedroom-window - "Darlin' dear, do you lie alone?" + He steppit up to her bedroom window, + Kneelin' gently upon a stone; + He rappit at her bedroom-window + "Darlin' dear, do you lie alone?" - She raised her heid on her snaw-white pillow - Wi' her arms aboot her breast, - "Wha' is that at my bedroom window - Disturbin' me at my lang night's rest?" + She raised her heid on her snaw-white pillow + Wi' her arms aboot her breast, + "Wha' is that at my bedroom window + Disturbin' me at my lang night's rest?" - "It's only me, your ain true lover, - Open the door and let me in. - For I hae come on a lang journey, - And I'm near drenched to the skin." + "It's only me, your ain true lover, + Open the door and let me in. + For I hae come on a lang journey, + And I'm near drenched to the skin." - She opened the door wi' the greatest pleasure, - She opened the door and let him in, - They baith shook hands and embraced each other - Until the mornin' they lay as one. + She opened the door wi' the greatest pleasure, + She opened the door and let him in, + They baith shook hands and embraced each other + Until the mornin' they lay as one. - The cocks were crawin', the birds were whistlin' - The burns they ran free abune the brae; - "Remember, lass, I'm a ploughman laddie - And the fairmer I must obey." + The cocks were crawin', the birds were whistlin' + The burns they ran free abune the brae; + "Remember, lass, I'm a ploughman laddie + And the fairmer I must obey." - "Noo, my lass, I must gang and leave thee - And though the hills they are high above, - I will climb them wi' greater pleasure - Since I been in the airms o' my love. + "Noo, my lass, I must gang and leave thee + And though the hills they are high above, + I will climb them wi' greater pleasure + Since I been in the airms o' my love. diff --git a/songs/scarlett.xml b/songs/scarlett.xml index afb639f7..2e3eb0b4 100644 --- a/songs/scarlett.xml +++ b/songs/scarlett.xml @@ -16,7 +16,7 @@ Tysiąc osiemset sześćdziesiąty pierwszy W Atlancie szał tysięcy młodych nóg Generał Lee podnosi w górę rękę - Jankesom śmierć tak nam dopomóż Bóg + Jankesom śmierć tak nam dopomóż Bóg Na dworcu tłok sztandary i kobiety Pociągi pełne chłopców żądnych krwi W kwietniowym słońcu błyszczą epolety @@ -24,17 +24,17 @@ - Scarlett czemu słowa takie zimne - Jakby w gardle okruch lodu st - Scarlett wojna nie jest dla dziewczynek - Które nie potrafią grać va banque + Scarlett czemu słowa takie zimne + Jakby w gardle okruch lodu st + Scarlett wojna nie jest dla dziewczynek + Które nie potrafią grać va banque Tysiąc osiemset sześćdziesiąty drugi Jesienne słońce w epoletach lśni Generał Lee dochodzi do Missouri - Do Pennsylwanii wkracza stary Lee + Do Pennsylwanii wkracza stary Lee Artyleryjski ogień wkrótce zdławi Jankeskie szczury w górach Tennessee Zwycięstwa bóg Atlantę błogosławi @@ -45,19 +45,19 @@ Tysiąc osiemset sześćdziesiąty czwarty W krwi południowej tonie miasta bruk Jankeskie psy nie wejdą do Atlanty - Jankesom śmierć tak nam dopomóż Bóg + Jankesom śmierć tak nam dopomóż Bóg Płonie Atlanta w ogniu oszalałym Sztandar obłażą wygłodzone wszy Gwardia opuszcza miasto osłupiałe - Znak krzyża szablą kreśli stary Lee + Znak krzyża szablą kreśli stary Lee - Scarlett on powtarza Twoje imię - Czując w ustach prochu smak - Scarlett miłość nie jest dla dziewczynek - Które nie potrafią grać va banque + Scarlett on powtarza Twoje imię + Czując w ustach prochu smak + Scarlett miłość nie jest dla dziewczynek + Które nie potrafią grać va banque diff --git a/songs/spotkanie_w_porcie.xml b/songs/spotkanie_w_porcie.xml index 7258b3e1..8a1cae3d 100644 --- a/songs/spotkanie_w_porcie.xml +++ b/songs/spotkanie_w_porcie.xml @@ -9,74 +9,74 @@ - W Amsterdamie statek nasz na wyładunku był, - Człowiek do roboty nie miał nic, więc w porcie pił. - Piję po obcemu nie rozumiem, nudzę się, - Kiedy jakiś czarny siada koło mnie. + W Amsterdamie statek nasz na wyładunku był, + Człowiek do roboty nie miał nic, więc w porcie pił. + Piję po obcemu nie rozumiem, nudzę się, + Kiedy jakiś czarny siada koło mnie. - - America - mówi do mnie - zrozumiałem, - Rozejrzałem się i mówię - Sowietskij Sojuz. - - Soviet Union - on się cieszy, ja do pełna mu nalałem, - Jak raz swoich nie było więc był pełny luz. + - America - mówi do mnie - zrozumiałem, + Rozejrzałem się i mówię - Sowietskij Sojuz. + - Soviet Union - on się cieszy, ja do pełna mu nalałem, + Jak raz swoich nie było więc był pełny luz. - Po ichniemu nie rozumiem, on po ludzku też, - Lecz jest wódka, więc jest tłumacz, przy niej mów co chcesz. - Postawiłem po sto gram, niech Negr widzi że gest mam, - Jemu przecież w Ameryce ciężko jest. + Po ichniemu nie rozumiem, on po ludzku też, + Lecz jest wódka, więc jest tłumacz, przy niej mów co chcesz. + Postawiłem po sto gram, niech Negr widzi że gest mam, + Jemu przecież w Ameryce ciężko jest. - On tymczasem mówi - Stany Zjednoczone - To największe państwo z wszystkich świata państw! - W bankach złota ma zasoby niezliczone, - Chcesz z nim zacząć to już nie masz żadnych szans. + On tymczasem mówi - Stany Zjednoczone + To największe państwo z wszystkich świata państw! + W bankach złota ma zasoby niezliczone, + Chcesz z nim zacząć to już nie masz żadnych szans. - A ja na to - Kreml w niebo śle rakiety! - Bez wysiłku wielkich rzek zawraca bieg! - Żal mi ciebie lecz niestety - Również trudny kunszt baletu - Najlepiej posiadł on na planecie tej! + A ja na to - Kreml w niebo śle rakiety! + Bez wysiłku wielkich rzek zawraca bieg! + Żal mi ciebie lecz niestety + Również trudny kunszt baletu + Najlepiej posiadł on na planecie tej! - Przyszło potem po gram dwieście do rozmowy chęć, - Wyjaśniłem mu że jest ofiarą klasowych spięć, - Lecz Murzyna marynarski umysł wciąż w ciemnościach trw + Przyszło potem po gram dwieście do rozmowy chęć, + Wyjaśniłem mu że jest ofiarą klasowych spięć, + Lecz Murzyna marynarski umysł wciąż w ciemnościach trw I na światły wywód mój odpowiedź dał: - - U nas jest na głowę po dwa samochody, - Zbudowaliśmy największy świata gmach, - Nasza demokracja daje nam swobody, - Których oczekuje cały świat we łzach. + - U nas jest na głowę po dwa samochody, + Zbudowaliśmy największy świata gmach, + Nasza demokracja daje nam swobody, + Których oczekuje cały świat we łzach. - A ja na to - my w niebo ślem rakiety! - Bez wysiłku wielkich rzek cofamy bieg! - Żal mi ciebie lecz niestety - Również trudny kunszt baletu - Najlepiej posiedliśmy na planecie tej! + A ja na to - my w niebo ślem rakiety! + Bez wysiłku wielkich rzek cofamy bieg! + Żal mi ciebie lecz niestety + Również trudny kunszt baletu + Najlepiej posiedliśmy na planecie tej! - Szybko nabierała tempa ta wymiana zdań, - Ale nie chciał Negr zrozumieć co jest dobre dlań. - Postawiłem po gram trzysta, myślę teraz zgodzi się, - Ale on choć ledwie mówi jednak mówi, że: + Szybko nabierała tempa ta wymiana zdań, + Ale nie chciał Negr zrozumieć co jest dobre dlań. + Postawiłem po gram trzysta, myślę teraz zgodzi się, + Ale on choć ledwie mówi jednak mówi, że: - - Ja posiadam wielki kanion Colorado. - Delfinów język też rozszyfrowałem ja. - U mnie Niagara jest największy z wodospadów - I gwiazd pięćdziesiąt moja flaga ma, + - Ja posiadam wielki kanion Colorado. + Delfinów język też rozszyfrowałem ja. + U mnie Niagara jest największy z wodospadów + I gwiazd pięćdziesiąt moja flaga ma, - A ja na to - ja w niebo ślę rakiety! - Bez wysiłku wielkich rzek zawracam bieg! - Żal mi ciebie lecz niestety - Również trudny kunszt baletu - Najlepiej ja posiadłem na planecie tej! + A ja na to - ja w niebo ślę rakiety! + Bez wysiłku wielkich rzek zawracam bieg! + Żal mi ciebie lecz niestety + Również trudny kunszt baletu + Najlepiej ja posiadłem na planecie tej! diff --git a/songs/spowiedz.xml b/songs/spowiedz.xml index afc2a103..fef6a2a0 100644 --- a/songs/spowiedz.xml +++ b/songs/spowiedz.xml @@ -9,69 +9,69 @@ - Raz do księdza bernardyna - Jedzie czarna limuzyna. - Z niej wysiada ten chłopczyna - I tak spowiedź swą zaczyna: + Raz do księdza bernardyna + Jedzie czarna limuzyna. + Z niej wysiada ten chłopczyna + I tak spowiedź swą zaczyna: - -- Proszę księdza bernardyna, - Całowałem się z dziewczyną. + -- Proszę księdza bernardyna, + Całowałem się z dziewczyną. - -- O mój chłopcze to rozpusta, - Całowałeś dziewcze w usta. + -- O mój chłopcze to rozpusta, + Całowałeś dziewcze w usta. - -- Trochę niżej, trochę niżej, - Trochę niżej, proszę księdza, - Trochę niżej, trochę niżej, - Proszę księdza bernardyna. + -- Trochę niżej, trochę niżej, + Trochę niżej, proszę księdza, + Trochę niżej, trochę niżej, + Proszę księdza bernardyna. - -- O mój chłopcze, nie przeżyję, - Całowałeś dziewcze w szyję. + -- O mój chłopcze, nie przeżyję, + Całowałeś dziewcze w szyję. - -- O mój chłopcze, to mnie mierzi, - Całowałeś dziewcze w piersi. + -- O mój chłopcze, to mnie mierzi, + Całowałeś dziewcze w piersi. - -- O mój chłopcze, to występek, - Całowałeś dziewcze w pępek. + -- O mój chłopcze, to występek, + Całowałeś dziewcze w pępek. - -- O mój chłopcze, co za psoty, - Całowałeś dziewcze w stopy. + -- O mój chłopcze, co za psoty, + Całowałeś dziewcze w stopy. - -- Trochę wyżej, trochę wyżej, - Trochę wyżej, proszę księdza, - Trochę wyżej, trochę wyżej, - Proszę księdza bernardyna. + -- Trochę wyżej, trochę wyżej, + Trochę wyżej, proszę księdza, + Trochę wyżej, trochę wyżej, + Proszę księdza bernardyna. - -- O mój chłopcze, co za zbytki, - Całowałeś dziewcze w łydki. + -- O mój chłopcze, co za zbytki, + Całowałeś dziewcze w łydki. - -- O mój chłopcze, czy to złuda? - Całowałeś dziewcze w uda. + -- O mój chłopcze, czy to złuda? + Całowałeś dziewcze w uda. - -- O mój chłopcze, ja cię zduszę, - Całowałeś dziewcze w pupę. + -- O mój chłopcze, ja cię zduszę, + Całowałeś dziewcze w pupę. - Z drugiej strony, z drugiej strony, - Z drugiej strony proszę księdza, - Z drugiej strony, z drugiej strony, - Proszę księdza bernardyna. + Z drugiej strony, z drugiej strony, + Z drugiej strony proszę księdza, + Z drugiej strony, z drugiej strony, + Proszę księdza bernardyna. diff --git a/songs/tropiki.xml b/songs/tropiki.xml index cf4b5ccb..79c42f41 100644 --- a/songs/tropiki.xml +++ b/songs/tropiki.xml @@ -9,30 +9,30 @@ - Przez afrykański busz nie przejdziesz ani rusz - I nikt nie przedrze się bez noża - Jest tylko jeden mąż, co piersią pruje gąszcz - To noso, noso, noso, nosorożec. + Przez afrykański busz nie przejdziesz ani rusz + I nikt nie przedrze się bez noża + Jest tylko jeden mąż, co piersią pruje gąszcz + To noso, noso, noso, nosorożec. - Tropiki, tropiki, tropiki, + Tropiki, tropiki, tropiki, Ach upalny jest wasz urok dziki, dziki, aha ha ha ha - Murzynów czarnych stu, na bębnach bum, bum, bum, - Co przy ognisku piją wodę. - W szuwarach słychać szum, krokodyl wciąga brzuch, - a słoń wyciąga, ciąga, ciąga trąbę. + Murzynów czarnych stu, na bębnach bum, bum, bum, + Co przy ognisku piją wodę. + W szuwarach słychać szum, krokodyl wciąga brzuch, + a słoń wyciąga, ciąga, ciąga trąbę. - Na dworze ciemna noc, jakbyś nałożył koc - I nic nie widać, chociaż świeci lampa. - I nagle skoczył kot, lecz to nie mógł być kot - Na pewno, pewno, pewno to był lampart. + Na dworze ciemna noc, jakbyś nałożył koc + I nic nie widać, chociaż świeci lampa. + I nagle skoczył kot, lecz to nie mógł być kot + Na pewno, pewno, pewno to był lampart. @@ -53,4 +53,4 @@ Nie znam twórców. - \ No newline at end of file + diff --git a/songs/tylkochciec.xml b/songs/tylkochciec.xml index f0a5f78d..4772fc35 100644 --- a/songs/tylkochciec.xml +++ b/songs/tylkochciec.xml @@ -9,32 +9,32 @@ - Że spadnie z nieba to co chcesz, - Mylisz się bracie i na pewno -- - Nie czekaj cudów, przecież wiesz: - Życie upływa, a masz jedno. + Że spadnie z nieba to co chcesz, + Mylisz się bracie i na pewno -- + Nie czekaj cudów, przecież wiesz: + Życie upływa, a masz jedno. - Tylko chcieć, będziesz miał słońce co dnia, - Tylko chcieć, rozjaśnisz każdy mrok, - Tylko chcieć, Twój cały będzie zodiak, - Tylko chcieć, a szczęście masz o krok. - Kolory tęczy i złoto zbóż, - Srebro księżyca i zapach róż… + Tylko chcieć, będziesz miał słońce co dnia, + Tylko chcieć, rozjaśnisz każdy mrok, + Tylko chcieć, Twój cały będzie zodiak, + Tylko chcieć, a szczęście masz o krok. + Kolory tęczy i złoto zbóż, + Srebro księżyca i zapach róż… Dla ciebie wszystko! - Nie pójdziesz dalej nawet krok, - Gdy stoisz w miejscu -- to na pewno. - Nie czekaj cudów, przecież wiesz: - Życie upływa, a masz jedno. + Nie pójdziesz dalej nawet krok, + Gdy stoisz w miejscu -- to na pewno. + Nie czekaj cudów, przecież wiesz: + Życie upływa, a masz jedno. - Nie czekaj jutra, dzisiaj j - Obudź się bracie, kwiaty więdną. - I już bez cudów, przecież wiesz: - Życie upływa, a masz jedno. + Nie czekaj jutra, dzisiaj j + Obudź się bracie, kwiaty więdną. + I już bez cudów, przecież wiesz: + Życie upływa, a masz jedno. diff --git a/songs/wasza_wysokosc_kobieto.xml b/songs/wasza_wysokosc_kobieto.xml index c6a0d6f0..cf0933bf 100644 --- a/songs/wasza_wysokosc_kobieto.xml +++ b/songs/wasza_wysokosc_kobieto.xml @@ -9,29 +9,29 @@ Wasze Wieliczestwo Żenszczyna - Ciemnością, ciszą jak biedą + Ciemnością, ciszą jak biedą Osnute wszystko w tym domu… - Wasza Wysokość Kobieto, - Czy pani naprawdę do mnie? + Wasza Wysokość Kobieto, + Czy pani naprawdę do mnie? - Żarówki pełga tu oko, - Kroplami mur spływa nagi… - Kobieto, Wasza Wysokość, - Skąd w pani tyle odwagi? + Żarówki pełga tu oko, + Kroplami mur spływa nagi… + Kobieto, Wasza Wysokość, + Skąd w pani tyle odwagi? - To przyjście pani – jak pożar. - Zapiera dech, huczy wokół… - Lecz proszę do środka, proszę. - Nie warto tak stać na progu. + To przyjście pani – jak pożar. + Zapiera dech, huczy wokół… + Lecz proszę do środka, proszę. + Nie warto tak stać na progu. - Więc do mnie – naprawdę, miła?! - Ach, co też mi się znów plecie… - Wiem – pani drzwi pomyliła, - Ulicę, miasto, stulecie. + Więc do mnie – naprawdę, miła?! + Ach, co też mi się znów plecie… + Wiem – pani drzwi pomyliła, + Ulicę, miasto, stulecie. diff --git a/songs/wee.xml b/songs/wee.xml index cbabf633..c9d3653f 100644 --- a/songs/wee.xml +++ b/songs/wee.xml @@ -9,40 +9,40 @@ - A wee drappie whisky, oh when I am wearied + A wee drappie whisky, oh when I am wearied Ma blood it will warm, my spirits will cheer - For when I sit doon, I intend to be merry - Come fill up a bumper and hand it round here. + For when I sit doon, I intend to be merry + Come fill up a bumper and hand it round here. - I can scarce get a hauf oor, oh when I am wearied - To tell you the truth that I'm vrocht (wrought) very sore - My ploo and my lassie is a' my whole pleasure - We'll both tak' a kiss an' hae a drap more. + I can scarce get a hauf oor, oh when I am wearied + To tell you the truth that I'm vrocht (wrought) very sore + My ploo and my lassie is a' my whole pleasure + We'll both tak' a kiss an' hae a drap more. - Contented I sit and contented I labour - Contented I drink and contented I sing - I never dispute nor fall oot wi' my neebors - For that is a mean and a contentious thing. + Contented I sit and contented I labour + Contented I drink and contented I sing + I never dispute nor fall oot wi' my neebors + For that is a mean and a contentious thing. - Oh few, very few ever hear me compleenin - Though ofttimes the load of oppression I bear - Oh fat is the use o a man aye compleenin' - For aye fan he tastes, he maun hae a drap mair. + Oh few, very few ever hear me compleenin + Though ofttimes the load of oppression I bear + Oh fat is the use o a man aye compleenin' + For aye fan he tastes, he maun hae a drap mair. - Come noble waiter, bring in a large measure, - I mean hauf a mutchkin the best o' the toon - An' when it is drunken, it's time to bejoggin - We'll gang merrily hame wi' the canniest carl. + Come noble waiter, bring in a large measure, + I mean hauf a mutchkin the best o' the toon + An' when it is drunken, it's time to bejoggin + We'll gang merrily hame wi' the canniest carl. - So good night to you all, I think it's but reason, - Altho' that the whisky speaks lood in my ear - Good night and safe home, till farther occasion - We'll a' meet in friends and hae a drap mair. + So good night to you all, I think it's but reason, + Altho' that the whisky speaks lood in my ear + Good night and safe home, till farther occasion + We'll a' meet in friends and hae a drap mair. diff --git a/songs/wiodawioda.xml b/songs/wiodawioda.xml index 7f0a30b9..8fa06d06 100644 --- a/songs/wiodawioda.xml +++ b/songs/wiodawioda.xml @@ -9,32 +9,32 @@ - Wiodą, wiodą drogi w świat, - Wśród lesistych gór zieleni, - W mrocznych grotach znacząc ślad, - Wśród zbłąkanych mknąc strumieni. - Poprzez biały zimny śnieg, - Łąki kwietne i majowe, - Omijając skalny brzeg + Wiodą, wiodą drogi w świat, + Wśród lesistych gór zieleni, + W mrocznych grotach znacząc ślad, + Wśród zbłąkanych mknąc strumieni. + Poprzez biały zimny śnieg, + Łąki kwietne i majowe, + Omijając skalny brzeg I pagóry księżycowe. - Wiodą, wiodą drogi w świat, - Pod gwiazdami mkną na niebie -- - Choć wędrować każdy rad, - W końcu wraca w dom, do siebie. + Wiodą, wiodą drogi w świat, + Pod gwiazdami mkną na niebie -- + Choć wędrować każdy rad, + W końcu wraca w dom, do siebie. Oczy, które ognia dziw Oglądały -- i pieczary, - Patrzą czule w zieleń niw + Patrzą czule w zieleń niw I kochany domek stary. - Wiodą, wiodą drogi w świat... + Wiodą, wiodą drogi w świat... @@ -59,4 +59,4 @@ - \ No newline at end of file + diff --git a/songs/wloczedzy.xml b/songs/wloczedzy.xml index bc5ee5fa..55b678ec 100644 --- a/songs/wloczedzy.xml +++ b/songs/wloczedzy.xml @@ -9,69 +9,69 @@ - Wchodzimy z twarzami zdrowymi od mrozu, - Siadamy przy ogniu tańczącym z radości, - Ścieramy z nadgarstków odciski powrozów, - Wołamy o wino i chleb, i tłustości, - Spod ścian patrzą na nas w milczeniu miejscowi, - Napięci, na wszystko gotowi. + Wchodzimy z twarzami zdrowymi od mrozu, + Siadamy przy ogniu tańczącym z radości, + Ścieramy z nadgarstków odciski powrozów, + Wołamy o wino i chleb, i tłustości, + Spod ścian patrzą na nas w milczeniu miejscowi, + Napięci, na wszystko gotowi. - Wchłaniamy łapczywie wielkimi kęsami, - Łykamy alkohol aż warczy nam w grdykach, - Bekniemy czasami, pierdniemy czasami, - Aż z ław w ciepło wzbija się woń wędrownika - I płynie pod ściany miejscowych jak ręka - Co mówi - przestańcie się lękać, + Wchłaniamy łapczywie wielkimi kęsami, + Łykamy alkohol aż warczy nam w grdykach, + Bekniemy czasami, pierdniemy czasami, + Aż z ław w ciepło wzbija się woń wędrownika + I płynie pod ściany miejscowych jak ręka + Co mówi - przestańcie się lękać, - Co mówi - przestańcie się lękać. + Co mówi - przestańcie się lękać. - Śpiewamy piosenki o drodze i pracy, - O braku pieniędzy i braku miłości, - Podnoszą się ze snu miejscowi pijacy, - Słuchają oczami rozumnej przeszłości, - Ktoś wstanie, podejdzie, zapyta, kto my. - -- My dzieci wolności, bezdomne my psy. + Śpiewamy piosenki o drodze i pracy, + O braku pieniędzy i braku miłości, + Podnoszą się ze snu miejscowi pijacy, + Słuchają oczami rozumnej przeszłości, + Ktoś wstanie, podejdzie, zapyta, kto my. + -- My dzieci wolności, bezdomne my psy. - Przysiądą się stawiać i pytać nieśmiale, - Gdzie dobrze, gdzie lepiej, a gdzie pieniądz rośnie - I plączą się cienie pod niską powałą, - I coraz jest ciaśniej i duszniej, i głośniej, - Bo oto włóczędzy z przeszłością swą mroczną - Dla ludu się stają wyrocznią, + Przysiądą się stawiać i pytać nieśmiale, + Gdzie dobrze, gdzie lepiej, a gdzie pieniądz rośnie + I plączą się cienie pod niską powałą, + I coraz jest ciaśniej i duszniej, i głośniej, + Bo oto włóczędzy z przeszłością swą mroczną + Dla ludu się stają wyrocznią, - Dla ludu się stają wyrocznią. + Dla ludu się stają wyrocznią. - Mówimy o wojnach w dalekich krainach, - Zmyślamy bogactwa zdobyte, stracone, - Słuchają jak mszy, dolewają nam wina - I dziewki przysiądą się też, ośmielone, - Do ognia dorzuci przebiegły gospodarz: - Noc długa korzyści mu doda. + Mówimy o wojnach w dalekich krainach, + Zmyślamy bogactwa zdobyte, stracone, + Słuchają jak mszy, dolewają nam wina + I dziewki przysiądą się też, ośmielone, + Do ognia dorzuci przebiegły gospodarz: + Noc długa korzyści mu doda. - Rozgrzani, snujemy niezwykłą opowieść, - Zazdroszcząc im tego, że tacy ciekawi, - Choć mają, co każdy tak chciałby mieć człowiek, - A za byle co już gotowi zastawić, - By włóczyć się, szukać i błądzić jak my - I żyć bez wytchnienia, bez nocy i dni, + Rozgrzani, snujemy niezwykłą opowieść, + Zazdroszcząc im tego, że tacy ciekawi, + Choć mają, co każdy tak chciałby mieć człowiek, + A za byle co już gotowi zastawić, + By włóczyć się, szukać i błądzić jak my + I żyć bez wytchnienia, bez nocy i dni, - I żyć bez wytchnienia, bez nocy i dni. + I żyć bez wytchnienia, bez nocy i dni. - Pijemy i każdy już ma coś na oku -- - Ten nocleg w piekarni, ten pannę piersiastą, - Świt znajdzie nas znowu za miastem na stoku, - Gdzie nikt tak naprawdę nic nie ma na własność, - A wam pozostanie piosenka i sny: - -- My dzieci wolności, bezdomne my psy... + Pijemy i każdy już ma coś na oku -- + Ten nocleg w piekarni, ten pannę piersiastą, + Świt znajdzie nas znowu za miastem na stoku, + Gdzie nikt tak naprawdę nic nie ma na własność, + A wam pozostanie piosenka i sny: + -- My dzieci wolności, bezdomne my psy... Dzieci wolności... Dzieci wolności, psy... diff --git a/songs/wtakacisze.xml b/songs/wtakacisze.xml index 3b21c53c..f4239dcb 100644 --- a/songs/wtakacisze.xml +++ b/songs/wtakacisze.xml @@ -9,37 +9,37 @@ - Nie o uśmiech mi chodzi, choć się śmiałaś nie raz, - Ale o to, co kiedyś pojawiło się w nas, - Coś, co przyszło tak nagle i przeszło jak wiatr, - Czego właśnie najbardziej mi brak. + Nie o uśmiech mi chodzi, choć się śmiałaś nie raz, + Ale o to, co kiedyś pojawiło się w nas, + Coś, co przyszło tak nagle i przeszło jak wiatr, + Czego właśnie najbardziej mi brak. - Przychodziłem co wieczór, by posłuchać Twych płyt, - O miłości w ogóle nie mówiliśmy nic. - Wyjechałaś tak nagle i cichutko jak mysz, - Zostawiłaś swój adres i list. + Przychodziłem co wieczór, by posłuchać Twych płyt, + O miłości w ogóle nie mówiliśmy nic. + Wyjechałaś tak nagle i cichutko jak mysz, + Zostawiłaś swój adres i list. - W taką, w taką ciszę - Wszystkie gwiazdy na niebie policzę, - Ciebie, Ciebie wołam, - Chociaż cisza i pustka dookoła. + W taką, w taką ciszę + Wszystkie gwiazdy na niebie policzę, + Ciebie, Ciebie wołam, + Chociaż cisza i pustka dookoła. - Jesteś moim aniołem i miłością bez dna, - Jesteś moją boginią, którą widzę co dnia, - Jakże długo mam czekać, jak prosić Cię mam, - Każesz trwać w niepewności, więc trwam. + Jesteś moim aniołem i miłością bez dna, + Jesteś moją boginią, którą widzę co dnia, + Jakże długo mam czekać, jak prosić Cię mam, + Każesz trwać w niepewności, więc trwam. - Choć dostaję twe listy, zdjęć parę mam, - Żyję jak grzeszny anioł w tłumie ludzi, lecz sam. - Jeszcze tli się nadzieja, że spotkamy się znów, - Do księżyca się śmiejąc, przywołuję Cię wróć. + Choć dostaję twe listy, zdjęć parę mam, + Żyję jak grzeszny anioł w tłumie ludzi, lecz sam. + Jeszcze tli się nadzieja, że spotkamy się znów, + Do księżyca się śmiejąc, przywołuję Cię wróć. diff --git a/songs/zaciagnijcie_na_oknie_niebieska_zaslone.xml b/songs/zaciagnijcie_na_oknie_niebieska_zaslone.xml index abe84a20..b089eaab 100644 --- a/songs/zaciagnijcie_na_oknie_niebieska_zaslone.xml +++ b/songs/zaciagnijcie_na_oknie_niebieska_zaslone.xml @@ -9,41 +9,41 @@ *** [Opustitie pożałusta sinije sztory] - Zaciągnijcie na oknie niebieską zasłonę, - Siostro, leki stąd weź, niepotrzebne mi są. - Wiara, Nadzieja, Miłość, poznaję -- to one, - Moje trzy wierzycielki odwiedzić mnie chcą. + Zaciągnijcie na oknie niebieską zasłonę, + Siostro, leki stąd weź, niepotrzebne mi są. + Wiara, Nadzieja, Miłość, poznaję -- to one, + Moje trzy wierzycielki odwiedzić mnie chcą. - Krótki pobyt na ziemi opłacić przystoi, - Ale pustą sakiewkę dziś mam, jak na złość... - -- Nie zamartwiaj się, nie smuć, o Wiaro, Ty moja, - Pewnie jeszcze dłużników zostalo Ci dość. + Krótki pobyt na ziemi opłacić przystoi, + Ale pustą sakiewkę dziś mam, jak na złość... + -- Nie zamartwiaj się, nie smuć, o Wiaro, Ty moja, + Pewnie jeszcze dłużników zostalo Ci dość. - Resztką sił się obrócę do drugiej z kolei, - By w ramionach jej ukryć skruszoną swą twarz: - -- Nie zamartwiaj się, nie smuć, o matko Nadziejo, - Nie jednego wszak syna na ziemi tu masz! + Resztką sił się obrócę do drugiej z kolei, + By w ramionach jej ukryć skruszoną swą twarz: + -- Nie zamartwiaj się, nie smuć, o matko Nadziejo, + Nie jednego wszak syna na ziemi tu masz! - A gdy usta przycisnę do dłoni tej trzeciej, - Słyszę jaką czułością głos cichy jej drga: - -- Nie zamartwiaj się, nie smuć, ja sama się przecież - Zamiast ciebie musiałam roztrwonić do cna. + A gdy usta przycisnę do dłoni tej trzeciej, + Słyszę jaką czułością głos cichy jej drga: + -- Nie zamartwiaj się, nie smuć, ja sama się przecież + Zamiast ciebie musiałam roztrwonić do cna. - -- Czyjekolwiek cię w życiu ramiona tuliły, - Jakikolwiek nieziemski ogarnąłby żar, - Dług twój ludzkie oszczerstwa w trójnasób spłaciły, - Więc oczyszczam cię z win i uwalniam od kar. + -- Czyjekolwiek cię w życiu ramiona tuliły, + Jakikolwiek nieziemski ogarnąłby żar, + Dług twój ludzkie oszczerstwa w trójnasób spłaciły, + Więc oczyszczam cię z win i uwalniam od kar. - Leżę czysty jak łza w pierwszym świtu przypływie, - Biała flaga pościeli powita mdły brzask. + Leżę czysty jak łza w pierwszym świtu przypływie, + Biała flaga pościeli powita mdły brzask. - Trzy sędziny, trzy matki, trzy siostry cierpliwe - Otwierają mi kredyt ostatni już raz. + Trzy sędziny, trzy matki, trzy siostry cierpliwe + Otwierają mi kredyt ostatni już raz. diff --git a/songs/zalzabulatemo.xml b/songs/zalzabulatemo.xml index 858f6363..bcc6d76c 100644 --- a/songs/zalzabulatemo.xml +++ b/songs/zalzabulatemo.xml @@ -12,32 +12,32 @@ - Zawsze śpiewał po cichu bez złości - chociaż czasy leciutkie nie były - bo w balladzie im więcej miłości więcej sy - Zawsze śpiewał po cichu bez złości - chociaż statek już walił o dno - i dlatego na zawsze zagościł w moim domu Pan Bułat 0. + Zawsze śpiewał po cichu bez złości + chociaż czasy leciutkie nie były + bo w balladzie im więcej miłości więcej sy + Zawsze śpiewał po cichu bez złości + chociaż statek już walił o dno + i dlatego na zawsze zagościł w moim domu Pan Bułat 0. - To jest żal za Panem Bułatem czyli żal za minioną młodością - kiedy jego marzenia skrzydlate pozwalały się łudzić wolnością - To jest żal za Bułatem 0., pierwszą wódką i pierwszą kobietą - kiedy z trudem do przodu się szło ale czasem wierzono poetom + To jest żal za Panem Bułatem czyli żal za minioną młodością + kiedy jego marzenia skrzydlate pozwalały się łudzić wolnością + To jest żal za Bułatem 0., pierwszą wódką i pierwszą kobietą + kiedy z trudem do przodu się szło ale czasem wierzono poetom - Dziś podoba się inna piosenka - dzisiaj inne potrzeby są w tłumach - i dlatego fałszuje panienka o koniku hop siup na biegunach - A ja zawsze już będę się spierał - z wielkim Panem co twarzy ma sto - że nam kogoś takiego zabiera jak Pan Bułat "gospodin O" + Dziś podoba się inna piosenka + dzisiaj inne potrzeby są w tłumach + i dlatego fałszuje panienka o koniku hop siup na biegunach + A ja zawsze już będę się spierał + z wielkim Panem co twarzy ma sto + że nam kogoś takiego zabiera jak Pan Bułat "gospodin O" - To jest żal za Bułatem 0. pierwszą wódką i pierwszą kobietą - kiedy z trudem do przodu się szło ale czasem wierzono poetom + To jest żal za Bułatem 0. pierwszą wódką i pierwszą kobietą + kiedy z trudem do przodu się szło ale czasem wierzono poetom diff --git a/songs/zbieg_okolicznosci_lagodzacych.xml b/songs/zbieg_okolicznosci_lagodzacych.xml index ec561cf8..bec2fee8 100644 --- a/songs/zbieg_okolicznosci_lagodzacych.xml +++ b/songs/zbieg_okolicznosci_lagodzacych.xml @@ -12,14 +12,14 @@ - Szliśmy do siebie -- Ty i ja, - A drogi nasze wciąż mroczne były, - Lecz znalazł się ktoś i pomógł nam się spotkać - Wśród zielonej naszej równiny. + Szliśmy do siebie -- Ty i ja, + A drogi nasze wciąż mroczne były, + Lecz znalazł się ktoś i pomógł nam się spotkać + Wśród zielonej naszej równiny. Wyszliśmy piękni dla siebie I tacy zadziwieni. - Nasze serca gorące bić równo zaczęły, - Jakby same tylko były na Ziemi. + Nasze serca gorące bić równo zaczęły, + Jakby same tylko były na Ziemi. @@ -28,14 +28,14 @@ - Zbiegliśmy razem -- Ty i ja - Z gór ośnieżonych w ciepłą dolinę. - Kto tak dobry był i pomógł nam się spotkać - W tej oszalałej gęstwinie? + Zbiegliśmy razem -- Ty i ja + Z gór ośnieżonych w ciepłą dolinę. + Kto tak dobry był i pomógł nam się spotkać + W tej oszalałej gęstwinie? Wyszliśmy nadzy dla siebie Z nocy na światło dzienne. - Nasze zegarki ślepe chodzić nagle zaczęły - O jednej i tej samej godzinie. + Nasze zegarki ślepe chodzić nagle zaczęły + O jednej i tej samej godzinie. diff --git a/songs/ze_szczytu_schodow.xml b/songs/ze_szczytu_schodow.xml index 52c7cc92..aaf691cf 100644 --- a/songs/ze_szczytu_schodow.xml +++ b/songs/ze_szczytu_schodow.xml @@ -10,85 +10,85 @@ Oczywiście - ci którzy stoją na szczycie schodów + ci którzy stoją na szczycie schodów oni wiedzą oni wiedzą wszystko - co innego my - sprzątacze placów - zakładnicy lepszej przyszłości - którym ci ze szczytu schodów - ukazują się rzadko - zawsze z palcem na ustach + co innego my + sprzątacze placów + zakładnicy lepszej przyszłości + którym ci ze szczytu schodów + ukazują się rzadko + zawsze z palcem na ustach - jesteśmy cierpliwi - żony nasze cerują niedzielną koszulę - rozmawiamy o racjach żywności - o piłce nożnej cenie butów + jesteśmy cierpliwi + żony nasze cerują niedzielną koszulę + rozmawiamy o racjach żywności + o piłce nożnej cenie butów a w sobotę przechylamy głowę w t - i pijemy + i pijemy - nie jesteśmy z tych - co zaciskają pięści - potrząsają łańcuchami - mówią i pytają - namawiają do buntu - rozgorączkowani - wciąż mówią i pytają + nie jesteśmy z tych + co zaciskają pięści + potrząsają łańcuchami + mówią i pytają + namawiają do buntu + rozgorączkowani + wciąż mówią i pytają oto ich bajka -- - rzucimy się na schody + rzucimy się na schody i zdobędziemy je szturmem - będą się toczyć po schodach - owy tych którzy stali na szczycie - i wreszcie zobaczymy - co widać z tych wysokości - jaką przyszłość + będą się toczyć po schodach + owy tych którzy stali na szczycie + i wreszcie zobaczymy + co widać z tych wysokości + jaką przyszłość jaką pustkę - nie pragniemy widoku - toczących się głów - wiemy jak łatwo odrastają głowy - i zawsze na szczycie zostaje - jeden albo trzech + nie pragniemy widoku + toczących się głów + wiemy jak łatwo odrastają głowy + i zawsze na szczycie zostaje + jeden albo trzech a na dole aż czarno od mioteł i łopat - czasem nam się marzy - że ci ze szczytu schodów - zejdą nisko - to znaczy do nas - gdy nad gazetą żujemy chleb - i rzekną + czasem nam się marzy + że ci ze szczytu schodów + zejdą nisko + to znaczy do nas + gdy nad gazetą żujemy chleb + i rzekną - -- a teraz pomówmy - jak człowiek z człowiekiem - to nie jest prawda co wykrzykują afisze - prawdę nosimy w zaciśniętych ustach - okrutna jest i nazbyt ciężka - więc dźwigamy ją sami - nie jesteśmy szczęśliwi - chętnie zostalibyśmy - tutaj + -- a teraz pomówmy + jak człowiek z człowiekiem + to nie jest prawda co wykrzykują afisze + prawdę nosimy w zaciśniętych ustach + okrutna jest i nazbyt ciężka + więc dźwigamy ją sami + nie jesteśmy szczęśliwi + chętnie zostalibyśmy + tutaj - to są oczywiście marzenia - mogą się spełnić + to są oczywiście marzenia + mogą się spełnić albo nie spełnić więc dalej - będziemy uprawiali - nasz kwadrat ziemi - nasz kwadrat kamienia + będziemy uprawiali + nasz kwadrat ziemi + nasz kwadrat kamienia - z lekką głową - papierosem za uchem + z lekką głową + papierosem za uchem i bez kropli nadziei w sercu diff --git a/songs/zrodlo_ii.xml b/songs/zrodlo_ii.xml index 44b4b9dc..97a6243d 100644 --- a/songs/zrodlo_ii.xml +++ b/songs/zrodlo_ii.xml @@ -9,55 +9,55 @@ - Jak daleko od źródeł swoich rzeka odpływa, - Wyrzeźbiwszy własne granice; - Niesie szlam wypłukany z ciemnych głębin i wzywa - Do radości słonecznym odbiciem... - Ale płyną nią szczątki, co na światło nieczułe, - Bo obrosłe ciemnością i mułem. + Jak daleko od źródeł swoich rzeka odpływa, + Wyrzeźbiwszy własne granice; + Niesie szlam wypłukany z ciemnych głębin i wzywa + Do radości słonecznym odbiciem... + Ale płyną nią szczątki, co na światło nieczułe, + Bo obrosłe ciemnością i mułem. - Obojętny brzeg -- płaski, lecz nad wszystko wyniosły, - Rzeki nurt nieuchronnie wyzyska! - Karmi trawy i bagna co z nicości wyrosły, - Więc na nicość niezmiennie nieczułe: - Tak tworzą się z rzek - -- Rozlewiska... + Obojętny brzeg -- płaski, lecz nad wszystko wyniosły, + Rzeki nurt nieuchronnie wyzyska! + Karmi trawy i bagna co z nicości wyrosły, + Więc na nicość niezmiennie nieczułe: + Tak tworzą się z rzek + -- Rozlewiska... - Duszny upał się szerzy, w przerażonym powietrzu - Krążą chmury żarłocznych owadów; - Nie odnaleźć tu brzegów, ni obszarów nie zmierzyć - Ani wdychać oparów rozkładu! - Ani wody źródlanej nie odnaleźć czystości, - Ani głębi, ni głębokości! + Duszny upał się szerzy, w przerażonym powietrzu + Krążą chmury żarłocznych owadów; + Nie odnaleźć tu brzegów, ni obszarów nie zmierzyć + Ani wdychać oparów rozkładu! + Ani wody źródlanej nie odnaleźć czystości, + Ani głębi, ni głębokości! - Gdzie jest cel tych taplawisk, co choć dążą do morza, - Roztapiają się wciąż w grzęzawiska? - Nurt się pławi w kałużach, bagno -- bagnem odciska, - Niemożliwe -- ni powódź, ni pożar... - Tak tworzą się z rzek - -- Rozlewiska... + Gdzie jest cel tych taplawisk, co choć dążą do morza, + Roztapiają się wciąż w grzęzawiska? + Nurt się pławi w kałużach, bagno -- bagnem odciska, + Niemożliwe -- ni powódź, ni pożar... + Tak tworzą się z rzek + -- Rozlewiska... - Żeby rzekę odszukać -- trzeba w niej się zanurzyć - Dać okleić się tym, co nią płynie; - W dno muliste się wpatrzyć, gdzie się prąd po nim struży, - Bo -- co na dnie -- nigdy nie zginie! - Ale rzeka, to tylko źródła płynne jest ciało, - A gdzie dusza? Gdzie źródło zostało? + Żeby rzekę odszukać -- trzeba w niej się zanurzyć + Dać okleić się tym, co nią płynie; + W dno muliste się wpatrzyć, gdzie się prąd po nim struży, + Bo -- co na dnie -- nigdy nie zginie! + Ale rzeka, to tylko źródła płynne jest ciało, + A gdzie dusza? Gdzie źródło zostało? - W źródle siła i trwanie, ukojenie pragnienia, - Dźwięk daleki a przecież jedyny! - Więc za dźwiękiem, pod prąd rzeki mętnej, zgubionej - Trzeba czołgać się, pełznąć i płynąć, - Bo tylko się źródło nie zmienia. - Bije wodą przeczystą, - Z głębi ziemi zrodzoną - I żyje wciąż wbrew - Rozlewiskom... + W źródle siła i trwanie, ukojenie pragnienia, + Dźwięk daleki a przecież jedyny! + Więc za dźwiękiem, pod prąd rzeki mętnej, zgubionej + Trzeba czołgać się, pełznąć i płynąć, + Bo tylko się źródło nie zmienia. + Bije wodą przeczystą, + Z głębi ziemi zrodzoną + I żyje wciąż wbrew + Rozlewiskom... diff --git a/songs/zuzanna.xml b/songs/zuzanna.xml index 4215b6b3..325d6633 100644 --- a/songs/zuzanna.xml +++ b/songs/zuzanna.xml @@ -9,34 +9,34 @@ Susanne - W swe miejsce nad rzeką zabiera cię Zuzanna, - Możesz słuchać plusku łodzi, możesz zostać z nią do rana. - Wiesz, że trochę źle ma w głowie -- lecz dlatego chcesz być tutaj, - Proponuje ci herbatę oraz chińskie pomarańcze - I gdy właśnie chcesz powiedzieć, że nie możesz jej pokochać, - Zmienia twoją długość fali i pozwala mówić rzece, że się zawsze w niej kochałeś. - I już chcesz z nią powędrować, powędrować chcesz na oślep, - Wiesz, że ona ci zaufa, bowiem ciała jej dotknąłeś myślą swą. + W swe miejsce nad rzeką zabiera cię Zuzanna, + Możesz słuchać plusku łodzi, możesz zostać z nią do rana. + Wiesz, że trochę źle ma w głowie -- lecz dlatego chcesz być tutaj, + Proponuje ci herbatę oraz chińskie pomarańcze + I gdy właśnie chcesz powiedzieć, że nie możesz jej pokochać, + Zmienia twoją długość fali i pozwala mówić rzece, że się zawsze w niej kochałeś. + I już chcesz z nią powędrować, powędrować chcesz na oślep, + Wiesz, że ona ci zaufa, bowiem ciała jej dotknąłeś myślą swą. - Pan Jezus był żeglarzem, gdy przechadzał się po wodzie, - Spędził lata na czuwaniu w swej samotnej wieży z drewna, - Gdy upewnił się, że tylko mogą widzieć go tonący, - Rzekł -- Żeglować będą ludzie aż ich morze wyswobodzi... - Lecz zwątpił zanim jeszcze otworzyły się niebiosa, - Zdradzony, niemal ludzki, jak kamień zapadł wtedy w mądrość swą. - I już chcesz z nim powędrować, powędrować chcesz na oślep, - Myślisz -- chyba mu zaufam, bowiem dotknął twego ciała myślą swą. + Pan Jezus był żeglarzem, gdy przechadzał się po wodzie, + Spędził lata na czuwaniu w swej samotnej wieży z drewna, + Gdy upewnił się, że tylko mogą widzieć go tonący, + Rzekł -- Żeglować będą ludzie aż ich morze wyswobodzi... + Lecz zwątpił zanim jeszcze otworzyły się niebiosa, + Zdradzony, niemal ludzki, jak kamień zapadł wtedy w mądrość swą. + I już chcesz z nim powędrować, powędrować chcesz na oślep, + Myślisz -- chyba mu zaufam, bowiem dotknął twego ciała myślą swą. - Dziś Zuzanna za rękę prowadzi cię nad rzekę, - Cała w piórach i w łachmanach z jakiejś Akcji Dobroczynnej, - Słońce kapie złotym miodem na Madonnę tej Przystani, - Są tu dzieci o poranku, bohaterzy w wodorostach, - Wszyscy dążą do miłości i podążać będą zawsze, - Gdy Zuzanna trzyma lustro. - I już chcesz z nią powędrować, powędrować chcesz na oślep, - Wiesz, że można jej zaufać, bo dotknęła twego ciała myślą swą. + Dziś Zuzanna za rękę prowadzi cię nad rzekę, + Cała w piórach i w łachmanach z jakiejś Akcji Dobroczynnej, + Słońce kapie złotym miodem na Madonnę tej Przystani, + Są tu dzieci o poranku, bohaterzy w wodorostach, + Wszyscy dążą do miłości i podążać będą zawsze, + Gdy Zuzanna trzyma lustro. + I już chcesz z nią powędrować, powędrować chcesz na oślep, + Wiesz, że można jej zaufać, bo dotknęła twego ciała myślą swą. From e7003539ce697fe5b9025d7789980a3762090d63 Mon Sep 17 00:00:00 2001 From: Katarzyna Tabor Date: Tue, 20 Sep 2022 23:26:32 +0200 Subject: [PATCH 003/664] Drobne poprawki w kilku piosenkach --- ...ada_o_dziewczynie_co_pila_gorace_mleko.xml | 51 +++++++++---------- songs/Czlowiek_bez_butow.xml | 6 +-- songs/Dom_w_gorach.xml | 2 +- songs/Poeta_i_pan_Strauss.xml | 2 +- songs/Poloniny_niebieskie.xml | 8 +-- 5 files changed, 34 insertions(+), 35 deletions(-) diff --git a/songs/Ballada_o_dziewczynie_co_pila_gorace_mleko.xml b/songs/Ballada_o_dziewczynie_co_pila_gorace_mleko.xml index 2d7265a9..afbe7f5c 100644 --- a/songs/Ballada_o_dziewczynie_co_pila_gorace_mleko.xml +++ b/songs/Ballada_o_dziewczynie_co_pila_gorace_mleko.xml @@ -1,37 +1,36 @@ - Autor Nieznany + Agnieszka Osiecka + Katarzyna Sobolewska + Andrzej Poniedzielski - C e Sa male stacje wielkich kolei - F C Nieznane jak obce imiona - F C Male stacje wielkich kolei - F G Jakis napis i lampa zielona - C e Na takiej stacji dawno juz temu - F C Z daleka jadac daleko - F C Widzialem dziewczyne w niebieskim szaliku - G C Jak pila gorace mleko - F C Teraz tamtedy nigdy nie jezdze - F C Bo mieszkam naprawde daleko + Są małe stacje wielkich kolei, nieznane jak obce imiona + Małe stacje wielkich kolei, jakiś napis i lampa zielona + Na takiej stacji dawno już temu, z daleka jadąc, z daleka + Widziałem dziewczynę w niebieskim szaliku, jak piła gorące mleko - GC Jak pila gorace mleko - F C I nie raz chcialbym aby tu bylo - F C Bo moze to mialoby sens - F C Jak ona smiesznie to mleko pila /x - G C Gapiac sie na mnie spod rzes /2 + Teraz tamtędy już nigdy nie jeżdżę, a miasto moje daleko + Lecz myślę czasem o tamtej dziewczynie, jak piła gorące mleko. + I nieraz chciałbym aby tu była, może to miałoby sens. + + Jak ona śmiesznie to mleko piła, gapiąc się na mnie spod rzęs. + > - C e Mam swoje sprawy inne podroze - F C I nie tamtedy mi droga - F C Lubie ulice wesole i dlugie - F G I kolorowe swiatla na drogach - C e Moze ma chlopca tamta dziewczyna - F C A moze wybrala sie w swiat - F C A moze poprostu moze jest glupia - G C Jak jej 17 lat - F C Z reszta to teraz nie ma znaczenia - F C Bo mieszkam naprawde daleko... + Mam swoje sprawy, inne podróże i nie tamtędy mi droga. + Lubię ulice wesołe i długie i kolorowe światła na rogach. + Może ma chłopca tamta dziewczyna, a może wybrała się w świat. + Albo po prostu może jest głupia jak jej siedemnaście lat. + + + Z resztą to przecież nie ma znaczenia, mieszkam naprawdę daleko. + Lecz myślę czasem o tamtej dziewczynie, jak piła gorące mleko. + I nieraz chciałbym aby tu była, może to miałoby sens. + + Jak ona śmiesznie to mleko piła, gapiąc się na mnie spod rzęs. + diff --git a/songs/Czlowiek_bez_butow.xml b/songs/Czlowiek_bez_butow.xml index 4bb7ffec..3f49751d 100644 --- a/songs/Czlowiek_bez_butow.xml +++ b/songs/Czlowiek_bez_butow.xml @@ -2,9 +2,9 @@ Janusz Kubicki - nie ma oficjalnego wydawnictwa - Trzy dni Tyłem - Trzy dni Tyłem + Nie ma oficjalnego wydawnictwa + Trzy Dni Tyłem + Trzy Dni Tyłem diff --git a/songs/Dom_w_gorach.xml b/songs/Dom_w_gorach.xml index 16406239..38acf3e4 100644 --- a/songs/Dom_w_gorach.xml +++ b/songs/Dom_w_gorach.xml @@ -4,7 +4,7 @@ - + Ewa Gaworska; Wojtek Starck diff --git a/songs/Poeta_i_pan_Strauss.xml b/songs/Poeta_i_pan_Strauss.xml index ea78379d..e6efaa7a 100644 --- a/songs/Poeta_i_pan_Strauss.xml +++ b/songs/Poeta_i_pan_Strauss.xml @@ -39,7 +39,7 @@ Pomyślał stary Strauss Jak to ciężko być dzisiaj - Lirycznym poetą + lyricznym poetą Orkiestra disco gra I nie przebijesz się wierszem I prozą przez beton diff --git a/songs/Poloniny_niebieskie.xml b/songs/Poloniny_niebieskie.xml index 60a40d65..5cf8264f 100644 --- a/songs/Poloniny_niebieskie.xml +++ b/songs/Poloniny_niebieskie.xml @@ -10,13 +10,13 @@ - + Gdy nie zostanie po mnie nic - Oprócz pożółkłych fotografii - Błękitny mnie przywita świt + Oprócz pożółkłych fotografii + Błękitny mnie przywita świt - + W miejscu co nie ma go na mapie From 6561b560b85db0fc4e2ae96ce4ac219b586ef551 Mon Sep 17 00:00:00 2001 From: Katarzyna Tabor Date: Tue, 20 Sep 2022 23:29:14 +0200 Subject: [PATCH 004/664] =?UTF-8?q?Usuni=C4=99cie=20spacji=20na=20ko=C5=84?= =?UTF-8?q?cach=20wierszy=20w=20piosenkach?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- songs/1788.xml | 24 +++---- songs/Bagno.xml | 2 +- songs/Ballada_Wrzesniowa.xml | 20 +++--- songs/Ballada_antysojowa.xml | 2 +- songs/Ballada_o_czesku_piekarzu.xml | 2 +- songs/Beskid.xml | 4 +- songs/Bombonierka.xml | 54 ++++++++-------- songs/Chory_na_wyobraznie.xml | 6 +- songs/Drzewa.xml | 6 +- songs/Fiddlers_Green.xml | 2 +- songs/Gdansk.xml | 4 +- songs/Gloria.xml | 4 +- songs/Kaganek.xml | 2 +- songs/Kim_wlasciwie_bylas.xml | 2 +- songs/Leniwa_niedziela.xml | 16 ++--- songs/List_do_Malego_Ksiecia.xml | 10 +-- songs/Marinette.xml | 2 +- songs/Mister_Stormalong.xml | 8 +-- songs/Muszelki.xml | 28 ++++----- songs/Panna_kminkowa_(2).xml | 6 +- songs/Piechota_do_lata.xml | 36 +++++------ songs/Pisze_historyczna_powiesc.xml | 2 +- songs/Poeta_i_pan_Strauss.xml | 2 +- songs/PtakiPtakom.xml | 22 +++---- songs/Rozstaje.xml | 2 +- songs/Rzeka.xml | 4 +- songs/Slynny_niebieski_prochowiec.xml | 4 +- songs/Smialy_harpunnik.xml | 36 +++++------ songs/Szczescie.xml | 6 +- songs/Tango.xml | 38 ++++++------ songs/Tobie_albo_zawieja_w_Michigan.xml | 6 +- songs/Tolerancja.xml | 2 +- songs/Tyle_mi_zostalo_co_mi_nakapalo.xml | 2 +- songs/Ulice_Londyny.xml | 6 +- songs/W_malinowym_chrusniaku.xml | 4 +- songs/Wania.xml | 2 +- songs/Wedrowka_zycie_jest_czlowieka.xml | 2 +- songs/Zamieszkamy_pod_wspolnym_dachem.xml | 4 +- songs/Zbik.xml | 4 +- songs/Zima.xml | 4 +- songs/Znow_wedrujemy.xml | 2 +- songs/ZwawaPiosenkaOZuczku.xml | 4 +- songs/Zwiewnosc.xml | 4 +- songs/bruces.xml | 16 ++--- songs/dezyderata.xml | 62 +++++++++---------- songs/dla_michasia.xml | 2 +- songs/gormimalo.xml | 22 +++---- songs/kiedy_mowisz.xml | 8 +-- songs/krajkapelna.xml | 2 +- songs/ksiezniczka_i_pirat.xml | 2 +- songs/lumberjack.xml | 14 ++--- songs/moiprzyjaciele.xml | 8 +-- songs/najemnicy.xml | 2 +- songs/nielubie.xml | 2 +- songs/niepatrznato.xml | 26 ++++---- songs/obraciachktorzypytalisie.xml | 2 +- ...tniamruczankaalbospleenkubusiapuchatka.xml | 32 +++++----- songs/piesnxxix.xml | 8 +-- songs/piosenka_o_arbacie.xml | 4 +- songs/pociag.xml | 12 ++-- songs/tropiki.xml | 6 +- songs/wloczedzy.xml | 2 +- songs/zalzabulatemo.xml | 30 ++++----- 63 files changed, 332 insertions(+), 332 deletions(-) diff --git a/songs/1788.xml b/songs/1788.xml index 97216460..b70a3e57 100644 --- a/songs/1788.xml +++ b/songs/1788.xml @@ -9,14 +9,14 @@ - Ta pierwsza morska podróż do Australii! - Łotry przy burtach, prostytutki w kojach - - Wszyscy się bali, łkali i rzygali - W drodze do raju. Przewrotności Twoja - Panie, coś w jeszcze nam nieznanych planach - Miał czarne diabły strzegące wybrzeży - Edenu, który przeznaczyłeś dla nas, - A w który nikt, prawdę mówiąc, nie wierzył! + Ta pierwsza morska podróż do Australii! + Łotry przy burtach, prostytutki w kojach - + Wszyscy się bali, łkali i rzygali + W drodze do raju. Przewrotności Twoja + Panie, coś w jeszcze nam nieznanych planach + Miał czarne diabły strzegące wybrzeży + Edenu, który przeznaczyłeś dla nas, + A w który nikt, prawdę mówiąc, nie wierzył! Czym żeśmy, marni, zasłużyli na to? @@ -69,10 +69,10 @@ Kraj szczodry w zboże, złoto i diamenty. - Łajdacki pomiot, łotrowskie nasienie - Czerpiąc ze spichrza Twoich dóbr wszelakich - - Choć tyle wiemy własnym doświadczeniem: - W nas jest Raj, Piekło - I do obu - szlaki. + Łajdacki pomiot, łotrowskie nasienie + Czerpiąc ze spichrza Twoich dóbr wszelakich - + Choć tyle wiemy własnym doświadczeniem: + W nas jest Raj, Piekło - I do obu - szlaki. diff --git a/songs/Bagno.xml b/songs/Bagno.xml index 958cdc80..595a0e4b 100644 --- a/songs/Bagno.xml +++ b/songs/Bagno.xml @@ -9,7 +9,7 @@ - Wujek Euzebiusz dał mi kilka cegieł + Wujek Euzebiusz dał mi kilka cegieł Żebym zbudował zamek bo miałem kilka cegieł Które dał mi wujek Euzebiusz Więc zbudowałem zamek na skalistym podłożu diff --git a/songs/Ballada_Wrzesniowa.xml b/songs/Ballada_Wrzesniowa.xml index 542791e8..21d92c7f 100644 --- a/songs/Ballada_Wrzesniowa.xml +++ b/songs/Ballada_Wrzesniowa.xml @@ -9,23 +9,23 @@ - ugośmy na ten dzień czekali - Z nadzieją niecierpliwą w duszy, - Kiedy bez stów Towarzysz Stalin - Na mapie fajką strzałki ruszy. + ugośmy na ten dzień czekali + Z nadzieją niecierpliwą w duszy, + Kiedy bez stów Towarzysz Stalin + Na mapie fajką strzałki ruszy. - Krzyk jeden pomknął wzdłuż granicy, - I zanim zmilkł zagrzmiały działa. - To w bój z szybkością nawałnicy + Krzyk jeden pomknął wzdłuż granicy, + I zanim zmilkł zagrzmiały działa. + To w bój z szybkością nawałnicy Armia Czerwona wyruszała. - A cóż to za historia nowa? - Zdumiona spyta Europa, + A cóż to za historia nowa? + Zdumiona spyta Europa, - Jak to? To chłopcy Mołotowa + Jak to? To chłopcy Mołotowa I sojusznicy Ribbentroppa. diff --git a/songs/Ballada_antysojowa.xml b/songs/Ballada_antysojowa.xml index 2b1d6b51..23b2c890 100644 --- a/songs/Ballada_antysojowa.xml +++ b/songs/Ballada_antysojowa.xml @@ -29,7 +29,7 @@ Wprost w głowie się kręci Vivat mięso! - yną przeze mnie kęsy + yną przeze mnie kęsy Rozkoszy dodając Wielka jest kiełbasy moc O jej smaku nie wspominając diff --git a/songs/Ballada_o_czesku_piekarzu.xml b/songs/Ballada_o_czesku_piekarzu.xml index e011b3e8..dd7c45ed 100644 --- a/songs/Ballada_o_czesku_piekarzu.xml +++ b/songs/Ballada_o_czesku_piekarzu.xml @@ -3,7 +3,7 @@ Wolna Grupa Bukowina - + Chleba takiego jak ten od Cześka diff --git a/songs/Beskid.xml b/songs/Beskid.xml index 67aed635..f6873669 100644 --- a/songs/Beskid.xml +++ b/songs/Beskid.xml @@ -5,7 +5,7 @@ A w Beskidzie rozzłocony buk A w Beskidzie rozzłocony buk - Będę chodził bukowiną z dłutem w ręku + Będę chodził bukowiną z dłutem w ręku By w dziewczęcych twarzach uśmiech rzeźbić Niech nie płaczą j Niech się cieszą po kapliczkach moich dróg. @@ -30,7 +30,7 @@ A w Beskidzie zamyślony czas Będę chodził gór poddaszem By zerwanych marzeń struny - Przewiązywać w niespokojne dłonie drzew + Przewiązywać w niespokojne dłonie drzew Niech mi grają na rozstajach moich dróg. diff --git a/songs/Bombonierka.xml b/songs/Bombonierka.xml index 86fccca7..16c244cf 100644 --- a/songs/Bombonierka.xml +++ b/songs/Bombonierka.xml @@ -14,42 +14,42 @@ Śmiejesz się - Dzień pogania noc świtem purpurowym - Ty jak czarny kot kończysz łowy - Nic mi do twych zdrad, chociaż dziwi, że + Dzień pogania noc świtem purpurowym + Ty jak czarny kot kończysz łowy + Nic mi do twych zdrad, chociaż dziwi, że Ich gorzkawy smak ciągle kusi cię - A gdy patrzę tak, śmiejesz się: - Nic mi do twych zdrad - Ale wiem + A gdy patrzę tak, śmiejesz się: + Nic mi do twych zdrad + Ale wiem - Choć papierków po cukierkach - Tu i ówdzie ślad - Marzy ci się bombonierka - Taka jak ja - Niby nic, a jednak zerkasz - Jak się dostać do pudełka - Odkryć tajemnicę słodką - Delikatnie zdjąć złotko + Choć papierków po cukierkach + Tu i ówdzie ślad + Marzy ci się bombonierka + Taka jak ja + Niby nic, a jednak zerkasz + Jak się dostać do pudełka + Odkryć tajemnicę słodką + Delikatnie zdjąć złotko - Choć papierków po cukierkach - Ślad i tam i tu - Marzy ci się bombonierka - Istny cud - Żeby tak nasycić się - Ale wciąż w zapasie mieć - I rozgryzać tę zagadkę - Tę zagadkę - Po ostatnią czekoladkę + Choć papierków po cukierkach + Ślad i tam i tu + Marzy ci się bombonierka + Istny cud + Żeby tak nasycić się + Ale wciąż w zapasie mieć + I rozgryzać tę zagadkę + Tę zagadkę + Po ostatnią czekoladkę - Noc pogania dzień szafirowym zmierzchem - Tobie kocich gier nie dość jeszcze - Nic mi do twych zdrad, chociaż dziwi, że - Ostry kolor kłamstw nie razi cię + Noc pogania dzień szafirowym zmierzchem + Tobie kocich gier nie dość jeszcze + Nic mi do twych zdrad, chociaż dziwi, że + Ostry kolor kłamstw nie razi cię diff --git a/songs/Chory_na_wyobraznie.xml b/songs/Chory_na_wyobraznie.xml index a77328ff..c1a987c5 100644 --- a/songs/Chory_na_wyobraznie.xml +++ b/songs/Chory_na_wyobraznie.xml @@ -19,7 +19,7 @@ - + Dawno już w mieście drwił z niego każdy @@ -50,7 +50,7 @@ - + Gdy malował świat milkł jak zaklęty @@ -74,7 +74,7 @@ - + diff --git a/songs/Drzewa.xml b/songs/Drzewa.xml index aea9b198..64887ffc 100644 --- a/songs/Drzewa.xml +++ b/songs/Drzewa.xml @@ -11,15 +11,15 @@ Dany jest drzewom taki sen, Co korę w puchu mgieł zanurza, - Przegina wiatry zgiętym pniem + Przegina wiatry zgiętym pniem I twardnieć każe w letnich burzach. Dlatego człowiek marszcząc brwi, Powalił pień żelaza błyskiem, - By pierworodny jego syn - Z drzewa wyciętą miał kołyskę. + By pierworodny jego syn + Z drzewa wyciętą miał kołyskę. diff --git a/songs/Fiddlers_Green.xml b/songs/Fiddlers_Green.xml index e2c25bfe..eaed127f 100644 --- a/songs/Fiddlers_Green.xml +++ b/songs/Fiddlers_Green.xml @@ -16,7 +16,7 @@ - + Stary port się powoli układał do snu diff --git a/songs/Gdansk.xml b/songs/Gdansk.xml index 10a18497..7761565d 100644 --- a/songs/Gdansk.xml +++ b/songs/Gdansk.xml @@ -31,7 +31,7 @@ Na rękawie złoty galon Duże piwko panno Helu Jutro w rejs wyjdziemy w morze - To przywiozę Heli z Helu + To przywiozę Heli z Helu I bursztyny i węgorze @@ -42,7 +42,7 @@ Stary wilku zatokowy W Gdańsku mewy, wiatr i gotyk Neptun siusia w swoją studnię - Pan kapitan białej floty + Pan kapitan białej floty Ma dziś wolne popołudnie diff --git a/songs/Gloria.xml b/songs/Gloria.xml index 965277c6..5cc9ab66 100644 --- a/songs/Gloria.xml +++ b/songs/Gloria.xml @@ -22,7 +22,7 @@ - + Chwała najsampierw komu, komu gloria @@ -78,7 +78,7 @@ - + Z wiatrem pochwalonym teraz pędzimy społem diff --git a/songs/Kaganek.xml b/songs/Kaganek.xml index a8073cdd..bfe29a79 100644 --- a/songs/Kaganek.xml +++ b/songs/Kaganek.xml @@ -26,7 +26,7 @@ Może kiedy i ty stąd wyruszysz Przyjdzie nocą wędrować przez trakt Jakoś raźniej ci będzie na duszy - Gdy światełko zobaczysz wśród chat + Gdy światełko zobaczysz wśród chat Wśród chat, wśród chat... diff --git a/songs/Kim_wlasciwie_bylas.xml b/songs/Kim_wlasciwie_bylas.xml index 35430583..c6568b44 100644 --- a/songs/Kim_wlasciwie_bylas.xml +++ b/songs/Kim_wlasciwie_bylas.xml @@ -11,7 +11,7 @@ - Lalalala lalalalala, lalalala lalalala, lalala, lalala, lalala + Lalalala lalalalala, lalalala lalalala, lalala, lalala, lalala diff --git a/songs/Leniwa_niedziela.xml b/songs/Leniwa_niedziela.xml index 8703bafc..45fa2848 100644 --- a/songs/Leniwa_niedziela.xml +++ b/songs/Leniwa_niedziela.xml @@ -22,7 +22,7 @@ - + Asfalt pachnie świeżym deszczem @@ -38,7 +38,7 @@ - + Pani lekkich obyczajów @@ -54,7 +54,7 @@ - + Docent z chłopskim pochodzeniem @@ -70,7 +70,7 @@ - + Dyplomatę sen rozbudził @@ -86,7 +86,7 @@ - + A chłopaki z braku zdarzeń @@ -102,7 +102,7 @@ - + A po drodze mkną górnicy @@ -118,7 +118,7 @@ - + A na stacji benzynowej @@ -134,7 +134,7 @@ - + diff --git a/songs/List_do_Malego_Ksiecia.xml b/songs/List_do_Malego_Ksiecia.xml index 8aa314e3..09d0364c 100644 --- a/songs/List_do_Malego_Ksiecia.xml +++ b/songs/List_do_Malego_Ksiecia.xml @@ -25,7 +25,7 @@ - + Zagubieni Książę jesteśmy @@ -35,7 +35,7 @@ - + Niespokojnie Książe żyjemy @@ -45,7 +45,7 @@ - + Nasze wieczne ucieczki wycieczki @@ -70,7 +70,7 @@ - + Pod gwiazdami Książe jesteśmy @@ -95,7 +95,7 @@ - + diff --git a/songs/Marinette.xml b/songs/Marinette.xml index ff8a1c16..8708f1e9 100644 --- a/songs/Marinette.xml +++ b/songs/Marinette.xml @@ -29,7 +29,7 @@ - + Poszedłem potem do niej diff --git a/songs/Mister_Stormalong.xml b/songs/Mister_Stormalong.xml index fde25b3e..941bc661 100644 --- a/songs/Mister_Stormalong.xml +++ b/songs/Mister_Stormalong.xml @@ -14,7 +14,7 @@ - + Nie żyje stary Stormy już @@ -26,7 +26,7 @@ - + Najlepszy ze wszystkich szyprów był @@ -87,7 +87,7 @@ - + Hej umarł Stormy dzielny chwat @@ -106,7 +106,7 @@ - + diff --git a/songs/Muszelki.xml b/songs/Muszelki.xml index f85fc269..4edebc47 100644 --- a/songs/Muszelki.xml +++ b/songs/Muszelki.xml @@ -9,55 +9,55 @@ - Zrywamy się przed świtem, nie myśląc o śniadaniu - Milczący, źli a przy tym zupełnie niewyspani. - Okrągły księżyc drwi z nas jak puste dno butelki; + Zrywamy się przed świtem, nie myśląc o śniadaniu + Milczący, źli a przy tym zupełnie niewyspani. + Okrągły księżyc drwi z nas jak puste dno butelki; Lecz nam to nie pierwszyzna, idziemy po muszelki. - Szlak wiedzie brzegiem morza na zachód - w kołdrze mroku, + Szlak wiedzie brzegiem morza na zachód - w kołdrze mroku, Więc z tyłu pełznie zorza cierpliwie krok po kroku. - Na piasku rosną cienie jak rozciągnięte szelki - + Na piasku rosną cienie jak rozciągnięte szelki - Idziemy niestrudzenie, idziemy po muszelki. - Muszelki - rzecz nietrwała, po prawdzie nic nie warta, + Muszelki - rzecz nietrwała, po prawdzie nic nie warta, Ale córeczka chciała - córeczka jest uparta. - Z fal słońce się wychyla jak złota pierś modelki; + Z fal słońce się wychyla jak złota pierś modelki; Umyka nam ta chwila - idziemy po muszelki. - Palców u stóp maleństwa kaleczą się boleśnie. + Palców u stóp maleństwa kaleczą się boleśnie. Co robić? Na przekleństwa za późno - i za wcześnie - - Na wątpliwości antrakt, na cierpień bagatelki, + Na wątpliwości antrakt, na cierpień bagatelki, Bo zgrzyta zębów mantra - idziemy po muszelki. - Pierś słońca już w zenicie wspiera się nam na plecach + Pierś słońca już w zenicie wspiera się nam na plecach Potężnym żarem życia jak samo serce pieca. - Pot ciurka strumykami, dziurawią piach kropelki; + Pot ciurka strumykami, dziurawią piach kropelki; Wyschnięci na pergamin idziemy po muszelki. - W krąg wodorostów zieleń piętrzy się drwiącą warstwą + W krąg wodorostów zieleń piętrzy się drwiącą warstwą I cuchnie - a muszelek? Muszelek - na lekarstwo! - Nie w naszej widać mocy odnaleźć skarb tak wielki! + Nie w naszej widać mocy odnaleźć skarb tak wielki! Na skórze, w chłodzie nocy pęcznieją nam bąbelki. - Lecz córcia łapką gładką pieczeń skwierczącą klepie: + Lecz córcia łapką gładką pieczeń skwierczącą klepie: - Nie przejmuj się tak, Tatku! Jutro ci pójdzie lepiej! Los żaden nas nie zmoże, choć przeszkód pełen wszelkich! diff --git a/songs/Panna_kminkowa_(2).xml b/songs/Panna_kminkowa_(2).xml index c51bd7cb..092d2718 100644 --- a/songs/Panna_kminkowa_(2).xml +++ b/songs/Panna_kminkowa_(2).xml @@ -22,7 +22,7 @@ - + Obróciła się wiosna na pięcie @@ -84,7 +84,7 @@ - + I gryzie kminek czarny przecinek dnia @@ -93,7 +93,7 @@ - + diff --git a/songs/Piechota_do_lata.xml b/songs/Piechota_do_lata.xml index de425c61..101ef5a8 100644 --- a/songs/Piechota_do_lata.xml +++ b/songs/Piechota_do_lata.xml @@ -9,41 +9,41 @@ - Znów przyjdzie maj, a z majem bzy - I czekać mam na lepsze dni + Znów przyjdzie maj, a z majem bzy + I czekać mam na lepsze dni Znów przyjdzie mi nosić przykrótkie sny I do lata, do lata, do lata, piechotą będę szła - Ah, ah, ah, ah, yeah, yeah, yeah, uh, uh, uh + Ah, ah, ah, ah, yeah, yeah, yeah, uh, uh, uh - Znów kupisz mi coś na imieniny - Mmmm, ja to wiem i czuję, że - Znów przyjdzie mi nosić przykrótkie sny + Znów kupisz mi coś na imieniny + Mmmm, ja to wiem i czuję, że + Znów przyjdzie mi nosić przykrótkie sny I do lata, do lata, do lata, piechotą będę szła - Ah, ah, ah, ah, yeah, yeah, yeah, uh, uh, uh + Ah, ah, ah, ah, yeah, yeah, yeah, uh, uh, uh Przykrótkie sny nie w porę - Zbyt lekko się ubiorę - Noc długa, świt w szronach - I wiosna spóźniona - I twoje słowa zimne, - Że nie ma drogi innej - Do lata, do lata, do lata tak dłuży się czas - Gdybyś tylko chciał! + Zbyt lekko się ubiorę + Noc długa, świt w szronach + I wiosna spóźniona + I twoje słowa zimne, + Że nie ma drogi innej + Do lata, do lata, do lata tak dłuży się czas + Gdybyś tylko chciał! - To było by to lato j - I słońce i szaleństwo burz - Lecz dajesz mi tylko przykrótkie sny + To było by to lato j + I słońce i szaleństwo burz + Lecz dajesz mi tylko przykrótkie sny Więc do lata, do lata, do lata, piechotą będę szła - Ah, ah, ah, ah, yeah, yeah, yeah, uh, uh, uh + Ah, ah, ah, ah, yeah, yeah, yeah, uh, uh, uh diff --git a/songs/Pisze_historyczna_powiesc.xml b/songs/Pisze_historyczna_powiesc.xml index 734a919c..5b02d975 100644 --- a/songs/Pisze_historyczna_powiesc.xml +++ b/songs/Pisze_historyczna_powiesc.xml @@ -27,7 +27,7 @@ Ale nie chcę schlebiać Wam. Takie są natury prawa, Zmieniać ich nie mamy prawa, - Czemu piszę nie wiem sam. + Czemu piszę nie wiem sam. Już przede mną kartek sto, diff --git a/songs/Poeta_i_pan_Strauss.xml b/songs/Poeta_i_pan_Strauss.xml index e6efaa7a..8db7e496 100644 --- a/songs/Poeta_i_pan_Strauss.xml +++ b/songs/Poeta_i_pan_Strauss.xml @@ -97,7 +97,7 @@ - + Karnawał skończył się diff --git a/songs/PtakiPtakom.xml b/songs/PtakiPtakom.xml index 8ed00c36..3cb2a5ea 100644 --- a/songs/PtakiPtakom.xml +++ b/songs/PtakiPtakom.xml @@ -9,42 +9,42 @@ - Wybiegani, wysłuchani, wybawieni - Siądźcie wkoło do ogniska mego stóp - Chcę powiedzieć wam o tamtej złej jesieni + Wybiegani, wysłuchani, wybawieni + Siądźcie wkoło do ogniska mego stóp + Chcę powiedzieć wam o tamtej złej jesieni Z której przyszedł ten harcerski leśny grób Myśli mieli rozczochrane jak wy dzisiaj I mundury te dzisiejsze mieli też Lecz stanęli w pogotowiu, gdy padł wystrzał - Aby bronić tej największej z wielkich wież + Aby bronić tej największej z wielkich wież - Harcerze, którym słowa na ustach zamierały - Harcerki, którym uśmiech zabrał wojny czas - Jak ptaki po przestworzach losu szybowały - I padały jak puszczony bez nadziei głaz + Harcerze, którym słowa na ustach zamierały + Harcerki, którym uśmiech zabrał wojny czas + Jak ptaki po przestworzach losu szybowały + I padały jak puszczony bez nadziei głaz Mogli odejść, mogli uciec w swoje jutro Nikt by słowa im powiedzieć nie był śmiał Lecz zostali, chociaż było im tak trudno - Gdy za strzałem padał ciągle drugi strzał + Gdy za strzałem padał ciągle drugi strzał To dla Polski tak czuwali dniem i nocą Polski sztandar osłaniali piersią swą I odeszli, kiedy wzięto ich przemocą - Aby w ziemię wtopić całą duszę swą + Aby w ziemię wtopić całą duszę swą Niech im pokłon odda nasze pokolenie Tym, co umrzeć tam umieli mimo snów I gdy przyjdą, by podeptać nam marzenia - Polski sztandar my osłońmy piersią znów + Polski sztandar my osłońmy piersią znów diff --git a/songs/Rozstaje.xml b/songs/Rozstaje.xml index bb283a3f..e2bcf814 100644 --- a/songs/Rozstaje.xml +++ b/songs/Rozstaje.xml @@ -24,7 +24,7 @@ Wychodzę na rozstaje, w oniemieniu trwam Jak trudno znaleźć w sobie kształt tego kim być mam Tak ciężko słuchać siebie, tego kim być chce - Tak głośno strach mi szepce, że mogę zboczyć źle + Tak głośno strach mi szepce, że mogę zboczyć źle diff --git a/songs/Rzeka.xml b/songs/Rzeka.xml index 53782702..39a36363 100644 --- a/songs/Rzeka.xml +++ b/songs/Rzeka.xml @@ -3,7 +3,7 @@ Wolna Grupa Bukowina - + Wsłuchany w twą cichą piosenkę Wyszedłem na brzeg pierwszy raz @@ -15,7 +15,7 @@ Wiedziałaś gdzie stopy znużone prowadzić Gdy sił już było brak. Brak... - + Wieże miast, łuny świateł Ich oczy zszarzałe nie raz diff --git a/songs/Slynny_niebieski_prochowiec.xml b/songs/Slynny_niebieski_prochowiec.xml index f245c7e7..7dcdf2b6 100644 --- a/songs/Slynny_niebieski_prochowiec.xml +++ b/songs/Slynny_niebieski_prochowiec.xml @@ -61,7 +61,7 @@ - + Cóż mam ci powiedzieć @@ -98,7 +98,7 @@ - + Z poważaniem diff --git a/songs/Smialy_harpunnik.xml b/songs/Smialy_harpunnik.xml index ca4b8614..370cc7f4 100644 --- a/songs/Smialy_harpunnik.xml +++ b/songs/Smialy_harpunnik.xml @@ -9,52 +9,52 @@ The Bold Harpooner - Nasz "Diament" prawie gotów już, w cieśninach nie ma kry. - Na kei piękne panny stoją, w oczach błyszczą łzy. - Kapitan w niebo wlepia wzrok, ruszamy lada dzień, - yniemy tam, gdzie słońca blask nie mąci nocy cień. + Nasz "Diament" prawie gotów już, w cieśninach nie ma kry. + Na kei piękne panny stoją, w oczach błyszczą łzy. + Kapitan w niebo wlepia wzrok, ruszamy lada dzień, + yniemy tam, gdzie słońca blask nie mąci nocy cień. - A więc krzycz: O-ho, ho! Odwagę w sercu miej! + A więc krzycz: O-ho, ho! Odwagę w sercu miej! Wielorybów cielska groźne są, lecz dostaniemy je! - Hej, panno, powiedz po co łzy? Nic nie zatrzyma mnie, - Bo prędzej w lodach kwiat zakwitnie, niż wycofam się. - No, nie płacz, mała, wrócę tu, nasz los nie taki zły, - Bo da dukatów wór za tran i wielorybie kły. + Hej, panno, powiedz po co łzy? Nic nie zatrzyma mnie, + Bo prędzej w lodach kwiat zakwitnie, niż wycofam się. + No, nie płacz, mała, wrócę tu, nasz los nie taki zły, + Bo da dukatów wór za tran i wielorybie kły. - A więc krzycz: O-ho, ho! Odwagę w sercu miej! + A więc krzycz: O-ho, ho! Odwagę w sercu miej! Wielorybów cielska groźne są, lecz dostaniemy je! - Na decku Stary wąchał wiatr, lunetę w ręku miał. - Na łodziach, co zwisały już z harpunem każdy stał. - I dmucha tu, i dmucha tam! Ogromne stado wkrąg. - Harpuny, wiosła, liny brać! I ciągaj, brachu, ciąg! + Na decku Stary wąchał wiatr, lunetę w ręku miał. + Na łodziach, co zwisały już z harpunem każdy stał. + I dmucha tu, i dmucha tam! Ogromne stado wkrąg. + Harpuny, wiosła, liny brać! I ciągaj, brachu, ciąg! - A więc krzycz: O-ho, ho! Odwagę w sercu miej! + A więc krzycz: O-ho, ho! Odwagę w sercu miej! Wielorybów cielska groźne są, lecz dostaniemy je! - I dla wieloryba już ostatni to dzień, - Bo śmiały harpunnik uderza weń! + I dla wieloryba już ostatni to dzień, + Bo śmiały harpunnik uderza weń! - A więc krzycz: O-ho, ho! Odwagę w sercu miej! + A więc krzycz: O-ho, ho! Odwagę w sercu miej! Wielorybów cielska groźne są, lecz dostaniemy je! diff --git a/songs/Szczescie.xml b/songs/Szczescie.xml index 8846da41..903f89e0 100644 --- a/songs/Szczescie.xml +++ b/songs/Szczescie.xml @@ -32,7 +32,7 @@ - + Coś srebrnego dzieje się w chmur dali @@ -70,7 +70,7 @@ - + Czemóż ono w mroku szuka treści @@ -102,7 +102,7 @@ - + diff --git a/songs/Tango.xml b/songs/Tango.xml index 7ea7d3ee..29dc5acc 100644 --- a/songs/Tango.xml +++ b/songs/Tango.xml @@ -9,29 +9,29 @@ - Było ciemno, więc niewiele sam widziałem + Było ciemno, więc niewiele sam widziałem i pamiętam też niewiele - Było ciemno, wiem, że z pochyloną głową stałem + Było ciemno, wiem, że z pochyloną głową stałem tak, jak stoi się w kościele - A więc: stałem, nie widziałem, było ciemno, + A więc: stałem, nie widziałem, było ciemno, lecz słyszałem wciąż Ten głos, ten głos, ten głos - Podejdź bliżej, więc podszedłem jak skruszony obywatel + Podejdź bliżej, więc podszedłem jak skruszony obywatel do przedstawiciela władzy - Podejdź bliżej, już wiedziałem że ucieczka błyskawiczna + Podejdź bliżej, już wiedziałem że ucieczka błyskawiczna tu niczemu nie zaradzi - Więc poszedłem, posłuchałem, było ciemno, + Więc poszedłem, posłuchałem, było ciemno, wciąż myślałem czyj Ten głos, ten głos, ten głos - To nie wróg był, bo głos cichy i subtelny + To nie wróg był, bo głos cichy i subtelny ale polski i nieskazitelny - To nie Bóg był, ten by zaraz mnie zapytał + To nie Bóg był, ten by zaraz mnie zapytał czy mój światopogląd celny - Więc to nie był wróg na pewno, bo nad głową + Więc to nie był wróg na pewno, bo nad głową tuż nade mną usłyszałem Ten głos, ten głos, ten głos @@ -44,28 +44,28 @@ Twój kraj szczęśliwy - Było ciemno, więc nie mogłem stwierdzić komu - pomyliły się epoki lub stulecia - Było ciemno, może to Mickiewicz jaki - bo tak zgrabnie romantyczną wiarę krzesał - Trochę niezorientowany, bo w tym kraju tak kochanym + Było ciemno, więc nie mogłem stwierdzić komu + pomyliły się epoki lub stulecia + Było ciemno, może to Mickiewicz jaki + bo tak zgrabnie romantyczną wiarę krzesał + Trochę niezorientowany, bo w tym kraju tak kochanym dawno nie był już widziany Może Norwid, bo coś plótł, że łza gdzieś znad planety spada i groby przecieka - Ale skąd by, skąd by wiedział, że na jego słowa + Ale skąd by, skąd by wiedział, że na jego słowa ktoś tu jeszcze może czekać - Teraz w m odzie nie Norwidy, filozofy, okryjbidy, + Teraz w m odzie nie Norwidy, filozofy, okryjbidy, więc czyj Ten głos, ten głos, ten głos - Było ciemno, więc sam nie wiem, jak do domu + Było ciemno, więc sam nie wiem, jak do domu wprost doszedłem i do siebie - Było ciemno, a ja czułem się jak w niebie, + Było ciemno, a ja czułem się jak w niebie, choć dlaczego nie wiem, nie wiem - Z pochyloną głową stałem, wierzcie: ja nie zwariowałem, + Z pochyloną głową stałem, wierzcie: ja nie zwariowałem, lecz jak dziecko powtarzałem Na głos, na głos, na głos diff --git a/songs/Tobie_albo_zawieja_w_Michigan.xml b/songs/Tobie_albo_zawieja_w_Michigan.xml index 769cc71c..83bd2e41 100644 --- a/songs/Tobie_albo_zawieja_w_Michigan.xml +++ b/songs/Tobie_albo_zawieja_w_Michigan.xml @@ -26,7 +26,7 @@ - + Zawieja w Michigan @@ -60,7 +60,7 @@ - + Miłości nasze tam @@ -93,7 +93,7 @@ - + diff --git a/songs/Tolerancja.xml b/songs/Tolerancja.xml index 8ba93528..fafda00b 100644 --- a/songs/Tolerancja.xml +++ b/songs/Tolerancja.xml @@ -18,7 +18,7 @@ - + Dlaczego nie mówimy diff --git a/songs/Tyle_mi_zostalo_co_mi_nakapalo.xml b/songs/Tyle_mi_zostalo_co_mi_nakapalo.xml index 4623b2cf..a2e52d28 100644 --- a/songs/Tyle_mi_zostalo_co_mi_nakapalo.xml +++ b/songs/Tyle_mi_zostalo_co_mi_nakapalo.xml @@ -74,7 +74,7 @@ - + diff --git a/songs/Ulice_Londyny.xml b/songs/Ulice_Londyny.xml index 7cb8bb01..a87720ef 100644 --- a/songs/Ulice_Londyny.xml +++ b/songs/Ulice_Londyny.xml @@ -20,11 +20,11 @@ - Więc jak możesz mówić, że jesteś sam, + Więc jak możesz mówić, że jesteś sam, - Że dla ciebie słońce nie świeci już. + Że dla ciebie słońce nie świeci już. - Daj mi swą dłoń, a pokażę ci Londyn + Daj mi swą dłoń, a pokażę ci Londyn I może wtedy zmienisz swoje zdanie. diff --git a/songs/W_malinowym_chrusniaku.xml b/songs/W_malinowym_chrusniaku.xml index 32009d3e..0d62c3b3 100644 --- a/songs/W_malinowym_chrusniaku.xml +++ b/songs/W_malinowym_chrusniaku.xml @@ -26,7 +26,7 @@ - + W malinowym chruśniaku, przed ciekawym wzrokiem @@ -70,7 +70,7 @@ - + I nie wiem jak się stało, w którym okamgnieniu, diff --git a/songs/Wania.xml b/songs/Wania.xml index 67e67b3c..842d89cf 100644 --- a/songs/Wania.xml +++ b/songs/Wania.xml @@ -24,7 +24,7 @@ Gdy w pierwszym geście powitania Nad głową wzniosła białą dłoń, Wciągnęło Wanię pożądanie - Bez reszty w swą przepastną toń. + Bez reszty w swą przepastną toń. Marusię swą porzucił najpierw, diff --git a/songs/Wedrowka_zycie_jest_czlowieka.xml b/songs/Wedrowka_zycie_jest_czlowieka.xml index a81d293d..fcfe9426 100644 --- a/songs/Wedrowka_zycie_jest_czlowieka.xml +++ b/songs/Wedrowka_zycie_jest_czlowieka.xml @@ -12,7 +12,7 @@ - + A, a, a... diff --git a/songs/Zamieszkamy_pod_wspolnym_dachem.xml b/songs/Zamieszkamy_pod_wspolnym_dachem.xml index 3a837709..b62f5431 100644 --- a/songs/Zamieszkamy_pod_wspolnym_dachem.xml +++ b/songs/Zamieszkamy_pod_wspolnym_dachem.xml @@ -14,7 +14,7 @@ - + Zamieszkamy pod wspólnym dachem @@ -47,7 +47,7 @@ - + diff --git a/songs/Zbik.xml b/songs/Zbik.xml index 719aea16..83986a4f 100644 --- a/songs/Zbik.xml +++ b/songs/Zbik.xml @@ -16,7 +16,7 @@ Każdy tu sie dobrze czuje Jeśli chłop jak ćwik. - Reguł trzy obowiązuje - + Reguł trzy obowiązuje - Stosuj je - toś „Żbik”. @@ -29,7 +29,7 @@ Lecz to wszystko nie jest ważne. - Każdy z nas to wie - + Każdy z nas to wie - Kto nie w „Żbiku” na pociechę Niechaj śpi i je. diff --git a/songs/Zima.xml b/songs/Zima.xml index d7abcc15..8845dd2f 100644 --- a/songs/Zima.xml +++ b/songs/Zima.xml @@ -41,9 +41,9 @@ Wyłoni z chłodu chwile te - Jak strumień płynął śpiew + Jak strumień płynął śpiew I jej niewinny śmiech - A ich oczy po niebie + A ich oczy po niebie Szukając wciąż siebie diff --git a/songs/Znow_wedrujemy.xml b/songs/Znow_wedrujemy.xml index 06a428a3..044a1a9f 100644 --- a/songs/Znow_wedrujemy.xml +++ b/songs/Znow_wedrujemy.xml @@ -52,7 +52,7 @@ - + diff --git a/songs/ZwawaPiosenkaOZuczku.xml b/songs/ZwawaPiosenkaOZuczku.xml index 387cd780..40bbf25d 100644 --- a/songs/ZwawaPiosenkaOZuczku.xml +++ b/songs/ZwawaPiosenkaOZuczku.xml @@ -9,10 +9,10 @@ - Gdy żre mnie nostalgia i chandra mnie tłucze + Gdy żre mnie nostalgia i chandra mnie tłucze I nuda się czai przy ścianie sowacza, sowacza - Pojawia się skądyś na stole mym żuczek + Pojawia się skądyś na stole mym żuczek I nóżki swe drobne rozkracza rozkracza, rozkracza diff --git a/songs/Zwiewnosc.xml b/songs/Zwiewnosc.xml index dd939ec3..49256ee3 100644 --- a/songs/Zwiewnosc.xml +++ b/songs/Zwiewnosc.xml @@ -18,7 +18,7 @@ - + Brzęk muchy w pustym dzbanie, co stoi na półce @@ -51,7 +51,7 @@ - + Chód po ziemi człowieka, co na widnokresie, diff --git a/songs/bruces.xml b/songs/bruces.xml index 62ecc79c..1d0a42b8 100644 --- a/songs/bruces.xml +++ b/songs/bruces.xml @@ -12,16 +12,16 @@ Immanuel Kant was a real piss-ant who was very rarely stable. Heideggar, Heideggar was a boozy beggar - who could think you under the table. - David Hume could out-consume - Schoppenhauer and Hegel. - And Whittgenstein was a beery swine - who was just as sloshed as Schlegel. + who could think you under the table. + David Hume could out-consume + Schoppenhauer and Hegel. + And Whittgenstein was a beery swine + who was just as sloshed as Schlegel. - There's nothing Nietzsche couldn't teach 'ya - 'bout the raising of the wrist. - Socrates, himself, was permanently pissed. + There's nothing Nietzsche couldn't teach 'ya + 'bout the raising of the wrist. + Socrates, himself, was permanently pissed. John Stewart Mill, of his own free will diff --git a/songs/dezyderata.xml b/songs/dezyderata.xml index ab938264..83252a83 100644 --- a/songs/dezyderata.xml +++ b/songs/dezyderata.xml @@ -13,59 +13,59 @@ Utwór powstał w 1927 roku. W roku 1933 autor złożył go w formie życzeń na Dezyderata, dezyderata... - Przechodź spokojnie przez hałas i pośpiech - i pamiętaj, jaki spokój można znaleźć w ciszy. - O ile to możliwe bez wyrzekania się siebie + Przechodź spokojnie przez hałas i pośpiech + i pamiętaj, jaki spokój można znaleźć w ciszy. + O ile to możliwe bez wyrzekania się siebie bądź na dobrej stopie ze wszystkimi. - Wypowiadaj swoją prawdę - jasno i spokojnie, - wysłuchaj innych, + Wypowiadaj swoją prawdę + jasno i spokojnie, + wysłuchaj innych, nawet tępych i nieświadomych, - oni też mają - swoja opowieść, + oni też mają + swoja opowieść, oni też mają opowieść. - Unikaj głośnych i napastliwych, + Unikaj głośnych i napastliwych, unikaj głośnych są udręką ducha. - Niech twoje osiągnięcia zarówno jak plany - będą dla Ciebie źródłem radości. - Bądź ostrożny w interesach, bądź ostrożny w interesach, - na świecie bowiem pełno oszustwa. - Bądź sobą, zwłaszcza - nie udawaj uczucia. + Niech twoje osiągnięcia zarówno jak plany + będą dla Ciebie źródłem radości. + Bądź ostrożny w interesach, bądź ostrożny w interesach, + na świecie bowiem pełno oszustwa. + Bądź sobą, zwłaszcza + nie udawaj uczucia. - Ani też nie podchodź - cynicznie do miłości, - bo ona jest + Ani też nie podchodź + cynicznie do miłości, + bo ona jest wieczna jak trawa, bo ona jest wieczna. - Unikaj głośnych i napastliwych, + Unikaj głośnych i napastliwych, unikaj głośnych, są udręką ducha. - Przyjmij spokojnie co ci lata doradzają - z wdziękiem wyrzekając się spraw młodości. - Jesteś dzieckiem wszechświata nie mniej niż drzewa i gwiazdy, + Przyjmij spokojnie co ci lata doradzają + z wdziękiem wyrzekając się spraw młodości. + Jesteś dzieckiem wszechświata nie mniej niż drzewa i gwiazdy, masz prawo być tutaj. - Tak więc żyj w zgodzie z Bogiem, - czymkolwiek On ci się wydaje, - w zgiełkliwym pomieszaniu + Tak więc żyj w zgodzie z Bogiem, + czymkolwiek On ci się wydaje, + w zgiełkliwym pomieszaniu życia zachowaj spokój, - w zgiełkliwym pomieszaniu - życia zachowaj + w zgiełkliwym pomieszaniu + życia zachowaj spokój ze swą duszą. - Przy całej swej złudności, - znoju i rozwianych marzeniach + Przy całej swej złudności, + znoju i rozwianych marzeniach jest to piękny świat, jest to piękny świat. @@ -75,8 +75,8 @@ Utwór powstał w 1927 roku. W roku 1933 autor złożył go w formie życzeń na - Przy całej swej złudności, - znoju i rozwianych marzeniach + Przy całej swej złudności, + znoju i rozwianych marzeniach jest to piękny świat, jest to piękny świat. diff --git a/songs/dla_michasia.xml b/songs/dla_michasia.xml index a173a66e..9f0ed5ab 100644 --- a/songs/dla_michasia.xml +++ b/songs/dla_michasia.xml @@ -35,7 +35,7 @@ Może kiedyś Ci opowiem, Kim są ludzie, a kim człowiek, O jaszczurkach w skórze kobiet, które sączą jad. - Może kiedyś -- a na razie + Może kiedyś -- a na razie Dam Ci plecak pełen marzeń I poniosę na barana przez parszywy świat. diff --git a/songs/gormimalo.xml b/songs/gormimalo.xml index 405efdf0..1ed07493 100644 --- a/songs/gormimalo.xml +++ b/songs/gormimalo.xml @@ -32,19 +32,19 @@ Drogi Mistrzu, Mistrzu mojej drogi, - Mistrzu Jerzy i Mistrzu Wojciechu, + Mistrzu Jerzy i Mistrzu Wojciechu, - Przez was w górach schodziłem nogi, + Przez was w górach schodziłem nogi, Nie mogąc złapać oddechu. - Gór, co stoją nigdy nie dogonię, + Gór, co stoją nigdy nie dogonię, - Znikających punktów na mapie, + Znikających punktów na mapie, - Jakie miejsce nazwę swym domem, + Jakie miejsce nazwę swym domem, - Jakim dotrę do niego szlakiem. + Jakim dotrę do niego szlakiem. @@ -84,17 +84,17 @@ Święty Jerzy, Mikołaju, Michale, - Starodawni gór świętych mieszkańcy, + Starodawni gór świętych mieszkańcy, Imię wasze pieśniami wychwalam. Gór, co stoją nigdy nie dogonię, - Znikających punktów na mapie, + Znikających punktów na mapie, - I chaty, by nazwać ją swym domem, + I chaty, by nazwać ją swym domem, - Do której żaden szlak by nie trafił. + Do której żaden szlak by nie trafił. @@ -108,7 +108,7 @@ Ktoś mnie skazał na wieczną wędrówkę, - Po śladach, które sam zostawiłem. + Po śladach, które sam zostawiłem. Góry, góry i ciągle mi nie dość, diff --git a/songs/kiedy_mowisz.xml b/songs/kiedy_mowisz.xml index 61f1591b..e19c4c0f 100644 --- a/songs/kiedy_mowisz.xml +++ b/songs/kiedy_mowisz.xml @@ -17,13 +17,13 @@ odetchnij popatrz - spadają z obłoków + spadają z obłoków małe wielkie nieszczęścia potrzebne do szczęścia a od zwykłych rzeczy naucz się spokoju - i zapomnij że jesteś gdy mówisz że kochasz - i zapomnij że jesteś gdy mówisz że kochasz + i zapomnij że jesteś gdy mówisz że kochasz + i zapomnij że jesteś gdy mówisz że kochasz kiedy Bóg drzwi zamyka to otwiera okno - więc zapomnij że jesteś gdy mówisz że kochasz + więc zapomnij że jesteś gdy mówisz że kochasz diff --git a/songs/krajkapelna.xml b/songs/krajkapelna.xml index 2f871734..f56e1ac3 100644 --- a/songs/krajkapelna.xml +++ b/songs/krajkapelna.xml @@ -96,7 +96,7 @@ Wieczorną rosą zioła mokre, - Drogą przemknęła trzecia bryka, + Drogą przemknęła trzecia bryka, Purpurą płoną strzechy złote. diff --git a/songs/ksiezniczka_i_pirat.xml b/songs/ksiezniczka_i_pirat.xml index 4ae58b06..c53c072f 100644 --- a/songs/ksiezniczka_i_pirat.xml +++ b/songs/ksiezniczka_i_pirat.xml @@ -11,7 +11,7 @@ Pirat z soli i goryczy W sieci świata się szamocze. - Gwiazdy drżą Księżniczce w oczach, + Gwiazdy drżą Księżniczce w oczach, W pustym zamku sowa krzyczy. On zza mórz przyzywa burze, By mu szlak kreśliły w toni. diff --git a/songs/lumberjack.xml b/songs/lumberjack.xml index 033e3248..df95bd7f 100644 --- a/songs/lumberjack.xml +++ b/songs/lumberjack.xml @@ -9,13 +9,13 @@ - Lumberjack: - I never wanted to be in such a shambledy sketch. - I always wanted to be...a lumberjack! + Lumberjack: + I never wanted to be in such a shambledy sketch. + I always wanted to be...a lumberjack! Leaping from tree to tree... - as they float down the mighty rivers of British Columbia! + as they float down the mighty rivers of British Columbia! The larch...the redwood...the mighty sequioa... - with my best girl by my side! + with my best girl by my side! The giant deadwood, the spruce... the little Californian root tree! We'd sing, sing, sing! @@ -26,7 +26,7 @@ Choir and Girl : - He's a lumberjack and he's OK, + He's a lumberjack and he's OK, he sleeps all night and he works all day. @@ -62,7 +62,7 @@ I sleep all night and I work all day . Choir and Girl : - He's a lumberjack and he's OK, + He's a lumberjack and he's OK, he sleeps all night and he works all day. diff --git a/songs/moiprzyjaciele.xml b/songs/moiprzyjaciele.xml index d09f1016..91087566 100644 --- a/songs/moiprzyjaciele.xml +++ b/songs/moiprzyjaciele.xml @@ -13,7 +13,7 @@ Zabrakło w moim życiu muzyki, Kiedy was nie ma to czas mnie straszy, Że przeminę, że będę chwilą. - Kiedy was nie ma, to jakby niebo + Kiedy was nie ma, to jakby niebo Miało się rozstać na zawsze ze słońcem, Kiedy was nie ma, dość mam wszystkiego I pragnę z stąd na zawsze odejść. @@ -30,9 +30,9 @@ Jak wytłumaczyć, że bez was mnie nie ma? Przytulam do was swoją miłość, I wdzięczność swą w modlitwę zamieniam. - Milion aniołków narysuje - I wszystkie razem postrącam z nieba, - Dom na górze wybuduje + Milion aniołków narysuje + I wszystkie razem postrącam z nieba, + Dom na górze wybuduje I zagram dla was kiedy trzeba. diff --git a/songs/najemnicy.xml b/songs/najemnicy.xml index 2bd1b23c..ab272a1d 100644 --- a/songs/najemnicy.xml +++ b/songs/najemnicy.xml @@ -18,7 +18,7 @@ Czerwone łuny na niebie, czarna dokoła noc I naprzód, wciąż naprzód najemni żołnierze - I vive la guerre, i vive la morte... + I vive la guerre, i vive la morte... diff --git a/songs/nielubie.xml b/songs/nielubie.xml index 1bc771f1..2420f1b6 100644 --- a/songs/nielubie.xml +++ b/songs/nielubie.xml @@ -9,7 +9,7 @@ Ja nie lublu - Ja nienawidzę fatalnego końca, + Ja nienawidzę fatalnego końca, Nie lubię kiedy los się śmieje w nos. Nie znosze pory roku, dnia, miesiąca, Gdy kością w gardle własny staje głos. diff --git a/songs/niepatrznato.xml b/songs/niepatrznato.xml index a1fc04f5..567717cd 100644 --- a/songs/niepatrznato.xml +++ b/songs/niepatrznato.xml @@ -12,11 +12,11 @@ Świat jest taki a nie inny i zapewne się nie zmieni ogłosili wczoraj słynni dwaj uczeni a w przypadku słynnych ludzi każda myśl jest całkiem dobra - więc ci goście otrzymali zaraz Nobla - Mieli rację jest jak było czyli całkiem nieciekawie - w rowie leży pierwsza miłość po zabawie - jak się bawić to się bawić krzyż na szyi w dłoni "seta" - i na niebie czasem zjawi się kometa + więc ci goście otrzymali zaraz Nobla + Mieli rację jest jak było czyli całkiem nieciekawie + w rowie leży pierwsza miłość po zabawie + jak się bawić to się bawić krzyż na szyi w dłoni "seta" + i na niebie czasem zjawi się kometa @@ -27,14 +27,14 @@ - Jak się bawić to się bawić a tu biedy coraz więcej - i ważniejszy jest karabin niźli serce - tutaj się zabawą żyje za to tępe rządzą głowy - a czasami kretyn z kijem bejsbolowym - Nie patrz miła na to wszystko człowiek musi się szanować - niech nie schyla się za nisko twoja głowa - lecz na chwilę moment jeden za to z góry ci dziękuję - otwórz oczy tylko kiedy mnie całujesz + Jak się bawić to się bawić a tu biedy coraz więcej + i ważniejszy jest karabin niźli serce + tutaj się zabawą żyje za to tępe rządzą głowy + a czasami kretyn z kijem bejsbolowym + Nie patrz miła na to wszystko człowiek musi się szanować + niech nie schyla się za nisko twoja głowa + lecz na chwilę moment jeden za to z góry ci dziękuję + otwórz oczy tylko kiedy mnie całujesz A na resztę zamknij oczy moja miła diff --git a/songs/obraciachktorzypytalisie.xml b/songs/obraciachktorzypytalisie.xml index e0faef40..3d3080df 100644 --- a/songs/obraciachktorzypytalisie.xml +++ b/songs/obraciachktorzypytalisie.xml @@ -11,7 +11,7 @@ Wyszli bracia, wiatr we włosach, co za czas, W oczach gwiazdy i drzewa na spodzie, - Pochyleni, zanurzeni po pas, + Pochyleni, zanurzeni po pas, Brodzą w nocy czerwcowej jak w wodzie. Zatrzaśnięte na krzyż okiennice, Nieskoszony jescze zapach łąk diff --git a/songs/ostatniamruczankaalbospleenkubusiapuchatka.xml b/songs/ostatniamruczankaalbospleenkubusiapuchatka.xml index e1905725..560da73a 100644 --- a/songs/ostatniamruczankaalbospleenkubusiapuchatka.xml +++ b/songs/ostatniamruczankaalbospleenkubusiapuchatka.xml @@ -9,54 +9,54 @@ - uchaj, Maleństwo, słuchaj dziecię, + uchaj, Maleństwo, słuchaj dziecię, Jak Mama Kangurzyca płacze... - Hohonie włóczą się po lesie, + Hohonie włóczą się po lesie, Na próżno szuka cię Prosiaczek. W gęstwinie jego hart nic niewart, Gdy Krzyś się nudzi... bo - dojrzewa. - Wielkie przekleństwo dorosłości + Wielkie przekleństwo dorosłości Określa marny los zwierzątek: - Królik Puchatka nie ugości, + Królik Puchatka nie ugości, A Kłapouchy straci wątek - - Nie będzie więcej filozofem, + Nie będzie więcej filozofem, Gdy Krzyś okaże się Krzysztofem. - Zabawa się wypełni trwogą; + Zabawa się wypełni trwogą; Krzysztof z Weltschmerzem się boryka - - apouchemu urwie ogon, + apouchemu urwie ogon, Z wściekłością prztyknie w nos Królika, - A co najgorsze w tym przekleństwie -- + A co najgorsze w tym przekleństwie -- Całkiem zapomni o Maleństwie. - Tygrysek tranu nie dostanie, + Tygrysek tranu nie dostanie, (Namiętność całkiem nałogowa) - Z pomocą nie pospieszy ani + Z pomocą nie pospieszy ani Z pigułką - Przemądrzała Sowa, Kto zresztą wie, co stara bredzi, Gdy nikt jej nigdy nie odwiedzi? - Kubuś Puchatek, jak do trunku + Kubuś Puchatek, jak do trunku Nad dzbankiem miodu łepek skłania. - Dla znacznie większych to rozumków + Dla znacznie większych to rozumków Sprawy są nie do rozwikłania. - Małe co nieco nie wyjaśni + Małe co nieco nie wyjaśni Jakże tu żyć po śmierci... baśni. - Kiedyś drewnianym pudłem duszy + Kiedyś drewnianym pudłem duszy Potrząśnie Krzysztof, jak skrzypcami. - Może się nawet trochę wzruszy, + Może się nawet trochę wzruszy, Lecz raczej wzruszy ramionami. - Bo, chociaż baśń ożywią smyczki, + Bo, chociaż baśń ożywią smyczki, To tylko raz się gra w patyczki. diff --git a/songs/piesnxxix.xml b/songs/piesnxxix.xml index e12746a7..d272ce80 100644 --- a/songs/piesnxxix.xml +++ b/songs/piesnxxix.xml @@ -36,7 +36,7 @@ I buki srebrni jeźdźcy - Nad nimi wiosny sokół + Nad nimi wiosny sokół I nadal tamtej połoniny wiatr @@ -44,7 +44,7 @@ I na chorągwi wspomnień twarz - Z włosami wiejącymi + Z włosami wiejącymi @@ -58,7 +58,7 @@ Tak dzieje się gdy wiosna przyjdzie - Wypala miłość stare trawy + Wypala miłość stare trawy @@ -74,7 +74,7 @@ I buki srebrni jeźdźcy - Nad nimi wiosny sokół + Nad nimi wiosny sokół Jak popiół rozwiały się grzechy diff --git a/songs/piosenka_o_arbacie.xml b/songs/piosenka_o_arbacie.xml index 61b870d9..7dffa1a5 100644 --- a/songs/piosenka_o_arbacie.xml +++ b/songs/piosenka_o_arbacie.xml @@ -12,9 +12,9 @@ Rzeczny wir, rwący prąd, obca nazwa, łatwy rytm, Lecz przejrzysty Twój nurt, jak kryniczny zdrój! Ach, Arbacie, toś Ty, wiecznym przeznaczeniem mym! - W Tobie radość i gniew, w Tobie śmiech i ból. + W Tobie radość i gniew, w Tobie śmiech i ból. Ach, Arbacie, toś Ty, wiecznym przeznaczeniem mym! - W Tobie radość i gniew, w Tobie śmiech i ból. + W Tobie radość i gniew, w Tobie śmiech i ból. Gdy przechodniów Twych tłum sunie obok rojem pstrym, diff --git a/songs/pociag.xml b/songs/pociag.xml index 339787bb..71dca78c 100644 --- a/songs/pociag.xml +++ b/songs/pociag.xml @@ -19,12 +19,12 @@ - A ciuchcia toczy, toczy swój skład uroczy, + A ciuchcia toczy, toczy swój skład uroczy, Toczy, toczy się skład. Ty, co wisisz na lampie, by stać mógł ktoś, Już dość, już dość, już dość! - Nie ma tu tuneli drutów z prądem brak, + Nie ma tu tuneli drutów z prądem brak, A więc wdrapuj się szybko na dach. Bo nowy dzień wstaje, bo nowy dzień wstaje, @@ -37,8 +37,8 @@ ońce rozpędza mrok. Na koleje polskie się ktoś oburza, Bo coraz większy jest tlok. - Śpi na półce nad nami osób pięć pospołu, - Ale półka urwać się nie może, + Śpi na półce nad nami osób pięć pospołu, + Ale półka urwać się nie może, Trzymamy ją od dołu. @@ -48,10 +48,10 @@ Ty, co leżysz na dachu, by stać mógł ktoś, Już dość, już dość, już dość! - Usiądź sobie z brzegu i zrób miejsce nam, + Usiądź sobie z brzegu i zrób miejsce nam, Bo my zaraz wdrapiemy się tam. - Bo nowy dzień wstaje, bo nowy dzień wstaje, + Bo nowy dzień wstaje, bo nowy dzień wstaje, Nowy dzień. Wstaje nowy dzień. diff --git a/songs/tropiki.xml b/songs/tropiki.xml index 79c42f41..92e7e1e1 100644 --- a/songs/tropiki.xml +++ b/songs/tropiki.xml @@ -10,13 +10,13 @@ Przez afrykański busz nie przejdziesz ani rusz - I nikt nie przedrze się bez noża - Jest tylko jeden mąż, co piersią pruje gąszcz + I nikt nie przedrze się bez noża + Jest tylko jeden mąż, co piersią pruje gąszcz To noso, noso, noso, nosorożec. - Tropiki, tropiki, tropiki, + Tropiki, tropiki, tropiki, Ach upalny jest wasz urok dziki, dziki, aha ha ha ha diff --git a/songs/wloczedzy.xml b/songs/wloczedzy.xml index 55b678ec..97095234 100644 --- a/songs/wloczedzy.xml +++ b/songs/wloczedzy.xml @@ -72,7 +72,7 @@ Gdzie nikt tak naprawdę nic nie ma na własność, A wam pozostanie piosenka i sny: -- My dzieci wolności, bezdomne my psy... - Dzieci wolności... + Dzieci wolności... Dzieci wolności, psy... diff --git a/songs/zalzabulatemo.xml b/songs/zalzabulatemo.xml index bcc6d76c..41f9b4a1 100644 --- a/songs/zalzabulatemo.xml +++ b/songs/zalzabulatemo.xml @@ -12,31 +12,31 @@ - Zawsze śpiewał po cichu bez złości - chociaż czasy leciutkie nie były - bo w balladzie im więcej miłości więcej sy - Zawsze śpiewał po cichu bez złości - chociaż statek już walił o dno - i dlatego na zawsze zagościł w moim domu Pan Bułat 0. + Zawsze śpiewał po cichu bez złości + chociaż czasy leciutkie nie były + bo w balladzie im więcej miłości więcej sy + Zawsze śpiewał po cichu bez złości + chociaż statek już walił o dno + i dlatego na zawsze zagościł w moim domu Pan Bułat 0. - To jest żal za Panem Bułatem czyli żal za minioną młodością - kiedy jego marzenia skrzydlate pozwalały się łudzić wolnością - To jest żal za Bułatem 0., pierwszą wódką i pierwszą kobietą - kiedy z trudem do przodu się szło ale czasem wierzono poetom + To jest żal za Panem Bułatem czyli żal za minioną młodością + kiedy jego marzenia skrzydlate pozwalały się łudzić wolnością + To jest żal za Bułatem 0., pierwszą wódką i pierwszą kobietą + kiedy z trudem do przodu się szło ale czasem wierzono poetom Dziś podoba się inna piosenka - dzisiaj inne potrzeby są w tłumach - i dlatego fałszuje panienka o koniku hop siup na biegunach + dzisiaj inne potrzeby są w tłumach + i dlatego fałszuje panienka o koniku hop siup na biegunach A ja zawsze już będę się spierał - z wielkim Panem co twarzy ma sto - że nam kogoś takiego zabiera jak Pan Bułat "gospodin O" + z wielkim Panem co twarzy ma sto + że nam kogoś takiego zabiera jak Pan Bułat "gospodin O" - To jest żal za Bułatem 0. pierwszą wódką i pierwszą kobietą + To jest żal za Bułatem 0. pierwszą wódką i pierwszą kobietą kiedy z trudem do przodu się szło ale czasem wierzono poetom From 3944eca9a8dbb534ed7b5824ec711a4ceaeee6e2 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Mon, 26 Sep 2022 15:34:19 +0200 Subject: [PATCH 005/664] Editor: Working moving chords with input edits. --- .gitignore | 1 + editor/a.html | 15 +++++ editor/caret.js | 156 ++++++++++++++++++++++++++++++++++++++++++++ editor/songbook.iml | 8 +++ editor/songbook.js | 137 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 317 insertions(+) create mode 100644 .gitignore create mode 100644 editor/a.html create mode 100644 editor/caret.js create mode 100644 editor/songbook.iml create mode 100644 editor/songbook.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..485dee64 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea diff --git a/editor/a.html b/editor/a.html new file mode 100644 index 00000000..c69c4c9a --- /dev/null +++ b/editor/a.html @@ -0,0 +1,15 @@ + + + + + + + +

Song editor

+ + + +
+
+ + \ No newline at end of file diff --git a/editor/caret.js b/editor/caret.js new file mode 100644 index 00000000..0a6c3704 --- /dev/null +++ b/editor/caret.js @@ -0,0 +1,156 @@ +/* FROM: https://github.com/component/textarea-caret-position/blob/master/index.js */ +/* jshint browser: true */ + +(function () { + +// We'll copy the properties below into the mirror div. +// Note that some browsers, such as Firefox, do not concatenate properties +// into their shorthand (e.g. padding-top, padding-bottom etc. -> padding), +// so we have to list every single property explicitly. + var properties = [ + 'direction', // RTL support + 'boxSizing', + 'width', // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does + 'height', + 'overflowX', + 'overflowY', // copy the scrollbar for IE + + 'borderTopWidth', + 'borderRightWidth', + 'borderBottomWidth', + 'borderLeftWidth', + 'borderStyle', + + 'paddingTop', + 'paddingRight', + 'paddingBottom', + 'paddingLeft', + + // https://developer.mozilla.org/en-US/docs/Web/CSS/font + 'fontStyle', + 'fontVariant', + 'fontWeight', + 'fontStretch', + 'fontSize', + 'fontSizeAdjust', + 'lineHeight', + 'fontFamily', + + 'textAlign', + 'textTransform', + 'textIndent', + 'textDecoration', // might not make a difference, but better be safe + + 'letterSpacing', + 'wordSpacing', + + 'tabSize', + 'MozTabSize' + + ]; + + var isBrowser = (typeof window !== 'undefined'); + var isFirefox = (isBrowser && window.mozInnerScreenX != null); + + function getCaretCoordinates(element, position, options) { + if (!isBrowser) { + throw new Error('textarea-caret-position#getCaretCoordinates should only be called in a browser'); + } + + var debug = options && options.debug || false; + if (debug) { + var el = document.querySelector('#input-textarea-caret-position-mirror-div'); + if (el) el.parentNode.removeChild(el); + } + + // The mirror div will replicate the textarea's style + var div = document.createElement('div'); + div.id = 'input-textarea-caret-position-mirror-div'; + document.body.appendChild(div); + + var style = div.style; + var computed = window.getComputedStyle ? window.getComputedStyle(element) : element.currentStyle; // currentStyle for IE < 9 + var isInput = element.nodeName === 'INPUT'; + + // Default textarea styles + style.whiteSpace = 'pre-wrap'; + if (!isInput) + style.wordWrap = 'break-word'; // only for textarea-s + + // Position off-screen + style.position = 'absolute'; // required to return coordinates properly + if (!debug) + style.visibility = 'hidden'; // not 'display: none' because we want rendering + + // Transfer the element's properties to the div + properties.forEach(function (prop) { + if (isInput && prop === 'lineHeight') { + // Special case for s because text is rendered centered and line height may be != height + if (computed.boxSizing === "border-box") { + var height = parseInt(computed.height); + var outerHeight = + parseInt(computed.paddingTop) + + parseInt(computed.paddingBottom) + + parseInt(computed.borderTopWidth) + + parseInt(computed.borderBottomWidth); + var targetHeight = outerHeight + parseInt(computed.lineHeight); + if (height > targetHeight) { + style.lineHeight = height - outerHeight + "px"; + } else if (height === targetHeight) { + style.lineHeight = computed.lineHeight; + } else { + style.lineHeight = 0; + } + } else { + style.lineHeight = computed.height; + } + } else { + style[prop] = computed[prop]; + } + }); + + if (isFirefox) { + // Firefox lies about the overflow property for textareas: https://bugzilla.mozilla.org/show_bug.cgi?id=984275 + if (element.scrollHeight > parseInt(computed.height)) + style.overflowY = 'scroll'; + } else { + style.overflow = 'hidden'; // for Chrome to not render a scrollbar; IE keeps overflowY = 'scroll' + } + + div.textContent = element.value.substring(0, position); + // The second special handling for input type="text" vs textarea: + // spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037 + if (isInput) + div.textContent = div.textContent.replace(/\s/g, '\u00a0'); + + var span = document.createElement('span'); + // Wrapping must be replicated *exactly*, including when a long word gets + // onto the next line, with whitespace at the end of the line before (#7). + // The *only* reliable way to do that is to copy the *entire* rest of the + // textarea's content into the created at the caret position. + // For inputs, just '.' would be enough, but no need to bother. + span.textContent = element.value.substring(position) || '.'; // || because a completely empty faux span doesn't render at all + div.appendChild(span); + + var coordinates = { + top: span.offsetTop + parseInt(computed['borderTopWidth']), + left: span.offsetLeft + parseInt(computed['borderLeftWidth']), + height: parseInt(computed['lineHeight']) + }; + + if (debug) { + span.style.backgroundColor = '#aaa'; + } else { + document.body.removeChild(div); + } + + return coordinates; + } + + if (typeof module != 'undefined' && typeof module.exports != 'undefined') { + module.exports = getCaretCoordinates; + } else if(isBrowser) { + window.getCaretCoordinates = getCaretCoordinates; + } + +}()); \ No newline at end of file diff --git a/editor/songbook.iml b/editor/songbook.iml new file mode 100644 index 00000000..9a5cfcef --- /dev/null +++ b/editor/songbook.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/editor/songbook.js b/editor/songbook.js new file mode 100644 index 00000000..1c7045ea --- /dev/null +++ b/editor/songbook.js @@ -0,0 +1,137 @@ +// Return index of first letter that is different +function commonPrefix(s1, s2) { + for (let i=0; i < Math.min(s1.length, s2.length); ++i) { + if (s1[i] != s2[i]) { + return i; + } + } + return Math.min(s1.length, s2.length); +} + +// Return length of the common suffix; +function commonSuffix(s1, s2) { + for (let i=0; i < Math.min(s1.length, s2.length); ++i) { + if (s1[s1.length - i - 1] != s2[s2.length - i - 1]) { + return i; + } + } + return Math.min(s1.length, s2.length); +} + +function onInput(el) { + console.log('x'); + if (el.previousValue != null && + el.previousSelectionStart != null && + el.previousSelectionEnd != null && el.previousValue != el.value) { + + if (el.previousValue.substring(el.previousSelectionEnd) == + el.value.substring(el.selectionEnd)) { + console.log("Standard change") + const rect = el.parentNode.getBoundingClientRect(); + let f=el.parentNode.getElementsByClassName("ch"); + for (let i=0; i= el.previousSelectionStart) { + ch.pos = Math.max(0, ch.pos + el.selectionEnd - el.previousSelectionEnd); + p = getCaretCoordinates(el, ch.pos) + ch.style.left = rect.x + window.scrollX + p.left + 'px'; + } + } + }else{ + + } + } + + el.previousValue = el.value; + el.previousSelectionStart = el.selectionStart; + el.previousSelectionEnd = el.selectionEnd; +} + + +function showRow(row, targetDiv) { + // p = document.createElement('p'); + // p.appendChild(document.createTextNode(new XMLSerializer().serializeToString(row))); + // targetDiv.appendChild(p) + let text = ''; + let chords = []; + row.childNodes.forEach(function (node) { + if (node.nodeName === '#text') { + text += node.nodeValue; + } + if (node.nodeName === "ch") { + chords.push({'ch': node.attributes['a'].nodeValue, 'pos': text.length}) + } + } + ); + + let input = document.createElement("input"); + input.type = 'text' + input.maxLength = 200; + input.value = text; + input.style.width = 400; + input.oninput = (() => {onInput(input)}); + // TODO: These can be lighter ... to just check caret position. + input.onfocus = (() => {onInput(input)}); + input.onselect = (() => {onInput(input)}); + input.onkeydown = (() => {onInput(input)}); + input.onmousedown = (() => {onInput(input)}); + input.onpaste = (() => {onInput(input)}); + input.oncut = (() => {onInput(input)}); + input.onmousemove = (() => {onInput(input)}); + input.onselectstart = (() => {onInput(input)}); + + targetDiv.appendChild(input); + const rect = input.getBoundingClientRect(); + console.log(rect) + + for (let i = 0; i < chords.length; i++) { + let p=getCaretCoordinates(input, chords[i].pos); + + var ch = document.createElement('div'); + ch.id = 'bookingLayer'; + ch.style.position = 'absolute'; + ch.style.left = (rect.x + window.scrollX + p.left) + 'px'; + ch.style.top = (rect.y + window.scrollY + p.top - 11) + 'px'; + ch.innerHTML = chords[i].ch; + ch.className = 'ch' + ch.pos = chords[i].pos + targetDiv.appendChild(ch) + } + + +// console.log(chords); +} + +function onChange(el) { + // el = document.getElementById("t1") + const rect = el.getBoundingClientRect(); + for (let i=0; i Date: Tue, 27 Sep 2022 18:04:57 +0200 Subject: [PATCH 006/664] Editor: Drag and drop working. --- editor/a.html | 4 +- editor/experimental.html | 183 ++++++++++++++++++++++++++ editor/song.css | 140 ++++++++++++++++++++ editor/songbook.js | 273 +++++++++++++++++++++++---------------- 4 files changed, 484 insertions(+), 116 deletions(-) create mode 100644 editor/experimental.html create mode 100644 editor/song.css diff --git a/editor/a.html b/editor/a.html index c69c4c9a..7064a2df 100644 --- a/editor/a.html +++ b/editor/a.html @@ -1,15 +1,15 @@ +

Song editor

- -
+ \ No newline at end of file diff --git a/editor/experimental.html b/editor/experimental.html new file mode 100644 index 00000000..45668a4d --- /dev/null +++ b/editor/experimental.html @@ -0,0 +1,183 @@ + + + + + + +

Pejzaże harasymowiczowskie

+ + + + + + + + + + +

+Or single: +

+ +
+
+ Gis + Kiedy stałem w przedśwDicie a Synaj
+
B Prawdę głosił przez treąby wiatru
+
G Zasmerczyły się chmury iglDiwiem
+
e Bure świerki o gCóry wspDarte
+
+ + + diff --git a/editor/song.css b/editor/song.css new file mode 100644 index 00000000..e3d45d21 --- /dev/null +++ b/editor/song.css @@ -0,0 +1,140 @@ +h1 { + text-align: left +} + +span.ch { + display: inline-block; + position: relative; + left: 0px; + top: -2em; + font-size: xx-small; + width:0px; + padding-top:0.9em; + font-weight: bold; + overflow-wrap: normal; + hyphens: none; + user-select: all; +} + +div.ch { + display: inline-block; + position: relative; + left: 0px; + top: -1.4em; + font-size: small; + width:0px; + padding-top:0.9em; + font-weight: bold; + overflow-wrap: normal; + hyphens: none; +} + +span.akord { + display: inline-block; + position: relative; + left: 0px; + font-size: xx-small; + width:0px; + padding-top:0.9em; + font-weight: bolder; + overflow-wrap: normal; + hyphens: none; +} + +span.akord span.ch { + width: fit-content; + overflow-wrap: normal; + font-weight: bold; +} + +/*div.over_false span.lyric span.ch {*/ +/* display: none;*/ +/*}*/ + +/*span.ch {*/ +/* font-family: sans-serif;*/ +/*}*/ + +/*span.content_creator {*/ +/* margin-top: 0.2em;*/ +/* font-style: italic;*/ +/* font-weight: bold;*/ +/*}*/ + +/*div.row > span.lyric > span {*/ +/* white-space: nowrap;*/ +/*}*/ + +/*div.row > span.lyric > span > span {*/ +/* white-space: normal;*/ +/*}*/ + +/*span.chords > span.ch {*/ +/* margin-left: 0.6em;*/ +/*}*/ + +/*div.verse {*/ +/* display: table;*/ +/* width: 100%;*/ +/* align-items: stretch;*/ +/* margin-top: 1.2em;*/ +/*}*/ + +/*div.chorus {*/ +/* display: table;*/ +/* width: 100%;*/ +/* align-items: stretch;*/ +/* margin-top: 1.2em;*/ +/*}*/ + +/*div.other {*/ +/* display: table;*/ +/* width: 100%;*/ +/* align-items: stretch;*/ +/* margin-top: 1.2em;*/ +/*}*/ + +/*div.row {*/ +/* display: table-row;*/ +/*}*/ + +/*div.row > span.lyric {*/ +/* display: table-cell;*/ +/* padding-right: 2em;*/ +/* width: 85%;*/ +/*}*/ +/*div.row > span.chords_ins {*/ +/* display: table-cell;*/ +/* padding-right: 2em;*/ +/* width: 85%;*/ +/*}*/ + +/*div.row > span.chords {*/ +/* display: table-cell;*/ +/* align-items: end;*/ +/* padding-left: 1em;*/ +/* justify-content: left;*/ +/* width: max-content;*/ +/*}*/ + +/*div.row > span.bis_inactive {*/ +/* display: table-cell;*/ +/* align-items: end;*/ +/* padding-left: 0.4em;*/ +/* empty-cells: show;*/ +/* max-width: 10em;*/ +/*}*/ + +/*div.row > span.bis_active {*/ +/* display: table-cell;*/ +/* align-items: end;*/ +/* padding-left: 0.4em;*/ +/* border-left: solid;*/ +/* empty-cells: show;*/ +/* max-width: 10em;*/ +/*}*/ + +/*div.comment {*/ +/* margin-top: 1.2em;*/ +/* font-style: italic;*/ +/*}*/ \ No newline at end of file diff --git a/editor/songbook.js b/editor/songbook.js index 1c7045ea..6e22e14e 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -1,137 +1,182 @@ -// Return index of first letter that is different -function commonPrefix(s1, s2) { - for (let i=0; i < Math.min(s1.length, s2.length); ++i) { - if (s1[i] != s2[i]) { - return i; - } + +function getChordNode(node) { + if (node.className=='akord') { return a.getElementsByTagName('ch')[0]; } + while (node != null && node.className != 'ch') { + console.log('look', node); + node = node.parentNode; } - return Math.min(s1.length, s2.length); + return node; } -// Return length of the common suffix; -function commonSuffix(s1, s2) { - for (let i=0; i < Math.min(s1.length, s2.length); ++i) { - if (s1[s1.length - i - 1] != s2[s2.length - i - 1]) { - return i; +let dropped=null; + +function createChord(chord) { + akord = document.createElement("span"); + akord.className = 'akord'; + akord.draggable = true; + akord.ondragstart = function (e) { + a = getChordNode(e.target); + if (a != null) { + a.opacity = "0.2"; + e.dataTransfer.effectAllowed = "copyMove" + // window.getSelection().removeAllRanges(); + // r=document.createRange() + // r.setStartBefore(e.target.parentNode.parentNode); + // r.setEndAfter(e.target.parentNode.parentNode); + // window.getSelection().addRange(r); + // console.log(e.target.parentNode.parentNode.outerHTML) + console.log(e) + e.dataTransfer.setData("songbook/chord", a.childNodes[0].nodeValue); + e.dataTransfer.akord=a; + console.log(e); + dropped = false; } } - return Math.min(s1.length, s2.length); -} - -function onInput(el) { - console.log('x'); - if (el.previousValue != null && - el.previousSelectionStart != null && - el.previousSelectionEnd != null && el.previousValue != el.value) { - - if (el.previousValue.substring(el.previousSelectionEnd) == - el.value.substring(el.selectionEnd)) { - console.log("Standard change") - const rect = el.parentNode.getBoundingClientRect(); - let f=el.parentNode.getElementsByClassName("ch"); - for (let i=0; i= el.previousSelectionStart) { - ch.pos = Math.max(0, ch.pos + el.selectionEnd - el.previousSelectionEnd); - p = getCaretCoordinates(el, ch.pos) - ch.style.left = rect.x + window.scrollX + p.left + 'px'; - } - } - }else{ - + akord.ondragend = function (e) { + a = getChordNode(e.target); + if (a != null) { + this.opacity = '1.0'; + } + if (dropped && e.dataTransfer.dropEffect=='move') { + console.log("REMOVING"); + a.remove(); } + console.warn(e); } + ch = document.createElement("span"); + ch.className = 'ch'; + ch.innerText = chord; + ch.contentEditable = 'false'; + akord.appendChild(ch); + return akord; - el.previousValue = el.value; - el.previousSelectionStart = el.selectionStart; - el.previousSelectionEnd = el.selectionEnd; } - -function showRow(row, targetDiv) { - // p = document.createElement('p'); - // p.appendChild(document.createTextNode(new XMLSerializer().serializeToString(row))); - // targetDiv.appendChild(p) - let text = ''; - let chords = []; - row.childNodes.forEach(function (node) { - if (node.nodeName === '#text') { - text += node.nodeValue; - } - if (node.nodeName === "ch") { - chords.push({'ch': node.attributes['a'].nodeValue, 'pos': text.length}) - } +function createRow(row) { + rowp=document.createElement("div"); + rowp.className='row'; + rowp.contentEditable=true; + rowp.ondrop= function (e) { + d = e.dataTransfer.getData("songbook/chord"); + if (d != null && d != "") { + if (document.caretRangeFromPoint) { + // edge, chrome, android + range = document.caretRangeFromPoint(e.clientX, e.clientY) + } else { + // firefox + var pos = [e.rangeParent, e.rangeOffset] + range = document.createRange() + range.setStart(...pos); + range.setEnd(...pos); } - ); - - let input = document.createElement("input"); - input.type = 'text' - input.maxLength = 200; - input.value = text; - input.style.width = 400; - input.oninput = (() => {onInput(input)}); - // TODO: These can be lighter ... to just check caret position. - input.onfocus = (() => {onInput(input)}); - input.onselect = (() => {onInput(input)}); - input.onkeydown = (() => {onInput(input)}); - input.onmousedown = (() => {onInput(input)}); - input.onpaste = (() => {onInput(input)}); - input.oncut = (() => {onInput(input)}); - input.onmousemove = (() => {onInput(input)}); - input.onselectstart = (() => {onInput(input)}); - - targetDiv.appendChild(input); - const rect = input.getBoundingClientRect(); - console.log(rect) - - for (let i = 0; i < chords.length; i++) { - let p=getCaretCoordinates(input, chords[i].pos); - - var ch = document.createElement('div'); - ch.id = 'bookingLayer'; - ch.style.position = 'absolute'; - ch.style.left = (rect.x + window.scrollX + p.left) + 'px'; - ch.style.top = (rect.y + window.scrollY + p.top - 11) + 'px'; - ch.innerHTML = chords[i].ch; - ch.className = 'ch' - ch.pos = chords[i].pos - targetDiv.appendChild(ch) + // console.log(e.dataTransfer.dropEffect); + console.log("DROP", e); + + if (range.commonAncestorContainer.parentNode.className=='row') { + range.insertNode(createChord(d)); + dropped = true; + //if (!e.ctrlKey) { + // e.dataTransfer.akord.remove(); + // + } + e.preventDefault(); + } } - -// console.log(chords); -} - -function onChange(el) { - // el = document.getElementById("t1") - const rect = el.getBoundingClientRect(); - for (let i=0; i {onInput(input)}); +// // TODO: These can be lighter ... to just check caret position. +// input.onfocus = (() => {onInput(input)}); +// input.onselect = (() => {onInput(input)}); +// input.onkeydown = (() => {onInput(input)}); +// input.onmousedown = (() => {onInput(input)}); +// input.onpaste = (() => {onInput(input)}); +// input.oncut = (() => {onInput(input)}); +// input.onmousemove = (() => {onInput(input)}); +// input.onselectstart = (() => {onInput(input)}); +// input.className="lyric" +// targetDiv.appendChild(chordBox) +// targetDiv.appendChild(input); +// +// chordBox.style.width = input.style.width +// chordBox.style.background = "yellow" +// chordBox.ondragover = handleDragOver +// +// const rect = input.getBoundingClientRect(); +// console.log(rect) +// +// for (let i = 0; i < chords.length; i++) { +// let p=getCaretCoordinates(input, chords[i].pos); +// +// var ch = document.createElement('div'); +// ch.id = 'bookingLayer'; +// ch.style.position = 'absolute'; +// ch.style.left = (rect.x + window.scrollX + p.left) + 'px'; +// ch.style.top = (rect.y + window.scrollY + p.top - 15) + 'px'; +// ch.innerHTML = chords[i].ch; +// ch.className = 'ch' +// ch.draggable = true; +// ch.ondragstart = handleDragStart +// ch.ondragend = handleDragEnd +// ch.pos = chords[i].pos +// targetDiv.appendChild(ch) +// } +// +// +// // console.log(chords); +// } +// + function onLoad() { - text = 'Stanął w ogniu nasz wielki dom'; + text = '' + + '' + + ' Kiedy stałem w przedświcie a Synaj' + + ' Prawdę głosił przez trąby wiatru' + + ' Zasmerczyły się chmury igliwiem' + + ' Bure świerki o góry wsparte' + + ''; parser = new DOMParser(); xmlDoc = parser.parseFromString(text, "text/xml"); - showRow( - xmlDoc.getRootNode().childNodes[0], - document.getElementById("editor")); + let verse = xmlDoc.getRootNode().childNodes[0]; + let rows = verse.getElementsByTagName('row'); + for (let i=0; i Date: Wed, 28 Sep 2022 14:48:18 +0200 Subject: [PATCH 007/664] Editor: Updated CSS to reflect better reality and prepare for chord editor. --- editor/song.css | 37 +++++++++++++++++++------------------ editor/songbook.js | 45 ++++++++++++++++++++++++++++----------------- 2 files changed, 47 insertions(+), 35 deletions(-) diff --git a/editor/song.css b/editor/song.css index e3d45d21..5c46a1cc 100644 --- a/editor/song.css +++ b/editor/song.css @@ -2,43 +2,43 @@ h1 { text-align: left } -span.ch { +span.akord { display: inline-block; position: relative; left: 0px; - top: -2em; - font-size: xx-small; width:0px; - padding-top:0.9em; - font-weight: bold; + top: -1.3em; + margin-top: 1.5em; overflow-wrap: normal; hyphens: none; - user-select: all; + font-family: Arial; } -div.ch { +span.akord span.ch { display: inline-block; - position: relative; + position: absolute; left: 0px; - top: -1.4em; - font-size: small; - width:0px; - padding-top:0.9em; + font-size: xx-small; + /*//width:30px;*/ font-weight: bold; overflow-wrap: normal; hyphens: none; + user-select: all; } -span.akord { +span.akord input.ch { + width: 6em; + font-size: xx-small; display: inline-block; - position: relative; + position: absolute; left: 0px; - font-size: xx-small; - width:0px; - padding-top:0.9em; - font-weight: bolder; + top: -0.12em; + font-weight: bold; overflow-wrap: normal; hyphens: none; + z-index: 5; + background-color: rgba(255,255,255,0.5); + border-width: 0px; } span.akord span.ch { @@ -47,6 +47,7 @@ span.akord span.ch { font-weight: bold; } + /*div.over_false span.lyric span.ch {*/ /* display: none;*/ /*}*/ diff --git a/editor/songbook.js b/editor/songbook.js index 6e22e14e..d8352cca 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -18,7 +18,8 @@ function createChord(chord) { a = getChordNode(e.target); if (a != null) { a.opacity = "0.2"; - e.dataTransfer.effectAllowed = "copyMove" + e.dataTransfer.effectAllowed = "copyMove"; + e.dataTransfer.dropEffect = "move"; // window.getSelection().removeAllRanges(); // r=document.createRange() // r.setStartBefore(e.target.parentNode.parentNode); @@ -52,32 +53,42 @@ function createChord(chord) { } +function getRangeForCursor(e) { + if (document.caretRangeFromPoint) { + // edge, chrome, android + range = document.caretRangeFromPoint(e.clientX, e.clientY) + } else { + // firefox + var pos = [e.rangeParent, e.rangeOffset] + range = document.createRange() + range.setStart(...pos); + range.setEnd(...pos); + } + return range; +} + function createRow(row) { rowp=document.createElement("div"); rowp.className='row'; rowp.contentEditable=true; + rowp.ondragover = function (e) { + if (e.altKey) { + e.dataTransfer.dropEffect='copy'; + } else { + e.dataTransfer.dropEffect='move'; + } + range = getRangeForCursor(e); + document.getSelection().removeAllRanges(); + document.getSelection().addRange(range); + e.preventDefault(); + } rowp.ondrop= function (e) { d = e.dataTransfer.getData("songbook/chord"); if (d != null && d != "") { - if (document.caretRangeFromPoint) { - // edge, chrome, android - range = document.caretRangeFromPoint(e.clientX, e.clientY) - } else { - // firefox - var pos = [e.rangeParent, e.rangeOffset] - range = document.createRange() - range.setStart(...pos); - range.setEnd(...pos); - } - // console.log(e.dataTransfer.dropEffect); - console.log("DROP", e); - + range = getRangeForCursor(e); if (range.commonAncestorContainer.parentNode.className=='row') { range.insertNode(createChord(d)); dropped = true; - //if (!e.ctrlKey) { - // e.dataTransfer.akord.remove(); - // } e.preventDefault(); } From 5f870a712eb4a2b0eefacf0a795372d15935b515 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 28 Sep 2022 14:55:28 +0200 Subject: [PATCH 008/664] Editor: ` instert working --- editor/a.html | 5 +- editor/caret.js | 156 --------------------------------------- editor/experimental.html | 52 ------------- editor/songbook.js | 153 ++++++++++++++++++-------------------- 4 files changed, 77 insertions(+), 289 deletions(-) delete mode 100644 editor/caret.js diff --git a/editor/a.html b/editor/a.html index 7064a2df..50b6d716 100644 --- a/editor/a.html +++ b/editor/a.html @@ -12,4 +12,7 @@

Song editor

- \ No newline at end of file + + + + diff --git a/editor/caret.js b/editor/caret.js deleted file mode 100644 index 0a6c3704..00000000 --- a/editor/caret.js +++ /dev/null @@ -1,156 +0,0 @@ -/* FROM: https://github.com/component/textarea-caret-position/blob/master/index.js */ -/* jshint browser: true */ - -(function () { - -// We'll copy the properties below into the mirror div. -// Note that some browsers, such as Firefox, do not concatenate properties -// into their shorthand (e.g. padding-top, padding-bottom etc. -> padding), -// so we have to list every single property explicitly. - var properties = [ - 'direction', // RTL support - 'boxSizing', - 'width', // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does - 'height', - 'overflowX', - 'overflowY', // copy the scrollbar for IE - - 'borderTopWidth', - 'borderRightWidth', - 'borderBottomWidth', - 'borderLeftWidth', - 'borderStyle', - - 'paddingTop', - 'paddingRight', - 'paddingBottom', - 'paddingLeft', - - // https://developer.mozilla.org/en-US/docs/Web/CSS/font - 'fontStyle', - 'fontVariant', - 'fontWeight', - 'fontStretch', - 'fontSize', - 'fontSizeAdjust', - 'lineHeight', - 'fontFamily', - - 'textAlign', - 'textTransform', - 'textIndent', - 'textDecoration', // might not make a difference, but better be safe - - 'letterSpacing', - 'wordSpacing', - - 'tabSize', - 'MozTabSize' - - ]; - - var isBrowser = (typeof window !== 'undefined'); - var isFirefox = (isBrowser && window.mozInnerScreenX != null); - - function getCaretCoordinates(element, position, options) { - if (!isBrowser) { - throw new Error('textarea-caret-position#getCaretCoordinates should only be called in a browser'); - } - - var debug = options && options.debug || false; - if (debug) { - var el = document.querySelector('#input-textarea-caret-position-mirror-div'); - if (el) el.parentNode.removeChild(el); - } - - // The mirror div will replicate the textarea's style - var div = document.createElement('div'); - div.id = 'input-textarea-caret-position-mirror-div'; - document.body.appendChild(div); - - var style = div.style; - var computed = window.getComputedStyle ? window.getComputedStyle(element) : element.currentStyle; // currentStyle for IE < 9 - var isInput = element.nodeName === 'INPUT'; - - // Default textarea styles - style.whiteSpace = 'pre-wrap'; - if (!isInput) - style.wordWrap = 'break-word'; // only for textarea-s - - // Position off-screen - style.position = 'absolute'; // required to return coordinates properly - if (!debug) - style.visibility = 'hidden'; // not 'display: none' because we want rendering - - // Transfer the element's properties to the div - properties.forEach(function (prop) { - if (isInput && prop === 'lineHeight') { - // Special case for s because text is rendered centered and line height may be != height - if (computed.boxSizing === "border-box") { - var height = parseInt(computed.height); - var outerHeight = - parseInt(computed.paddingTop) + - parseInt(computed.paddingBottom) + - parseInt(computed.borderTopWidth) + - parseInt(computed.borderBottomWidth); - var targetHeight = outerHeight + parseInt(computed.lineHeight); - if (height > targetHeight) { - style.lineHeight = height - outerHeight + "px"; - } else if (height === targetHeight) { - style.lineHeight = computed.lineHeight; - } else { - style.lineHeight = 0; - } - } else { - style.lineHeight = computed.height; - } - } else { - style[prop] = computed[prop]; - } - }); - - if (isFirefox) { - // Firefox lies about the overflow property for textareas: https://bugzilla.mozilla.org/show_bug.cgi?id=984275 - if (element.scrollHeight > parseInt(computed.height)) - style.overflowY = 'scroll'; - } else { - style.overflow = 'hidden'; // for Chrome to not render a scrollbar; IE keeps overflowY = 'scroll' - } - - div.textContent = element.value.substring(0, position); - // The second special handling for input type="text" vs textarea: - // spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037 - if (isInput) - div.textContent = div.textContent.replace(/\s/g, '\u00a0'); - - var span = document.createElement('span'); - // Wrapping must be replicated *exactly*, including when a long word gets - // onto the next line, with whitespace at the end of the line before (#7). - // The *only* reliable way to do that is to copy the *entire* rest of the - // textarea's content into the created at the caret position. - // For inputs, just '.' would be enough, but no need to bother. - span.textContent = element.value.substring(position) || '.'; // || because a completely empty faux span doesn't render at all - div.appendChild(span); - - var coordinates = { - top: span.offsetTop + parseInt(computed['borderTopWidth']), - left: span.offsetLeft + parseInt(computed['borderLeftWidth']), - height: parseInt(computed['lineHeight']) - }; - - if (debug) { - span.style.backgroundColor = '#aaa'; - } else { - document.body.removeChild(div); - } - - return coordinates; - } - - if (typeof module != 'undefined' && typeof module.exports != 'undefined') { - module.exports = getCaretCoordinates; - } else if(isBrowser) { - window.getCaretCoordinates = getCaretCoordinates; - } - -}()); \ No newline at end of file diff --git a/editor/experimental.html b/editor/experimental.html index 45668a4d..d2ebe94a 100644 --- a/editor/experimental.html +++ b/editor/experimental.html @@ -104,58 +104,6 @@

Pejzaże harasymowiczowskie

console.log(event) } - function onDblclickA(event) { - // insertChord(); - // console.log(window.getSelection().rangeCount) - - // - //alert('aaa'); - } - - function onMouseDown(event) { - // if (event.detail > 1) { - // event.preventDefault(); - // } - } - - function handleDragOver(e) { - console.log("Dragging"); - // e.preventDefault(); - // console.log(e); - // - // lyrics = this.parentNode.getElementsByClassName("lyric")[0]; - // lyrics.setSelectionRange(2, 5); - // e.offsetX - // e.offsetY - //e.dataTransfer.dropEffect= "move"; - } - - function handleDragStart(e) { - console.log(e); - console.log(e.target.parentNode.parentNode); - e.target.parentNode.style.opacity = '0.8'; - e.dataTransfer.effectAllowed = "copyMove" - window.getSelection().removeAllRanges(); - r=document.createRange() - r.setStartBefore(e.target.parentNode.parentNode); - r.setEndAfter(e.target.parentNode.parentNode); - window.getSelection().addRange(r); - console.log(e.target.parentNode.parentNode.outerHTML) - e.dataTransfer.setData("songbook/chord", "abc"/*e.target.parentNode.parentNode.outerHTML*/) - // e.preventDefault() - } - - function handleDragEnd(e) { - this.style.opacity = '1'; - } - - function handleDrop(e) { - console.log("Drop", e); - console.log("Drop", e.dataTransfer.getData("songbook/chord")); - insertChord(e.dataTransfer.getData("songbook/chord")); - e.preventDefault(); - //e.preventDefault(); - } diff --git a/editor/songbook.js b/editor/songbook.js index d8352cca..6ed5ad58 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -1,4 +1,19 @@ +const predefinedChords = ["A","A2","A4","A7","A7+","A7/4","A7/6","Ais","B","C","C0","C7","C7+","C9","C9/5","Cis","Cis0","D","D2","D4","D7","D7+","Dis","E","E0","E5+","E7","E7/4","F","F0","F7","F7+","Fis","Fis0","Fis7","G","G0","G6","G7","GC","Gis","H","H6/7","H7","a","a6","a7","a7+","a7/9","ais","b","c","cis","cis7","d","d2","d6","e","e7","e9","f","fis","fis7","g","gis","gis7","h","h0","h7","h7/5-"]; + +function predefinedChordsList() { + let dl = document.createElement("datalist"); + dl.id = "predefinedChords"; + predefinedChords.forEach( + (ch) => { + opt = document.createElement("option"); + opt.value = ch; + dl.appendChild(opt); + } + ); + return dl; +} + function getChordNode(node) { if (node.className=='akord') { return a.getElementsByTagName('ch')[0]; } while (node != null && node.className != 'ch') { @@ -53,7 +68,8 @@ function createChord(chord) { } -function getRangeForCursor(e) { +function getRangeForCursor(e) +{ if (document.caretRangeFromPoint) { // edge, chrome, android range = document.caretRangeFromPoint(e.clientX, e.clientY) @@ -67,6 +83,29 @@ function getRangeForCursor(e) { return range; } +function rowOnDrop(e) { + d = e.dataTransfer.getData("songbook/chord"); + if (d != null && d != "") { + range = getRangeForCursor(e) + if (range.commonAncestorContainer.parentNode.className=='row') { + range.insertNode(createChord(d)); + dropped = true; + } + e.preventDefault(); + } +} + +function rowOnKeyDown(event) { + if (event.key=='`') { + event.preventDefault(); + if (window.getSelection().rangeCount > 0) { + let chedit = createChordEditor(""); + window.getSelection().getRangeAt(0).insertNode(chedit); + chedit.childNodes[0].focus(); + } + } +} + function createRow(row) { rowp=document.createElement("div"); rowp.className='row'; @@ -82,17 +121,11 @@ function createRow(row) { document.getSelection().addRange(range); e.preventDefault(); } - rowp.ondrop= function (e) { - d = e.dataTransfer.getData("songbook/chord"); - if (d != null && d != "") { - range = getRangeForCursor(e); - if (range.commonAncestorContainer.parentNode.className=='row') { - range.insertNode(createChord(d)); - dropped = true; - } - e.preventDefault(); - } - } + rowp.spellcheck=false; + rowp.contentEditable='true'; + + rowp.ondrop = rowOnDrop; + rowp.onkeydown = rowOnKeyDown; for (let i=0; i {onInput(input)}); -// // TODO: These can be lighter ... to just check caret position. -// input.onfocus = (() => {onInput(input)}); -// input.onselect = (() => {onInput(input)}); -// input.onkeydown = (() => {onInput(input)}); -// input.onmousedown = (() => {onInput(input)}); -// input.onpaste = (() => {onInput(input)}); -// input.oncut = (() => {onInput(input)}); -// input.onmousemove = (() => {onInput(input)}); -// input.onselectstart = (() => {onInput(input)}); -// input.className="lyric" -// targetDiv.appendChild(chordBox) -// targetDiv.appendChild(input); -// -// chordBox.style.width = input.style.width -// chordBox.style.background = "yellow" -// chordBox.ondragover = handleDragOver -// -// const rect = input.getBoundingClientRect(); -// console.log(rect) -// -// for (let i = 0; i < chords.length; i++) { -// let p=getCaretCoordinates(input, chords[i].pos); -// -// var ch = document.createElement('div'); -// ch.id = 'bookingLayer'; -// ch.style.position = 'absolute'; -// ch.style.left = (rect.x + window.scrollX + p.left) + 'px'; -// ch.style.top = (rect.y + window.scrollY + p.top - 15) + 'px'; -// ch.innerHTML = chords[i].ch; -// ch.className = 'ch' -// ch.draggable = true; -// ch.ondragstart = handleDragStart -// ch.ondragend = handleDragEnd -// ch.pos = chords[i].pos -// targetDiv.appendChild(ch) -// } -// -// -// // console.log(chords); -// } -// +function createChordEditor(v) { + akord = document.createElement("span"); + akord.className = 'akord'; + chedit = document.createElement("input"); + chedit.className = "ch"; + chedit.type = "search"; + chedit.value = v; + chedit.setAttribute("list", "predefinedChords"); + chedit.onchange = function (e) { + console.log(e.target.parentNode); + let newChord = createChord(chedit.value); + e.target.parentNode.parentNode.replaceChild(newChord, e.target.parentNode); + let r = document.createRange(); + r.setStartAfter(newChord); + document.getSelection().removeAllRanges(); + document.getSelection().addRange(r); + } + akord.appendChild(chedit); + return akord; +} + function onLoad() { text = '' @@ -184,10 +173,14 @@ function onLoad() { parser = new DOMParser(); xmlDoc = parser.parseFromString(text, "text/xml"); + let editor = document.getElementById("editor"); + + let pch = predefinedChordsList(); + editor.appendChild(pch); + let verse = xmlDoc.getRootNode().childNodes[0]; let rows = verse.getElementsByTagName('row'); - for (let i=0; i Date: Wed, 28 Sep 2022 15:15:28 +0200 Subject: [PATCH 009/664] Fixed behavior of first chord in the line --- editor/song.css | 5 +++ editor/songbook.js | 80 +++++++++++++++++++++++++++------------------- 2 files changed, 53 insertions(+), 32 deletions(-) diff --git a/editor/song.css b/editor/song.css index 5c46a1cc..3b6f434d 100644 --- a/editor/song.css +++ b/editor/song.css @@ -2,6 +2,11 @@ h1 { text-align: left } +div.row { + white-space: pre; + padding-left: 0.3em; +} + span.akord { display: inline-block; position: relative; diff --git a/editor/songbook.js b/editor/songbook.js index 6ed5ad58..9cbebc64 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -1,21 +1,28 @@ - -const predefinedChords = ["A","A2","A4","A7","A7+","A7/4","A7/6","Ais","B","C","C0","C7","C7+","C9","C9/5","Cis","Cis0","D","D2","D4","D7","D7+","Dis","E","E0","E5+","E7","E7/4","F","F0","F7","F7+","Fis","Fis0","Fis7","G","G0","G6","G7","GC","Gis","H","H6/7","H7","a","a6","a7","a7+","a7/9","ais","b","c","cis","cis7","d","d2","d6","e","e7","e9","f","fis","fis7","g","gis","gis7","h","h0","h7","h7/5-"]; +const predefinedChords = ["A", "A2", "A4", "A7", "A7+", "A7/4", "A7/6", "Ais", + "B", "C", "C0", "C7", "C7+", "C9", "C9/5", "Cis", "Cis0", "D", "D2", "D4", + "D7", "D7+", "Dis", "E", "E0", "E5+", "E7", "E7/4", "F", "F0", "F7", "F7+", + "Fis", "Fis0", "Fis7", "G", "G0", "G6", "G7", "GC", "Gis", "H", "H6/7", "H7", + "a", "a6", "a7", "a7+", "a7/9", "ais", "b", "c", "cis", "cis7", "d", "d2", + "d6", "e", "e7", "e9", "f", "fis", "fis7", "g", "gis", "gis7", "h", "h0", + "h7", "h7/5-"]; function predefinedChordsList() { let dl = document.createElement("datalist"); dl.id = "predefinedChords"; predefinedChords.forEach( (ch) => { - opt = document.createElement("option"); - opt.value = ch; - dl.appendChild(opt); + opt = document.createElement("option"); + opt.value = ch; + dl.appendChild(opt); } ); return dl; } function getChordNode(node) { - if (node.className=='akord') { return a.getElementsByTagName('ch')[0]; } + if (node.className == 'akord') { + return a.getElementsByTagName('ch')[0]; + } while (node != null && node.className != 'ch') { console.log('look', node); node = node.parentNode; @@ -23,7 +30,7 @@ function getChordNode(node) { return node; } -let dropped=null; +let dropped = null; function createChord(chord) { akord = document.createElement("span"); @@ -43,7 +50,7 @@ function createChord(chord) { // console.log(e.target.parentNode.parentNode.outerHTML) console.log(e) e.dataTransfer.setData("songbook/chord", a.childNodes[0].nodeValue); - e.dataTransfer.akord=a; + e.dataTransfer.akord = a; console.log(e); dropped = false; } @@ -53,9 +60,9 @@ function createChord(chord) { if (a != null) { this.opacity = '1.0'; } - if (dropped && e.dataTransfer.dropEffect=='move') { + if (dropped && e.dataTransfer.dropEffect == 'move') { console.log("REMOVING"); - a.remove(); + a.parentNode.remove(); } console.warn(e); } @@ -68,8 +75,7 @@ function createChord(chord) { } -function getRangeForCursor(e) -{ +function getRangeForCursor(e) { if (document.caretRangeFromPoint) { // edge, chrome, android range = document.caretRangeFromPoint(e.clientX, e.clientY) @@ -87,7 +93,7 @@ function rowOnDrop(e) { d = e.dataTransfer.getData("songbook/chord"); if (d != null && d != "") { range = getRangeForCursor(e) - if (range.commonAncestorContainer.parentNode.className=='row') { + if (range.commonAncestorContainer.parentNode.className == 'row') { range.insertNode(createChord(d)); dropped = true; } @@ -95,41 +101,52 @@ function rowOnDrop(e) { } } +function canInsertChord() { + //console.warn(window.getSelection().getRangeAt(0)); + let r = window.getSelection().getRangeAt(0); + console.warn(r.startContainer); + let x = + (r.startContainer.className == 'row') + || (r.startContainer.nodeName == '#text' + && r.startContainer.parentNode.className == 'row'); + return x; +} + function rowOnKeyDown(event) { - if (event.key=='`') { - event.preventDefault(); - if (window.getSelection().rangeCount > 0) { - let chedit = createChordEditor(""); - window.getSelection().getRangeAt(0).insertNode(chedit); - chedit.childNodes[0].focus(); - } + if (event.key == '`' && canInsertChord()) { + event.preventDefault(); + if (window.getSelection().rangeCount > 0) { + let chedit = createChordEditor(""); + window.getSelection().getRangeAt(0).insertNode(chedit); + chedit.childNodes[0].focus(); } + } } function createRow(row) { - rowp=document.createElement("div"); - rowp.className='row'; - rowp.contentEditable=true; + rowp = document.createElement("div"); + rowp.className = 'row'; + rowp.contentEditable = true; rowp.ondragover = function (e) { if (e.altKey) { - e.dataTransfer.dropEffect='copy'; + e.dataTransfer.dropEffect = 'copy'; } else { - e.dataTransfer.dropEffect='move'; + e.dataTransfer.dropEffect = 'move'; } range = getRangeForCursor(e); document.getSelection().removeAllRanges(); document.getSelection().addRange(range); e.preventDefault(); } - rowp.spellcheck=false; - rowp.contentEditable='true'; + rowp.spellcheck = false; + rowp.contentEditable = 'true'; rowp.ondrop = rowOnDrop; rowp.onkeydown = rowOnKeyDown; - for (let i=0; i' @@ -180,7 +196,7 @@ function onLoad() { let verse = xmlDoc.getRootNode().childNodes[0]; let rows = verse.getElementsByTagName('row'); - for (let i=0; i Date: Wed, 28 Sep 2022 15:26:15 +0200 Subject: [PATCH 010/664] Double click chords adding. --- editor/songbook.js | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/editor/songbook.js b/editor/songbook.js index 9cbebc64..c634aadb 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -103,6 +103,7 @@ function rowOnDrop(e) { function canInsertChord() { //console.warn(window.getSelection().getRangeAt(0)); + if (window.getSelection().rangeCount < 1) {return false; } let r = window.getSelection().getRangeAt(0); console.warn(r.startContainer); let x = @@ -112,13 +113,20 @@ function canInsertChord() { return x; } +function insertChordHere(ch) { + if (canInsertChord()) { + let chedit = createChordEditor(""); + window.getSelection().getRangeAt(0).insertNode(chedit); + chedit.childNodes[0].focus(); + return true; + } + return false; +} + function rowOnKeyDown(event) { if (event.key == '`' && canInsertChord()) { - event.preventDefault(); - if (window.getSelection().rangeCount > 0) { - let chedit = createChordEditor(""); - window.getSelection().getRangeAt(0).insertNode(chedit); - chedit.childNodes[0].focus(); + if (insertChordHere("")) { + event.preventDefault(); } } } @@ -138,6 +146,13 @@ function createRow(row) { document.getSelection().addRange(range); e.preventDefault(); } + rowp.onmousedown=function (e) { + if (e.detail > 1 && canInsertChord()) { + if (insertChordHere("")) { + e.preventDefault(); + } + } + }; rowp.spellcheck = false; rowp.contentEditable = 'true'; From 073b4663770407233fbde1766e7e18dad080cb8a Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 28 Sep 2022 15:36:42 +0200 Subject: [PATCH 011/664] Editor: Allow draging/dropping regular content. --- editor/songbook.js | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/editor/songbook.js b/editor/songbook.js index c634aadb..7abf1844 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -136,15 +136,18 @@ function createRow(row) { rowp.className = 'row'; rowp.contentEditable = true; rowp.ondragover = function (e) { - if (e.altKey) { - e.dataTransfer.dropEffect = 'copy'; - } else { - e.dataTransfer.dropEffect = 'move'; + console.log( e.dataTransfer.types ); + if (e.dataTransfer.types.includes("songbook/chord")) { + if (e.altKey) { + e.dataTransfer.dropEffect = 'copy'; + } else { + e.dataTransfer.dropEffect = 'move'; + } + range = getRangeForCursor(e); + document.getSelection().removeAllRanges(); + document.getSelection().addRange(range); + e.preventDefault(); } - range = getRangeForCursor(e); - document.getSelection().removeAllRanges(); - document.getSelection().addRange(range); - e.preventDefault(); } rowp.onmousedown=function (e) { if (e.detail > 1 && canInsertChord()) { From 8b438945cb3f4714b6377b9628fa926c5bbb6b74 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 28 Sep 2022 16:27:11 +0200 Subject: [PATCH 012/664] Escape / Enter / Tab allows to leave the chord editor --- editor/songbook.js | 63 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 48 insertions(+), 15 deletions(-) diff --git a/editor/songbook.js b/editor/songbook.js index 7abf1844..7017d4b0 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -131,24 +131,26 @@ function rowOnKeyDown(event) { } } +function rowOnDragOver(e) { + console.log( e.dataTransfer.types ); + if (e.dataTransfer.types.includes("songbook/chord")) { + if (e.altKey) { + e.dataTransfer.dropEffect = 'copy'; + } else { + e.dataTransfer.dropEffect = 'move'; + } + range = getRangeForCursor(e); + document.getSelection().removeAllRanges(); + document.getSelection().addRange(range); + e.preventDefault(); + } +} + function createRow(row) { rowp = document.createElement("div"); rowp.className = 'row'; rowp.contentEditable = true; - rowp.ondragover = function (e) { - console.log( e.dataTransfer.types ); - if (e.dataTransfer.types.includes("songbook/chord")) { - if (e.altKey) { - e.dataTransfer.dropEffect = 'copy'; - } else { - e.dataTransfer.dropEffect = 'move'; - } - range = getRangeForCursor(e); - document.getSelection().removeAllRanges(); - document.getSelection().addRange(range); - e.preventDefault(); - } - } + rowp.ondragover = rowOnDragOver; rowp.onmousedown=function (e) { if (e.detail > 1 && canInsertChord()) { if (insertChordHere("")) { @@ -183,14 +185,45 @@ function createChordEditor(v) { chedit.value = v; chedit.setAttribute("list", "predefinedChords"); chedit.onchange = function (e) { + console.log("On change"); console.log(e.target.parentNode); - let newChord = createChord(chedit.value); + let newChord = createChord(chedit.value.trim()); e.target.parentNode.parentNode.replaceChild(newChord, e.target.parentNode); let r = document.createRange(); r.setStartAfter(newChord); document.getSelection().removeAllRanges(); document.getSelection().addRange(r); } + chedit.onblur = function (e) { + if (e.target.value.trim()=='') { + if (e.target.parentNode.parentNode != null) { + e.target.onblur=null; + e.target.parentNode.remove(); + } + } + } + chedit.onkeydown = function (e) { + if (e.key =='Enter' || e.key == 'Escape' || e.key == 'Tab') { + if (e.target.value.trim() == '') { + if (e.target.parentNode.parentNode != null) { + e.target.onblur = null; + e.target.parentNode.remove(); + } + } + } + } + + // } + + // if (e.key=='Escape') { + // let r = document.createRange(); + // r.setStartAfter(e.target.parentNode); + // document.getSelection().removeAllRanges(); + // document.getSelection().addRange(r); + // e.target.parentNode.remove(); + // e.preventDefault(); + // } + // } akord.appendChild(chedit); return akord; } From a95f45b5d4166d50279920c83a651529b80cff55 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 28 Sep 2022 16:34:45 +0200 Subject: [PATCH 013/664] Editor: Double click chord editing. --- editor/songbook.js | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/editor/songbook.js b/editor/songbook.js index 7017d4b0..d17d8a64 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -42,16 +42,8 @@ function createChord(chord) { a.opacity = "0.2"; e.dataTransfer.effectAllowed = "copyMove"; e.dataTransfer.dropEffect = "move"; - // window.getSelection().removeAllRanges(); - // r=document.createRange() - // r.setStartBefore(e.target.parentNode.parentNode); - // r.setEndAfter(e.target.parentNode.parentNode); - // window.getSelection().addRange(r); - // console.log(e.target.parentNode.parentNode.outerHTML) - console.log(e) e.dataTransfer.setData("songbook/chord", a.childNodes[0].nodeValue); e.dataTransfer.akord = a; - console.log(e); dropped = false; } } @@ -61,11 +53,17 @@ function createChord(chord) { this.opacity = '1.0'; } if (dropped && e.dataTransfer.dropEffect == 'move') { - console.log("REMOVING"); a.parentNode.remove(); } console.warn(e); } + akord.ondblclick = function (e) { + let chEditor = createChordEditor(e.target.innerText); + e.target.parentNode.parentNode.replaceChild( + chEditor, + e.target.parentNode); + chEditor.childNodes[0].focus(); + } ch = document.createElement("span"); ch.className = 'ch'; ch.innerText = chord; @@ -132,7 +130,6 @@ function rowOnKeyDown(event) { } function rowOnDragOver(e) { - console.log( e.dataTransfer.types ); if (e.dataTransfer.types.includes("songbook/chord")) { if (e.altKey) { e.dataTransfer.dropEffect = 'copy'; From 1b7030c292bce1c1037bbc543b0c56eb3b2fce37 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 28 Sep 2022 17:41:56 +0200 Subject: [PATCH 014/664] Rewritting to use a single editor. --- editor/a.html | 1 - editor/songbook.js | 34 ++++++++++++++++++++++------------ 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/editor/a.html b/editor/a.html index 50b6d716..6ec6a3f4 100644 --- a/editor/a.html +++ b/editor/a.html @@ -2,7 +2,6 @@ - diff --git a/editor/songbook.js b/editor/songbook.js index d17d8a64..913a968f 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -143,7 +143,7 @@ function rowOnDragOver(e) { } } -function createRow(row) { +function createLyric() { rowp = document.createElement("div"); rowp.className = 'row'; rowp.contentEditable = true; @@ -161,15 +161,6 @@ function createRow(row) { rowp.ondrop = rowOnDrop; rowp.onkeydown = rowOnKeyDown; - for (let i = 0; i < row.childNodes.length; ++i) { - let node = row.childNodes[i]; - if (node.nodeName == '#text') { - rowp.appendChild(node.cloneNode()); - } else { - rowp.appendChild(createChord(node.attributes['a'].value)); - } - } - return rowp; } @@ -225,6 +216,19 @@ function createChordEditor(v) { return akord; } +function rowToNodes(row) { + let nodes=[]; + for (let i = 0; i < row.childNodes.length; ++i) { + let node = row.childNodes[i]; + if (node.nodeName == '#text') { + nodes.push(node.cloneNode()); + } else { + nodes.push(createChord(node.attributes['a'].value)); + } + } + return nodes; +} + function onLoad() { text = '' + '' @@ -242,9 +246,15 @@ function onLoad() { let pch = predefinedChordsList(); editor.appendChild(pch); + let lyric = createLyric(); + editor.appendChild(lyric); + let verse = xmlDoc.getRootNode().childNodes[0]; let rows = verse.getElementsByTagName('row'); for (let i = 0; i < rows.length; ++i) { - editor.appendChild(createRow(rows[i])); + lyric.append(...rowToNodes(rows[i])); + lyric.append(document.createElement("br")) } -} \ No newline at end of file +} + + From 0bdad22880b9cb5f07f5c097d5be5263a1b7cf4e Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Fri, 30 Sep 2022 22:49:23 +0200 Subject: [PATCH 015/664] First attempt to sanitization (not done). Enter is generating BR's around the text. --- editor/songbook.js | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/editor/songbook.js b/editor/songbook.js index 913a968f..84da16b4 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -155,6 +155,17 @@ function createLyric() { } } }; + rowp.oninput = function (e) { + // sanitize(e.target); + } + rowp.onbeforeinput = function (e) { + if (e.inputType=="insertParagraph") { + //document.getSelection().getRangeAt(0).insertNode(document.createElement("br")); + document.execCommand("insertHTML",false, '
') + e.preventDefault(); + } + console.log("BEFORE", e); + } rowp.spellcheck = false; rowp.contentEditable = 'true'; @@ -229,7 +240,31 @@ function rowToNodes(row) { return nodes; } +function sanitize(lyric) { + for (let i=0; i < lyric.childNodes.length; ++i) { + let node = lyric.childNodes[i] + let parent = node.parentNode + if (node.nodeName=='DIV') { + let next = node.nextSibling; + for (let i = node.childNodes.length - 1; i>=0; --i) { + if (next) { + next = parent.insertBefore( node.childNodes[i], next); + + } else { + console.log(node.childNodes[i]) + next = parent.appendChild(node.childNodes[i]); + } + } + if (next) { + parent.insertBefore(document.createElement("br"), next); + } + node.remove(); + } + } +} + function onLoad() { + //document.execCommand('defaultParagraphSeparator', false, 'br'); text = '' + '' + ' Kiedy stałem w przedświcie a Synaj' From 8fbafcd6d256c1998fbec5c8c7e6a6281c8e5db1 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sun, 2 Oct 2022 11:17:14 +0200 Subject: [PATCH 016/664] Dealing with creation and removal of row (BR). Failed to use 'execCommand' to preserve the undo history for deletion of
. --- editor/songbook.js | 45 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/editor/songbook.js b/editor/songbook.js index 84da16b4..e98d1f20 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -6,6 +6,7 @@ const predefinedChords = ["A", "A2", "A4", "A7", "A7+", "A7/4", "A7/6", "Ais", "d6", "e", "e7", "e9", "f", "fis", "fis7", "g", "gis", "gis7", "h", "h0", "h7", "h7/5-"]; + function predefinedChordsList() { let dl = document.createElement("datalist"); dl.id = "predefinedChords"; @@ -159,12 +160,49 @@ function createLyric() { // sanitize(e.target); } rowp.onbeforeinput = function (e) { - if (e.inputType=="insertParagraph") { + if (e.inputType == "insertParagraph") { //document.getSelection().getRangeAt(0).insertNode(document.createElement("br")); - document.execCommand("insertHTML",false, '
') + if (document.getSelection().isCollapsed + && document.getSelection().rangeCount == 1 + && document.getSelection().getRangeAt(0).startContainer.nodeName==='#text' + && document.getSelection().getRangeAt(0).startContainer.nodeValue[document.getSelection().getRangeAt(0).startOffset]===' ') { + // Don't put additional space if we break just ahead of 'space' + document.execCommand("insertHTML", false, '
') + } else { + document.execCommand("insertHTML", false, '
') + } e.preventDefault(); } - console.log("BEFORE", e); + if (e.inputType == "deleteContentBackward") { + if (document.getSelection().rangeCount == 1 + && document.getSelection().isCollapsed) { + let r = document.getSelection().getRangeAt(0); + if (r.startOffset == 0 && r.startContainer.nodeName == '#text' + && r.startContainer.previousSibling != null && r.startContainer.previousSibling.className==='akord') { + // If the previous element is akord, we want to skip and remove the prev letter. + console.log("Boom", r.startContainer.previousSibling); + if (r.startContainer.previousSibling.previousSibling.nodeName === 'BR') { + + let newr=document.createRange(); + newr.selectNode(r.startContainer.previousSibling.previousSibling); + newr.deleteContents(); + // document.getSelection().removeAllRanges(); + // document.getSelection().addRange(newr); + // + // // document.getSelection().collapse(r.startContainer.previousSibling.previousSibling); + // document.execCommand("insertHTML",false,"Foo"); + e.preventDefault(); + } else { + let newr=document.createRange(); + newr.setStartBefore(r.startContainer.previousSibling); + document.getSelection().removeAllRanges(); + document.getSelection().addRange(newr); + } + } + } + } + console.log("BEFORE", e,document.getSelection()); + console.dir(JSON.stringify(document.getSelection(), null, 4) ); } rowp.spellcheck = false; rowp.contentEditable = 'true'; @@ -187,6 +225,7 @@ function createChordEditor(v) { console.log("On change"); console.log(e.target.parentNode); let newChord = createChord(chedit.value.trim()); + e.target.parentNode.parentNode.replaceChild(newChord, e.target.parentNode); let r = document.createRange(); r.setStartAfter(newChord); From 30abb86367191c10bed35c1764e5a8ebffb059f5 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Mon, 3 Oct 2022 16:27:21 +0200 Subject: [PATCH 017/664] First version of the 'verse'. --- editor/a.html | 1 + editor/song.css | 7 +++-- editor/songbook.js | 74 +++++++++++++++++++++++++++++++++++++--------- editor/verse.css | 24 +++++++++++++++ editor/verse.js | 40 +++++++++++++++++++++++++ 5 files changed, 130 insertions(+), 16 deletions(-) create mode 100644 editor/verse.css create mode 100644 editor/verse.js diff --git a/editor/a.html b/editor/a.html index 6ec6a3f4..7fa46b07 100644 --- a/editor/a.html +++ b/editor/a.html @@ -2,6 +2,7 @@ + diff --git a/editor/song.css b/editor/song.css index 3b6f434d..5bc5910a 100644 --- a/editor/song.css +++ b/editor/song.css @@ -3,8 +3,8 @@ h1 { } div.row { - white-space: pre; - padding-left: 0.3em; + white-space: pre; /* consider turning off*/ + adding-left: 0.3em; } span.akord { @@ -52,6 +52,9 @@ span.akord span.ch { font-weight: bold; } +song-verse { + top-margin: 10em; +} /*div.over_false span.lyric span.ch {*/ /* display: none;*/ diff --git a/editor/songbook.js b/editor/songbook.js index e98d1f20..40eb82ae 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -88,11 +88,16 @@ function getRangeForCursor(e) { return range; } +function acceptsTextAndChords(element) { + return element.nodeName==='SONG-VERSE' + || element.nodeName==="SONG-BIS"; +} + function rowOnDrop(e) { d = e.dataTransfer.getData("songbook/chord"); if (d != null && d != "") { range = getRangeForCursor(e) - if (range.commonAncestorContainer.parentNode.className == 'row') { + if (acceptsTextAndChords(range.commonAncestorContainer.parentNode)) { range.insertNode(createChord(d)); dropped = true; } @@ -106,9 +111,9 @@ function canInsertChord() { let r = window.getSelection().getRangeAt(0); console.warn(r.startContainer); let x = - (r.startContainer.className == 'row') + acceptsTextAndChords(r.startContainer) || (r.startContainer.nodeName == '#text' - && r.startContainer.parentNode.className == 'row'); + && acceptsTextAndChords(r.startContainer.parentNode)); return x; } @@ -177,12 +182,11 @@ function createLyric() { if (document.getSelection().rangeCount == 1 && document.getSelection().isCollapsed) { let r = document.getSelection().getRangeAt(0); - if (r.startOffset == 0 && r.startContainer.nodeName == '#text' + // If the previous element is akord, we want to skip and remove the prev letter. + if (r.startContainer.nodeName == '#text' && r.startOffset == 0 && r.startContainer.previousSibling != null && r.startContainer.previousSibling.className==='akord') { - // If the previous element is akord, we want to skip and remove the prev letter. - console.log("Boom", r.startContainer.previousSibling); + // If the letter is BR, we need to remove it in a special way. if (r.startContainer.previousSibling.previousSibling.nodeName === 'BR') { - let newr=document.createRange(); newr.selectNode(r.startContainer.previousSibling.previousSibling); newr.deleteContents(); @@ -192,17 +196,38 @@ function createLyric() { // // document.getSelection().collapse(r.startContainer.previousSibling.previousSibling); // document.execCommand("insertHTML",false,"Foo"); e.preventDefault(); + return; } else { let newr=document.createRange(); newr.setStartBefore(r.startContainer.previousSibling); document.getSelection().removeAllRanges(); document.getSelection().addRange(newr); + e.preventDefault(); + return; } + } else if (r.startContainer.nodeName == '#text' && r.startOffset <= 1 + && r.startContainer.previousSibling.nodeName==='BR') { + let newr=document.createRange(); + newr.setStartBefore(r.startContainer.previousSibling); + newr.setEnd(r.startContainer, r.startOffset); + newr.deleteContents(); + e.preventDefault(); + } else if (r.startContainer.nodeName == '#text' && r.startOffset == 0 + && r.startContainer.previousSibling.nodeName==='#text') { + let newr=document.createRange(); + newr.setEndBefore(r.startContainer); + newr.setStart(r.startContainer.previousSibling, r.startContainer.previousSibling.length - 1); + console.log(newr); + newr.deleteContents(); + e.preventDefault(); } + // && r.startContainer.previousSibling != null && r.startContainer.previousSibling.className==='akord') { + //console.log("START", r.startContainer, r.startOffset, r.startContainer.previousSibling, r.extractContents()) + //} } } - console.log("BEFORE", e,document.getSelection()); - console.dir(JSON.stringify(document.getSelection(), null, 4) ); + //console.log("BEFORE", e,document.getSelection()); + //console.dir(JSON.stringify(document.getSelection(), null, 4) ); } rowp.spellcheck = false; rowp.contentEditable = 'true'; @@ -303,13 +328,18 @@ function sanitize(lyric) { } function onLoad() { + SongVerseInit(); + //document.execCommand('defaultParagraphSeparator', false, 'br'); text = '' + '' + + ' ' + ' Kiedy stałem w przedświcie a Synaj' + ' Prawdę głosił przez trąby wiatru' + + ' ' + ' Zasmerczyły się chmury igliwiem' + ' Bure świerki o góry wsparte' + + ' ' + ''; parser = new DOMParser(); @@ -323,12 +353,28 @@ function onLoad() { let lyric = createLyric(); editor.appendChild(lyric); - let verse = xmlDoc.getRootNode().childNodes[0]; - let rows = verse.getElementsByTagName('row'); - for (let i = 0; i < rows.length; ++i) { - lyric.append(...rowToNodes(rows[i])); - lyric.append(document.createElement("br")) + let verses = xmlDoc.getRootNode().childNodes[0].getElementsByTagName('verse'); + for (let vi = 0; vi < verses.length; ++vi) { + let verse = verses[vi]; + let songVerse = document.createElement("song-verse"); + let d= document.createElement("div"); + lyric.appendChild(songVerse); + songVerse.appendChild(d); + let rows = verse.getElementsByTagName('row'); + for (let i = 0; i < rows.length; ++i) { + d.append(...rowToNodes(rows[i])); + d.append(document.createElement("br")) + } + + let san = document.createElement("span"); + san.innerText = "[sanitize verse]"; + san.style.color = 'blue'; + san.onclick = function (e) { sanitize(songVerse); } + lyric.appendChild(san); } + + + } diff --git a/editor/verse.css b/editor/verse.css new file mode 100644 index 00000000..8f8aac10 --- /dev/null +++ b/editor/verse.css @@ -0,0 +1,24 @@ +div.verse { + display: grid; + grid-template-columns: max-content max-content; + white-space: normal; +} + +div.verse_meta { + grid-column: 1 / 2; + grid-row: 1; +/* writing-mode: vertical-rl; + text-orientation: mixed;*/ + width: 3em; + margin-top: 0.9em; + text-align: center; + font-size: small; + /*vertical-align: center; + margin: auto;*/ +} + +div.verse_main { + grid-row: 1; + grid-column: 2/2; + margin-left: 1em; +} diff --git a/editor/verse.js b/editor/verse.js new file mode 100644 index 00000000..28cfde21 --- /dev/null +++ b/editor/verse.js @@ -0,0 +1,40 @@ +class SongVerse extends HTMLElement { + constructor() { + super(); + + const template = document.createElement('template'); + template.innerHTML = ` +
+ +
+ +
+ + +
+
+
+
+ `; + + const shadow = this.attachShadow({ mode: "closed" }); + shadow.appendChild(template.content.cloneNode(true)); + this.nr=shadow.getElementById("nr"); + } + + connectedCallback() { + for (let i=0; i < this.parentNode.childNodes.length; ++i) { + if (this.parentNode.childNodes[i] == this) { + this.nr.innerText = (i+1)+"."; + } + } + } + + attributeChangedCallback() { + console.log("onChange", this); + } +} + +function SongVerseInit() { + customElements.define("song-verse", SongVerse); +} \ No newline at end of file From f993eea60d5b2b9bc44bb441f662e7d36450c97d Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Mon, 3 Oct 2022 23:45:35 +0200 Subject: [PATCH 018/664] Chords rewritten to be a separate custom tag (song-ch). --- editor/a.html | 1 + editor/ch.css | 44 +++++++++++++ editor/ch.js | 125 ++++++++++++++++++++++++++++++++++++ editor/package.json | 3 + editor/song.css | 48 ++------------ editor/songbook.js | 151 ++++++++------------------------------------ editor/verse.js | 2 +- 7 files changed, 204 insertions(+), 170 deletions(-) create mode 100644 editor/ch.css create mode 100644 editor/ch.js create mode 100644 editor/package.json diff --git a/editor/a.html b/editor/a.html index 7fa46b07..bbe751ed 100644 --- a/editor/a.html +++ b/editor/a.html @@ -2,6 +2,7 @@ + diff --git a/editor/ch.css b/editor/ch.css new file mode 100644 index 00000000..3a289aae --- /dev/null +++ b/editor/ch.css @@ -0,0 +1,44 @@ +span.cho { + display: inline-block; + position: relative; + left: 0px; + width:0px; + top: -1.3em; + margin-top: 1.5em; + overflow-wrap: normal; + hyphens: none; + font-family: Arial; +} + +span.cho span.ch { + display: inline-block; + position: absolute; + left: 0px; + font-size: xx-small; + /*//width:30px;*/ + font-weight: bold; + overflow-wrap: normal; + hyphens: none; + user-select: all; +} + +span.cho input.ch { + width: 6em; + font-size: xx-small; + display: inline-block; + position: absolute; + left: 0px; + top: -0.12em; + font-weight: bold; + overflow-wrap: normal; + hyphens: none; + z-index: 5; + background-color: rgba(255,255,0,0.5); + border-width: 0px; +} + +span.cho span.ch { + width: fit-content; + overflow-wrap: normal; + font-weight: bold; +} diff --git a/editor/ch.js b/editor/ch.js new file mode 100644 index 00000000..f28ee95d --- /dev/null +++ b/editor/ch.js @@ -0,0 +1,125 @@ +const predefinedChords = ["A", "A2", "A4", "A7", "A7+", "A7/4", "A7/6", "Ais", + "B", "C", "C0", "C7", "C7+", "C9", "C9/5", "Cis", "Cis0", "D", "D2", "D4", + "D7", "D7+", "Dis", "E", "E0", "E5+", "E7", "E7/4", "F", "F0", "F7", "F7+", + "Fis", "Fis0", "Fis7", "G", "G0", "G6", "G7", "GC", "Gis", "H", "H6/7", "H7", + "a", "a6", "a7", "a7+", "a7/9", "ais", "b", "c", "cis", "cis7", "d", "d2", + "d6", "e", "e7", "e9", "f", "fis", "fis7", "g", "gis", "gis7", "h", "h0", + "h7", "h7/5-"]; + + +class SongCh extends HTMLElement { + constructor() { + super(); + + const template = document.createElement('template'); + template.innerHTML = + ``+ + `` + + `` + + `` + + ``; + + const shadow = this.attachShadow({ mode: "open" }); + shadow.appendChild(template.content.cloneNode(true)); + shadow.appendChild(predefinedChordsList()); + + this.ch = shadow.getElementById("ch"); + this.che = shadow.getElementById("che"); + + this.ch.ondblclick = (event) => { + console.log("CH-double-click"); + this.setAttribute("editing", "true"); + this.updateEditing(); + }; + this.che.onchange = (event) => { + this.setAttribute("a", this.che.value); + }; + this.che.onblur = (event) => { + this.setAttribute("editing", "false"); + this.updateEditing(); + + this.selectParent(); + } + this.ch.onmousedown = (event) => { + // We need to prevent the parent to catch the double click + // and intepret as chord creation. + event.stopPropagation(); + event.stopImmediatePropagation(); + } + this.onkeydown = (e) => { + if (e.key == 'Enter' || e.key == 'Escape' || e.key == 'Tab') { + if (this.che.value.trim() == '') { + this.remove(); + return; + } + } + if (e.key == 'Enter') { + this.selectParent(); + e.preventDefault(); + } + } + this.updateEditing(); + } + + isEditing() { + return this.getAttribute("editing")==="true"; + } + + selectParent() { + this.parentNode.focus(); + let r = document.createRange(); + r.setStartAfter(this); + document.getSelection().removeAllRanges(); + document.getSelection().addRange(r); + } + + updateEditing() { + this.che.hidden=!this.isEditing(); + this.che.style.display = this.isEditing() ? 'inline' : 'none'; + this.ch.hidden=this.isEditing(); + this.ch.style.display = !this.isEditing() ? 'inline' : 'none'; + if (this.isEditing()) { + this.che.value = this.getAttribute("a"); + // this.che.select(); + this.che.focus(); + } + } + + focus(options) { + //super.focus(options); + if (this.isEditing()) { + this.che.focus(); + } + } + + static get observedAttributes() { + return ['a', "editing"]; + } + + attributeChangedCallback() { + this.updateChord(); + this.updateEditing(); + } + + updateChord() { + this.ch.innerText=this.getAttribute("a"); + this.che.value=this.getAttribute("a"); + } +} + +function predefinedChordsList() { + let dl = document.createElement("datalist"); + dl.id = "predefinedChords"; + predefinedChords.forEach( + (ch) => { + opt = document.createElement("option"); + opt.value = ch; + dl.appendChild(opt); + } + ); + return dl; +} + +function SongChInit(parent) { + customElements.define("song-ch", SongCh); +} \ No newline at end of file diff --git a/editor/package.json b/editor/package.json new file mode 100644 index 00000000..aead43de --- /dev/null +++ b/editor/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} \ No newline at end of file diff --git a/editor/song.css b/editor/song.css index 5bc5910a..2be7d678 100644 --- a/editor/song.css +++ b/editor/song.css @@ -7,55 +7,15 @@ div.row { adding-left: 0.3em; } -span.akord { - display: inline-block; - position: relative; - left: 0px; - width:0px; - top: -1.3em; - margin-top: 1.5em; - overflow-wrap: normal; - hyphens: none; - font-family: Arial; -} - -span.akord span.ch { - display: inline-block; - position: absolute; - left: 0px; - font-size: xx-small; - /*//width:30px;*/ - font-weight: bold; - overflow-wrap: normal; - hyphens: none; - user-select: all; -} - -span.akord input.ch { - width: 6em; - font-size: xx-small; - display: inline-block; - position: absolute; - left: 0px; - top: -0.12em; - font-weight: bold; - overflow-wrap: normal; - hyphens: none; - z-index: 5; - background-color: rgba(255,255,255,0.5); - border-width: 0px; -} - -span.akord span.ch { - width: fit-content; - overflow-wrap: normal; - font-weight: bold; -} song-verse { top-margin: 10em; } +/*song-ch {*/ +/* user-select: all;*/ +/*}*/ + /*div.over_false span.lyric span.ch {*/ /* display: none;*/ /*}*/ diff --git a/editor/songbook.js b/editor/songbook.js index 40eb82ae..d98f83e8 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -1,77 +1,28 @@ -const predefinedChords = ["A", "A2", "A4", "A7", "A7+", "A7/4", "A7/6", "Ais", - "B", "C", "C0", "C7", "C7+", "C9", "C9/5", "Cis", "Cis0", "D", "D2", "D4", - "D7", "D7+", "Dis", "E", "E0", "E5+", "E7", "E7/4", "F", "F0", "F7", "F7+", - "Fis", "Fis0", "Fis7", "G", "G0", "G6", "G7", "GC", "Gis", "H", "H6/7", "H7", - "a", "a6", "a7", "a7+", "a7/9", "ais", "b", "c", "cis", "cis7", "d", "d2", - "d6", "e", "e7", "e9", "f", "fis", "fis7", "g", "gis", "gis7", "h", "h0", - "h7", "h7/5-"]; - - -function predefinedChordsList() { - let dl = document.createElement("datalist"); - dl.id = "predefinedChords"; - predefinedChords.forEach( - (ch) => { - opt = document.createElement("option"); - opt.value = ch; - dl.appendChild(opt); - } - ); - return dl; -} - -function getChordNode(node) { - if (node.className == 'akord') { - return a.getElementsByTagName('ch')[0]; - } - while (node != null && node.className != 'ch') { - console.log('look', node); - node = node.parentNode; - } - return node; -} let dropped = null; function createChord(chord) { - akord = document.createElement("span"); - akord.className = 'akord'; - akord.draggable = true; - akord.ondragstart = function (e) { - a = getChordNode(e.target); - if (a != null) { - a.opacity = "0.2"; - e.dataTransfer.effectAllowed = "copyMove"; - e.dataTransfer.dropEffect = "move"; - e.dataTransfer.setData("songbook/chord", a.childNodes[0].nodeValue); - e.dataTransfer.akord = a; - dropped = false; - } + ch = document.createElement("song-ch"); + //akord.className = 'akord'; + ch.draggable = true; + ch.ondragstart = (e) => { + e.target.opacity = "0.2"; + e.dataTransfer.effectAllowed = "copyMove"; + e.dataTransfer.dropEffect = "move"; + e.dataTransfer.setData("songbook/chord", e.target.getAttribute("a")); + dropped = false; } - akord.ondragend = function (e) { - a = getChordNode(e.target); - if (a != null) { - this.opacity = '1.0'; - } + ch.ondragend = (e) => { + e.target.opacity = '1.0'; if (dropped && e.dataTransfer.dropEffect == 'move') { - a.parentNode.remove(); + e.target.remove(); } console.warn(e); } - akord.ondblclick = function (e) { - let chEditor = createChordEditor(e.target.innerText); - e.target.parentNode.parentNode.replaceChild( - chEditor, - e.target.parentNode); - chEditor.childNodes[0].focus(); - } - ch = document.createElement("span"); - ch.className = 'ch'; - ch.innerText = chord; - ch.contentEditable = 'false'; - akord.appendChild(ch); - return akord; - + ch.setAttribute('a', chord); + ch.draggable = true; + ch.style.userSelect='all'; + return ch; } function getRangeForCursor(e) { @@ -89,8 +40,9 @@ function getRangeForCursor(e) { } function acceptsTextAndChords(element) { - return element.nodeName==='SONG-VERSE' - || element.nodeName==="SONG-BIS"; + return element != null && (element.nodeName==='SONG-VERSE' + || element.nodeName==="SONG-BIS" + || (element.classList != null && element.classList.contains("accepts-ch"))); } function rowOnDrop(e) { @@ -119,9 +71,10 @@ function canInsertChord() { function insertChordHere(ch) { if (canInsertChord()) { - let chedit = createChordEditor(""); + let chedit = createChord(""); + chedit.setAttribute("editing", "true"); window.getSelection().getRangeAt(0).insertNode(chedit); - chedit.childNodes[0].focus(); + chedit.focus(); return true; } return false; @@ -156,6 +109,7 @@ function createLyric() { rowp.ondragover = rowOnDragOver; rowp.onmousedown=function (e) { if (e.detail > 1 && canInsertChord()) { + console.log("Parent - row - up"); if (insertChordHere("")) { e.preventDefault(); } @@ -238,58 +192,6 @@ function createLyric() { return rowp; } -function createChordEditor(v) { - akord = document.createElement("span"); - akord.className = 'akord'; - chedit = document.createElement("input"); - chedit.className = "ch"; - chedit.type = "search"; - chedit.value = v; - chedit.setAttribute("list", "predefinedChords"); - chedit.onchange = function (e) { - console.log("On change"); - console.log(e.target.parentNode); - let newChord = createChord(chedit.value.trim()); - - e.target.parentNode.parentNode.replaceChild(newChord, e.target.parentNode); - let r = document.createRange(); - r.setStartAfter(newChord); - document.getSelection().removeAllRanges(); - document.getSelection().addRange(r); - } - chedit.onblur = function (e) { - if (e.target.value.trim()=='') { - if (e.target.parentNode.parentNode != null) { - e.target.onblur=null; - e.target.parentNode.remove(); - } - } - } - chedit.onkeydown = function (e) { - if (e.key =='Enter' || e.key == 'Escape' || e.key == 'Tab') { - if (e.target.value.trim() == '') { - if (e.target.parentNode.parentNode != null) { - e.target.onblur = null; - e.target.parentNode.remove(); - } - } - } - } - - // } - - // if (e.key=='Escape') { - // let r = document.createRange(); - // r.setStartAfter(e.target.parentNode); - // document.getSelection().removeAllRanges(); - // document.getSelection().addRange(r); - // e.target.parentNode.remove(); - // e.preventDefault(); - // } - // } - akord.appendChild(chedit); - return akord; -} function rowToNodes(row) { let nodes=[]; @@ -328,7 +230,6 @@ function sanitize(lyric) { } function onLoad() { - SongVerseInit(); //document.execCommand('defaultParagraphSeparator', false, 'br'); text = '' @@ -346,9 +247,8 @@ function onLoad() { xmlDoc = parser.parseFromString(text, "text/xml"); let editor = document.getElementById("editor"); - - let pch = predefinedChordsList(); - editor.appendChild(pch); + SongChInit(editor); + SongVerseInit(); let lyric = createLyric(); editor.appendChild(lyric); @@ -358,6 +258,7 @@ function onLoad() { let verse = verses[vi]; let songVerse = document.createElement("song-verse"); let d= document.createElement("div"); + d.classList.add("accepts-ch") lyric.appendChild(songVerse); songVerse.appendChild(d); let rows = verse.getElementsByTagName('row'); diff --git a/editor/verse.js b/editor/verse.js index 28cfde21..15f8216f 100644 --- a/editor/verse.js +++ b/editor/verse.js @@ -4,8 +4,8 @@ class SongVerse extends HTMLElement { const template = document.createElement('template'); template.innerHTML = ` +
-
From 60722a1a68771beb2542da8ac2cb5e9482a55b46 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 4 Oct 2022 10:52:40 +0200 Subject: [PATCH 019/664] Delete button more or less working --- editor/song.css | 5 +- editor/songbook.js | 205 ++++++++++++++++++++++++++------------------- 2 files changed, 124 insertions(+), 86 deletions(-) diff --git a/editor/song.css b/editor/song.css index 2be7d678..13a096f9 100644 --- a/editor/song.css +++ b/editor/song.css @@ -3,7 +3,7 @@ h1 { } div.row { - white-space: pre; /* consider turning off*/ +/* white-space: pre; /* consider turning off*/*/ adding-left: 0.3em; } @@ -12,6 +12,9 @@ song-verse { top-margin: 10em; } +song-row { + display: block; +} /*song-ch {*/ /* user-select: all;*/ /*}*/ diff --git a/editor/songbook.js b/editor/songbook.js index d98f83e8..15d63bf2 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -3,7 +3,6 @@ let dropped = null; function createChord(chord) { ch = document.createElement("song-ch"); - //akord.className = 'akord'; ch.draggable = true; ch.ondragstart = (e) => { e.target.opacity = "0.2"; @@ -17,12 +16,12 @@ function createChord(chord) { if (dropped && e.dataTransfer.dropEffect == 'move') { e.target.remove(); } - console.warn(e); } ch.setAttribute('a', chord); ch.draggable = true; ch.style.userSelect='all'; return ch; + return ch; } function getRangeForCursor(e) { @@ -40,16 +39,15 @@ function getRangeForCursor(e) { } function acceptsTextAndChords(element) { - return element != null && (element.nodeName==='SONG-VERSE' - || element.nodeName==="SONG-BIS" - || (element.classList != null && element.classList.contains("accepts-ch"))); + return ((element.classList != null) && element.classList.contains("accepts-ch")); } function rowOnDrop(e) { d = e.dataTransfer.getData("songbook/chord"); if (d != null && d != "") { range = getRangeForCursor(e) - if (acceptsTextAndChords(range.commonAncestorContainer.parentNode)) { + a=acceptsTextAndChords(range.commonAncestorContainer.parentNode); + if (a) { range.insertNode(createChord(d)); dropped = true; } @@ -61,11 +59,11 @@ function canInsertChord() { //console.warn(window.getSelection().getRangeAt(0)); if (window.getSelection().rangeCount < 1) {return false; } let r = window.getSelection().getRangeAt(0); - console.warn(r.startContainer); + // console.warn(r.startContainer); let x = - acceptsTextAndChords(r.startContainer) - || (r.startContainer.nodeName == '#text' - && acceptsTextAndChords(r.startContainer.parentNode)); + //acceptsTextAndChords(r.startContainer); + (r.startContainer.nodeName == '#text' + && acceptsTextAndChords(r.startContainer.parentNode)); return x; } @@ -98,10 +96,20 @@ function rowOnDragOver(e) { range = getRangeForCursor(e); document.getSelection().removeAllRanges(); document.getSelection().addRange(range); + if (!canInsertChord()) { + e.dataTransfer.dropEffect = 'none'; + } e.preventDefault(); } } +function setCursorBefore(node) { + let newr=document.createRange(); + newr.setStartBefore(node); + document.getSelection().removeAllRanges(); + document.getSelection().addRange(newr); +} + function createLyric() { rowp = document.createElement("div"); rowp.className = 'row'; @@ -116,70 +124,92 @@ function createLyric() { } }; rowp.oninput = function (e) { + console.log("Oninput", e); // sanitize(e.target); } rowp.onbeforeinput = function (e) { - if (e.inputType == "insertParagraph") { - //document.getSelection().getRangeAt(0).insertNode(document.createElement("br")); - if (document.getSelection().isCollapsed - && document.getSelection().rangeCount == 1 - && document.getSelection().getRangeAt(0).startContainer.nodeName==='#text' - && document.getSelection().getRangeAt(0).startContainer.nodeValue[document.getSelection().getRangeAt(0).startOffset]===' ') { - // Don't put additional space if we break just ahead of 'space' - document.execCommand("insertHTML", false, '
') - } else { - document.execCommand("insertHTML", false, '
') - } - e.preventDefault(); - } + // if (e.inputType == "insertParagraph") { + // //document.getSelection().getRangeAt(0).insertNode(document.createElement("br")); + // if (document.getSelection().isCollapsed + // && document.getSelection().rangeCount == 1 + // && document.getSelection().getRangeAt(0).startContainer.nodeName==='#text' + // && document.getSelection().getRangeAt(0).startContainer.nodeValue[document.getSelection().getRangeAt(0).startOffset]===' ') { + // // Don't put additional space if we break just ahead of 'space' + // document.execCommand("insertHTML", false, '
') + // } else { + // document.execCommand("insertHTML", false, '
 ') + // } + // e.preventDefault(); + // } if (e.inputType == "deleteContentBackward") { if (document.getSelection().rangeCount == 1 && document.getSelection().isCollapsed) { let r = document.getSelection().getRangeAt(0); - // If the previous element is akord, we want to skip and remove the prev letter. + // If the previous element is chord, we want to skip and remove the prev letter. if (r.startContainer.nodeName == '#text' && r.startOffset == 0 - && r.startContainer.previousSibling != null && r.startContainer.previousSibling.className==='akord') { - // If the letter is BR, we need to remove it in a special way. - if (r.startContainer.previousSibling.previousSibling.nodeName === 'BR') { - let newr=document.createRange(); - newr.selectNode(r.startContainer.previousSibling.previousSibling); - newr.deleteContents(); - // document.getSelection().removeAllRanges(); - // document.getSelection().addRange(newr); - // - // // document.getSelection().collapse(r.startContainer.previousSibling.previousSibling); - // document.execCommand("insertHTML",false,"Foo"); - e.preventDefault(); - return; - } else { - let newr=document.createRange(); - newr.setStartBefore(r.startContainer.previousSibling); - document.getSelection().removeAllRanges(); - document.getSelection().addRange(newr); + && r.startContainer.previousSibling != null && r.startContainer.previousSibling.nodeName==='SONG-CH') { + setCursorBefore(r.startContainer.previousSibling); + r = document.getSelection().getRangeAt(0); + // We want to continue in case we want to merge rows. + } + if (r.startContainer.nodeName=='SONG-ROW' && r.startOffset==0) { + if (r.startContainer.previousSibling != null + && r.startContainer.previousSibling.nodeName ==='SONG-ROW') { + let first=r.startContainer.childNodes[0]; + let documentFragment = document.createDocumentFragment(); + while (r.startContainer.childNodes.length>0) { + documentFragment.appendChild(r.startContainer.childNodes[0]); + } + r.startContainer.previousSibling.appendChild(documentFragment); + setCursorBefore(first); e.preventDefault(); - return; } - } else if (r.startContainer.nodeName == '#text' && r.startOffset <= 1 - && r.startContainer.previousSibling.nodeName==='BR') { - let newr=document.createRange(); - newr.setStartBefore(r.startContainer.previousSibling); - newr.setEnd(r.startContainer, r.startOffset); - newr.deleteContents(); - e.preventDefault(); - } else if (r.startContainer.nodeName == '#text' && r.startOffset == 0 - && r.startContainer.previousSibling.nodeName==='#text') { - let newr=document.createRange(); - newr.setEndBefore(r.startContainer); - newr.setStart(r.startContainer.previousSibling, r.startContainer.previousSibling.length - 1); - console.log(newr); - newr.deleteContents(); - e.preventDefault(); } + + //console.log(r, r.startContainer, r.startContainer.nodeName, r.startOffset); + // // If the letter is BR, we need to remove it in a special way. + // if (r.startContainer.previousSibling.previousSibling.nodeName === 'BR') { + // let newr=document.createRange(); + // newr.selectNode(r.startContainer.previousSibling.previousSibling); + // newr.deleteContents(); + // // document.getSelection().removeAllRanges(); + // // document.getSelection().addRange(newr); + // // + // // // document.getSelection().collapse(r.startContainer.previousSibling.previousSibling); + // // document.execCommand("insertHTML",false,"Foo"); + // e.preventDefault(); + // return; + // } else { + // let newr=document.createRange(); + // newr.setStartBefore(r.startContainer.previousSibling); + // document.getSelection().removeAllRanges(); + // document.getSelection().addRange(newr); + // e.preventDefault(); + // return; + // } + // } else if (r.startContainer.nodeName == '#text' && r.startOffset <= 1 + // && r.startContainer.previousSibling.nodeName==='BR') { + // let newr=document.createRange(); + // newr.setStartBefore(r.startContainer.previousSibling); + // newr.setEnd(r.startContainer, r.startOffset); + // newr.deleteContents(); + // e.preventDefault(); + // } else if (r.startContainer.nodeName == '#text' && r.startOffset == 0 + // && r.startContainer.previousSibling.nodeName==='#text') { + // let newr=document.createRange(); + // newr.setEndBefore(r.startContainer); + // newr.setStart(r.startContainer.previousSibling, r.startContainer.previousSibling.length - 1); + // console.log(newr); + // newr.deleteContents(); + // e.preventDefault(); + // } // && r.startContainer.previousSibling != null && r.startContainer.previousSibling.className==='akord') { //console.log("START", r.startContainer, r.startOffset, r.startContainer.previousSibling, r.extractContents()) //} } } + let r = document.getSelection().getRangeAt(0); + console.log(r, r.startContainer, r.startContainer.nodeName, r.startOffset); //console.log("BEFORE", e,document.getSelection()); //console.dir(JSON.stringify(document.getSelection(), null, 4) ); } @@ -194,40 +224,45 @@ function createLyric() { function rowToNodes(row) { + let newRow = document.createElement("song-row"); + newRow.classList.add("accepts-ch"); let nodes=[]; for (let i = 0; i < row.childNodes.length; ++i) { let node = row.childNodes[i]; if (node.nodeName == '#text') { - nodes.push(node.cloneNode()); + let n = node.cloneNode(); + newRow.appendChild(n); + let regex = / /g; + n.nodeValue = n.nodeValue.replaceAll(regex, "\u00a0"); } else { - nodes.push(createChord(node.attributes['a'].value)); + newRow.appendChild(createChord(node.attributes['a'].value)); } } - return nodes; + return [newRow]; } -function sanitize(lyric) { - for (let i=0; i < lyric.childNodes.length; ++i) { - let node = lyric.childNodes[i] - let parent = node.parentNode - if (node.nodeName=='DIV') { - let next = node.nextSibling; - for (let i = node.childNodes.length - 1; i>=0; --i) { - if (next) { - next = parent.insertBefore( node.childNodes[i], next); - - } else { - console.log(node.childNodes[i]) - next = parent.appendChild(node.childNodes[i]); - } - } - if (next) { - parent.insertBefore(document.createElement("br"), next); - } - node.remove(); - } - } -} +// function sanitize(lyric) { +// for (let i=0; i < lyric.childNodes.length; ++i) { +// let node = lyric.childNodes[i] +// let parent = node.parentNode +// if (node.nodeName=='DIV') { +// let next = node.nextSibling; +// for (let i = node.childNodes.length - 1; i>=0; --i) { +// if (next) { +// next = parent.insertBefore( node.childNodes[i], next); +// +// } else { +// console.log(node.childNodes[i]) +// next = parent.appendChild(node.childNodes[i]); +// } +// } +// if (next) { +// parent.insertBefore(document.createElement("br"), next); +// } +// node.remove(); +// } +// } +// } function onLoad() { @@ -258,13 +293,13 @@ function onLoad() { let verse = verses[vi]; let songVerse = document.createElement("song-verse"); let d= document.createElement("div"); - d.classList.add("accepts-ch") + // d.classList.add("accepts-ch") lyric.appendChild(songVerse); songVerse.appendChild(d); let rows = verse.getElementsByTagName('row'); for (let i = 0; i < rows.length; ++i) { d.append(...rowToNodes(rows[i])); - d.append(document.createElement("br")) + // d.append(document.createElement("br")) } let san = document.createElement("span"); From 03da763f9319c2f39ba83792fe5c349ba5af0e3b Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 4 Oct 2022 19:40:24 +0200 Subject: [PATCH 020/664] SongBody factored to separate component. --- editor/a.html | 5 +- editor/ch.js | 2 +- editor/sanitize.js | 202 +++++++++++++++++++++++++++++++++ editor/song.css | 16 ++- editor/songbody.js | 168 ++++++++++++++++++++++++++++ editor/songbook.js | 272 ++++++++++++++------------------------------- 6 files changed, 471 insertions(+), 194 deletions(-) create mode 100644 editor/sanitize.js create mode 100644 editor/songbody.js diff --git a/editor/a.html b/editor/a.html index bbe751ed..6071285c 100644 --- a/editor/a.html +++ b/editor/a.html @@ -5,11 +5,14 @@ + + +

Song editor

-
+
diff --git a/editor/ch.js b/editor/ch.js index f28ee95d..2d180c10 100644 --- a/editor/ch.js +++ b/editor/ch.js @@ -19,7 +19,7 @@ class SongCh extends HTMLElement { `` + ``; - const shadow = this.attachShadow({ mode: "open" }); + const shadow = this.attachShadow({ mode: "closed" }); shadow.appendChild(template.content.cloneNode(true)); shadow.appendChild(predefinedChordsList()); diff --git a/editor/sanitize.js b/editor/sanitize.js new file mode 100644 index 00000000..f85ed0b5 --- /dev/null +++ b/editor/sanitize.js @@ -0,0 +1,202 @@ +// function traverse() { +// +// } +// +// enum Level { +// SONG, +// VERSE, +// BIS, +// ROW +// } +// +// function sanitize(dom) { +// +// } +// +// function nodeType(node) { +// if (node.nodeName==='DIV') { +// return "DIV." + node.className; +// } else { +// node.nodeName; +// } +// } + +function findAncestor(p, nodeName) { + while (p != null) { + if (p.nodeName === nodeName) { + return p; + } + p = p.parentNode; + } +} + +function nestToBody(parent) { + let p = findAncestor(parent, "SONG-BODY"); + if (p) { return p; } + let body = document.createElement("song-body"); + body.contentEditable=true; + parent.appendChild(body); + return body; +} + +function nestToVerseOrBis(parent) { + let p = findAncestor(parent, "SONG-BIS"); + if (p) { return p; } + p = findAncestor(parent, "SONG-VERSE"); + if (p) { return p; } + + let newParent = nestToBody(parent); + let verse = document.createElement("song-verse"); + newParent.appendChild(verse); + return verse; +} + +function nestToRows(parent) { + let p = findAncestor(parent, "SONG-ROWS"); + if (p) { + return p; + } else { + let newParent = nestToVerseOrBis(parent); + let rows = document.createElement("song-rows"); + newParent.appendChild(rows); + return rows; + } +} + +function nestToRow(parent, forceNew=false) { + if (parent.nodeName === "SONG-ROW" && !forceNew) { + return parent; + } else { + let newParent = nestToRows(parent); + let row = document.createElement("song-row"); + newParent.appendChild(row); + return row; + } +} +// +// switch parent.nodeName { +// case "SONG-BODY": +// +// case "SONG-ROW": +// return parent; +// case "SONG-BIS": +// case "SONG-VERSE": +// // not yet supported +// row = document.createElement("song-row"); +// parent.appendChild(row); +// return row; +// default: +// verse = document.createElement("song-verse"); +// return verse; +// } +// } +// +function removeAllChildren(node) { + while(node.childNodes.length > 0) { + node.removeChild(node.childNodes[0]); + } +} + +function traverseChilds(parent, childNodes) { + let ns = []; + childNodes.forEach( (n) => { ns.push(n); } ); + ns.forEach( (n) => { traverse(parent, n); } ); +} + +// // parent - is sanitized parent of tag (song, song-verse(div), song-bis(div), song-row(div)) +// // the call responsibility is to process the node and put it into parent. +function traverse(parent, node) { + node.style=null; + switch (node.nodeName) { + + // BASIC + case '#text' : { + let newParent = nestToRow(parent); + // if (newParent != node.parentNode) { + newParent.appendChild(node); + // } + return; + } + case 'SONG-CH': { + removeAllChildren(node); + let newParent = nestToRow(parent); + // if (newParent != node.parentNode) { + newParent.appendChild(node); + // } + return; + } + case 'SONG-ROW': { + let newParent = nestToRows(parent); + // if (newParent != node.parentNode) { + newParent.appendChild(node); + // } + traverseChilds(node, node.childNodes); + return; + } + case 'SONG-ROWS': { + let newParent = nestToVerseOrBis(parent); + // if (parent != newParent) { + newParent.appendChild(node); + // } + traverseChilds(node, node.childNodes); + return; + } + case 'SONG-BIS': { + let newParent = nestToVerse(parent); + // if (parent != newParent) { + newParent.appendChild(node); + // } + traverseChilds(node, node.childNodes); + return; + } + case 'SONG-VERSE': { + let newParent = nestToBody(parent); + // if (parent != newParent) { + newParent.appendChild(node); + // } + traverseChilds(node, node.childNodes); + return; + } + case 'SONG-BODY': { + let newParent = nestToBody(parent); + traverseChilds(newParent, node.childNodes); + return; + } + + case 'CODE': { + if (node.className=='an') { + // Wywrota: C + let ch = createChord(node.attributes['data-chord'].value); + node.remove(); + let newParent = nestToRow(parent); + newParent.appendChild(ch); + return; + } + } + + case 'SPAN': { + if (node.className=='annotated-lyrics') { + // Wywrota: Kaszubskie noce, anad nami lśniące + let newParent = nestToRow(parent, true); + traverseChilds(newParent, node.childNodes); + node.remove(); + return; + } + } + } + while (node.childNodes.length > 0) { + let n=node.childNodes[0]; + parent.appendChild(n); + traverse(parent, n); + } + node.remove(); +} + +function Sanitize(body) { + newBody = document.createElement("song-body"); + newBody.contentEditable=true; + newBody.spellcheck=false; + traverse(newBody, body); + // removeAllChildren(body); + body.parentNode.replaceChild(newBody, body); +} \ No newline at end of file diff --git a/editor/song.css b/editor/song.css index 13a096f9..8d48878f 100644 --- a/editor/song.css +++ b/editor/song.css @@ -3,8 +3,8 @@ h1 { } div.row { -/* white-space: pre; /* consider turning off*/*/ - adding-left: 0.3em; +/* white-space: pre; /* consider turning off + adding-left: 0.3em;*/ } @@ -15,6 +15,18 @@ song-verse { song-row { display: block; } + +song-rows { + display: contents; +} + +song-verses { + display: contents; +} + +songbody { + display: block; +} /*song-ch {*/ /* user-select: all;*/ /*}*/ diff --git a/editor/songbody.js b/editor/songbody.js new file mode 100644 index 00000000..9645e506 --- /dev/null +++ b/editor/songbody.js @@ -0,0 +1,168 @@ +function getRangeForCursor(e) { + if (document.caretRangeFromPoint) { + // edge, chrome, android + range = document.caretRangeFromPoint(e.clientX, e.clientY) + } else { + // firefox + var pos = [e.rangeParent, e.rangeOffset] + range = document.createRange() + range.setStart(...pos); + range.setEnd(...pos); + } + return range; +} + +class SongBody extends HTMLElement { + constructor() { + super(); + + const template = document.createElement('template'); + template.innerHTML = ` + +
+ `; + + const shadow = this.attachShadow({ mode: "closed" }); + shadow.appendChild(template.content.cloneNode(true)); + this.body=shadow.getElementById("songbody"); + + this.body.addEventListener("mousedown", this.mouseDown); + this.body.addEventListener("dragover", this.dragOver); + this.body.addEventListener("drop", this.drop); + this.body.addEventListener("keydown", this.keyDown); + } + + connectedCallback() { + this.parentNode.addEventListener("beforeinput", this.beforeInput); + this.parentNode.addEventListener("input", this.input); + this.parentNode.addEventListener("keydown", this.keyDown); + this.parentNode.addEventListener("paste", this.paste); + } + + disconnectedCallback() { + this.parentNode.removeEventListener("beforeinput", this.beforeInput); + this.parentNode.removeEventListener("input", this.input); + this.parentNode.removeEventListener("keydown", this.keyDown); + } + + mouseDown(e) { + if (e.detail > 1 && canInsertChord()) { + if (insertChordHere("")) { + e.preventDefault(); + } + } + } + + keyDown(e) { + console.log("keydown..."); + if (e.key == '`' && canInsertChord()) { + if (insertChordHere("")) { + e.preventDefault(); + } + } + } + + dragOver(e) { + if (e.dataTransfer.types.includes("songbook/chord")) { + if (e.altKey) { + e.dataTransfer.dropEffect = 'copy'; + } else { + e.dataTransfer.dropEffect = 'move'; + } + let range = getRangeForCursor(e); + document.getSelection().removeAllRanges(); + document.getSelection().addRange(range); + if (!canInsertChord()) { + e.dataTransfer.dropEffect = 'none'; + }; + e.preventDefault(); + } + } + + drop(e) { + let d = e.dataTransfer.getData("songbook/chord"); + if (d != null && d != "") { + let range = getRangeForCursor(e) + if (acceptsTextAndChords(range.commonAncestorContainer.parentNode)) { + range.insertNode(createChord(d)); + dropped = true; + } + e.preventDefault(); + } + } + + beforeInput(e) { + console.log("BEFORE"); + if (e.inputType == "deleteContentBackward") { + if (document.getSelection().rangeCount == 1 + && document.getSelection().isCollapsed) { + let r = document.getSelection().getRangeAt(0); + // If the previous element is chord, we want to skip and remove the prev letter. + if (r.startContainer.nodeName == '#text' && r.startOffset == 0 + && r.startContainer.previousSibling != null + && r.startContainer.previousSibling.nodeName === 'SONG-CH') { + setCursorBefore(r.startContainer.previousSibling); + r = document.getSelection().getRangeAt(0); + // We want to continue in case we want to merge rows. + } + // If we are after the trailing space... we want to remove it as well. + if (r.startContainer.nodeName == '#text' && r.startOffset == 1 + && r.startContainer.previousSibling == null + && r.startContainer.nodeValue.startsWith(nbsp)) { + r.startContainer.nodeValue = r.startContainer.nodeValue.substring(1); + if (r.startContainer.parentNode.previousSibling != null) { + mergeNodeAfter(r.startContainer.parentNode.previousSibling, + r.startContainer.parentNode); + e.preventDefault(); + } else { + alert("not yet coded1"); + } + } + // When we are at the beginning of the ROW, we merge the rows. + if (r.startContainer.nodeName == 'SONG-ROW' && r.startOffset == 0) { + if (r.startContainer.previousSibling != null + && r.startContainer.previousSibling.nodeName === 'SONG-ROW') { + mergeNodeAfter(r.startContainer.previousSibling, r.startContainer); + e.preventDefault(); + } + } + } + } + } + + input(e) { + console.log("Oninput", e); + // Sanitize(e.target); + // Avoid keeping cursor before the artifical space: + if (document.getSelection().isCollapsed + && document.getSelection().rangeCount == 1) { + let r = document.getSelection().getRangeAt(0); + //console.log("ON INPUT", document.getSelection(), r.startContainer.nodeName, r.startOffset, r.startContainer); + if (r.startContainer.nodeName === "#text" + && r.startOffset == 0 + && r.startContainer.nodeValue.startsWith(nbsp) + && r.startContainer.previousSibling == null) { + let newr = document.createRange(); + newr.setStart(r.startContainer, 1); + document.getSelection().removeAllRanges(); + document.getSelection().addRange(newr); + } + } + } + + paste(e) { + console.log(e); + let p = document.createElement("span"); + p.innerHTML = e.clipboardData.getData("text/html"); + getSelection().getRangeAt(0).insertNode(p); + e.preventDefault(); + } + + attributeChangedCallback() { + console.log("onChange", this); + } +} + +function SongBodyInit() { + customElements.define("song-body", SongBody); +}; diff --git a/editor/songbook.js b/editor/songbook.js index 15d63bf2..661dce6b 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -1,4 +1,8 @@ +const nbsp = "\u00a0"; +const spaceRegex = / /g; + + let dropped = null; function createChord(chord) { @@ -24,35 +28,12 @@ function createChord(chord) { return ch; } -function getRangeForCursor(e) { - if (document.caretRangeFromPoint) { - // edge, chrome, android - range = document.caretRangeFromPoint(e.clientX, e.clientY) - } else { - // firefox - var pos = [e.rangeParent, e.rangeOffset] - range = document.createRange() - range.setStart(...pos); - range.setEnd(...pos); - } - return range; +function createSongBody() { + return document.createElement("song-body"); } function acceptsTextAndChords(element) { - return ((element.classList != null) && element.classList.contains("accepts-ch")); -} - -function rowOnDrop(e) { - d = e.dataTransfer.getData("songbook/chord"); - if (d != null && d != "") { - range = getRangeForCursor(e) - a=acceptsTextAndChords(range.commonAncestorContainer.parentNode); - if (a) { - range.insertNode(createChord(d)); - dropped = true; - } - e.preventDefault(); - } + return element.nodeName="SONG-ROW"; } function canInsertChord() { @@ -78,31 +59,6 @@ function insertChordHere(ch) { return false; } -function rowOnKeyDown(event) { - if (event.key == '`' && canInsertChord()) { - if (insertChordHere("")) { - event.preventDefault(); - } - } -} - -function rowOnDragOver(e) { - if (e.dataTransfer.types.includes("songbook/chord")) { - if (e.altKey) { - e.dataTransfer.dropEffect = 'copy'; - } else { - e.dataTransfer.dropEffect = 'move'; - } - range = getRangeForCursor(e); - document.getSelection().removeAllRanges(); - document.getSelection().addRange(range); - if (!canInsertChord()) { - e.dataTransfer.dropEffect = 'none'; - } - e.preventDefault(); - } -} - function setCursorBefore(node) { let newr=document.createRange(); newr.setStartBefore(node); @@ -110,119 +66,19 @@ function setCursorBefore(node) { document.getSelection().addRange(newr); } -function createLyric() { - rowp = document.createElement("div"); - rowp.className = 'row'; - rowp.contentEditable = true; - rowp.ondragover = rowOnDragOver; - rowp.onmousedown=function (e) { - if (e.detail > 1 && canInsertChord()) { - console.log("Parent - row - up"); - if (insertChordHere("")) { - e.preventDefault(); - } - } - }; - rowp.oninput = function (e) { - console.log("Oninput", e); - // sanitize(e.target); - } - rowp.onbeforeinput = function (e) { - // if (e.inputType == "insertParagraph") { - // //document.getSelection().getRangeAt(0).insertNode(document.createElement("br")); - // if (document.getSelection().isCollapsed - // && document.getSelection().rangeCount == 1 - // && document.getSelection().getRangeAt(0).startContainer.nodeName==='#text' - // && document.getSelection().getRangeAt(0).startContainer.nodeValue[document.getSelection().getRangeAt(0).startOffset]===' ') { - // // Don't put additional space if we break just ahead of 'space' - // document.execCommand("insertHTML", false, '
') - // } else { - // document.execCommand("insertHTML", false, '
 ') - // } - // e.preventDefault(); - // } - if (e.inputType == "deleteContentBackward") { - if (document.getSelection().rangeCount == 1 - && document.getSelection().isCollapsed) { - let r = document.getSelection().getRangeAt(0); - // If the previous element is chord, we want to skip and remove the prev letter. - if (r.startContainer.nodeName == '#text' && r.startOffset == 0 - && r.startContainer.previousSibling != null && r.startContainer.previousSibling.nodeName==='SONG-CH') { - setCursorBefore(r.startContainer.previousSibling); - r = document.getSelection().getRangeAt(0); - // We want to continue in case we want to merge rows. - } - if (r.startContainer.nodeName=='SONG-ROW' && r.startOffset==0) { - if (r.startContainer.previousSibling != null - && r.startContainer.previousSibling.nodeName ==='SONG-ROW') { - let first=r.startContainer.childNodes[0]; - let documentFragment = document.createDocumentFragment(); - while (r.startContainer.childNodes.length>0) { - documentFragment.appendChild(r.startContainer.childNodes[0]); - } - r.startContainer.previousSibling.appendChild(documentFragment); - setCursorBefore(first); - e.preventDefault(); - } - } - - //console.log(r, r.startContainer, r.startContainer.nodeName, r.startOffset); - // // If the letter is BR, we need to remove it in a special way. - // if (r.startContainer.previousSibling.previousSibling.nodeName === 'BR') { - // let newr=document.createRange(); - // newr.selectNode(r.startContainer.previousSibling.previousSibling); - // newr.deleteContents(); - // // document.getSelection().removeAllRanges(); - // // document.getSelection().addRange(newr); - // // - // // // document.getSelection().collapse(r.startContainer.previousSibling.previousSibling); - // // document.execCommand("insertHTML",false,"Foo"); - // e.preventDefault(); - // return; - // } else { - // let newr=document.createRange(); - // newr.setStartBefore(r.startContainer.previousSibling); - // document.getSelection().removeAllRanges(); - // document.getSelection().addRange(newr); - // e.preventDefault(); - // return; - // } - // } else if (r.startContainer.nodeName == '#text' && r.startOffset <= 1 - // && r.startContainer.previousSibling.nodeName==='BR') { - // let newr=document.createRange(); - // newr.setStartBefore(r.startContainer.previousSibling); - // newr.setEnd(r.startContainer, r.startOffset); - // newr.deleteContents(); - // e.preventDefault(); - // } else if (r.startContainer.nodeName == '#text' && r.startOffset == 0 - // && r.startContainer.previousSibling.nodeName==='#text') { - // let newr=document.createRange(); - // newr.setEndBefore(r.startContainer); - // newr.setStart(r.startContainer.previousSibling, r.startContainer.previousSibling.length - 1); - // console.log(newr); - // newr.deleteContents(); - // e.preventDefault(); - // } - // && r.startContainer.previousSibling != null && r.startContainer.previousSibling.className==='akord') { - //console.log("START", r.startContainer, r.startOffset, r.startContainer.previousSibling, r.extractContents()) - //} - } - } - let r = document.getSelection().getRangeAt(0); - console.log(r, r.startContainer, r.startContainer.nodeName, r.startOffset); - //console.log("BEFORE", e,document.getSelection()); - //console.dir(JSON.stringify(document.getSelection(), null, 4) ); +function mergeNodeAfter(target, source) { + let first=source.childNodes[0]; + let documentFragment = document.createDocumentFragment(); + while (source.childNodes.length>0) { + documentFragment.appendChild(source.childNodes[0]); } - rowp.spellcheck = false; - rowp.contentEditable = 'true'; - - rowp.ondrop = rowOnDrop; - rowp.onkeydown = rowOnKeyDown; - - return rowp; + target.appendChild(documentFragment); + source.remove(); + setCursorBefore(first); } + function rowToNodes(row) { let newRow = document.createElement("song-row"); newRow.classList.add("accepts-ch"); @@ -232,8 +88,7 @@ function rowToNodes(row) { if (node.nodeName == '#text') { let n = node.cloneNode(); newRow.appendChild(n); - let regex = / /g; - n.nodeValue = n.nodeValue.replaceAll(regex, "\u00a0"); + n.nodeValue = n.nodeValue.replaceAll(spaceRegex, nbsp); } else { newRow.appendChild(createChord(node.attributes['a'].value)); } @@ -241,28 +96,64 @@ function rowToNodes(row) { return [newRow]; } -// function sanitize(lyric) { -// for (let i=0; i < lyric.childNodes.length; ++i) { -// let node = lyric.childNodes[i] -// let parent = node.parentNode -// if (node.nodeName=='DIV') { -// let next = node.nextSibling; -// for (let i = node.childNodes.length - 1; i>=0; --i) { -// if (next) { -// next = parent.insertBefore( node.childNodes[i], next); -// -// } else { -// console.log(node.childNodes[i]) -// next = parent.appendChild(node.childNodes[i]); -// } -// } -// if (next) { -// parent.insertBefore(document.createElement("br"), next); +// function sanitizeRow(row) { +// for (let i=0; i < row.childNodes.length; ++i) { +// let node = row.childNodes[i]; +// if (node.nodeName === '#text') { +// node.nodeValue = node.nodeValue.replaceAll(spaceRegex, nbsp); +// } else if (node.nodeName == 'SONG-CH') { +// while (node.childNodes.length > 0) { +// node.removeChild(node.childNodes[0]); // } -// node.remove(); +// } else { +// row.replaceChild(document.createTextNode(node.textContent), node); // } // } +// if (!row.textContent.startsWith(nbsp)) { +// if (row.childNodes.length > 0) { +// row.insertBefore(document.createTextNode(nbsp), row.childNodes[0]); +// } else { +// row.appendChild(document.createTextNode(nbsp)); +// } +// } +// row.normalize(); // } +// +// function sanitize(lyric) { +// let rows = lyric.getElementsByTagName("song-row"); +// +// for (let i=0; i < rows.length; ++i) { +// let row = rows[i]; +// sanitizeRow(row); +// } + + + + + // for (let i=0; i < lyric.childNodes.length; ++i) { + // + // if () + // + // let node = lyric.childNodes[i] + // let parent = node.parentNode + // if (node.nodeName=='DIV') { + // let next = node.nextSibling; + // for (let i = node.childNodes.length - 1; i>=0; --i) { + // if (next) { + // next = parent.insertBefore( node.childNodes[i], next); + // + // } else { + // console.log(node.childNodes[i]) + // next = parent.appendChild(node.childNodes[i]); + // } + // } + // if (next) { + // parent.insertBefore(document.createElement("br"), next); + // } + // node.remove(); + // } + // } +//} function onLoad() { @@ -284,33 +175,34 @@ function onLoad() { let editor = document.getElementById("editor"); SongChInit(editor); SongVerseInit(); + SongBodyInit(); + + let body = createSongBody(); + editor.appendChild(body); - let lyric = createLyric(); - editor.appendChild(lyric); + let bodydiv = document.createElement("song-verses"); + body.appendChild(bodydiv); let verses = xmlDoc.getRootNode().childNodes[0].getElementsByTagName('verse'); for (let vi = 0; vi < verses.length; ++vi) { let verse = verses[vi]; let songVerse = document.createElement("song-verse"); - let d= document.createElement("div"); - // d.classList.add("accepts-ch") - lyric.appendChild(songVerse); + let d= document.createElement("song-rows"); + + bodydiv.appendChild(songVerse); songVerse.appendChild(d); let rows = verse.getElementsByTagName('row'); for (let i = 0; i < rows.length; ++i) { d.append(...rowToNodes(rows[i])); - // d.append(document.createElement("br")) } let san = document.createElement("span"); san.innerText = "[sanitize verse]"; san.style.color = 'blue'; - san.onclick = function (e) { sanitize(songVerse); } - lyric.appendChild(san); + san.onclick = function (e) { Sanitize(songVerse); } + bodydiv.appendChild(san); } - - } From 7fe7be3669b68e8a8a568702a2a4edd7eb857e8e Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 4 Oct 2022 20:16:48 +0200 Subject: [PATCH 021/664] Code split between files. --- editor/ch.js | 32 +++++++++++++++++-- editor/songbody.js | 43 ++++++++++++++++++++++++-- editor/songbook.js | 76 ---------------------------------------------- 3 files changed, 69 insertions(+), 82 deletions(-) diff --git a/editor/ch.js b/editor/ch.js index 2d180c10..9a918ef1 100644 --- a/editor/ch.js +++ b/editor/ch.js @@ -13,11 +13,11 @@ class SongCh extends HTMLElement { const template = document.createElement('template'); template.innerHTML = - ``+ + `` + + ``+ `` + `` + - `` + - ``; + ``; const shadow = this.attachShadow({ mode: "closed" }); shadow.appendChild(template.content.cloneNode(true)); @@ -25,6 +25,7 @@ class SongCh extends HTMLElement { this.ch = shadow.getElementById("ch"); this.che = shadow.getElementById("che"); + this.cho = shadow.getElementById("cho"); this.ch.ondblclick = (event) => { console.log("CH-double-click"); @@ -46,6 +47,21 @@ class SongCh extends HTMLElement { event.stopPropagation(); event.stopImmediatePropagation(); } + this.cho.ondragstart = (event) => { + event.target.opacity = "0.2"; + event.dataTransfer.effectAllowed = "copyMove"; + event.dataTransfer.dropEffect = "move"; + event.dataTransfer.setData("songbook/chord", this.getAttribute("a")); + this.getSongBody().dropped = false; + } + + this.cho.ondragend = (event) => { + event.target.opacity = '1.0'; + if (this.getSongBody().dropped && event.dataTransfer.dropEffect == 'move') { + event.target.remove(); + } + } + this.onkeydown = (e) => { if (e.key == 'Enter' || e.key == 'Escape' || e.key == 'Tab') { if (this.che.value.trim() == '') { @@ -61,6 +77,10 @@ class SongCh extends HTMLElement { this.updateEditing(); } + getSongBody() { + return this.closest('song-body'); + } + isEditing() { return this.getAttribute("editing")==="true"; } @@ -122,4 +142,10 @@ function predefinedChordsList() { function SongChInit(parent) { customElements.define("song-ch", SongCh); +} + +function createChord(chord) { + let ch = document.createElement("song-ch"); + ch.setAttribute('a', chord); + return ch; } \ No newline at end of file diff --git a/editor/songbody.js b/editor/songbody.js index 9645e506..a56e2938 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -12,6 +12,39 @@ function getRangeForCursor(e) { return range; } +function acceptsTextAndChords(element) { + return element.nodeName="SONG-ROW"; +} + +function canInsertChord() { + if (window.getSelection().rangeCount < 1) {return false; } + let r = window.getSelection().getRangeAt(0); + let x = + //acceptsTextAndChords(r.startContainer); + (r.startContainer.nodeName == '#text' + && acceptsTextAndChords(r.startContainer.parentNode)); + return x; +} + +function insertChordHere(ch) { + if (canInsertChord()) { + let chedit = createChord(""); + chedit.setAttribute("editing", "true"); + window.getSelection().getRangeAt(0).insertNode(chedit); + chedit.focus(); + return true; + } + return false; +} + +function setCursorBefore(node) { + let newr=document.createRange(); + newr.setStartBefore(node); + document.getSelection().removeAllRanges(); + document.getSelection().addRange(newr); +} + + class SongBody extends HTMLElement { constructor() { super(); @@ -28,7 +61,7 @@ class SongBody extends HTMLElement { this.body.addEventListener("mousedown", this.mouseDown); this.body.addEventListener("dragover", this.dragOver); - this.body.addEventListener("drop", this.drop); + this.body.addEventListener("drop", (e) => {this.drop(e, this); }); this.body.addEventListener("keydown", this.keyDown); } @@ -79,13 +112,13 @@ class SongBody extends HTMLElement { } } - drop(e) { + drop(e, songbody) { let d = e.dataTransfer.getData("songbook/chord"); if (d != null && d != "") { let range = getRangeForCursor(e) if (acceptsTextAndChords(range.commonAncestorContainer.parentNode)) { range.insertNode(createChord(d)); - dropped = true; + songbody.dropped = true; } e.preventDefault(); } @@ -166,3 +199,7 @@ class SongBody extends HTMLElement { function SongBodyInit() { customElements.define("song-body", SongBody); }; + +function createSongBody() { + return document.createElement("song-body"); +} \ No newline at end of file diff --git a/editor/songbook.js b/editor/songbook.js index 661dce6b..d0f11ebc 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -3,82 +3,6 @@ const nbsp = "\u00a0"; const spaceRegex = / /g; -let dropped = null; - -function createChord(chord) { - ch = document.createElement("song-ch"); - ch.draggable = true; - ch.ondragstart = (e) => { - e.target.opacity = "0.2"; - e.dataTransfer.effectAllowed = "copyMove"; - e.dataTransfer.dropEffect = "move"; - e.dataTransfer.setData("songbook/chord", e.target.getAttribute("a")); - dropped = false; - } - ch.ondragend = (e) => { - e.target.opacity = '1.0'; - if (dropped && e.dataTransfer.dropEffect == 'move') { - e.target.remove(); - } - } - ch.setAttribute('a', chord); - ch.draggable = true; - ch.style.userSelect='all'; - return ch; - return ch; -} - -function createSongBody() { - return document.createElement("song-body"); -} - -function acceptsTextAndChords(element) { - return element.nodeName="SONG-ROW"; -} - -function canInsertChord() { - //console.warn(window.getSelection().getRangeAt(0)); - if (window.getSelection().rangeCount < 1) {return false; } - let r = window.getSelection().getRangeAt(0); - // console.warn(r.startContainer); - let x = - //acceptsTextAndChords(r.startContainer); - (r.startContainer.nodeName == '#text' - && acceptsTextAndChords(r.startContainer.parentNode)); - return x; -} - -function insertChordHere(ch) { - if (canInsertChord()) { - let chedit = createChord(""); - chedit.setAttribute("editing", "true"); - window.getSelection().getRangeAt(0).insertNode(chedit); - chedit.focus(); - return true; - } - return false; -} - -function setCursorBefore(node) { - let newr=document.createRange(); - newr.setStartBefore(node); - document.getSelection().removeAllRanges(); - document.getSelection().addRange(newr); -} - -function mergeNodeAfter(target, source) { - let first=source.childNodes[0]; - let documentFragment = document.createDocumentFragment(); - while (source.childNodes.length>0) { - documentFragment.appendChild(source.childNodes[0]); - } - target.appendChild(documentFragment); - source.remove(); - setCursorBefore(first); -} - - - function rowToNodes(row) { let newRow = document.createElement("song-row"); newRow.classList.add("accepts-ch"); From 39e0183bfe3f254de04bf9a5dc2dfcdf1d73542d Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 4 Oct 2022 20:44:18 +0200 Subject: [PATCH 022/664] Fixed removing line. --- editor/songbody.js | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/editor/songbody.js b/editor/songbody.js index a56e2938..06baf9ac 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -12,6 +12,16 @@ function getRangeForCursor(e) { return range; } +function mergeNodeAfter(target, source) { + let first = source.childNodes[0]; + let documentFragment = document.createDocumentFragment(); + while (source.childNodes.length > 0) { + documentFragment.appendChild(source.childNodes[0]); + } + target.append(documentFragment); + setCursorBefore(first); +} + function acceptsTextAndChords(element) { return element.nodeName="SONG-ROW"; } @@ -66,6 +76,7 @@ class SongBody extends HTMLElement { } connectedCallback() { + this.parentNodeBackup = this.parentNode; this.parentNode.addEventListener("beforeinput", this.beforeInput); this.parentNode.addEventListener("input", this.input); this.parentNode.addEventListener("keydown", this.keyDown); @@ -73,9 +84,11 @@ class SongBody extends HTMLElement { } disconnectedCallback() { - this.parentNode.removeEventListener("beforeinput", this.beforeInput); - this.parentNode.removeEventListener("input", this.input); - this.parentNode.removeEventListener("keydown", this.keyDown); + if (this.parentNodeBackup) { + this.parentNodeBackup.removeEventListener("beforeinput", this.beforeInput); + this.parentNodeBackup.removeEventListener("input", this.input); + this.parentNodeBackup.removeEventListener("keydown", this.keyDown); + } } mouseDown(e) { @@ -159,6 +172,15 @@ class SongBody extends HTMLElement { e.preventDefault(); } } + // When we are at the beginning of the ROW, we merge the rows. + if (r.startContainer.nodeName == '#text' && r.startOffset == 0) { + if (r.startContainer.previousSibling == null + && r.startContainer.parentNode.nodeName === 'SONG-ROW' + && r.startContainer.parentNode.previousSibling.nodeName === 'SONG-ROW') { + mergeNodeAfter(r.startContainer.parentNode.previousSibling, r.startContainer.parentNode); + e.preventDefault(); + } + } } } } From 7d59b1c35e89e5036417bc71355cb39a7ef6727f Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 4 Oct 2022 21:10:36 +0200 Subject: [PATCH 023/664] Connecting sanitization... --- editor/songbody.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/editor/songbody.js b/editor/songbody.js index 06baf9ac..7742118e 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -78,7 +78,8 @@ class SongBody extends HTMLElement { connectedCallback() { this.parentNodeBackup = this.parentNode; this.parentNode.addEventListener("beforeinput", this.beforeInput); - this.parentNode.addEventListener("input", this.input); + this.inputHandler = (e) => { this.input(e, this); }; + this.parentNode.addEventListener("input", this.inputHandler); this.parentNode.addEventListener("keydown", this.keyDown); this.parentNode.addEventListener("paste", this.paste); } @@ -86,7 +87,7 @@ class SongBody extends HTMLElement { disconnectedCallback() { if (this.parentNodeBackup) { this.parentNodeBackup.removeEventListener("beforeinput", this.beforeInput); - this.parentNodeBackup.removeEventListener("input", this.input); + this.parentNodeBackup.removeEventListener("input", this.inputHandler); this.parentNodeBackup.removeEventListener("keydown", this.keyDown); } } @@ -185,9 +186,9 @@ class SongBody extends HTMLElement { } } - input(e) { + input(e, songbody) { console.log("Oninput", e); - // Sanitize(e.target); + Sanitize(songbody); // Avoid keeping cursor before the artifical space: if (document.getSelection().isCollapsed && document.getSelection().rangeCount == 1) { From b1517d6bd91e5b7943d6961aa7d214fe3d7f440d Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 4 Oct 2022 22:22:26 +0200 Subject: [PATCH 024/664] Bis tag support added. --- editor/songbody.js | 2 +- editor/songbook.js | 39 ++++++++++++++++++++++++++++--------- editor/verse.css | 37 +++++++++++++++++++++++++++++++++++ editor/verse.js | 48 +++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 115 insertions(+), 11 deletions(-) diff --git a/editor/songbody.js b/editor/songbody.js index 7742118e..80d4a754 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -189,7 +189,7 @@ class SongBody extends HTMLElement { input(e, songbody) { console.log("Oninput", e); Sanitize(songbody); - // Avoid keeping cursor before the artifical space: +// Avoid keeping cursor before the artifical space: if (document.getSelection().isCollapsed && document.getSelection().rangeCount == 1) { let r = document.getSelection().getRangeAt(0); diff --git a/editor/songbook.js b/editor/songbook.js index d0f11ebc..89e329c6 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -85,9 +85,16 @@ function onLoad() { text = '' + '' + ' ' + + ' Kiedy stałem w przedświcie a Synaj' + + ' ' + + ' Prawdę głosił przez trąby wiatru' + + ' Zasmerczyły się chmury igliwiem' + + ' ' + + ' Bure świerki o góry wsparte' + + ' ' + + ' ' + ' Kiedy stałem w przedświcie a Synaj' + ' Prawdę głosił przez trąby wiatru' - + ' ' + ' Zasmerczyły się chmury igliwiem' + ' Bure świerki o góry wsparte' + ' ' @@ -98,14 +105,14 @@ function onLoad() { let editor = document.getElementById("editor"); SongChInit(editor); - SongVerseInit(); + SongVerseBisInit(); SongBodyInit(); let body = createSongBody(); editor.appendChild(body); - let bodydiv = document.createElement("song-verses"); - body.appendChild(bodydiv); + // let bodydiv = document.createElement("song-verses"); + // body.appendChild(bodydiv); let verses = xmlDoc.getRootNode().childNodes[0].getElementsByTagName('verse'); for (let vi = 0; vi < verses.length; ++vi) { @@ -113,18 +120,32 @@ function onLoad() { let songVerse = document.createElement("song-verse"); let d= document.createElement("song-rows"); - bodydiv.appendChild(songVerse); + body.appendChild(songVerse); songVerse.appendChild(d); - let rows = verse.getElementsByTagName('row'); - for (let i = 0; i < rows.length; ++i) { - d.append(...rowToNodes(rows[i])); + let rowsOrBis = verse.childNodes; + + for (let i = 0; i < rowsOrBis.length; ++i) { + if (rowsOrBis[i].nodeName == 'row') { + d.append(...rowToNodes(rowsOrBis[i])); + } + + if (rowsOrBis[i].nodeName == 'bis') { + bis = rowsOrBis[i]; + b = document.createElement("song-bis"); + b.setAttribute("x", bis.attributes['times'].value); + for (let j=0; j < bis.childNodes.length; ++j) { + b.append(...rowToNodes(bis.childNodes[j])); + } + d.appendChild(b); + } + } let san = document.createElement("span"); san.innerText = "[sanitize verse]"; san.style.color = 'blue'; san.onclick = function (e) { Sanitize(songVerse); } - bodydiv.appendChild(san); + body.appendChild(san); } } diff --git a/editor/verse.css b/editor/verse.css index 8f8aac10..697903a5 100644 --- a/editor/verse.css +++ b/editor/verse.css @@ -22,3 +22,40 @@ div.verse_main { grid-column: 2/2; margin-left: 1em; } + + + + +div.bis { + display: grid; + align-items: stretch; +} + +div.bis_meta { + grid-column: 2 / 2; + grid-row: 1; + width: 2em; + margin-left: 2em; + display: flex; + /* text-align: center; + vertical-align: bottom;*/ + border-left: 1px solid black; +} + +div.bis_meta span#x { + display: block; + margin-top: auto; + margin-left: 0.5em; +} + +span#x:before { + content: 'x'; + display: inline-block; + margin-right: 0.3em; +} + +div.bis_main { + grid-row: 1; + grid-column: 1/2; + margin-left: 0em; +} diff --git a/editor/verse.js b/editor/verse.js index 15f8216f..0a98c620 100644 --- a/editor/verse.js +++ b/editor/verse.js @@ -35,6 +35,52 @@ class SongVerse extends HTMLElement { } } -function SongVerseInit() { + + + + + + + +class SongBis extends HTMLElement { + constructor() { + super(); + + const template = document.createElement('template'); + template.innerHTML = ` + +
+
+
s?
+
+ `; + + const shadow = this.attachShadow({ mode: "closed" }); + shadow.appendChild(template.content.cloneNode(true)); + this.x=shadow.getElementById("x"); + } + + connectedCallback() { + this.attributeChangedCallback(); + } + + attributeChangedCallback() { + this.x.innerText = this.getAttribute("x"); + } + + static get observedAttributes() { + return ["x"] + } +} + + + + + + + + +function SongVerseBisInit() { customElements.define("song-verse", SongVerse); + customElements.define("song-bis", SongBis); } \ No newline at end of file From 943be37f0b7a35a175668d625215ccd39bd4b791 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 5 Oct 2022 23:33:09 +0200 Subject: [PATCH 025/664] Faster sanitization code. TODO: Drop of regular content seems messy. --- editor/ch.js | 1 + editor/sanitize.js | 218 +++++++++++++++++++++++++++++---------------- editor/songbody.js | 37 +++++++- editor/songbook.js | 76 ++-------------- 4 files changed, 180 insertions(+), 152 deletions(-) diff --git a/editor/ch.js b/editor/ch.js index 9a918ef1..5d052d8f 100644 --- a/editor/ch.js +++ b/editor/ch.js @@ -63,6 +63,7 @@ class SongCh extends HTMLElement { } this.onkeydown = (e) => { + console.log("CH-keydown", e); if (e.key == 'Enter' || e.key == 'Escape' || e.key == 'Tab') { if (this.che.value.trim() == '') { this.remove(); diff --git a/editor/sanitize.js b/editor/sanitize.js index f85ed0b5..bdd2170d 100644 --- a/editor/sanitize.js +++ b/editor/sanitize.js @@ -1,25 +1,5 @@ -// function traverse() { -// -// } -// -// enum Level { -// SONG, -// VERSE, -// BIS, -// ROW -// } -// -// function sanitize(dom) { -// -// } -// -// function nodeType(node) { -// if (node.nodeName==='DIV') { -// return "DIV." + node.className; -// } else { -// node.nodeName; -// } -// } +const nbsp = "\u00a0"; +const spaceRegex = / /g; function findAncestor(p, nodeName) { while (p != null) { @@ -39,10 +19,8 @@ function nestToBody(parent) { return body; } -function nestToVerseOrBis(parent) { - let p = findAncestor(parent, "SONG-BIS"); - if (p) { return p; } - p = findAncestor(parent, "SONG-VERSE"); +function nestToVerse(parent) { + let p = findAncestor(parent, "SONG-VERSE"); if (p) { return p; } let newParent = nestToBody(parent); @@ -51,6 +29,13 @@ function nestToVerseOrBis(parent) { return verse; } +function nestToVerseOrBis(parent) { + let p = findAncestor(parent, "SONG-BIS"); + if (p) { return p; } + return nestToVerse(parent); +} + + function nestToRows(parent) { let p = findAncestor(parent, "SONG-ROWS"); if (p) { @@ -73,24 +58,8 @@ function nestToRow(parent, forceNew=false) { return row; } } -// -// switch parent.nodeName { -// case "SONG-BODY": -// -// case "SONG-ROW": -// return parent; -// case "SONG-BIS": -// case "SONG-VERSE": -// // not yet supported -// row = document.createElement("song-row"); -// parent.appendChild(row); -// return row; -// default: -// verse = document.createElement("song-verse"); -// return verse; -// } -// } -// + + function removeAllChildren(node) { while(node.childNodes.length > 0) { node.removeChild(node.childNodes[0]); @@ -100,7 +69,10 @@ function removeAllChildren(node) { function traverseChilds(parent, childNodes) { let ns = []; childNodes.forEach( (n) => { ns.push(n); } ); - ns.forEach( (n) => { traverse(parent, n); } ); + let newparent = parent; + for (let i=0; i < ns.length; ++i ) { + newparent = traverse(newparent, ns[i]); + } } // // parent - is sanitized parent of tag (song, song-verse(div), song-bis(div), song-row(div)) @@ -112,55 +84,43 @@ function traverse(parent, node) { // BASIC case '#text' : { let newParent = nestToRow(parent); - // if (newParent != node.parentNode) { - newParent.appendChild(node); - // } - return; + newParent.appendChild(node); + return newParent; } case 'SONG-CH': { removeAllChildren(node); let newParent = nestToRow(parent); - // if (newParent != node.parentNode) { - newParent.appendChild(node); - // } - return; + newParent.appendChild(node); + return newParent; } case 'SONG-ROW': { let newParent = nestToRows(parent); - // if (newParent != node.parentNode) { - newParent.appendChild(node); - // } + newParent.appendChild(node); traverseChilds(node, node.childNodes); - return; + return newParent; } case 'SONG-ROWS': { let newParent = nestToVerseOrBis(parent); - // if (parent != newParent) { - newParent.appendChild(node); - // } + newParent.appendChild(node); traverseChilds(node, node.childNodes); - return; + return newParent; } case 'SONG-BIS': { - let newParent = nestToVerse(parent); - // if (parent != newParent) { - newParent.appendChild(node); - // } + let newParent = nestToRows(parent); + newParent.appendChild(node); traverseChilds(node, node.childNodes); - return; + return newParent; } case 'SONG-VERSE': { let newParent = nestToBody(parent); - // if (parent != newParent) { newParent.appendChild(node); - // } traverseChilds(node, node.childNodes); - return; + return newParent; } case 'SONG-BODY': { let newParent = nestToBody(parent); traverseChilds(newParent, node.childNodes); - return; + return newParent; } case 'CODE': { @@ -170,7 +130,7 @@ function traverse(parent, node) { node.remove(); let newParent = nestToRow(parent); newParent.appendChild(ch); - return; + return newParent; } } @@ -180,7 +140,7 @@ function traverse(parent, node) { let newParent = nestToRow(parent, true); traverseChilds(newParent, node.childNodes); node.remove(); - return; + return newParent; } } } @@ -190,13 +150,115 @@ function traverse(parent, node) { traverse(parent, n); } node.remove(); + return parent; +} + +function sanitizeRow(row) { + row.normalize(); + if (!row.textContent.startsWith(nbsp)) { + if (row.childNodes.length > 0) { + row.insertBefore(document.createTextNode(nbsp), row.childNodes[0]); + } else { + row.appendChild(document.createTextNode(nbsp)); + } + } } + function Sanitize(body) { - newBody = document.createElement("song-body"); - newBody.contentEditable=true; - newBody.spellcheck=false; - traverse(newBody, body); - // removeAllChildren(body); - body.parentNode.replaceChild(newBody, body); + if (!lightTraverse(body)) { + console.log("Full fix..."); + traverse(body, body); + } + let rows = body.getElementsByTagName("SONG-ROW"); + for (let i=0; i < rows.length; ++i) { + let row = rows[i]; + sanitizeRow(row); + } +} + +// Returns whether tree is valid (is. requires deep validation). +function lightTraverse(node) { + if (node instanceof Element) { + node.removeAttribute("style"); + } + switch (node.nodeName) { + case '#text' : { + if (node.parentNode.nodeName!='SONG-ROW') { + console.log("Misplaced", node); + return false; + } + break; + } + case 'SONG-CH': { + removeAllChildren(node); + if (node.parentNode.nodeName!='SONG-ROW') { + console.log("Misplaced", node); + return false; + } + break; + } + case 'SONG-ROW': { + if (node.parentNode.nodeName!='SONG-ROWS') { + console.log("Misplaced", node); + return false; + } + break; + } + case 'SONG-ROWS': { + if (node.parentNode.nodeName!='SONG-BIS' + && node.parentNode.nodeName!='SONG-VERSE') { + console.log("Misplaced", node); + return false; + } + break; + } + case 'SONG-BIS': { + if (node.parentNode.nodeName!='SONG-ROWS') { + console.log("Misplaced", node); + return false; + } + break; + } + case 'SONG-VERSE': { + if (node.parentNode.nodeName!='SONG-BODY') { + console.log("Misplaced", node); + return false; + } + break; + } + case 'SONG-VERSES': { + if (node.parentNode.nodeName!='SONG-BODY') { + console.log("Misplaced", node); + return false; + } + break; + } + case 'SONG-BODY': { + break; + } + case 'BR': + case 'SPAN': { + // Editor sometimes put empty spans. + if (node.innerHTML==='') { + node.remove(); + return true; + } + break; + } + default: + console.log("Misplaced unknown", node); + return false; + } + { + // We buffer nodes to not miss anything if it gets removed. + let ns = []; + node.childNodes.forEach((n) => { + ns.push(n); + }); + for (let i=0; i < ns.length; ++i) { + if (!lightTraverse(ns[i])) return false; + } + } + return true; } \ No newline at end of file diff --git a/editor/songbody.js b/editor/songbody.js index 80d4a754..5e7915ae 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -19,7 +19,10 @@ function mergeNodeAfter(target, source) { documentFragment.appendChild(source.childNodes[0]); } target.append(documentFragment); - setCursorBefore(first); + if (first != null) { + setCursorBefore(first); + } + source.remove(); } function acceptsTextAndChords(element) { @@ -81,7 +84,8 @@ class SongBody extends HTMLElement { this.inputHandler = (e) => { this.input(e, this); }; this.parentNode.addEventListener("input", this.inputHandler); this.parentNode.addEventListener("keydown", this.keyDown); - this.parentNode.addEventListener("paste", this.paste); + this.pasteHandler = (e) => { this.paste(e, this); }; + this.parentNode.addEventListener("paste", this.pasteHandler); } disconnectedCallback() { @@ -89,6 +93,7 @@ class SongBody extends HTMLElement { this.parentNodeBackup.removeEventListener("beforeinput", this.beforeInput); this.parentNodeBackup.removeEventListener("input", this.inputHandler); this.parentNodeBackup.removeEventListener("keydown", this.keyDown); + this.parentNodeBackup.removeEventListener("paste", this.pasteHandler); } } @@ -101,12 +106,24 @@ class SongBody extends HTMLElement { } keyDown(e) { - console.log("keydown..."); + console.log("keydown...",e, document.getSelection()); if (e.key == '`' && canInsertChord()) { if (insertChordHere("")) { e.preventDefault(); } } + if (e.key == 'Backspace'){ + if (document.getSelection().isCollapsed && + document.getSelection().rangeCount == 1) { + let r = document.getSelection().getRangeAt(0); + if (r.startOffset < r.startContainer.childNodes.length && + r.startContainer.childNodes[r.startOffset].nodeName=='SONG-CH') { + r.startContainer.childNodes[r.startOffset].remove(); + e.preventDefault(); + } + } + + } } dragOver(e) { @@ -144,6 +161,7 @@ class SongBody extends HTMLElement { if (document.getSelection().rangeCount == 1 && document.getSelection().isCollapsed) { let r = document.getSelection().getRangeAt(0); + console.log(document.getSelection(), r.startContainer.nodeName, r.startContainer, r.startOffset) // If the previous element is chord, we want to skip and remove the prev letter. if (r.startContainer.nodeName == '#text' && r.startOffset == 0 && r.startContainer.previousSibling != null @@ -173,6 +191,16 @@ class SongBody extends HTMLElement { e.preventDefault(); } } + if (r.startContainer.nodeName == 'SONG-ROW' && r.startOffset == 1) { + if (r.startContainer.previousSibling != null + && r.startContainer.previousSibling.nodeName === 'SONG-ROW' + && r.startContainer.childNodes[0].nodeName==='#text' + && r.startContainer.childNodes[0].nodeValue===nbsp) { + r.startContainer.childNodes[0].remove(); + mergeNodeAfter(r.startContainer.previousSibling, r.startContainer); + e.preventDefault(); + } + } // When we are at the beginning of the ROW, we merge the rows. if (r.startContainer.nodeName == '#text' && r.startOffset == 0) { if (r.startContainer.previousSibling == null @@ -206,12 +234,13 @@ class SongBody extends HTMLElement { } } - paste(e) { + paste(e, songbody) { console.log(e); let p = document.createElement("span"); p.innerHTML = e.clipboardData.getData("text/html"); getSelection().getRangeAt(0).insertNode(p); e.preventDefault(); + Sanitize(songbody); } attributeChangedCallback() { diff --git a/editor/songbook.js b/editor/songbook.js index 89e329c6..75f982cb 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -1,9 +1,9 @@ -const nbsp = "\u00a0"; -const spaceRegex = / /g; - function rowToNodes(row) { + if (row.nodeName!='row') { + return []; + } let newRow = document.createElement("song-row"); newRow.classList.add("accepts-ch"); let nodes=[]; @@ -20,67 +20,8 @@ function rowToNodes(row) { return [newRow]; } -// function sanitizeRow(row) { -// for (let i=0; i < row.childNodes.length; ++i) { -// let node = row.childNodes[i]; -// if (node.nodeName === '#text') { -// node.nodeValue = node.nodeValue.replaceAll(spaceRegex, nbsp); -// } else if (node.nodeName == 'SONG-CH') { -// while (node.childNodes.length > 0) { -// node.removeChild(node.childNodes[0]); -// } -// } else { -// row.replaceChild(document.createTextNode(node.textContent), node); -// } -// } -// if (!row.textContent.startsWith(nbsp)) { -// if (row.childNodes.length > 0) { -// row.insertBefore(document.createTextNode(nbsp), row.childNodes[0]); -// } else { -// row.appendChild(document.createTextNode(nbsp)); -// } -// } -// row.normalize(); -// } -// -// function sanitize(lyric) { -// let rows = lyric.getElementsByTagName("song-row"); -// -// for (let i=0; i < rows.length; ++i) { -// let row = rows[i]; -// sanitizeRow(row); -// } - - - - - // for (let i=0; i < lyric.childNodes.length; ++i) { - // - // if () - // - // let node = lyric.childNodes[i] - // let parent = node.parentNode - // if (node.nodeName=='DIV') { - // let next = node.nextSibling; - // for (let i = node.childNodes.length - 1; i>=0; --i) { - // if (next) { - // next = parent.insertBefore( node.childNodes[i], next); - // - // } else { - // console.log(node.childNodes[i]) - // next = parent.appendChild(node.childNodes[i]); - // } - // } - // if (next) { - // parent.insertBefore(document.createElement("br"), next); - // } - // node.remove(); - // } - // } -//} function onLoad() { - //document.execCommand('defaultParagraphSeparator', false, 'br'); text = '' + '' @@ -133,19 +74,14 @@ function onLoad() { bis = rowsOrBis[i]; b = document.createElement("song-bis"); b.setAttribute("x", bis.attributes['times'].value); + let bd= document.createElement("song-rows"); + b.appendChild(bd); for (let j=0; j < bis.childNodes.length; ++j) { - b.append(...rowToNodes(bis.childNodes[j])); + bd.append(...rowToNodes(bis.childNodes[j])); } d.appendChild(b); } - } - - let san = document.createElement("span"); - san.innerText = "[sanitize verse]"; - san.style.color = 'blue'; - san.onclick = function (e) { Sanitize(songVerse); } - body.appendChild(san); } } From ade0c8d81a0f269d48ea83fd1a29d057c9b39701 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Thu, 6 Oct 2022 13:12:18 +0200 Subject: [PATCH 026/664] Drag and Drop working on chrome. --- editor/a.html | 2 ++ editor/ch.css | 5 +++++ editor/ch.js | 18 ++++++++-------- editor/sanitize.js | 2 ++ editor/song.css | 1 + editor/songbody.js | 53 ++++++++++++++++++++++++++++++++++++++++++++-- 6 files changed, 70 insertions(+), 11 deletions(-) diff --git a/editor/a.html b/editor/a.html index 6071285c..b7690a57 100644 --- a/editor/a.html +++ b/editor/a.html @@ -2,6 +2,8 @@ + + diff --git a/editor/ch.css b/editor/ch.css index 3a289aae..dc202c15 100644 --- a/editor/ch.css +++ b/editor/ch.css @@ -42,3 +42,8 @@ span.cho span.ch { overflow-wrap: normal; font-weight: bold; } + +span.ch { + /* We want to keep pages background color when not selected.*/ + background: white; +} \ No newline at end of file diff --git a/editor/ch.js b/editor/ch.js index 5d052d8f..9ef8d5f2 100644 --- a/editor/ch.js +++ b/editor/ch.js @@ -6,21 +6,14 @@ const predefinedChords = ["A", "A2", "A4", "A7", "A7+", "A7/4", "A7/6", "Ais", "d6", "e", "e7", "e9", "f", "fis", "fis7", "g", "gis", "gis7", "h", "h0", "h7", "h7/5-"]; +const chtemplate = document.createElement('template'); class SongCh extends HTMLElement { constructor() { super(); - const template = document.createElement('template'); - template.innerHTML = - `` + - ``+ - `` + - `` + - ``; - const shadow = this.attachShadow({ mode: "closed" }); - shadow.appendChild(template.content.cloneNode(true)); + shadow.appendChild(chtemplate.content.cloneNode(true)); shadow.appendChild(predefinedChordsList()); this.ch = shadow.getElementById("ch"); @@ -142,6 +135,13 @@ function predefinedChordsList() { } function SongChInit(parent) { + chtemplate.innerHTML = + `` + + ``+ + `` + + `` + + ``; + customElements.define("song-ch", SongCh); } diff --git a/editor/sanitize.js b/editor/sanitize.js index bdd2170d..9776390b 100644 --- a/editor/sanitize.js +++ b/editor/sanitize.js @@ -168,7 +168,9 @@ function sanitizeRow(row) { function Sanitize(body) { if (!lightTraverse(body)) { console.log("Full fix..."); + console.log("before fix: ", body.outerHTML); traverse(body, body); + console.log("after fix: ", body.outerHTML); } let rows = body.getElementsByTagName("SONG-ROW"); for (let i=0; i < rows.length; ++i) { diff --git a/editor/song.css b/editor/song.css index 8d48878f..5cdda1eb 100644 --- a/editor/song.css +++ b/editor/song.css @@ -27,6 +27,7 @@ song-verses { songbody { display: block; } + /*song-ch {*/ /* user-select: all;*/ /*}*/ diff --git a/editor/songbody.js b/editor/songbody.js index 5e7915ae..87772259 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -73,7 +73,9 @@ class SongBody extends HTMLElement { this.body=shadow.getElementById("songbody"); this.body.addEventListener("mousedown", this.mouseDown); - this.body.addEventListener("dragover", this.dragOver); + this.body.addEventListener("dragover", (e) => {this.dragOver(e, this); }); + this.body.addEventListener("dragstart", (e) => {this.dragStart(e, this); }); + this.body.addEventListener("dragend", (e) => {this.dragEnd(e, this); }); this.body.addEventListener("drop", (e) => {this.drop(e, this); }); this.body.addEventListener("keydown", this.keyDown); } @@ -97,6 +99,23 @@ class SongBody extends HTMLElement { } } + dragStart(e, songbook) { + songbook.toRemoveWhenDropped = getSelection().getRangeAt(0).cloneRange(); + e.dataTransfer.effectAllowed="copyMove"; + } + dragEnd(e, songbook) { + songbook.toRemoveWhenDropped = null; + } + + // + // dragEnd(e, songbook) { + // console.log("BODY DRAG End", songbook.dropped, this.nodeName, e); + // if (songbook.dropped && e.dataTransfer.dropEffect==='move') { + // console.log("SELECTION: ", document.getSelection()); + // document.getSelection().deleteFromDocument(); + // } + // } + mouseDown(e) { if (e.detail > 1 && canInsertChord()) { if (insertChordHere("")) { @@ -126,7 +145,7 @@ class SongBody extends HTMLElement { } } - dragOver(e) { + dragOver(e, songbook) { if (e.dataTransfer.types.includes("songbook/chord")) { if (e.altKey) { e.dataTransfer.dropEffect = 'copy'; @@ -152,7 +171,37 @@ class SongBody extends HTMLElement { songbody.dropped = true; } e.preventDefault(); + return; + } + + d = e.dataTransfer.getData("text/html"); + if (d != null && d != "") { + console.log("Special!!!", e.dataTransfer.dropEffect); + + if ((e.dataTransfer.dropEffect === 'move' + || !e.altKey) && + songbody.toRemoveWhenDropped != null) { + songbody.toRemoveWhenDropped.deleteContents(); + } + + let range = getRangeForCursor(e) + let span = document.createElement("span"); + span.innerHTML=d; + range.insertNode(span); + Sanitize(songbody); + e.preventDefault(); + + //songbody.dropped = true; + + return; } + // console.log("On drop: ", e); + // e.dataTransfer.types.forEach( + // (t) => + // { + // console.log(t, e.dataTransfer.getData(t)); + // } + // ); } beforeInput(e) { From ec6fff9f0cea1dfedb0c9429740bb2a0e86c5bad Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Thu, 6 Oct 2022 15:21:53 +0200 Subject: [PATCH 027/664] Navigation improvements. --- editor/ch.js | 1 - editor/sanitize.js | 21 ++++++++++ editor/songbody.js | 98 +++++++++++++++++++++++++++++++++++++++------- 3 files changed, 105 insertions(+), 15 deletions(-) diff --git a/editor/ch.js b/editor/ch.js index 9ef8d5f2..ec7e14db 100644 --- a/editor/ch.js +++ b/editor/ch.js @@ -56,7 +56,6 @@ class SongCh extends HTMLElement { } this.onkeydown = (e) => { - console.log("CH-keydown", e); if (e.key == 'Enter' || e.key == 'Escape' || e.key == 'Tab') { if (this.che.value.trim() == '') { this.remove(); diff --git a/editor/sanitize.js b/editor/sanitize.js index 9776390b..9fbfe2d8 100644 --- a/editor/sanitize.js +++ b/editor/sanitize.js @@ -198,6 +198,10 @@ function lightTraverse(node) { console.log("Misplaced", node); return false; } + if (node.getAttribute("editor") === "false" + && node.getAttribute("a").trim().length == 0) { + node.remove(); + } break; } case 'SONG-ROW': { @@ -213,6 +217,9 @@ function lightTraverse(node) { console.log("Misplaced", node); return false; } + if (node.childNodes.length == 0) { + node.remove(); + } break; } case 'SONG-BIS': { @@ -220,6 +227,10 @@ function lightTraverse(node) { console.log("Misplaced", node); return false; } + if (node.childNodes.length == 0 + || node.childNodes[0].nodeName != 'SONG-ROWS') { + node.remove(); + } break; } case 'SONG-VERSE': { @@ -227,6 +238,10 @@ function lightTraverse(node) { console.log("Misplaced", node); return false; } + if (node.childNodes.length == 0 + || node.childNodes[0].nodeName != 'SONG-ROWS') { + node.remove(); + } break; } case 'SONG-VERSES': { @@ -262,5 +277,11 @@ function lightTraverse(node) { if (!lightTraverse(ns[i])) return false; } } + if (node.childNodes.length == 0 + && (node.nodeName==='SONG-ROWS' + || node.nodeName==='SONG-BIS' + || node.nodeName==='SONG-VERSE')) { + node.remove(); + } return true; } \ No newline at end of file diff --git a/editor/songbody.js b/editor/songbody.js index 87772259..b459b8b9 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -20,6 +20,7 @@ function mergeNodeAfter(target, source) { } target.append(documentFragment); if (first != null) { + console.log("Setting cursor before:", first); setCursorBefore(first); } source.remove(); @@ -53,10 +54,48 @@ function insertChordHere(ch) { function setCursorBefore(node) { let newr=document.createRange(); newr.setStartBefore(node); + newr.setEndBefore(node); document.getSelection().removeAllRanges(); document.getSelection().addRange(newr); + console.log("New selection:", document.getSelection(), newr); } +// anchorNode +// : +// song-row.accepts-ch +// anchorOffset +// : +// 0 +// baseNode +// : +// song-row.accepts-ch +// baseOffset +// : +// 0 +// extentNode +// : +// song-row.accepts-ch +// extentOffset +// : +// 0 +// focusNode +// : +// song-row.accepts-ch +// focusOffset +// : +// 0 +// isCollapsed +// : +// true +// rangeCount +// : +// 1 +// type +// : +// "Range" + + + class SongBody extends HTMLElement { constructor() { @@ -82,7 +121,8 @@ class SongBody extends HTMLElement { connectedCallback() { this.parentNodeBackup = this.parentNode; - this.parentNode.addEventListener("beforeinput", this.beforeInput); + this.beforeInputHandler = (e) => { this.beforeInput(e, this); }; + this.parentNode.addEventListener("beforeinput", this.beforeInputHandler); this.inputHandler = (e) => { this.input(e, this); }; this.parentNode.addEventListener("input", this.inputHandler); this.parentNode.addEventListener("keydown", this.keyDown); @@ -92,7 +132,7 @@ class SongBody extends HTMLElement { disconnectedCallback() { if (this.parentNodeBackup) { - this.parentNodeBackup.removeEventListener("beforeinput", this.beforeInput); + this.parentNodeBackup.removeEventListener("beforeinput", this.beforeInputHandler); this.parentNodeBackup.removeEventListener("input", this.inputHandler); this.parentNodeBackup.removeEventListener("keydown", this.keyDown); this.parentNodeBackup.removeEventListener("paste", this.pasteHandler); @@ -107,15 +147,6 @@ class SongBody extends HTMLElement { songbook.toRemoveWhenDropped = null; } - // - // dragEnd(e, songbook) { - // console.log("BODY DRAG End", songbook.dropped, this.nodeName, e); - // if (songbook.dropped && e.dataTransfer.dropEffect==='move') { - // console.log("SELECTION: ", document.getSelection()); - // document.getSelection().deleteFromDocument(); - // } - // } - mouseDown(e) { if (e.detail > 1 && canInsertChord()) { if (insertChordHere("")) { @@ -132,8 +163,9 @@ class SongBody extends HTMLElement { } } if (e.key == 'Backspace'){ - if (document.getSelection().isCollapsed && - document.getSelection().rangeCount == 1) { + if (document.getSelection().isCollapsed + && document.getSelection().rangeCount == 1 + && document.getSelection().type === 'Range') { let r = document.getSelection().getRangeAt(0); if (r.startOffset < r.startContainer.childNodes.length && r.startContainer.childNodes[r.startOffset].nodeName=='SONG-CH') { @@ -204,7 +236,7 @@ class SongBody extends HTMLElement { // ); } - beforeInput(e) { + beforeInput(e, songbody) { console.log("BEFORE"); if (e.inputType == "deleteContentBackward") { if (document.getSelection().rangeCount == 1 @@ -236,8 +268,31 @@ class SongBody extends HTMLElement { if (r.startContainer.nodeName == 'SONG-ROW' && r.startOffset == 0) { if (r.startContainer.previousSibling != null && r.startContainer.previousSibling.nodeName === 'SONG-ROW') { + // There is previous line: mergeNodeAfter(r.startContainer.previousSibling, r.startContainer); e.preventDefault(); + } if (r.startContainer.previousSibling != null + && r.startContainer.previousSibling.nodeName === 'SONG-BIS') { + // Previous line is within bis. + mergeNodeAfter(r.startContainer.previousSibling.childNodes[0].lastChild, r.startContainer); + e.preventDefault(); + } else if (r.startContainer.previousSibling == null + && r.startContainer.parentNode.parentNode != null + && r.startContainer.parentNode.parentNode.nodeName === 'SONG-BIS' + && r.startContainer.parentNode.parentNode.previousSibling != null + && r.startContainer.parentNode.parentNode.previousSibling.nodeName == 'SONG-ROW' ) { + // Previous line is outside of bis. + mergeNodeAfter(r.startContainer.parentNode.parentNode.previousSibling, + r.startContainer); + e.preventDefault(); + } else if (r.startContainer.previousSibling == null + && r.startContainer.parentNode.parentNode.previousSibling != null + && r.startContainer.parentNode.parentNode.previousSibling.nodeName === 'SONG-VERSE') { + // Previous line is in another verse. + mergeNodeAfter(r.startContainer.parentNode.parentNode.previousSibling.childNodes[0], + r.startContainer.parentNode); + r.startContainer.remove(); + e.preventDefault(); } } if (r.startContainer.nodeName == 'SONG-ROW' && r.startOffset == 1) { @@ -259,7 +314,22 @@ class SongBody extends HTMLElement { e.preventDefault(); } } + + r= document.getSelection().getRangeAt(0); + if (r.startContainer.nodeName === 'SONG-ROWS' + || r.startContainer.nodeName === 'SONG-VERSE' + || r.startContainer.nodeName === 'SONG-BIS' + || r.startContainer.nodeName === 'SONG-BODY') { + console.log("Preventing deletion of whole: ", r); + if (r.startContainer.childNodes[r.startOffset] != null + && r.startContainer.childNodes[r.startOffset].firstChild != null) { + setCursorBefore( + r.startContainer.childNodes[r.startOffset].firstChild); + } + e.preventDefault(); + } } + Sanitize(songbody); } } From 1f45c430f1b6b4d3e2547ac1caf78af67de4304b Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Thu, 6 Oct 2022 18:07:53 +0200 Subject: [PATCH 028/664] Splitting and merging works. --- editor/ch.css | 7 ++----- editor/ch.js | 8 +++++++- editor/sanitize.js | 45 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 6 deletions(-) diff --git a/editor/ch.css b/editor/ch.css index dc202c15..97a6338b 100644 --- a/editor/ch.css +++ b/editor/ch.css @@ -41,9 +41,6 @@ span.cho span.ch { width: fit-content; overflow-wrap: normal; font-weight: bold; -} - -span.ch { - /* We want to keep pages background color when not selected.*/ background: white; -} \ No newline at end of file + white-space:nowrap; +} diff --git a/editor/ch.js b/editor/ch.js index ec7e14db..e3b6c25e 100644 --- a/editor/ch.js +++ b/editor/ch.js @@ -81,7 +81,13 @@ class SongCh extends HTMLElement { selectParent() { this.parentNode.focus(); let r = document.createRange(); - r.setStartAfter(this); + if (this.nextSibling==null) { + let t=document.createTextNode(nbsp); + this.parentNode.appendChild(t); + r.selectNodeContents(t); + } else { + r.setStartAfter(this); + } document.getSelection().removeAllRanges(); document.getSelection().addRange(r); } diff --git a/editor/sanitize.js b/editor/sanitize.js index 9fbfe2d8..03dd3834 100644 --- a/editor/sanitize.js +++ b/editor/sanitize.js @@ -164,6 +164,11 @@ function sanitizeRow(row) { } } +function isEmptyRow(el) { + return el != null + && el.nodeName==='SONG-ROW' + && (el.textContent==='' || el.textContent===nbsp); +} function Sanitize(body) { if (!lightTraverse(body)) { @@ -172,11 +177,50 @@ function Sanitize(body) { traverse(body, body); console.log("after fix: ", body.outerHTML); } + + // Let's cleanup rows let rows = body.getElementsByTagName("SONG-ROW"); for (let i=0; i < rows.length; ++i) { let row = rows[i]; sanitizeRow(row); } + + // Let's find 2 empty rows side by side... to split the function + rows = body.getElementsByTagName("SONG-ROW"); + for (let i=0; i < rows.length; ++i) { + if (isEmptyRow(rows[i]) && isEmptyRow(rows[i].previousSibling)) { + if (rows[i].parentNode.parentNode.nodeName == 'SONG-VERSE') { + let row=rows[i]; + let newVerse = rows[i].parentNode.parentNode.cloneNode(false); + if (rows[i].parentNode.parentNode.nextSibling) { + console.log('NEXT', rows[i].parentNode.parentNode.nextSibling); + rows[i].parentNode.parentNode.parentNode.insertBefore( + newVerse, rows[i].parentNode.parentNode.nextSibling); + } else { + console.log('LAST', rows[i].parentNode.parentNode.nextSibling); + rows[i].parentNode.parentNode.parentNode.appendChild(newVerse); + } + let newRows = document.createElement("SONG-ROWS"); + newVerse.appendChild(newRows); + console.log(row, row.nextSibling); + let r=row.nextSibling; + if (r==null) { + row.previousSibling.remove(); + newRows.append(row); + } else { + while(r != null) { + let nr=r.nextSibling; + newRows.appendChild(r); + r=nr; + } + row.previousSibling.remove(); + row.remove(); + } + } + } + } + + } // Returns whether tree is valid (is. requires deep validation). @@ -277,6 +321,7 @@ function lightTraverse(node) { if (!lightTraverse(ns[i])) return false; } } + // Let's avoid having empty tags. if (node.childNodes.length == 0 && (node.nodeName==='SONG-ROWS' || node.nodeName==='SONG-BIS' From 18292b0297fcb3ed1b2d223959ff5be94a9ae41d Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Fri, 7 Oct 2022 18:02:41 +0200 Subject: [PATCH 029/664] BIS working. --- editor/songbody.js | 109 ++++++++++++++++++++++++++++++--------------- editor/verse.css | 13 +++--- editor/verse.js | 13 +++++- 3 files changed, 91 insertions(+), 44 deletions(-) diff --git a/editor/songbody.js b/editor/songbody.js index b459b8b9..a6b2c6fb 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -60,42 +60,16 @@ function setCursorBefore(node) { console.log("New selection:", document.getSelection(), newr); } -// anchorNode -// : -// song-row.accepts-ch -// anchorOffset -// : -// 0 -// baseNode -// : -// song-row.accepts-ch -// baseOffset -// : -// 0 -// extentNode -// : -// song-row.accepts-ch -// extentOffset -// : -// 0 -// focusNode -// : -// song-row.accepts-ch -// focusOffset -// : -// 0 -// isCollapsed -// : -// true -// rangeCount -// : -// 1 -// type -// : -// "Range" - - - +function flattenBis(node) { + if (!node) { + return; + } + rows = node.childNodes[0].childNodes; + while (rows.length > 0) { + node.parentNode.insertBefore(rows[0], node); + } + node.remove(); +} class SongBody extends HTMLElement { constructor() { @@ -104,12 +78,14 @@ class SongBody extends HTMLElement { const template = document.createElement('template'); template.innerHTML = ` +
`; const shadow = this.attachShadow({ mode: "closed" }); shadow.appendChild(template.content.cloneNode(true)); this.body=shadow.getElementById("songbody"); + this.buttonBis=shadow.getElementById("buttonBis"); this.body.addEventListener("mousedown", this.mouseDown); this.body.addEventListener("dragover", (e) => {this.dragOver(e, this); }); @@ -117,6 +93,16 @@ class SongBody extends HTMLElement { this.body.addEventListener("dragend", (e) => {this.dragEnd(e, this); }); this.body.addEventListener("drop", (e) => {this.drop(e, this); }); this.body.addEventListener("keydown", this.keyDown); + this.body.addEventListener("focusout", (e) => {this.focusout(e, this); }); + + this.buttonBis.addEventListener("click", (e) => this.wrapBis()); + } + + focusout(e, songbook) { + console.log("focusout", e); + if (e.target.nodeName==='SONG-BIS' && e.target.getAttribute("x")==="1") { + flattenBis(e.target); + } } connectedCallback() { @@ -139,6 +125,57 @@ class SongBody extends HTMLElement { } } + selectedRows() { + let r = document.getSelection().getRangeAt(0); + let result=[]; + + let songRowsParent = findAncestor(r.commonAncestorContainer,"SONG-ROWS"); + if (songRowsParent) { + let rows = songRowsParent.getElementsByTagName("SONG-ROW"); + // let parentRow = findAncestor(r.commonAncestorContainer, "SONG-ROW"); + for (let i = 0; i < rows.length; ++i) { + let row = rows[i]; + if (r.intersectsNode(row)) { + result.push(row); + } + } + } + return result; + } + + wrapBis() { + let r = document.getSelection().getRangeAt(0); + + console.log(r.commonAncestorContainer); + let songRowsParent = findAncestor(r.commonAncestorContainer,"SONG-ROWS"); + + if (songRowsParent) { + let selRows = this.selectedRows(); + + flattenBis(findAncestor(r.startContainer, "SONG-BIS")); + flattenBis(findAncestor(r.endContainer, "SONG-BIS")); + + let biss = songRowsParent.getElementsByTagName("SONG-BIS"); + for (let i = 0; i < biss.length; ++i) { + console.log("Considering", biss[i]); + if (r.intersectsNode(biss[i])) { + flattenBis(biss[i]); + } + } + + if (selRows.length > 0) { + songRowsParent = selRows[0].parentNode; + let bis = document.createElement("song-bis"); + bis.setAttribute("x", "2"); + let bisRows = document.createElement("song-rows"); + bis.appendChild(bisRows); + songRowsParent.insertBefore(bis, selRows[0]); + bisRows.append(...selRows); + bis.focus(); + } + } + } + dragStart(e, songbook) { songbook.toRemoveWhenDropped = getSelection().getRangeAt(0).cloneRange(); e.dataTransfer.effectAllowed="copyMove"; diff --git a/editor/verse.css b/editor/verse.css index 697903a5..8a1a5802 100644 --- a/editor/verse.css +++ b/editor/verse.css @@ -29,6 +29,8 @@ div.verse_main { div.bis { display: grid; align-items: stretch; + grid-template-columns: 1fr fit-content(2em); + margin-top: 0.2em; } div.bis_meta { @@ -42,16 +44,15 @@ div.bis_meta { border-left: 1px solid black; } -div.bis_meta span#x { +div.bis_meta input#x { display: block; margin-top: auto; - margin-left: 0.5em; + margin-left: 0.2em; } -span#x:before { - content: 'x'; - display: inline-block; - margin-right: 0.3em; +label#xl { + margin-left: 0.5em; + margin-top: auto; } div.bis_main { diff --git a/editor/verse.js b/editor/verse.js index 0a98c620..e8b2aa30 100644 --- a/editor/verse.js +++ b/editor/verse.js @@ -51,13 +51,18 @@ class SongBis extends HTMLElement {
-
s?
+
`; const shadow = this.attachShadow({ mode: "closed" }); shadow.appendChild(template.content.cloneNode(true)); this.x=shadow.getElementById("x"); + this.x.addEventListener("input", (e) => {this.input(e, this)}); + } + + input(e, songbis) { + songbis.setAttribute("x", e.target.value); } connectedCallback() { @@ -65,12 +70,16 @@ class SongBis extends HTMLElement { } attributeChangedCallback() { - this.x.innerText = this.getAttribute("x"); + this.x.value = this.getAttribute("x"); } static get observedAttributes() { return ["x"] } + + focus() { + this.x.focus(); + } } From ded561214cb8b8db74ea09d7851a2b494bdb1315 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Fri, 7 Oct 2022 19:49:34 +0200 Subject: [PATCH 030/664] - Shortcut for BIS (Ctrl+b) - More selective "input". --- editor/sanitize.js | 15 +++++---------- editor/songbody.js | 43 ++++++++++++++++++++++++++++++++++--------- 2 files changed, 39 insertions(+), 19 deletions(-) diff --git a/editor/sanitize.js b/editor/sanitize.js index 03dd3834..39c517d3 100644 --- a/editor/sanitize.js +++ b/editor/sanitize.js @@ -189,17 +189,12 @@ function Sanitize(body) { rows = body.getElementsByTagName("SONG-ROW"); for (let i=0; i < rows.length; ++i) { if (isEmptyRow(rows[i]) && isEmptyRow(rows[i].previousSibling)) { - if (rows[i].parentNode.parentNode.nodeName == 'SONG-VERSE') { + songVerse = findAncestor(rows[i], "SONG-VERSE"); + if (songVerse) { let row=rows[i]; - let newVerse = rows[i].parentNode.parentNode.cloneNode(false); - if (rows[i].parentNode.parentNode.nextSibling) { - console.log('NEXT', rows[i].parentNode.parentNode.nextSibling); - rows[i].parentNode.parentNode.parentNode.insertBefore( - newVerse, rows[i].parentNode.parentNode.nextSibling); - } else { - console.log('LAST', rows[i].parentNode.parentNode.nextSibling); - rows[i].parentNode.parentNode.parentNode.appendChild(newVerse); - } + let newVerse = songVerse.cloneNode(false); + songVerse.parentNode.insertBefore( + newVerse, songVerse.nextSibling); let newRows = document.createElement("SONG-ROWS"); newVerse.appendChild(newRows); console.log(row, row.nextSibling); diff --git a/editor/songbody.js b/editor/songbody.js index a6b2c6fb..9202c90e 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -92,7 +92,7 @@ class SongBody extends HTMLElement { this.body.addEventListener("dragstart", (e) => {this.dragStart(e, this); }); this.body.addEventListener("dragend", (e) => {this.dragEnd(e, this); }); this.body.addEventListener("drop", (e) => {this.drop(e, this); }); - this.body.addEventListener("keydown", this.keyDown); + // this.body.addEventListener("keydown", (e) => { this.keyDown(e, this); }); this.body.addEventListener("focusout", (e) => {this.focusout(e, this); }); this.buttonBis.addEventListener("click", (e) => this.wrapBis()); @@ -111,7 +111,8 @@ class SongBody extends HTMLElement { this.parentNode.addEventListener("beforeinput", this.beforeInputHandler); this.inputHandler = (e) => { this.input(e, this); }; this.parentNode.addEventListener("input", this.inputHandler); - this.parentNode.addEventListener("keydown", this.keyDown); + this.keyDownHandler = (e) => this.keyDown(e, this); + this.parentNode.addEventListener("keydown", this.keyDownHandler); this.pasteHandler = (e) => { this.paste(e, this); }; this.parentNode.addEventListener("paste", this.pasteHandler); } @@ -120,7 +121,7 @@ class SongBody extends HTMLElement { if (this.parentNodeBackup) { this.parentNodeBackup.removeEventListener("beforeinput", this.beforeInputHandler); this.parentNodeBackup.removeEventListener("input", this.inputHandler); - this.parentNodeBackup.removeEventListener("keydown", this.keyDown); + this.parentNodeBackup.removeEventListener("keydown", this.keyDownHandler); this.parentNodeBackup.removeEventListener("paste", this.pasteHandler); } } @@ -192,7 +193,7 @@ class SongBody extends HTMLElement { } } - keyDown(e) { + keyDown(e,songBook) { console.log("keydown...",e, document.getSelection()); if (e.key == '`' && canInsertChord()) { if (insertChordHere("")) { @@ -210,7 +211,10 @@ class SongBody extends HTMLElement { e.preventDefault(); } } - + } + if (e.key == 'b' && e.metaKey) { + songBook.wrapBis(); + e.preventDefault(); } } @@ -274,8 +278,9 @@ class SongBody extends HTMLElement { } beforeInput(e, songbody) { - console.log("BEFORE"); - if (e.inputType == "deleteContentBackward") { + console.log("BEFORE", e); + if (e.inputType == "deleteContentBackward" + && e.target == songbody.parentNode) { if (document.getSelection().rangeCount == 1 && document.getSelection().isCollapsed) { let r = document.getSelection().getRangeAt(0); @@ -297,8 +302,6 @@ class SongBody extends HTMLElement { mergeNodeAfter(r.startContainer.parentNode.previousSibling, r.startContainer.parentNode); e.preventDefault(); - } else { - alert("not yet coded1"); } } // When we are at the beginning of the ROW, we merge the rows. @@ -346,10 +349,32 @@ class SongBody extends HTMLElement { if (r.startContainer.nodeName == '#text' && r.startOffset == 0) { if (r.startContainer.previousSibling == null && r.startContainer.parentNode.nodeName === 'SONG-ROW' + && r.startContainer.parentNode.previousSibling != null && r.startContainer.parentNode.previousSibling.nodeName === 'SONG-ROW') { mergeNodeAfter(r.startContainer.parentNode.previousSibling, r.startContainer.parentNode); e.preventDefault(); } + if (r.startContainer.previousSibling == null + && r.startContainer.parentNode.nodeName === 'SONG-ROW' + && r.startContainer.parentNode.previousSibling == null + && r.startContainer.parentNode.parentNode.parentNode.nodeName === 'SONG-VERSE' + && r.startContainer.parentNode.parentNode.parentNode.previousSibling + && r.startContainer.parentNode.parentNode.parentNode.previousSibling.nodeName === 'SONG-VERSE') { + mergeNodeAfter(r.startContainer.parentNode.parentNode.parentNode.previousSibling.childNodes[0], r.startContainer.parentNode.parentNode); + e.preventDefault(); + } + if (r.startContainer.previousSibling == null + && r.startContainer.parentNode.nodeName === 'SONG-ROW' + && r.startContainer.parentNode.previousSibling == null + && r.startContainer.parentNode.parentNode.parentNode.nodeName === 'SONG-BIS' + && !r.startContainer.parentNode.parentNode.parentNode.previousSibling + && r.startContainer.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName === 'SONG-VERSE' + && r.startContainer.parentNode.parentNode.parentNode.parentNode.parentNode.previousSibling + && r.startContainer.parentNode.parentNode.parentNode.parentNode.parentNode.previousSibling.nodeName === 'SONG-VERSE') { + mergeNodeAfter(r.startContainer.parentNode.parentNode.parentNode.parentNode.parentNode.previousSibling.childNodes[0], r.startContainer.parentNode.parentNode.parentNode.parentNode); + e.preventDefault(); + } + } r= document.getSelection().getRangeAt(0); From 96898685bd4ea6fb876efe52fc23926b91cbab3e Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Fri, 7 Oct 2022 19:52:43 +0200 Subject: [PATCH 031/664] Empty bis, removes BIS as well. --- editor/songbody.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/editor/songbody.js b/editor/songbody.js index 9202c90e..521a3717 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -100,7 +100,9 @@ class SongBody extends HTMLElement { focusout(e, songbook) { console.log("focusout", e); - if (e.target.nodeName==='SONG-BIS' && e.target.getAttribute("x")==="1") { + if (e.target.nodeName==='SONG-BIS' + && (e.target.getAttribute("x").trim()==="1" + || e.target.getAttribute("x").trim()==="")) { flattenBis(e.target); } } From 35805abc131746d948cbf858ddcadbf6c402d8c3 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Fri, 7 Oct 2022 20:51:14 +0200 Subject: [PATCH 032/664] Verse renumbering. --- editor/songbody.js | 6 ++++-- editor/verse.js | 12 +++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/editor/songbody.js b/editor/songbody.js index 521a3717..13a65af1 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -102,7 +102,8 @@ class SongBody extends HTMLElement { console.log("focusout", e); if (e.target.nodeName==='SONG-BIS' && (e.target.getAttribute("x").trim()==="1" - || e.target.getAttribute("x").trim()==="")) { + || e.target.getAttribute("x").trim()==="" + || e.target.getAttribute("x").trim()==="0")) { flattenBis(e.target); } } @@ -188,7 +189,8 @@ class SongBody extends HTMLElement { } mouseDown(e) { - if (e.detail > 1 && canInsertChord()) { + console.log("mouseDown", e); + if (e.detail > 1 && canInsertChord() && e.target.nodeName==='SONG-ROW') { if (insertChordHere("")) { e.preventDefault(); } diff --git a/editor/verse.js b/editor/verse.js index e8b2aa30..51a45d89 100644 --- a/editor/verse.js +++ b/editor/verse.js @@ -23,9 +23,15 @@ class SongVerse extends HTMLElement { } connectedCallback() { - for (let i=0; i < this.parentNode.childNodes.length; ++i) { - if (this.parentNode.childNodes[i] == this) { - this.nr.innerText = (i+1)+"."; + this.refreshPosition(this) + this.observer = new MutationObserver(() => this.refreshPosition(this)); + this.observer.observe(this.parentNode, { attributes: false, childList: true, subtree: false }); + } + + refreshPosition(verse) { + for (let i=0; i < verse.parentNode.childNodes.length; ++i) { + if (verse.parentNode.childNodes[i] == this) { + verse.nr.innerText = (i+1)+"."; } } } From 0e183bfdb3714752176d7a5dc1a943aa1ee12bf4 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Fri, 7 Oct 2022 21:20:11 +0200 Subject: [PATCH 033/664] Chorus (Ref) is intending the content. --- editor/verse.css | 4 +++- editor/verse.js | 29 +++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/editor/verse.css b/editor/verse.css index 8a1a5802..97164875 100644 --- a/editor/verse.css +++ b/editor/verse.css @@ -23,7 +23,9 @@ div.verse_main { margin-left: 1em; } - +div#verse_main.chorus { + padding-left: 2em; +} div.bis { diff --git a/editor/verse.js b/editor/verse.js index 51a45d89..ed1c6705 100644 --- a/editor/verse.js +++ b/editor/verse.js @@ -13,13 +13,26 @@ class SongVerse extends HTMLElement {
-
+
`; const shadow = this.attachShadow({ mode: "closed" }); shadow.appendChild(template.content.cloneNode(true)); this.nr=shadow.getElementById("nr"); + this.ref=shadow.getElementById("ref"); + this.main=shadow.getElementById("verse_main"); + this.ref.addEventListener("input", (e) => this.refoninput(e, this)); + } + + refoninput(e, verse) { + if (verse.ref.checked) { + verse.setAttribute("type", "chorus"); + verse.main.classList.add("chorus"); + } else { + verse.setAttribute("type", "verse"); + verse.main.classList.remove("chorus"); + } } connectedCallback() { @@ -36,8 +49,20 @@ class SongVerse extends HTMLElement { } } + static get observedAttributes() { + return ["blocknb", "type"] + } + attributeChangedCallback() { - console.log("onChange", this); + + } + + refreshAttributes() { + if (this.getAttribute('type')==='chorus') { + this.ref.value="true" + } else { + this.ref.value="false" + } } } From 8dba5bf3ef74a088f2a7bfa626f74b6141ac1598 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sat, 8 Oct 2022 14:59:24 +0200 Subject: [PATCH 034/664] Sanitize understands XML format. --- editor/sanitize.js | 54 ++++++++++++++++++++++-- editor/songbody.js | 5 ++- editor/songbook.js | 102 +++++++++++++++------------------------------ 3 files changed, 88 insertions(+), 73 deletions(-) diff --git a/editor/sanitize.js b/editor/sanitize.js index 39c517d3..06c0c9fe 100644 --- a/editor/sanitize.js +++ b/editor/sanitize.js @@ -78,11 +78,18 @@ function traverseChilds(parent, childNodes) { // // parent - is sanitized parent of tag (song, song-verse(div), song-bis(div), song-row(div)) // // the call responsibility is to process the node and put it into parent. function traverse(parent, node) { + console.log("Traversing...", node.nodeName, node); node.style=null; - switch (node.nodeName) { + switch (node.nodeName.toUpperCase()) { // BASIC - case '#text' : { + case '#TEXT' : { + console.log("Sanitizing text:", node); + if (node.parentNode.nodeName!='SONG-ROW' && node.nodeValue.trim().replace(/[\n\t\r]/g,"")==='') { + node.remove(); + return parent; + } + node.nodeValue=node.nodeValue.replaceAll(" ", nbsp); let newParent = nestToRow(parent); newParent.appendChild(node); return newParent; @@ -113,7 +120,7 @@ function traverse(parent, node) { } case 'SONG-VERSE': { let newParent = nestToBody(parent); - newParent.appendChild(node); + newParent.appendChild(node); traverseChilds(node, node.childNodes); return newParent; } @@ -132,6 +139,7 @@ function traverse(parent, node) { newParent.appendChild(ch); return newParent; } + break; } case 'SPAN': { @@ -142,6 +150,45 @@ function traverse(parent, node) { node.remove(); return newParent; } + break; + } + + case 'CH': { + console.log("Sanitizing CH", node); + removeAllChildren(node); + let newParent = nestToRow(parent); + newParent.appendChild(createChord(node.getAttribute("a"))); + return newParent; + } + case 'BIS': { + let newParent = nestToRows(parent); + let newBis = document.createElement("song-bis"); + newBis.setAttribute("x", node.getAttribute("times")); + newParent.appendChild(newBis); + let newRows = document.createElement("song-rows"); + newBis.appendChild(newRows); + traverseChilds(newRows, node.childNodes); + return newParent; + } + case 'BLOCK': { + console.log("SanitizingBLOCKH", node); + let newParent = nestToBody(parent); + let newVerse = document.createElement("song-verse"); + newParent.appendChild(newVerse); + let newRows = document.createElement("song-rows"); + newVerse.appendChild(newRows); + traverseChilds(newRows, node.childNodes); + node.remove(); + return newParent; + } + case 'ROW': { + console.log("Sanitizing row", node); + let newParent = nestToRows(parent); + let newRow = document.createElement("song-row"); + newParent.appendChild(newRow); + traverseChilds(newRow, node.childNodes); + node.remove(); + return newParent; } } while (node.childNodes.length > 0) { @@ -229,6 +276,7 @@ function lightTraverse(node) { console.log("Misplaced", node); return false; } + node.nodeValue=node.nodeValue.replaceAll(" ", nbsp); break; } case 'SONG-CH': { diff --git a/editor/songbody.js b/editor/songbody.js index 13a65af1..3752af21 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -421,8 +421,11 @@ class SongBody extends HTMLElement { paste(e, songbody) { console.log(e); + console.log("types", e.clipboardData.types); let p = document.createElement("span"); - p.innerHTML = e.clipboardData.getData("text/html"); + let data = e.clipboardData.getData("text/html"); + console.log(data); + p.innerHTML = data; getSelection().getRangeAt(0).insertNode(p); e.preventDefault(); Sanitize(songbody); diff --git a/editor/songbook.js b/editor/songbook.js index 75f982cb..747b291e 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -1,45 +1,38 @@ - -function rowToNodes(row) { - if (row.nodeName!='row') { - return []; - } - let newRow = document.createElement("song-row"); - newRow.classList.add("accepts-ch"); - let nodes=[]; - for (let i = 0; i < row.childNodes.length; ++i) { - let node = row.childNodes[i]; - if (node.nodeName == '#text') { - let n = node.cloneNode(); - newRow.appendChild(n); - n.nodeValue = n.nodeValue.replaceAll(spaceRegex, nbsp); - } else { - newRow.appendChild(createChord(node.attributes['a'].value)); - } - } - return [newRow]; -} - - function onLoad() { //document.execCommand('defaultParagraphSeparator', false, 'br'); text = '' - + '' - + ' ' - + ' Kiedy stałem w przedświcie a Synaj' - + ' ' - + ' Prawdę głosił przez trąby wiatru' - + ' Zasmerczyły się chmury igliwiem' - + ' ' - + ' Bure świerki o góry wsparte' - + ' ' - + ' ' - + ' Kiedy stałem w przedświcie a Synaj' - + ' Prawdę głosił przez trąby wiatru' - + ' Zasmerczyły się chmury igliwiem' - + ' Bure świerki o góry wsparte' - + ' ' - + ''; + + ` + + Kiedy stałem w przedświcie a Synaj + Prawdę głosił przez trąby wiatru + Zasmerczyły się chmury igliwiem + + Bure świerki o góry wsparte + I na niebie byłem ja jeden + Plotąc pieśni w warkocze bukowe + + I schodziłem na ziemię za kwestą + Przez skrzydlącą się bramę Lackowej + + + I był Beskid i były słowa + Zanurzone po pępki w cerkwi baniach + Rozłożyście złotych + Smagających się wiatrem do krwi + + + Moje myśli biegały końmi + Po niebieskich mokrych połoninach + I modliłem się złożywszy dłonie + Do gór do madonny brunatnolicej + A gdy serce kroplami tęsknoty + Jęło spadać na góry sine + Czarodziejskim kwiatem paproci + Rozgwieździła się bukowina + + + `; parser = new DOMParser(); xmlDoc = parser.parseFromString(text, "text/xml"); @@ -52,37 +45,8 @@ function onLoad() { let body = createSongBody(); editor.appendChild(body); - // let bodydiv = document.createElement("song-verses"); - // body.appendChild(bodydiv); - - let verses = xmlDoc.getRootNode().childNodes[0].getElementsByTagName('verse'); - for (let vi = 0; vi < verses.length; ++vi) { - let verse = verses[vi]; - let songVerse = document.createElement("song-verse"); - let d= document.createElement("song-rows"); - - body.appendChild(songVerse); - songVerse.appendChild(d); - let rowsOrBis = verse.childNodes; - - for (let i = 0; i < rowsOrBis.length; ++i) { - if (rowsOrBis[i].nodeName == 'row') { - d.append(...rowToNodes(rowsOrBis[i])); - } - - if (rowsOrBis[i].nodeName == 'bis') { - bis = rowsOrBis[i]; - b = document.createElement("song-bis"); - b.setAttribute("x", bis.attributes['times'].value); - let bd= document.createElement("song-rows"); - b.appendChild(bd); - for (let j=0; j < bis.childNodes.length; ++j) { - bd.append(...rowToNodes(bis.childNodes[j])); - } - d.appendChild(b); - } - } - } + body.appendChild(xmlDoc.getRootNode().childNodes[0]); + Sanitize(body); } From 750285fea31e7c19382b77c6be0041ccdbd36e90 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sun, 9 Oct 2022 13:13:30 +0200 Subject: [PATCH 035/664] Grab icon on a chord. --- editor/ch.css | 1 + 1 file changed, 1 insertion(+) diff --git a/editor/ch.css b/editor/ch.css index 97a6338b..c3d52341 100644 --- a/editor/ch.css +++ b/editor/ch.css @@ -20,6 +20,7 @@ span.cho span.ch { overflow-wrap: normal; hyphens: none; user-select: all; + cursor: grab; } span.cho input.ch { From 83365f1ffec837b152c1dae3271c6444bd8b4a75 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sun, 9 Oct 2022 13:28:49 +0200 Subject: [PATCH 036/664] Refrens are not counted to verse numbering. --- editor/verse.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/editor/verse.js b/editor/verse.js index ed1c6705..e95c8775 100644 --- a/editor/verse.js +++ b/editor/verse.js @@ -38,14 +38,24 @@ class SongVerse extends HTMLElement { connectedCallback() { this.refreshPosition(this) this.observer = new MutationObserver(() => this.refreshPosition(this)); - this.observer.observe(this.parentNode, { attributes: false, childList: true, subtree: false }); + this.observer.observe(this.parentNode, { attributes: true, childList: true, subtree: true }); + this.refoninput(null, this); } refreshPosition(verse) { - for (let i=0; i < verse.parentNode.childNodes.length; ++i) { - if (verse.parentNode.childNodes[i] == this) { - verse.nr.innerText = (i+1)+"."; + if (verse.getAttribute('type')==='verse') { + let j=0; + for (let i=0; i < verse.parentNode.childNodes.length; ++i) { + if (verse.parentNode.childNodes[i].getAttribute('type')==='verse') { + j=j+1; + } + if (verse.parentNode.childNodes[i]===this) { + verse.nr.innerText = j+"."; + return; + } } + } else { + verse.nr.innerText=''; } } From db92830a8025ae4ff0653cdd59ffd3315057613a Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sun, 9 Oct 2022 21:04:38 +0200 Subject: [PATCH 037/664] Not sure about this change. --- editor/sanitize.js | 20 +++++++++++++------- editor/songbody.js | 34 +++++++++++++++++----------------- editor/songbook.js | 4 +++- editor/verse.js | 34 ++++++++++++++++++++++++++-------- 4 files changed, 59 insertions(+), 33 deletions(-) diff --git a/editor/sanitize.js b/editor/sanitize.js index 06c0c9fe..1fe6cd9d 100644 --- a/editor/sanitize.js +++ b/editor/sanitize.js @@ -78,13 +78,12 @@ function traverseChilds(parent, childNodes) { // // parent - is sanitized parent of tag (song, song-verse(div), song-bis(div), song-row(div)) // // the call responsibility is to process the node and put it into parent. function traverse(parent, node) { - console.log("Traversing...", node.nodeName, node); + //console.log("Traversing...", node.nodeName, node); node.style=null; switch (node.nodeName.toUpperCase()) { // BASIC case '#TEXT' : { - console.log("Sanitizing text:", node); if (node.parentNode.nodeName!='SONG-ROW' && node.nodeValue.trim().replace(/[\n\t\r]/g,"")==='') { node.remove(); return parent; @@ -154,7 +153,6 @@ function traverse(parent, node) { } case 'CH': { - console.log("Sanitizing CH", node); removeAllChildren(node); let newParent = nestToRow(parent); newParent.appendChild(createChord(node.getAttribute("a"))); @@ -171,18 +169,17 @@ function traverse(parent, node) { return newParent; } case 'BLOCK': { - console.log("SanitizingBLOCKH", node); let newParent = nestToBody(parent); let newVerse = document.createElement("song-verse"); newParent.appendChild(newVerse); let newRows = document.createElement("song-rows"); newVerse.appendChild(newRows); + newVerse.setAttribute("type", node.getAttribute("type", "verse")) traverseChilds(newRows, node.childNodes); node.remove(); return newParent; } case 'ROW': { - console.log("Sanitizing row", node); let newParent = nestToRows(parent); let newRow = document.createElement("song-row"); newParent.appendChild(newRow); @@ -218,6 +215,11 @@ function isEmptyRow(el) { } function Sanitize(body) { + let r=document.getSelection().rangeCount>0 ? document.getSelection().getRangeAt(0).cloneRange() : null; + // As sanitization modifies the text (e.g replace all ' ' -> nbsp), we + // need to persist where is the selection, to be able to restore it. + let rso=r?r.startOffset:0; + console.log("Stored", r); if (!lightTraverse(body)) { console.log("Full fix..."); console.log("before fix: ", body.outerHTML); @@ -262,14 +264,18 @@ function Sanitize(body) { } } - + if (r) { + r.setStart(r.startContainer, rso); + document.getSelection().removeAllRanges(); + document.getSelection().addRange(r); + } } // Returns whether tree is valid (is. requires deep validation). function lightTraverse(node) { if (node instanceof Element) { node.removeAttribute("style"); - } + }`` switch (node.nodeName) { case '#text' : { if (node.parentNode.nodeName!='SONG-ROW') { diff --git a/editor/songbody.js b/editor/songbody.js index 3752af21..7b9c5938 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -400,23 +400,23 @@ class SongBody extends HTMLElement { } input(e, songbody) { - console.log("Oninput", e); - Sanitize(songbody); -// Avoid keeping cursor before the artifical space: - if (document.getSelection().isCollapsed - && document.getSelection().rangeCount == 1) { - let r = document.getSelection().getRangeAt(0); - //console.log("ON INPUT", document.getSelection(), r.startContainer.nodeName, r.startOffset, r.startContainer); - if (r.startContainer.nodeName === "#text" - && r.startOffset == 0 - && r.startContainer.nodeValue.startsWith(nbsp) - && r.startContainer.previousSibling == null) { - let newr = document.createRange(); - newr.setStart(r.startContainer, 1); - document.getSelection().removeAllRanges(); - document.getSelection().addRange(newr); - } - } +// console.log("Oninput", e); + Sanitize(songbody); +// // Avoid keeping cursor before the artifical space: +// if (document.getSelection().isCollapsed +// && document.getSelection().rangeCount == 1) { +// let r = document.getSelection().getRangeAt(0); +// //console.log("ON INPUT", document.getSelection(), r.startContainer.nodeName, r.startOffset, r.startContainer); +// if (r.startContainer.nodeName === "#text" +// && r.startOffset == 0 +// && r.startContainer.nodeValue.startsWith(nbsp) +// && r.startContainer.previousSibling == null) { +// let newr = document.createRange(); +// newr.setStart(r.startContainer, 1); +// document.getSelection().removeAllRanges(); +// document.getSelection().addRange(newr); +// } +// } } paste(e, songbody) { diff --git a/editor/songbook.js b/editor/songbook.js index 747b291e..cab08414 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -47,7 +47,9 @@ function onLoad() { body.appendChild(xmlDoc.getRootNode().childNodes[0]); Sanitize(body); - + // + // let observer = new MutationObserver(() => { console.log("Foo"); }); + // observer.observe(body, {childList: true, subtree:true}); } diff --git a/editor/verse.js b/editor/verse.js index e95c8775..a25c89a7 100644 --- a/editor/verse.js +++ b/editor/verse.js @@ -28,21 +28,37 @@ class SongVerse extends HTMLElement { refoninput(e, verse) { if (verse.ref.checked) { verse.setAttribute("type", "chorus"); - verse.main.classList.add("chorus"); } else { verse.setAttribute("type", "verse"); - verse.main.classList.remove("chorus"); + } + verse.updateClass() + } + + updateClass() { + if (this.getAttribute("type")!=="verse") { + this.main.classList.add("chorus"); + } else { + this.main.classList.remove("chorus"); } } connectedCallback() { + this.observer = new MutationObserver((mutations) => { + console.log("CALLBACK"); + this.refreshPosition(this, mutations); + } ); + console.log("Observing:", this.parentNode); this.refreshPosition(this) - this.observer = new MutationObserver(() => this.refreshPosition(this)); - this.observer.observe(this.parentNode, { attributes: true, childList: true, subtree: true }); - this.refoninput(null, this); + this.observer.observe(this.parentNode, { attributes: false, childList: true, subtree: false }); } - refreshPosition(verse) { + disconnectCallback() { + console.log("DISCONNECTED"); + this.observer.disconnect(); + } + + refreshPosition(verse, mutations) { + console.log("Refreshing... ", verse, mutations); if (verse.getAttribute('type')==='verse') { let j=0; for (let i=0; i < verse.parentNode.childNodes.length; ++i) { @@ -50,7 +66,7 @@ class SongVerse extends HTMLElement { j=j+1; } if (verse.parentNode.childNodes[i]===this) { - verse.nr.innerText = j+"."; + verse.nr.innerText = j+".X"; return; } } @@ -64,7 +80,9 @@ class SongVerse extends HTMLElement { } attributeChangedCallback() { - + console.log("Attribute changed...") + this.ref.checked=this.getAttribute("type") !== "verse"; + this.updateClass(); } refreshAttributes() { From 99a8eb58e22419acef50579cdd196061d003b2f5 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sun, 9 Oct 2022 22:43:14 +0200 Subject: [PATCH 038/664] Verse runumbering works. --- editor/a.html | 1 - editor/songbody.js | 34 +++++++++++++++++----------------- editor/songbook.js | 3 --- editor/verse.css | 9 +++++++++ editor/verse.js | 9 ++++----- 5 files changed, 30 insertions(+), 26 deletions(-) diff --git a/editor/a.html b/editor/a.html index b7690a57..6ca4ec41 100644 --- a/editor/a.html +++ b/editor/a.html @@ -16,7 +16,6 @@

Song editor

- diff --git a/editor/songbody.js b/editor/songbody.js index 7b9c5938..ca56d6b7 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -79,7 +79,7 @@ class SongBody extends HTMLElement { template.innerHTML = `
-
+
`; const shadow = this.attachShadow({ mode: "closed" }); @@ -400,23 +400,23 @@ class SongBody extends HTMLElement { } input(e, songbody) { -// console.log("Oninput", e); + console.log("Oninput", e); Sanitize(songbody); -// // Avoid keeping cursor before the artifical space: -// if (document.getSelection().isCollapsed -// && document.getSelection().rangeCount == 1) { -// let r = document.getSelection().getRangeAt(0); -// //console.log("ON INPUT", document.getSelection(), r.startContainer.nodeName, r.startOffset, r.startContainer); -// if (r.startContainer.nodeName === "#text" -// && r.startOffset == 0 -// && r.startContainer.nodeValue.startsWith(nbsp) -// && r.startContainer.previousSibling == null) { -// let newr = document.createRange(); -// newr.setStart(r.startContainer, 1); -// document.getSelection().removeAllRanges(); -// document.getSelection().addRange(newr); -// } -// } +// Avoid keeping cursor before the artifical space: + if (document.getSelection().isCollapsed + && document.getSelection().rangeCount == 1) { + let r = document.getSelection().getRangeAt(0); + //console.log("ON INPUT", document.getSelection(), r.startContainer.nodeName, r.startOffset, r.startContainer); + if (r.startContainer.nodeName === "#text" + && r.startOffset == 0 + && r.startContainer.nodeValue.startsWith(nbsp) + && r.startContainer.previousSibling == null) { + let newr = document.createRange(); + newr.setStart(r.startContainer, 1); + document.getSelection().removeAllRanges(); + document.getSelection().addRange(newr); + } + } } paste(e, songbody) { diff --git a/editor/songbook.js b/editor/songbook.js index cab08414..1e4db346 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -47,9 +47,6 @@ function onLoad() { body.appendChild(xmlDoc.getRootNode().childNodes[0]); Sanitize(body); - // - // let observer = new MutationObserver(() => { console.log("Foo"); }); - // observer.observe(body, {childList: true, subtree:true}); } diff --git a/editor/verse.css b/editor/verse.css index 97164875..65fb8bfd 100644 --- a/editor/verse.css +++ b/editor/verse.css @@ -27,6 +27,14 @@ div#verse_main.chorus { padding-left: 2em; } +div.verse label { + display: flex; + align-items: center; +} +div.verse input[type=checkbox]{ + flex: none; +} + div.bis { display: grid; @@ -62,3 +70,4 @@ div.bis_main { grid-column: 1/2; margin-left: 0em; } + diff --git a/editor/verse.js b/editor/verse.js index a25c89a7..3a41d5bb 100644 --- a/editor/verse.js +++ b/editor/verse.js @@ -9,8 +9,7 @@ class SongVerse extends HTMLElement {
- - +
@@ -49,7 +48,7 @@ class SongVerse extends HTMLElement { } ); console.log("Observing:", this.parentNode); this.refreshPosition(this) - this.observer.observe(this.parentNode, { attributes: false, childList: true, subtree: false }); + this.observer.observe(this.parentNode, { attributes: true, childList: true, subtree: true }); } disconnectCallback() { @@ -66,12 +65,12 @@ class SongVerse extends HTMLElement { j=j+1; } if (verse.parentNode.childNodes[i]===this) { - verse.nr.innerText = j+".X"; + verse.nr.innerText = j+"."; return; } } } else { - verse.nr.innerText=''; + verse.nr.innerText='Ref:'; } } From afc9e4b36e29c3d8968209d34e598217a70c62a8 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sun, 9 Oct 2022 22:54:03 +0200 Subject: [PATCH 039/664] Breaking verse with BIS in the middle works. --- editor/sanitize.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/editor/sanitize.js b/editor/sanitize.js index 1fe6cd9d..6141a649 100644 --- a/editor/sanitize.js +++ b/editor/sanitize.js @@ -248,7 +248,8 @@ function Sanitize(body) { newVerse.appendChild(newRows); console.log(row, row.nextSibling); let r=row.nextSibling; - if (r==null) { + if (r==null + && row.parentNode.parentNode.nodeName!='SONG-BIS') { row.previousSibling.remove(); newRows.append(row); } else { @@ -257,6 +258,16 @@ function Sanitize(body) { newRows.appendChild(r); r=nr; } + // If we are within BIS within middle of the verse, + // we need to move verse-level rows as well. + if (row.parentNode.parentNode.nodeName=='SONG-BIS') { + r = row.parentNode.parentNode.nextSibling; + while(r != null) { + let nr=r.nextSibling; + newRows.appendChild(r); + r=nr; + } + } row.previousSibling.remove(); row.remove(); } From 94301ef0b8d53e012143fc0340960c38410825bc Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Mon, 10 Oct 2022 14:18:39 +0200 Subject: [PATCH 040/664] Blocklinks support (referencing existing verses). --- editor/sanitize.js | 45 +++++++++----- editor/songbook.js | 1 + editor/verse.css | 18 +++++- editor/verse.js | 152 +++++++++++++++++++++++++++++++++++++++++---- 4 files changed, 188 insertions(+), 28 deletions(-) diff --git a/editor/sanitize.js b/editor/sanitize.js index 6141a649..670cd5d2 100644 --- a/editor/sanitize.js +++ b/editor/sanitize.js @@ -19,12 +19,24 @@ function nestToBody(parent) { return body; } +function createVerse(type="verse", blocknb=null) { + let verse = document.createElement("song-verse"); + if (type) { + verse.setAttribute("type", type); + } + if (blocknb) { + verse.setAttribute("blocknb", blocknb); + } + verse.id="v"+Math.floor(Math.random() * 100000000); + return verse; +} + function nestToVerse(parent) { let p = findAncestor(parent, "SONG-VERSE"); if (p) { return p; } let newParent = nestToBody(parent); - let verse = document.createElement("song-verse"); + let verse = createVerse(); newParent.appendChild(verse); return verse; } @@ -170,13 +182,21 @@ function traverse(parent, node) { } case 'BLOCK': { let newParent = nestToBody(parent); - let newVerse = document.createElement("song-verse"); - newParent.appendChild(newVerse); + let newVerse = createVerse(node.getAttribute("type")); let newRows = document.createElement("song-rows"); newVerse.appendChild(newRows); - newVerse.setAttribute("type", node.getAttribute("type", "verse")) traverseChilds(newRows, node.childNodes); node.remove(); + newParent.appendChild(newVerse); + return newParent; + } + case 'BLOCKLINK': { + let newParent = nestToBody(parent); + let newVerse = createVerse(null, node.getAttribute("blocknb")); + let newRows = document.createElement("song-rows"); + newVerse.appendChild(newRows); + node.remove(); + newParent.appendChild(newVerse); return newParent; } case 'ROW': { @@ -321,7 +341,8 @@ function lightTraverse(node) { console.log("Misplaced", node); return false; } - if (node.childNodes.length == 0) { + if (node.childNodes.length == 0 + && !node.parentNode.getAttribute("blocknb")) { node.remove(); } break; @@ -342,19 +363,13 @@ function lightTraverse(node) { console.log("Misplaced", node); return false; } - if (node.childNodes.length == 0 - || node.childNodes[0].nodeName != 'SONG-ROWS') { + if ((node.childNodes.length == 0 + || node.childNodes[0].nodeName != 'SONG-ROWS') + && !node.getAttribute("blocknb")) { node.remove(); } break; } - case 'SONG-VERSES': { - if (node.parentNode.nodeName!='SONG-BODY') { - console.log("Misplaced", node); - return false; - } - break; - } case 'SONG-BODY': { break; } @@ -385,7 +400,7 @@ function lightTraverse(node) { if (node.childNodes.length == 0 && (node.nodeName==='SONG-ROWS' || node.nodeName==='SONG-BIS' - || node.nodeName==='SONG-VERSE')) { + || (node.nodeName==='SONG-VERSE' && !node.getAttribute("blocknb")))) { node.remove(); } return true; diff --git a/editor/songbook.js b/editor/songbook.js index 1e4db346..7a3981e8 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -15,6 +15,7 @@ function onLoad() { I schodziłem na ziemię za kwestą Przez skrzydlącą się bramę Lackowej + I był Beskid i były słowa Zanurzone po pępki w cerkwi baniach diff --git a/editor/verse.css b/editor/verse.css index 65fb8bfd..a89f6bce 100644 --- a/editor/verse.css +++ b/editor/verse.css @@ -2,6 +2,7 @@ div.verse { display: grid; grid-template-columns: max-content max-content; white-space: normal; + margin-top: 2em; } div.verse_meta { @@ -9,8 +10,9 @@ div.verse_meta { grid-row: 1; /* writing-mode: vertical-rl; text-orientation: mixed;*/ - width: 3em; - margin-top: 0.9em; + /* width: 5em;*/ + margin-right: 1.5em; +/* margin-top: 0.9em;*/ text-align: center; font-size: small; /*vertical-align: center; @@ -23,6 +25,18 @@ div.verse_main { margin-left: 1em; } +div.verse_link { + grid-row: 1; + grid-column: 2/2; + margin-left: 1em; +} + +div.verse_link.chorus { + grid-row: 1; + grid-column: 2/2; + padding-left: 2em; +} + div#verse_main.chorus { padding-left: 2em; } diff --git a/editor/verse.js b/editor/verse.js index 3a41d5bb..1bb0910e 100644 --- a/editor/verse.js +++ b/editor/verse.js @@ -9,10 +9,19 @@ class SongVerse extends HTMLElement {
- + +
-
+ +
+ +
`; @@ -20,8 +29,13 @@ class SongVerse extends HTMLElement { shadow.appendChild(template.content.cloneNode(true)); this.nr=shadow.getElementById("nr"); this.ref=shadow.getElementById("ref"); + this.blocklink=shadow.getElementById("blocklink"); this.main=shadow.getElementById("verse_main"); + this.link=shadow.getElementById("verse_link"); + this.linkSel=shadow.getElementById("verse_link_sel"); this.ref.addEventListener("input", (e) => this.refoninput(e, this)); + this.blocklink.addEventListener("input", (e) => this.blocklinkoninput(e, this)); + this.linkSel.addEventListener("input", (e) => this.inputLinkVerse(e, this)); } refoninput(e, verse) { @@ -31,17 +45,76 @@ class SongVerse extends HTMLElement { verse.setAttribute("type", "verse"); } verse.updateClass() + verse.updateVisibility(); + } + + blocklinkoninput(e, verse) { + if (verse.blocklink.checked) { + verse.setAttribute("blocknb", "?"); + } else { + verse.removeAttribute("blocknb"); + } + + verse.updateClass() + verse.updateVisibility(); + } + + + inputLinkVerse(e, verse) { + let r = document.getElementById(verse.linkSel.value); + if (r) { + verse.setAttribute("blocknb", r.id); + verse.ref.checked = r.isChorus(); + } else { + verse.setAttribute("blocknb", "?"); + verse.ref.checked = false; + } + this.refoninput(e, verse); } updateClass() { - if (this.getAttribute("type")!=="verse") { + if (this.isChorus()) { this.main.classList.add("chorus"); + this.link.classList.add("chorus"); } else { this.main.classList.remove("chorus"); + this.link.classList.remove("chorus"); + } + } + + updateVisibility() { + if (this.getAttribute("blocknb")) { + this.main.hidden = true; + this.link.hidden = false; + this.ref.disabled = true; + } else { + this.main.hidden = false; + this.link.hidden = true; + this.ref.disabled = false; } } connectedCallback() { + if (this.getAttribute("blocknb") && + !isNaN(this.getAttribute("blocknb"))) { + let offset=parseInt(this.getAttribute("blocknb")); + if (offset && !isNaN(offset)) { + let j=0; + let toSet='?'; + for (let i=0; i < this.parentNode.childNodes.length; ++i) { + let v=this.parentNode.childNodes[i]; + if (v.nodeName==='SONG-VERSE' && !v.getAttribute('blocknb')) { + j++; + } + if (j==offset) { + toSet=v.id; + break; + } + } + this.setAttribute("blocknb", toSet); + } + } + this.observer = new MutationObserver((mutations) => { console.log("CALLBACK"); this.refreshPosition(this, mutations); @@ -51,37 +124,94 @@ class SongVerse extends HTMLElement { this.observer.observe(this.parentNode, { attributes: true, childList: true, subtree: true }); } - disconnectCallback() { + disconnectedCallback() { console.log("DISCONNECTED"); this.observer.disconnect(); } refreshPosition(verse, mutations) { console.log("Refreshing... ", verse, mutations); - if (verse.getAttribute('type')==='verse') { + + verse.blocklink.disabled=!verse.previousSibling; + + if (!verse.isChorus()) { let j=0; for (let i=0; i < verse.parentNode.childNodes.length; ++i) { - if (verse.parentNode.childNodes[i].getAttribute('type')==='verse') { + let v =verse.parentNode.childNodes[i]; + if (v.nodeName!=='SONG-VERSE') { + continue; + } + if (!v.isChorus()) { j=j+1; } - if (verse.parentNode.childNodes[i]===this) { + if (v===this) { verse.nr.innerText = j+"."; - return; + break; } } } else { verse.nr.innerText='Ref:'; } + + while(verse.linkSel.options.length>0) { + verse.linkSel.options.remove(0); + } + + verse.linkSel.add(new Option("[ wybierz zwrotkę ]", "?")); + + for (let i=0; i < verse.parentNode.childNodes.length; ++i) { + let v = verse.parentNode.childNodes[i]; + if (v == this) { + break; + } + if (v.nodeName==='SONG-VERSE'&& !v.getAttribute("blocknb")) { + verse.linkSel.add(new Option(v.shortRep(), v.id, false, v.id===verse.getAttribute("blocknb"))); + if (v.id===verse.getAttribute("blocknb")) { + verse.ref.checked=v.isChorus(); + } + } + } + + } + + isChorus() { + let r=this.getReferred(); + if (r) { + return r.isChorus(); + } else { + return this.getAttribute("type") !== 'verse';; + } + } + + getReferred() { + if (this.getAttribute("blocknb")) { + return document.getElementById(this.getAttribute("blocknb")); + } else { + return null; + } + } + + shortRep() { + if (this.childNodes.length<1) { + return null; + } + return this.childNodes[0].childNodes[0].innerText + " ..."; } static get observedAttributes() { return ["blocknb", "type"] } - attributeChangedCallback() { - console.log("Attribute changed...") - this.ref.checked=this.getAttribute("type") !== "verse"; + attributeChangedCallback(attr) { + console.log("Attribute changed...", attr) + if (attr=='type') { + this.ref.checked = this.isChorus(); + } + if (attr=="blocknb") { + this.blocklink.checked = this.getAttribute("blocknb"); + } this.updateClass(); + this.updateVisibility(); } refreshAttributes() { From b8a0e4f5a5b04a37c06978f732791319138c629c Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Mon, 10 Oct 2022 16:30:45 +0200 Subject: [PATCH 041/664] Important over support --- editor/ch.css | 29 ++++++++++------ editor/sanitize.js | 9 +++-- editor/song.css | 11 ++++++ editor/songbody.js | 87 ++++++++++++++++++++++++++++++++-------------- editor/songbook.js | 22 ++++++------ editor/verse.js | 4 ++- 6 files changed, 111 insertions(+), 51 deletions(-) diff --git a/editor/ch.css b/editor/ch.css index c3d52341..640e9fdc 100644 --- a/editor/ch.css +++ b/editor/ch.css @@ -3,24 +3,39 @@ span.cho { position: relative; left: 0px; width:0px; - top: -1.3em; + top: -1.4em; margin-top: 1.5em; overflow-wrap: normal; hyphens: none; font-family: Arial; } +:host-context(song-row[important_over="true"]) span.cho { + top: -1.7em; +} + span.cho span.ch { display: inline-block; position: absolute; left: 0px; font-size: xx-small; /*//width:30px;*/ - font-weight: bold; + font-weight: lighter; overflow-wrap: normal; hyphens: none; user-select: all; cursor: grab; + width: fit-content; + overflow-wrap: normal; + font-weight: lighter; + background: white; + white-space:nowrap; +} + + +:host-context(song-row[important_over="true"]) span.cho span.ch { + font-weight: bold; + font-size: small; } span.cho input.ch { @@ -36,12 +51,4 @@ span.cho input.ch { z-index: 5; background-color: rgba(255,255,0,0.5); border-width: 0px; -} - -span.cho span.ch { - width: fit-content; - overflow-wrap: normal; - font-weight: bold; - background: white; - white-space:nowrap; -} +} \ No newline at end of file diff --git a/editor/sanitize.js b/editor/sanitize.js index 670cd5d2..6b798204 100644 --- a/editor/sanitize.js +++ b/editor/sanitize.js @@ -47,6 +47,11 @@ function nestToVerseOrBis(parent) { return nestToVerse(parent); } +function createRow(important_over=false) { + let row = document.createElement("song-row"); + row.setAttribute("important_over", important_over); + return row; +} function nestToRows(parent) { let p = findAncestor(parent, "SONG-ROWS"); @@ -65,7 +70,7 @@ function nestToRow(parent, forceNew=false) { return parent; } else { let newParent = nestToRows(parent); - let row = document.createElement("song-row"); + let row = createRow(); newParent.appendChild(row); return row; } @@ -201,7 +206,7 @@ function traverse(parent, node) { } case 'ROW': { let newParent = nestToRows(parent); - let newRow = document.createElement("song-row"); + let newRow = createRow(node.getAttribute("important_over")); newParent.appendChild(newRow); traverseChilds(newRow, node.childNodes); node.remove(); diff --git a/editor/song.css b/editor/song.css index 5cdda1eb..2249060f 100644 --- a/editor/song.css +++ b/editor/song.css @@ -28,6 +28,17 @@ songbody { display: block; } +div.toolbar { + position: fixed; + color:red; + right:10px; + top: 10%; +} + +div.toolbar button { + display: block; + margin-top: 0.5em; +} /*song-ch {*/ /* user-select: all;*/ /*}*/ diff --git a/editor/songbody.js b/editor/songbody.js index ca56d6b7..6a153d1f 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -78,7 +78,8 @@ class SongBody extends HTMLElement { const template = document.createElement('template'); template.innerHTML = ` -
+
+
`; @@ -86,6 +87,7 @@ class SongBody extends HTMLElement { shadow.appendChild(template.content.cloneNode(true)); this.body=shadow.getElementById("songbody"); this.buttonBis=shadow.getElementById("buttonBis"); + this.importantOver=shadow.getElementById("importantOver"); this.body.addEventListener("mousedown", this.mouseDown); this.body.addEventListener("dragover", (e) => {this.dragOver(e, this); }); @@ -96,6 +98,9 @@ class SongBody extends HTMLElement { this.body.addEventListener("focusout", (e) => {this.focusout(e, this); }); this.buttonBis.addEventListener("click", (e) => this.wrapBis()); + this.importantOver.addEventListener("click", (e) => this.markImportantOver()); + + document.addEventListener('selectionchange', (event) => { this.refreshToolbar(); }); } focusout(e, songbook) { @@ -130,6 +135,9 @@ class SongBody extends HTMLElement { } selectedRows() { + if (document.getSelection().rangeCount == 0) { + return []; + } let r = document.getSelection().getRangeAt(0); let result=[]; @@ -148,36 +156,63 @@ class SongBody extends HTMLElement { } wrapBis() { - let r = document.getSelection().getRangeAt(0); - - console.log(r.commonAncestorContainer); - let songRowsParent = findAncestor(r.commonAncestorContainer,"SONG-ROWS"); - - if (songRowsParent) { - let selRows = this.selectedRows(); - - flattenBis(findAncestor(r.startContainer, "SONG-BIS")); - flattenBis(findAncestor(r.endContainer, "SONG-BIS")); + let selRows = this.selectedRows(); + if (selRows.length>0) { + let r = document.getSelection().getRangeAt(0); + let songRowsParent = findAncestor(r.commonAncestorContainer,"SONG-ROWS"); + if (songRowsParent) { + let selRows = this.selectedRows(); + + flattenBis(findAncestor(r.startContainer, "SONG-BIS")); + flattenBis(findAncestor(r.endContainer, "SONG-BIS")); + + let biss = songRowsParent.getElementsByTagName("SONG-BIS"); + for (let i = 0; i < biss.length; ++i) { + console.log("Considering", biss[i]); + if (r.intersectsNode(biss[i])) { + flattenBis(biss[i]); + } + } - let biss = songRowsParent.getElementsByTagName("SONG-BIS"); - for (let i = 0; i < biss.length; ++i) { - console.log("Considering", biss[i]); - if (r.intersectsNode(biss[i])) { - flattenBis(biss[i]); + if (selRows.length > 0) { + songRowsParent = selRows[0].parentNode; + let bis = document.createElement("song-bis"); + bis.setAttribute("x", "2"); + let bisRows = document.createElement("song-rows"); + bis.appendChild(bisRows); + songRowsParent.insertBefore(bis, selRows[0]); + bisRows.append(...selRows); + bis.focus(); } } + } + } - if (selRows.length > 0) { - songRowsParent = selRows[0].parentNode; - let bis = document.createElement("song-bis"); - bis.setAttribute("x", "2"); - let bisRows = document.createElement("song-rows"); - bis.appendChild(bisRows); - songRowsParent.insertBefore(bis, selRows[0]); - bisRows.append(...selRows); - bis.focus(); - } + markImportantOver() { + let allImportant = this.allSelectedImportant(); + let selRows = this.selectedRows(); + for (let i = 0; i < selRows.length; ++i) { + selRows[i].setAttribute("important_over", !allImportant); + } + this.refreshToolbar(); + } + + allSelectedImportant() { + let selRows = this.selectedRows(); + let allImportant=true; + for (let i=0; i - Kiedy stałem w przedświcie a Synaj - Prawdę głosił przez trąby wiatru - Zasmerczyły się chmury igliwiem + Kiedy stałem w przedświcie a Synaj + Prawdę głosił przez trąby wiatru + Zasmerczyły się chmury igliwiem - Bure świerki o góry wsparte - I na niebie byłem ja jeden - Plotąc pieśni w warkocze bukowe + Bure świerki o góry wsparte + I na niebie byłem ja jeden + Plotąc pieśni w warkocze bukowe I schodziłem na ziemię za kwestą Przez skrzydlącą się bramę Lackowej - + - I był Beskid i były słowa - Zanurzone po pępki w cerkwi baniach - Rozłożyście złotych - Smagających się wiatrem do krwi + I był Beskid i były słowa + Zanurzone po pępki w cerkwi baniach + Rozłożyście złotych + Smagających się wiatrem do krwi Moje myśli biegały końmi diff --git a/editor/verse.js b/editor/verse.js index 1bb0910e..a68ac4a9 100644 --- a/editor/verse.js +++ b/editor/verse.js @@ -195,7 +195,9 @@ class SongVerse extends HTMLElement { if (this.childNodes.length<1) { return null; } - return this.childNodes[0].childNodes[0].innerText + " ..."; + + let rows = this.getElementsByTagName("song-row"); + return rows.length>0? rows[0].innerText : null; } static get observedAttributes() { From ec8bda3bc697d68bdd393fd8f9caf818e355685d Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Mon, 10 Oct 2022 16:45:52 +0200 Subject: [PATCH 042/664] Providing content for chord is not triggering re-selection. --- editor/songbody.js | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/editor/songbody.js b/editor/songbody.js index 6a153d1f..62773be8 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -436,22 +436,24 @@ class SongBody extends HTMLElement { input(e, songbody) { console.log("Oninput", e); - Sanitize(songbody); + if (e == songbody.parentNode) { + Sanitize(songbody); // Avoid keeping cursor before the artifical space: - if (document.getSelection().isCollapsed - && document.getSelection().rangeCount == 1) { - let r = document.getSelection().getRangeAt(0); - //console.log("ON INPUT", document.getSelection(), r.startContainer.nodeName, r.startOffset, r.startContainer); - if (r.startContainer.nodeName === "#text" - && r.startOffset == 0 - && r.startContainer.nodeValue.startsWith(nbsp) - && r.startContainer.previousSibling == null) { - let newr = document.createRange(); - newr.setStart(r.startContainer, 1); - document.getSelection().removeAllRanges(); - document.getSelection().addRange(newr); - } - } + if (document.getSelection().isCollapsed + && document.getSelection().rangeCount == 1) { + let r = document.getSelection().getRangeAt(0); + //console.log("ON INPUT", document.getSelection(), r.startContainer.nodeName, r.startOffset, r.startContainer); + if (r.startContainer.nodeName === "#text" + && r.startOffset == 0 + && r.startContainer.nodeValue.startsWith(nbsp) + && r.startContainer.previousSibling == null) { + let newr = document.createRange(); + newr.setStart(r.startContainer, 1); + document.getSelection().removeAllRanges(); + document.getSelection().addRange(newr); + } + } + } } paste(e, songbody) { From 71c7132d64827a96562377a6935d8cbe31f18563 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Mon, 10 Oct 2022 22:18:56 +0200 Subject: [PATCH 043/664] Restored sanitization on each edit. --- editor/songbody.js | 2 +- editor/verse.js | 7 +------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/editor/songbody.js b/editor/songbody.js index 62773be8..d52b6c58 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -436,7 +436,7 @@ class SongBody extends HTMLElement { input(e, songbody) { console.log("Oninput", e); - if (e == songbody.parentNode) { + if (e.target == songbody.parentNode) { Sanitize(songbody); // Avoid keeping cursor before the artifical space: if (document.getSelection().isCollapsed diff --git a/editor/verse.js b/editor/verse.js index a68ac4a9..b2e4d4bd 100644 --- a/editor/verse.js +++ b/editor/verse.js @@ -115,10 +115,7 @@ class SongVerse extends HTMLElement { } } - this.observer = new MutationObserver((mutations) => { - console.log("CALLBACK"); - this.refreshPosition(this, mutations); - } ); + this.observer = new MutationObserver((mutations) => this.refreshPosition(this, mutations)); console.log("Observing:", this.parentNode); this.refreshPosition(this) this.observer.observe(this.parentNode, { attributes: true, childList: true, subtree: true }); @@ -130,8 +127,6 @@ class SongVerse extends HTMLElement { } refreshPosition(verse, mutations) { - console.log("Refreshing... ", verse, mutations); - verse.blocklink.disabled=!verse.previousSibling; if (!verse.isChorus()) { From 753ce94ef20c0f6fe5f27c4f26add8e49711969f Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 11 Oct 2022 11:12:16 +0200 Subject: [PATCH 044/664] Support for instrumental rows. --- editor/ch.css | 14 ++++++++- editor/ch.js | 12 ++++---- editor/sanitize.js | 17 +++++++++-- editor/song.css | 9 ++++++ editor/songbody.js | 75 ++++++++++++++++++++++++++++++++++++++-------- editor/verse.js | 5 ---- 6 files changed, 107 insertions(+), 25 deletions(-) diff --git a/editor/ch.css b/editor/ch.css index 640e9fdc..ccda814f 100644 --- a/editor/ch.css +++ b/editor/ch.css @@ -7,13 +7,19 @@ span.cho { margin-top: 1.5em; overflow-wrap: normal; hyphens: none; - font-family: Arial; } :host-context(song-row[important_over="true"]) span.cho { top: -1.7em; + width: revert; } +/*:host-context(song-row[style="instr"]) span.cho { + display: inline-block; + position: static; + top: revert; +}*/ + span.cho span.ch { display: inline-block; position: absolute; @@ -30,6 +36,7 @@ span.cho span.ch { font-weight: lighter; background: white; white-space:nowrap; + font-family: Arial; } @@ -38,6 +45,11 @@ span.cho span.ch { font-size: small; } + +/*:host-context(song-row[style="instr"]) span.cho span.ch { + position: static; +}*/ + span.cho input.ch { width: 6em; font-size: xx-small; diff --git a/editor/ch.js b/editor/ch.js index e3b6c25e..bf96bea4 100644 --- a/editor/ch.js +++ b/editor/ch.js @@ -29,10 +29,11 @@ class SongCh extends HTMLElement { this.setAttribute("a", this.che.value); }; this.che.onblur = (event) => { + let storedParent = this.parentNode; this.setAttribute("editing", "false"); this.updateEditing(); - this.selectParent(); + this.selectParent(storedParent); } this.ch.onmousedown = (event) => { // We need to prevent the parent to catch the double click @@ -63,7 +64,7 @@ class SongCh extends HTMLElement { } } if (e.key == 'Enter') { - this.selectParent(); + this.selectParent(this.parentNode); e.preventDefault(); } } @@ -78,12 +79,13 @@ class SongCh extends HTMLElement { return this.getAttribute("editing")==="true"; } - selectParent() { - this.parentNode.focus(); + selectParent(storedParent) { + console.log(storedParent); + storedParent.focus(); let r = document.createRange(); if (this.nextSibling==null) { let t=document.createTextNode(nbsp); - this.parentNode.appendChild(t); + storedParent.appendChild(t); r.selectNodeContents(t); } else { r.setStartAfter(this); diff --git a/editor/sanitize.js b/editor/sanitize.js index 6b798204..d6f0a001 100644 --- a/editor/sanitize.js +++ b/editor/sanitize.js @@ -1,5 +1,6 @@ const nbsp = "\u00a0"; const spaceRegex = / /g; +const nbspsRegexp = /\u00a0+/g; function findAncestor(p, nodeName) { while (p != null) { @@ -240,6 +241,7 @@ function isEmptyRow(el) { } function Sanitize(body) { + console.log("Sanitizing..."); let r=document.getSelection().rangeCount>0 ? document.getSelection().getRangeAt(0).cloneRange() : null; // As sanitization modifies the text (e.g replace all ' ' -> nbsp), we // need to persist where is the selection, to be able to restore it. @@ -301,7 +303,7 @@ function Sanitize(body) { } if (r) { - r.setStart(r.startContainer, rso); + r.setStart(r.startContainer, Math.min(rso, r.startContainer.length)); document.getSelection().removeAllRanges(); document.getSelection().addRange(r); } @@ -318,7 +320,13 @@ function lightTraverse(node) { console.log("Misplaced", node); return false; } - node.nodeValue=node.nodeValue.replaceAll(" ", nbsp); + node.nodeValue= + node.nodeValue.replaceAll(" ", nbsp); + + if (node.parentNode.getAttribute('type')==='instr') { + node.nodeValue= + node.nodeValue.replaceAll(nbspsRegexp, nbsp); + }; break; } case 'SONG-CH': { @@ -331,6 +339,11 @@ function lightTraverse(node) { && node.getAttribute("a").trim().length == 0) { node.remove(); } + if (node.parentNode.getAttribute("type")==='instr') { + node.parentNode.replaceChild( + document.createTextNode(nbsp + node.getAttribute("a") + nbsp), + node); + } break; } case 'SONG-ROW': { diff --git a/editor/song.css b/editor/song.css index 2249060f..09e1ff1a 100644 --- a/editor/song.css +++ b/editor/song.css @@ -16,6 +16,15 @@ song-row { display: block; } +song-row[type="instr"] { + overflow-wrap: normal; + font-weight: bold; + background: white; + white-space:nowrap; + font-family: Arial; + margin-top: 0.6em; +} + song-rows { display: contents; } diff --git a/editor/songbody.js b/editor/songbody.js index d52b6c58..e838af76 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -78,8 +78,11 @@ class SongBody extends HTMLElement { const template = document.createElement('template'); template.innerHTML = ` -
-
+
+ + + +
`; @@ -88,6 +91,7 @@ class SongBody extends HTMLElement { this.body=shadow.getElementById("songbody"); this.buttonBis=shadow.getElementById("buttonBis"); this.importantOver=shadow.getElementById("importantOver"); + this.buttonInstr=shadow.getElementById("buttonInstr"); this.body.addEventListener("mousedown", this.mouseDown); this.body.addEventListener("dragover", (e) => {this.dragOver(e, this); }); @@ -99,6 +103,7 @@ class SongBody extends HTMLElement { this.buttonBis.addEventListener("click", (e) => this.wrapBis()); this.importantOver.addEventListener("click", (e) => this.markImportantOver()); + this.buttonInstr.addEventListener("click", (e) => this.toggleInstrumental()); document.addEventListener('selectionchange', (event) => { this.refreshToolbar(); }); } @@ -111,6 +116,7 @@ class SongBody extends HTMLElement { || e.target.getAttribute("x").trim()==="0")) { flattenBis(e.target); } + Sanitize(songbook); } connectedCallback() { @@ -155,6 +161,7 @@ class SongBody extends HTMLElement { return result; } + wrapBis() { let selRows = this.selectedRows(); if (selRows.length>0) { @@ -197,6 +204,44 @@ class SongBody extends HTMLElement { this.refreshToolbar(); } + makeRowInstrumental(row) { + let text=nbsp; + for (let i=0; i < row.childNodes.length; ++i) { + let n = row.childNodes[i]; + if (n.nodeName==='SONG-CH') { + text+=n.getAttribute("a") + nbsp; + } + } + row.setAttribute("type", "instr"); + row.innerText=text; + } + + makeRowNotInstrumental(row) { + let chords = row.innerText.replaceAll(' ', nbsp).split(nbsp); + console.log(chords); + row.removeAttribute("type"); + removeAllChildren(row); + for (let i=0; i - // { - // console.log(t, e.dataTransfer.getData(t)); - // } - // ); + } beforeInput(e, songbody) { - console.log("BEFORE", e); if (e.inputType == "deleteContentBackward" && e.target == songbody.parentNode) { if (document.getSelection().rangeCount == 1 diff --git a/editor/verse.js b/editor/verse.js index b2e4d4bd..c20732c1 100644 --- a/editor/verse.js +++ b/editor/verse.js @@ -269,11 +269,6 @@ class SongBis extends HTMLElement { - - - - - function SongVerseBisInit() { customElements.define("song-verse", SongVerse); customElements.define("song-bis", SongBis); From 76f56942d9ac0889480f19b3b96223e23240f938 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 11 Oct 2022 14:01:24 +0200 Subject: [PATCH 045/664] Modularization. --- editor/a.html | 14 +++----------- editor/ch.js | 12 ++++++------ editor/sanitize.js | 22 ++++----------------- editor/save.js | 0 editor/songbody.js | 48 ++++++++++++++-------------------------------- editor/songbook.js | 16 ++++++++++------ editor/utils.js | 45 +++++++++++++++++++++++++++++++++++++++++++ editor/verse.js | 8 ++++---- 8 files changed, 86 insertions(+), 79 deletions(-) create mode 100644 editor/save.js create mode 100644 editor/utils.js diff --git a/editor/a.html b/editor/a.html index 6ca4ec41..95bda125 100644 --- a/editor/a.html +++ b/editor/a.html @@ -1,19 +1,11 @@ - - - - - - - - - + + - +

Song editor

-
diff --git a/editor/ch.js b/editor/ch.js index bf96bea4..dd3acee8 100644 --- a/editor/ch.js +++ b/editor/ch.js @@ -8,7 +8,7 @@ const predefinedChords = ["A", "A2", "A4", "A7", "A7+", "A7/4", "A7/6", "Ais", const chtemplate = document.createElement('template'); -class SongCh extends HTMLElement { +export default class SongCh extends HTMLElement { constructor() { super(); @@ -133,7 +133,7 @@ function predefinedChordsList() { dl.id = "predefinedChords"; predefinedChords.forEach( (ch) => { - opt = document.createElement("option"); + let opt = document.createElement("option"); opt.value = ch; dl.appendChild(opt); } @@ -141,9 +141,9 @@ function predefinedChordsList() { return dl; } -function SongChInit(parent) { +export function SongChInit(parent) { chtemplate.innerHTML = - `` + + `` + ``+ `` + `` + @@ -152,8 +152,8 @@ function SongChInit(parent) { customElements.define("song-ch", SongCh); } -function createChord(chord) { +export function createChord(chord) { let ch = document.createElement("song-ch"); ch.setAttribute('a', chord); return ch; -} \ No newline at end of file +} diff --git a/editor/sanitize.js b/editor/sanitize.js index d6f0a001..19b414b4 100644 --- a/editor/sanitize.js +++ b/editor/sanitize.js @@ -1,16 +1,9 @@ -const nbsp = "\u00a0"; +import {createChord} from './ch.js'; +import {findAncestor,nbsp,removeAllChildren} from './utils.js'; + const spaceRegex = / /g; const nbspsRegexp = /\u00a0+/g; -function findAncestor(p, nodeName) { - while (p != null) { - if (p.nodeName === nodeName) { - return p; - } - p = p.parentNode; - } -} - function nestToBody(parent) { let p = findAncestor(parent, "SONG-BODY"); if (p) { return p; } @@ -77,13 +70,6 @@ function nestToRow(parent, forceNew=false) { } } - -function removeAllChildren(node) { - while(node.childNodes.length > 0) { - node.removeChild(node.childNodes[0]); - } -} - function traverseChilds(parent, childNodes) { let ns = []; childNodes.forEach( (n) => { ns.push(n); } ); @@ -240,7 +226,7 @@ function isEmptyRow(el) { && (el.textContent==='' || el.textContent===nbsp); } -function Sanitize(body) { +export function Sanitize(body) { console.log("Sanitizing..."); let r=document.getSelection().rangeCount>0 ? document.getSelection().getRangeAt(0).cloneRange() : null; // As sanitization modifies the text (e.g replace all ' ' -> nbsp), we diff --git a/editor/save.js b/editor/save.js new file mode 100644 index 00000000..e69de29b diff --git a/editor/songbody.js b/editor/songbody.js index e838af76..81dbdc90 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -1,33 +1,9 @@ -function getRangeForCursor(e) { - if (document.caretRangeFromPoint) { - // edge, chrome, android - range = document.caretRangeFromPoint(e.clientX, e.clientY) - } else { - // firefox - var pos = [e.rangeParent, e.rangeOffset] - range = document.createRange() - range.setStart(...pos); - range.setEnd(...pos); - } - return range; -} - -function mergeNodeAfter(target, source) { - let first = source.childNodes[0]; - let documentFragment = document.createDocumentFragment(); - while (source.childNodes.length > 0) { - documentFragment.appendChild(source.childNodes[0]); - } - target.append(documentFragment); - if (first != null) { - console.log("Setting cursor before:", first); - setCursorBefore(first); - } - source.remove(); -} +import {findAncestor, getRangeForCursor,nbsp,removeAllChildren} from './utils.js'; +import {createChord} from './ch.js' +import {Sanitize} from './sanitize.js' function acceptsTextAndChords(element) { - return element.nodeName="SONG-ROW"; + return element.nodeName=="SONG-ROW"; } function canInsertChord() { @@ -64,20 +40,20 @@ function flattenBis(node) { if (!node) { return; } - rows = node.childNodes[0].childNodes; + let rows = node.childNodes[0].childNodes; while (rows.length > 0) { node.parentNode.insertBefore(rows[0], node); } node.remove(); } -class SongBody extends HTMLElement { +export default class SongBody extends HTMLElement { constructor() { super(); const template = document.createElement('template'); template.innerHTML = ` - +
@@ -525,9 +501,13 @@ class SongBody extends HTMLElement { } function SongBodyInit() { - customElements.define("song-body", SongBody); + if (!customElements.get("song-body")) { + customElements.define("song-body", SongBody); + } }; -function createSongBody() { +export function createSongBody() { return document.createElement("song-body"); -} \ No newline at end of file +} + +SongBodyInit(); \ No newline at end of file diff --git a/editor/songbook.js b/editor/songbook.js index 7a8750d9..cc5ce79b 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -1,7 +1,11 @@ +import {SongChInit} from './ch.js' +import SongVerseBisInit from './verse.js' +import {createSongBody} from './songbody.js'; +import {Sanitize} from './sanitize.js'; -function onLoad() { +function OnLoad() { //document.execCommand('defaultParagraphSeparator', false, 'br'); - text = '' + let text = '' + ` Kiedy stałem w przedświcie a Synaj @@ -35,13 +39,13 @@ function onLoad() { `; - parser = new DOMParser(); - xmlDoc = parser.parseFromString(text, "text/xml"); + let parser = new DOMParser(); + let xmlDoc = parser.parseFromString(text, "text/xml"); let editor = document.getElementById("editor"); SongChInit(editor); SongVerseBisInit(); - SongBodyInit(); + //SongBodyInit(); let body = createSongBody(); editor.appendChild(body); @@ -50,4 +54,4 @@ function onLoad() { Sanitize(body); } - +OnLoad(); diff --git a/editor/utils.js b/editor/utils.js new file mode 100644 index 00000000..5443c0e5 --- /dev/null +++ b/editor/utils.js @@ -0,0 +1,45 @@ +export const nbsp = "\u00a0"; + +export function getRangeForCursor(e) { + let range=null; + if (document.caretRangeFromPoint) { + // edge, chrome, android + range = document.caretRangeFromPoint(e.clientX, e.clientY) + } else { + // firefox + var pos = [e.rangeParent, e.rangeOffset] + range = document.createRange() + range.setStart(...pos); + range.setEnd(...pos); + } + return range; +} + +export function mergeNodeAfter(target, source) { + let first = source.childNodes[0]; + let documentFragment = document.createDocumentFragment(); + while (source.childNodes.length > 0) { + documentFragment.appendChild(source.childNodes[0]); + } + target.append(documentFragment); + if (first != null) { + console.log("Setting cursor before:", first); + setCursorBefore(first); + } + source.remove(); +} + +export function findAncestor(p, nodeName) { + while (p != null) { + if (p.nodeName === nodeName) { + return p; + } + p = p.parentNode; + } +} + +export function removeAllChildren(node) { + while(node.childNodes.length > 0) { + node.removeChild(node.childNodes[0]); + } +} \ No newline at end of file diff --git a/editor/verse.js b/editor/verse.js index c20732c1..9feef720 100644 --- a/editor/verse.js +++ b/editor/verse.js @@ -1,10 +1,10 @@ -class SongVerse extends HTMLElement { +export class SongVerse extends HTMLElement { constructor() { super(); const template = document.createElement('template'); template.innerHTML = ` - +
@@ -227,7 +227,7 @@ class SongVerse extends HTMLElement { -class SongBis extends HTMLElement { +export class SongBis extends HTMLElement { constructor() { super(); @@ -269,7 +269,7 @@ class SongBis extends HTMLElement { -function SongVerseBisInit() { +export default function SongVerseBisInit() { customElements.define("song-verse", SongVerse); customElements.define("song-bis", SongBis); } \ No newline at end of file From 53a661b7fbe616da03ba96430e5ab750758a7efc Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 11 Oct 2022 16:53:21 +0200 Subject: [PATCH 046/664] SLT to convert XMLs. --- editor/a.html | 5 +++- editor/save.js | 39 +++++++++++++++++++++++++++ editor/save.xslt | 66 ++++++++++++++++++++++++++++++++++++++++++++++ editor/songbody.js | 4 +++ 4 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 editor/save.xslt diff --git a/editor/a.html b/editor/a.html index 95bda125..0cf6e767 100644 --- a/editor/a.html +++ b/editor/a.html @@ -1,4 +1,6 @@ - + + + @@ -8,6 +10,7 @@

Song editor

+
diff --git a/editor/save.js b/editor/save.js index e69de29b..d6c3d258 100644 --- a/editor/save.js +++ b/editor/save.js @@ -0,0 +1,39 @@ +function loadXMLDoc(filename) +{ + let xhttp = window.ActiveXObject ? + new ActiveXObject("Msxml2.XMLHTTP") + : new XMLHttpRequest(); + xhttp.open("GET", filename, false); + try {xhttp.responseType = "msxml-document"} catch(err) {} // Helping IE11 + xhttp.send(""); + return xhttp.responseXML; +} + +// function docFromNode(node) { +// let DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); +// factory.setNamespaceAware(true); +// DocumentBuilder builder = factory.newDocumentBuilder(); +// Document newDocument = builder.newDocument(); +// Node importedNode = newDocument.importNode(node, true); +// newDocument.appendChild(importedNode); +// return newDocument; +//} + +export function Save(songbody) { + let xsltProcessor = new XSLTProcessor() + let xslt = loadXMLDoc('./save.xslt'); + console.log(xslt); + xsltProcessor.importStylesheet(xslt); + //let src = loadXMLDoc("./save.xslt"); + //let src = Document(songbody.cloneNode(true)); + + + const src = document.implementation.createDocument("", "", null); + const clonedNode = src.importNode(songbody, true); + src.appendChild(clonedNode); + + let resultDocument = xsltProcessor.transformToDocument(src); + console.log(resultDocument); + + document.getElementById("example").innerText=new XMLSerializer().serializeToString(resultDocument); +} \ No newline at end of file diff --git a/editor/save.xslt b/editor/save.xslt new file mode 100644 index 00000000..911152f1 --- /dev/null +++ b/editor/save.xslt @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/editor/songbody.js b/editor/songbody.js index 81dbdc90..79797e71 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -1,6 +1,7 @@ import {findAncestor, getRangeForCursor,nbsp,removeAllChildren} from './utils.js'; import {createChord} from './ch.js' import {Sanitize} from './sanitize.js' +import {Save} from './save.js' function acceptsTextAndChords(element) { return element.nodeName=="SONG-ROW"; @@ -58,6 +59,7 @@ export default class SongBody extends HTMLElement { +
`; @@ -68,6 +70,7 @@ export default class SongBody extends HTMLElement { this.buttonBis=shadow.getElementById("buttonBis"); this.importantOver=shadow.getElementById("importantOver"); this.buttonInstr=shadow.getElementById("buttonInstr"); + this.buttonSave=shadow.getElementById("buttonSave"); this.body.addEventListener("mousedown", this.mouseDown); this.body.addEventListener("dragover", (e) => {this.dragOver(e, this); }); @@ -80,6 +83,7 @@ export default class SongBody extends HTMLElement { this.buttonBis.addEventListener("click", (e) => this.wrapBis()); this.importantOver.addEventListener("click", (e) => this.markImportantOver()); this.buttonInstr.addEventListener("click", (e) => this.toggleInstrumental()); + this.buttonSave.addEventListener("click", () => Save(this)); document.addEventListener('selectionchange', (event) => { this.refreshToolbar(); }); } From 3d4ebc49009092e486172ed626c37a5211c754d7 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 11 Oct 2022 18:31:24 +0200 Subject: [PATCH 047/664] Saving files properly processes instrumental lines. --- editor/a.html | 2 +- editor/save.xslt | 49 ++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/editor/a.html b/editor/a.html index 0cf6e767..c893bcc4 100644 --- a/editor/a.html +++ b/editor/a.html @@ -10,7 +10,7 @@

Song editor

-
+
diff --git a/editor/save.xslt b/editor/save.xslt index 911152f1..239d3be1 100644 --- a/editor/save.xslt +++ b/editor/save.xslt @@ -1,6 +1,6 @@ - @@ -52,7 +52,15 @@ - + + + + + + + + + @@ -63,4 +71,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 8c665f9e6debfff3d41e3d72a5d74dfd4ec7c1bd Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 11 Oct 2022 20:15:18 +0200 Subject: [PATCH 048/664] XSLT fixes. --- editor/save.xslt | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/editor/save.xslt b/editor/save.xslt index 239d3be1..6c9dbeac 100644 --- a/editor/save.xslt +++ b/editor/save.xslt @@ -1,7 +1,8 @@ - @@ -89,23 +90,5 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file From 22820438d181bec363e82e8403e4222b911411d0 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 11 Oct 2022 22:06:34 +0200 Subject: [PATCH 049/664] Loading files works. --- editor/a.html | 2 +- editor/sanitize.js | 6 +----- editor/save.js | 11 +---------- editor/songbody.js | 22 +++++++++++++++++++++- editor/utils.js | 11 +++++++++++ 5 files changed, 35 insertions(+), 17 deletions(-) diff --git a/editor/a.html b/editor/a.html index c893bcc4..21365a16 100644 --- a/editor/a.html +++ b/editor/a.html @@ -3,7 +3,7 @@ - + diff --git a/editor/sanitize.js b/editor/sanitize.js index 19b414b4..80ecde88 100644 --- a/editor/sanitize.js +++ b/editor/sanitize.js @@ -200,11 +200,7 @@ function traverse(parent, node) { return newParent; } } - while (node.childNodes.length > 0) { - let n=node.childNodes[0]; - parent.appendChild(n); - traverse(parent, n); - } + traverseChilds(parent, node.childNodes); node.remove(); return parent; } diff --git a/editor/save.js b/editor/save.js index d6c3d258..29d5492e 100644 --- a/editor/save.js +++ b/editor/save.js @@ -1,13 +1,4 @@ -function loadXMLDoc(filename) -{ - let xhttp = window.ActiveXObject ? - new ActiveXObject("Msxml2.XMLHTTP") - : new XMLHttpRequest(); - xhttp.open("GET", filename, false); - try {xhttp.responseType = "msxml-document"} catch(err) {} // Helping IE11 - xhttp.send(""); - return xhttp.responseXML; -} +import {loadXMLDoc} from './utils.js'; // function docFromNode(node) { // let DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); diff --git a/editor/songbody.js b/editor/songbody.js index 79797e71..4b059f20 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -1,4 +1,4 @@ -import {findAncestor, getRangeForCursor,nbsp,removeAllChildren} from './utils.js'; +import {findAncestor, getRangeForCursor,nbsp,removeAllChildren,loadXMLDoc} from './utils.js'; import {createChord} from './ch.js' import {Sanitize} from './sanitize.js' import {Save} from './save.js' @@ -60,6 +60,7 @@ export default class SongBody extends HTMLElement { +
`; @@ -71,6 +72,7 @@ export default class SongBody extends HTMLElement { this.importantOver=shadow.getElementById("importantOver"); this.buttonInstr=shadow.getElementById("buttonInstr"); this.buttonSave=shadow.getElementById("buttonSave"); + this.open=shadow.getElementById("open"); this.body.addEventListener("mousedown", this.mouseDown); this.body.addEventListener("dragover", (e) => {this.dragOver(e, this); }); @@ -84,6 +86,7 @@ export default class SongBody extends HTMLElement { this.importantOver.addEventListener("click", (e) => this.markImportantOver()); this.buttonInstr.addEventListener("click", (e) => this.toggleInstrumental()); this.buttonSave.addEventListener("click", () => Save(this)); + this.open.addEventListener("change", (e) => this.Load(e)); document.addEventListener('selectionchange', (event) => { this.refreshToolbar(); }); } @@ -99,6 +102,23 @@ export default class SongBody extends HTMLElement { Sanitize(songbook); } + Load(e) { + console.log("LOADING", e); + let parser = new DOMParser(); + + // setting up the reader + var reader = new FileReader(); + reader.addEventListener('load', (event) => { + let parser = new DOMParser(); + let xmlDoc = parser.parseFromString(event.target.result, "text/xml"); + let z=xmlDoc.getElementsByTagName("lyric"); + removeAllChildren(this); + this.appendChild(z[0]); + Sanitize(this); + }); + reader.readAsText(this.open.files[0]); + } + connectedCallback() { this.parentNodeBackup = this.parentNode; this.beforeInputHandler = (e) => { this.beforeInput(e, this); }; diff --git a/editor/utils.js b/editor/utils.js index 5443c0e5..b8b7d4ad 100644 --- a/editor/utils.js +++ b/editor/utils.js @@ -42,4 +42,15 @@ export function removeAllChildren(node) { while(node.childNodes.length > 0) { node.removeChild(node.childNodes[0]); } +} + +export function loadXMLDoc(filename) +{ + let xhttp = window.ActiveXObject ? + new ActiveXObject("Msxml2.XMLHTTP") + : new XMLHttpRequest(); + xhttp.open("GET", filename, false); + try {xhttp.responseType = "msxml-document"} catch(err) {} // Helping IE11 + xhttp.send(""); + return xhttp.responseXML; } \ No newline at end of file From f474d82ec6444b2e901ad21d287ffb8c03e18ff4 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 11 Oct 2022 22:59:55 +0200 Subject: [PATCH 050/664] Load and Save functionality. --- editor/a.html | 2 +- editor/save.js | 15 +++++++++++---- editor/save.xslt | 2 +- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/editor/a.html b/editor/a.html index 21365a16..684fe7bc 100644 --- a/editor/a.html +++ b/editor/a.html @@ -10,7 +10,7 @@

Song editor

-
+
diff --git a/editor/save.js b/editor/save.js index 29d5492e..c94e32e3 100644 --- a/editor/save.js +++ b/editor/save.js @@ -15,16 +15,23 @@ export function Save(songbody) { let xslt = loadXMLDoc('./save.xslt'); console.log(xslt); xsltProcessor.importStylesheet(xslt); - //let src = loadXMLDoc("./save.xslt"); - //let src = Document(songbody.cloneNode(true)); - const src = document.implementation.createDocument("", "", null); const clonedNode = src.importNode(songbody, true); src.appendChild(clonedNode); let resultDocument = xsltProcessor.transformToDocument(src); + + const pi = resultDocument.createProcessingInstruction('xml', 'version="1.0" encoding="UTF-8"'); + resultDocument.insertBefore(pi, resultDocument.firstChild); console.log(resultDocument); - document.getElementById("example").innerText=new XMLSerializer().serializeToString(resultDocument); + let txt=new XMLSerializer().serializeToString(resultDocument);; + document.getElementById("output").innerText=txt; + + const elem = window.document.createElement('a'); + elem.href = window.URL.createObjectURL(new Blob([txt]), {type: 'text/xml'}); + elem.download = 'song.xml'; + elem.text="[download]"; + document.getElementById("output").parentNode.appendChild(elem); } \ No newline at end of file diff --git a/editor/save.xslt b/editor/save.xslt index 6c9dbeac..2de67bd2 100644 --- a/editor/save.xslt +++ b/editor/save.xslt @@ -4,7 +4,7 @@ xmlns="http://21wdh.staszic.waw.pl" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml"> - + From 818f5289df63325f2b1794d95f7dc60fecf087fe Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 12 Oct 2022 15:05:12 +0200 Subject: [PATCH 051/664] Factor out song-editor as separate component. --- editor/a.html | 3 +- editor/ch.js | 2 +- editor/sanitize.js | 14 ++- editor/song.css | 6 ++ editor/songbody.js | 64 +------------- editor/songbook.js | 212 ++++++++++++++++++++++++++++++++++----------- editor/verse.js | 2 +- 7 files changed, 187 insertions(+), 116 deletions(-) diff --git a/editor/a.html b/editor/a.html index 684fe7bc..2f23768a 100644 --- a/editor/a.html +++ b/editor/a.html @@ -8,8 +8,7 @@

Song editor

-
-
+
diff --git a/editor/ch.js b/editor/ch.js index dd3acee8..c22a2736 100644 --- a/editor/ch.js +++ b/editor/ch.js @@ -141,7 +141,7 @@ function predefinedChordsList() { return dl; } -export function SongChInit(parent) { +export function SongChInit() { chtemplate.innerHTML = `` + ``+ diff --git a/editor/sanitize.js b/editor/sanitize.js index 80ecde88..ec218554 100644 --- a/editor/sanitize.js +++ b/editor/sanitize.js @@ -165,7 +165,11 @@ function traverse(parent, node) { case 'BIS': { let newParent = nestToRows(parent); let newBis = document.createElement("song-bis"); - newBis.setAttribute("x", node.getAttribute("times")); + if (node.hasAttribute("times")) { + newBis.setAttribute("x", node.getAttribute("times")); + } else { + newBis.setAttribute("x", 2); + } newParent.appendChild(newBis); let newRows = document.createElement("song-rows"); newBis.appendChild(newRows); @@ -247,7 +251,7 @@ export function Sanitize(body) { rows = body.getElementsByTagName("SONG-ROW"); for (let i=0; i < rows.length; ++i) { if (isEmptyRow(rows[i]) && isEmptyRow(rows[i].previousSibling)) { - songVerse = findAncestor(rows[i], "SONG-VERSE"); + let songVerse = findAncestor(rows[i], "SONG-VERSE"); if (songVerse) { let row=rows[i]; let newVerse = songVerse.cloneNode(false); @@ -285,7 +289,11 @@ export function Sanitize(body) { } if (r) { - r.setStart(r.startContainer, Math.min(rso, r.startContainer.length)); + r.setStart(r.startContainer, + Math.min(rso, + r.startContainer.nodeName=='#text' + ? r.startContainer.length + : r.startContainer.childNodes.length)); document.getSelection().removeAllRanges(); document.getSelection().addRange(r); } diff --git a/editor/song.css b/editor/song.css index 09e1ff1a..8499b3f1 100644 --- a/editor/song.css +++ b/editor/song.css @@ -47,6 +47,12 @@ div.toolbar { div.toolbar button { display: block; margin-top: 0.5em; + width: 13em; +} + +div.toolbar input { + margin-top: 0.5em; + width: 13em; } /*song-ch {*/ /* user-select: all;*/ diff --git a/editor/songbody.js b/editor/songbody.js index 4b059f20..1f0c436d 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -55,24 +55,11 @@ export default class SongBody extends HTMLElement { const template = document.createElement('template'); template.innerHTML = ` -
- - - - - -
-
- `; +
`; const shadow = this.attachShadow({ mode: "closed" }); shadow.appendChild(template.content.cloneNode(true)); this.body=shadow.getElementById("songbody"); - this.buttonBis=shadow.getElementById("buttonBis"); - this.importantOver=shadow.getElementById("importantOver"); - this.buttonInstr=shadow.getElementById("buttonInstr"); - this.buttonSave=shadow.getElementById("buttonSave"); - this.open=shadow.getElementById("open"); this.body.addEventListener("mousedown", this.mouseDown); this.body.addEventListener("dragover", (e) => {this.dragOver(e, this); }); @@ -81,14 +68,6 @@ export default class SongBody extends HTMLElement { this.body.addEventListener("drop", (e) => {this.drop(e, this); }); // this.body.addEventListener("keydown", (e) => { this.keyDown(e, this); }); this.body.addEventListener("focusout", (e) => {this.focusout(e, this); }); - - this.buttonBis.addEventListener("click", (e) => this.wrapBis()); - this.importantOver.addEventListener("click", (e) => this.markImportantOver()); - this.buttonInstr.addEventListener("click", (e) => this.toggleInstrumental()); - this.buttonSave.addEventListener("click", () => Save(this)); - this.open.addEventListener("change", (e) => this.Load(e)); - - document.addEventListener('selectionchange', (event) => { this.refreshToolbar(); }); } focusout(e, songbook) { @@ -102,23 +81,6 @@ export default class SongBody extends HTMLElement { Sanitize(songbook); } - Load(e) { - console.log("LOADING", e); - let parser = new DOMParser(); - - // setting up the reader - var reader = new FileReader(); - reader.addEventListener('load', (event) => { - let parser = new DOMParser(); - let xmlDoc = parser.parseFromString(event.target.result, "text/xml"); - let z=xmlDoc.getElementsByTagName("lyric"); - removeAllChildren(this); - this.appendChild(z[0]); - Sanitize(this); - }); - reader.readAsText(this.open.files[0]); - } - connectedCallback() { this.parentNodeBackup = this.parentNode; this.beforeInputHandler = (e) => { this.beforeInput(e, this); }; @@ -201,7 +163,6 @@ export default class SongBody extends HTMLElement { for (let i = 0; i < selRows.length; ++i) { selRows[i].setAttribute("important_over", !allImportant); } - this.refreshToolbar(); } makeRowInstrumental(row) { @@ -239,7 +200,6 @@ export default class SongBody extends HTMLElement { } console.log(this); Sanitize(findAncestor(this, "SONG-BODY")); - this.refreshToolbar(); } allSelectedImportant() { @@ -260,20 +220,6 @@ export default class SongBody extends HTMLElement { return allInstrumental; } - refreshToolbar() { - if (this.allSelectedImportant()) { - this.importantOver.innerText='Mało ważne akordy'; - } else { - this.importantOver.innerText='Kluczowe akordy'; - } - if (this.allSelectedInstrumental()) { - this.buttonInstr.innerText='Wers liryczny'; - } else { - this.buttonInstr.innerText='Wers instrumentalny'; - } - this.buttonBis.disabled = document.getSelection().rangeCount==0; - } - dragStart(e, songbook) { songbook.toRemoveWhenDropped = getSelection().getRangeAt(0).cloneRange(); e.dataTransfer.effectAllowed="copyMove"; @@ -370,7 +316,7 @@ export default class SongBody extends HTMLElement { beforeInput(e, songbody) { if (e.inputType == "deleteContentBackward" - && e.target == songbody.parentNode) { + && e.target == songbody) { if (document.getSelection().rangeCount == 1 && document.getSelection().isCollapsed) { let r = document.getSelection().getRangeAt(0); @@ -487,7 +433,7 @@ export default class SongBody extends HTMLElement { input(e, songbody) { console.log("Oninput", e); - if (e.target == songbody.parentNode) { + if (e.target == songbody) { Sanitize(songbody); // Avoid keeping cursor before the artifical space: if (document.getSelection().isCollapsed @@ -524,7 +470,7 @@ export default class SongBody extends HTMLElement { } } -function SongBodyInit() { +export function SongBodyInit() { if (!customElements.get("song-body")) { customElements.define("song-body", SongBody); } @@ -533,5 +479,3 @@ function SongBodyInit() { export function createSongBody() { return document.createElement("song-body"); } - -SongBodyInit(); \ No newline at end of file diff --git a/editor/songbook.js b/editor/songbook.js index cc5ce79b..66d48ded 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -1,57 +1,171 @@ import {SongChInit} from './ch.js' -import SongVerseBisInit from './verse.js' +import {SongVerseBisInit, SongVerse} from './verse.js' +import {SongBodyInit} from './songbody.js'; import {createSongBody} from './songbody.js'; import {Sanitize} from './sanitize.js'; +import {Save} from './save.js'; +import {removeAllChildren} from './utils.js'; -function OnLoad() { - //document.execCommand('defaultParagraphSeparator', false, 'br'); - let text = '' - + ` - - Kiedy stałem w przedświcie a Synaj - Prawdę głosił przez trąby wiatru - Zasmerczyły się chmury igliwiem - - Bure świerki o góry wsparte - I na niebie byłem ja jeden - Plotąc pieśni w warkocze bukowe - - I schodziłem na ziemię za kwestą - Przez skrzydlącą się bramę Lackowej - - - - I był Beskid i były słowa - Zanurzone po pępki w cerkwi baniach - Rozłożyście złotych - Smagających się wiatrem do krwi - - - Moje myśli biegały końmi - Po niebieskich mokrych połoninach - I modliłem się złożywszy dłonie - Do gór do madonny brunatnolicej - A gdy serce kroplami tęsknoty - Jęło spadać na góry sine - Czarodziejskim kwiatem paproci - Rozgwieździła się bukowina - - - `; - - let parser = new DOMParser(); - let xmlDoc = parser.parseFromString(text, "text/xml"); - - let editor = document.getElementById("editor"); - SongChInit(editor); - SongVerseBisInit(); - //SongBodyInit(); +export class SongEditor extends HTMLElement { + constructor() { + super(); + + const template = document.createElement('template'); + template.innerHTML = ` + +
+
+ + + + + +
+ +
+ `; + + const shadow = this.attachShadow({ mode: "closed" }); + shadow.appendChild(template.content.cloneNode(true)); + + this.buttonBis=shadow.getElementById("buttonBis"); + this.importantOver=shadow.getElementById("importantOver"); + this.buttonInstr=shadow.getElementById("buttonInstr"); + this.buttonSave=shadow.getElementById("buttonSave"); + this.open=shadow.getElementById("open"); + + this.buttonBis.addEventListener("click", (e) => this.body().wrapBis()); + this.importantOver.addEventListener("click", (e) => { this.body().markImportantOver(); this.refreshToolbar(); }); + this.buttonInstr.addEventListener("click", (e) => { this.body().toggleInstrumental(); this.refreshToolbar(); }); + this.buttonSave.addEventListener("click", () => Save(this.body())); + this.open.addEventListener("change", (e) => this.Load(e)); + + document.addEventListener('selectionchange', (event) => { this.refreshToolbar(); }); + } + + body() { + return this.firstChild; + } + + Load(e) { + console.log("LOADING", e); + let parser = new DOMParser(); + + // setting up the reader + var reader = new FileReader(); + reader.addEventListener('load', (event) => { + let parser = new DOMParser(); + let xmlDoc = parser.parseFromString(event.target.result, "text/xml"); + let z=xmlDoc.getElementsByTagName("lyric"); + removeAllChildren(this); + let tmp= document.createElement("div"); + tmp.appendChild(z[0]); + Sanitize(tmp); + this.appendChild(tmp.childNodes[0]); + }); + reader.readAsText(this.open.files[0]); + } - let body = createSongBody(); - editor.appendChild(body); + refreshToolbar() { + if (this.body().allSelectedImportant()) { + this.importantOver.innerText='Mało ważne akordy'; + } else { + this.importantOver.innerText='Kluczowe akordy'; + } + if (this.body().allSelectedInstrumental()) { + this.buttonInstr.innerText='Wers liryczny'; + } else { + this.buttonInstr.innerText='Wers instrumentalny'; + } + this.buttonBis.disabled = document.getSelection().rangeCount==0; + } - body.appendChild(xmlDoc.getRootNode().childNodes[0]); - Sanitize(body); + // input(e, songbis) { + // songbis.setAttribute("x", e.target.value); + // } + // + // connectedCallback() { + // this.attributeChangedCallback(); + // } + // + // attributeChangedCallback() { + // this.x.value = this.getAttribute("x"); + // } + // + // static get observedAttributes() { + // return ["x"] + // } + // + // focus() { + // this.x.focus(); + // } } -OnLoad(); + + +function songEditorInit() { + customElements.define("song-editor", SongEditor); +} + +function init() { + SongChInit(); + SongVerseBisInit(); + SongBodyInit(); + songEditorInit(); +} + +init(); + + +// function OnLoad() { +// //document.execCommand('defaultParagraphSeparator', false, 'br'); +// let text = '' +// + ` +// +// Kiedy stałem w przedświcie a Synaj +// Prawdę głosił przez trąby wiatru +// Zasmerczyły się chmury igliwiem +// +// Bure świerki o góry wsparte +// I na niebie byłem ja jeden +// Plotąc pieśni w warkocze bukowe +// +// I schodziłem na ziemię za kwestą +// Przez skrzydlącą się bramę Lackowej +// +// +// +// I był Beskid i były słowa +// Zanurzone po pępki w cerkwi baniach +// Rozłożyście złotych +// Smagających się wiatrem do krwi +// +// +// Moje myśli biegały końmi +// Po niebieskich mokrych połoninach +// I modliłem się złożywszy dłonie +// Do gór do madonny brunatnolicej +// A gdy serce kroplami tęsknoty +// Jęło spadać na góry sine +// Czarodziejskim kwiatem paproci +// Rozgwieździła się bukowina +// +// +// `; +// +// let parser = new DOMParser(); +// let xmlDoc = parser.parseFromString(text, "text/xml"); +// +// let editor = document.getElementById("editor"); +// SongChInit(editor); +// SongVerseBisInit(); +// //SongBodyInit(); +// +// let body = createSongBody(); +// editor.appendChild(body); +// +// body.appendChild(xmlDoc.getRootNode().childNodes[0]); +// Sanitize(body); +// } +// +// OnLoad(); diff --git a/editor/verse.js b/editor/verse.js index 9feef720..40d295a0 100644 --- a/editor/verse.js +++ b/editor/verse.js @@ -269,7 +269,7 @@ export class SongBis extends HTMLElement { -export default function SongVerseBisInit() { +export function SongVerseBisInit() { customElements.define("song-verse", SongVerse); customElements.define("song-bis", SongBis); } \ No newline at end of file From 78ed18595e14edb22e8d85c00fabda7fc4e7f91e Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 12 Oct 2022 16:05:26 +0200 Subject: [PATCH 052/664] New content loads on start. --- editor/a.html | 8 +++- editor/song.css | 4 +- editor/songbody.js | 11 +++++ editor/songbook.js | 109 ++++++++++++--------------------------------- 4 files changed, 47 insertions(+), 85 deletions(-) diff --git a/editor/a.html b/editor/a.html index 2f23768a..4c18c1d2 100644 --- a/editor/a.html +++ b/editor/a.html @@ -7,9 +7,13 @@ -

Song editor

+

Edytor piosenek

-
+ +
+ Wygenerowany opis piosenki: +
+
diff --git a/editor/song.css b/editor/song.css index 8499b3f1..4c56eecb 100644 --- a/editor/song.css +++ b/editor/song.css @@ -39,14 +39,14 @@ songbody { div.toolbar { position: fixed; - color:red; right:10px; - top: 10%; + top: 5%; } div.toolbar button { display: block; margin-top: 0.5em; + marging-left: 3em; width: 13em; } diff --git a/editor/songbody.js b/editor/songbody.js index 1f0c436d..619a3849 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -202,6 +202,17 @@ export default class SongBody extends HTMLElement { Sanitize(findAncestor(this, "SONG-BODY")); } + selectAll() { + let r=document.createRange(); + let rows=this.getElementsByTagName("SONG-ROW"); + r.setStartBefore(rows[0].firstChild); + r.setEndAfter(rows[rows.length-1].lastChild); + document.getSelection().removeAllRanges(); + document.getSelection().addRange(r); + //document.getSelection().selectAllChildren(this.body); + this.body.focus(); + } + allSelectedImportant() { let selRows = this.selectedRows(); let allImportant=true; diff --git a/editor/songbook.js b/editor/songbook.js index 66d48ded..396de2aa 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -13,13 +13,17 @@ export class SongEditor extends HTMLElement { const template = document.createElement('template'); template.innerHTML = ` -
+
- - - - - +
Pliki:
+ + +
+
Formatowanie: + + + +
@@ -44,7 +48,17 @@ export class SongEditor extends HTMLElement { } body() { - return this.firstChild; + return this.getElementsByTagName("song-body")[0]; + } + + New() { + this.innerHTML=` + + + Herbata stygnie, zapada zmrok + A pod piórem ciągle nic... + `; + this.body().selectAll(); } Load(e) { @@ -80,25 +94,12 @@ export class SongEditor extends HTMLElement { this.buttonBis.disabled = document.getSelection().rangeCount==0; } - // input(e, songbis) { - // songbis.setAttribute("x", e.target.value); - // } - // - // connectedCallback() { - // this.attributeChangedCallback(); - // } - // - // attributeChangedCallback() { - // this.x.value = this.getAttribute("x"); - // } - // - // static get observedAttributes() { - // return ["x"] - // } - // - // focus() { - // this.x.focus(); - // } + connectedCallback() { + if (!this.body()) { + this.New(); + } + } + } @@ -114,58 +115,4 @@ function init() { songEditorInit(); } -init(); - - -// function OnLoad() { -// //document.execCommand('defaultParagraphSeparator', false, 'br'); -// let text = '' -// + ` -// -// Kiedy stałem w przedświcie a Synaj -// Prawdę głosił przez trąby wiatru -// Zasmerczyły się chmury igliwiem -// -// Bure świerki o góry wsparte -// I na niebie byłem ja jeden -// Plotąc pieśni w warkocze bukowe -// -// I schodziłem na ziemię za kwestą -// Przez skrzydlącą się bramę Lackowej -// -// -// -// I był Beskid i były słowa -// Zanurzone po pępki w cerkwi baniach -// Rozłożyście złotych -// Smagających się wiatrem do krwi -// -// -// Moje myśli biegały końmi -// Po niebieskich mokrych połoninach -// I modliłem się złożywszy dłonie -// Do gór do madonny brunatnolicej -// A gdy serce kroplami tęsknoty -// Jęło spadać na góry sine -// Czarodziejskim kwiatem paproci -// Rozgwieździła się bukowina -// -// -// `; -// -// let parser = new DOMParser(); -// let xmlDoc = parser.parseFromString(text, "text/xml"); -// -// let editor = document.getElementById("editor"); -// SongChInit(editor); -// SongVerseBisInit(); -// //SongBodyInit(); -// -// let body = createSongBody(); -// editor.appendChild(body); -// -// body.appendChild(xmlDoc.getRootNode().childNodes[0]); -// Sanitize(body); -// } -// -// OnLoad(); +init(); \ No newline at end of file From ae9da7f8030cd2943dba9fe1ccea7c5add78896b Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 12 Oct 2022 17:54:06 +0200 Subject: [PATCH 053/664] CSS and saving fixes. --- editor/a.html | 6 +++--- editor/save.js | 2 +- editor/song.css | 8 ++++++++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/editor/a.html b/editor/a.html index 4c18c1d2..9e2de6b0 100644 --- a/editor/a.html +++ b/editor/a.html @@ -10,9 +10,9 @@

Edytor piosenek

-
- Wygenerowany opis piosenki: -
+
+ Wygenerowany opis piosenki: +
diff --git a/editor/save.js b/editor/save.js index c94e32e3..053496e8 100644 --- a/editor/save.js +++ b/editor/save.js @@ -27,7 +27,7 @@ export function Save(songbody) { console.log(resultDocument); let txt=new XMLSerializer().serializeToString(resultDocument);; - document.getElementById("output").innerText=txt; + document.getElementById("output").innerText=txt.replaceAll("?>\n Date: Wed, 12 Oct 2022 17:56:55 +0200 Subject: [PATCH 054/664] New button. --- editor/songbook.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/editor/songbook.js b/editor/songbook.js index 396de2aa..310ca8a7 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -16,6 +16,7 @@ export class SongEditor extends HTMLElement {
Pliki:
+
@@ -32,6 +33,7 @@ export class SongEditor extends HTMLElement { const shadow = this.attachShadow({ mode: "closed" }); shadow.appendChild(template.content.cloneNode(true)); + this.buttonNew=shadow.getElementById("buttonNew"); this.buttonBis=shadow.getElementById("buttonBis"); this.importantOver=shadow.getElementById("importantOver"); this.buttonInstr=shadow.getElementById("buttonInstr"); @@ -43,6 +45,7 @@ export class SongEditor extends HTMLElement { this.buttonInstr.addEventListener("click", (e) => { this.body().toggleInstrumental(); this.refreshToolbar(); }); this.buttonSave.addEventListener("click", () => Save(this.body())); this.open.addEventListener("change", (e) => this.Load(e)); + this.buttonNew.addEventListener("click", (e) => this.New(e)); document.addEventListener('selectionchange', (event) => { this.refreshToolbar(); }); } From 7bf12add62846a849ce645e21c033d843630df01 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 12 Oct 2022 20:44:47 +0200 Subject: [PATCH 055/664] A lot of polishing around delete/insert support. --- editor/sanitize.js | 65 ++++++++++++++++++++++++++++++---------------- editor/save.xslt | 3 ++- editor/songbody.js | 29 ++++++++++++++------- editor/songbook.js | 1 + editor/utils.js | 9 +++++++ editor/verse.js | 4 +++ 6 files changed, 78 insertions(+), 33 deletions(-) diff --git a/editor/sanitize.js b/editor/sanitize.js index ec218554..53ce80f1 100644 --- a/editor/sanitize.js +++ b/editor/sanitize.js @@ -13,6 +13,12 @@ function nestToBody(parent) { return body; } +function setRandomId(node) { + if (!node.id || node.id.trim()==='') { + node.id="v"+Math.floor(Math.random() * 100000000); + } +} + function createVerse(type="verse", blocknb=null) { let verse = document.createElement("song-verse"); if (type) { @@ -21,7 +27,7 @@ function createVerse(type="verse", blocknb=null) { if (blocknb) { verse.setAttribute("blocknb", blocknb); } - verse.id="v"+Math.floor(Math.random() * 100000000); + setRandomId(verse); return verse; } @@ -83,16 +89,19 @@ function traverseChilds(parent, childNodes) { // // the call responsibility is to process the node and put it into parent. function traverse(parent, node) { //console.log("Traversing...", node.nodeName, node); - node.style=null; + if (node instanceof Element) { + node.removeAttribute("style"); + } switch (node.nodeName.toUpperCase()) { // BASIC case '#TEXT' : { - if (node.parentNode.nodeName!='SONG-ROW' && node.nodeValue.trim().replace(/[\n\t\r]/g,"")==='') { + if (node.parentNode.nodeName!='SONG-ROW' && node.nodeValue.replace(/[\n\t\r ]/g,"")==='') { + // console.log("trimmed!!!"); node.remove(); return parent; } - node.nodeValue=node.nodeValue.replaceAll(" ", nbsp); + textNodeReplaceAll(node, " ", nbsp); let newParent = nestToRow(parent); newParent.appendChild(node); return newParent; @@ -124,6 +133,7 @@ function traverse(parent, node) { case 'SONG-VERSE': { let newParent = nestToBody(parent); newParent.appendChild(node); + setRandomId(node); traverseChilds(node, node.childNodes); return newParent; } @@ -218,6 +228,7 @@ function sanitizeRow(row) { row.appendChild(document.createTextNode(nbsp)); } } + row.normalize(); } function isEmptyRow(el) { @@ -228,11 +239,11 @@ function isEmptyRow(el) { export function Sanitize(body) { console.log("Sanitizing..."); - let r=document.getSelection().rangeCount>0 ? document.getSelection().getRangeAt(0).cloneRange() : null; - // As sanitization modifies the text (e.g replace all ' ' -> nbsp), we - // need to persist where is the selection, to be able to restore it. - let rso=r?r.startOffset:0; - console.log("Stored", r); + // let r=document.getSelection().rangeCount>0 ? document.getSelection().getRangeAt(0).cloneRange() : null; + // // As sanitization modifies the text (e.g replace all ' ' -> nbsp), we + // // need to persist where is the selection, to be able to restore it. + // let rso=r?r.startOffset:0; + //console.log("Stored", r); if (!lightTraverse(body)) { console.log("Full fix..."); console.log("before fix: ", body.outerHTML); @@ -255,6 +266,8 @@ export function Sanitize(body) { if (songVerse) { let row=rows[i]; let newVerse = songVerse.cloneNode(false); + songVerse.id=''; + setRandomId(songVerse); songVerse.parentNode.insertBefore( newVerse, songVerse.nextSibling); let newRows = document.createElement("SONG-ROWS"); @@ -288,34 +301,41 @@ export function Sanitize(body) { } } - if (r) { - r.setStart(r.startContainer, - Math.min(rso, - r.startContainer.nodeName=='#text' - ? r.startContainer.length - : r.startContainer.childNodes.length)); - document.getSelection().removeAllRanges(); - document.getSelection().addRange(r); + // if (r) { + // r.setStart(r.startContainer, + // Math.min(rso, + // r.startContainer.nodeName=='#text' + // ? r.startContainer.length + // : r.startContainer.childNodes.length)); + // document.getSelection().removeAllRanges(); + // document.getSelection().addRange(r); + // } +} + +function textNodeReplaceAll(node, searchValue, replaceValue) { + let r = document.getSelection().rangeCount > 0 ? document.getSelection().getRangeAt(0) : null; + if (r && r.intersectsNode(node)) { + return; } + node.nodeValue=node.nodeValue.replaceAll(searchValue, replaceValue); } // Returns whether tree is valid (is. requires deep validation). function lightTraverse(node) { if (node instanceof Element) { node.removeAttribute("style"); - }`` + } switch (node.nodeName) { case '#text' : { + //console.log("Light traverse text", node, '>'+node.nodeValue+'<', node.parentNode); if (node.parentNode.nodeName!='SONG-ROW') { console.log("Misplaced", node); return false; } - node.nodeValue= - node.nodeValue.replaceAll(" ", nbsp); + textNodeReplaceAll(node, " ", nbsp); if (node.parentNode.getAttribute('type')==='instr') { - node.nodeValue= - node.nodeValue.replaceAll(nbspsRegexp, nbsp); + textNodeReplaceAll(node, nbspsRegexp, nbsp); }; break; } @@ -371,6 +391,7 @@ function lightTraverse(node) { console.log("Misplaced", node); return false; } + setRandomId(node); if ((node.childNodes.length == 0 || node.childNodes[0].nodeName != 'SONG-ROWS') && !node.getAttribute("blocknb")) { diff --git a/editor/save.xslt b/editor/save.xslt index 2de67bd2..c2846f36 100644 --- a/editor/save.xslt +++ b/editor/save.xslt @@ -60,7 +60,8 @@ - + + diff --git a/editor/songbody.js b/editor/songbody.js index 619a3849..cd52def6 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -1,4 +1,4 @@ -import {findAncestor, getRangeForCursor,nbsp,removeAllChildren,loadXMLDoc} from './utils.js'; +import {findAncestor, getRangeForCursor,nbsp,removeAllChildren,mergeNodeAfter,setCursorBefore} from './utils.js'; import {createChord} from './ch.js' import {Sanitize} from './sanitize.js' import {Save} from './save.js' @@ -28,15 +28,6 @@ function insertChordHere(ch) { return false; } -function setCursorBefore(node) { - let newr=document.createRange(); - newr.setStartBefore(node); - newr.setEndBefore(node); - document.getSelection().removeAllRanges(); - document.getSelection().addRange(newr); - console.log("New selection:", document.getSelection(), newr); -} - function flattenBis(node) { if (!node) { return; @@ -186,6 +177,7 @@ export default class SongBody extends HTMLElement { row.appendChild(createChord(chords[i])); row.appendChild(document.createTextNode(nbsp + nbsp)); } + row.normalize(); } toggleInstrumental() { @@ -326,6 +318,7 @@ export default class SongBody extends HTMLElement { } beforeInput(e, songbody) { + console.log("beforeInput", e); if (e.inputType == "deleteContentBackward" && e.target == songbody) { if (document.getSelection().rangeCount == 1 @@ -439,6 +432,21 @@ export default class SongBody extends HTMLElement { } } Sanitize(songbody); + let r= document.getSelection().getRangeAt(0); + if (r.commonAncestorContainer.nodeName === 'SONG-ROWS') { + r.deleteContents(); + //document.execCommand("insertText",false, ""); + e.preventDefault(); + return; + } + } + + // Without this pressing any key when there is selection... removing all content. + if (document.getSelection().rangeCount>0) { + let r = document.getSelection().getRangeAt(0); + if (r.commonAncestorContainer.nodeName === 'SONG-ROWS') { + r.deleteContents(); + } } } @@ -471,6 +479,7 @@ export default class SongBody extends HTMLElement { let data = e.clipboardData.getData("text/html"); console.log(data); p.innerHTML = data; + getSelection().getRangeAt(0).deleteContents(); getSelection().getRangeAt(0).insertNode(p); e.preventDefault(); Sanitize(songbody); diff --git a/editor/songbook.js b/editor/songbook.js index 310ca8a7..9b3b1bd7 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -61,6 +61,7 @@ export class SongEditor extends HTMLElement { Herbata stygnie, zapada zmrok A pod piórem ciągle nic... `; + Sanitize(this.body()); this.body().selectAll(); } diff --git a/editor/utils.js b/editor/utils.js index b8b7d4ad..2326f960 100644 --- a/editor/utils.js +++ b/editor/utils.js @@ -53,4 +53,13 @@ export function loadXMLDoc(filename) try {xhttp.responseType = "msxml-document"} catch(err) {} // Helping IE11 xhttp.send(""); return xhttp.responseXML; +} + +export function setCursorBefore(node) { + let newr=document.createRange(); + newr.setStartBefore(node); + newr.setEndBefore(node); + document.getSelection().removeAllRanges(); + document.getSelection().addRange(newr); + console.log("New selection:", document.getSelection(), newr); } \ No newline at end of file diff --git a/editor/verse.js b/editor/verse.js index 40d295a0..fc99e969 100644 --- a/editor/verse.js +++ b/editor/verse.js @@ -127,6 +127,10 @@ export class SongVerse extends HTMLElement { } refreshPosition(verse, mutations) { + if (!verse.parentNode) { + console.warn("refresh-position disconnected"); + return; + } verse.blocklink.disabled=!verse.previousSibling; if (!verse.isChorus()) { From 8e8f5ca308e103806fb1469c9a205ab1fd600af8 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 12 Oct 2022 21:36:29 +0200 Subject: [PATCH 056/664] Proper importing of instrumental rows. --- editor/sanitize.js | 25 +++++++++++++++++------ editor/songbody.js | 49 +++++++++++++++++++++++----------------------- editor/songbook.js | 2 +- 3 files changed, 45 insertions(+), 31 deletions(-) diff --git a/editor/sanitize.js b/editor/sanitize.js index 53ce80f1..3b92855e 100644 --- a/editor/sanitize.js +++ b/editor/sanitize.js @@ -1,5 +1,6 @@ import {createChord} from './ch.js'; import {findAncestor,nbsp,removeAllChildren} from './utils.js'; +import {makeRowInstrumental} from './songbody.js'; const spaceRegex = / /g; const nbspsRegexp = /\u00a0+/g; @@ -21,9 +22,10 @@ function setRandomId(node) { function createVerse(type="verse", blocknb=null) { let verse = document.createElement("song-verse"); - if (type) { - verse.setAttribute("type", type); + if (!type || type!='verse' || type!='chorus') { + type = "verse" } + verse.setAttribute("type", type); if (blocknb) { verse.setAttribute("blocknb", blocknb); } @@ -47,9 +49,14 @@ function nestToVerseOrBis(parent) { return nestToVerse(parent); } -function createRow(important_over=false) { +function createRow(important_over=false, instrumental=false) { let row = document.createElement("song-row"); - row.setAttribute("important_over", important_over); + if (!instrumental) { + if (!important_over) { important_over=false; } + row.setAttribute("important_over", important_over.toString()); + } else { + row.setAttribute("type", "instr"); + } return row; } @@ -88,7 +95,7 @@ function traverseChilds(parent, childNodes) { // // parent - is sanitized parent of tag (song, song-verse(div), song-bis(div), song-row(div)) // // the call responsibility is to process the node and put it into parent. function traverse(parent, node) { - //console.log("Traversing...", node.nodeName, node); + //console.log("Traversing...", node.nodeName, node, node.style); if (node instanceof Element) { node.removeAttribute("style"); } @@ -207,10 +214,15 @@ function traverse(parent, node) { } case 'ROW': { let newParent = nestToRows(parent); - let newRow = createRow(node.getAttribute("important_over")); + let newRow = createRow( + node.getAttribute("important_over"), + node.getAttribute("type")==="instr"); newParent.appendChild(newRow); traverseChilds(newRow, node.childNodes); node.remove(); + if (newRow.getAttribute("type") === "instr") { + makeRowInstrumental(newRow); + } return newParent; } } @@ -322,6 +334,7 @@ function textNodeReplaceAll(node, searchValue, replaceValue) { // Returns whether tree is valid (is. requires deep validation). function lightTraverse(node) { + //console.log("lightTraverse", node, node.style); if (node instanceof Element) { node.removeAttribute("style"); } diff --git a/editor/songbody.js b/editor/songbody.js index cd52def6..2ce00354 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -17,6 +17,31 @@ function canInsertChord() { return x; } +export function makeRowNotInstrumental(row) { + let chords = row.innerText.replaceAll(' ', nbsp).split(nbsp); + console.log(chords); + row.removeAttribute("type"); + removeAllChildren(row); + for (let i=0; i { let parser = new DOMParser(); - let xmlDoc = parser.parseFromString(event.target.result, "text/xml"); + let xmlDoc = parser.parseFromString(event.target.result.replaceAll(" style=", " type="), "text/xml"); let z=xmlDoc.getElementsByTagName("lyric"); removeAllChildren(this); let tmp= document.createElement("div"); From 0a95ca98c68fd2a16860a81cecc946e98de459f9 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Thu, 13 Oct 2022 15:00:01 +0200 Subject: [PATCH 057/664] Created metadata fields. --- editor/ch.js | 2 +- editor/song.css | 29 +++++++++++++++++ editor/songbook.js | 79 +++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 108 insertions(+), 2 deletions(-) diff --git a/editor/ch.js b/editor/ch.js index c22a2736..306a6523 100644 --- a/editor/ch.js +++ b/editor/ch.js @@ -146,7 +146,7 @@ export function SongChInit() { `` + ``+ `` + - `` + + `` + ``; customElements.define("song-ch", SongCh); diff --git a/editor/song.css b/editor/song.css index d0b9642c..aaab1532 100644 --- a/editor/song.css +++ b/editor/song.css @@ -62,6 +62,35 @@ div.toolbar div { div.songbody{ padding-right: 2em; } + +div.metadata { + display: grid; + grid-display-columns: max-content, max-content; + grid-gap: 5px; +} + +div.metadata label { + text-align: right; + grid-column: 1/2; +} + +div.metadata input { + grid-column: 2/2; +} + +div.metadata select { + grid-column: 3/3; +} + +div.metadata label:after { + content: ":"; +} + +/*div.metadata input {*/ +/* left: 10em;*/ +/* display: inline-block;*/ +/*}*/ + /*song-ch {*/ /* user-select: all;*/ /*}*/ diff --git a/editor/songbook.js b/editor/songbook.js index 5dbebd62..df116a21 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -26,7 +26,84 @@ export class SongEditor extends HTMLElement {
- + +

Metryka

+ + + +

Treść

+ + +

Szczegóły:

+ + +

Status:

+ +
`; From a8e3039124f3efd24a3991b5816997b2da1f9d42 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Thu, 13 Oct 2022 15:19:43 +0200 Subject: [PATCH 058/664] Initial selection delete is leaving 'sanitized' content. --- editor/song.css | 2 +- editor/songbody.js | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/editor/song.css b/editor/song.css index aaab1532..8822d4ad 100644 --- a/editor/song.css +++ b/editor/song.css @@ -39,7 +39,7 @@ songbody { div.toolbar { position: fixed; - right:10px; + left:500px; top: 5%; } diff --git a/editor/songbody.js b/editor/songbody.js index 2ce00354..d6f8cfdd 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -432,12 +432,15 @@ export default class SongBody extends HTMLElement { e.preventDefault(); } } - Sanitize(songbody); let r= document.getSelection().getRangeAt(0); if (r.commonAncestorContainer.nodeName === 'SONG-ROWS') { + let start=findAncestor(r.startContainer, 'SONG-ROW'); r.deleteContents(); - //document.execCommand("insertText",false, ""); + if (start.childNodes.length === 0) { + start.remove(); + } e.preventDefault(); + Sanitize(songbody); return; } } @@ -448,6 +451,7 @@ export default class SongBody extends HTMLElement { if (r.commonAncestorContainer.nodeName === 'SONG-ROWS') { r.deleteContents(); } + Sanitize(songbody); } } From ea2d6600e32cff662c350badf7417d7e2aca6cf6 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Thu, 13 Oct 2022 15:46:54 +0200 Subject: [PATCH 059/664] HTML metadata fields properly identified. --- editor/songbook.js | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/editor/songbook.js b/editor/songbook.js index df116a21..4e3791f7 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -30,17 +30,17 @@ export class SongEditor extends HTMLElement {

Metryka

Status:

From d6daef1451e86a701fd28cc0c9fc26ffd4e658c4 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Thu, 13 Oct 2022 16:07:55 +0200 Subject: [PATCH 060/664] "Save" is taking 'title' as file-name. --- editor/save.js | 29 +++++++++++++---------------- editor/songbook.js | 11 +++++++++-- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/editor/save.js b/editor/save.js index 053496e8..fb414ace 100644 --- a/editor/save.js +++ b/editor/save.js @@ -1,16 +1,6 @@ import {loadXMLDoc} from './utils.js'; -// function docFromNode(node) { -// let DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); -// factory.setNamespaceAware(true); -// DocumentBuilder builder = factory.newDocumentBuilder(); -// Document newDocument = builder.newDocument(); -// Node importedNode = newDocument.importNode(node, true); -// newDocument.appendChild(importedNode); -// return newDocument; -//} - -export function Save(songbody) { +export function Save(songbody, title="piosenka") { let xsltProcessor = new XSLTProcessor() let xslt = loadXMLDoc('./save.xslt'); console.log(xslt); @@ -29,9 +19,16 @@ export function Save(songbody) { let txt=new XMLSerializer().serializeToString(resultDocument);; document.getElementById("output").innerText=txt.replaceAll("?>\nSprawdzający
- +
+

Wygenerowane

+ `; @@ -114,16 +116,21 @@ export class SongEditor extends HTMLElement { this.importantOver=shadow.getElementById("importantOver"); this.buttonInstr=shadow.getElementById("buttonInstr"); this.buttonSave=shadow.getElementById("buttonSave"); + this.buttonSave2=shadow.getElementById("buttonSave2"); this.open=shadow.getElementById("open"); this.buttonBis.addEventListener("click", (e) => this.body().wrapBis()); this.importantOver.addEventListener("click", (e) => { this.body().markImportantOver(); this.refreshToolbar(); }); this.buttonInstr.addEventListener("click", (e) => { this.body().toggleInstrumental(); this.refreshToolbar(); }); - this.buttonSave.addEventListener("click", () => Save(this.body())); + this.buttonSave.addEventListener("click", () => Save(this.body(), this.getAttribute("title"))); + this.buttonSave2.addEventListener("click", () => Save(this.body(), this.getAttribute("title"))); this.open.addEventListener("change", (e) => this.Load(e)); this.buttonNew.addEventListener("click", (e) => this.New(e)); document.addEventListener('selectionchange', (event) => { this.refreshToolbar(); }); + + this.title_=shadow.getElementById("title"); + this.title_.addEventListener("change", (e) => this.setAttribute("title", e.target.value)); } body() { From 3fc304f1df971eee9120e58143848dd81f0d2fb3 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Thu, 13 Oct 2022 17:34:11 +0200 Subject: [PATCH 061/664] Changed meta-properties are mapped as component attributes. --- editor/song.css | 5 +++++ editor/songbook.js | 30 ++++++++++++++++++++++++++---- editor/verse.css | 2 +- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/editor/song.css b/editor/song.css index 8822d4ad..19bd1694 100644 --- a/editor/song.css +++ b/editor/song.css @@ -37,6 +37,11 @@ songbody { display: block; } +div.songbody{ + margin-top: 0.3em; + margin-bottom: 2em; +} + div.toolbar { position: fixed; left:500px; diff --git a/editor/songbook.js b/editor/songbook.js index b106b783..1f1f276f 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -39,8 +39,8 @@ export class SongEditor extends HTMLElement { - - + - - -
Formatowanie: - - - -
- - +

Metryka

+
+
Pliki:
+ + + +
+
Formatowanie: + + + +
+
+
+

Wygenerowane

`; @@ -130,22 +141,25 @@ export class SongEditor extends HTMLElement { document.addEventListener('selectionchange', (event) => { this.refreshToolbar(); }); - const attrs=["title", "text_author", "text_author_type", "artist", "artist_type", - "alias", "original_title", "translator", "album", "composer", - "music_source", "metre", "guitar_barre", "genre", - "keywords", "comment", "done_text", "done_authors", "done_chords", - "verificators", "todo"]; for (let i=0; i { + if (a.checked) { + this.setAttribute("done_chords", av.value); + } else { + this.removeAttribute("done_chords"); + } + } + a.addEventListener("change", fun); + av.addEventListener("change", fun); + } else if (a.nodeName=='INPUT' && a.type==='checkbox') { a.addEventListener("change", (e) => this.setAttribute(attr, e.target.checked)); @@ -155,6 +169,19 @@ export class SongEditor extends HTMLElement { } } + attributeChangedCallback(attr) { + let a = this.shadow.getElementById(attr); + if (a.id === "done_chords") { + a.checked = this.hasAttribute("done_chords"); + this.shadow.getElementById("done_chords_value").value = a.checked + ? this.getAttribute("done_chords") : ""; + } else if (a.nodeName=='INPUT' && a.type==='checkbox') { + a.checked=this.getAttribute(attr)==="true"; + } else { + a.value=this.getAttribute(attr); + } + } + body() { return this.getElementsByTagName("song-body")[0]; } @@ -185,10 +212,65 @@ export class SongEditor extends HTMLElement { tmp.appendChild(z[0]); Sanitize(tmp); this.appendChild(tmp.childNodes[0]); + + let song=xmlDoc.getElementsByTagName("song")[0]; + + this.setAttribute("title", song.getAttribute("title")); + this.readAttribute(song, "text_author", "text_author"); + this.readAttribute(song, "text_author_type", "text_author", "type"); + this.readAttribute(song, "artist", "artist"); + this.readAttribute(song, "artist_type", "artist", "type"); + + this.readAttribute(song, "alias", "alias"); + this.readAttribute(song, "original_title", "original_title"); + this.readAttribute(song, "translator", "translator"); + this.readAttribute(song, "album", "album"); + this.readAttribute(song, "composer", "composer"); + this.readAttribute(song, "music_source", "music_source"); + + this.readAttribute(song, "metre", "music","metre"); + this.readAttribute(song, "guitar_barre", "guitar", "barre"); + this.readAttribute(song, "genre", "genre"); + this.readAttribute(song, "comment", "comment"); + + this.readAttributeDone(song, "text", "text"); + this.readAttributeDone(song, "authors", "authors"); + this.readAttributeDone(song, "chords", "chords"); + + //this.readAttribute(song, "keywords", "keywords"); + //this.readAttribute(song, "verificators", "verificators"); + + this.readAttribute(song, "todo", "todo"); }); reader.readAsText(this.open.files[0]); } + readAttribute(song, targetAttr, sourceTagName, sourceAttr=null) { + let nodes = song.getElementsByTagName(sourceTagName); + let node = nodes.length > 0 ? nodes[0] : null; + let txt=null; + if (node && !sourceAttr) { + txt = node.textContent; + } else if (node) { + txt = node.getAttribute(sourceAttr); + } + if (!txt || txt.trim()=='') { + this.removeAttribute(targetAttr); + } else { + this.setAttribute(targetAttr, txt); + } + } + + readAttributeDone(song, targetAttr, sourceTagName) { + let nodes = song.getElementsByTagName(sourceTagName); + let node = nodes.length > 0 ? nodes[0] : null; + if (node) { + this.setAttribute(targetAttr, node.textContent); + } else { + this.removeAttribute(targetAttr); + } + } + refreshToolbar() { if (this.body().allSelectedImportant()) { this.importantOver.innerText='Mało ważne akordy'; @@ -209,6 +291,10 @@ export class SongEditor extends HTMLElement { } } + static get observedAttributes() { + return attrs; + } + } From 41c04cc3be0769ecff4818f1c0339758a3f89cc4 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Fri, 14 Oct 2022 12:03:26 +0200 Subject: [PATCH 063/664] Seems like full song is getting loaded properly. --- editor/songbook.js | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/editor/songbook.js b/editor/songbook.js index df4c6c93..b56675ac 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -7,7 +7,7 @@ import {Save} from './save.js'; import {removeAllChildren} from './utils.js'; const attrs=["title", "text_author", "text_author_type", "artist", "artist_type", - "alias", "original_title", "translator", "album", "composer", + "alias", "original_title", "translator", "album", "composer", "composer_type", "music_source", "metre", "guitar_barre", "genre", "keywords", "comment", "done_text", "done_authors", "done_chords", "verificators", "todo"]; @@ -77,6 +77,11 @@ export class SongEditor extends HTMLElement { + @@ -226,6 +231,7 @@ export class SongEditor extends HTMLElement { this.readAttribute(song, "translator", "translator"); this.readAttribute(song, "album", "album"); this.readAttribute(song, "composer", "composer"); + this.readAttribute(song, "composer_type", "composer", "type"); this.readAttribute(song, "music_source", "music_source"); this.readAttribute(song, "metre", "music","metre"); @@ -233,12 +239,12 @@ export class SongEditor extends HTMLElement { this.readAttribute(song, "genre", "genre"); this.readAttribute(song, "comment", "comment"); - this.readAttributeDone(song, "text", "text"); - this.readAttributeDone(song, "authors", "authors"); - this.readAttributeDone(song, "chords", "chords"); + this.readAttributeDone(song, "done_text", "text"); + this.readAttributeDone(song, "done_authors", "authors"); + this.readAttributeDone(song, "done_chords", "chords"); - //this.readAttribute(song, "keywords", "keywords"); - //this.readAttribute(song, "verificators", "verificators"); + this.readAttributeList(song, "keywords", "keyword"); + this.readAttributeList(song, "verificators", "verificator"); this.readAttribute(song, "todo", "todo"); }); @@ -265,12 +271,23 @@ export class SongEditor extends HTMLElement { let nodes = song.getElementsByTagName(sourceTagName); let node = nodes.length > 0 ? nodes[0] : null; if (node) { - this.setAttribute(targetAttr, node.textContent); + this.setAttribute(targetAttr, node.textContent.trim()==''?'true':node.textContent); } else { this.removeAttribute(targetAttr); } } + readAttributeList(song, targetAttr, sourceTagName) { + let nodes = song.getElementsByTagName(sourceTagName); + let txt=''; + for (let i=0; i < nodes.length; ++i) { + txt+=nodes[i].textContent + '\n'; + }; + if (txt && txt.trim()!='') { + this.setAttribute(targetAttr, txt); + } + } + refreshToolbar() { if (this.body().allSelectedImportant()) { this.importantOver.innerText='Mało ważne akordy'; From 86a5c3d6bbac2d436bb0067a54579f5e7e096c04 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Fri, 14 Oct 2022 15:20:02 +0200 Subject: [PATCH 064/664] Save works. --- editor/save.js | 5 +- editor/save.xslt | 121 ++++++++++++++++++++++++++++++++++++++++++++- editor/songbook.js | 12 +++-- 3 files changed, 129 insertions(+), 9 deletions(-) diff --git a/editor/save.js b/editor/save.js index fb414ace..0ceb6258 100644 --- a/editor/save.js +++ b/editor/save.js @@ -1,13 +1,13 @@ import {loadXMLDoc} from './utils.js'; -export function Save(songbody, title="piosenka") { +export function Save(songeditor) { let xsltProcessor = new XSLTProcessor() let xslt = loadXMLDoc('./save.xslt'); console.log(xslt); xsltProcessor.importStylesheet(xslt); const src = document.implementation.createDocument("", "", null); - const clonedNode = src.importNode(songbody, true); + const clonedNode = src.importNode(songeditor, true); src.appendChild(clonedNode); let resultDocument = xsltProcessor.transformToDocument(src); @@ -26,6 +26,7 @@ export function Save(songbody, title="piosenka") { download.text="[download]"; document.getElementById("output").parentNode.appendChild(download); } + let title = songeditor.getAttribute("title"); if (!title || title.trim()==='') { title='song'; } diff --git a/editor/save.xslt b/editor/save.xslt index c2846f36..dd2e80e4 100644 --- a/editor/save.xslt +++ b/editor/save.xslt @@ -12,12 +12,129 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - diff --git a/editor/songbook.js b/editor/songbook.js index b56675ac..3d11b8f9 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -6,10 +6,12 @@ import {Sanitize} from './sanitize.js'; import {Save} from './save.js'; import {removeAllChildren} from './utils.js'; -const attrs=["title", "text_author", "text_author_type", "artist", "artist_type", - "alias", "original_title", "translator", "album", "composer", "composer_type", +const attrs=["title", "alias","text_author", "text_author_type","comment", + "composer", "composer_type","artist", "artist_type", + "translator" , "original_title", + "album", "music_source", "metre", "guitar_barre", "genre", - "keywords", "comment", "done_text", "done_authors", "done_chords", + "keywords", "done_text", "done_authors", "done_chords", "verificators", "todo"]; export class SongEditor extends HTMLElement { @@ -139,8 +141,8 @@ export class SongEditor extends HTMLElement { this.buttonBis.addEventListener("click", (e) => this.body().wrapBis()); this.importantOver.addEventListener("click", (e) => { this.body().markImportantOver(); this.refreshToolbar(); }); this.buttonInstr.addEventListener("click", (e) => { this.body().toggleInstrumental(); this.refreshToolbar(); }); - this.buttonSave.addEventListener("click", () => Save(this.body(), this.getAttribute("title"))); - this.buttonSave2.addEventListener("click", () => Save(this.body(), this.getAttribute("title"))); + this.buttonSave.addEventListener("click", () => Save(this)); + this.buttonSave2.addEventListener("click", () => Save(this)); this.open.addEventListener("change", (e) => this.Load(e)); this.buttonNew.addEventListener("click", (e) => this.New(e)); From 0807e1ed49457e3ae538a91919281870dd146e09 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Fri, 14 Oct 2022 16:53:08 +0200 Subject: [PATCH 065/664] Save: Tested and test file provided. --- editor/save.js | 4 +++- editor/save.xslt | 5 +++-- editor/testsong.xml | 52 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 editor/testsong.xml diff --git a/editor/save.js b/editor/save.js index 0ceb6258..1dc16e5b 100644 --- a/editor/save.js +++ b/editor/save.js @@ -11,7 +11,9 @@ export function Save(songeditor) { src.appendChild(clonedNode); let resultDocument = xsltProcessor.transformToDocument(src); - + if (!resultDocument) { + alert("XSLT transformation failed") + } const pi = resultDocument.createProcessingInstruction('xml', 'version="1.0" encoding="UTF-8"'); resultDocument.insertBefore(pi, resultDocument.firstChild); console.log(resultDocument); diff --git a/editor/save.xslt b/editor/save.xslt index dd2e80e4..dac7fcb4 100644 --- a/editor/save.xslt +++ b/editor/save.xslt @@ -4,7 +4,7 @@ xmlns="http://21wdh.staszic.waw.pl" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml"> - + @@ -76,7 +76,7 @@ - + @@ -109,6 +109,7 @@ + diff --git a/editor/testsong.xml b/editor/testsong.xml new file mode 100644 index 00000000..f98eb6c2 --- /dev/null +++ b/editor/testsong.xml @@ -0,0 +1,52 @@ + + Alternatywy + Stefan Kaszabara + Gratulujemy tym, którzy doczytali +aż tyle. + Czajkowski + Zespół Reprezentacyjny + Google Translate + (pre)Test Song + + +  Herbata stygnie, zapada zmrok +  A pod piórem ciągle nic... + + +  Jakiś refren z akordami  +  I kluczowymi akordami  + + + +  Teraz się zacznie:  +  Jeszcze jeden i jeszcze raz + +  Mamy zwrotkę z BISami + +  I nie bisami + + + + + + + + Testy + Dwa słowa + + Boom + Hit hop + + + + + chords + + + Piotr Tabor + Ktoś jeszcze + + Skasować to + + Internet + \ No newline at end of file From 75b65f9e63a2a60ad0d64ec2f9d17bf1e0929fe6 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Fri, 14 Oct 2022 17:06:16 +0200 Subject: [PATCH 066/664] Rename a.html to index --- editor/{a.html => index.html} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename editor/{a.html => index.html} (100%) diff --git a/editor/a.html b/editor/index.html similarity index 100% rename from editor/a.html rename to editor/index.html From 06918233c62c291d5b4e91b02038c277b0aaea29 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Mon, 17 Oct 2022 13:56:49 +0200 Subject: [PATCH 067/664] Removal of experimental file during development. --- editor/experimental.html | 131 --------------------------------------- 1 file changed, 131 deletions(-) delete mode 100644 editor/experimental.html diff --git a/editor/experimental.html b/editor/experimental.html deleted file mode 100644 index d2ebe94a..00000000 --- a/editor/experimental.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - -

Pejzaże harasymowiczowskie

- - - - - - - - - - -

-Or single: -

- -
-
- Gis - Kiedy stałem w przedśwDicie a Synaj
-
B Prawdę głosił przez treąby wiatru
-
G Zasmerczyły się chmury iglDiwiem
-
e Bure świerki o gCóry wspDarte
-
- - - From d1b42929f0f6080617fc5c16aec235c0bc12bfb0 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 19 Oct 2022 20:27:14 +0200 Subject: [PATCH 068/664] =?UTF-8?q?Piosenka:=20Tyle=20mi=20zosta=C5=82o=20?= =?UTF-8?q?co=20mi=20nakapa=C5=82o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - poprawki głównie danych twórcy - oznaczenie refrenu jako refren. --- songs/Tyle_mi_zostalo_co_mi_nakapalo.xml | 168 +++++++++++------------ 1 file changed, 82 insertions(+), 86 deletions(-) diff --git a/songs/Tyle_mi_zostalo_co_mi_nakapalo.xml b/songs/Tyle_mi_zostalo_co_mi_nakapalo.xml index a2e52d28..ca53cc52 100644 --- a/songs/Tyle_mi_zostalo_co_mi_nakapalo.xml +++ b/songs/Tyle_mi_zostalo_co_mi_nakapalo.xml @@ -1,87 +1,83 @@ - - - - - - - - - - - - Siedzę w swoim domu w kącie - W przytulnych walonkach - Jeszcze wczoraj było ciepło - Grzało choć od słońca - Dzisiaj coś mi nawaliło - I się prąd wyłączył - Tylko zacier jest na chodzie - I z rurki się sączy - - - Tyle mi zastało - Co mi nakapało - Jak przyjdzie milicja - Będzie prohibicja - - - Wody wczoraj mi naciekło - Prawie pół miednicy - Dzisiał łup! i wywaliło - Rury w kamienicy - Tych żeberek co pod oknem - Ogrzać już nie sposób - Gdyby one były z mięsa - Miałbym chociaż rosół - - - - Teraz z kranów mi nie leci - W łazience mi cuchnie - Gaz bezwonny to nie włączam - Bo a nuż wybuchnie - W kuchni mrozi się lodówka - Ale teraz zewnętrznie - Pralka tylko wtedy chodzi - Kiedy piorę ręcznie - - - - Telewizor wyłączyłem - Świecił na niebiesko - Bo samogon gdy wypędzę - To chowam w kineskop - Zresztą może bym i włączył - Ale nie ma prądu - Tylko zacier jest na chodzie - I dowód do wglądu - - - - I tak jest każdego roku - Kiedy przyjdzie zima - Myślę przyjdzie jeszcze jedna - I blok nie wytrzyma - Póki co by ta następna - Nie dała we znaki - Kupię drugi telewizor - By mieć dwa baniaki - - - - - - - - - - - - - - - - - - + + + Krzysztof Daukszewicz + Krzysztof Daukszewicz + Krzysztof Daukszewicz + + + Siedzę w swoim domu w kącie + W przytulnych walonkach + Jeszcze wczoraj było ciepło + Grzało choć od słońca + Dzisiaj coś mi nawaliło + I się prąd wyłączył + Tylko zacier jest na chodzie + I z rurki się sączy + + + Tyle mi zastało + Co mi nakapało + Jak przyjdzie milicja + Będzie prohibicja + + + Wody wczoraj mi naciekło + Prawie pół miednicy + Dzisiał łup! i wywaliło + Rury w kamienicy + Tych żeberek co pod oknem + Ogrzać już nie sposób + Gdyby one były z mięsa + Miałbym chociaż rosół + + + + Teraz z kranów mi nie leci + W łazience mi cuchnie + Gaz bezwonny to nie włączam + Bo a nuż wybuchnie + W kuchni mrozi się lodówka + Ale teraz zewnętrznie + Pralka tylko wtedy chodzi + Kiedy piorę ręcznie + + + + Telewizor wyłączyłem + Świecił na niebiesko + Bo samogon gdy wypędzę + To chowam w kineskop + Zresztą może bym i włączył + Ale nie ma prądu + Tylko zacier jest na chodzie + I dowód do wglądu + + + + I tak jest każdego roku + Kiedy przyjdzie zima + Myślę przyjdzie jeszcze jedna + I blok nie wytrzyma + Póki co by ta następna + Nie dała we znaki + Kupię drugi telewizor + By mieć dwa baniaki + + + + + + + + + + + Stare and Nowe + Piosenka kabaretowa + + + + + + From 743c10de3e5bb4b858505ddb2e2e3c0edc417440 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Thu, 20 Oct 2022 21:12:52 +0200 Subject: [PATCH 069/664] Piosenka: songs/Amsterdam.xml (#6) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Poprawiono twórców i źródło muzyki. --- songs/Amsterdam.xml | 151 ++++++++++++++++++++------------------------ 1 file changed, 70 insertions(+), 81 deletions(-) diff --git a/songs/Amsterdam.xml b/songs/Amsterdam.xml index e1222bf5..e8b47694 100644 --- a/songs/Amsterdam.xml +++ b/songs/Amsterdam.xml @@ -1,81 +1,70 @@ - - - - Jacques Brel - - Jacques Brel - - Wojciech Młynarski - - - - Jest port wielki jak świat, co się zwie Amsterdam, - Marynarze od lat pieśni swe nucą tam. - Jest jak świat wielki port, marynarze w nim śpią, - Jak daleki śpi fiord, zanim świt zbudzi go. - - Jest port wielki jak świat, marynarze w nim mrą, - Umierają co świt, pijąc piwo i klnąc. - Jest port wielki jak świat, co się zwie Amsterdam, - Marynarze od lat nowi rodzą się tam. - - - Marynarze od lat złażą tam ze swych łajb, - Obrus wielki jak świat czeka ich w każdej z knajp. - Obnażają swe kły skłonne wgryźć się w tę noc, - W tłuste podbrzusza ryb, w spasły księżyc i w noc. - - Do łapczywych ich łap wszystko wpada na żer, - Tłuszcz skapuje kap, kap, z rybich wątrób i serc. - Potem pijani w sztok w mrok odchodzą gdzieś, - A z bebechów ich wkrąg płynie czkawka i śmiech. - - - Jest port wielki jak świat, co się zwie Amsterdam, - Marynarze od lat tańce swe tańczą tam. - Lubią to bez dwóch zdań, lubią to bez zdań dwóch, - Gdy o brzuchy swych pań ocierają swój brzuch. - - Potem buch kogoś w łeb, aż na dwoje mu pękł, - Bo wybrzydzał się kiep na harmonii mdły jęk. - Akordeon też już wydał ostatni dech, - I znów obrus i tłuszcz, i znów czkawka i śmiech. - - - Jest port wielki jak świat, co się zwie Amsterdam, - Marynarze od lat zdrowie pań piją tam. - Pań tych zdrowie co noc piją w grudzień, czy w maj, - Które za złota trzos otwierają im raj. - - A gin, wódka i grog, a grog, wódka i gin - Rozpalają im wzrok, skrzydeł przydają im. - Żeby na skrzydłach tych mogli wzlecieć, hen, tam, - Skąd się smarka na świat i na port Amsterdam. - - - - - - - - - - - - Szanta - - - - - - - chord positioning - - - Kasia Kowalska - - - - - - + + + Jest port wielki jak świat + Jacques Brel + Jacques Brel + Katarzyna Groniec; Piotr Zadrożny; Marian Opania + Wojciech Młynarski + + + Jest port wielki jak świat, co się zwie Amsterdam, + Marynarze od lat pieśni swe nucą tam. + Jest jak świat wielki port, marynarze w nim śpią, + Jak daleki śpi fiord, zanim świt zbudzi go. + + Jest port wielki jak świat, marynarze w nim mrą, + Umierają co świt, pijąc piwo i klnąc. + Jest port wielki jak świat, co się zwie Amsterdam, + Marynarze od lat nowi rodzą się tam. + + + Marynarze od lat złażą tam ze swych łajb, + Obrus wielki jak świat czeka ich w każdej z knajp. + Obnażają swe kły skłonne wgryźć się w tę noc, + W tłuste podbrzusza ryb, w spasły księżyc i w noc. + + Do łapczywych ich łap wszystko wpada na żer, + Tłuszcz skapuje kap, kap, z rybich wątrób i serc. + Potem pijani w sztok w mrok odchodzą gdzieś, + A z bebechów ich wkrąg płynie czkawka i śmiech. + + + Jest port wielki jak świat, co się zwie Amsterdam, + Marynarze od lat tańce swe tańczą tam. + Lubią to bez dwóch zdań, lubią to bez zdań dwóch, + Gdy o brzuchy swych pań ocierają swój brzuch. + + Potem buch kogoś w łeb, aż na dwoje mu pękł, + Bo wybrzydzał się kiep na harmonii mdły jęk. + Akordeon też już wydał ostatni dech, + I znów obrus i tłuszcz, i znów czkawka i śmiech. + + + Jest port wielki jak świat, co się zwie Amsterdam, + Marynarze od lat zdrowie pań piją tam. + Pań tych zdrowie co noc piją w grudzień, czy w maj, + Które za złota trzos otwierają im raj. + + A gin, wódka i grog, a grog, wódka i gin + Rozpalają im wzrok, skrzydeł przydają im. + Żeby na skrzydłach tych mogli wzlecieć, hen, tam, + Skąd się smarka na świat i na port Amsterdam. + + + + + + + Szanta + + + + + chord positioning + + + Kasia Tabor + + + Angielska pieśń ludowa: Greensleeves + From 62188d4a35a110535b6980e30260bb3fb9840b4b Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 26 Oct 2022 14:35:34 +0200 Subject: [PATCH 070/664] =?UTF-8?q?Poprawi=C5=82em=20tw=C3=B3rc=C3=B3w?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- songs/Miejcie_nadzieje.xml | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/songs/Miejcie_nadzieje.xml b/songs/Miejcie_nadzieje.xml index 0d117a20..fca1db8a 100644 --- a/songs/Miejcie_nadzieje.xml +++ b/songs/Miejcie_nadzieje.xml @@ -1,12 +1,8 @@ - - - - - - - - - + + + Adam Asnyk + Zbigniew Preisner + Jacek Wójcicki Miejcie nadzieję nie tę lichą marną @@ -23,7 +19,7 @@ Miejcie odwagę nie tę tchnącą szałem Która na oślep leci bez oręża - + Lecz tę co sama niezdobytym wałem Przeciwne losy stałością zwycięża @@ -31,7 +27,7 @@ Przestańmy własną pieścić się boleścią Przestańmy ciągłym lamentem się poić - + Kochać się w skargach jest rzeczą niewieścią Mężom przystoi w milczeniu się zbroić @@ -39,7 +35,7 @@ Lecz nie przestańmy czcić świętości swoje I przechowywać ideał czystości - + Do nas należy dać im moc i zbroję By z kraju marzeń przeszły w rzeczywistość @@ -47,17 +43,18 @@ Miejcie nadzieję nie tę lichą marną Co rdzień spruchniały w wątły kwiat ubiera - + Lecz tę niezłomną która tkwi jak ziarno Przyszłych poświęceń w duszy bohatera - + + + - - + \ No newline at end of file From 884c8e44dd474e41dbc2617e9bb7639d969aba31 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Thu, 27 Oct 2022 15:45:43 +0200 Subject: [PATCH 071/664] Integration of web song-editor with github Allows to edit/fix songs using the web-editor without knowledge/need to use git. Co-authored-by: Piotr Tabor --- .gitignore | 1 + editor-github/.gcloudignore | 5 + editor-github/.gitignore | 2 + editor-github/common.js | 182 + editor-github/deploy.sh | 12 + editor-github/editor-github.iml | 8 + editor-github/exp.js | 50 + editor-github/google-cloud-functions-env.txt | 3 + editor-github/index.js | 354 ++ editor-github/listChanges.js | 187 + editor-github/local-env.txt | 3 + editor-github/package-lock.json | 4929 ++++++++++++++++++ editor-github/package.json | 29 + editor-github/template-env.txt | 3 + 14 files changed, 5768 insertions(+) create mode 100644 editor-github/.gcloudignore create mode 100644 editor-github/.gitignore create mode 100644 editor-github/common.js create mode 100644 editor-github/deploy.sh create mode 100644 editor-github/editor-github.iml create mode 100644 editor-github/exp.js create mode 100644 editor-github/google-cloud-functions-env.txt create mode 100644 editor-github/index.js create mode 100644 editor-github/listChanges.js create mode 100644 editor-github/local-env.txt create mode 100644 editor-github/package-lock.json create mode 100644 editor-github/package.json create mode 100644 editor-github/template-env.txt diff --git a/.gitignore b/.gitignore index 485dee64..4688fb19 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .idea +npmtmp/ diff --git a/editor-github/.gcloudignore b/editor-github/.gcloudignore new file mode 100644 index 00000000..536573b4 --- /dev/null +++ b/editor-github/.gcloudignore @@ -0,0 +1,5 @@ +.idea/ +node_modules/ +.gitignore/ +exp.js +deploy.sh \ No newline at end of file diff --git a/editor-github/.gitignore b/editor-github/.gitignore new file mode 100644 index 00000000..34940ff6 --- /dev/null +++ b/editor-github/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +google-cloud-functions-env.txt \ No newline at end of file diff --git a/editor-github/common.js b/editor-github/common.js new file mode 100644 index 00000000..6d4e4d0f --- /dev/null +++ b/editor-github/common.js @@ -0,0 +1,182 @@ +import {createOAuthUserAuth} from "@octokit/auth-app"; +import {Octokit} from "@octokit/rest"; +import {RequestError} from "@octokit/request-error"; +import util from "util"; +import {graphql} from "@octokit/graphql"; + +const USER_AGENT="songbook/0.1.0"; + +const OAUTH_APP_SECRET = process.env.OAUTH_APP_SECRET; + +export const OAUTH_CLIENT_ID = process.env.OAUTH_CLIENT_ID; + +export const BASE_URL = process.env.BASE_URL; +export const EDITOR_DOMAIN = process.env.EDITOR_DOMAIN; +export const EDITOR_BASE_URL = EDITOR_DOMAIN + '/songbook/editor' + +// export const EDITOR_DOMAIN = 'http://localhost:63342' +// export const EDITOR_BASE_URL = EDITOR_DOMAIN + '/editor/songbook' + +//http://localhost:63342/editor/songbook/index.html?_ijt=1gb48nh9nfnchi9pkou1v8tffm&_ij_reload=RELOAD_ON_SAVE + +export const CHANGES_BASE_URL = BASE_URL + "/changes"; +export const CONFIG_BASE_URL = BASE_URL + "/config"; + +export const MAIN_BRANCH_NAME="songeditor-main"; + + +export async function getFileFromBranch(octokit, user, branchName) { + let diff = await octokit.rest.repos.compareCommitsWithBasehead({ + owner: 'wdw21', + repo: 'songbook', + basehead: `main...${user}:songbook:${branchName}` + }); + return diff.data.files.length>0 ? diff.data.files[0].filename : null; +} + +export function htmlPrefix(res) { + res.write(` + + + + Edytor piosenek + + + + +`); +} + +export function htmlSuffix(res) { + res.write(` + +`); + res.end(); +} + +export async function newUserOctokit(req,res) { + let access_token = req.cookies.session ? req.cookies.session.access_token + : null; + let authuser = req.cookies.session ? req.cookies.session.user : null; + console.log("access token from cookie: ", access_token) + if (!access_token || !authuser) { + //TODO(ptab): Compare secret with the cookie. + const authData = { + clientId: OAUTH_CLIENT_ID, + clientSecret: OAUTH_APP_SECRET, + code: req.query.code, + state: req.query.state, + redirectUrl: CHANGES_BASE_URL, + log: console, + }; + + const auth = await createOAuthUserAuth(authData); + try { + const {token} = await auth(); + access_token = token; + } catch (e) { + console.log("Catched error(1):", e); + console.log("Catched error(2):", e.status, e instanceof RequestError); + res.redirect("/auth"); + return {octkokit: null,authuser:null,user:null,mygraphql:null}; + } + const octokit = new Octokit({ + userAgent: USER_AGENT, + auth: access_token, + log: console, + }); + const authenticated = await octokit.rest.users.getAuthenticated(); + authuser = authenticated.data.login; + console.log(util.inspect(authenticated, false, null, false)); + res.cookie("session", {"access_token": access_token, "user": authuser}, { maxAge: 3*24*60*60*1000, httpOnly: true, sameSite:'none', secure: true }); + } + const usr = (!req.params.user || req.params.user === 'me') ? authuser : req.params.user; + console.log('Acting as user:', usr); + return { + octokit: new Octokit({ + userAgent: USER_AGENT, + auth: access_token, + log: console, + }), + mygraphql: graphql.defaults({ + headers: { + "Authorization": "bearer " + access_token + }, + }), + authuser: authuser, + user: usr + } +} + + +export async function fetchBranch(octokit, user, branchName) { + try { + return await octokit.rest.repos.getBranch( + {owner: user, repo: 'songbook', 'branch': branchName}); + } catch (e) { + // if (!(e instanceof HttpError) || (e.code !== 404)) { + console.error(util.inspect(e,false,null,false), e instanceof RequestError); + + + // } + } + return null; +} + +export async function prepareMainBranch(octokit, user) { + let branch = await fetchBranch(octokit, user, MAIN_BRANCH_NAME); + if (!branch) { + let originBranch = await fetchBranch(octokit, 'wdw21', 'main'); + console.log(util.inspect(originBranch, false, null, false)); + await octokit.rest.git.createRef({owner: user, repo: 'songbook', "ref": "refs/heads/" + MAIN_BRANCH_NAME, "sha": originBranch.data.commit.sha}); + } + await octokit.rest.repos.mergeUpstream({owner: user, repo: 'songbook', 'branch': MAIN_BRANCH_NAME}); + return fetchBranch(octokit, user, MAIN_BRANCH_NAME); +} + +export async function prepareBranch(octokit, user, branchName) { + let branch = await fetchBranch(octokit, user, branchName); + if (branch) { + return branch; + } + let mainBranch = await prepareMainBranch(octokit, user); + console.log(util.inspect(mainBranch, false, null, false)); + + await octokit.rest.git.createRef({owner: user, repo: 'songbook', "ref": "refs/heads/" + branchName, "sha": mainBranch.data.commit.sha}); + return fetchBranch(octokit, user, branchName); +} + +export function editorLink(user, branchName, file, autocommit) { + return EDITOR_BASE_URL + '?' + + '&baseUrl=' + encodeURIComponent(BASE_URL) + + '&branch=' + encodeURIComponent(branchName) + + '&file=' + encodeURIComponent(file) + + '&user=' + encodeURIComponent(user) + + (autocommit?'&commitOnLoad=true':''); +} + +export function HandleError(e, res) { + console.log("HttpError", util.inspect(e, false, null, false) ); + if (!res.headersSent && e instanceof RequestError && e.status===401) { + // HttpError RequestError [HttpError]: Bad credentials + res.redirect('/auth'); + return; + } + if (!res.responsesSent) { + res.send(`
Error
`);
+        res.send(util.inspect(e, false, null, false));
+        res.end(`
`); + } +} diff --git a/editor-github/deploy.sh b/editor-github/deploy.sh new file mode 100644 index 00000000..ef674009 --- /dev/null +++ b/editor-github/deploy.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# Cloud function: https://console.cloud.google.com/functions/details/europe-west1/songbook-gh6?env=gen2&project=ptab-project&tab=details + +gcloud functions deploy songbook-gh6 \ + --region=europe-west1 --runtime nodejs16 --trigger-http --max-instances=5 --source . --memory=128Mi --gen2 \ + --entry-point=songbook \ + --env-vars-file=google-cloud-functions-env.txt \ + --set-secrets=OAUTH_APP_SECRET=projects/997188391745/secrets/songbook-OAUTH_APP_SECRET:latest + +# See secret details: https://console.cloud.google.com/security/secret-manager/secret/songbook-OAUTH_APP_SECRET/ +# Generate new secret: https://github.com/settings/applications/2019824 \ No newline at end of file diff --git a/editor-github/editor-github.iml b/editor-github/editor-github.iml new file mode 100644 index 00000000..80cc7391 --- /dev/null +++ b/editor-github/editor-github.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/editor-github/exp.js b/editor-github/exp.js new file mode 100644 index 00000000..c1b5d69f --- /dev/null +++ b/editor-github/exp.js @@ -0,0 +1,50 @@ +const crypto = require('crypto'); + +// Generated using: crypto.randomBytes(16);.toString("hex"); +const CRYPTO_IV = Buffer.from("b99e5a7e5363c58b07a62d12264e4b18", "hex"); +// Generated: console.log(crypto.randomBytes(24).toString("hex")); +const CRYPTO_KEY = Buffer.from("c5bcc1782e71bb5d522d7c36cd9eaa50cf91aefb5349d691", "hex"); + +function encrypt(txt) { + let cipher = crypto.createCipheriv("aes192", CRYPTO_KEY, CRYPTO_IV); + let encrypted = cipher.update(txt); + encrypted = Buffer.concat([encrypted, cipher.final()]); + return encrypted; +} + +function decrypt(txt) { + let cipher = crypto.createDecipheriv("aes192", CRYPTO_KEY, CRYPTO_IV); + let encrypted = cipher.update(txt); + encrypted = Buffer.concat([encrypted, cipher.final()]); + return encrypted.toString(); +} + +function encryptJSON(json) { + return encrypt(JSON.stringify(json)); +} + +function encryptJSONhex(json) { + return encryptJSON(json).toString("hex"); +} + +function decryptJSON(jsonContent) { + return JSON.parse(decrypt(jsonContent)); +} + + +function decryptJSONhex(jsonContent) { + return decryptJSON(Buffer.from(jsonContent, "hex")); +} + + +function test() { + console.log(encryptJSONhex({"jeden": 1, "dwa": 2})); + console.log(decryptJSONhex( + "0d9b6aa042cf845fe679b91b13e5800dc859d229ec451a180e9e26874ee46531")); +} + + +console.log(` abcd + cztery`.replaceAll(/(?<=^ *) /gm,"\t")); + +console.log("Pieśń na pieśniami-to jest _dzieło_.xml".replaceAll(/[^a-zA-Z0-9\.\-_]/g, "_")); \ No newline at end of file diff --git a/editor-github/google-cloud-functions-env.txt b/editor-github/google-cloud-functions-env.txt new file mode 100644 index 00000000..4980e9d2 --- /dev/null +++ b/editor-github/google-cloud-functions-env.txt @@ -0,0 +1,3 @@ +OAUTH_CLIENT_ID: "e1230ada4de9a5ce168b" +BASE_URL: "https://songbook-gh6-j72bw4qyaq-ew.a.run.app" +EDITOR_DOMAIN: "https://ptabor.github.io" \ No newline at end of file diff --git a/editor-github/index.js b/editor-github/index.js new file mode 100644 index 00000000..4c55c377 --- /dev/null +++ b/editor-github/index.js @@ -0,0 +1,354 @@ +import { oauthAuthorizationUrl } from "@octokit/oauth-authorization-url"; +import { http } from '@google-cloud/functions-framework'; +import {RequestError} from "@octokit/request-error"; +import express from 'express'; +import util from 'util'; +import crypto from 'crypto'; +import cookieParser from "cookie-parser"; +import cors from 'cors'; + +import {listChanges} from './listChanges.js'; +import { + BASE_URL, + EDITOR_DOMAIN, + CHANGES_BASE_URL, + CONFIG_BASE_URL, + OAUTH_CLIENT_ID, + newUserOctokit, + getFileFromBranch, + htmlSuffix, + htmlPrefix, + MAIN_BRANCH_NAME, + prepareBranch,editorLink, + prepareMainBranch, + HandleError, +} from './common.js'; + +const app = express(); + +console.info("Registering songbook", "baseUrl:" + BASE_URL); +http('songbook', app); +console.info("Registered songbook", "baseUrl:" + BASE_URL); + +app.use(cookieParser()); +app.use(cors({origin: EDITOR_DOMAIN, credentials: true})); + +app.get('/', async (req, res) => { + res.redirect(CHANGES_BASE_URL); +}); + +app.get('/changes', async (req, res) => { + const {octokit,mygraphql,user} = + await newUserOctokit(req, res); + if (!octokit) { return; } + res.redirect(`/users/${user}/changes`) +} ); + + +app.get('/songs', async (req, res) => { + const {octokit,mygraphql,user} = await newUserOctokit(req, res); + if (!octokit) return; + res.redirect(`/users/${user}/songs`) +} ); + +app.get('/users/:user/changes', listChanges); + +app.get('/users/:user/changes/:branch[:]edit', async (req, res) => { + const branchName = req.params.branch; + const {octokit,mygraphql,user} = await newUserOctokit(req, res); + if (!octokit) return; + let file = await getFileFromBranch(octokit, user, branchName); + res.redirect(editorLink(user, branchName, file, false)); +}); + +app.delete('/users/:user/changes/:branch', async (req, res) => { + const branchName = req.params.branch; + const {octokit,mygraphql,user} = await newUserOctokit(req, res); + if (!octokit) return; + + await octokit.rest.git.deleteRef({owner: user, repo: 'songbook', "ref": "heads/" + branchName}); + res.send("Deleted"); +}); + +async function publish(req, res) { + const branchName = req.params.branch; + const {octokit,mygraphql, user} = await newUserOctokit(req, res); + let file = await getFileFromBranch(octokit, user, branchName); + let link = editorLink(user, branchName, file); + let body = `{Opisz zmiany w piosence i kliknij "Create pull request". }\n\n\n[Link do edytora](${link})`; + let url=`https://github.com/wdw21/songbook/compare/main...${user}:songbook:${branchName}?title=Piosenka: ${encodeURIComponent(file)}&expand=1&body=${encodeURIComponent(body)}` + res.redirect(url); +} + +app.get('/users/:user/changes/:branch[:]publish', async (req, res) => { + publish(req, res); +}); + + +async function getSongs(octokit, user) { + let songs = await octokit.rest.repos.getContent( + {owner: user, repo: 'songbook', path: 'songs', ref: MAIN_BRANCH_NAME}) + //console.log(util.inspect(songs, false, null, false)); + let os = []; + for (let s of songs.data) { + os.push({ + title: s.name.replaceAll(/.xml$/g, ""), + filename: s.name, + path: s.path, + }); + } + return os +} + +app.get('/users/:user/changes[:]new', async (req, res) => { + try { + console.log("Starting request /users/:user/changes[:]new"); + const {octokit, mygraphql, user} = await newUserOctokit(req, res); + if (!octokit) { + return; + } + + htmlPrefix(res); + res.write(` +

Nowa edycja

\n + Wybierz (lub utwórz) plik, który będziesz edytował: + `); + + let songs = await getSongs(octokit, user) + + res.write(`\n`); + for (const song of songs) { + res.write(` \n`); + } + res.write(`\n`); + + res.write(` +
+ +
+ +
+
`); + } catch (e) { + HandleError(e, res); + } finally { + htmlSuffix(res); + console.log("!!! /changes:NEW processing finished !!!"); + } +}); + +function sanitizeBranchName(br) { + return br.replaceAll(/[^a-zA-Z0-9\.\-_]/g, "_"); +} + +async function newChange(file, req, res) { + let today = new Date().toISOString().slice(0, 10); + let rand= Math.floor(Math.random()*10000); + let branchName = sanitizeBranchName("se-"+ today + "-" + rand + "-" + file); + + const {octokit,mygraphql,user} = await newUserOctokit(req, res); + const branch = await prepareBranch(octokit, user, branchName) + + res.redirect(editorLink(user, branchName, "songs/"+file, true)); +} + +app.post('/users/:user/changes[:]new', express.urlencoded({extended: true }), async(req, res) => { + console.log("BODY", req.body); + let file = req.body.file.trim(); + if (!file.toLowerCase().endsWith(".xml")) { + file = file + ".xml"; + } + newChange(file, req, res) +}); + +app.post('/users/:user/changes/:file[:]new', async(req, res) => { + let file = req.params.trim(); + newChange(file, req, res) +}); + +app.get('/users/:user/songs', async (req, res) => { + try { + console.log("Starting request /songs"); + const {octokit, mygraphql, user} = await newUserOctokit(req, res); + if (!octokit) { + return; + } + + htmlPrefix(res); + res.write(` +

Lista piosenek

\n + Wybierz plik, który będziesz edytował: + `); + + let songs = await getSongs(octokit, user) + + res.write(`
    \n`); + for (const song of songs) { + res.write(`
  • ${song.title}
  • \n`); + } + res.write(`
\n`); + + res.write(` +
+ +
+ +
+
`); + } catch (e) { + HandleError(e, res); + } finally { + htmlSuffix(res); + console.log("!!! /songs processing finished !!!"); + } +}); + +app.get('/config', async (req, res) => { + const {octokit, mygraphql, authuser} = await newUserOctokit(req, res); + + try { + const repo = await octokit.rest.repos.get({owner: authuser, repo: "songbook"}); + } catch (e) { + const newFork = octokit.rest.repos.createFork({owner: "wdw21", repo: "songbook"}); + const delay = ms => new Promise(resolve => setTimeout(resolve, ms)) + await delay(3000); + } + + prepareMainBranch(octokit, authuser); + res.redirect(`/users/${authuser}/changes`); +}); + +function logRequest(req, res, next) { + console.log("V=============================================================V"); + console.log("REQUEST", req.url) + next(); + console.log("^=============================================================^"); +} +app.use(logRequest) + +app.use((err, req, res, next) => { + console.error("Failed request", req.url, util.inspect(err, false, null, false)); + if (err instanceof RequestError) { + console.log("RequestError"); + } + next(res); +}) + +async function commit(branchName, file, msg, payload, req, res) { + const {octokit,mygraphql,user} = await newUserOctokit(req, res); + if (!octokit) { return; } + + + console.log('Branch:', branchName); + const branch = await prepareBranch(octokit, user, branchName) + + console.log(util.inspect(branch, false, null, false)); + + return mygraphql(` + mutation ($input: CreateCommitOnBranchInput!) { + createCommitOnBranch(input: $input) { + commit { + url + } + } + } + `,{ + "input": { + "branch": { + "repositoryNameWithOwner": user + "/songbook", + "branchName": branchName + }, + "message": { + "headline": msg.trim() + }, + "fileChanges": { + "additions": [ + { + "path": file, + "contents": Buffer.from(payload).toString("base64") + } + ] + }, + "expectedHeadOid": branch.data.commit.sha + } + }); +} + +app.post('/users/:user/changes/:branchName[:]commit', async (req,res) => { + const branchName = req.params.branchName; + const msg = req.query.msg ? req.query.msg : "Kolejne zmiany"; + const file = req.query.file + const payload = req.body; + const commitResult = await commit(branchName, file, msg, payload, req, res); + res.send( + { + "status": "committed", + "commit": commitResult.createCommitOnBranch.commit + } + ); + console.log(":commit over") +}); + +app.post('/users/:user/changes/:branchName/:file([^$]+)', async (req,res) => { + const branchName = req.params.branchName; + const msg = req.query.msg ? req.query.msg.trim() : "Kolejne zmiany"; + const file = req.params.file.trim() + const payload = req.body; + const commitResult = await commit(branchName, file, msg, payload, req, res); + res.send( + { + "status": "committed", + "commit": commitResult.createCommitOnBranch.commit + } + ); + console.log(":commit over") +}); + +app.post('/users/:user/changes/:branchName/:file([^$]+)[:]commitAndPublish', async (req,res) => { + const branchName = req.params.branchName; + const msg = req.query.msg ? req.query.msg : "Kolejne zmiany"; + const file = req.params.file.trim() + const payload = req.body; + await commit(branchName, file, msg, payload, req, res); + return publish(res, req); +}); + +app.get('/users/:user/changes/:branchName/:file([^$]+)', async (req,res) => { + try { + const {octokit,user} = await newUserOctokit(req, res); + if (!octokit) return; + + const branchName = req.params.branchName; + console.log(branchName); + let cont = await octokit.rest.repos.getContent( + {owner: user, repo: 'songbook', path: req.params.file, ref: branchName}); + + // res.setHeader('Content-disposition', 'attachment; filename='+req.params.file); + res.setHeader('Content-type', 'text/xml') + + res.send(new Buffer.from(cont.data.content, "base64").toString('utf-8')); + + //res.write(cont); + } catch (e) { + HandleError(e, res); + } finally { + res.end(); + } +}); + +// TODO(ptab): - it should redirect back to origin, not to the 'changes' page +app.get('/auth', async (req, res) => { + const state = crypto.randomUUID(); + res.clearCookie("session"); + res.cookie("state", state); + + const {url} = + oauthAuthorizationUrl({ + clientType: "oauth-app", + clientId: OAUTH_CLIENT_ID, + redirectUrl: CONFIG_BASE_URL, + scopes: ["repo"], + state: state, + }); + res.redirect(url); +}); \ No newline at end of file diff --git a/editor-github/listChanges.js b/editor-github/listChanges.js new file mode 100644 index 00000000..83a35918 --- /dev/null +++ b/editor-github/listChanges.js @@ -0,0 +1,187 @@ +import {newUserOctokit, htmlPrefix, htmlSuffix, HandleError} from './common.js' +import util from "util"; + +const SONGEDITOR_BRANCH_REGEXP=/^se-.*/g; + +import {RequestError} from "@octokit/request-error"; + +export async function listChanges(req, res) { + try { + const {octokit, user, mygraphql} = await newUserOctokit(req, res); + if (!octokit) { + return; + } + let r = await mygraphql(`query ($user:String!, $repo:String!){ + repository(owner:$user,name:$repo) { + url + parent { + id + name + owner { + id + login + } + } + refs(last: 100, refPrefix:"refs/heads/", orderBy: {field:TAG_COMMIT_DATE, direction:DESC}) { + nodes { + id + name + associatedPullRequests(last:5) { + edges { + node { + id + title + number + url + closed + closedAt + changedFiles + merged + } + } + } + target { + ... on Commit { + changedFilesIfAvailable, + commitSHA: oid + committedDate, + commitUrl, + url, + history(first: 2) { + nodes { + id + oid + commitUrl + messageHeadline + committedDate + } + } + } + } + } + } + } +}`, + { + user: user, + repo: "songbook" + }); + + const diffs = new Map(); + const refs = r.repository.refs.nodes; + + console.log("Refs size before sort", refs.length); + + refs.sort((a, b) => { + if (!a || !a.target || !a.target.committedDate) { + return 1; + } + if (!b || !b.target || !a.target.committedDate) { + return -1; + } + return -a.target.committedDate.localeCompare(b.target.committedDate) + }); + + console.log("Refs size after sort", refs.length); + + for (let i = 0; i < refs.length; ++i) { + let branch = refs[i]; + console.log("Considering: " + branch.name, i, branch.name.match(SONGEDITOR_BRANCH_REGEXP)); + if (branch.name.match(SONGEDITOR_BRANCH_REGEXP)) { + console.log("Processing: " + branch.name, i); + diffs.set(branch.name, octokit.rest.repos.compareCommitsWithBasehead({ + owner: 'wdw21', + repo: 'songbook', + basehead: `main...${user}:songbook:${branch.name}` + })); + } + } + + htmlPrefix(res); + res.write(` +

Rozpoczęte edycje

+ + +`); + + for (let i = 0; i < refs.length; ++i) { + let branch = refs[i]; + if (branch.name.match(SONGEDITOR_BRANCH_REGEXP)) { + const diff = await diffs.get(branch.name); + if (!diff || diff.data.files.length < 1) { + continue; + } + + res.write(``) + + res.write(``) + + + res.write(``); + + res.write(``); + + res.write(``); + res.write(``); + } + } + + // Let's delete empty & merged branches. + for (let i = 0; i < refs.length; ++i) { + let branch = refs[i]; + if (branch.name.match(SONGEDITOR_BRANCH_REGEXP)) { + const diff = await diffs.get(branch.name); + if (diff.data.files.length === 0) { + octokit.rest.git.deleteRef({owner: user, repo: 'songbook', "ref": "heads/" + branch.name}); + continue; + } + if (branch.associatedPullRequests.edges.length > 0) { + let merged = true; + for (const edge of branch.associatedPullRequests.edges) { + if (!edge.node.closed || !edge.node.merged) { + merged = false; + } + } + if (merged) { + octokit.rest.git.deleteRef({owner: user, repo: 'songbook', "ref": "heads/" + branch.name}); + } + } + } + } + + //
${util.inspect(diff, false, null, false)}
+ res.write(` +
Plik Ostatnia zmiana Akcje Status recenzji Zaawansowane
${diff.data.files[0].status === 'added' ? 'Nowy:' : ''} ${diff.data.files[0].filename.replaceAll("songs/", "")}${new Date(branch.target.committedDate).toLocaleString("pl-PL")} + [Edytuj] + `); + if (branch.associatedPullRequests.edges.length > 0) { + let pr = branch.associatedPullRequests.edges[0].node; + res.write(`[W recenzji]`); + } else { + res.write(`[Wyślij do recenzji]`); + } + res.write(` + ${branch.name}
+ [branch]
+ [commit] +
+ + [Nowa zmiana] + +
+ [Magia pod spodem] +
${util.inspect(r, false, null, false)}
`); + + for (let [key, value] of diffs) { + res.write(`

diff: ${key}

${util.inspect(await value, false, null, false)}
\n`); + } + res.write(` +
`); + } catch (e) { + HandleError(e, res); + } finally { + if (!res.responsesSent) { + htmlSuffix(res); + } + } +} \ No newline at end of file diff --git a/editor-github/local-env.txt b/editor-github/local-env.txt new file mode 100644 index 00000000..30a0576b --- /dev/null +++ b/editor-github/local-env.txt @@ -0,0 +1,3 @@ +export OAUTH_CLIENT_ID="e1230ada4de9a5ce168b" +export BASE_URL="https://songbook-gh6-j72bw4qyaq-ew.a.run.app" +export EDITOR_DOMAIN="https://ptabor.github.io" \ No newline at end of file diff --git a/editor-github/package-lock.json b/editor-github/package-lock.json new file mode 100644 index 00000000..067f4f72 --- /dev/null +++ b/editor-github/package-lock.json @@ -0,0 +1,4929 @@ +{ + "name": "editor-github", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "editor-github", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "request": "^2.88.2" + }, + "devDependencies": { + "@google-cloud/functions-framework": "^3.1.2", + "@octokit/auth-app": "^4.0.7", + "@octokit/auth-oauth-app": "^5.0.4", + "@octokit/core": "^4.1.0", + "@octokit/graphql": "^5.0.3", + "@octokit/oauth-app": "^4.1.0", + "@octokit/rest": "^19.0.5", + "cookie-parser": "^1.4.6", + "cors": "^2.8.5" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@google-cloud/functions-framework": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@google-cloud/functions-framework/-/functions-framework-3.1.2.tgz", + "integrity": "sha512-pYvEH65/Rqh1JNPdcBmorcV7Xoom2/iOSmbtYza8msro7Inl+qOYxbyMiQfySD2gwAyn38WyWPRqsDRcf/BFLg==", + "dev": true, + "dependencies": { + "@types/express": "4.17.13", + "body-parser": "^1.18.3", + "cloudevents": "^6.0.0", + "express": "^4.16.4", + "minimist": "^1.2.5", + "on-finished": "^2.3.0", + "read-pkg-up": "^7.0.1", + "semver": "^7.3.5" + }, + "bin": { + "functions-framework": "build/src/main.js", + "functions-framework-nodejs": "build/src/main.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@octokit/auth-app": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-4.0.7.tgz", + "integrity": "sha512-hjjVCoI/+1oLminVHJPPexguYb9FP4Q60hEHExgy1uAKMMJ5Zf8iJIeRJlIIqneTb4vt7NvUTEj4YDxBLZ1FLg==", + "dev": true, + "dependencies": { + "@octokit/auth-oauth-app": "^5.0.0", + "@octokit/auth-oauth-user": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^8.0.0", + "@types/lru-cache": "^5.1.0", + "deprecation": "^2.3.1", + "lru-cache": "^6.0.0", + "universal-github-app-jwt": "^1.0.1", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/auth-oauth-app": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-5.0.4.tgz", + "integrity": "sha512-zlWuii5hAN50vsV6SJC+uIJ7SMhyWjQMEmKJQxkmNDlieE9LjnkZnbOjqRsfcG7VO7WTl4K8ccpo/3A7Kdpmrw==", + "dev": true, + "dependencies": { + "@octokit/auth-oauth-device": "^4.0.0", + "@octokit/auth-oauth-user": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/types": "^8.0.0", + "@types/btoa-lite": "^1.0.0", + "btoa-lite": "^1.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/auth-oauth-device": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-4.0.3.tgz", + "integrity": "sha512-KPTx5nMntKjNZzzltO3X4T68v22rd7Cp/TcLJXQE2U8aXPcZ9LFuww9q9Q5WUNSu3jwi3lRwzfkPguRfz1R8Vg==", + "dev": true, + "dependencies": { + "@octokit/oauth-methods": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/types": "^8.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/auth-oauth-user": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-2.0.4.tgz", + "integrity": "sha512-HrbDzTPqz6GcGSOUkR+wSeF3vEqsb9NMsmPja/qqqdiGmlk/Czkxctc3KeWYogHonp62Ml4kjz2VxKawrFsadQ==", + "dev": true, + "dependencies": { + "@octokit/auth-oauth-device": "^4.0.0", + "@octokit/oauth-methods": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/types": "^8.0.0", + "btoa-lite": "^1.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/auth-token": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.2.tgz", + "integrity": "sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q==", + "dev": true, + "dependencies": { + "@octokit/types": "^8.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/auth-unauthenticated": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-3.0.3.tgz", + "integrity": "sha512-IyfLo1T5GmIC9+07hHGlD3gHtZI1Bona8PLhHXUnwcYDuZt0BhjlNJDYMoPG21C4r7v7+ZSxQHBKrGgkxpYb7A==", + "dev": true, + "dependencies": { + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^8.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/core": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.1.0.tgz", + "integrity": "sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ==", + "dev": true, + "dependencies": { + "@octokit/auth-token": "^3.0.0", + "@octokit/graphql": "^5.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^8.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/endpoint": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.3.tgz", + "integrity": "sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw==", + "dev": true, + "dependencies": { + "@octokit/types": "^8.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/graphql": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.3.tgz", + "integrity": "sha512-VjhqOu2CHo2hwank1y2k8YcqF83zJW6upyP1+0l3wegvpq+4H31zOA5Rkyx76uJBUdJooUR5UnFyclBptzl86Q==", + "dev": true, + "dependencies": { + "@octokit/request": "^6.0.0", + "@octokit/types": "^8.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/oauth-app": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@octokit/oauth-app/-/oauth-app-4.1.0.tgz", + "integrity": "sha512-dGZcfmwPkS3VZ9CNnvNszp6mlnbOZh9+/uPNiK/AkvSUJGXTbUVIZTkMvAjbyIFw2WlIx++hhtrTeKNJq6uMbw==", + "dev": true, + "dependencies": { + "@octokit/auth-oauth-app": "^5.0.0", + "@octokit/auth-oauth-user": "^2.0.0", + "@octokit/auth-unauthenticated": "^3.0.0", + "@octokit/core": "^4.0.0", + "@octokit/oauth-authorization-url": "^5.0.0", + "@octokit/oauth-methods": "^2.0.0", + "@types/aws-lambda": "^8.10.83", + "fromentries": "^1.3.1", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/oauth-authorization-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-5.0.0.tgz", + "integrity": "sha512-y1WhN+ERDZTh0qZ4SR+zotgsQUE1ysKnvBt1hvDRB2WRzYtVKQjn97HEPzoehh66Fj9LwNdlZh+p6TJatT0zzg==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/oauth-methods": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-2.0.4.tgz", + "integrity": "sha512-RDSa6XL+5waUVrYSmOlYROtPq0+cfwppP4VaQY/iIei3xlFb0expH6YNsxNrZktcLhJWSpm9uzeom+dQrXlS3A==", + "dev": true, + "dependencies": { + "@octokit/oauth-authorization-url": "^5.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^8.0.0", + "btoa-lite": "^1.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", + "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==", + "dev": true + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-5.0.1.tgz", + "integrity": "sha512-7A+rEkS70pH36Z6JivSlR7Zqepz3KVucEFVDnSrgHXzG7WLAzYwcHZbKdfTXHwuTHbkT1vKvz7dHl1+HNf6Qyw==", + "dev": true, + "dependencies": { + "@octokit/types": "^8.0.0" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=4" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.7.0.tgz", + "integrity": "sha512-orxQ0fAHA7IpYhG2flD2AygztPlGYNAdlzYz8yrD8NDgelPfOYoRPROfEyIe035PlxvbYrgkfUZIhSBKju/Cvw==", + "dev": true, + "dependencies": { + "@octokit/types": "^8.0.0", + "deprecation": "^2.3.1" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/request": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.2.tgz", + "integrity": "sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw==", + "dev": true, + "dependencies": { + "@octokit/endpoint": "^7.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^8.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/request-error": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.2.tgz", + "integrity": "sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg==", + "dev": true, + "dependencies": { + "@octokit/types": "^8.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/rest": { + "version": "19.0.5", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.5.tgz", + "integrity": "sha512-+4qdrUFq2lk7Va+Qff3ofREQWGBeoTKNqlJO+FGjFP35ZahP+nBenhZiGdu8USSgmq4Ky3IJ/i4u0xbLqHaeow==", + "dev": true, + "dependencies": { + "@octokit/core": "^4.1.0", + "@octokit/plugin-paginate-rest": "^5.0.0", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^6.7.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.0.0.tgz", + "integrity": "sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^14.0.0" + } + }, + "node_modules/@types/aws-lambda": { + "version": "8.10.107", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.107.tgz", + "integrity": "sha512-UTI9ZPw4VzvgYUJ7gUU77/ovGrIniRRWiMWxms5dP+1fsxNPeP/cOopQ0mxXPc9NvbeROcDUDN34m8eEhdEitg==", + "dev": true + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg==", + "dev": true + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.31", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", + "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/jsonwebtoken": { + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", + "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.11.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.0.tgz", + "integrity": "sha512-IOXCvVRToe7e0ny7HpT/X9Rb2RYtElG1a+VshjwT00HxrM2dWBApHQoqsI6WiY7Q03vdf2bCrIGzVrkF/5t10w==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "dev": true, + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==", + "dev": true + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cloudevents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/cloudevents/-/cloudevents-6.0.2.tgz", + "integrity": "sha512-mn/4EZnAbhfb/TghubK2jPnxYM15JRjf8LnWJtXidiVKi5ZCkd+p9jyBZbL57w7nRm6oFAzJhjxRLsXd/DNaBQ==", + "dev": true, + "dependencies": { + "ajv": "^8.11.0", + "ajv-formats": "^2.1.1", + "util": "^0.12.4", + "uuid": "^8.3.2" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-parser": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", + "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", + "dev": true, + "dependencies": { + "cookie": "0.4.1", + "cookie-signature": "1.0.6" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/cookie-parser/node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", + "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/har-validator/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/har-validator/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", + "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "node_modules/jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "dev": true, + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=4", + "npm": ">=1.4.28" + } + }, + "node_modules/jsonwebtoken/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/universal-github-app-jwt": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-1.1.0.tgz", + "integrity": "sha512-3b+ocAjjz4JTyqaOT+NNBd5BtTuvJTxWElIoeHSVelUV9J3Jp7avmQTdLKCaoqi/5Ox2o/q+VK19TJ233rVXVQ==", + "dev": true, + "dependencies": { + "@types/jsonwebtoken": "^8.3.3", + "jsonwebtoken": "^8.5.1" + } + }, + "node_modules/universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", + "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "safe-buffer": "^5.1.2", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", + "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@google-cloud/functions-framework": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@google-cloud/functions-framework/-/functions-framework-3.1.2.tgz", + "integrity": "sha512-pYvEH65/Rqh1JNPdcBmorcV7Xoom2/iOSmbtYza8msro7Inl+qOYxbyMiQfySD2gwAyn38WyWPRqsDRcf/BFLg==", + "dev": true, + "requires": { + "@types/express": "4.17.13", + "body-parser": "^1.18.3", + "cloudevents": "^6.0.0", + "express": "^4.16.4", + "minimist": "^1.2.5", + "on-finished": "^2.3.0", + "read-pkg-up": "^7.0.1", + "semver": "^7.3.5" + } + }, + "@octokit/auth-app": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-4.0.7.tgz", + "integrity": "sha512-hjjVCoI/+1oLminVHJPPexguYb9FP4Q60hEHExgy1uAKMMJ5Zf8iJIeRJlIIqneTb4vt7NvUTEj4YDxBLZ1FLg==", + "dev": true, + "requires": { + "@octokit/auth-oauth-app": "^5.0.0", + "@octokit/auth-oauth-user": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^8.0.0", + "@types/lru-cache": "^5.1.0", + "deprecation": "^2.3.1", + "lru-cache": "^6.0.0", + "universal-github-app-jwt": "^1.0.1", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/auth-oauth-app": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-5.0.4.tgz", + "integrity": "sha512-zlWuii5hAN50vsV6SJC+uIJ7SMhyWjQMEmKJQxkmNDlieE9LjnkZnbOjqRsfcG7VO7WTl4K8ccpo/3A7Kdpmrw==", + "dev": true, + "requires": { + "@octokit/auth-oauth-device": "^4.0.0", + "@octokit/auth-oauth-user": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/types": "^8.0.0", + "@types/btoa-lite": "^1.0.0", + "btoa-lite": "^1.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/auth-oauth-device": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-4.0.3.tgz", + "integrity": "sha512-KPTx5nMntKjNZzzltO3X4T68v22rd7Cp/TcLJXQE2U8aXPcZ9LFuww9q9Q5WUNSu3jwi3lRwzfkPguRfz1R8Vg==", + "dev": true, + "requires": { + "@octokit/oauth-methods": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/types": "^8.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/auth-oauth-user": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-2.0.4.tgz", + "integrity": "sha512-HrbDzTPqz6GcGSOUkR+wSeF3vEqsb9NMsmPja/qqqdiGmlk/Czkxctc3KeWYogHonp62Ml4kjz2VxKawrFsadQ==", + "dev": true, + "requires": { + "@octokit/auth-oauth-device": "^4.0.0", + "@octokit/oauth-methods": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/types": "^8.0.0", + "btoa-lite": "^1.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/auth-token": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.2.tgz", + "integrity": "sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q==", + "dev": true, + "requires": { + "@octokit/types": "^8.0.0" + } + }, + "@octokit/auth-unauthenticated": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-3.0.3.tgz", + "integrity": "sha512-IyfLo1T5GmIC9+07hHGlD3gHtZI1Bona8PLhHXUnwcYDuZt0BhjlNJDYMoPG21C4r7v7+ZSxQHBKrGgkxpYb7A==", + "dev": true, + "requires": { + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^8.0.0" + } + }, + "@octokit/core": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.1.0.tgz", + "integrity": "sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ==", + "dev": true, + "requires": { + "@octokit/auth-token": "^3.0.0", + "@octokit/graphql": "^5.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^8.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/endpoint": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.3.tgz", + "integrity": "sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw==", + "dev": true, + "requires": { + "@octokit/types": "^8.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/graphql": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.3.tgz", + "integrity": "sha512-VjhqOu2CHo2hwank1y2k8YcqF83zJW6upyP1+0l3wegvpq+4H31zOA5Rkyx76uJBUdJooUR5UnFyclBptzl86Q==", + "dev": true, + "requires": { + "@octokit/request": "^6.0.0", + "@octokit/types": "^8.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/oauth-app": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@octokit/oauth-app/-/oauth-app-4.1.0.tgz", + "integrity": "sha512-dGZcfmwPkS3VZ9CNnvNszp6mlnbOZh9+/uPNiK/AkvSUJGXTbUVIZTkMvAjbyIFw2WlIx++hhtrTeKNJq6uMbw==", + "dev": true, + "requires": { + "@octokit/auth-oauth-app": "^5.0.0", + "@octokit/auth-oauth-user": "^2.0.0", + "@octokit/auth-unauthenticated": "^3.0.0", + "@octokit/core": "^4.0.0", + "@octokit/oauth-authorization-url": "^5.0.0", + "@octokit/oauth-methods": "^2.0.0", + "@types/aws-lambda": "^8.10.83", + "fromentries": "^1.3.1", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/oauth-authorization-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-5.0.0.tgz", + "integrity": "sha512-y1WhN+ERDZTh0qZ4SR+zotgsQUE1ysKnvBt1hvDRB2WRzYtVKQjn97HEPzoehh66Fj9LwNdlZh+p6TJatT0zzg==", + "dev": true + }, + "@octokit/oauth-methods": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-2.0.4.tgz", + "integrity": "sha512-RDSa6XL+5waUVrYSmOlYROtPq0+cfwppP4VaQY/iIei3xlFb0expH6YNsxNrZktcLhJWSpm9uzeom+dQrXlS3A==", + "dev": true, + "requires": { + "@octokit/oauth-authorization-url": "^5.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^8.0.0", + "btoa-lite": "^1.0.0" + } + }, + "@octokit/openapi-types": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", + "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==", + "dev": true + }, + "@octokit/plugin-paginate-rest": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-5.0.1.tgz", + "integrity": "sha512-7A+rEkS70pH36Z6JivSlR7Zqepz3KVucEFVDnSrgHXzG7WLAzYwcHZbKdfTXHwuTHbkT1vKvz7dHl1+HNf6Qyw==", + "dev": true, + "requires": { + "@octokit/types": "^8.0.0" + } + }, + "@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true, + "requires": {} + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.7.0.tgz", + "integrity": "sha512-orxQ0fAHA7IpYhG2flD2AygztPlGYNAdlzYz8yrD8NDgelPfOYoRPROfEyIe035PlxvbYrgkfUZIhSBKju/Cvw==", + "dev": true, + "requires": { + "@octokit/types": "^8.0.0", + "deprecation": "^2.3.1" + } + }, + "@octokit/request": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.2.tgz", + "integrity": "sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw==", + "dev": true, + "requires": { + "@octokit/endpoint": "^7.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^8.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/request-error": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.2.tgz", + "integrity": "sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg==", + "dev": true, + "requires": { + "@octokit/types": "^8.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/rest": { + "version": "19.0.5", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.5.tgz", + "integrity": "sha512-+4qdrUFq2lk7Va+Qff3ofREQWGBeoTKNqlJO+FGjFP35ZahP+nBenhZiGdu8USSgmq4Ky3IJ/i4u0xbLqHaeow==", + "dev": true, + "requires": { + "@octokit/core": "^4.1.0", + "@octokit/plugin-paginate-rest": "^5.0.0", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^6.7.0" + } + }, + "@octokit/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.0.0.tgz", + "integrity": "sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg==", + "dev": true, + "requires": { + "@octokit/openapi-types": "^14.0.0" + } + }, + "@types/aws-lambda": { + "version": "8.10.107", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.107.tgz", + "integrity": "sha512-UTI9ZPw4VzvgYUJ7gUU77/ovGrIniRRWiMWxms5dP+1fsxNPeP/cOopQ0mxXPc9NvbeROcDUDN34m8eEhdEitg==", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg==", + "dev": true + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.31", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", + "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/jsonwebtoken": { + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", + "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "dev": true + }, + "@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "dev": true + }, + "@types/node": { + "version": "18.11.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.0.tgz", + "integrity": "sha512-IOXCvVRToe7e0ny7HpT/X9Rb2RYtElG1a+VshjwT00HxrM2dWBApHQoqsI6WiY7Q03vdf2bCrIGzVrkF/5t10w==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "dev": true, + "requires": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true + }, + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + } + }, + "btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==", + "dev": true + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cloudevents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/cloudevents/-/cloudevents-6.0.2.tgz", + "integrity": "sha512-mn/4EZnAbhfb/TghubK2jPnxYM15JRjf8LnWJtXidiVKi5ZCkd+p9jyBZbL57w7nRm6oFAzJhjxRLsXd/DNaBQ==", + "dev": true, + "requires": { + "ajv": "^8.11.0", + "ajv-formats": "^2.1.1", + "util": "^0.12.4", + "uuid": "^8.3.2" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "cookie-parser": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", + "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", + "dev": true, + "requires": { + "cookie": "0.4.1", + "cookie-signature": "1.0.6" + }, + "dependencies": { + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "dev": true + } + } + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", + "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + } + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", + "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", + "has-tostringtag": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "dev": true, + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } + } + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "universal-github-app-jwt": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-1.1.0.tgz", + "integrity": "sha512-3b+ocAjjz4JTyqaOT+NNBd5BtTuvJTxWElIoeHSVelUV9J3Jp7avmQTdLKCaoqi/5Ox2o/q+VK19TJ233rVXVQ==", + "dev": true, + "requires": { + "@types/jsonwebtoken": "^8.3.3", + "jsonwebtoken": "^8.5.1" + } + }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "util": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", + "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "safe-buffer": "^5.1.2", + "which-typed-array": "^1.1.2" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-typed-array": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", + "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.9" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } +} diff --git a/editor-github/package.json b/editor-github/package.json new file mode 100644 index 00000000..609efdde --- /dev/null +++ b/editor-github/package.json @@ -0,0 +1,29 @@ +{ + "name": "editor-github", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "source ./local-env.txt && npx functions-framework --target=songbook" + }, + "keywords": [], + "author": "", + "license": "ISC", + "type": "module", + "devDependencies": { + }, + "dependencies": { + "request": "^2.88.2", + "@google-cloud/functions-framework": "^3.1.2", + "@octokit/auth-app": "^4.0.7", + "@octokit/auth-oauth-app": "^5.0.4", + "@octokit/oauth-authorization-url": "^5.0.0", + "@octokit/core": "^4.1.0", + "@octokit/graphql": "^5.0.3", + "@octokit/oauth-app": "^4.1.0", + "@octokit/rest": "^19.0.5", + "cookie-parser": "^1.4.6", + "cors": "^2.8.5" + } +} diff --git a/editor-github/template-env.txt b/editor-github/template-env.txt new file mode 100644 index 00000000..5a2a7f5e --- /dev/null +++ b/editor-github/template-env.txt @@ -0,0 +1,3 @@ +OAUTH_CLIENT_ID: "e1230ada4de9a5ce168b" +BASE_URL: "http://localhost:8080" +EDITOR_DOMAIN: "https://ptabor.github.io" From d5d7be20457a2c51e2d85338c13e878e1176987a Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 18 Oct 2022 21:10:07 +0200 Subject: [PATCH 072/664] Prepere editor for remote file loading and saving (&load=...&commit=... flag that accepts URLs). --- editor/index.html | 47 +++++++++++++++++++++++- editor/save.js | 9 +++-- editor/songbook.js | 90 +++++++++++++++++++++++++--------------------- 3 files changed, 102 insertions(+), 44 deletions(-) diff --git a/editor/index.html b/editor/index.html index 9e2de6b0..f9a4d7e4 100644 --- a/editor/index.html +++ b/editor/index.html @@ -5,8 +5,51 @@ + + - +

Edytor piosenek

@@ -14,6 +57,8 @@

Edytor piosenek

Wygenerowany opis piosenki:
+ + diff --git a/editor/save.js b/editor/save.js index 1dc16e5b..0d46116c 100644 --- a/editor/save.js +++ b/editor/save.js @@ -1,6 +1,6 @@ import {loadXMLDoc} from './utils.js'; -export function Save(songeditor) { +export function Serialize(songeditor) { let xsltProcessor = new XSLTProcessor() let xslt = loadXMLDoc('./save.xslt'); console.log(xslt); @@ -19,7 +19,12 @@ export function Save(songeditor) { console.log(resultDocument); let txt=new XMLSerializer().serializeToString(resultDocument);; - document.getElementById("output").innerText=txt.replaceAll("?>\n\n { this.body().toggleInstrumental(); this.refreshToolbar(); }); this.buttonSave.addEventListener("click", () => Save(this)); this.buttonSave2.addEventListener("click", () => Save(this)); - this.open.addEventListener("change", (e) => this.Load(e)); + this.open.addEventListener("change", (e) => this.LoadFile(e)); this.buttonNew.addEventListener("click", (e) => this.New(e)); document.addEventListener('selectionchange', (event) => { this.refreshToolbar(); }); @@ -204,51 +204,59 @@ export class SongEditor extends HTMLElement { this.body().selectAll(); } - Load(e) { + Load(xmlContent) { + let parser = new DOMParser(); + let xmlDoc = parser.parseFromString(xmlContent.replaceAll(" style=", " type="), "text/xml"); + let z=xmlDoc.getElementsByTagName("lyric"); + removeAllChildren(this); + let tmp= document.createElement("div"); + tmp.appendChild(z[0]); + Sanitize(tmp); + this.appendChild(tmp.childNodes[0]); + + let song=xmlDoc.getElementsByTagName("song")[0]; + + this.setAttribute("title", song.getAttribute("title")); + this.readAttribute(song, "text_author", "text_author"); + this.readAttribute(song, "text_author_type", "text_author", "type"); + this.readAttribute(song, "artist", "artist"); + this.readAttribute(song, "artist_type", "artist", "type"); + + this.readAttribute(song, "alias", "alias"); + this.readAttribute(song, "original_title", "original_title"); + this.readAttribute(song, "translator", "translator"); + this.readAttribute(song, "album", "album"); + this.readAttribute(song, "composer", "composer"); + this.readAttribute(song, "composer_type", "composer", "type"); + this.readAttribute(song, "music_source", "music_source"); + + this.readAttribute(song, "metre", "music","metre"); + this.readAttribute(song, "guitar_barre", "guitar", "barre"); + this.readAttribute(song, "genre", "genre"); + this.readAttribute(song, "comment", "comment"); + + this.readAttributeDone(song, "done_text", "text"); + this.readAttributeDone(song, "done_authors", "authors"); + this.readAttributeDone(song, "done_chords", "chords"); + + this.readAttributeList(song, "keywords", "keyword"); + this.readAttributeList(song, "verificators", "verificator"); + + this.readAttribute(song, "todo", "todo"); + } + + Serialize() { + return Serialize(this); + } + + LoadFile(e) { console.log("LOADING", e); let parser = new DOMParser(); // setting up the reader var reader = new FileReader(); reader.addEventListener('load', (event) => { - let parser = new DOMParser(); - let xmlDoc = parser.parseFromString(event.target.result.replaceAll(" style=", " type="), "text/xml"); - let z=xmlDoc.getElementsByTagName("lyric"); - removeAllChildren(this); - let tmp= document.createElement("div"); - tmp.appendChild(z[0]); - Sanitize(tmp); - this.appendChild(tmp.childNodes[0]); - - let song=xmlDoc.getElementsByTagName("song")[0]; - - this.setAttribute("title", song.getAttribute("title")); - this.readAttribute(song, "text_author", "text_author"); - this.readAttribute(song, "text_author_type", "text_author", "type"); - this.readAttribute(song, "artist", "artist"); - this.readAttribute(song, "artist_type", "artist", "type"); - - this.readAttribute(song, "alias", "alias"); - this.readAttribute(song, "original_title", "original_title"); - this.readAttribute(song, "translator", "translator"); - this.readAttribute(song, "album", "album"); - this.readAttribute(song, "composer", "composer"); - this.readAttribute(song, "composer_type", "composer", "type"); - this.readAttribute(song, "music_source", "music_source"); - - this.readAttribute(song, "metre", "music","metre"); - this.readAttribute(song, "guitar_barre", "guitar", "barre"); - this.readAttribute(song, "genre", "genre"); - this.readAttribute(song, "comment", "comment"); - - this.readAttributeDone(song, "done_text", "text"); - this.readAttributeDone(song, "done_authors", "authors"); - this.readAttributeDone(song, "done_chords", "chords"); - - this.readAttributeList(song, "keywords", "keyword"); - this.readAttributeList(song, "verificators", "verificator"); - - this.readAttribute(song, "todo", "todo"); + this.Load(event.target.result);; }); reader.readAsText(this.open.files[0]); } From 3ecc3855ae08ab2f869a11dd22dc78ba885eb7b9 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 19 Oct 2022 10:46:08 +0200 Subject: [PATCH 073/664] Commit should send CORS credentials (cookies): credentials: 'include' --- editor/index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/editor/index.html b/editor/index.html index f9a4d7e4..c9acbf30 100644 --- a/editor/index.html +++ b/editor/index.html @@ -28,6 +28,7 @@ try { const config = { method: 'POST', + credentials: 'include', headers: { 'Accept': 'application/json', 'Content-Type': 'text/xml', From f227222ad1f33a810a695d4ab98eaf7e59d3f4e1 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 19 Oct 2022 20:14:39 +0200 Subject: [PATCH 074/664] comminOnLoad support, handling on not-existing load file, formatting on save. --- editor/index.html | 12 +++++++++--- editor/save.js | 6 ++++-- editor/songbook.js | 3 +++ 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/editor/index.html b/editor/index.html index c9acbf30..1f1d4d71 100644 --- a/editor/index.html +++ b/editor/index.html @@ -10,15 +10,21 @@ const urlParams = new URLSearchParams(window.location.search); const loadUrl = urlParams.get('load'); const commitUrl = urlParams.get('commit'); + const commitOnLoad = urlParams.get('commitOnLoad'); if (loadUrl) { fetch(loadUrl) .then((response) => response.text()) - .then((txt) => document.getElementsByTagName("song-editor")[0].Load(txt)); + .then((txt) => { + let songEditor = document.getElementsByTagName("song-editor")[0]; + songEditor.Load(txt); + if (commitOnLoad) { + commit(); + } + }) } document.getElementById("saveToGithub").hidden=(commitUrl==null); } - -

Edytor piosenek

- -
- Wygenerowany opis piosenki: -
-
- - - - - diff --git a/editor/sanitize.js b/editor/sanitize.js index 3b92855e..94a8fc97 100644 --- a/editor/sanitize.js +++ b/editor/sanitize.js @@ -250,7 +250,6 @@ function isEmptyRow(el) { } export function Sanitize(body) { - console.log("Sanitizing..."); // let r=document.getSelection().rangeCount>0 ? document.getSelection().getRangeAt(0).cloneRange() : null; // // As sanitization modifies the text (e.g replace all ' ' -> nbsp), we // // need to persist where is the selection, to be able to restore it. @@ -258,7 +257,6 @@ export function Sanitize(body) { //console.log("Stored", r); if (!lightTraverse(body)) { console.log("Full fix..."); - console.log("before fix: ", body.outerHTML); traverse(body, body); console.log("after fix: ", body.outerHTML); } diff --git a/editor/save.js b/editor/save.js index 7e97b7c7..2bdb07ea 100644 --- a/editor/save.js +++ b/editor/save.js @@ -19,26 +19,29 @@ export function Serialize(songeditor) { console.log(resultDocument); let txt=new XMLSerializer().serializeToString(resultDocument);; - return txt.replaceAll("?>\n\n +
+
Formatowanie: + + + +
+
`; const shadow = this.attachShadow({ mode: "closed" }); @@ -83,6 +90,30 @@ export default class SongBody extends HTMLElement { this.body.addEventListener("drop", (e) => {this.drop(e, this); }); // this.body.addEventListener("keydown", (e) => { this.keyDown(e, this); }); this.body.addEventListener("focusout", (e) => {this.focusout(e, this); }); + + this.buttonBis=shadow.getElementById("buttonBis"); + this.importantOver=shadow.getElementById("importantOver"); + this.buttonInstr=shadow.getElementById("buttonInstr"); + + this.buttonBis.addEventListener("click", (e) => this.wrapBis()); + this.importantOver.addEventListener("click", (e) => { this.markImportantOver(); this.refreshToolbar(); }); + this.buttonInstr.addEventListener("click", (e) => { this.toggleInstrumental(); this.refreshToolbar(); }); + + document.addEventListener('selectionchange', (event) => { this.refreshToolbar(); }); + } + + refreshToolbar() { + if (this.allSelectedImportant()) { + this.importantOver.innerText='Mało ważne akordy'; + } else { + this.importantOver.innerText='Kluczowe akordy'; + } + if (this.allSelectedInstrumental()) { + this.buttonInstr.innerText='Wers liryczny'; + } else { + this.buttonInstr.innerText='Wers instrumentalny'; + } + this.buttonBis.disabled = document.getSelection().rangeCount==0; } focusout(e, songbook) { @@ -241,7 +272,7 @@ export default class SongBody extends HTMLElement { } keyDown(e,songBook) { - console.log("keydown...",e, document.getSelection()); + //console.log("keydown...",e, document.getSelection()); if (e.key == '`' && canInsertChord()) { if (insertChordHere("")) { e.preventDefault(); @@ -318,7 +349,7 @@ export default class SongBody extends HTMLElement { } beforeInput(e, songbody) { - console.log("beforeInput", e); + //console.log("beforeInput", e); if (e.inputType == "deleteContentBackward" && e.target == songbody) { if (document.getSelection().rangeCount == 1 @@ -455,7 +486,7 @@ export default class SongBody extends HTMLElement { } input(e, songbody) { - console.log("Oninput", e); +// console.log("Oninput", e); if (e.target == songbody) { Sanitize(songbody); // Avoid keeping cursor before the artifical space: @@ -479,14 +510,16 @@ export default class SongBody extends HTMLElement { paste(e, songbody) { console.log(e); console.log("types", e.clipboardData.types); - let p = document.createElement("span"); - let data = e.clipboardData.getData("text/html"); - console.log(data); - p.innerHTML = data; - getSelection().getRangeAt(0).deleteContents(); - getSelection().getRangeAt(0).insertNode(p); - e.preventDefault(); - Sanitize(songbody); + if (e.target.nodeName === 'SONG-ROW' || e.target.nodeName === 'SONG-BODY') { + let p = document.createElement("span"); + let data = e.clipboardData.getData("text/html"); + console.log(data); + p.innerHTML = data; + getSelection().getRangeAt(0).deleteContents(); + getSelection().getRangeAt(0).insertNode(p); + e.preventDefault(); + Sanitize(songbody); + } } attributeChangedCallback() { diff --git a/editor/songbook.js b/editor/songbook.js index 2ed2724a..60c55ba7 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -22,6 +22,19 @@ export class SongEditor extends HTMLElement { template.innerHTML = `
+ +
+ + + + +
+ +
+ + +
+

Metryka

-
-
Pliki:
- - - -
-
Formatowanie: - - - -
-
-
- -

Wygenerowane

+
+ +
+
+ Ostatni zapisany/wyesportowany: +

+
`; const shadow = this.attachShadow({ mode: "closed" }); @@ -131,26 +136,41 @@ export class SongEditor extends HTMLElement { this.shadow = shadow; this.buttonNew=shadow.getElementById("buttonNew"); - this.buttonBis=shadow.getElementById("buttonBis"); - this.importantOver=shadow.getElementById("importantOver"); - this.buttonInstr=shadow.getElementById("buttonInstr"); this.buttonSave=shadow.getElementById("buttonSave"); - this.buttonSave2=shadow.getElementById("buttonSave2"); this.open=shadow.getElementById("open"); + this.openCustom=shadow.getElementById("openCustom"); - this.buttonBis.addEventListener("click", (e) => this.body().wrapBis()); - this.importantOver.addEventListener("click", (e) => { this.body().markImportantOver(); this.refreshToolbar(); }); - this.buttonInstr.addEventListener("click", (e) => { this.body().toggleInstrumental(); this.refreshToolbar(); }); + this.openCustom.addEventListener("click", () => this.open.click()); this.buttonSave.addEventListener("click", () => Save(this)); - this.buttonSave2.addEventListener("click", () => Save(this)); this.open.addEventListener("change", (e) => this.LoadFile(e)); - this.buttonNew.addEventListener("click", (e) => this.New(e)); + this.buttonNew.addEventListener("click", (e) => { + if (confirm("Czy chcesz przywrócić wartości początkowe we wszystkich polach ?")) { + this.New(e) }}); - document.addEventListener('selectionchange', (event) => { this.refreshToolbar(); }); + for (let attr of attrs) { + this.mapAttribute(attr); + } + + for (let button of shadow.querySelectorAll(".buttonCommit")) { + console.log("registering button", button); + const doubleClickEvent = new CustomEvent("git:commit", { + bubbles: true, + cancelable: true, + composed: true, + }); + button.addEventListener("click", () => {this.dispatchEvent(doubleClickEvent)}); + } - for (let i=0; i this.dispatchEvent(doubleClickEvent)); } + + this.attributeChangedCallback("git"); } mapAttribute(attr) { @@ -177,14 +197,21 @@ export class SongEditor extends HTMLElement { } attributeChangedCallback(attr) { + if (attr=='git') { + for (let d of this.shadow.querySelectorAll(".gitToolbar")) { + d.hidden = this.getAttribute('git') != 'true'; + } + return + } + let a = this.shadow.getElementById(attr); - if (a.id === "done_chords") { + if (a && a.id === "done_chords") { a.checked = this.hasAttribute("done_chords"); this.shadow.getElementById("done_chords_value").value = a.checked ? this.getAttribute("done_chords") : ""; - } else if (a.nodeName=='INPUT' && a.type==='checkbox') { + } else if (a && a.nodeName=='INPUT' && a.type==='checkbox') { a.checked=this.getAttribute(attr)==="true"; - } else { + } else if (a) { a.value=this.getAttribute(attr); } } @@ -193,6 +220,10 @@ export class SongEditor extends HTMLElement { return this.getElementsByTagName("song-body")[0]; } + openFileClick() { + return this.shadowRoot.getElementById('open').click(); + } + New() { this.innerHTML=` @@ -301,20 +332,6 @@ export class SongEditor extends HTMLElement { } } - refreshToolbar() { - if (this.body().allSelectedImportant()) { - this.importantOver.innerText='Mało ważne akordy'; - } else { - this.importantOver.innerText='Kluczowe akordy'; - } - if (this.body().allSelectedInstrumental()) { - this.buttonInstr.innerText='Wers liryczny'; - } else { - this.buttonInstr.innerText='Wers instrumentalny'; - } - this.buttonBis.disabled = document.getSelection().rangeCount==0; - } - connectedCallback() { if (!this.body()) { this.New(); @@ -322,7 +339,7 @@ export class SongEditor extends HTMLElement { } static get observedAttributes() { - return attrs; + return attrs.concat(["git"]); } } From 3abf4c7e36eab4e4b067999319580c2e81bb3aff Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Mon, 24 Oct 2022 16:52:18 +0200 Subject: [PATCH 076/664] Added Todo --- editor/index.html | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/editor/index.html b/editor/index.html index 33d80a0f..1e969623 100644 --- a/editor/index.html +++ b/editor/index.html @@ -75,6 +75,10 @@ + TODO: URL'e na górze... róże...
+ Sprawdzanie, czy piosenka jest oparta o spacje, czy taby
+ Usuwanie pustychs spacji przy zapisie... +

Edytor piosenek

From 67b74199aadb46744e6e8f2074539ba7314a8287 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 25 Oct 2022 14:09:31 +0200 Subject: [PATCH 077/664] New paths supports in the editor. --- editor/index.html | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/editor/index.html b/editor/index.html index 1e969623..95b8c38a 100644 --- a/editor/index.html +++ b/editor/index.html @@ -8,12 +8,17 @@ - TODO: URL'e na górze... róże...
+
+ Sprawdzanie, czy piosenka jest oparta o spacje, czy taby
- Usuwanie pustychs spacji przy zapisie... + Usuwanie pustych spacji przy zapisie...

Edytor piosenek

From 3d7b3db4817716029c4f3272e09f6657003ea76f Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 26 Oct 2022 14:15:13 +0200 Subject: [PATCH 082/664] Bugs in html wrapper fixed. --- editor/index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/editor/index.html b/editor/index.html index fe2e32f9..8197a8dd 100644 --- a/editor/index.html +++ b/editor/index.html @@ -42,6 +42,7 @@ } function parseParams() { + const urlParams = new URLSearchParams(window.location.search); return { baseUrl: urlParams.get('baseUrl'), branch: urlParams.get('branch'), @@ -69,7 +70,7 @@ body: txt } const response = await fetch(`${baseUrl}/users/${user}/changes/${branch}/${file}?msg=${encodeURIComponent(msg)}`, config) - if (response.ok) {ś + if (response.ok) { return response } else { alert("Zapis się nie powiódł. Czy jesteś podlączony do internetu ?"); From 13137b43173793f44b2f79aff31bb775241e29c2 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 26 Oct 2022 14:16:01 +0200 Subject: [PATCH 083/664] Remove whole chord on drag and drop. --- editor/ch.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/editor/ch.js b/editor/ch.js index 306a6523..ac81d720 100644 --- a/editor/ch.js +++ b/editor/ch.js @@ -1,3 +1,5 @@ +import {findAncestor} from "./utils"; + const predefinedChords = ["A", "A2", "A4", "A7", "A7+", "A7/4", "A7/6", "Ais", "B", "C", "C0", "C7", "C7+", "C9", "C9/5", "Cis", "Cis0", "D", "D2", "D4", "D7", "D7+", "Dis", "E", "E0", "E5+", "E7", "E7/4", "F", "F0", "F7", "F7+", @@ -50,9 +52,12 @@ export default class SongCh extends HTMLElement { } this.cho.ondragend = (event) => { + console.log("dragend", event); event.target.opacity = '1.0'; if (this.getSongBody().dropped && event.dataTransfer.dropEffect == 'move') { - event.target.remove(); + const ch = findAncestor(event.target, "song-ch"); + console.log("dragend removing", ch ); + ch.remove(); } } From 9de7751adc3749ec65389268653035d72a97a291 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 26 Oct 2022 14:21:33 +0200 Subject: [PATCH 084/664] - Removing trailing spaces on export. - Proper drag & drop of chord behavior. --- editor/ch.js | 8 +++----- editor/save.js | 8 ++++++-- editor/save.xslt | 4 ++++ editor/songbook.js | 2 ++ 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/editor/ch.js b/editor/ch.js index ac81d720..2e1d4a14 100644 --- a/editor/ch.js +++ b/editor/ch.js @@ -1,5 +1,3 @@ -import {findAncestor} from "./utils"; - const predefinedChords = ["A", "A2", "A4", "A7", "A7+", "A7/4", "A7/6", "Ais", "B", "C", "C0", "C7", "C7+", "C9", "C9/5", "Cis", "Cis0", "D", "D2", "D4", "D7", "D7+", "Dis", "E", "E0", "E5+", "E7", "E7/4", "F", "F0", "F7", "F7+", @@ -55,9 +53,9 @@ export default class SongCh extends HTMLElement { console.log("dragend", event); event.target.opacity = '1.0'; if (this.getSongBody().dropped && event.dataTransfer.dropEffect == 'move') { - const ch = findAncestor(event.target, "song-ch"); - console.log("dragend removing", ch ); - ch.remove(); + // const ch = findAncestor(event.target, "SONG-CH"); + // console.log("dragend removing", ch ); + this.remove(); } } diff --git a/editor/save.js b/editor/save.js index 2bdb07ea..dfda3fb1 100644 --- a/editor/save.js +++ b/editor/save.js @@ -20,8 +20,12 @@ export function Serialize(songeditor) { let txt=new XMLSerializer().serializeToString(resultDocument);; txt = txt.replaceAll("?>\n + + + + diff --git a/editor/songbook.js b/editor/songbook.js index 60c55ba7..c2b5d7f0 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -277,6 +277,8 @@ export class SongEditor extends HTMLElement { this.readAttributeList(song, "verificators", "verificator"); this.readAttribute(song, "todo", "todo"); + + //this.tabs = xmlContent.includes("\t"); } Serialize() { From 69ffa6d9d8723d91d7266c3dbc008af475617e17 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 26 Oct 2022 14:29:29 +0200 Subject: [PATCH 085/664] Editor: Recognizes when input file contains tabs vs. spaces to preserve on save. --- editor/ch.js | 2 -- editor/index.html | 4 ---- editor/songbook.js | 2 +- 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/editor/ch.js b/editor/ch.js index 2e1d4a14..68d28307 100644 --- a/editor/ch.js +++ b/editor/ch.js @@ -53,8 +53,6 @@ export default class SongCh extends HTMLElement { console.log("dragend", event); event.target.opacity = '1.0'; if (this.getSongBody().dropped && event.dataTransfer.dropEffect == 'move') { - // const ch = findAncestor(event.target, "SONG-CH"); - // console.log("dragend removing", ch ); this.remove(); } } diff --git a/editor/index.html b/editor/index.html index 8197a8dd..c62d27d1 100644 --- a/editor/index.html +++ b/editor/index.html @@ -93,10 +93,6 @@
- - Sprawdzanie, czy piosenka jest oparta o spacje, czy taby
- Usuwanie pustych spacji przy zapisie... -

Edytor piosenek

diff --git a/editor/songbook.js b/editor/songbook.js index c2b5d7f0..e6677493 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -278,7 +278,7 @@ export class SongEditor extends HTMLElement { this.readAttribute(song, "todo", "todo"); - //this.tabs = xmlContent.includes("\t"); + this.tabs = xmlContent.includes("\t"); } Serialize() { From f8ba5fec48e4b256d6294fdbe348a5edfb587e78 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Thu, 27 Oct 2022 16:06:16 +0200 Subject: [PATCH 086/664] Fix loading of the 'choruses'. --- editor/sanitize.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/editor/sanitize.js b/editor/sanitize.js index 94a8fc97..dfbbcc84 100644 --- a/editor/sanitize.js +++ b/editor/sanitize.js @@ -22,7 +22,7 @@ function setRandomId(node) { function createVerse(type="verse", blocknb=null) { let verse = document.createElement("song-verse"); - if (!type || type!='verse' || type!='chorus') { + if (!type || type!='chorus') { type = "verse" } verse.setAttribute("type", type); @@ -278,8 +278,7 @@ export function Sanitize(body) { let newVerse = songVerse.cloneNode(false); songVerse.id=''; setRandomId(songVerse); - songVerse.parentNode.insertBefore( - newVerse, songVerse.nextSibling); + songVerse.parentNode.insertBefore(newVerse, songVerse.nextSibling); let newRows = document.createElement("SONG-ROWS"); newVerse.appendChild(newRows); console.log(row, row.nextSibling); From b62ced7614a69f9d5870a6624d23ef9375b7ba8c Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Thu, 27 Oct 2022 16:12:05 +0200 Subject: [PATCH 087/664] Style edits. --- editor/song.css | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/editor/song.css b/editor/song.css index 1ae5fb4e..fb3b0898 100644 --- a/editor/song.css +++ b/editor/song.css @@ -92,7 +92,7 @@ div.songbody{ div.metadata { display: grid; - grid-template-columns: max-content max-content; + grid-template-columns: max-content max-content max-content; grid-gap: 5px; } @@ -115,7 +115,7 @@ div.metadata label:after { div.metadata textarea { height: 5em; - min-width: 10em; + min-width: 20em; } div.generated { @@ -132,6 +132,7 @@ input#title { grid-column: 2 / span 2; font-size: x-large; text-align: center; + min-width: 600px; } div.gitToolbar { From 4a22f3029318dd7872952c9f96e2a3ce03208a8c Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Thu, 27 Oct 2022 16:27:58 +0200 Subject: [PATCH 088/664] Added bottom navigation. --- editor/index.html | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/editor/index.html b/editor/index.html index c62d27d1..34f83d2f 100644 --- a/editor/index.html +++ b/editor/index.html @@ -32,12 +32,14 @@ songEditor.addEventListener("git:commitAndPublish", (e)=>commitAndPublish(e) ); const topNav = document.getElementById("topnav"); - if (baseUrl) { - topNav.innerHTML = `[Zmiany] [Piosenki]`; - topNav.hidden = false; - } else { - topNav.innerHTML = ''; - topNav.hidden = true; + for (const nav of [document.getElementById("topnav"), document.getElementById("bottomnav")]) { + if (baseUrl) { + nav.innerHTML = `[Zmiany] [Piosenki]`; + nav.hidden = false; + } else { + nav.innerHTML = ''; + nav.hidden = true; + } } } @@ -59,6 +61,9 @@ console.log(txt); if (branch) { const msg = prompt("Wprowadź, proszę, krótki opis ostatnich zmian", "Poprawiono..."); + if (!msg) { + return; + } try { const config = { method: 'POST', @@ -95,5 +100,6 @@

Edytor piosenek

+
From 4d5363e15f10f4e210b50c422c2526a94c825028 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Thu, 27 Oct 2022 23:02:00 +0200 Subject: [PATCH 089/664] Eksportuj zamiast Exportuj. --- editor/songbook.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editor/songbook.js b/editor/songbook.js index e6677493..fd115330 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -27,7 +27,7 @@ export class SongEditor extends HTMLElement { - +
From 29c7c829c303bc54385b5c099e5459c1ed6e31d3 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sat, 5 Nov 2022 20:08:01 +0100 Subject: [PATCH 090/664] Split paths config into 2. --- editor-github/common.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/editor-github/common.js b/editor-github/common.js index 6d4e4d0f..27a7991d 100644 --- a/editor-github/common.js +++ b/editor-github/common.js @@ -12,7 +12,10 @@ export const OAUTH_CLIENT_ID = process.env.OAUTH_CLIENT_ID; export const BASE_URL = process.env.BASE_URL; export const EDITOR_DOMAIN = process.env.EDITOR_DOMAIN; -export const EDITOR_BASE_URL = EDITOR_DOMAIN + '/songbook/editor' +export const EDITOR_PATH = process.env.EDITOR_PATH; + + +export const EDITOR_BASE_URL = EDITOR_DOMAIN + EDITOR_PATH // export const EDITOR_DOMAIN = 'http://localhost:63342' // export const EDITOR_BASE_URL = EDITOR_DOMAIN + '/editor/songbook' From 2746a86abcd8aa50f6a7287f6357d78a3fb3fec8 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 18 Oct 2022 21:10:07 +0200 Subject: [PATCH 091/664] Prepere editor for remote file loading and saving (&load=...&commit=... flag that accepts URLs). --- editor/index.html | 47 +++++++++++++++++++++++- editor/save.js | 9 +++-- editor/songbook.js | 90 +++++++++++++++++++++++++--------------------- 3 files changed, 102 insertions(+), 44 deletions(-) diff --git a/editor/index.html b/editor/index.html index 9e2de6b0..f9a4d7e4 100644 --- a/editor/index.html +++ b/editor/index.html @@ -5,8 +5,51 @@ + + - +

Edytor piosenek

@@ -14,6 +57,8 @@

Edytor piosenek

Wygenerowany opis piosenki:
+ + diff --git a/editor/save.js b/editor/save.js index 1dc16e5b..0d46116c 100644 --- a/editor/save.js +++ b/editor/save.js @@ -1,6 +1,6 @@ import {loadXMLDoc} from './utils.js'; -export function Save(songeditor) { +export function Serialize(songeditor) { let xsltProcessor = new XSLTProcessor() let xslt = loadXMLDoc('./save.xslt'); console.log(xslt); @@ -19,7 +19,12 @@ export function Save(songeditor) { console.log(resultDocument); let txt=new XMLSerializer().serializeToString(resultDocument);; - document.getElementById("output").innerText=txt.replaceAll("?>\n\n { this.body().toggleInstrumental(); this.refreshToolbar(); }); this.buttonSave.addEventListener("click", () => Save(this)); this.buttonSave2.addEventListener("click", () => Save(this)); - this.open.addEventListener("change", (e) => this.Load(e)); + this.open.addEventListener("change", (e) => this.LoadFile(e)); this.buttonNew.addEventListener("click", (e) => this.New(e)); document.addEventListener('selectionchange', (event) => { this.refreshToolbar(); }); @@ -204,51 +204,59 @@ export class SongEditor extends HTMLElement { this.body().selectAll(); } - Load(e) { + Load(xmlContent) { + let parser = new DOMParser(); + let xmlDoc = parser.parseFromString(xmlContent.replaceAll(" style=", " type="), "text/xml"); + let z=xmlDoc.getElementsByTagName("lyric"); + removeAllChildren(this); + let tmp= document.createElement("div"); + tmp.appendChild(z[0]); + Sanitize(tmp); + this.appendChild(tmp.childNodes[0]); + + let song=xmlDoc.getElementsByTagName("song")[0]; + + this.setAttribute("title", song.getAttribute("title")); + this.readAttribute(song, "text_author", "text_author"); + this.readAttribute(song, "text_author_type", "text_author", "type"); + this.readAttribute(song, "artist", "artist"); + this.readAttribute(song, "artist_type", "artist", "type"); + + this.readAttribute(song, "alias", "alias"); + this.readAttribute(song, "original_title", "original_title"); + this.readAttribute(song, "translator", "translator"); + this.readAttribute(song, "album", "album"); + this.readAttribute(song, "composer", "composer"); + this.readAttribute(song, "composer_type", "composer", "type"); + this.readAttribute(song, "music_source", "music_source"); + + this.readAttribute(song, "metre", "music","metre"); + this.readAttribute(song, "guitar_barre", "guitar", "barre"); + this.readAttribute(song, "genre", "genre"); + this.readAttribute(song, "comment", "comment"); + + this.readAttributeDone(song, "done_text", "text"); + this.readAttributeDone(song, "done_authors", "authors"); + this.readAttributeDone(song, "done_chords", "chords"); + + this.readAttributeList(song, "keywords", "keyword"); + this.readAttributeList(song, "verificators", "verificator"); + + this.readAttribute(song, "todo", "todo"); + } + + Serialize() { + return Serialize(this); + } + + LoadFile(e) { console.log("LOADING", e); let parser = new DOMParser(); // setting up the reader var reader = new FileReader(); reader.addEventListener('load', (event) => { - let parser = new DOMParser(); - let xmlDoc = parser.parseFromString(event.target.result.replaceAll(" style=", " type="), "text/xml"); - let z=xmlDoc.getElementsByTagName("lyric"); - removeAllChildren(this); - let tmp= document.createElement("div"); - tmp.appendChild(z[0]); - Sanitize(tmp); - this.appendChild(tmp.childNodes[0]); - - let song=xmlDoc.getElementsByTagName("song")[0]; - - this.setAttribute("title", song.getAttribute("title")); - this.readAttribute(song, "text_author", "text_author"); - this.readAttribute(song, "text_author_type", "text_author", "type"); - this.readAttribute(song, "artist", "artist"); - this.readAttribute(song, "artist_type", "artist", "type"); - - this.readAttribute(song, "alias", "alias"); - this.readAttribute(song, "original_title", "original_title"); - this.readAttribute(song, "translator", "translator"); - this.readAttribute(song, "album", "album"); - this.readAttribute(song, "composer", "composer"); - this.readAttribute(song, "composer_type", "composer", "type"); - this.readAttribute(song, "music_source", "music_source"); - - this.readAttribute(song, "metre", "music","metre"); - this.readAttribute(song, "guitar_barre", "guitar", "barre"); - this.readAttribute(song, "genre", "genre"); - this.readAttribute(song, "comment", "comment"); - - this.readAttributeDone(song, "done_text", "text"); - this.readAttributeDone(song, "done_authors", "authors"); - this.readAttributeDone(song, "done_chords", "chords"); - - this.readAttributeList(song, "keywords", "keyword"); - this.readAttributeList(song, "verificators", "verificator"); - - this.readAttribute(song, "todo", "todo"); + this.Load(event.target.result);; }); reader.readAsText(this.open.files[0]); } From 93859153c31a0fa56f866a1a44cc8cce06f65ad6 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 19 Oct 2022 10:46:08 +0200 Subject: [PATCH 092/664] Commit should send CORS credentials (cookies): credentials: 'include' --- editor/index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/editor/index.html b/editor/index.html index f9a4d7e4..c9acbf30 100644 --- a/editor/index.html +++ b/editor/index.html @@ -28,6 +28,7 @@ try { const config = { method: 'POST', + credentials: 'include', headers: { 'Accept': 'application/json', 'Content-Type': 'text/xml', From cda11793d4f7215f58bcbbde7121181f397254f1 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 19 Oct 2022 20:14:39 +0200 Subject: [PATCH 093/664] comminOnLoad support, handling on not-existing load file, formatting on save. --- editor/index.html | 12 +++++++++--- editor/save.js | 6 ++++-- editor/songbook.js | 3 +++ 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/editor/index.html b/editor/index.html index c9acbf30..1f1d4d71 100644 --- a/editor/index.html +++ b/editor/index.html @@ -10,15 +10,21 @@ const urlParams = new URLSearchParams(window.location.search); const loadUrl = urlParams.get('load'); const commitUrl = urlParams.get('commit'); + const commitOnLoad = urlParams.get('commitOnLoad'); if (loadUrl) { fetch(loadUrl) .then((response) => response.text()) - .then((txt) => document.getElementsByTagName("song-editor")[0].Load(txt)); + .then((txt) => { + let songEditor = document.getElementsByTagName("song-editor")[0]; + songEditor.Load(txt); + if (commitOnLoad) { + commit(); + } + }) } document.getElementById("saveToGithub").hidden=(commitUrl==null); } - -

Edytor piosenek

- -
- Wygenerowany opis piosenki: -
-
- - - - - diff --git a/editor/sanitize.js b/editor/sanitize.js index 3b92855e..94a8fc97 100644 --- a/editor/sanitize.js +++ b/editor/sanitize.js @@ -250,7 +250,6 @@ function isEmptyRow(el) { } export function Sanitize(body) { - console.log("Sanitizing..."); // let r=document.getSelection().rangeCount>0 ? document.getSelection().getRangeAt(0).cloneRange() : null; // // As sanitization modifies the text (e.g replace all ' ' -> nbsp), we // // need to persist where is the selection, to be able to restore it. @@ -258,7 +257,6 @@ export function Sanitize(body) { //console.log("Stored", r); if (!lightTraverse(body)) { console.log("Full fix..."); - console.log("before fix: ", body.outerHTML); traverse(body, body); console.log("after fix: ", body.outerHTML); } diff --git a/editor/save.js b/editor/save.js index 7e97b7c7..2bdb07ea 100644 --- a/editor/save.js +++ b/editor/save.js @@ -19,26 +19,29 @@ export function Serialize(songeditor) { console.log(resultDocument); let txt=new XMLSerializer().serializeToString(resultDocument);; - return txt.replaceAll("?>\n\n +
+
Formatowanie: + + + +
+
`; const shadow = this.attachShadow({ mode: "closed" }); @@ -83,6 +90,30 @@ export default class SongBody extends HTMLElement { this.body.addEventListener("drop", (e) => {this.drop(e, this); }); // this.body.addEventListener("keydown", (e) => { this.keyDown(e, this); }); this.body.addEventListener("focusout", (e) => {this.focusout(e, this); }); + + this.buttonBis=shadow.getElementById("buttonBis"); + this.importantOver=shadow.getElementById("importantOver"); + this.buttonInstr=shadow.getElementById("buttonInstr"); + + this.buttonBis.addEventListener("click", (e) => this.wrapBis()); + this.importantOver.addEventListener("click", (e) => { this.markImportantOver(); this.refreshToolbar(); }); + this.buttonInstr.addEventListener("click", (e) => { this.toggleInstrumental(); this.refreshToolbar(); }); + + document.addEventListener('selectionchange', (event) => { this.refreshToolbar(); }); + } + + refreshToolbar() { + if (this.allSelectedImportant()) { + this.importantOver.innerText='Mało ważne akordy'; + } else { + this.importantOver.innerText='Kluczowe akordy'; + } + if (this.allSelectedInstrumental()) { + this.buttonInstr.innerText='Wers liryczny'; + } else { + this.buttonInstr.innerText='Wers instrumentalny'; + } + this.buttonBis.disabled = document.getSelection().rangeCount==0; } focusout(e, songbook) { @@ -241,7 +272,7 @@ export default class SongBody extends HTMLElement { } keyDown(e,songBook) { - console.log("keydown...",e, document.getSelection()); + //console.log("keydown...",e, document.getSelection()); if (e.key == '`' && canInsertChord()) { if (insertChordHere("")) { e.preventDefault(); @@ -318,7 +349,7 @@ export default class SongBody extends HTMLElement { } beforeInput(e, songbody) { - console.log("beforeInput", e); + //console.log("beforeInput", e); if (e.inputType == "deleteContentBackward" && e.target == songbody) { if (document.getSelection().rangeCount == 1 @@ -455,7 +486,7 @@ export default class SongBody extends HTMLElement { } input(e, songbody) { - console.log("Oninput", e); +// console.log("Oninput", e); if (e.target == songbody) { Sanitize(songbody); // Avoid keeping cursor before the artifical space: @@ -479,14 +510,16 @@ export default class SongBody extends HTMLElement { paste(e, songbody) { console.log(e); console.log("types", e.clipboardData.types); - let p = document.createElement("span"); - let data = e.clipboardData.getData("text/html"); - console.log(data); - p.innerHTML = data; - getSelection().getRangeAt(0).deleteContents(); - getSelection().getRangeAt(0).insertNode(p); - e.preventDefault(); - Sanitize(songbody); + if (e.target.nodeName === 'SONG-ROW' || e.target.nodeName === 'SONG-BODY') { + let p = document.createElement("span"); + let data = e.clipboardData.getData("text/html"); + console.log(data); + p.innerHTML = data; + getSelection().getRangeAt(0).deleteContents(); + getSelection().getRangeAt(0).insertNode(p); + e.preventDefault(); + Sanitize(songbody); + } } attributeChangedCallback() { diff --git a/editor/songbook.js b/editor/songbook.js index 2ed2724a..60c55ba7 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -22,6 +22,19 @@ export class SongEditor extends HTMLElement { template.innerHTML = `
+ +
+ + + + +
+ +
+ + +
+

Metryka

-
-
Pliki:
- - - -
-
Formatowanie: - - - -
-
-
- -

Wygenerowane

+
+ +
+
+ Ostatni zapisany/wyesportowany: +

+
`; const shadow = this.attachShadow({ mode: "closed" }); @@ -131,26 +136,41 @@ export class SongEditor extends HTMLElement { this.shadow = shadow; this.buttonNew=shadow.getElementById("buttonNew"); - this.buttonBis=shadow.getElementById("buttonBis"); - this.importantOver=shadow.getElementById("importantOver"); - this.buttonInstr=shadow.getElementById("buttonInstr"); this.buttonSave=shadow.getElementById("buttonSave"); - this.buttonSave2=shadow.getElementById("buttonSave2"); this.open=shadow.getElementById("open"); + this.openCustom=shadow.getElementById("openCustom"); - this.buttonBis.addEventListener("click", (e) => this.body().wrapBis()); - this.importantOver.addEventListener("click", (e) => { this.body().markImportantOver(); this.refreshToolbar(); }); - this.buttonInstr.addEventListener("click", (e) => { this.body().toggleInstrumental(); this.refreshToolbar(); }); + this.openCustom.addEventListener("click", () => this.open.click()); this.buttonSave.addEventListener("click", () => Save(this)); - this.buttonSave2.addEventListener("click", () => Save(this)); this.open.addEventListener("change", (e) => this.LoadFile(e)); - this.buttonNew.addEventListener("click", (e) => this.New(e)); + this.buttonNew.addEventListener("click", (e) => { + if (confirm("Czy chcesz przywrócić wartości początkowe we wszystkich polach ?")) { + this.New(e) }}); - document.addEventListener('selectionchange', (event) => { this.refreshToolbar(); }); + for (let attr of attrs) { + this.mapAttribute(attr); + } + + for (let button of shadow.querySelectorAll(".buttonCommit")) { + console.log("registering button", button); + const doubleClickEvent = new CustomEvent("git:commit", { + bubbles: true, + cancelable: true, + composed: true, + }); + button.addEventListener("click", () => {this.dispatchEvent(doubleClickEvent)}); + } - for (let i=0; i this.dispatchEvent(doubleClickEvent)); } + + this.attributeChangedCallback("git"); } mapAttribute(attr) { @@ -177,14 +197,21 @@ export class SongEditor extends HTMLElement { } attributeChangedCallback(attr) { + if (attr=='git') { + for (let d of this.shadow.querySelectorAll(".gitToolbar")) { + d.hidden = this.getAttribute('git') != 'true'; + } + return + } + let a = this.shadow.getElementById(attr); - if (a.id === "done_chords") { + if (a && a.id === "done_chords") { a.checked = this.hasAttribute("done_chords"); this.shadow.getElementById("done_chords_value").value = a.checked ? this.getAttribute("done_chords") : ""; - } else if (a.nodeName=='INPUT' && a.type==='checkbox') { + } else if (a && a.nodeName=='INPUT' && a.type==='checkbox') { a.checked=this.getAttribute(attr)==="true"; - } else { + } else if (a) { a.value=this.getAttribute(attr); } } @@ -193,6 +220,10 @@ export class SongEditor extends HTMLElement { return this.getElementsByTagName("song-body")[0]; } + openFileClick() { + return this.shadowRoot.getElementById('open').click(); + } + New() { this.innerHTML=` @@ -301,20 +332,6 @@ export class SongEditor extends HTMLElement { } } - refreshToolbar() { - if (this.body().allSelectedImportant()) { - this.importantOver.innerText='Mało ważne akordy'; - } else { - this.importantOver.innerText='Kluczowe akordy'; - } - if (this.body().allSelectedInstrumental()) { - this.buttonInstr.innerText='Wers liryczny'; - } else { - this.buttonInstr.innerText='Wers instrumentalny'; - } - this.buttonBis.disabled = document.getSelection().rangeCount==0; - } - connectedCallback() { if (!this.body()) { this.New(); @@ -322,7 +339,7 @@ export class SongEditor extends HTMLElement { } static get observedAttributes() { - return attrs; + return attrs.concat(["git"]); } } From bfa1e94debb53f39eb8a0dc6b39c73f90ce3b777 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Mon, 24 Oct 2022 16:52:18 +0200 Subject: [PATCH 095/664] Added Todo --- editor/index.html | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/editor/index.html b/editor/index.html index 33d80a0f..1e969623 100644 --- a/editor/index.html +++ b/editor/index.html @@ -75,6 +75,10 @@ + TODO: URL'e na górze... róże...
+ Sprawdzanie, czy piosenka jest oparta o spacje, czy taby
+ Usuwanie pustychs spacji przy zapisie... +

Edytor piosenek

From 1bab4f60c1a655d879e3dd6882e2fa362c77c804 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 25 Oct 2022 14:09:31 +0200 Subject: [PATCH 096/664] New paths supports in the editor. --- editor/index.html | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/editor/index.html b/editor/index.html index 1e969623..95b8c38a 100644 --- a/editor/index.html +++ b/editor/index.html @@ -8,12 +8,17 @@ - TODO: URL'e na górze... róże...
+
+ Sprawdzanie, czy piosenka jest oparta o spacje, czy taby
- Usuwanie pustychs spacji przy zapisie... + Usuwanie pustych spacji przy zapisie...

Edytor piosenek

From ec54eb064fa128bb7be152cd35f58cfdbe40f808 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 26 Oct 2022 14:15:13 +0200 Subject: [PATCH 101/664] Bugs in html wrapper fixed. --- editor/index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/editor/index.html b/editor/index.html index fe2e32f9..8197a8dd 100644 --- a/editor/index.html +++ b/editor/index.html @@ -42,6 +42,7 @@ } function parseParams() { + const urlParams = new URLSearchParams(window.location.search); return { baseUrl: urlParams.get('baseUrl'), branch: urlParams.get('branch'), @@ -69,7 +70,7 @@ body: txt } const response = await fetch(`${baseUrl}/users/${user}/changes/${branch}/${file}?msg=${encodeURIComponent(msg)}`, config) - if (response.ok) {ś + if (response.ok) { return response } else { alert("Zapis się nie powiódł. Czy jesteś podlączony do internetu ?"); From 562cae76946e498c94d8fa78c8cd69f24c624550 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 26 Oct 2022 14:16:01 +0200 Subject: [PATCH 102/664] Remove whole chord on drag and drop. --- editor/ch.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/editor/ch.js b/editor/ch.js index 306a6523..ac81d720 100644 --- a/editor/ch.js +++ b/editor/ch.js @@ -1,3 +1,5 @@ +import {findAncestor} from "./utils"; + const predefinedChords = ["A", "A2", "A4", "A7", "A7+", "A7/4", "A7/6", "Ais", "B", "C", "C0", "C7", "C7+", "C9", "C9/5", "Cis", "Cis0", "D", "D2", "D4", "D7", "D7+", "Dis", "E", "E0", "E5+", "E7", "E7/4", "F", "F0", "F7", "F7+", @@ -50,9 +52,12 @@ export default class SongCh extends HTMLElement { } this.cho.ondragend = (event) => { + console.log("dragend", event); event.target.opacity = '1.0'; if (this.getSongBody().dropped && event.dataTransfer.dropEffect == 'move') { - event.target.remove(); + const ch = findAncestor(event.target, "song-ch"); + console.log("dragend removing", ch ); + ch.remove(); } } From dbbc52df82e06805ed965b29692d44c1d8e95fd3 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 26 Oct 2022 14:21:33 +0200 Subject: [PATCH 103/664] - Removing trailing spaces on export. - Proper drag & drop of chord behavior. --- editor/ch.js | 8 +++----- editor/save.js | 8 ++++++-- editor/save.xslt | 4 ++++ editor/songbook.js | 2 ++ 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/editor/ch.js b/editor/ch.js index ac81d720..2e1d4a14 100644 --- a/editor/ch.js +++ b/editor/ch.js @@ -1,5 +1,3 @@ -import {findAncestor} from "./utils"; - const predefinedChords = ["A", "A2", "A4", "A7", "A7+", "A7/4", "A7/6", "Ais", "B", "C", "C0", "C7", "C7+", "C9", "C9/5", "Cis", "Cis0", "D", "D2", "D4", "D7", "D7+", "Dis", "E", "E0", "E5+", "E7", "E7/4", "F", "F0", "F7", "F7+", @@ -55,9 +53,9 @@ export default class SongCh extends HTMLElement { console.log("dragend", event); event.target.opacity = '1.0'; if (this.getSongBody().dropped && event.dataTransfer.dropEffect == 'move') { - const ch = findAncestor(event.target, "song-ch"); - console.log("dragend removing", ch ); - ch.remove(); + // const ch = findAncestor(event.target, "SONG-CH"); + // console.log("dragend removing", ch ); + this.remove(); } } diff --git a/editor/save.js b/editor/save.js index 2bdb07ea..dfda3fb1 100644 --- a/editor/save.js +++ b/editor/save.js @@ -20,8 +20,12 @@ export function Serialize(songeditor) { let txt=new XMLSerializer().serializeToString(resultDocument);; txt = txt.replaceAll("?>\n + + + + diff --git a/editor/songbook.js b/editor/songbook.js index 60c55ba7..c2b5d7f0 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -277,6 +277,8 @@ export class SongEditor extends HTMLElement { this.readAttributeList(song, "verificators", "verificator"); this.readAttribute(song, "todo", "todo"); + + //this.tabs = xmlContent.includes("\t"); } Serialize() { From 6a0663a503737a8e61a2d13725e39112bdc96161 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 26 Oct 2022 14:29:29 +0200 Subject: [PATCH 104/664] Editor: Recognizes when input file contains tabs vs. spaces to preserve on save. --- editor/ch.js | 2 -- editor/index.html | 4 ---- editor/songbook.js | 2 +- 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/editor/ch.js b/editor/ch.js index 2e1d4a14..68d28307 100644 --- a/editor/ch.js +++ b/editor/ch.js @@ -53,8 +53,6 @@ export default class SongCh extends HTMLElement { console.log("dragend", event); event.target.opacity = '1.0'; if (this.getSongBody().dropped && event.dataTransfer.dropEffect == 'move') { - // const ch = findAncestor(event.target, "SONG-CH"); - // console.log("dragend removing", ch ); this.remove(); } } diff --git a/editor/index.html b/editor/index.html index 8197a8dd..c62d27d1 100644 --- a/editor/index.html +++ b/editor/index.html @@ -93,10 +93,6 @@
- - Sprawdzanie, czy piosenka jest oparta o spacje, czy taby
- Usuwanie pustych spacji przy zapisie... -

Edytor piosenek

diff --git a/editor/songbook.js b/editor/songbook.js index c2b5d7f0..e6677493 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -278,7 +278,7 @@ export class SongEditor extends HTMLElement { this.readAttribute(song, "todo", "todo"); - //this.tabs = xmlContent.includes("\t"); + this.tabs = xmlContent.includes("\t"); } Serialize() { From 24adc9a2f2c5bb473eb8905538b5c20a13fd6fa5 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sun, 6 Nov 2022 11:41:02 +0100 Subject: [PATCH 105/664] Running locally in a sepatate APP. --- editor-github/.gitignore | 3 ++- editor-github/common.js | 20 +++++++++----------- editor-github/local-env.txt | 7 ++++--- editor-github/package.json | 2 +- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/editor-github/.gitignore b/editor-github/.gitignore index 34940ff6..4d3dca5f 100644 --- a/editor-github/.gitignore +++ b/editor-github/.gitignore @@ -1,2 +1,3 @@ node_modules/ -google-cloud-functions-env.txt \ No newline at end of file +google-cloud-functions-env.txt +local-env-secret.txt \ No newline at end of file diff --git a/editor-github/common.js b/editor-github/common.js index 27a7991d..42591235 100644 --- a/editor-github/common.js +++ b/editor-github/common.js @@ -17,11 +17,6 @@ export const EDITOR_PATH = process.env.EDITOR_PATH; export const EDITOR_BASE_URL = EDITOR_DOMAIN + EDITOR_PATH -// export const EDITOR_DOMAIN = 'http://localhost:63342' -// export const EDITOR_BASE_URL = EDITOR_DOMAIN + '/editor/songbook' - -//http://localhost:63342/editor/songbook/index.html?_ijt=1gb48nh9nfnchi9pkou1v8tffm&_ij_reload=RELOAD_ON_SAVE - export const CHANGES_BASE_URL = BASE_URL + "/changes"; export const CONFIG_BASE_URL = BASE_URL + "/config"; @@ -162,12 +157,15 @@ export async function prepareBranch(octokit, user, branchName) { } export function editorLink(user, branchName, file, autocommit) { - return EDITOR_BASE_URL + '?' + - '&baseUrl=' + encodeURIComponent(BASE_URL) + - '&branch=' + encodeURIComponent(branchName) + - '&file=' + encodeURIComponent(file) + - '&user=' + encodeURIComponent(user) + - (autocommit?'&commitOnLoad=true':''); + let url = new URL(EDITOR_BASE_URL); + url.searchParams.set('baseUrl', BASE_URL); + url.searchParams.set('branch', branchName); + url.searchParams.set('file', file); + url.searchParams.set('user', user); + if (autocommit) { + url.searchParams.set('commitOnLoad', 'true'); + } + return url.href; } export function HandleError(e, res) { diff --git a/editor-github/local-env.txt b/editor-github/local-env.txt index 30a0576b..75681e43 100644 --- a/editor-github/local-env.txt +++ b/editor-github/local-env.txt @@ -1,3 +1,4 @@ -export OAUTH_CLIENT_ID="e1230ada4de9a5ce168b" -export BASE_URL="https://songbook-gh6-j72bw4qyaq-ew.a.run.app" -export EDITOR_DOMAIN="https://ptabor.github.io" \ No newline at end of file +export OAUTH_CLIENT_ID="c54f626adaeab3b0e0b6" +export BASE_URL="http://localhost:8080" +export EDITOR_DOMAIN="http://localhost:63342" +export EDITOR_PATH="/editor/index.html?_ijt=je9te0u58uiemb9bui6en9q484&_ij_reload=RELOAD_ON_SAVE" \ No newline at end of file diff --git a/editor-github/package.json b/editor-github/package.json index 609efdde..09285f5c 100644 --- a/editor-github/package.json +++ b/editor-github/package.json @@ -5,7 +5,7 @@ "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "start": "source ./local-env.txt && npx functions-framework --target=songbook" + "start": "source ./local-env.txt && source ./local-env-secret.txt && npx functions-framework --target=songbook" }, "keywords": [], "author": "", From edbe03e7856d6457a1ed3e1b856c711220f1c504 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sun, 6 Nov 2022 11:54:13 +0100 Subject: [PATCH 106/664] =?UTF-8?q?Dodano=20now=C4=85=20piosenk=C4=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- songs/Kaszubskie_noce.xml | 60 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 songs/Kaszubskie_noce.xml diff --git a/songs/Kaszubskie_noce.xml b/songs/Kaszubskie_noce.xml new file mode 100644 index 00000000..8b12631c --- /dev/null +++ b/songs/Kaszubskie_noce.xml @@ -0,0 +1,60 @@ + + + Tu szumi las... + Zbigniew Kowalczyk, Tomasz Krzepkowski, Dariusz Jagodziński + [https://www.zhpharcerki.org/organizacja_harcerek/egazetka_4/gazetka_4_piosenki_A.htm] + +Tekst piosenki pisany był etapami. Pierwsze dwie zwrotki i refren powstały podczas biwaku na Kaszubach. Napisane na stanicy Karpaty w październikowy wieczór, gdy drużyna ruszyła w teren patrolami a drużynowy miał natchnienie... Darek rzadko wtedy rozstawał się z gitarą. W trakcie krótkiej przerwy między roboczym zadaniem a wyprawą w teren powstała melodia. Melodia była gotowa, ale z tekstem nie wychodziło – było kilka pierwszych słów i pomysł na temat, czyli Kaszuby. Gdy wędrownicy wrócili z wyprawy drużynowy miał już tekst. Taki był początek. Trzecia zwrotka (w kolejności w jakiej powstawał tekst) została napisana latem następnego roku podczas obozu Szczepu Warszawa na terenie ‘przy tartaku’. Dh Tomek Krzepkowski był wtedy oboźnym podobozu wędrowników. Gdzie wraz z Darkiem znaleźli inspirację do napisania tekstu tego już nie wiem ;) Czwarta zwrotka ‘a gdy drużyna...’ powstała w późniejszych latach, w pewnym sensie jako przypomnienie, że nasze drogi się rozchodzą i coraz rzadziej mamy szansę, by spotkać się, porozmawiać, powspominać. Oczywiście po latach niektórzy próbowali dodać jakieś gesty, kołysanie fal, itp., co mija się z głębszym sensem piosenki i spłyca zawarte myśli. Dla ułatwienia zmieniano sobie także tonację, jednak Kaszubskie Noce prawidłowo brzmią jedynie w oryginalnej tonacji, czyli w E-dur. Napisałem, że początek i inspiracja to 7DHW, gdyż w tej drużynie wiele się działo i wiele piosenek zostało przez nią rozpropagowanych, no i powstała ta jedna własna. W składzie w jakim powstały Kaszubskie Noce drużyna działała od 1985 do 1989 roku. + +Hm Zbigniew Kowalczyk Drużynowy 7DHW w latach 1985-1988. + + Dariusz Jagodziński + 7 DH Wędrowników im. phm Alka Dawidowskiego + + + Kaszubskie noce, nad nami lśniące + Harcerski krąg, ogniska blask, + Gdy się tu znajdziesz, wtedy zrozumiesz + Że wszystko to, łączy nas. + + + To szumi las, kołysze drzewa + Fala jeziora, brzegi zalewa + Tu mały Giewont, czoło pochyla + A my siedzimy, harcerska brać. + + + I choć Ojczyzna, jest tak daleko + Lecz nasze myśli, wciąż do niej mkną + Tam też wśród nocy, płoną ogniska + Harcerskie piosnki, unosi wiatr. + + + + A gdy drużyna, znowu jest razem + Płonie ognisko, gitara gra, + Znów wspominamy, pierwsze wyprawy + Trudy radości, wspaniały czas. + + + + Czy ty pamiętasz, pierwsze ognisko + Pierwsze spojrzenie, cudowna noc, + Gwiazdy na niebie, byłeś tak blisko + Mówiłaś wtedy: „Kocham Cię” [a ja nie!] + + + + + Kaszuby + + Piosenka turystyczna + + + + + + Piotr Tabor + + + \ No newline at end of file From 1489743e266251cb1d54c4b57afc565c095c9d19 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sun, 6 Nov 2022 12:00:43 +0100 Subject: [PATCH 107/664] Adding '\n' at the end of song. --- editor-github/local-env.txt | 2 +- editor/save.js | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/editor-github/local-env.txt b/editor-github/local-env.txt index 75681e43..6bc8311a 100644 --- a/editor-github/local-env.txt +++ b/editor-github/local-env.txt @@ -1,4 +1,4 @@ export OAUTH_CLIENT_ID="c54f626adaeab3b0e0b6" export BASE_URL="http://localhost:8080" export EDITOR_DOMAIN="http://localhost:63342" -export EDITOR_PATH="/editor/index.html?_ijt=je9te0u58uiemb9bui6en9q484&_ij_reload=RELOAD_ON_SAVE" \ No newline at end of file +export EDITOR_PATH="/editor/index.html?" \ No newline at end of file diff --git a/editor/save.js b/editor/save.js index dfda3fb1..c76bf15e 100644 --- a/editor/save.js +++ b/editor/save.js @@ -23,9 +23,11 @@ export function Serialize(songeditor) { .replaceAll(nbsp," "); if (songeditor.tabs) { - txt = txt.replaceAll(/(?<=^ *) /gm,"\t") + "\n"; + txt = txt.replaceAll(/(?<=^ *) /gm,"\t"); } + songeditor = songeditor + "\n"; + if (songeditor.shadow.getElementById("lastSerialized")) { songeditor.shadow.getElementById("lastSerialized").innerText=txt; } From 9f0082ecb9a31b4d26acd56b0ecdbb22cdef0e4c Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sun, 6 Nov 2022 13:45:59 +0100 Subject: [PATCH 108/664] Fix validation message for the file-name. --- editor-github/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/editor-github/index.js b/editor-github/index.js index 4c55c377..6e9be884 100644 --- a/editor-github/index.js +++ b/editor-github/index.js @@ -124,7 +124,9 @@ app.get('/users/:user/changes[:]new', async (req, res) => { res.write(`
- +
From 573e4d98a7ed8b0df9a76f88e61f4556a7a81fad Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sun, 6 Nov 2022 13:55:42 +0100 Subject: [PATCH 109/664] saved --- songs/Kaszubskie_noce.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/songs/Kaszubskie_noce.xml b/songs/Kaszubskie_noce.xml index 8b12631c..a47d8ffb 100644 --- a/songs/Kaszubskie_noce.xml +++ b/songs/Kaszubskie_noce.xml @@ -57,4 +57,4 @@ Hm Zbigniew Kowalczyk Drużynowy 7DHW w latach 1985-1988. Piotr Tabor - \ No newline at end of file + From a3a36b2aef2ad09249517dedf7ea9a7bf87bfdcb Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sun, 6 Nov 2022 14:20:36 +0100 Subject: [PATCH 110/664] =?UTF-8?q?Usuni=C4=99to=20notk=C4=99=20o=20dru?= =?UTF-8?q?=C5=BCynowym=20jako=20niezwi=C4=85zan=C4=85.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- songs/Kaszubskie_noce.xml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/songs/Kaszubskie_noce.xml b/songs/Kaszubskie_noce.xml index a47d8ffb..f836a7b4 100644 --- a/songs/Kaszubskie_noce.xml +++ b/songs/Kaszubskie_noce.xml @@ -4,10 +4,7 @@ Zbigniew Kowalczyk, Tomasz Krzepkowski, Dariusz Jagodziński [https://www.zhpharcerki.org/organizacja_harcerek/egazetka_4/gazetka_4_piosenki_A.htm] -Tekst piosenki pisany był etapami. Pierwsze dwie zwrotki i refren powstały podczas biwaku na Kaszubach. Napisane na stanicy Karpaty w październikowy wieczór, gdy drużyna ruszyła w teren patrolami a drużynowy miał natchnienie... Darek rzadko wtedy rozstawał się z gitarą. W trakcie krótkiej przerwy między roboczym zadaniem a wyprawą w teren powstała melodia. Melodia była gotowa, ale z tekstem nie wychodziło – było kilka pierwszych słów i pomysł na temat, czyli Kaszuby. Gdy wędrownicy wrócili z wyprawy drużynowy miał już tekst. Taki był początek. Trzecia zwrotka (w kolejności w jakiej powstawał tekst) została napisana latem następnego roku podczas obozu Szczepu Warszawa na terenie ‘przy tartaku’. Dh Tomek Krzepkowski był wtedy oboźnym podobozu wędrowników. Gdzie wraz z Darkiem znaleźli inspirację do napisania tekstu tego już nie wiem ;) Czwarta zwrotka ‘a gdy drużyna...’ powstała w późniejszych latach, w pewnym sensie jako przypomnienie, że nasze drogi się rozchodzą i coraz rzadziej mamy szansę, by spotkać się, porozmawiać, powspominać. Oczywiście po latach niektórzy próbowali dodać jakieś gesty, kołysanie fal, itp., co mija się z głębszym sensem piosenki i spłyca zawarte myśli. Dla ułatwienia zmieniano sobie także tonację, jednak Kaszubskie Noce prawidłowo brzmią jedynie w oryginalnej tonacji, czyli w E-dur. Napisałem, że początek i inspiracja to 7DHW, gdyż w tej drużynie wiele się działo i wiele piosenek zostało przez nią rozpropagowanych, no i powstała ta jedna własna. W składzie w jakim powstały Kaszubskie Noce drużyna działała od 1985 do 1989 roku. - -Hm Zbigniew Kowalczyk Drużynowy 7DHW w latach 1985-1988. - +Tekst piosenki pisany był etapami. Pierwsze dwie zwrotki i refren powstały podczas biwaku na Kaszubach. Napisane na stanicy Karpaty w październikowy wieczór, gdy drużyna ruszyła w teren patrolami a drużynowy miał natchnienie... Darek rzadko wtedy rozstawał się z gitarą. W trakcie krótkiej przerwy między roboczym zadaniem a wyprawą w teren powstała melodia. Melodia była gotowa, ale z tekstem nie wychodziło – było kilka pierwszych słów i pomysł na temat, czyli Kaszuby. Gdy wędrownicy wrócili z wyprawy drużynowy miał już tekst. Taki był początek. Trzecia zwrotka (w kolejności w jakiej powstawał tekst) została napisana latem następnego roku podczas obozu Szczepu Warszawa na terenie ‘przy tartaku’. Dh Tomek Krzepkowski był wtedy oboźnym podobozu wędrowników. Gdzie wraz z Darkiem znaleźli inspirację do napisania tekstu tego już nie wiem ;) Czwarta zwrotka ‘a gdy drużyna...’ powstała w późniejszych latach, w pewnym sensie jako przypomnienie, że nasze drogi się rozchodzą i coraz rzadziej mamy szansę, by spotkać się, porozmawiać, powspominać. Oczywiście po latach niektórzy próbowali dodać jakieś gesty, kołysanie fal, itp., co mija się z głębszym sensem piosenki i spłyca zawarte myśli. Dla ułatwienia zmieniano sobie także tonację, jednak Kaszubskie Noce prawidłowo brzmią jedynie w oryginalnej tonacji, czyli w E-dur. Napisałem, że początek i inspiracja to 7DHW, gdyż w tej drużynie wiele się działo i wiele piosenek zostało przez nią rozpropagowanych, no i powstała ta jedna własna. W składzie w jakim powstały Kaszubskie Noce drużyna działała od 1985 do 1989 roku. Dariusz Jagodziński 7 DH Wędrowników im. phm Alka Dawidowskiego From eb8422e3f6293fe3702a65793a9dc1fc860978a4 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sun, 6 Nov 2022 14:21:27 +0100 Subject: [PATCH 111/664] formatowanie --- songs/Kaszubskie_noce.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/songs/Kaszubskie_noce.xml b/songs/Kaszubskie_noce.xml index f836a7b4..6a134180 100644 --- a/songs/Kaszubskie_noce.xml +++ b/songs/Kaszubskie_noce.xml @@ -4,7 +4,8 @@ Zbigniew Kowalczyk, Tomasz Krzepkowski, Dariusz Jagodziński [https://www.zhpharcerki.org/organizacja_harcerek/egazetka_4/gazetka_4_piosenki_A.htm] -Tekst piosenki pisany był etapami. Pierwsze dwie zwrotki i refren powstały podczas biwaku na Kaszubach. Napisane na stanicy Karpaty w październikowy wieczór, gdy drużyna ruszyła w teren patrolami a drużynowy miał natchnienie... Darek rzadko wtedy rozstawał się z gitarą. W trakcie krótkiej przerwy między roboczym zadaniem a wyprawą w teren powstała melodia. Melodia była gotowa, ale z tekstem nie wychodziło – było kilka pierwszych słów i pomysł na temat, czyli Kaszuby. Gdy wędrownicy wrócili z wyprawy drużynowy miał już tekst. Taki był początek. Trzecia zwrotka (w kolejności w jakiej powstawał tekst) została napisana latem następnego roku podczas obozu Szczepu Warszawa na terenie ‘przy tartaku’. Dh Tomek Krzepkowski był wtedy oboźnym podobozu wędrowników. Gdzie wraz z Darkiem znaleźli inspirację do napisania tekstu tego już nie wiem ;) Czwarta zwrotka ‘a gdy drużyna...’ powstała w późniejszych latach, w pewnym sensie jako przypomnienie, że nasze drogi się rozchodzą i coraz rzadziej mamy szansę, by spotkać się, porozmawiać, powspominać. Oczywiście po latach niektórzy próbowali dodać jakieś gesty, kołysanie fal, itp., co mija się z głębszym sensem piosenki i spłyca zawarte myśli. Dla ułatwienia zmieniano sobie także tonację, jednak Kaszubskie Noce prawidłowo brzmią jedynie w oryginalnej tonacji, czyli w E-dur. Napisałem, że początek i inspiracja to 7DHW, gdyż w tej drużynie wiele się działo i wiele piosenek zostało przez nią rozpropagowanych, no i powstała ta jedna własna. W składzie w jakim powstały Kaszubskie Noce drużyna działała od 1985 do 1989 roku. +Tekst piosenki pisany był etapami. Pierwsze dwie zwrotki i refren powstały podczas biwaku na Kaszubach. Napisane na stanicy Karpaty w październikowy wieczór, gdy drużyna ruszyła w teren patrolami a drużynowy miał natchnienie... +Darek rzadko wtedy rozstawał się z gitarą. W trakcie krótkiej przerwy między roboczym zadaniem a wyprawą w teren powstała melodia. Melodia była gotowa, ale z tekstem nie wychodziło – było kilka pierwszych słów i pomysł na temat, czyli Kaszuby. Gdy wędrownicy wrócili z wyprawy drużynowy miał już tekst. Taki był początek. Trzecia zwrotka (w kolejności w jakiej powstawał tekst) została napisana latem następnego roku podczas obozu Szczepu Warszawa na terenie ‘przy tartaku’. Dh Tomek Krzepkowski był wtedy oboźnym podobozu wędrowników. Gdzie wraz z Darkiem znaleźli inspirację do napisania tekstu tego już nie wiem ;) Czwarta zwrotka ‘a gdy drużyna...’ powstała w późniejszych latach, w pewnym sensie jako przypomnienie, że nasze drogi się rozchodzą i coraz rzadziej mamy szansę, by spotkać się, porozmawiać, powspominać. Oczywiście po latach niektórzy próbowali dodać jakieś gesty, kołysanie fal, itp., co mija się z głębszym sensem piosenki i spłyca zawarte myśli. Dla ułatwienia zmieniano sobie także tonację, jednak Kaszubskie Noce prawidłowo brzmią jedynie w oryginalnej tonacji, czyli w E-dur. Napisałem, że początek i inspiracja to 7DHW, gdyż w tej drużynie wiele się działo i wiele piosenek zostało przez nią rozpropagowanych, no i powstała ta jedna własna. W składzie w jakim powstały Kaszubskie Noce drużyna działała od 1985 do 1989 roku. Dariusz Jagodziński 7 DH Wędrowników im. phm Alka Dawidowskiego From 33d4ee7ae357d2bb333acae1504e05695c5e1c4f Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sun, 6 Nov 2022 14:26:50 +0100 Subject: [PATCH 112/664] formatowanie --- songs/Kaszubskie_noce.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/songs/Kaszubskie_noce.xml b/songs/Kaszubskie_noce.xml index 6a134180..244b3aa2 100644 --- a/songs/Kaszubskie_noce.xml +++ b/songs/Kaszubskie_noce.xml @@ -5,7 +5,9 @@ [https://www.zhpharcerki.org/organizacja_harcerek/egazetka_4/gazetka_4_piosenki_A.htm] Tekst piosenki pisany był etapami. Pierwsze dwie zwrotki i refren powstały podczas biwaku na Kaszubach. Napisane na stanicy Karpaty w październikowy wieczór, gdy drużyna ruszyła w teren patrolami a drużynowy miał natchnienie... -Darek rzadko wtedy rozstawał się z gitarą. W trakcie krótkiej przerwy między roboczym zadaniem a wyprawą w teren powstała melodia. Melodia była gotowa, ale z tekstem nie wychodziło – było kilka pierwszych słów i pomysł na temat, czyli Kaszuby. Gdy wędrownicy wrócili z wyprawy drużynowy miał już tekst. Taki był początek. Trzecia zwrotka (w kolejności w jakiej powstawał tekst) została napisana latem następnego roku podczas obozu Szczepu Warszawa na terenie ‘przy tartaku’. Dh Tomek Krzepkowski był wtedy oboźnym podobozu wędrowników. Gdzie wraz z Darkiem znaleźli inspirację do napisania tekstu tego już nie wiem ;) Czwarta zwrotka ‘a gdy drużyna...’ powstała w późniejszych latach, w pewnym sensie jako przypomnienie, że nasze drogi się rozchodzą i coraz rzadziej mamy szansę, by spotkać się, porozmawiać, powspominać. Oczywiście po latach niektórzy próbowali dodać jakieś gesty, kołysanie fal, itp., co mija się z głębszym sensem piosenki i spłyca zawarte myśli. Dla ułatwienia zmieniano sobie także tonację, jednak Kaszubskie Noce prawidłowo brzmią jedynie w oryginalnej tonacji, czyli w E-dur. Napisałem, że początek i inspiracja to 7DHW, gdyż w tej drużynie wiele się działo i wiele piosenek zostało przez nią rozpropagowanych, no i powstała ta jedna własna. W składzie w jakim powstały Kaszubskie Noce drużyna działała od 1985 do 1989 roku. +Darek rzadko wtedy rozstawał się z gitarą. W trakcie krótkiej przerwy między roboczym zadaniem a wyprawą w teren powstała melodia. Melodia była gotowa, ale z tekstem nie wychodziło – było kilka pierwszych słów i pomysł na temat, czyli Kaszuby. Gdy wędrownicy wrócili z wyprawy drużynowy miał już tekst. Taki był początek. + +Trzecia zwrotka (w kolejności w jakiej powstawał tekst) została napisana latem następnego roku podczas obozu Szczepu Warszawa na terenie ‘przy tartaku’. Dh Tomek Krzepkowski był wtedy oboźnym podobozu wędrowników. Gdzie wraz z Darkiem znaleźli inspirację do napisania tekstu tego już nie wiem ;) Czwarta zwrotka ‘a gdy drużyna...’ powstała w późniejszych latach, w pewnym sensie jako przypomnienie, że nasze drogi się rozchodzą i coraz rzadziej mamy szansę, by spotkać się, porozmawiać, powspominać. Oczywiście po latach niektórzy próbowali dodać jakieś gesty, kołysanie fal, itp., co mija się z głębszym sensem piosenki i spłyca zawarte myśli. Dla ułatwienia zmieniano sobie także tonację, jednak Kaszubskie Noce prawidłowo brzmią jedynie w oryginalnej tonacji, czyli w E-dur. Napisałem, że początek i inspiracja to 7DHW, gdyż w tej drużynie wiele się działo i wiele piosenek zostało przez nią rozpropagowanych, no i powstała ta jedna własna. W składzie w jakim powstały Kaszubskie Noce drużyna działała od 1985 do 1989 roku. Dariusz Jagodziński 7 DH Wędrowników im. phm Alka Dawidowskiego From 2b57970acaff79d2f2efb512d23c8552d2d6fd1a Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sun, 6 Nov 2022 14:38:15 +0100 Subject: [PATCH 113/664] =?UTF-8?q?Oczywi=C5=9Bcie,=20=C5=BCe=20piosenka?= =?UTF-8?q?=20harcerska?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- songs/Kaszubskie_noce.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/songs/Kaszubskie_noce.xml b/songs/Kaszubskie_noce.xml index 244b3aa2..74c92d31 100644 --- a/songs/Kaszubskie_noce.xml +++ b/songs/Kaszubskie_noce.xml @@ -48,7 +48,7 @@ Trzecia zwrotka (w kolejności w jakiej powstawał tekst) została napisana late Kaszuby - Piosenka turystyczna + Piosenka harcerska From 4e35ebe04ec59a87b5dfc5edab47ea5fd95c7236 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sun, 6 Nov 2022 18:05:24 +0100 Subject: [PATCH 114/664] Help added. --- editor/index.html | 41 +++++++++++++++++++++++++++++++++++------ editor/save.js | 2 +- editor/song.css | 26 ++++++++++++++++++++++++++ editor/songbody.js | 26 ++++++++++++++++++++++---- editor/songbook.js | 32 ++++++++++++++++++++++++++++++-- 5 files changed, 114 insertions(+), 13 deletions(-) diff --git a/editor/index.html b/editor/index.html index 34f83d2f..4fe95329 100644 --- a/editor/index.html +++ b/editor/index.html @@ -28,7 +28,12 @@ } }) } - songEditor.addEventListener("git:commit", (e) => commit(e) ); + songEditor.addEventListener("git:commit", async (e) => { + const success = await commit(e); + if (success) { + notice("Zapisano"); + } + } ); songEditor.addEventListener("git:commitAndPublish", (e)=>commitAndPublish(e) ); const topNav = document.getElementById("topnav"); @@ -53,16 +58,37 @@ } } + function notice(txt, owner=null) { + const notice = document.createElement("div"); + notice.classList.add("notice"); + notice.innerText=txt; + + setTimeout(() => { + notice.remove(); + }, 2000) + + if (!owner) { + document.getElementsByTagName("BODY")[0].insertBefore(notice, null); + } else { + owner.parentNode.insertBefore(notice, owner.nextSibling); + } + } + async function commit(e) { - let txt = e.target.Serialize();//document.getElementsByTagName("song-editor")[0].Serialize(); + const {serialized,changed} = e.target.SerializeWithChange();//document.getElementsByTagName("song-editor")[0].Serialize(); + + if (!changed) { + notice("Brak nowych zmian", e.target); + return false; + } const {baseUrl,branch,file,user} = parseParams(); - console.log(txt); + console.log(serialized); if (branch) { const msg = prompt("Wprowadź, proszę, krótki opis ostatnich zmian", "Poprawiono..."); if (!msg) { - return; + return false; } try { const config = { @@ -72,18 +98,20 @@ 'Accept': 'application/json', 'Content-Type': 'text/xml', }, - body: txt + body: serialized } const response = await fetch(`${baseUrl}/users/${user}/changes/${branch}/${file}?msg=${encodeURIComponent(msg)}`, config) if (response.ok) { - return response + return true; } else { alert("Zapis się nie powiódł. Czy jesteś podlączony do internetu ?"); console.warn(response); + return false; } } catch (error) { console.error(error); alert(JSON.stringify(error)); + return false; } } } @@ -95,6 +123,7 @@ } +
diff --git a/editor/save.js b/editor/save.js index c76bf15e..29b1add0 100644 --- a/editor/save.js +++ b/editor/save.js @@ -26,7 +26,7 @@ export function Serialize(songeditor) { txt = txt.replaceAll(/(?<=^ *) /gm,"\t"); } - songeditor = songeditor + "\n"; + txt = txt + "\n"; if (songeditor.shadow.getElementById("lastSerialized")) { songeditor.shadow.getElementById("lastSerialized").innerText=txt; diff --git a/editor/song.css b/editor/song.css index 27977da5..46437653 100644 --- a/editor/song.css +++ b/editor/song.css @@ -75,8 +75,17 @@ div.toolbar button { div.toolbar div.formatting { position: sticky; + display: grid; +} + +div.toolbar div.formatting button { + grid-column: 1; +} +div.toolbar div.formatting i { + grid-column: 2; } + div.toolbar input { margin-top: 0.5em; width: 13em; @@ -138,3 +147,20 @@ input#title { div.gitToolbar { margin-top: 10px; } + +div.notice { + position: fixed; + color: black; + background: yellow; + left: 50px; + top: 50px; +} + +div.help { + position: static; + left: 50px; + top: 50px; + background: lightcyan; + border: 1px solid blue; + z-index: 4; +} \ No newline at end of file diff --git a/editor/songbody.js b/editor/songbody.js index 2ad28fca..886365ca 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -3,7 +3,7 @@ import {createChord} from './ch.js' import {Sanitize} from './sanitize.js' function acceptsTextAndChords(element) { - return element.nodeName=="SONG-ROW"; + return element.nodeName=="SONG-ROW" && element.getAttribute("type")!=='instr'; } function canInsertChord() { @@ -70,11 +70,15 @@ export default class SongBody extends HTMLElement { const template = document.createElement('template'); template.innerHTML = ` +
Formatowanie: - - - + help +
Zaznaczone wiersze będą powtarzane. Ustaw licznik na 1 by wyłączyć.
+ help +
Oznacz wersy w których jest ważne by akordy pojawiały się nad tekstem.
+ help +
Wers zawierający tylko akordy. Odzielaj je spacjami.
`; @@ -100,6 +104,20 @@ export default class SongBody extends HTMLElement { this.buttonInstr.addEventListener("click", (e) => { this.toggleInstrumental(); this.refreshToolbar(); }); document.addEventListener('selectionchange', (event) => { this.refreshToolbar(); }); + + this.shadow = shadow; + this.initHelp("help-bis"); + this.initHelp("help-io"); + this.initHelp("help-instr"); + } + + initHelp(id) { + const helpDiv = this.shadow.getElementById(id); + const helpIcon = this.shadow.getElementById(id+"-icon"); + helpDiv.hidden = true; + helpDiv.addEventListener("click", (e) => {helpDiv.hidden = true;}); + + helpIcon.addEventListener("click", (e) => {helpDiv.hidden^=true;} ); } refreshToolbar() { diff --git a/editor/songbook.js b/editor/songbook.js index e640d6a3..c8a9852b 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -21,6 +21,7 @@ export class SongEditor extends HTMLElement { const template = document.createElement('template'); template.innerHTML = ` +
@@ -55,7 +56,18 @@ export class SongEditor extends HTMLElement {
-

Treść

+

Treśćhelp

+
+

Kilka tricków, które warto znać: +

    +
  • Klawisz \` (przeważnie lewy górny róg klawiatury) pozwala na dodanie akordu w bieżącym miejscu.
  • +
  • Akordy możesz przeciągać lub edytować poprzez drukrotne kliknięcie.
  • +
  • Zwrotkę możesz rozbić na dwie poprzez wstawienie dwóch pustych wierszy.
  • +
  • "Cofnij" działa tylko trochę (edycja tekstu, ale nie akordów).
  • +
  • Gotową piosenkę możesz zapisać do pliku lub zgłosić do recenzji przed publikacją w githubie
  • +
+

+

Szczegóły:

@@ -140,6 +152,11 @@ export class SongEditor extends HTMLElement { this.open=shadow.getElementById("open"); this.openCustom=shadow.getElementById("openCustom"); + this.helpbody = shadow.getElementById("help-body"); + this.helpbody.addEventListener("click", (e) => {this.helpbody.hidden = true; }); + this.helpbody.hidden=true; + shadow.getElementById("helpbody-icon").addEventListener("click", (e) => {this.helpbody.hidden ^= true;}) + this.openCustom.addEventListener("click", () => this.open.click()); this.buttonSave.addEventListener("click", () => Save(this)); this.open.addEventListener("change", (e) => this.LoadFile(e)); @@ -279,10 +296,21 @@ export class SongEditor extends HTMLElement { this.readAttribute(song, "todo", "todo"); this.tabs = xmlContent.includes("\t"); + this.serialized = xmlContent; } Serialize() { - return Serialize(this); + this.serialized = Serialize(this); + return this.serialized; + } + + SerializeWithChange() { + const prev = this.serialized; + const newP = this.Serialize(); + return { + serialized: newP, + changed: newP != prev, + } } LoadFile(e) { From 7bbdfed14bb8b683b93b3c91a7160e0317e66fe9 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Mon, 7 Nov 2022 13:06:22 +0100 Subject: [PATCH 115/664] Intro page. --- editor-github/common.js | 6 +++++- editor-github/index.js | 46 +++++++++++++++++++++++++++++++++++++---- 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/editor-github/common.js b/editor-github/common.js index 42591235..7972bf1b 100644 --- a/editor-github/common.js +++ b/editor-github/common.js @@ -98,7 +98,11 @@ export async function newUserOctokit(req,res) { const authenticated = await octokit.rest.users.getAuthenticated(); authuser = authenticated.data.login; console.log(util.inspect(authenticated, false, null, false)); - res.cookie("session", {"access_token": access_token, "user": authuser}, { maxAge: 3*24*60*60*1000, httpOnly: true, sameSite:'none', secure: true }); + res.cookie("session", { + "access_token": access_token, + "user": authuser}, + { maxAge: 3*24*60*60*1000, httpOnly: true, sameSite:'none', secure: true }); + res.cookie("new", "false", { maxAge: 31536000}); } const usr = (!req.params.user || req.params.user === 'me') ? authuser : req.params.user; console.log('Acting as user:', usr); diff --git a/editor-github/index.js b/editor-github/index.js index 6e9be884..fbb5050e 100644 --- a/editor-github/index.js +++ b/editor-github/index.js @@ -19,9 +19,9 @@ import { htmlSuffix, htmlPrefix, MAIN_BRANCH_NAME, - prepareBranch,editorLink, + prepareBranch, editorLink, prepareMainBranch, - HandleError, + HandleError, EDITOR_BASE_URL, } from './common.js'; const app = express(); @@ -34,7 +34,11 @@ app.use(cookieParser()); app.use(cors({origin: EDITOR_DOMAIN, credentials: true})); app.get('/', async (req, res) => { - res.redirect(CHANGES_BASE_URL); + if (req.cookies.new === 'false') { + res.redirect(CHANGES_BASE_URL); + } else { + res.redirect("/intro"); + } }); app.get('/changes', async (req, res) => { @@ -353,4 +357,38 @@ app.get('/auth', async (req, res) => { state: state, }); res.redirect(url); -}); \ No newline at end of file +}); + +app.get('/intro', async (req, res) => { + htmlPrefix(res); + res.write(` +

Witaj w edytorze piosenek

+ +

Poniższe narzędzie umożliwia wygodne edytowanie piosenek i dodawanie ich do śpiewnika. + Śpiewnik ten może być drukowany (PDF), ściągany jako ebook (EPUB) lub przeglądany na stronie. +

+

Jeżeli chcesz użyć lub zapoznać się z samym edytorem piosenek to przejdź do: samodzielnego edytora. + Będziesz mógł/mogła tworzyć nowe piosenki lub otwierać pliki z Twojego dysku lub je zapisywać do plików. +

+

+ Publiczna baza piosenek jest przetrzymywana w githubie (https://github.com/wdw21/songbook/tree/main/songs). + Jest to narzędzie potężnę - bo umożliwia recenzowanie i porównywanie zmian, lecz trudne w użyciu. Dlatego też przygotowaliśmy + nakładkę, która pozwoli Ci zgłaszać propozycję zmian w piosenkach bez konieczności obsługi git'a. + Musisz jednak zarejestrować się na githubie i upoważnić tę nakładkę do działania w Twoim imieniu. +

+

+ Możesz odczuwać uzasadniony dyskomfort (w szczególności jeśli masz swoje własne repozytoria githubowe), + by upoważniać jakąś aplikację by miała do nich dostęp. Mogę Cię tylko zapewnić (ale musisz mi zaufać), + że ta aplikacja tylko: +

    +
  • Tworzy roboczą kopię (fork) repozytorium wdw21/songbook, jeśli go jeszcze nieposiadasz.
  • +
  • Dotyka wyłącznie twojej roboczej kopi repozytorium 'songbook'
  • +
  • Tworzy i kasuje gałęzie (branches) w repozytorium 'songbook' o nazwie zaczynającej się od 'se-', gdy tworzysz nowe zmiany.
  • +
  • Tworzy zapisy (commits) w tych gałęziach, gdy zapisujesz zmiany piosenek.
  • +
+ Jeśli chcesz spróbować - przejdź do edycji - zostaniesz poproszeony o zalogowanie lub/i przyznanie uprawnień aplikacji. +

+

Problemy/uwagi możesz zgłaszać na: https://github.com/wdw21/songbook/issues

+ `); + htmlSuffix(res); +}); From 6c467b58c7ce2d63c6dee9db52b1b067398395ed Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Mon, 7 Nov 2022 13:23:18 +0100 Subject: [PATCH 116/664] User transparency changes (/intro). --- editor-github/google-cloud-functions-env.txt | 3 ++- editor-github/index.js | 2 +- editor-github/local-env.txt | 3 ++- editor-github/template-env.txt | 1 + 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/editor-github/google-cloud-functions-env.txt b/editor-github/google-cloud-functions-env.txt index 4980e9d2..ddded3f9 100644 --- a/editor-github/google-cloud-functions-env.txt +++ b/editor-github/google-cloud-functions-env.txt @@ -1,3 +1,4 @@ OAUTH_CLIENT_ID: "e1230ada4de9a5ce168b" BASE_URL: "https://songbook-gh6-j72bw4qyaq-ew.a.run.app" -EDITOR_DOMAIN: "https://ptabor.github.io" \ No newline at end of file +EDITOR_DOMAIN: "https://ptabor.github.io" +EDITOR_PATH: "/songbook/editor" \ No newline at end of file diff --git a/editor-github/index.js b/editor-github/index.js index fbb5050e..09ca601a 100644 --- a/editor-github/index.js +++ b/editor-github/index.js @@ -365,7 +365,7 @@ app.get('/intro', async (req, res) => {

Witaj w edytorze piosenek

Poniższe narzędzie umożliwia wygodne edytowanie piosenek i dodawanie ich do śpiewnika. - Śpiewnik ten może być drukowany (PDF), ściągany jako ebook (EPUB) lub przeglądany na stronie. + Śpiewnik ten może być drukowany (PDF), ściągany jako ebook (EPUB) lub przeglądany na stronie.

Jeżeli chcesz użyć lub zapoznać się z samym edytorem piosenek to przejdź do: samodzielnego edytora. Będziesz mógł/mogła tworzyć nowe piosenki lub otwierać pliki z Twojego dysku lub je zapisywać do plików. diff --git a/editor-github/local-env.txt b/editor-github/local-env.txt index 6bc8311a..0e11fd33 100644 --- a/editor-github/local-env.txt +++ b/editor-github/local-env.txt @@ -1,4 +1,5 @@ export OAUTH_CLIENT_ID="c54f626adaeab3b0e0b6" export BASE_URL="http://localhost:8080" export EDITOR_DOMAIN="http://localhost:63342" -export EDITOR_PATH="/editor/index.html?" \ No newline at end of file +export EDITOR_PATH="/editor/index.html?" + diff --git a/editor-github/template-env.txt b/editor-github/template-env.txt index 5a2a7f5e..2257f389 100644 --- a/editor-github/template-env.txt +++ b/editor-github/template-env.txt @@ -1,3 +1,4 @@ OAUTH_CLIENT_ID: "e1230ada4de9a5ce168b" BASE_URL: "http://localhost:8080" EDITOR_DOMAIN: "https://ptabor.github.io" +EDITOR_PATH: "/songbook/editor" \ No newline at end of file From 34abfba2a0d8f6335961697288c6abedc3bdd39e Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Mon, 7 Nov 2022 13:54:41 +0100 Subject: [PATCH 117/664] =?UTF-8?q?Wyja=C5=9Bni=C5=82em=20pochodzenie=20te?= =?UTF-8?q?j=20piosenki.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- songs/Kaszubskie_noce.xml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/songs/Kaszubskie_noce.xml b/songs/Kaszubskie_noce.xml index 74c92d31..9e8d68c2 100644 --- a/songs/Kaszubskie_noce.xml +++ b/songs/Kaszubskie_noce.xml @@ -2,14 +2,19 @@ Tu szumi las... Zbigniew Kowalczyk, Tomasz Krzepkowski, Dariusz Jagodziński - [https://www.zhpharcerki.org/organizacja_harcerek/egazetka_4/gazetka_4_piosenki_A.htm] + Piosenka nie opowiada wcale o Kaszubach w Polsce. Opowiada o Kaszubach w Ontario [1], Kanada, co wyjaśnia sens słów: "I choć Ojczyzna jest tak daleko" [2]. +Cytując za [3]: Tekst piosenki pisany był etapami. Pierwsze dwie zwrotki i refren powstały podczas biwaku na Kaszubach. Napisane na stanicy Karpaty w październikowy wieczór, gdy drużyna ruszyła w teren patrolami a drużynowy miał natchnienie... Darek rzadko wtedy rozstawał się z gitarą. W trakcie krótkiej przerwy między roboczym zadaniem a wyprawą w teren powstała melodia. Melodia była gotowa, ale z tekstem nie wychodziło – było kilka pierwszych słów i pomysł na temat, czyli Kaszuby. Gdy wędrownicy wrócili z wyprawy drużynowy miał już tekst. Taki był początek. -Trzecia zwrotka (w kolejności w jakiej powstawał tekst) została napisana latem następnego roku podczas obozu Szczepu Warszawa na terenie ‘przy tartaku’. Dh Tomek Krzepkowski był wtedy oboźnym podobozu wędrowników. Gdzie wraz z Darkiem znaleźli inspirację do napisania tekstu tego już nie wiem ;) Czwarta zwrotka ‘a gdy drużyna...’ powstała w późniejszych latach, w pewnym sensie jako przypomnienie, że nasze drogi się rozchodzą i coraz rzadziej mamy szansę, by spotkać się, porozmawiać, powspominać. Oczywiście po latach niektórzy próbowali dodać jakieś gesty, kołysanie fal, itp., co mija się z głębszym sensem piosenki i spłyca zawarte myśli. Dla ułatwienia zmieniano sobie także tonację, jednak Kaszubskie Noce prawidłowo brzmią jedynie w oryginalnej tonacji, czyli w E-dur. Napisałem, że początek i inspiracja to 7DHW, gdyż w tej drużynie wiele się działo i wiele piosenek zostało przez nią rozpropagowanych, no i powstała ta jedna własna. W składzie w jakim powstały Kaszubskie Noce drużyna działała od 1985 do 1989 roku. +Trzecia zwrotka (w kolejności w jakiej powstawał tekst) została napisana latem następnego roku podczas obozu Szczepu Warszawa na terenie ‘przy tartaku’. Dh Tomek Krzepkowski był wtedy oboźnym podobozu wędrowników. Gdzie wraz z Darkiem znaleźli inspirację do napisania tekstu tego już nie wiem ;) Czwarta zwrotka ‘a gdy drużyna...’ powstała w późniejszych latach, w pewnym sensie jako przypomnienie, że nasze drogi się rozchodzą i coraz rzadziej mamy szansę, by spotkać się, porozmawiać, powspominać. Oczywiście po latach niektórzy próbowali dodać jakieś gesty, kołysanie fal, itp., co mija się z głębszym sensem piosenki i spłyca zawarte myśli. Dla ułatwienia zmieniano sobie także tonację, jednak Kaszubskie Noce prawidłowo brzmią jedynie w oryginalnej tonacji, czyli w E-dur. Napisałem, że początek i inspiracja to 7DHW, gdyż w tej drużynie wiele się działo i wiele piosenek zostało przez nią rozpropagowanych, no i powstała ta jedna własna. W składzie w jakim powstały Kaszubskie Noce drużyna działała od 1985 do 1989 roku. + +[1] https://goo.gl/maps/cz6w4VbnqgmLAdZS9 +[2] http://kronikamontrealska.com/2012/07/06/kanadyjskie-kaszuby-ontario/ +[3] https://www.zhpharcerki.org/organizacja_harcerek/egazetka_4/gazetka_4_piosenki_A.htm Dariusz Jagodziński - 7 DH Wędrowników im. phm Alka Dawidowskiego + 7 DH Wędrowników im. phm Alka Dawidowskiego ZHPzgk (Kanada, Ontario) Kaszubskie noce, nad nami lśniące @@ -56,5 +61,6 @@ Trzecia zwrotka (w kolejności w jakiej powstawał tekst) została napisana late Piotr Tabor + Zmienić tonację na E-dur ? From e9006229b698e15cbcc9cebacfa69602c3a30d1a Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Mon, 7 Nov 2022 22:00:20 +0100 Subject: [PATCH 118/664] Inital song should have chords. --- editor-github/index.js | 2 +- editor/index.html | 2 +- editor/songbook.js | 28 ++++++++++++++++++++-------- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/editor-github/index.js b/editor-github/index.js index 09ca601a..c72f6e76 100644 --- a/editor-github/index.js +++ b/editor-github/index.js @@ -372,7 +372,7 @@ app.get('/intro', async (req, res) => {

Publiczna baza piosenek jest przetrzymywana w githubie (https://github.com/wdw21/songbook/tree/main/songs). - Jest to narzędzie potężnę - bo umożliwia recenzowanie i porównywanie zmian, lecz trudne w użyciu. Dlatego też przygotowaliśmy + Jest to narzędzie potężne - bo umożliwia recenzowanie i porównywanie zmian, lecz trudne w użyciu. Dlatego też przygotowaliśmy nakładkę, która pozwoli Ci zgłaszać propozycję zmian w piosenkach bez konieczności obsługi git'a. Musisz jednak zarejestrować się na githubie i upoważnić tę nakładkę do działania w Twoim imieniu.

diff --git a/editor/index.html b/editor/index.html index 4fe95329..97f67278 100644 --- a/editor/index.html +++ b/editor/index.html @@ -11,7 +11,7 @@ const {baseUrl,branch,file,user} = parseParams(); - const loadUrl = urlParams.get('load') ? urlParams.get('load') : `${baseUrl}/users/${user}/changes/${branch}/${file}`; + const loadUrl = urlParams.get('load') ? urlParams.get('load') : baseUrl ? `${baseUrl}/users/${user}/changes/${branch}/${file}` : null; const commitOnLoad = urlParams.get('commitOnLoad'); const songEditor = document.getElementsByTagName("song-editor")[0]; diff --git a/editor/songbook.js b/editor/songbook.js index c8a9852b..844ff2bd 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -58,7 +58,7 @@ export class SongEditor extends HTMLElement {

Treśćhelp

-

Kilka tricków, które warto znać: +

Kilka trików, które warto znać:

  • Klawisz \` (przeważnie lewy górny róg klawiatury) pozwala na dodanie akordu w bieżącym miejscu.
  • Akordy możesz przeciągać lub edytować poprzez drukrotne kliknięcie.
  • @@ -242,13 +242,25 @@ export class SongEditor extends HTMLElement { } New() { - this.innerHTML=` - - - Herbata stygnie, zapada zmrok - A pod piórem ciągle nic... - `; - Sanitize(this.body()); + this.Load(` + + + Herbata stygnie zapada mrok + A pod piórem ciągle nic + Obowiązek obowiązkiem jest + Piosenka musi posiadać tekst + +`); +// this.innerHTML=` +// +// +// Herbata stygnie zapada mrok +// A pod piórem ciągle nic +// Obowiązek obowiązkiem jest +// Piosenka musi posiadać tekst +// +// `; +// Sanitize(this.body()); this.body().selectAll(); } From 3efd7ebdfa4d4657f23d74dc5ca2d112e7e9532e Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Mon, 7 Nov 2022 22:44:04 +0100 Subject: [PATCH 119/664] Delete commented code. --- editor/songbook.js | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/editor/songbook.js b/editor/songbook.js index 844ff2bd..664ed2b4 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -251,16 +251,6 @@ export class SongEditor extends HTMLElement { Piosenka musi posiadać tekst `); -// this.innerHTML=` -// -// -// Herbata stygnie zapada mrok -// A pod piórem ciągle nic -// Obowiązek obowiązkiem jest -// Piosenka musi posiadać tekst -// -// `; -// Sanitize(this.body()); this.body().selectAll(); } From 8350d812eb68bc90c11ffd6955c98ad36317c9c6 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Mon, 7 Nov 2022 22:49:47 +0100 Subject: [PATCH 120/664] Commit message should contain song name. --- editor/index.html | 5 +++-- editor/songbook.js | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/editor/index.html b/editor/index.html index 97f67278..776586fd 100644 --- a/editor/index.html +++ b/editor/index.html @@ -75,7 +75,7 @@ } async function commit(e) { - const {serialized,changed} = e.target.SerializeWithChange();//document.getElementsByTagName("song-editor")[0].Serialize(); + const {serialized,changed, title} = e.target.SerializeWithChange();//document.getElementsByTagName("song-editor")[0].Serialize(); if (!changed) { notice("Brak nowych zmian", e.target); @@ -86,10 +86,11 @@ console.log(serialized); if (branch) { - const msg = prompt("Wprowadź, proszę, krótki opis ostatnich zmian", "Poprawiono..."); + const msg = prompt("Wprowadź, proszę, krótki opis ostatnich zmian", `...`); if (!msg) { return false; } + msg = `Piosenka ${title}: ` + msg; try { const config = { method: 'POST', diff --git a/editor/songbook.js b/editor/songbook.js index 664ed2b4..3c15fee3 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -312,6 +312,7 @@ export class SongEditor extends HTMLElement { return { serialized: newP, changed: newP != prev, + title: this.getAttribute("title"), } } From 5236da61e296428655dc1e87bfe62acff575dbe2 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Mon, 7 Nov 2022 22:59:45 +0100 Subject: [PATCH 121/664] Created a TOTO file. --- TODO | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/TODO b/TODO index c77ae5a4..2f8c4c96 100644 --- a/TODO +++ b/TODO @@ -1 +1,6 @@ -- tabulatury (tabbs) +- Support for multiple chords one after another +- Full support for undo/redo functionality. +- Adding chord and 'verse' as a buttons +- Automatic sanitization of space-separated chords into multiple chords. +- Automatic transpositions ? +- Improving estetics. \ No newline at end of file From b3407bbc5f255890d120a35cb2a26be9bae94383 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Mon, 7 Nov 2022 23:14:45 +0100 Subject: [PATCH 122/664] Chords separated by space are santizied to multiple chord tags. --- editor-github/listChanges.js | 2 -- editor/sanitize.js | 8 ++++++++ editor/songbook.js | 3 --- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/editor-github/listChanges.js b/editor-github/listChanges.js index 83a35918..6ab94b05 100644 --- a/editor-github/listChanges.js +++ b/editor-github/listChanges.js @@ -3,7 +3,6 @@ import util from "util"; const SONGEDITOR_BRANCH_REGEXP=/^se-.*/g; -import {RequestError} from "@octokit/request-error"; export async function listChanges(req, res) { try { @@ -162,7 +161,6 @@ export async function listChanges(req, res) { } } - //
    ${util.inspect(diff, false, null, false)}
    res.write(` diff --git a/editor/sanitize.js b/editor/sanitize.js index dfbbcc84..19320b32 100644 --- a/editor/sanitize.js +++ b/editor/sanitize.js @@ -364,6 +364,14 @@ function lightTraverse(node) { document.createTextNode(nbsp + node.getAttribute("a") + nbsp), node); } + const chords = node.getAttribute("a").trim().split(' '); + if (chords.length > 1) { + const df = document.createDocumentFragment(); + for (const ch of chords) { + df.appendChild(createChord(ch)); + } + node.parentNode.replaceChild(df, node); + } break; } case 'SONG-ROW': { diff --git a/editor/songbook.js b/editor/songbook.js index 3c15fee3..18a9d5c1 100644 --- a/editor/songbook.js +++ b/editor/songbook.js @@ -374,11 +374,8 @@ export class SongEditor extends HTMLElement { static get observedAttributes() { return attrs.concat(["git"]); } - } - - function songEditorInit() { customElements.define("song-editor", SongEditor); } From c8855d1600b8cade008978987fe55820d62ca0b8 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 8 Nov 2022 15:37:57 +0100 Subject: [PATCH 123/664] Support for multiple chords in the same position: - Splitting after edit - Recomputing offsets. --- editor/ch.css | 6 +++--- editor/ch.js | 30 ++++++++++++++++++++++++++++++ editor/index.html | 1 + editor/song.css | 6 ------ editor/songbody.js | 34 +++++++++++++++++++++++++--------- 5 files changed, 59 insertions(+), 18 deletions(-) diff --git a/editor/ch.css b/editor/ch.css index ccda814f..e86a32fd 100644 --- a/editor/ch.css +++ b/editor/ch.css @@ -3,14 +3,14 @@ span.cho { position: relative; left: 0px; width:0px; - top: -1.4em; + top: -1.3em; margin-top: 1.5em; overflow-wrap: normal; hyphens: none; } :host-context(song-row[important_over="true"]) span.cho { - top: -1.7em; + top: -1.6em; width: revert; } @@ -34,7 +34,7 @@ span.cho span.ch { width: fit-content; overflow-wrap: normal; font-weight: lighter; - background: white; + background: rgba(255,255,255,0.5);; white-space:nowrap; font-family: Arial; } diff --git a/editor/ch.js b/editor/ch.js index 68d28307..e33f0532 100644 --- a/editor/ch.js +++ b/editor/ch.js @@ -1,3 +1,5 @@ +import {findAncestor, nbsp} from "./utils.js"; + const predefinedChords = ["A", "A2", "A4", "A7", "A7+", "A7/4", "A7/6", "Ais", "B", "C", "C0", "C7", "C7+", "C9", "C9/5", "Cis", "Cis0", "D", "D2", "D4", "D7", "D7+", "Dis", "E", "E0", "E5+", "E7", "E7/4", "F", "F0", "F7", "F7+", @@ -20,6 +22,12 @@ export default class SongCh extends HTMLElement { this.che = shadow.getElementById("che"); this.cho = shadow.getElementById("cho"); + this.ch.addEventListener("click", + (e) => { + console.log("Clicked", this.ch.getBoundingClientRect()); + } + ); + this.ch.ondblclick = (event) => { console.log("CH-double-click"); this.setAttribute("editing", "true"); @@ -95,6 +103,28 @@ export default class SongCh extends HTMLElement { document.getSelection().addRange(r); } + connectedCallback() { + const songBody = findAncestor(this, "SONG-BODY"); + new ResizeObserver(() => songBody.recomputeChordsOffsets()).observe(this.ch); + } + + recomputeOffset() { + if (this.offset) { + return this.offset; + } + if (this.previousSibling.nodeName==='SONG-CH') { + this.offset = this.previousSibling.recomputeOffset() + this.previousSibling.ch.getBoundingClientRect().width + 3; + } else { + this.offset = 0; + } + this.cho.style.left = this.offset + "px"; + return this.offset; + } + + resetOffset() { + this.offset=null; + } + updateEditing() { this.che.hidden=!this.isEditing(); this.che.style.display = this.isEditing() ? 'inline' : 'none'; diff --git a/editor/index.html b/editor/index.html index 776586fd..e33f0de0 100644 --- a/editor/index.html +++ b/editor/index.html @@ -5,6 +5,7 @@ + + + +
    diff --git a/editor-github/index.js b/editor-github/index.js index c72f6e76..2f41f288 100644 --- a/editor-github/index.js +++ b/editor-github/index.js @@ -7,7 +7,7 @@ import crypto from 'crypto'; import cookieParser from "cookie-parser"; import cors from 'cors'; -import {listChanges} from './listChanges.js'; +import {cleanupChanges, listChanges} from './listChanges.js'; import { BASE_URL, EDITOR_DOMAIN, @@ -55,7 +55,10 @@ app.get('/songs', async (req, res) => { res.redirect(`/users/${user}/songs`) } ); +app.use(express.static('static')); + app.get('/users/:user/changes', listChanges); +app.post('/users/:user/changes[:]cleanup', cleanupChanges); app.get('/users/:user/changes/:branch[:]edit', async (req, res) => { const branchName = req.params.branch; diff --git a/editor-github/listChanges.js b/editor-github/listChanges.js index 6ab94b05..37e55aec 100644 --- a/editor-github/listChanges.js +++ b/editor-github/listChanges.js @@ -3,14 +3,39 @@ import util from "util"; const SONGEDITOR_BRANCH_REGEXP=/^se-.*/g; - -export async function listChanges(req, res) { - try { - const {octokit, user, mygraphql} = await newUserOctokit(req, res); - if (!octokit) { - return; +export async function cleanupChanges(req, res) { + const {refs, diffs, user} = await getRefs(req, res); + // Let's delete empty & merged branches. + for (let i = 0; i < refs.length; ++i) { + let branch = refs[i]; + if (branch.name.match(SONGEDITOR_BRANCH_REGEXP)) { + const diff = await diffs.get(branch.name); + if (diff.data.files.length === 0) { + octokit.rest.git.deleteRef({owner: user, repo: 'songbook', "ref": "heads/" + branch.name}).then(); + continue; + } + if (branch.associatedPullRequests.edges.length > 0) { + let merged = true; + for (const edge of branch.associatedPullRequests.edges) { + if (!edge.node.closed || !edge.node.merged) { + merged = false; + } + } + if (merged) { + octokit.rest.git.deleteRef({owner: user, repo: 'songbook', "ref": "heads/" + branch.name}).then(); + } + } } - let r = await mygraphql(`query ($user:String!, $repo:String!){ + } + res.redirect(`/users/${user}/changes`); +} + +async function getRefs(req, res) { + const {octokit, user, mygraphql} = await newUserOctokit(req, res); + if (!octokit) { + return null; + } + let r = await mygraphql(`query ($user:String!, $repo:String!){ repository(owner:$user,name:$repo) { url parent { @@ -61,40 +86,48 @@ export async function listChanges(req, res) { } } }`, - { - user: user, - repo: "songbook" - }); + { + user: user, + repo: "songbook" + }); - const diffs = new Map(); - const refs = r.repository.refs.nodes; + const diffs = new Map(); + const refs = r.repository.refs.nodes; - console.log("Refs size before sort", refs.length); + console.log("Refs size before sort", refs.length); - refs.sort((a, b) => { - if (!a || !a.target || !a.target.committedDate) { - return 1; - } - if (!b || !b.target || !a.target.committedDate) { - return -1; - } - return -a.target.committedDate.localeCompare(b.target.committedDate) - }); + refs.sort((a, b) => { + if (!a || !a.target || !a.target.committedDate) { + return 1; + } + if (!b || !b.target || !a.target.committedDate) { + return -1; + } + return -a.target.committedDate.localeCompare(b.target.committedDate) + }); + console.log("Refs size after sort", refs.length); + + for (let i = 0; i < refs.length; ++i) { + let branch = refs[i]; + console.log("Considering: " + branch.name, i, branch.name.match(SONGEDITOR_BRANCH_REGEXP)); + if (branch.name.match(SONGEDITOR_BRANCH_REGEXP)) { + console.log("Processing: " + branch.name, i); + diffs.set(branch.name, octokit.rest.repos.compareCommitsWithBasehead({ + owner: 'wdw21', + repo: 'songbook', + basehead: `main...${user}:songbook:${branch.name}` + })); + } + } - console.log("Refs size after sort", refs.length); + console.log('1',refs); + return {refs, diffs, user, octokit, r}; +} - for (let i = 0; i < refs.length; ++i) { - let branch = refs[i]; - console.log("Considering: " + branch.name, i, branch.name.match(SONGEDITOR_BRANCH_REGEXP)); - if (branch.name.match(SONGEDITOR_BRANCH_REGEXP)) { - console.log("Processing: " + branch.name, i); - diffs.set(branch.name, octokit.rest.repos.compareCommitsWithBasehead({ - owner: 'wdw21', - repo: 'songbook', - basehead: `main...${user}:songbook:${branch.name}` - })); - } - } +export async function listChanges(req, res) { + try { + const {refs, diffs, user, r} = await getRefs(req, res); + console.log('2',refs); htmlPrefix(res); res.write(` @@ -138,34 +171,15 @@ export async function listChanges(req, res) { } } - // Let's delete empty & merged branches. - for (let i = 0; i < refs.length; ++i) { - let branch = refs[i]; - if (branch.name.match(SONGEDITOR_BRANCH_REGEXP)) { - const diff = await diffs.get(branch.name); - if (diff.data.files.length === 0) { - octokit.rest.git.deleteRef({owner: user, repo: 'songbook', "ref": "heads/" + branch.name}); - continue; - } - if (branch.associatedPullRequests.edges.length > 0) { - let merged = true; - for (const edge of branch.associatedPullRequests.edges) { - if (!edge.node.closed || !edge.node.merged) { - merged = false; - } - } - if (merged) { - octokit.rest.git.deleteRef({owner: user, repo: 'songbook', "ref": "heads/" + branch.name}); - } - } - } - } - res.write(` - [Nowa zmiana] - + add_circle[Nowa zmiana] + + + + +
    [Magia pod spodem]
    ${util.inspect(r, false, null, false)}
    `); diff --git a/editor-github/static/editor.css b/editor-github/static/editor.css new file mode 100644 index 00000000..c9b7aa8c --- /dev/null +++ b/editor-github/static/editor.css @@ -0,0 +1,11 @@ +a#newChange { + + font-size: large; + + margin-top: 1em; + margin-bottom: 1em; + display: inline-block; + vertical-align: middle; + margin-left: 3em; + color: blue; +} \ No newline at end of file From 19301e3229c1c3ec259014d834f20a2f571e6fd2 Mon Sep 17 00:00:00 2001 From: Katarzyna Tabor Date: Fri, 11 Nov 2022 00:14:37 +0100 Subject: [PATCH 169/664] =?UTF-8?q?udn=C4=99=C5=82am=20komantarze?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/epub/templates/toc.xhtml | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/epub/templates/toc.xhtml b/src/epub/templates/toc.xhtml index 0c7ea169..8e3abff7 100755 --- a/src/epub/templates/toc.xhtml +++ b/src/epub/templates/toc.xhtml @@ -8,8 +8,6 @@ From e6548f2f5ba65284e4eb307af4384478af39445e Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sat, 19 Nov 2022 20:47:44 +0100 Subject: [PATCH 170/664] =?UTF-8?q?Piosenka=20Raport=20z=20izby=20otrze?= =?UTF-8?q?=C5=BAwie=C5=84:=20Initial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- songs/Raport_z_izby_otrzezwien.xml | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/songs/Raport_z_izby_otrzezwien.xml b/songs/Raport_z_izby_otrzezwien.xml index d9cdc9d4..ba4aa50a 100644 --- a/songs/Raport_z_izby_otrzezwien.xml +++ b/songs/Raport_z_izby_otrzezwien.xml @@ -1,12 +1,5 @@ - - - - - - - - - + + Wchodzi pierwszy zalany drzwi się zamykają @@ -81,11 +74,12 @@ Przez judasza głos doszedł: pijcie kolorowe - + + + - From 0cbb3e2f4ae1b0dac0982235d50b6e877fd17c9d Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sat, 19 Nov 2022 21:13:12 +0100 Subject: [PATCH 171/664] =?UTF-8?q?Piosenka=20W=C3=B3dka,=20tylko=20w?= =?UTF-8?q?=C3=B3dka:=20Spisa=C5=82em=20s=C5=82owa=20z:=20https://www.yout?= =?UTF-8?q?ube.com/watch=3Fv=3DWEaTe29oIdA&t=3D6s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- songs/Raport_z_izby_otrzezwien.xml | 91 +++++++++++++++--------------- 1 file changed, 47 insertions(+), 44 deletions(-) diff --git a/songs/Raport_z_izby_otrzezwien.xml b/songs/Raport_z_izby_otrzezwien.xml index ba4aa50a..84fe44a8 100644 --- a/songs/Raport_z_izby_otrzezwien.xml +++ b/songs/Raport_z_izby_otrzezwien.xml @@ -1,77 +1,78 @@ - + + Raport z izby otrzeźwień + Krzysztof Daukszewicz + Krzysztof Daukszewicz - Wchodzi pierwszy zalany drzwi się zamykają - Widać film ma urwany kica w kąt jak zając - I w bełkocie ,,wylali'' bez ------ - Pije bo kac jest lepszy od stanów frustracji + Wchodzi pierwszy zalany, drzwi się zamykają + Widać film ma urwany, kica w kąt jak zając + I w bełkoce: ,,wylali'', bez motywowacji + Pije bo kac jest lepszy, od stanów frustracji + Tylko kto mnie mać tak skurczył do rozmiarów liliputka - - Tylko kto mnie tak skurczył do rozmiarów liliputka - Przez judasza głos doszedł ,,wódka tylko wódka'' - Wchodzi facet ubrany, równo jak pod sznurek - Mówi ,,Bardzo przepraszam'' widać zna kulturę + + Przez judasza głos doszedł: + - Wódka tylko wódka ! - I się chłopom przedstawił ,,Macie tu aktora'' - ,,Który żeby zarobić zgrywa amatora'' + Wchodzi facet ubrany, równo jak pod sznurek + Mówi ,,Bardzo przepraszam'', widać zna kulturę + I się chłopcom przedstawił ,,Macie tu aktora'' + ,,Który, żeby zarobić zgrywa amatora'' ,,Ktoś mi kurza twarz podmienił Hamleta na krasnoludka'' - Przez judasza głos doszedł ,,Wódka tylko wódka'' + - Po aktorze małolat jeszcze ma trądzik - ,,W domu rozłam'' powiada w buzię narkotyki + Po aktorze, małolat jeszcze ma trądziki + ,,W domu rozłam'' powiada, w budzie narkotyki Jeszcze doszły do tego z wychowania dwóje - ,,Synu'' rzecze mu artysta ,,ja cię adoptuję'' - - + ,,Synu'' rzekł mu artysta ,,ja cię adoptuję'' Kto urządził tak małego? Jaka na to odtrutka? - Przez judasza głos doszedł ,,Wódka tylko wódka'' - Teraz znany dziennikarz, każdy się przymyka - Nie wiadomo czy węszy czy się też nałykał + + Teraz znany dziennikarz, każdy się przymyka + Nie wiadomo czy węszy, czy się też nałykał Nagle głos małolata przerwał jego ciszę - Pewnie pije bo trzeźwy tego nie napisze - Co się stało z redaktorem że się chwieje jak łódka - Przez judasza głos doszedł -- wódka, tylko wódka + Pewnie pije, bo trzeźwy tego nie napisze + Co się stało z redaktorem, że się chwieje jak łódka + Teraz na strasznej bani elegancka pani - Nagle wszyscy do koła chłopcy malowani - Teraz wiem -- rzecze dama -- czemu karaj zaniemógł + Nagle wszyscy dookoła chłopcy malowani + Teraz wiem - rzecze dama - czemu kraj zaniemógł Bowiem tutaj się skryły resztki gentelmanów + Ktoś was chłopcy najmilejsi znów wystrychnął na dudka + - Ktoś was chłopcy najmilejsi znowy wystrychną na dudka - Przez judasza głos doszedł -- wódka tylko wódka - Teraz wielki uczony też ubzdryngolony - Ale mądrość w nim taka że aż bić pokłony - - - Póki talent mój -- rzecze -- w rękach decydentów - Ni do pracy powrotu ni do abstynętów - Kto mnie jeszcze raz przekona, że przyczyny tkwią w s------- - Przez judasz głos doszedł: wódka, tylko wódka + Po niej wielki uczony też ubzdryngolony + Ale mądrość w nim taka, że aż bić pokłony + Póki talent mój - rzecze - w rękach decydentów + Ni do pracy powrotu, ni do abstynętów + Kto mnie jeszcze raz przekona, że przyczyny tkwią w skutkach + Na to powstał socjolog, co spał od południa Który z braku etatu, w szklarni się zatrudniał Rzekł: pisałem doktorat, że nie problem w ,,czystej'' I dlatego panowie jestem wciąż magistrem + Tylko praca jest odtrutką na taplanie się w smutkach + - Tylko praca jest odtrutką na taplanie się w smutkach - Przez judasza głos doszedł -- wódka, tylko wódka I wsunęli się wszyscy pod świeżutkie kołdry - Wszyscy których zjednało zalewani mordy + Wszyscy, których zjednało, zalewanie mordy + Tylko biedny artysta ciągnął wciąż do ludzi + I z pijackim uporem - śpiących chciał rozbudzić + Co nam szkodzi w tym życiu niech mi z was ktoś odpowie! - - Tylko biedny artysta ciągną wciąż do ludzi - I z pijackim uporem śpiących chciał rozbudzić - Co nam szkodzi w tym życiu niech mi z was ktoś odpowie - Przez judasza głos doszedł: pijcie kolorowe + + Przez judasza głos doszedł: + - Pijcie kolorowej ! @@ -81,5 +82,7 @@ + Poprawiłem na bazie: +https://www.youtube.com/watch?v=WEaTe29oIdA&t=6s From e69cc4dfd4d552a248e5c54b4a881961e64a34c9 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sat, 19 Nov 2022 21:23:16 +0100 Subject: [PATCH 172/664] Better latex generator. - Align begginings of the rows - Allow breaking rows with chords - Move chords to left side of text - Avoid empty pages (due to breaking before empty line) - Fix missspells --- render_pdf.sh | 1 + src/formats/songbook_a4_s.tex | 4 +- src/formats/songbook_a5_s.tex | 4 +- src/latex/songbook21wdh.sty | 88 +++++++++++++---------------------- src/song2tex.py | 29 +++++++----- src/song_template.tex | 8 ++-- 6 files changed, 60 insertions(+), 74 deletions(-) diff --git a/render_pdf.sh b/render_pdf.sh index ac88ece4..377d3f46 100644 --- a/render_pdf.sh +++ b/render_pdf.sh @@ -32,3 +32,4 @@ cat ${__dir}/src/formats/${format}_${papersize}_s.tex >> ${tex_file} # Run pdflatex twice to recalculate longtables TEXINPUTS=.:${__dir}/src/latex: pdflatex -output-directory ${tex_dir} ${tex_file} TEXINPUTS=.:${__dir}/src/latex: pdflatex -output-directory ${tex_dir} ${tex_file} +TEXINPUTS=.:${__dir}/src/latex: pdflatex -output-directory ${tex_dir} ${tex_file} diff --git a/src/formats/songbook_a4_s.tex b/src/formats/songbook_a4_s.tex index 87e3f0b0..6991640f 100644 --- a/src/formats/songbook_a4_s.tex +++ b/src/formats/songbook_a4_s.tex @@ -1,5 +1,5 @@ \newpage -\fancyhead[LE]{SPIS TREśCI} -\fancyhead[RO]{SPIS TREśCI} +\fancyhead[LE]{SPIS TREŚCI} +\fancyhead[RO]{SPIS TREŚCI} \tableofcontents \end{document} diff --git a/src/formats/songbook_a5_s.tex b/src/formats/songbook_a5_s.tex index 87e3f0b0..6991640f 100644 --- a/src/formats/songbook_a5_s.tex +++ b/src/formats/songbook_a5_s.tex @@ -1,5 +1,5 @@ \newpage -\fancyhead[LE]{SPIS TREśCI} -\fancyhead[RO]{SPIS TREśCI} +\fancyhead[LE]{SPIS TREŚCI} +\fancyhead[RO]{SPIS TREŚCI} \tableofcontents \end{document} diff --git a/src/latex/songbook21wdh.sty b/src/latex/songbook21wdh.sty index 949926cf..b78c0247 100644 --- a/src/latex/songbook21wdh.sty +++ b/src/latex/songbook21wdh.sty @@ -4,6 +4,10 @@ \RequirePackage{conditionals} \RequirePackage{ifthen} +\RequirePackage{xstring} +\RequirePackage{booktabs} +\RequirePackage{array} +\RequirePackage{varwidth} % must be loaded after array \newcommand{\theSongTitle}{} \newcommand{\theSongLyricist}{} @@ -18,11 +22,11 @@ \newcommand{\ChBassFont}{\normalsize\bf\sf} % = cmss12 at 12.0pt \newcommand{\SBChordRaise} {2.25ex} -\newcommand{\ChFontOn}{\scriptsize\fontfamily{\sfdefault} +\newcommand{\ChFontOn}{\scriptsize\fontfamily{\sfdefault}% \fontseries{sbc}\fontshape{n}\selectfont} %=cmssbc12 at 14.4pt -\newcommand{\ChFontBh}{\fontfamily{\sfdefault} +\newcommand{\ChFontBh}{\fontfamily{\sfdefault}% \fontseries{sbc}\fontshape{n}\selectfont} %=cmssbc12 at 14.4pt -\newcommand{\ChBkFont}{\ChFont\fontseries{m} +\newcommand{\ChBkFont}{\ChFont\fontseries{m}% \selectfont} % =cmssm12 at 14.4pt \newcommand{\bis}{\vrule} @@ -67,22 +71,21 @@ \setbox1=\hbox{\ChFontOn\sbChord{#1}\relax\strut}% \setbox0=\hbox{#2}% \ifdim\wd1<\wd0% - \strut\raise\SBChordRaise\copy1\kern-\wd1\copy0% + \strut\raise\SBChordRaise\copy1\kern-\wd1{#2}% \else% - \strut\copy0\kern-\wd0\strut\raise\SBChordRaise\copy1% + \strut{#2}\kern-\wd0\strut\raise\SBChordRaise\copy1% \fi% }{#2}% }% -\newcommand{\ChordsBehind}[1]{ - \ifthenelse{\boolean{PrintChordsBehind}}{ - \if\blank{#1}{}\else{%\hskip 0.1cm - \ChFontBh #1}\fi - }{ - } +\newcommand{\ChordsBehind}[1]{% +\ifthenelse{\boolean{PrintChordsBehind}}{% +\if\blank{#1}{}\else{%\hskip 0.1cm +\ChFontBh #1}\fi% +}{% +}% } - \newcommand{\AAndCAndA}[3]{% \vbox{% \begin{flushleft}% @@ -90,7 +93,7 @@ \if\blank{#1}{}\else{\textbf{Słowa:}\ #1 \\}\fi% \if\blank{#2}{}\else{\textbf{Muzyka:}\ #2 \\}\fi% \if\blank{#3}{}\else{\textbf{Wykonawca:}\ #3 \\}\fi% - \end{flushleft}%\\ + \end{flushleft}%\\ }% } @@ -116,59 +119,34 @@ \addcontentsline{toc}{section}{\hspace{-1.5em}#1} \STitle{\theSongTitle} \AAndCAndA{#2}{#3}{#4} + \parindent=0pt }{\vfill} -\newcommand{\row}[5][M]{ +\newcommand{\row}[5][M]{% % #1: % "F" <=> (first line of verse (or chorus)) -% "FS" <=> (first special)number and indent the verse or "Ch:" the chorus % "L" <=> (last line) don't try to nobreakline. -% "M" <=> middleline -% "S" <=> singleline +% "I" <=> instrumental line +% - you can combine the lines % #2: "C" <=> chorus % "V" <=> verse -% "I" <=> instrumental +% "O" <=> not chorus and not numbered % #3: row_text % #4: bis_text % #5: chords %---------------------------------------------------------- - \ifthenelse{\equal{#1}{L}}{\vspace{3 ex}}{}% - \ifthenelse{\equal{#1}{S}}{\vspace{3 ex}}{}% -% - \ifthenelse{\equal{#1}{FS}}% - { \ifthenelse{\equal{#2}{C}}% - {Ref.:}% - {\ifthenelse{\equal{#2}{V}}{% - \addtocounter{VerseCnt}{1}% - \theVerseCnt{}.% - }{}% - }% - }{}% % - \ifthenelse{\equal{#1}{S}}% - { \ifthenelse{\equal{#2}{C}}% - {Ref:}% - {\ifthenelse{\equal{#2}{V}}{% - \addtocounter{VerseCnt}{1}% - \theVerseCnt{}.% - }{}% - }% - }{} % - & %-------------------------------------------- - \ifthenelse{\equal{#2}{C}}% - {\hskip 0.75 cm}% - {}% - #3 & %----------------------------------------- - \if\blank{#4}{}\else{% \hskip{1cm} - #4}\fi% - & %----------------------------------------- - \ChordsBehind{#5}% - %--------------------------------------- - \ifthenelse{\equal{#1}{L}}% - {\\}% - { \ifthenelse{\equal{#1}{S}}% - {\\}% - {\\*}}% - + \IfSubStr{#1}{F}{% + \IfSubStr{#2}{C}{Ref:}{}% + \IfSubStr{#2}{V}{\addtocounter{VerseCnt}{1}\theVerseCnt{}.}{}% + }{}% + \IfSubStr{#1}{I}% + {&\multicolumn{2}{l}{\ChordsBehind{#5}} & }% + {&\ChordsBehind{#5} & % + \IfSubStr{#2}{C}{\hskip 1.5em}{} % + #3 & % + }% + \if\blank{#4}{}\else{#4}\fi% + \IfSubStr{#1}{L}{\IfSubStr{#1}{E}{\\}{\\\vtop{\vskip2ex minus 1ex}\\}}{\IfSubStr{#1}{P}{\\*}{\IfSubStr{#1}{F}{\\*}{\\}}} % optionally we could emit \\* on last-by-1 line to prevent 1-line tables. }{} diff --git a/src/song2tex.py b/src/song2tex.py index 8c8af574..1ba95f99 100644 --- a/src/song2tex.py +++ b/src/song2tex.py @@ -41,13 +41,13 @@ def __init__(self, chord='', content=None): class RowType(Enum): FIRST = 'F' - FIRST_SPECIAL = 'FS' MIDDLE = 'M' + LAST_BUT_ONE = 'P' LAST = 'L' - SINGLE = 'S' + INSTRUMENTAL = 'I' class Row: - def __init__(self, row_type=RowType.MIDDLE, new_chords=False, bis=False, chunks=[]): + def __init__(self, row_type='', new_chords=False, bis=False, chunks=[]): self.row_type = row_type self.new_chords = new_chords self.chunks = chunks @@ -61,12 +61,17 @@ def parseDOM(root, bis=False): chunks = [] for chunk in root.getchildren(): chunks.append(RowChunk(chord=tex_escape(chunk.attrib['a']), content=tex_escape(chunk.tail))) - return Row(new_chords=strtobool(root.attrib.get('important_over', 'false')), bis=bis, chunks=chunks) + if len(chunks) > 0 and not(chunks[0].content.startswith(' ')): + chunks[0].content = ' ' + chunks[0].content + + r = Row(new_chords=strtobool(root.attrib.get('important_over', 'false')), bis=bis, chunks=chunks) + if (root.attrib.get('style', 'normal')=='instr'): + r.row_type+=RowType.INSTRUMENTAL.value + return r class BlockType(Enum): VERSE = 'V' CHORUS = 'C' - INSTRUMENTAL = 'I' OTHER = 'O' @staticmethod @@ -74,7 +79,6 @@ def parse(s): return { 'verse': BlockType.VERSE, 'chorus': BlockType.CHORUS, - 'instrumental': BlockType.INSTRUMENTAL, 'other': BlockType.OTHER }[s] @@ -95,11 +99,11 @@ def parseDOM(root, linked=False): rows += bis_rows else: rows.append(Row.parseDOM(child)) - if len(rows) == 1: - rows[0].row_type = RowType.SINGLE - elif len(rows) > 1: - rows[0].row_type = RowType.FIRST_SPECIAL - rows[-1].row_type = RowType.LAST + if len(rows)>0: + rows[0].row_type += RowType.FIRST.value + rows[-1].row_type += RowType.LAST.value + if len(rows)>=2: + rows[-2].row_type += RowType.LAST_BUT_ONE.value if linked: for row in rows: row.new_chords = False @@ -120,6 +124,9 @@ def parseDOM(root): flatten = lambda block: Block.parseDOM(block) if 'blocknb' not in block.attrib else Block.parseDOM(text_blocks[int(block.attrib['blocknb'])-1], linked=True) blocks = [flatten(block) for block in root.find('{*}lyric').getchildren() if block.tag != '{http://21wdh.staszic.waw.pl}tabbs'] get_text = lambda elem: elem.text if elem is not None else None + if blocks and blocks[-1].rows: + blocks[-1].rows[-1].row_type += 'E' # end row + return Song( title = root.get('title'), text_author = get_text(root.find('{*}text_author')), diff --git a/src/song_template.tex b/src/song_template.tex index 8f1c7ec1..8f7eb9c2 100644 --- a/src/song_template.tex +++ b/src/song_template.tex @@ -1,9 +1,9 @@ \begin{song}{\VAR{song.title}}{\VAR{song.text_author}}{\VAR{song.composer}}{\VAR{song.artist}} -\begin{longtable}{l p{0.6\textwidth} l p{1in}} -\endfirsthead &\ldots \endhead &c.d.n. \ldots \endfoot \endlastfoot +\begin{longtable}{l V{6em} p{0.6\textwidth} l@{}} +&\ldots \endfoot \endlastfoot \BLOCK{ for block in song.blocks } \BLOCK{ for row in block.rows } - \row[\VAR{row.row_type.value}]{\VAR{block.block_type.value}}{\BLOCK{ for chunk in row.chunks } + \row[\VAR{row.row_type}]{\VAR{block.block_type.value}}{\BLOCK{ for chunk in row.chunks } \BLOCK{ if not row.new_chords or not chunk.chord -} \VAR{chunk.content} \BLOCK{- else -} @@ -15,7 +15,7 @@ \bisl{\VAR{row.bis}} \BLOCK{- endif }}{\BLOCK{ for chunk in row.chunks -} \BLOCK{ if chunk.chord }\VAR{chunk.chord} \BLOCK{ endif } - \BLOCK{- endfor }} + \BLOCK{- endfor }}% \BLOCK{ endfor } \BLOCK{ endfor } \end{longtable} From 47df4082a29a4a78b404837fd60335adb7a2db7f Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sun, 20 Nov 2022 15:28:05 +0100 Subject: [PATCH 173/664] Editor: appendVerse button. --- editor/sanitize.js | 2 +- editor/song.css | 9 +++++++++ editor/songbody.js | 19 +++++++++++++++++-- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/editor/sanitize.js b/editor/sanitize.js index 8777040c..0830a4bd 100644 --- a/editor/sanitize.js +++ b/editor/sanitize.js @@ -20,7 +20,7 @@ function setRandomId(node) { } } -function createVerse(type="verse", blocknb=null) { +export function createVerse(type="verse", blocknb=null) { let verse = document.createElement("song-verse"); if (!type || type!='chorus') { type = "verse" diff --git a/editor/song.css b/editor/song.css index 80bff461..82c8c10d 100644 --- a/editor/song.css +++ b/editor/song.css @@ -72,6 +72,15 @@ div.toolbar button { vertical-align: middle; } +button#appendVerse{ + width: 13em; + text-align:left; + vertical-align: middle; + display: block; + margin-right:0em; + margin-left:auto; +} + div.toolbar button i { margin-right: 0.5em; } diff --git a/editor/songbody.js b/editor/songbody.js index 8d9673ab..fdb4459a 100644 --- a/editor/songbody.js +++ b/editor/songbody.js @@ -1,6 +1,6 @@ import {findAncestor, getRangeForCursor,nbsp,removeAllChildren,mergeNodeAfter,setCursorBefore} from './utils.js'; import {createChord} from './ch.js' -import {Sanitize, SplitVerseFromRow} from './sanitize.js' +import {createVerse, Sanitize, SplitVerseFromRow} from './sanitize.js' function acceptsTextAndChords(element) { return element.nodeName=="SONG-ROW" && element.getAttribute("type")!=='instr'; @@ -108,7 +108,7 @@ export default class SongBody extends HTMLElement {
-
`; +
`; const shadow = this.attachShadow({ mode: "closed" }); shadow.appendChild(template.content.cloneNode(true)); @@ -122,6 +122,8 @@ export default class SongBody extends HTMLElement { // this.body.addEventListener("keydown", (e) => { this.keyDown(e, this); }); this.body.addEventListener("focusout", (e) => {this.focusout(e, this); }); + this.buttonAppendVerse=shadow.getElementById("appendVerse"); + this.buttonBis=shadow.getElementById("buttonBis"); this.importantOver=shadow.getElementById("importantOver"); this.buttonInstr=shadow.getElementById("buttonInstr"); @@ -139,6 +141,8 @@ export default class SongBody extends HTMLElement { this.buttonChord.addEventListener("click", (e) => { insertChordHere(""); this.refreshToolbar(); }); this.buttonSplit.addEventListener("click", (e) => { this.splitVerse(); this.refreshToolbar(); }); + this.buttonAppendVerse.addEventListener("click", (e) => {this.appendVerse(); this.refreshToolbar(); }); + document.addEventListener('selectionchange', (event) => { this.refreshToolbar(); }); this.shadow = shadow; @@ -279,6 +283,17 @@ export default class SongBody extends HTMLElement { } } + appendVerse() { + const v = createVerse(); + const rows = document.createElement("song-rows") + const row = document.createElement("song-row"); + rows.appendChild(row); + v.appendChild(rows); + this.insertBefore(v, null); + v.focus(); + document.getSelection().collapse(row); + } + toggleInstrumental() { let allInstrumental = this.allSelectedInstrumental(); let selRows = this.selectedRows(); From e87407c1c0d6c0f0b994d1be022ff0389fe6b1a2 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sun, 20 Nov 2022 17:14:21 +0100 Subject: [PATCH 174/664] Editor: Support for verse-type="other" - not numbered, not chorus -> e.g. instrumental section. --- editor/sanitize.js | 2 +- editor/verse.js | 78 ++++++++++++++++++++++++++++------------------ 2 files changed, 48 insertions(+), 32 deletions(-) diff --git a/editor/sanitize.js b/editor/sanitize.js index 8777040c..f3bdd7ce 100644 --- a/editor/sanitize.js +++ b/editor/sanitize.js @@ -22,7 +22,7 @@ function setRandomId(node) { function createVerse(type="verse", blocknb=null) { let verse = document.createElement("song-verse"); - if (!type || type!='chorus') { + if (!type || (type!='chorus' && type!='other')) { type = "verse" } verse.setAttribute("type", type); diff --git a/editor/verse.js b/editor/verse.js index fc99e969..699656f5 100644 --- a/editor/verse.js +++ b/editor/verse.js @@ -9,8 +9,11 @@ export class SongVerse extends HTMLElement {
- - + + + + +
+

Śpiewniki

+
    -

    Piosenki

    +
-
    +

    Piosenki

    +
    diff --git a/src/lib/songbook.py b/src/lib/songbook.py index 6969d1bf..a99b0ea3 100644 --- a/src/lib/songbook.py +++ b/src/lib/songbook.py @@ -1,6 +1,7 @@ import yaml import glob, os import uuid +import hashlib import src.lib.list_of_songs as loslib def repo_dir(): @@ -13,10 +14,16 @@ def resolvePath(path, start): else: return os.path.join(repo_dir(), path) +def md5(str): + m = hashlib.md5() + m.update(str.encode('utf-8')) + return m.hexdigest() + class SongbookSpec: - def __init__(self, spec, basedir): + def __init__(self, spec, specFile): self.spec = spec["songbook"] - self.basedir = basedir + self.basedir = os.path.dirname(specFile) + self.specFile = specFile def __str__(self): return str(self.spec) @@ -37,10 +44,14 @@ def url(self): return self.spec["url"] if "url" in self.spec else "" def id(self): - return self.spec["id"] if "id" in self.spec else self.uuid() + if "id" in self.spec: + return self.spec["id"] + if "uuid" in self.spec: + return self.spec["uuid"] + return md5(self.specFile) def uuid(self): - return self.spec["uuid"] if "uuid" in self.spec else str(uuid.uuid4()) + return self.spec["uuid"] if "uuid" in self.spec else uuid.UUID(md5(self.id())) def publisher(self): return self.spec["publisher"] if "publisher" in self.spec else "" @@ -48,6 +59,9 @@ def publisher(self): def place(self): return self.spec["place"] if "place" in self.spec else "" + def hidden(self): + return self.spec["hidden"] if "hidden" in self.spec else False + def imagePdfPath(self): return resolvePath(self.spec["image"]["pdf"] if "image" in self.spec and "pdf" in self.spec["image"] else "songbooks/wdw21/znak21.pdf", start=self.basedir) @@ -79,4 +93,8 @@ def load_songbook_spec_from_yaml(filename, title=None, songFiles=None): songbook["songbook"]["title"] = title if songFiles: songbook["songbook"]["songs"] = map(lambda s: {"glob": s}, songFiles) - return SongbookSpec(songbook, basedir=os.path.dirname(os.path.abspath(filename))) \ No newline at end of file + return SongbookSpec(songbook, specFile=os.path.abspath(filename)) + +def songbooks(): + print("searching: " + os.path.join(repo_dir(), "songbooks/*.yaml")) + return map(load_songbook_spec_from_yaml, glob.glob(os.path.join(repo_dir(), "songbooks/*.yaml"))) diff --git a/src/songbook2id.py b/src/songbook2id.py new file mode 100644 index 00000000..3c627daa --- /dev/null +++ b/src/songbook2id.py @@ -0,0 +1,19 @@ +"""This code generate one tex plik from n>=1 songs in xml + and gives tex text on stdout""" + +import os +import sys + +import src.lib.songbook as sb + +def main(): + if len(sys.argv) < 1: + print("Usage: python3 songbook2id.py songbook.yaml", file=sys.stderr) + exit(1) + songbook_file = os.path.join(sb.repo_dir(), "songbooks/default.songbook.yaml") if len(sys.argv) == 1 else sys.argv[1] + songbook = sb.load_songbook_spec_from_yaml(songbook_file) + print(songbook.id()) + + +if __name__ == "__main__": + main() From 9acf0614b3802378c56e5e2e9dcc9267ea45a4e4 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 16 Jul 2024 22:14:28 +0200 Subject: [PATCH 476/664] Add epubcheck. --- render_epubs.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/render_epubs.sh b/render_epubs.sh index 9044b644..7f8c3a68 100755 --- a/render_epubs.sh +++ b/render_epubs.sh @@ -6,5 +6,9 @@ for s in ${SCRIPT_DIR}/songbooks/*.yaml; do echo "Rendering: ${s}" >&2 SONGBOOK_ID=$(PYTHONPATH="${SCRIPT_DIR}" python3 ${SCRIPT_DIR}/src/songbook2id.py "${s}") ${SCRIPT_DIR}/render_epub.sh "${s}" - epubcheck "${SCRIPT_DIR}/build/${SONGBOOK_ID}.epub" + if /opt/homebrew/bin/epubcheck; then + epubcheck "${SCRIPT_DIR}/build/${SONGBOOK_ID}.epub" + else + java -jar /usr/bin/epubcheck "${SCRIPT_DIR}/build/${SONGBOOK_ID}.epub" + fi done \ No newline at end of file From 4b823cda3cec4307f24b610ec557831ab9c398d4 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 16 Jul 2024 22:15:27 +0200 Subject: [PATCH 477/664] Fixed. --- render_epubs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/render_epubs.sh b/render_epubs.sh index 7f8c3a68..c315e00c 100755 --- a/render_epubs.sh +++ b/render_epubs.sh @@ -6,7 +6,7 @@ for s in ${SCRIPT_DIR}/songbooks/*.yaml; do echo "Rendering: ${s}" >&2 SONGBOOK_ID=$(PYTHONPATH="${SCRIPT_DIR}" python3 ${SCRIPT_DIR}/src/songbook2id.py "${s}") ${SCRIPT_DIR}/render_epub.sh "${s}" - if /opt/homebrew/bin/epubcheck; then + if [ -f /opt/homebrew/bin/epubcheck ]; then epubcheck "${SCRIPT_DIR}/build/${SONGBOOK_ID}.epub" else java -jar /usr/bin/epubcheck "${SCRIPT_DIR}/build/${SONGBOOK_ID}.epub" From c55f04d1860c424b44e9d69320e12c07c7d11240 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 16 Jul 2024 22:22:19 +0200 Subject: [PATCH 478/664] PDFs are in subdir. --- .github/workflows/generate_all.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/generate_all.yml b/.github/workflows/generate_all.yml index 107f567f..23073b81 100644 --- a/.github/workflows/generate_all.yml +++ b/.github/workflows/generate_all.yml @@ -75,7 +75,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: songbooks_pdfs - path: /workspace/build/*.pdf + path: /workspace/build/songs_tex/*.pdf - name: Create Release id: create_release From 0e63ca0ecb6115aa0ea8c73e852b709a37ebb358 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 16 Jul 2024 22:31:07 +0200 Subject: [PATCH 479/664] Cleanup. --- .github/workflows/publish_page.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/publish_page.yml b/.github/workflows/publish_page.yml index ed6f2279..ed96bcab 100644 --- a/.github/workflows/publish_page.yml +++ b/.github/workflows/publish_page.yml @@ -63,8 +63,6 @@ jobs: mv _generated/*.epub _site/ cp -R editor _site/ ls -la _site/ -# export REPL=$(cd _site; ls *.epub *.pdf | sed 's|\(.*a4.pdf\)|PDF (A4)|' | sed 's|\(.*a5.pdf\)|PDF (A5)|' | sed 's|\(.*epub\)|EPUB|') -# python3 -c 'import sys; import os; print(sys.stdin.read().replace("", "Całość: " + os.getenv("REPL")))' <_site/songs_html/index.xhtml >_site/songs_html/.index.xhtml mv _site/songs_html/.index.xhtml _site/songs_html/index.xhtml - name: Upload artifact for pages From 1a29effb618cb055ab569435338abab4df449451 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Tue, 16 Jul 2024 23:01:27 +0200 Subject: [PATCH 480/664] Rename. --- .github/workflows/publish_page.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/publish_page.yml b/.github/workflows/publish_page.yml index ed96bcab..f222e85b 100644 --- a/.github/workflows/publish_page.yml +++ b/.github/workflows/publish_page.yml @@ -63,7 +63,6 @@ jobs: mv _generated/*.epub _site/ cp -R editor _site/ ls -la _site/ - mv _site/songs_html/.index.xhtml _site/songs_html/index.xhtml - name: Upload artifact for pages uses: actions/upload-pages-artifact@v3 From 704202696d96915fdf646b298a37b8f7eca73ecd Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 17 Jul 2024 20:24:42 +0200 Subject: [PATCH 481/664] Improved index. --- .github/workflows/generate_all.yml | 5 ++++- .github/workflows/publish_page.yml | 6 ++++-- src/html/index_generator.py | 11 ++++------- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/.github/workflows/generate_all.yml b/.github/workflows/generate_all.yml index 23073b81..3218eb37 100644 --- a/.github/workflows/generate_all.yml +++ b/.github/workflows/generate_all.yml @@ -150,7 +150,10 @@ jobs: uses: actions/upload-artifact@v4 with: name: songbooks_htmls - path: /workspace/build/*.zip + path: | + /workspace/build/*.zip + /workspace/build/index.html + - name: Upload htmls to release if: ${{ inputs.html && inputs.release }} diff --git a/.github/workflows/publish_page.yml b/.github/workflows/publish_page.yml index f222e85b..9fe5bcb1 100644 --- a/.github/workflows/publish_page.yml +++ b/.github/workflows/publish_page.yml @@ -58,8 +58,10 @@ jobs: path: _generated - name: Prepare _site run: | - unzip -o _generated/*.zip -d _site/ - mv _generated/*.pdf _site/ + mkdir -p _site/songs_html _site/songs_tex + unzip -o _generated/*.zip -d _site/songs_html + mv _generated/index.html _site/index.html + mv _generated/*.pdf _site/songs_tex mv _generated/*.epub _site/ cp -R editor _site/ ls -la _site/ diff --git a/src/html/index_generator.py b/src/html/index_generator.py index 6ae05040..29d0e6f3 100644 --- a/src/html/index_generator.py +++ b/src/html/index_generator.py @@ -25,7 +25,7 @@ def create_index_xhtml(list_of_songs_meta, target_dir): span.attrib['class'] = 'material-symbols-outlined' span.text = 'edit' a = etree.SubElement(li, "a") - a.attrib['href'] = song.base_file_name() + '.xhtml' + a.attrib['href'] = os.path.join("./songs_html", song.base_file_name() + '.xhtml') a.text = list_of_songs_meta[i].title # List of songbooks @@ -34,23 +34,20 @@ def create_index_xhtml(list_of_songs_meta, target_dir): if not songbook.hidden(): li = etree.SubElement(ul, "li", attrib={"id": songbook.id()}) li.text=songbook.title() + ":" - a_name = etree.SubElement(ul, "id", attrib={"class": "epub", "href": songbook.id()+".epub"}) - a_name.text = "EPUB (kindle)" a_epub = etree.SubElement(ul, "a", attrib={"class": "epub", "href": songbook.id()+".epub"}) a_epub.text = "EPUB (kindle)" - a_a4pdf = etree.SubElement(ul, "a", attrib={"class": "pdf", "href": songbook.id()+"_a4.pdf"}) + a_a4pdf = etree.SubElement(ul, "a", attrib={"class": "pdf", "href": os.path.join("songs_tex", songbook.id()+"_a4.pdf")}) a_a4pdf.text = "PDF (a4)" - a_a5pdf = etree.SubElement(ul, "a", attrib={"class": "pdf", "href": songbook.id()+"_a5.pdf"}) + a_a5pdf = etree.SubElement(ul, "a", attrib={"class": "pdf", "href": os.path.join("songs_tex", songbook.id()+"_a5.pdf")}) a_a5pdf.text = "PDF (a5)" et = etree.ElementTree(tree.getroot()) et.write(out_path, pretty_print=True, method='xml', encoding='utf-8', xml_declaration=True) def main(): - target_dir = os.path.join(sb.repo_dir(), "build") # gdzie ma utworzyć epub songbook_file = os.path.join(sb.repo_dir(), "songbooks/default.songbook.yaml") if len(sys.argv) == 1 else sys.argv[1] songbook = sb.load_songbook_spec_from_yaml(songbook_file) - target_dir = os.path.join(sb.repo_dir(), "build", "songs_html") + target_dir = os.path.join(sb.repo_dir(), "build") create_index_xhtml(songbook.list_of_songs(), target_dir) From 60261b405285a7e419b4eaa155ad1a999fe2dae2 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 17 Jul 2024 20:35:22 +0200 Subject: [PATCH 482/664] It's xhtml. --- .github/workflows/generate_all.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/generate_all.yml b/.github/workflows/generate_all.yml index 3218eb37..a8c44fd2 100644 --- a/.github/workflows/generate_all.yml +++ b/.github/workflows/generate_all.yml @@ -152,7 +152,7 @@ jobs: name: songbooks_htmls path: | /workspace/build/*.zip - /workspace/build/index.html + /workspace/build/index.xhtml - name: Upload htmls to release From 54ef9d8b98ea84ef5691df92cecbbf535e714850 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 17 Jul 2024 20:56:46 +0200 Subject: [PATCH 483/664] Add index. --- .github/workflows/publish_page.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish_page.yml b/.github/workflows/publish_page.yml index 9fe5bcb1..a4868458 100644 --- a/.github/workflows/publish_page.yml +++ b/.github/workflows/publish_page.yml @@ -60,7 +60,7 @@ jobs: run: | mkdir -p _site/songs_html _site/songs_tex unzip -o _generated/*.zip -d _site/songs_html - mv _generated/index.html _site/index.html + mv _generated/index.xhtml _site/index.xhtml mv _generated/*.pdf _site/songs_tex mv _generated/*.epub _site/ cp -R editor _site/ From 59305c25b60a10d180a96371c517c800d55232d8 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Wed, 17 Jul 2024 21:41:28 +0200 Subject: [PATCH 484/664] CSS for index was not linked correctly. --- src/epub/templates/template.css | 4 ++++ src/html/htmls_generator.py | 3 +++ src/html/templates/index.xhtml | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/epub/templates/template.css b/src/epub/templates/template.css index 6fe1f95d..ddd96754 100755 --- a/src/epub/templates/template.css +++ b/src/epub/templates/template.css @@ -46,4 +46,8 @@ body.index div.letters a { body.index div.letters { margin-top: 0; display: block; +} + +ul#songbooks a { + padding: 5ex; } \ No newline at end of file diff --git a/src/html/htmls_generator.py b/src/html/htmls_generator.py index fad4b645..d962c14f 100644 --- a/src/html/htmls_generator.py +++ b/src/html/htmls_generator.py @@ -20,6 +20,9 @@ def main(): os.mkdir(path_css) path_tmp_css_song = os.path.join(sb.repo_dir(), 'src', 'epub', 'templates', "song.css") shutil.copyfile(path_tmp_css_song, os.path.join(path_css, "song.css")) + path_tmp_css_song = os.path.join(sb.repo_dir(), 'src', 'epub', 'templates', "template.css") + shutil.copyfile(path_tmp_css_song, os.path.join(path_css, "template.css")) + if __name__ == "__main__": main() diff --git a/src/html/templates/index.xhtml b/src/html/templates/index.xhtml index be229871..cc84aea0 100644 --- a/src/html/templates/index.xhtml +++ b/src/html/templates/index.xhtml @@ -2,7 +2,7 @@ Śpiewnik - + - +
    @@ -43,6 +57,10 @@

    Wersję na Kindla możesz wgrać używając: https://www.amazon.com/sendtokindle

    Piosenki

    +
    + + +
    From 5ff01f70eb8891c8cf065b69f6059811b3da2b13 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sat, 7 Jun 2025 12:30:06 +0200 Subject: [PATCH 652/664] Update index.xhtml --- src/html/templates/index.xhtml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/html/templates/index.xhtml b/src/html/templates/index.xhtml index e544ca0d..2c7c13ee 100644 --- a/src/html/templates/index.xhtml +++ b/src/html/templates/index.xhtml @@ -58,8 +58,8 @@

    Piosenki

    - - + +
    From 9286b4b9c425c003d9c7f4735594a8f6200aef9f Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sat, 7 Jun 2025 13:54:47 +0200 Subject: [PATCH 653/664] Reformat xhtml --- src/html/templates/index.xhtml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/html/templates/index.xhtml b/src/html/templates/index.xhtml index 2c7c13ee..17ee7ba4 100644 --- a/src/html/templates/index.xhtml +++ b/src/html/templates/index.xhtml @@ -1,8 +1,9 @@ - + + Śpiewnik - + +
    @@ -60,9 +22,9 @@

    Piosenki

    - +
    - + \ No newline at end of file From b6591418a1ec541b70c8dfda81cec29a31600691 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sat, 7 Jun 2025 14:48:42 +0200 Subject: [PATCH 656/664] Add css. --- src/html/templates/songs_html/CSS/template.css | 1 + 1 file changed, 1 insertion(+) create mode 120000 src/html/templates/songs_html/CSS/template.css diff --git a/src/html/templates/songs_html/CSS/template.css b/src/html/templates/songs_html/CSS/template.css new file mode 120000 index 00000000..86c962d8 --- /dev/null +++ b/src/html/templates/songs_html/CSS/template.css @@ -0,0 +1 @@ +../../../../epub/templates/template.css \ No newline at end of file From be5d67f79c2b6eda6b0a9a115b969bbdee6faec2 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sat, 7 Jun 2025 15:24:41 +0200 Subject: [PATCH 657/664] Piosenka Jesienne wspominanki: Initial --- songs/pl/poezja/Jesienne_wspominanki.xml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/songs/pl/poezja/Jesienne_wspominanki.xml b/songs/pl/poezja/Jesienne_wspominanki.xml index 01ae97da..7e38d8b3 100644 --- a/songs/pl/poezja/Jesienne_wspominanki.xml +++ b/songs/pl/poezja/Jesienne_wspominanki.xml @@ -1,12 +1,6 @@ - Maciej Służała - - - - - Letnich wieczorów wspomnienie @@ -47,11 +41,12 @@ - + + + - From 996c148edf5442c286b43673265fb40880fb62f5 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sat, 7 Jun 2025 15:29:10 +0200 Subject: [PATCH 658/664] Piosenka Jesienne wspominanki: ...nic istotnego --- songs/pl/poezja/Jesienne_wspominanki.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/songs/pl/poezja/Jesienne_wspominanki.xml b/songs/pl/poezja/Jesienne_wspominanki.xml index 7e38d8b3..090b031c 100644 --- a/songs/pl/poezja/Jesienne_wspominanki.xml +++ b/songs/pl/poezja/Jesienne_wspominanki.xml @@ -1,6 +1,6 @@ - Maciej Służała + Maciej Służała Letnich wieczorów wspomnienie From 6069d34ef54199546840e36535189799af5b416a Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sat, 7 Jun 2025 15:30:17 +0200 Subject: [PATCH 659/664] =?UTF-8?q?Style=20nie=20powinny=20nadpisywa=C4=87?= =?UTF-8?q?=20piosenki?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/epub/templates/template.css | 4 ++-- src/html/templates/index.xhtml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/epub/templates/template.css b/src/epub/templates/template.css index d0f9f120..bf18acc2 100755 --- a/src/epub/templates/template.css +++ b/src/epub/templates/template.css @@ -30,7 +30,7 @@ a:hover { } /* --- Top Navigation --- */ -body > div:first-of-type { +div.top-navigation { background-color: #ffffff; padding: 1em 2em; border-radius: 8px; @@ -41,7 +41,7 @@ body > div:first-of-type { align-items: center; } -body > div:first-of-type a { +div.top-navigation a { font-weight: 500; } diff --git a/src/html/templates/index.xhtml b/src/html/templates/index.xhtml index f1ddc726..7ee01742 100644 --- a/src/html/templates/index.xhtml +++ b/src/html/templates/index.xhtml @@ -8,7 +8,7 @@ -
    +
    [Inne rozpoczęte edycje] [Dodaj piosenkę] [O edytowaniu] From 09b83e3f175414f318d624f4872f1e5a9d44d182 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sat, 21 Jun 2025 14:33:33 -0700 Subject: [PATCH 660/664] Change flows to use containers for spiewaj instead of wdw21. (#1) * Change flows to use containers for spiewaj instead of wdw21. * Fix creds. --- .github/workflows/generate_all.yml | 5 ++++- .github/workflows/generate_changed_pdf.yml | 5 ++++- .gitignore | 1 + containers/build_push_images.sh | 14 ++++++++------ 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/.github/workflows/generate_all.yml b/.github/workflows/generate_all.yml index a377d6c9..96a6d550 100644 --- a/.github/workflows/generate_all.yml +++ b/.github/workflows/generate_all.yml @@ -54,7 +54,10 @@ jobs: generate-artifacts: runs-on: ubuntu-latest container: - image: ghcr.io/wdw21/github-latex-worker:latest + image: ghcr.io/spiewaj/github-latex-worker:latest + credentials: + username: ${{ github.actor }} + password: ${{ secrets.github_token }} volumes: - ${{ github.workspace }}:/workspace steps: diff --git a/.github/workflows/generate_changed_pdf.yml b/.github/workflows/generate_changed_pdf.yml index 125f6054..d3a8b98d 100644 --- a/.github/workflows/generate_changed_pdf.yml +++ b/.github/workflows/generate_changed_pdf.yml @@ -9,7 +9,10 @@ jobs: Generate-artifacts: runs-on: ubuntu-latest container: - image: ghcr.io/wdw21/github-latex-worker:latest + image: ghcr.io/spiewaj/github-latex-worker:latest + credentials: + username: ${{ github.actor }} + password: ${{ secrets.github_token }} volumes: - ${{ github.workspace }}:/workspace steps: diff --git a/.gitignore b/.gitignore index 6c3cc281..7b5a5d53 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ npmtmp/ __pycache__/ node_modules/ *-download +.secrets diff --git a/containers/build_push_images.sh b/containers/build_push_images.sh index 04e464f7..40b068f3 100755 --- a/containers/build_push_images.sh +++ b/containers/build_push_images.sh @@ -2,21 +2,23 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +ORG="spiewaj" + set -e -x -#gh auth token | docker login ghcr.io -u ptabor --password-stdin # Authorization using: # - https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens # - https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry # The token is configured here: https://github.com/settings/tokens for scopes: delete:packages, repo, write:packages #echo "{PERSONAL_ACCESS_TOKEN}" | docker login ghcr.io -u ptabor --password-stdin +# If you forget - you need to regenerate. -cd "${SCRIPT_DIR}/.." -docker build -f "${SCRIPT_DIR}/Dockerfile" -t europe-docker.pkg.dev/wdw-21/songbook/github-latex-worker:latest --platform linux/amd64 . -docker image tag europe-docker.pkg.dev/wdw-21/songbook/github-latex-worker ghcr.io/wdw21/github-latex-worker:latest +cd "${SCRIPT_DIR}/.." +docker build -f "${SCRIPT_DIR}/Dockerfile" -t europe-docker.pkg.dev/$ORG/songbook/github-latex-worker:latest --platform linux/amd64 . -docker push europe-docker.pkg.dev/wdw-21/songbook/github-latex-worker:latest +docker image tag europe-docker.pkg.dev/$ORG/songbook/github-latex-worker ghcr.io/$ORG/github-latex-worker:latest +# docker push europe-docker.pkg.dev/$ORG/songbook/github-latex-worker:latest -docker push ghcr.io/wdw21/github-latex-worker:latest +docker push ghcr.io/$ORG/github-latex-worker:latest From 3e4aa1994347cd68f0f3ce0d2d4ba653201a4ca4 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sun, 22 Jun 2025 03:58:47 -0700 Subject: [PATCH 661/664] Split CSSes between epub and html (#2) * Change flows to use containers for spiewaj instead of wdw21. * Fix creds. * Split CSS for kindle / epub from the web one. * Make CSS more compact... and navigation easier to click. * Use separate CSSes for published html * Navigation starts at 19 songs. * Dereference symlinks. * Fix render.js rendering. --- requirements.txt | 2 +- src/epub/create_epub.py | 27 +-- src/epub/templates/common.css | 13 ++ src/epub/templates/content.opf | 4 +- src/epub/templates/cover.xhtml | 2 +- src/epub/templates/index.css | 1 + src/epub/templates/index.xhtml | 2 +- src/epub/templates/song.css | 168 +----------------- src/epub/templates/song_common.css | 1 + src/epub/templates/songs.xhtml | 2 +- src/epub/templates/toc.xhtml | 2 +- src/epub/templates/toc_letter.xhtml | 2 +- src/html/create_songs_html.py | 4 +- src/html/css/common.css | 50 ++++++ .../template.css => html/css/index.css} | 2 + src/html/css/song.css | 1 + src/html/css/song_common.css | 168 ++++++++++++++++++ src/html/htmls_generator.py | 13 +- src/html/index_generator.py | 3 +- src/html/templates/index.xhtml | 8 +- 20 files changed, 283 insertions(+), 192 deletions(-) create mode 100644 src/epub/templates/common.css create mode 100755 src/epub/templates/index.css create mode 120000 src/epub/templates/song_common.css create mode 100644 src/html/css/common.css rename src/{epub/templates/template.css => html/css/index.css} (99%) create mode 100644 src/html/css/song.css create mode 100644 src/html/css/song_common.css diff --git a/requirements.txt b/requirements.txt index 6f55c472..3d8a425c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ Jinja2~=3.1 #lxml==4.5.0 - `sudo apt-get install python3-lxml` (or similar) works better, as it's not python-native package. MarkupSafe~=2.1 -lxml~=4.9 +lxml PyICU>=2.7 pyyaml regex \ No newline at end of file diff --git a/src/epub/create_epub.py b/src/epub/create_epub.py index c35a4f5a..ce52df41 100644 --- a/src/epub/create_epub.py +++ b/src/epub/create_epub.py @@ -18,11 +18,13 @@ def actual_date(): def actual_datetime(): return str(datetime.now().strftime("%Y-%m-%d %H:%M")) +NO_NAV_LIMIT = 19 # # def name_of_file(song): # return os.path.splitext(os.path.split(song)[1])[0] +CSS_FILES = ["song.css", "common.css", "song_common.css", "index.css"] def create_content_opf(songbook, list_of_songs_meta, target_dir, pre_files=[], post_files=[]): tmp_path =os.path.join(sb.repo_dir(), "src", "epub", "templates", "content.opf") @@ -67,7 +69,7 @@ def create_toc_ncx(list_of_songs_meta, target_dir): last_letter='' playOrder=1 for i in range(len(list_of_songs_meta)): - if len(list_of_songs_meta) > 20 and last_letter != groupName(list_of_songs_meta[i].title()): + if len(list_of_songs_meta) > NO_NAV_LIMIT and last_letter != groupName(list_of_songs_meta[i].title()): last_letter = groupName(list_of_songs_meta[i].title()) parent_np = etree.SubElement(navmap, "navPoint") parent_np.attrib['id'] = 'p' + str(playOrder) @@ -110,7 +112,7 @@ def extract_toc_songs(list_of_songs_meta): group = None last_letter = None for i in range(len(list_of_songs_meta)): - if len(list_of_songs_meta) > 20 and last_letter != groupName(list_of_songs_meta[i].effectiveTitle()): + if len(list_of_songs_meta) > NO_NAV_LIMIT and last_letter != groupName(list_of_songs_meta[i].effectiveTitle()): group = groupName(list_of_songs_meta[i].effectiveTitle()) if not group in d: d[group] = [] @@ -250,12 +252,13 @@ def create_template_epub(songbook, target_path): path_tmp_meta = os.path.join(template_dir, "container.xml") resolveTemplate(songbook, path_tmp_meta, os.path.join(path_meta, "container.xml")) - path_tmp_css_song = os.path.join(template_dir, "song.css") - path_tmp_css_template = os.path.join(template_dir, "template.css") - path_tmp_mimetype = os.path.join(template_dir, "mimetype") + for css_file in CSS_FILES: + path_tmp_css = os.path.join(template_dir, css_file) + print("Linking CSS file: " + path_tmp_css + " to " + os.path.join(path_css, css_file)) + os.symlink(path_tmp_css, os.path.join(path_css, css_file)) + - shutil.copyfile(path_tmp_css_song, os.path.join(path_css, "song.css")) - shutil.copyfile(path_tmp_css_template, os.path.join(path_css, "template.css")) + path_tmp_mimetype = os.path.join(template_dir, "mimetype") shutil.copyfile(path_tmp_mimetype, os.path.join(path_epub, "mimetype")) shutil.copyfile(songbook.imageWebPath(), os.path.join(path_images, "cover." + songbook.imageWebExt())) @@ -300,11 +303,11 @@ def package_epub(songbook, target_dir, target_file="spiewnik.epub"): file_list = os.listdir(os.path.join(target_dir_epub, "OEBPS")) for file in file_list: if file != 'CSS': - myzip.write(os.path.join(target_dir_epub, "OEBPS", file), arcname=os.path.join("OEBPS", file)) - myzip.write(os.path.join(target_dir_epub, "OEBPS", "CSS", "template.css"), - arcname=os.path.join("OEBPS", "CSS", "template.css")) - myzip.write(os.path.join(target_dir_epub, "OEBPS", "CSS", "song.css"), - arcname=os.path.join("OEBPS", "CSS", "song.css")) + src_path = os.path.realpath(os.path.join(target_dir_epub, "OEBPS", file)) + myzip.write(src_path, arcname=os.path.join("OEBPS", file)) + for css_file in CSS_FILES: + src_path = os.path.realpath(os.path.join(target_dir_epub, "OEBPS", "CSS", css_file)) + myzip.write(src_path, arcname=os.path.join("OEBPS", "CSS", css_file)) myzip.write(os.path.join(target_dir_epub, "OEBPS", "images", "cover."+songbook.imageWebExt()), arcname=os.path.join("OEBPS", "images", "cover."+songbook.imageWebExt())) diff --git a/src/epub/templates/common.css b/src/epub/templates/common.css new file mode 100644 index 00000000..7cc7424c --- /dev/null +++ b/src/epub/templates/common.css @@ -0,0 +1,13 @@ +div.letters { + margin-top: 1em; + line-height: 5ex; + max-width: 35em; + text-align: center; +} + +div.letters a { + font-weight: bold; + font-size: x-large; + padding-left: 0.3em; + padding-right: 0.3em; +} \ No newline at end of file diff --git a/src/epub/templates/content.opf b/src/epub/templates/content.opf index 0deb8802..cda117f5 100755 --- a/src/epub/templates/content.opf +++ b/src/epub/templates/content.opf @@ -21,8 +21,10 @@ - + + + diff --git a/src/epub/templates/cover.xhtml b/src/epub/templates/cover.xhtml index f2ea5bae..ed705c47 100644 --- a/src/epub/templates/cover.xhtml +++ b/src/epub/templates/cover.xhtml @@ -3,7 +3,7 @@ :title: - +

    :title:

    diff --git a/src/epub/templates/index.css b/src/epub/templates/index.css new file mode 100755 index 00000000..d27a3162 --- /dev/null +++ b/src/epub/templates/index.css @@ -0,0 +1 @@ +@import url('common.css'); \ No newline at end of file diff --git a/src/epub/templates/index.xhtml b/src/epub/templates/index.xhtml index 9b3dcd74..47760d7c 100755 --- a/src/epub/templates/index.xhtml +++ b/src/epub/templates/index.xhtml @@ -3,7 +3,7 @@ Index - +

    Index

    diff --git a/src/epub/templates/song.css b/src/epub/templates/song.css index 4b8d16c3..2eec300f 100644 --- a/src/epub/templates/song.css +++ b/src/epub/templates/song.css @@ -1,166 +1,6 @@ -/* Kindle specyfic chords styling, as kindle stopped supporting 'width' property in the inline-block. */ - -body { - font-family: sans-serif; -} - -div.song_body { - width: max-content; - display: table; -} - -/* Per block settings - Chorus, Verses, Instrumental */ - -div.verse, div.chorus, div.other { - display: contents; -} - -div.chorus div.row span.lyric { - padding-left: 3ex; -} - -div.block_spacer { - display: table-row; - empty-cells: show; - height: 2.5ex; -} - -/* Per row settings*/ - -div.row { - display: table-row; - page-break-inside: avoid; - page-break-after: avoid; -} - -div.row:last-of-type { - page-break-after: auto; -} - -/* Lyrics */ - -span.block_id, span.lyric, span.chords, span.bis_inactive, span.bis_active, span.chords_ins { - display: table-cell; -} - -span.block_id { - padding-top: 1ex; - page-break-inside: avoid; - page-break-after: avoid; -} -/* margin-right: 0.5em;*/ -/*}*/ - -/* As there is no call-span in CSS we allow the instrumental row to overflow */ -span.chords_ins { - max-width: 5em; - padding-left: 1em; - text-overflow: ellipsis; - white-space: nowrap; -} - -/* Chords above the text */ - -span.lyric span.chunk { - display: inline-table; - /*border: 1px solid green;*/ - vertical-align: bottom; -} - -span.lyric span.chord { - display: table-row; - /*border: 1px solid orange;*/ - max-height: 0; -} - -span.lyric span.chord span.ch{ - display: table-cell; -} - -span.lyric span.content { - display: table-row; - /*border: 1px solid red;*/ - /*overflow-wrap: normal;*/ - /*white-space: nowrap;*/ - /*hyphens: none;*/ -} - -span.lyric span.content-i { - display: table-cell; - /*border: 1px solid red;*/ - white-space: pre-line; - overflow-wrap: normal; - /*white-space: nowrap;*/ - /*empty-cells: show;*/ - hyphens: none; - height: 2.2ex; -} - -span.ws { - display: inline-block; - opacity: 0; -} - -div.over_false span.lyric span.ch { - display: none; -} - -/*!* Generic styling*!*/ +@import url('song_common.css'); h1 { - text-align: left; -} - -span.lyric span.ch { - font-family: sans-serif; - font-size: xx-small; - font-weight: bolder; -} - -span.ch { - font-family: sans-serif; - font-weight: bolder; -} - -span.chords span.ch { - padding-right: 0.3em; -} - -span.chords { - padding-left: 1em; - padding-right: 1em; - max-width: 10em; - overflow-wrap: break-word; - - /* not sure if needed... commenting for now*/ - /* overflow-wrap: break-word;*/ - /* hyphens: none;*/ - /* white-space: nowrap;*/ -} - -span.content_creator { - margin-top: 0.0em; - font-style: italic; - font-weight: bold; - font-size: small; -} - -div.row > span.bis_inactive { - padding-right: 0.4em; - empty-cells: show; - width: 2em; -} - -div.row > span.bis_active { - padding-left: 0.4em; - padding-right: 0.3em; - border-right: solid; - empty-cells: show; - text-align: right; - width: 2em; /* fixed length makes it more likely on kindle to finish at the same place */ -} - -div.comment { - margin-top: 1.2em; - font-style: italic; -} + margin-top: 0.5em; + margin-bottom: 0.5em; +} \ No newline at end of file diff --git a/src/epub/templates/song_common.css b/src/epub/templates/song_common.css new file mode 120000 index 00000000..fb5f83f9 --- /dev/null +++ b/src/epub/templates/song_common.css @@ -0,0 +1 @@ +../../html/css/song_common.css \ No newline at end of file diff --git a/src/epub/templates/songs.xhtml b/src/epub/templates/songs.xhtml index 8f93443d..7f9550fd 100755 --- a/src/epub/templates/songs.xhtml +++ b/src/epub/templates/songs.xhtml @@ -3,7 +3,7 @@ Index - +

    Piosenki

    diff --git a/src/epub/templates/toc.xhtml b/src/epub/templates/toc.xhtml index 863899ad..9119f0d4 100755 --- a/src/epub/templates/toc.xhtml +++ b/src/epub/templates/toc.xhtml @@ -3,7 +3,7 @@ Spis piosenek - +