diff --git a/.krazy b/.krazy --- a/.krazy +++ b/.krazy @@ -1,2 +1,3 @@ -EXTRA kdebug,null,defines,qenums +EXTRA camelcase,defines,kdebug,null,qenums,tipsandthis + SKIP /scanholiday|/parseholiday|/parsers/plan1|/parsers/plan2|/tests/ diff --git a/.reviewboardrc b/.reviewboardrc deleted file mode 100644 --- a/.reviewboardrc +++ /dev/null @@ -1,5 +0,0 @@ -REVIEWBOARD_URL = "https://git.reviewboard.kde.org" -REPOSITORY = "git://anongit.kde.org/kholidays" -BRANCH = "master" -TARGET_GROUPS = "kdeframeworks" -TARGET_PEOPLE = "jlayt" diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,12 +1,11 @@ cmake_minimum_required(VERSION 3.0) -set(PIM_VERSION "5.5.40") -project(KHolidays VERSION ${PIM_VERSION}) +set(KF5_VERSION "5.48.0") +project(KHolidays VERSION ${KF5_VERSION}) -# ECM setup -set(KF5_VERSION "5.32.0") -find_package(ECM ${KF5_VERSION} CONFIG REQUIRED) +find_package(ECM 5.47.0 REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) +set(CMAKE_AUTORCC ON) include(GenerateExportHeader) include(ECMGenerateHeaders) @@ -19,44 +18,54 @@ include(KDECMakeSettings) include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE) include(ECMCoverageOption) +include(ECMAddQch) - - -set(KHOLIDAYS_LIB_VERSION ${PIM_VERSION}) +set(KHOLIDAYS_LIB_VERSION ${KF5_VERSION}) ecm_setup_version(PROJECT VARIABLE_PREFIX KHOLIDAYS VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kholidays_version.h" PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF5HolidaysConfigVersion.cmake" SOVERSION 5 ) +option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF) +add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)") + ########### Find packages ########### -set(QT_REQUIRED_VERSION 5.7.0) +set(QT_REQUIRED_VERSION 5.8.0) find_package(Qt5 ${QT_REQUIRED_VERSION} CONFIG REQUIRED Core Qml) remove_definitions(-DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII) -add_definitions( -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT ) +add_definitions(-DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT) ########### Targets ########### add_subdirectory(src) if(BUILD_TESTING) - add_subdirectory(autotests) + add_subdirectory(autotests) endif() -add_subdirectory(holidays) - -if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/po") - ecm_install_po_files_as_qm(po) +if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/po") + ecm_install_po_files_as_qm(po) endif() ########### CMake Config Files ########### set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF5Holidays") +if(BUILD_QCH) + ecm_install_qch_export( + TARGETS KF5Holidays_QCH + FILE KF5HolidaysQchTargets.cmake + DESTINATION "${CMAKECONFIG_INSTALL_DIR}" + COMPONENT Devel + ) + set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KF5HolidaysQchTargets.cmake\")") +endif() + configure_package_config_file( "${CMAKE_CURRENT_SOURCE_DIR}/KF5HolidaysConfig.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/KF5HolidaysConfig.cmake" - INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} + INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} ) install(FILES @@ -69,7 +78,7 @@ install(EXPORT KF5HolidaysTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KF5HolidaysTargets.cmake NAMESPACE KF5::) install(FILES - ${CMAKE_CURRENT_BINARY_DIR}/kholidays_version.h + ${CMAKE_CURRENT_BINARY_DIR}/kholidays_version.h DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5} COMPONENT Devel ) diff --git a/KF5HolidaysConfig.cmake.in b/KF5HolidaysConfig.cmake.in --- a/KF5HolidaysConfig.cmake.in +++ b/KF5HolidaysConfig.cmake.in @@ -1,5 +1,7 @@ @PACKAGE_INIT@ +include(CMakeFindDependencyMacro) find_dependency(Qt5Core @REQUIRED_QT_VERSION@) include("${CMAKE_CURRENT_LIST_DIR}/KF5HolidaysTargets.cmake") +@PACKAGE_INCLUDE_QCHTARGETS@ diff --git a/README.md b/README.md --- a/README.md +++ b/README.md @@ -1,4 +1,8 @@ # KHolidays # +Dates for holidays and other special events + +## Introduction + This library provides a C++ API that determines holiday and other special events for a geographical region. diff --git a/autotests/CMakeLists.txt b/autotests/CMakeLists.txt --- a/autotests/CMakeLists.txt +++ b/autotests/CMakeLists.txt @@ -7,43 +7,43 @@ set(testlunar_SRCS testlunar.cpp) add_executable(testlunar ${testlunar_SRCS}) -add_test(testlunar testlunar) +add_test(NAME testlunar COMMAND testlunar) ecm_mark_as_test(testlunar) target_link_libraries(testlunar KF5Holidays Qt5::Test) ########### next target ############### set(testseasons_SRCS testseasons.cpp) add_executable(testseasons ${testseasons_SRCS}) -add_test(testseasons testseasons) +add_test(NAME testseasons COMMAND testseasons) ecm_mark_as_test(testseasons) target_link_libraries(testseasons KF5Holidays Qt5::Test) ########### next target ############### set(testsunriseset_SRCS testsunriseset.cpp) add_executable(testsunriseset ${testsunriseset_SRCS}) -add_test(testsunriseset testsunriseset) +add_test(NAME testsunriseset COMMAND testsunriseset) ecm_mark_as_test(testsunriseset) target_link_libraries(testsunriseset KF5Holidays Qt5::Test) ########### next target ############### set(testzodiac_SRCS testzodiac.cpp) add_executable(testzodiac ${testzodiac_SRCS}) -add_test(testzodiac testzodiac) +add_test(NAME testzodiac COMMAND testzodiac) ecm_mark_as_test(testzodiac) target_link_libraries(testzodiac KF5Holidays Qt5::Test) ########### next target ############### set(testholidayregion_SRCS testholidayregion.cpp) add_executable(testholidayregion ${testholidayregion_SRCS}) -add_test(testholidayregion testholidayregion) +add_test(NAME testholidayregion COMMAND testholidayregion) set_target_properties(testholidayregion PROPERTIES COMPILE_FLAGS -DKDESRCDIR="\\"${CMAKE_CURRENT_SOURCE_DIR}/\\"") ecm_mark_as_test(testholidayregion) diff --git a/autotests/testholidayregion.h b/autotests/testholidayregion.h --- a/autotests/testholidayregion.h +++ b/autotests/testholidayregion.h @@ -22,7 +22,7 @@ #ifndef TESTHOLIDAYREGION_H #define TESTHOLIDAYREGION_H -#include +#include #include "holidayregion.h" diff --git a/autotests/testholidayregion.cpp b/autotests/testholidayregion.cpp --- a/autotests/testholidayregion.cpp +++ b/autotests/testholidayregion.cpp @@ -21,11 +21,11 @@ #include "testholidayregion.h" -#include +#include #include #include -#include -#include +#include +#include QTEST_MAIN(HolidayRegionTest) @@ -48,7 +48,9 @@ { if (holidays.count() > 0) { foreach (const KHolidays::Holiday &holiday, holidays) { - qDebug() << "Date = " << holiday.observedStartDate().toString(Qt::ISODate) << " Duration = " << holiday.duration() << " Name = " << holiday.name(); + qDebug() << "Date = " << holiday.observedStartDate().toString(Qt::ISODate) + << " Duration = " << holiday.duration() + << " Name = " << holiday.name(); } } else { qDebug() << "No holidays"; diff --git a/autotests/testlunar.h b/autotests/testlunar.h --- a/autotests/testlunar.h +++ b/autotests/testlunar.h @@ -22,7 +22,7 @@ #ifndef TESTLUNAR_H #define TESTLUNAR_H -#include +#include class LunarTest : public QObject { diff --git a/autotests/testlunar.cpp b/autotests/testlunar.cpp --- a/autotests/testlunar.cpp +++ b/autotests/testlunar.cpp @@ -20,17 +20,17 @@ */ #include "testlunar.h" -#include -#include + +#include +#include QTEST_MAIN(LunarTest) #include "kholidays/lunarphase.h" using namespace KHolidays; void LunarTest::test2005() { - QList fQ2005, fM2005, lQ2005, nM2005; //2005 first quarter moons fQ2005.append(QDate(2005, 1, 16)); diff --git a/autotests/testseasons.h b/autotests/testseasons.h --- a/autotests/testseasons.h +++ b/autotests/testseasons.h @@ -22,7 +22,7 @@ #ifndef TESTSEASONS_H #define TESTSEASONS_H -#include +#include class SeasonsTest : public QObject { diff --git a/autotests/testseasons.cpp b/autotests/testseasons.cpp --- a/autotests/testseasons.cpp +++ b/autotests/testseasons.cpp @@ -20,13 +20,13 @@ */ #include "testseasons.h" -#include - -QTEST_MAIN(SeasonsTest) - #include "astroseasons.h" using namespace KHolidays; +#include + +QTEST_MAIN(SeasonsTest) + void SeasonsTest::test2005() { AstroSeasons as; diff --git a/autotests/testsunriseset.h b/autotests/testsunriseset.h --- a/autotests/testsunriseset.h +++ b/autotests/testsunriseset.h @@ -22,7 +22,7 @@ #ifndef TESTSUNRISE_H #define TESTSUNRISE_H -#include +#include class SunriseTest : public QObject { diff --git a/autotests/testsunriseset.cpp b/autotests/testsunriseset.cpp --- a/autotests/testsunriseset.cpp +++ b/autotests/testsunriseset.cpp @@ -20,14 +20,14 @@ */ #include "testsunriseset.h" -#include - -QTEST_MAIN(SunriseTest) - #include "sunriseset.h" using namespace KHolidays; using namespace SunRiseSet; +#include + +QTEST_MAIN(SunriseTest) + void SunriseTest::TestSunrise() { //test bogus latitudes and longitudes diff --git a/autotests/testzodiac.cpp b/autotests/testzodiac.cpp --- a/autotests/testzodiac.cpp +++ b/autotests/testzodiac.cpp @@ -21,20 +21,17 @@ #include "zodiac.h" -#include - #include #include -#include +#include #include using namespace KHolidays; using namespace std; int main(int argc, char **argv) { - QCoreApplication app(argc, argv); Zodiac::ZodiacSigns sign; diff --git a/docs/Doxyfile.local b/docs/Doxyfile.local new file mode 100644 --- /dev/null +++ b/docs/Doxyfile.local @@ -0,0 +1 @@ +EXCLUDE_PATTERNS += */parsers/* diff --git a/holidays/CMakeLists.txt b/holidays/CMakeLists.txt deleted file mode 100644 --- a/holidays/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -install(DIRECTORY plan2 DESTINATION ${KDE_INSTALL_DATADIR_KF5}/libkholidays PATTERN "*~" EXCLUDE) diff --git a/holidays/holidays.qrc b/holidays/holidays.qrc new file mode 100644 --- /dev/null +++ b/holidays/holidays.qrc @@ -0,0 +1,134 @@ + + + plan2/holiday_ar_es + plan2/holiday_at_de + plan2/holiday_au-act_en-gb + plan2/holiday_au-nsw_en-gb + plan2/holiday_au-nt_en-gb + plan2/holiday_au-qld_en-gb + plan2/holiday_au-sa_en-gb + plan2/holiday_au-tas_en-gb + plan2/holiday_au-vic_en-gb + plan2/holiday_au-wa_en-gb + plan2/holiday_ba-srp_sr + plan2/holiday_ba-srp_sr@ijekavian + plan2/holiday_ba-srp_sr@ijekavianlatin + plan2/holiday_ba-srp_sr@latin + plan2/holiday_bb_en-gb + plan2/holiday_be_fr + plan2/holiday_be_nl + plan2/holiday_be_wa + plan2/holiday_bg_bg + plan2/holiday_br_pt-br + plan2/holiday_by_be + plan2/holiday_ca-qc_fr + plan2/holiday_ca_en-gb + plan2/holiday_ch_de + plan2/holiday_ch_fr + plan2/holiday_ch_it + plan2/holiday_cl_es + plan2/holiday_cm_en + plan2/holiday_cm_fr + plan2/holiday_cn_zh-cn + plan2/holiday_co_es + plan2/holiday_cr_en + plan2/holiday_cr_es + plan2/holiday_cz_cs + plan2/holiday_de-bb_de + plan2/holiday_de-bw_de + plan2/holiday_de-by_de + plan2/holiday_de-hh_de + plan2/holiday_de-mv_de + plan2/holiday_de-nw_de + plan2/holiday_de-rp_de + plan2/holiday_de-sh_de + plan2/holiday_de-sl_de + plan2/holiday_de-sn_de + plan2/holiday_de-st_de + plan2/holiday_de-th_de + plan2/holiday_de_de + plan2/holiday_dk_da + plan2/holiday_dz_ar + plan2/holiday_dz_fr + plan2/holiday_ee_et + plan2/holiday_eg_ar + plan2/holiday_es-ct_ca + plan2/holiday_es_es + plan2/holiday_fi_fi + plan2/holiday_fr_fr + plan2/holiday_gb-eaw_en-gb + plan2/holiday_gb-nir_en-gb + plan2/holiday_gb-sct_en-gb + plan2/holiday_gf_fr + plan2/holiday_gp_fr + plan2/holiday_gr_el + plan2/holiday_gr_el_nameday + plan2/holiday_gt_es + plan2/holiday_hk_en-gb + plan2/holiday_hk_zh-cn + plan2/holiday_hr_hr + plan2/holiday_hu_hu + plan2/holiday_id_en-us + plan2/holiday_id_id + plan2/holiday_ie_en-gb + plan2/holiday_ie_ga + plan2/holiday_il_en-us + plan2/holiday_il_he + plan2/holiday_in_en-gb + plan2/holiday_ir_en-us + plan2/holiday_ir_fa + plan2/holiday_is_is + plan2/holiday_it-bz_de + plan2/holiday_it_it + plan2/holiday_jm_en-gb + plan2/holiday_jp_en-us + plan2/holiday_jp_ja + plan2/holiday_kr_ko + plan2/holiday_kz_kk + plan2/holiday_kz_ru + plan2/holiday_lt_lt + plan2/holiday_lu_fr + plan2/holiday_lu_lb + plan2/holiday_lv_lv + plan2/holiday_ma_ar + plan2/holiday_ma_fr + plan2/holiday_mq_fr + plan2/holiday_mu_en + plan2/holiday_mx_es + plan2/holiday_na_en-gb + plan2/holiday_nc_fr + plan2/holiday_nl_nl + plan2/holiday_no_nb + plan2/holiday_no_nn + plan2/holiday_nz_en-gb + plan2/holiday_pa_en + plan2/holiday_pa_es + plan2/holiday_pe_es + plan2/holiday_pf_fr + plan2/holiday_pl_pl + plan2/holiday_pt_pt + plan2/holiday_py_es + plan2/holiday_re_fr + plan2/holiday_ro_ro + plan2/holiday_rs_sr + plan2/holiday_rs_sr@ijekavian + plan2/holiday_rs_sr@ijekavianlatin + plan2/holiday_rs_sr@latin + plan2/holiday_ru_ru + plan2/holiday_se_sv + plan2/holiday_sg_en-gb + plan2/holiday_si_sl + plan2/holiday_sk_sk + plan2/holiday_sm_it + plan2/holiday_th_en-gb + plan2/holiday_tr_en-gb + plan2/holiday_tr_tr + plan2/holiday_ua_uk + plan2/holiday_us_en-us + plan2/holiday_uy_es + plan2/holiday_ve_es + plan2/holiday_wf_fr + plan2/holiday_yt_fr + plan2/holiday_za_en-gb + + diff --git a/holidays/plan2/holiday_ar_es b/holidays/plan2/holiday_ar_es --- a/holidays/plan2/holiday_ar_es +++ b/holidays/plan2/holiday_ar_es @@ -85,15 +85,8 @@ :: Daylight Saving -:: Seasons -"Equinoxio de otoño" seasonal on march 21 -"Solsticio de invierno" seasonal on june 21 -"Equinoxio de primavera" seasonal on september 21 -"Solsticio de verano" seasonal on december 21 - :: Name Days - :: To be sorted "Jueves Santo" civil on easter minus 3 "Día de Reyes" civil on january 6 diff --git a/holidays/plan2/holiday_ba-srp_sr b/holidays/plan2/holiday_ba-srp_sr --- a/holidays/plan2/holiday_ba-srp_sr +++ b/holidays/plan2/holiday_ba-srp_sr @@ -55,10 +55,4 @@ "Летње рачунање времена (ГМТ+2)" seasonal on last sunday in march "Зимско рачунање времена (ГМТ+1)" seasonal on last sunday in october -:: Seasons -"Први дан пролећа" seasonal on march 20 -"Први дан лета" seasonal on june 21 -"Први дан јесени" seasonal on september 23 -"Први дан зиме" seasonal on december 22 - :: Name Days diff --git a/holidays/plan2/holiday_ba-srp_sr@ijekavian b/holidays/plan2/holiday_ba-srp_sr@ijekavian --- a/holidays/plan2/holiday_ba-srp_sr@ijekavian +++ b/holidays/plan2/holiday_ba-srp_sr@ijekavian @@ -55,10 +55,4 @@ "Љетње рачунање времена (ГМТ+2)" seasonal on last sunday in march "Зимско рачунање времена (ГМТ+1)" seasonal on last sunday in october -:: Seasons -"Први дан прољећа" seasonal on march 20 -"Први дан љета" seasonal on june 21 -"Први дан јесени" seasonal on september 23 -"Први дан зиме" seasonal on december 22 - :: Name Days diff --git a/holidays/plan2/holiday_ba-srp_sr@ijekavianlatin b/holidays/plan2/holiday_ba-srp_sr@ijekavianlatin --- a/holidays/plan2/holiday_ba-srp_sr@ijekavianlatin +++ b/holidays/plan2/holiday_ba-srp_sr@ijekavianlatin @@ -55,10 +55,4 @@ "Ljetnje računanje vremena (GMT+2)" seasonal on last sunday in march "Zimsko računanje vremena (GMT+1)" seasonal on last sunday in october -:: Seasons -"Prvi dan proljeća" seasonal on march 20 -"Prvi dan ljeta" seasonal on june 21 -"Prvi dan jeseni" seasonal on september 23 -"Prvi dan zime" seasonal on december 22 - :: Name Days diff --git a/holidays/plan2/holiday_ba-srp_sr@latin b/holidays/plan2/holiday_ba-srp_sr@latin --- a/holidays/plan2/holiday_ba-srp_sr@latin +++ b/holidays/plan2/holiday_ba-srp_sr@latin @@ -55,10 +55,4 @@ "Letnje računanje vremena (GMT+2)" seasonal on last sunday in march "Zimsko računanje vremena (GMT+1)" seasonal on last sunday in october -:: Seasons -"Prvi dan proleća" seasonal on march 20 -"Prvi dan leta" seasonal on june 21 -"Prvi dan jeseni" seasonal on september 23 -"Prvi dan zime" seasonal on december 22 - :: Name Days diff --git a/holidays/plan2/holiday_br_pt-br b/holidays/plan2/holiday_br_pt-br --- a/holidays/plan2/holiday_br_pt-br +++ b/holidays/plan2/holiday_br_pt-br @@ -45,12 +45,6 @@ :: Daylight Saving -:: Seasons -"Início do Outono" seasonal on march 22 -"Início do Inverno" seasonal on june 22 -"Início da Primavera" seasonal on september 22 -"Início do Verão" seasonal on december 22 - :: Name Days diff --git a/holidays/plan2/holiday_de-bb_de b/holidays/plan2/holiday_de-bb_de new file mode 100644 --- /dev/null +++ b/holidays/plan2/holiday_de-bb_de @@ -0,0 +1,66 @@ +:: +:: Country: Germany +:: +:: Language: German +:: +:: Author: Tobias Leupold +:: +:: Updated: 2018-03-25 +:: +:: Source: +:: https://www.bmi.bund.de/DE/themen/verfassung/staatliche-symbole/nationale-feiertage/nationale-feiertage-artikel.html +:: https://de.wikipedia.org/wiki/Gesetzliche_Feiertage_in_Deutschland +:: + +:: Metadata +country "DE" +language "de" +:name "optional - defaults to country name" +description "Feiertage für Deutschland (Brandenburg)" + +:: ---------- This part is specific for Brandenburg ---------- + +"Reformationstag" public on 31.10. + +:: ---------- This part is shared across all Federal States of Germany ---------- + +:: Public Holidays +"Neujahr" public on 1.1. +"Karfreitag" public on easter minus 2 days +"Ostermontag" public on easter plus 1 days +"Christi Himmelfahrt" public on easter plus 39 days +"Pfingstmontag" public on easter plus 50 days +"1. Mai" public on 1.5. +"Tag der Deutschen Einheit" public on 3.10. +"1. Weihnachtsfeiertag" public on 25.12. +"2. Weihnachtsfeiertag" public on 26.12. + +:: Religious +"Gründonnerstag" religious on easter minus 3 days +"Ostersonntag" religious on easter +"Pfingstsonntag" religious on easter plus 49 days +"Nikolaus" religious on 6.12. +"1. Advent" religious on sunday before december 24 minus 21 days +"2. Advent" religious on sunday before december 24 minus 14 days +"3. Advent" religious on sunday before december 24 minus 7 days +"4. Advent" religious on sunday before december 24 +"Heiliger Abend" religious on december 24 + +:: Financial + +:: Cultural +"Silvester" cultural on december 31 +"Rosenmontag" cultural on easter minus 48 days +"Faschingsdienstag" cultural on easter minus 47 days +"Aschermittwoch" cultural on easter minus 46 days +"Muttertag" cultural on second sunday in may + +:: School + +:: Daylight Saving +"Beginn der Sommerzeit" seasonal on last sunday in march +"Beginn der Winterzeit" seasonal on last sunday in october + +:: Seasons + +:: Name Days diff --git a/holidays/plan2/holiday_de-bw_de b/holidays/plan2/holiday_de-bw_de new file mode 100644 --- /dev/null +++ b/holidays/plan2/holiday_de-bw_de @@ -0,0 +1,69 @@ +:: +:: Country: Germany +:: +:: Language: German +:: +:: Author: Tobias Leupold +:: +:: Updated: 2018-03-25 +:: +:: Source: +:: https://www.bmi.bund.de/DE/themen/verfassung/staatliche-symbole/nationale-feiertage/nationale-feiertage-artikel.html +:: https://de.wikipedia.org/wiki/Gesetzliche_Feiertage_in_Deutschland +:: https://im.baden-wuerttemberg.de/de/service/feiertage/ +:: + +:: Metadata +country "DE" +language "de" +:name "optional - defaults to country name" +description "Feiertage für Deutschland (Baden-Württemberg)" + +:: ---------- This part is specific for Baden-Wuerttemberg ---------- + +"Heilige Drei Könige" public on 6.1. +"Fronleichnam" public on easter plus 60 days +"Allerheiligen" public on 1.11. + +:: ---------- This part is shared across all Federal States of Germany ---------- + +:: Public Holidays +"Neujahr" public on 1.1. +"Karfreitag" public on easter minus 2 days +"Ostermontag" public on easter plus 1 days +"Christi Himmelfahrt" public on easter plus 39 days +"Pfingstmontag" public on easter plus 50 days +"1. Mai" public on 1.5. +"Tag der Deutschen Einheit" public on 3.10. +"1. Weihnachtsfeiertag" public on 25.12. +"2. Weihnachtsfeiertag" public on 26.12. + +:: Religious +"Gründonnerstag" religious on easter minus 3 days +"Ostersonntag" religious on easter +"Pfingstsonntag" religious on easter plus 49 days +"Nikolaus" religious on 6.12. +"1. Advent" religious on sunday before december 24 minus 21 days +"2. Advent" religious on sunday before december 24 minus 14 days +"3. Advent" religious on sunday before december 24 minus 7 days +"4. Advent" religious on sunday before december 24 +"Heiliger Abend" religious on december 24 + +:: Financial + +:: Cultural +"Silvester" cultural on december 31 +"Rosenmontag" cultural on easter minus 48 days +"Faschingsdienstag" cultural on easter minus 47 days +"Aschermittwoch" cultural on easter minus 46 days +"Muttertag" cultural on second sunday in may + +:: School + +:: Daylight Saving +"Beginn der Sommerzeit" seasonal on last sunday in march +"Beginn der Winterzeit" seasonal on last sunday in october + +:: Seasons + +:: Name Days diff --git a/holidays/plan2/holiday_de-by_de b/holidays/plan2/holiday_de-by_de --- a/holidays/plan2/holiday_de-by_de +++ b/holidays/plan2/holiday_de-by_de @@ -1,92 +1,70 @@ :: -:: Country: Germany, Bavaria +:: Country: Germany :: :: Language: German :: -:: Author: Burkhard Ludwig +:: Author: Tobias Leupold :: -:: Updated: +:: Updated: 2018-03-25 :: :: Source: -:: -:: Hints (to be understood by germans) -:: -:: Schwalben... -:: An OCULI da kommen sie -:: An MARIÄ GEBURT, da sind sie wieder furt. -:: Geranien... -:: pflanzt man auf dem Balkon nach den Eisheiligen (PANKRAZ bis kalte SOPHIE) -:: Gänse... -:: Wer einen guten Braten macht hat auch ein gutes Herz. (MARTINI) -:: Spargel... -:: wird bis höchstens JOHANNI gestochen. -:: Regen... -:: Wenns ans SIEBENSCHLÄFER regnet, so regnet's sieben Wochen. +:: https://www.bmi.bund.de/DE/themen/verfassung/staatliche-symbole/nationale-feiertage/nationale-feiertage-artikel.html +:: https://de.wikipedia.org/wiki/Gesetzliche_Feiertage_in_Deutschland +:: https://www.stmi.bayern.de/suk/bayern/feiertage/index.php :: :: Metadata -country "DE-BY" +country "DE" language "de" :name "optional - defaults to country name" -:description "(please add description in source language) National holiday file for Bavaria" +description "Feiertage für Deutschland (Bayern)" + +:: ---------- This part is specific for Bavaria ---------- + +"Heilige Drei Könige" public on 6.1. +"Fronleichnam" public on easter plus 60 days +"Mariä Himmelfahrt (regional)" public on 15.8. +"Allerheiligen" public on 1.11. +"Buß- und Bettag (schulfrei)" public on wednesday before 23.11. + +:: ---------- This part is shared across all Federal States of Germany ---------- :: Public Holidays -"Neujahr" public on january 1 -"Hl. 3 Könige" public on january 6 -"Karfreitag" public cultural on easter minus 2 days -"Ostern" public cultural on easter length 2 days -"Pfingsten" public cultural on easter plus 49 days length 2 days -"Christi Himmelfahrt" public cultural on easter plus 39 days -"Fronleichnam" public cultural on easter plus 60 days -"1. Mai" public on may 1 -"Mariä Himmelfahrt" public cultural on august 15 -"Einheitstag" public on october 3 -"Allerheiligen" public on november 1 -::No longer a public holiday (except in Saxony), per Bug 355073 -::"Buß- und Bettag" public on sunday before december 24 minus 32 days -"Weihnachten" public cultural on december 25 length 2 days +"Neujahr" public on 1.1. +"Karfreitag" public on easter minus 2 days +"Ostermontag" public on easter plus 1 days +"Christi Himmelfahrt" public on easter plus 39 days +"Pfingstmontag" public on easter plus 50 days +"1. Mai" public on 1.5. +"Tag der Deutschen Einheit" public on 3.10. +"1. Weihnachtsfeiertag" public on 25.12. +"2. Weihnachtsfeiertag" public on 26.12. :: Religious -"Lichtmeß" religious on february 2 -"Rosenmontag" religious on easter minus 48 days -"Fasching" religious on easter minus 47 days -"Aschermittwoch" religious on easter minus 46 days -"1. Fastensonntag" religious on easter minus 42 days -"2. Fastensonntag" religious on easter minus 35 days -"3. Fastensonntag" religious on easter minus 28 days -"Oculi" religious on easter minus 28 days -"4. Fastensonntag" religious on easter minus 21 days -"5. Fastensonntag" religious on easter minus 14 days -"Palmsonntag" religious on easter minus 7 days -"Pankraz" religious on may 11 -"Servaz" religious on may 12 -"Bonifaz" religious on may 13 -"Sophie" religious on may 14 -"Johanni" religious on june 24 -"Siebenschläfer" religious on june 27 -"Mariä Geburt" religious on september 8 -"Martini" religious on november 11 -"Nikolaus" religious on december 6 -"Christkönig" religious on sunday before december 23 minus 28 days -"1. Advent" religious on sunday before december 24 minus 21 days -"2. Advent" religious on sunday before december 24 minus 14 days -"3. Advent" religious on sunday before december 24 minus 7 days -"4. Advent" religious on sunday before december 24 -"Hl. Abend" religious on december 24 -"Silvester" religious on december 31 +"Gründonnerstag" religious on easter minus 3 days +"Ostersonntag" religious on easter +"Pfingstsonntag" religious on easter plus 49 days +"Nikolaus" religious on 6.12. +"1. Advent" religious on sunday before december 24 minus 21 days +"2. Advent" religious on sunday before december 24 minus 14 days +"3. Advent" religious on sunday before december 24 minus 7 days +"4. Advent" religious on sunday before december 24 +"Heiliger Abend" religious on december 24 :: Financial :: Cultural -"Muttertag" cultural on second sunday in may -"Karwoche" cultural on easter minus 6 days length 6 days -"1. Wies'nsonntag" cultural on first sunday in october minus 14 days +"Silvester" cultural on december 31 +"Rosenmontag" cultural on easter minus 48 days +"Faschingsdienstag" cultural on easter minus 47 days +"Aschermittwoch" cultural on easter minus 46 days +"Muttertag" cultural on second sunday in may :: School :: Daylight Saving -"Sommerzeit" seasonal on last sunday in march -"Winterzeit" seasonal on last sunday in october +"Beginn der Sommerzeit" seasonal on last sunday in march +"Beginn der Winterzeit" seasonal on last sunday in october :: Seasons diff --git a/holidays/plan2/holiday_de-hh_de b/holidays/plan2/holiday_de-hh_de new file mode 100644 --- /dev/null +++ b/holidays/plan2/holiday_de-hh_de @@ -0,0 +1,67 @@ +:: +:: Country: Germany +:: +:: Language: German +:: +:: Author: Tobias Leupold +:: +:: Updated: 2018-03-25 +:: +:: Source: +:: https://www.bmi.bund.de/DE/themen/verfassung/staatliche-symbole/nationale-feiertage/nationale-feiertage-artikel.html +:: https://de.wikipedia.org/wiki/Gesetzliche_Feiertage_in_Deutschland +:: https://innen.hessen.de/buerger-staat/gesetzliche-feiertage +:: + +:: Metadata +country "DE" +language "de" +:name "optional - defaults to country name" +description "Feiertage für Deutschland (Hessen)" + +:: ---------- This part is specific for Hesse ---------- + +"Fronleichnam" public on easter plus 60 days + +:: ---------- This part is shared across all Federal States of Germany ---------- + +:: Public Holidays +"Neujahr" public on 1.1. +"Karfreitag" public on easter minus 2 days +"Ostermontag" public on easter plus 1 days +"Christi Himmelfahrt" public on easter plus 39 days +"Pfingstmontag" public on easter plus 50 days +"1. Mai" public on 1.5. +"Tag der Deutschen Einheit" public on 3.10. +"1. Weihnachtsfeiertag" public on 25.12. +"2. Weihnachtsfeiertag" public on 26.12. + +:: Religious +"Gründonnerstag" religious on easter minus 3 days +"Ostersonntag" religious on easter +"Pfingstsonntag" religious on easter plus 49 days +"Nikolaus" religious on 6.12. +"1. Advent" religious on sunday before december 24 minus 21 days +"2. Advent" religious on sunday before december 24 minus 14 days +"3. Advent" religious on sunday before december 24 minus 7 days +"4. Advent" religious on sunday before december 24 +"Heiliger Abend" religious on december 24 + +:: Financial + +:: Cultural +"Silvester" cultural on december 31 +"Rosenmontag" cultural on easter minus 48 days +"Faschingsdienstag" cultural on easter minus 47 days +"Aschermittwoch" cultural on easter minus 46 days +"Muttertag" cultural on second sunday in may + +:: School + +:: Daylight Saving +"Beginn der Sommerzeit" seasonal on last sunday in march +"Beginn der Winterzeit" seasonal on last sunday in october + +:: Seasons + +:: Name Days diff --git a/holidays/plan2/holiday_de-mv_de b/holidays/plan2/holiday_de-mv_de new file mode 100644 --- /dev/null +++ b/holidays/plan2/holiday_de-mv_de @@ -0,0 +1,66 @@ +:: +:: Country: Germany +:: +:: Language: German +:: +:: Author: Tobias Leupold +:: +:: Updated: 2018-03-25 +:: +:: Source: +:: https://www.bmi.bund.de/DE/themen/verfassung/staatliche-symbole/nationale-feiertage/nationale-feiertage-artikel.html +:: https://de.wikipedia.org/wiki/Gesetzliche_Feiertage_in_Deutschland +:: + +:: Metadata +country "DE" +language "de" +:name "optional - defaults to country name" +description "Feiertage für Deutschland (Mecklenburg-Vorpommern)" + +:: ---------- This part is specific for Mecklenburg-Hither Pomerania ---------- + +"Reformationstag" public on 31.10. + +:: ---------- This part is shared across all Federal States of Germany ---------- + +:: Public Holidays +"Neujahr" public on 1.1. +"Karfreitag" public on easter minus 2 days +"Ostermontag" public on easter plus 1 days +"Christi Himmelfahrt" public on easter plus 39 days +"Pfingstmontag" public on easter plus 50 days +"1. Mai" public on 1.5. +"Tag der Deutschen Einheit" public on 3.10. +"1. Weihnachtsfeiertag" public on 25.12. +"2. Weihnachtsfeiertag" public on 26.12. + +:: Religious +"Gründonnerstag" religious on easter minus 3 days +"Ostersonntag" religious on easter +"Pfingstsonntag" religious on easter plus 49 days +"Nikolaus" religious on 6.12. +"1. Advent" religious on sunday before december 24 minus 21 days +"2. Advent" religious on sunday before december 24 minus 14 days +"3. Advent" religious on sunday before december 24 minus 7 days +"4. Advent" religious on sunday before december 24 +"Heiliger Abend" religious on december 24 + +:: Financial + +:: Cultural +"Silvester" cultural on december 31 +"Rosenmontag" cultural on easter minus 48 days +"Faschingsdienstag" cultural on easter minus 47 days +"Aschermittwoch" cultural on easter minus 46 days +"Muttertag" cultural on second sunday in may + +:: School + +:: Daylight Saving +"Beginn der Sommerzeit" seasonal on last sunday in march +"Beginn der Winterzeit" seasonal on last sunday in october + +:: Seasons + +:: Name Days diff --git a/holidays/plan2/holiday_de-nw_de b/holidays/plan2/holiday_de-nw_de new file mode 100644 --- /dev/null +++ b/holidays/plan2/holiday_de-nw_de @@ -0,0 +1,67 @@ +:: +:: Country: Germany +:: +:: Language: German +:: +:: Author: Tobias Leupold +:: +:: Updated: 2018-03-25 +:: +:: Source: +:: https://www.bmi.bund.de/DE/themen/verfassung/staatliche-symbole/nationale-feiertage/nationale-feiertage-artikel.html +:: https://de.wikipedia.org/wiki/Gesetzliche_Feiertage_in_Deutschland +:: + +:: Metadata +country "DE" +language "de" +:name "optional - defaults to country name" +description "Feiertage für Deutschland (Nordrhein-Westfalen)" + +:: ---------- This part is specific for North Rhine-Westphalia ---------- + +"Fronleichnam" public on easter plus 60 days +"Allerheiligen" public on 1.11. + +:: ---------- This part is shared across all Federal States of Germany ---------- + +:: Public Holidays +"Neujahr" public on 1.1. +"Karfreitag" public on easter minus 2 days +"Ostermontag" public on easter plus 1 days +"Christi Himmelfahrt" public on easter plus 39 days +"Pfingstmontag" public on easter plus 50 days +"1. Mai" public on 1.5. +"Tag der Deutschen Einheit" public on 3.10. +"1. Weihnachtsfeiertag" public on 25.12. +"2. Weihnachtsfeiertag" public on 26.12. + +:: Religious +"Gründonnerstag" religious on easter minus 3 days +"Ostersonntag" religious on easter +"Pfingstsonntag" religious on easter plus 49 days +"Nikolaus" religious on 6.12. +"1. Advent" religious on sunday before december 24 minus 21 days +"2. Advent" religious on sunday before december 24 minus 14 days +"3. Advent" religious on sunday before december 24 minus 7 days +"4. Advent" religious on sunday before december 24 +"Heiliger Abend" religious on december 24 + +:: Financial + +:: Cultural +"Silvester" cultural on december 31 +"Rosenmontag" cultural on easter minus 48 days +"Faschingsdienstag" cultural on easter minus 47 days +"Aschermittwoch" cultural on easter minus 46 days +"Muttertag" cultural on second sunday in may + +:: School + +:: Daylight Saving +"Beginn der Sommerzeit" seasonal on last sunday in march +"Beginn der Winterzeit" seasonal on last sunday in october + +:: Seasons + +:: Name Days diff --git a/holidays/plan2/holiday_de-rp_de b/holidays/plan2/holiday_de-rp_de new file mode 100644 --- /dev/null +++ b/holidays/plan2/holiday_de-rp_de @@ -0,0 +1,67 @@ +:: +:: Country: Germany +:: +:: Language: German +:: +:: Author: Tobias Leupold +:: +:: Updated: 2018-03-25 +:: +:: Source: +:: https://www.bmi.bund.de/DE/themen/verfassung/staatliche-symbole/nationale-feiertage/nationale-feiertage-artikel.html +:: https://de.wikipedia.org/wiki/Gesetzliche_Feiertage_in_Deutschland +:: + +:: Metadata +country "DE" +language "de" +:name "optional - defaults to country name" +description "Feiertage für Deutschland (Rheinland-Pfalz)" + +:: ---------- This part is specific for Rhineland-Palatinate ---------- + +"Fronleichnam" public on easter plus 60 days +"Allerheiligen" public on 1.11. + +:: ---------- This part is shared across all Federal States of Germany ---------- + +:: Public Holidays +"Neujahr" public on 1.1. +"Karfreitag" public on easter minus 2 days +"Ostermontag" public on easter plus 1 days +"Christi Himmelfahrt" public on easter plus 39 days +"Pfingstmontag" public on easter plus 50 days +"1. Mai" public on 1.5. +"Tag der Deutschen Einheit" public on 3.10. +"1. Weihnachtsfeiertag" public on 25.12. +"2. Weihnachtsfeiertag" public on 26.12. + +:: Religious +"Gründonnerstag" religious on easter minus 3 days +"Ostersonntag" religious on easter +"Pfingstsonntag" religious on easter plus 49 days +"Nikolaus" religious on 6.12. +"1. Advent" religious on sunday before december 24 minus 21 days +"2. Advent" religious on sunday before december 24 minus 14 days +"3. Advent" religious on sunday before december 24 minus 7 days +"4. Advent" religious on sunday before december 24 +"Heiliger Abend" religious on december 24 + +:: Financial + +:: Cultural +"Silvester" cultural on december 31 +"Rosenmontag" cultural on easter minus 48 days +"Faschingsdienstag" cultural on easter minus 47 days +"Aschermittwoch" cultural on easter minus 46 days +"Muttertag" cultural on second sunday in may + +:: School + +:: Daylight Saving +"Beginn der Sommerzeit" seasonal on last sunday in march +"Beginn der Winterzeit" seasonal on last sunday in october + +:: Seasons + +:: Name Days diff --git a/holidays/plan2/holiday_de-sh_de b/holidays/plan2/holiday_de-sh_de new file mode 100644 --- /dev/null +++ b/holidays/plan2/holiday_de-sh_de @@ -0,0 +1,66 @@ +:: +:: Country: Germany +:: +:: Language: German +:: +:: Author: Tobias Leupold +:: +:: Updated: 2018-03-25 +:: +:: Source: +:: https://www.bmi.bund.de/DE/themen/verfassung/staatliche-symbole/nationale-feiertage/nationale-feiertage-artikel.html +:: https://de.wikipedia.org/wiki/Gesetzliche_Feiertage_in_Deutschland +:: + +:: Metadata +country "DE" +language "de" +:name "optional - defaults to country name" +description "Feiertage für Deutschland (Schleswig-Holstein)" + +:: ---------- This part is specific for Schleswig-Holstein ---------- + +"Reformationstag" public on 31.10. + +:: ---------- This part is shared across all Federal States of Germany ---------- + +:: Public Holidays +"Neujahr" public on 1.1. +"Karfreitag" public on easter minus 2 days +"Ostermontag" public on easter plus 1 days +"Christi Himmelfahrt" public on easter plus 39 days +"Pfingstmontag" public on easter plus 50 days +"1. Mai" public on 1.5. +"Tag der Deutschen Einheit" public on 3.10. +"1. Weihnachtsfeiertag" public on 25.12. +"2. Weihnachtsfeiertag" public on 26.12. + +:: Religious +"Gründonnerstag" religious on easter minus 3 days +"Ostersonntag" religious on easter +"Pfingstsonntag" religious on easter plus 49 days +"Nikolaus" religious on 6.12. +"1. Advent" religious on sunday before december 24 minus 21 days +"2. Advent" religious on sunday before december 24 minus 14 days +"3. Advent" religious on sunday before december 24 minus 7 days +"4. Advent" religious on sunday before december 24 +"Heiliger Abend" religious on december 24 + +:: Financial + +:: Cultural +"Silvester" cultural on december 31 +"Rosenmontag" cultural on easter minus 48 days +"Faschingsdienstag" cultural on easter minus 47 days +"Aschermittwoch" cultural on easter minus 46 days +"Muttertag" cultural on second sunday in may + +:: School + +:: Daylight Saving +"Beginn der Sommerzeit" seasonal on last sunday in march +"Beginn der Winterzeit" seasonal on last sunday in october + +:: Seasons + +:: Name Days diff --git a/holidays/plan2/holiday_de-sl_de b/holidays/plan2/holiday_de-sl_de new file mode 100644 --- /dev/null +++ b/holidays/plan2/holiday_de-sl_de @@ -0,0 +1,68 @@ +:: +:: Country: Germany +:: +:: Language: German +:: +:: Author: Tobias Leupold +:: +:: Updated: 2018-03-25 +:: +:: Source: +:: https://www.bmi.bund.de/DE/themen/verfassung/staatliche-symbole/nationale-feiertage/nationale-feiertage-artikel.html +:: https://de.wikipedia.org/wiki/Gesetzliche_Feiertage_in_Deutschland +:: + +:: Metadata +country "DE" +language "de" +:name "optional - defaults to country name" +description "Feiertage für Deutschland (Saarland)" + +:: ---------- This part is specific for Saarland ---------- + +"Fronleichnam" public on easter plus 60 days +"Mariä Himmelfahrt" public on 15.8. +"Allerheiligen" public on 1.11. + +:: ---------- This part is shared across all Federal States of Germany ---------- + +:: Public Holidays +"Neujahr" public on 1.1. +"Karfreitag" public on easter minus 2 days +"Ostermontag" public on easter plus 1 days +"Christi Himmelfahrt" public on easter plus 39 days +"Pfingstmontag" public on easter plus 50 days +"1. Mai" public on 1.5. +"Tag der Deutschen Einheit" public on 3.10. +"1. Weihnachtsfeiertag" public on 25.12. +"2. Weihnachtsfeiertag" public on 26.12. + +:: Religious +"Gründonnerstag" religious on easter minus 3 days +"Ostersonntag" religious on easter +"Pfingstsonntag" religious on easter plus 49 days +"Nikolaus" religious on 6.12. +"1. Advent" religious on sunday before december 24 minus 21 days +"2. Advent" religious on sunday before december 24 minus 14 days +"3. Advent" religious on sunday before december 24 minus 7 days +"4. Advent" religious on sunday before december 24 +"Heiliger Abend" religious on december 24 + +:: Financial + +:: Cultural +"Silvester" cultural on december 31 +"Rosenmontag" cultural on easter minus 48 days +"Faschingsdienstag" cultural on easter minus 47 days +"Aschermittwoch" cultural on easter minus 46 days +"Muttertag" cultural on second sunday in may + +:: School + +:: Daylight Saving +"Beginn der Sommerzeit" seasonal on last sunday in march +"Beginn der Winterzeit" seasonal on last sunday in october + +:: Seasons + +:: Name Days diff --git a/holidays/plan2/holiday_de-sn_de b/holidays/plan2/holiday_de-sn_de new file mode 100644 --- /dev/null +++ b/holidays/plan2/holiday_de-sn_de @@ -0,0 +1,68 @@ +:: +:: Country: Germany +:: +:: Language: German +:: +:: Author: Tobias Leupold +:: +:: Updated: 2018-03-25 +:: +:: Source: +:: https://www.bmi.bund.de/DE/themen/verfassung/staatliche-symbole/nationale-feiertage/nationale-feiertage-artikel.html +:: https://de.wikipedia.org/wiki/Gesetzliche_Feiertage_in_Deutschland +:: + +:: Metadata +country "DE" +language "de" +:name "optional - defaults to country name" +description "Feiertage für Deutschland (Sachsen)" + +:: ---------- This part is specific for Saxony ---------- + +"Fronleichnam (regional)" public on easter plus 60 days +"Reformationstag" public on 31.10. +"Buß- und Bettag" public on wednesday before 23.11. + +:: ---------- This part is shared across all Federal States of Germany ---------- + +:: Public Holidays +"Neujahr" public on 1.1. +"Karfreitag" public on easter minus 2 days +"Ostermontag" public on easter plus 1 days +"Christi Himmelfahrt" public on easter plus 39 days +"Pfingstmontag" public on easter plus 50 days +"1. Mai" public on 1.5. +"Tag der Deutschen Einheit" public on 3.10. +"1. Weihnachtsfeiertag" public on 25.12. +"2. Weihnachtsfeiertag" public on 26.12. + +:: Religious +"Gründonnerstag" religious on easter minus 3 days +"Ostersonntag" religious on easter +"Pfingstsonntag" religious on easter plus 49 days +"Nikolaus" religious on 6.12. +"1. Advent" religious on sunday before december 24 minus 21 days +"2. Advent" religious on sunday before december 24 minus 14 days +"3. Advent" religious on sunday before december 24 minus 7 days +"4. Advent" religious on sunday before december 24 +"Heiliger Abend" religious on december 24 + +:: Financial + +:: Cultural +"Silvester" cultural on december 31 +"Rosenmontag" cultural on easter minus 48 days +"Faschingsdienstag" cultural on easter minus 47 days +"Aschermittwoch" cultural on easter minus 46 days +"Muttertag" cultural on second sunday in may + +:: School + +:: Daylight Saving +"Beginn der Sommerzeit" seasonal on last sunday in march +"Beginn der Winterzeit" seasonal on last sunday in october + +:: Seasons + +:: Name Days diff --git a/holidays/plan2/holiday_de-st_de b/holidays/plan2/holiday_de-st_de new file mode 100644 --- /dev/null +++ b/holidays/plan2/holiday_de-st_de @@ -0,0 +1,67 @@ +:: +:: Country: Germany +:: +:: Language: German +:: +:: Author: Tobias Leupold +:: +:: Updated: 2018-03-25 +:: +:: Source: +:: https://www.bmi.bund.de/DE/themen/verfassung/staatliche-symbole/nationale-feiertage/nationale-feiertage-artikel.html +:: https://de.wikipedia.org/wiki/Gesetzliche_Feiertage_in_Deutschland +:: + +:: Metadata +country "DE" +language "de" +:name "optional - defaults to country name" +description "Feiertage für Deutschland (Sachsen-Anhalt)" + +:: ---------- This part is specific for Saxony-Anhalt ---------- + +"Heilige Drei Könige" public on 6.1. +"Reformationstag" public on 31.10. + +:: ---------- This part is shared across all Federal States of Germany ---------- + +:: Public Holidays +"Neujahr" public on 1.1. +"Karfreitag" public on easter minus 2 days +"Ostermontag" public on easter plus 1 days +"Christi Himmelfahrt" public on easter plus 39 days +"Pfingstmontag" public on easter plus 50 days +"1. Mai" public on 1.5. +"Tag der Deutschen Einheit" public on 3.10. +"1. Weihnachtsfeiertag" public on 25.12. +"2. Weihnachtsfeiertag" public on 26.12. + +:: Religious +"Gründonnerstag" religious on easter minus 3 days +"Ostersonntag" religious on easter +"Pfingstsonntag" religious on easter plus 49 days +"Nikolaus" religious on 6.12. +"1. Advent" religious on sunday before december 24 minus 21 days +"2. Advent" religious on sunday before december 24 minus 14 days +"3. Advent" religious on sunday before december 24 minus 7 days +"4. Advent" religious on sunday before december 24 +"Heiliger Abend" religious on december 24 + +:: Financial + +:: Cultural +"Silvester" cultural on december 31 +"Rosenmontag" cultural on easter minus 48 days +"Faschingsdienstag" cultural on easter minus 47 days +"Aschermittwoch" cultural on easter minus 46 days +"Muttertag" cultural on second sunday in may + +:: School + +:: Daylight Saving +"Beginn der Sommerzeit" seasonal on last sunday in march +"Beginn der Winterzeit" seasonal on last sunday in october + +:: Seasons + +:: Name Days diff --git a/holidays/plan2/holiday_de-th_de b/holidays/plan2/holiday_de-th_de new file mode 100644 --- /dev/null +++ b/holidays/plan2/holiday_de-th_de @@ -0,0 +1,67 @@ +:: +:: Country: Germany +:: +:: Language: German +:: +:: Author: Tobias Leupold +:: +:: Updated: 2018-03-25 +:: +:: Source: +:: https://www.bmi.bund.de/DE/themen/verfassung/staatliche-symbole/nationale-feiertage/nationale-feiertage-artikel.html +:: https://de.wikipedia.org/wiki/Gesetzliche_Feiertage_in_Deutschland +:: + +:: Metadata +country "DE" +language "de" +:name "optional - defaults to country name" +description "Feiertage für Deutschland (Thüringen)" + +:: ---------- This part is specific for Thuringia ---------- + +"Fronleichnam (regional)" public on easter plus 60 days +"Reformationstag" public on 31.10. + +:: ---------- This part is shared across all Federal States of Germany ---------- + +:: Public Holidays +"Neujahr" public on 1.1. +"Karfreitag" public on easter minus 2 days +"Ostermontag" public on easter plus 1 days +"Christi Himmelfahrt" public on easter plus 39 days +"Pfingstmontag" public on easter plus 50 days +"1. Mai" public on 1.5. +"Tag der Deutschen Einheit" public on 3.10. +"1. Weihnachtsfeiertag" public on 25.12. +"2. Weihnachtsfeiertag" public on 26.12. + +:: Religious +"Gründonnerstag" religious on easter minus 3 days +"Ostersonntag" religious on easter +"Pfingstsonntag" religious on easter plus 49 days +"Nikolaus" religious on 6.12. +"1. Advent" religious on sunday before december 24 minus 21 days +"2. Advent" religious on sunday before december 24 minus 14 days +"3. Advent" religious on sunday before december 24 minus 7 days +"4. Advent" religious on sunday before december 24 +"Heiliger Abend" religious on december 24 + +:: Financial + +:: Cultural +"Silvester" cultural on december 31 +"Rosenmontag" cultural on easter minus 48 days +"Faschingsdienstag" cultural on easter minus 47 days +"Aschermittwoch" cultural on easter minus 46 days +"Muttertag" cultural on second sunday in may + +:: School + +:: Daylight Saving +"Beginn der Sommerzeit" seasonal on last sunday in march +"Beginn der Winterzeit" seasonal on last sunday in october + +:: Seasons + +:: Name Days diff --git a/holidays/plan2/holiday_de_de b/holidays/plan2/holiday_de_de --- a/holidays/plan2/holiday_de_de +++ b/holidays/plan2/holiday_de_de @@ -3,55 +3,59 @@ :: :: Language: German :: -:: Author: +:: Author: Tobias Leupold :: -:: Updated: +:: Updated: 2018-03-25 :: :: Source: +:: https://www.bmi.bund.de/DE/themen/verfassung/staatliche-symbole/nationale-feiertage/nationale-feiertage-artikel.html +:: https://de.wikipedia.org/wiki/Gesetzliche_Feiertage_in_Deutschland :: :: Metadata country "DE" language "de" :name "optional - defaults to country name" -:description "(please add description in source language) National holiday file for Germany" +description "Feiertage für Deutschland" + +:: ---------- This part is shared across all Federal States of Germany ---------- :: Public Holidays -"Neujahr" public on 1.1. -"Karfreitag" public on easter minus 2 days -"Ostern" public on easter length 2 days -"Pfingsten" public on easter plus 49 days length 2 days -"Christi Himmelfahrt" public on easter plus 39 days -"1. Mai" public on 1.5. -"Tag d. Einheit" public on 3.10. -"Weihnachten" public on 25.12. length 2 days +"Neujahr" public on 1.1. +"Karfreitag" public on easter minus 2 days +"Ostermontag" public on easter plus 1 days +"Christi Himmelfahrt" public on easter plus 39 days +"Pfingstmontag" public on easter plus 50 days +"1. Mai" public on 1.5. +"Tag der Deutschen Einheit" public on 3.10. +"1. Weihnachtsfeiertag" public on 25.12. +"2. Weihnachtsfeiertag" public on 26.12. :: Religious -"Hl. 3 Könige" religious on january 6 -"Rosenmontag" religious on easter minus 48 days -"Fasching" religious on easter minus 47 days -"Aschermittwoch" religious on easter minus 46 days -"Fronleichnam" religious on easter plus 60 days -"Reformationstag" religious on october 31 -"Allerheiligen" religious on november 1 -"Buß & Bettag" religious on sunday before december 24 minus 32 days -"1. Advent" religious on sunday before december 24 minus 21 days -"2. Advent" religious on sunday before december 24 minus 14 days -"3. Advent" religious on sunday before december 24 minus 7 days -"4. Advent" religious on sunday before december 24 -"Hl. Abend" religious on december 24 -"Silvester" religious on december 31 +"Gründonnerstag" religious on easter minus 3 days +"Ostersonntag" religious on easter +"Pfingstsonntag" religious on easter plus 49 days +"Nikolaus" religious on 6.12. +"1. Advent" religious on sunday before december 24 minus 21 days +"2. Advent" religious on sunday before december 24 minus 14 days +"3. Advent" religious on sunday before december 24 minus 7 days +"4. Advent" religious on sunday before december 24 +"Heiliger Abend" religious on december 24 :: Financial :: Cultural -"Muttertag" cultural on second sunday in may +"Silvester" cultural on december 31 +"Rosenmontag" cultural on easter minus 48 days +"Faschingsdienstag" cultural on easter minus 47 days +"Aschermittwoch" cultural on easter minus 46 days +"Muttertag" cultural on second sunday in may :: School :: Daylight Saving -"Sommerzeit" seasonal on last sunday in march -"Winterzeit" seasonal on last sunday in october +"Beginn der Sommerzeit" seasonal on last sunday in march +"Beginn der Winterzeit" seasonal on last sunday in october :: Seasons diff --git a/holidays/plan2/holiday_dz_ar b/holidays/plan2/holiday_dz_ar --- a/holidays/plan2/holiday_dz_ar +++ b/holidays/plan2/holiday_dz_ar @@ -50,15 +50,4 @@ :: Daylight Saving -:: Seasons - -: Spring -"الربيع" seasonal on march 20 -: Summer -"الصيف" seasonal on june 21 -: Fall -"الخريف" seasonal on september 23 -: Winter -"الشتاء" seasonal on december 21 - :: Name Days diff --git a/holidays/plan2/holiday_dz_fr b/holidays/plan2/holiday_dz_fr --- a/holidays/plan2/holiday_dz_fr +++ b/holidays/plan2/holiday_dz_fr @@ -50,15 +50,4 @@ :: Daylight Saving -:: Seasons - -: Spring -"Printemps" seasonal on march 20 -: Summer -"Été" seasonal on june 21 -: Fall -"Automne" seasonal on september 23 -: Winter -"Hiver" seasonal on december 21 - :: Name Days diff --git a/holidays/plan2/holiday_es_es b/holidays/plan2/holiday_es_es --- a/holidays/plan2/holiday_es_es +++ b/holidays/plan2/holiday_es_es @@ -37,7 +37,7 @@ "Sant Jordi" civil on april 23 "Fiesta de la Comunidad de Castilla y León" civil on april 23 "Día de Aragón" civil on april 23 -"Fiesta de la Comunidad de Madrid" civil on may 3 +"Fiesta de la Comunidad de Madrid" civil on may 2 "Día de las Letras Gallegas" civil on may 17 "Día de Canarias" civil on may 30 "Día de la Región de Castilla y la Mancha" civil on may 31 @@ -69,10 +69,4 @@ "Adelanto horario" seasonal on last sunday in march "Retraso horario" seasonal on last sunday in october -:: Seasons -"Equinoccio e inicio de primavera" seasonal on march 21 -"Solsticio e inicio de verano" seasonal on june 21 -"Equinoccio e inicio de otoño" seasonal on september 23 -"Solsticio e inicio de invierno" seasonal on december 21 - :: Name Days diff --git a/holidays/plan2/holiday_fi_fi b/holidays/plan2/holiday_fi_fi --- a/holidays/plan2/holiday_fi_fi +++ b/holidays/plan2/holiday_fi_fi @@ -156,43 +156,6 @@ : Leap Day "Karkauspäivä" seasonal on 29 february -: Vernal equinox -"Kevätpäiväntasaus" seasonal on 20 march 2013 -"Kevätpäiväntasaus" seasonal on 20 march 2014 -"Kevätpäiväntasaus" seasonal on 21 march 2015 -"Kevätpäiväntasaus" seasonal on 20 march 2016 -"Kevätpäiväntasaus" seasonal on 20 march 2017 -"Kevätpäiväntasaus" seasonal on 20 march 2018 -"Kevätpäiväntasaus" seasonal on 20 march 2019 -"Kevätpäiväntasaus" seasonal on 20 march 2020 -: Summer solstice -"Kesäpäivänseisaus" seasonal on 21 june 2013 -"Kesäpäivänseisaus" seasonal on 21 june 2014 -"Kesäpäivänseisaus" seasonal on 21 june 2015 -"Kesäpäivänseisaus" seasonal on 21 june 2016 -"Kesäpäivänseisaus" seasonal on 21 june 2017 -"Kesäpäivänseisaus" seasonal on 21 june 2018 -"Kesäpäivänseisaus" seasonal on 21 june 2019 -"Kesäpäivänseisaus" seasonal on 21 june 2020 -: Autumnal equinox -"Syyspäiväntasaus" seasonal on 22 september 2013 -"Syyspäiväntasaus" seasonal on 23 september 2014 -"Syyspäiväntasaus" seasonal on 23 september 2015 -"Syyspäiväntasaus" seasonal on 22 september 2016 -"Syyspäiväntasaus" seasonal on 22 september 2017 -"Syyspäiväntasaus" seasonal on 23 september 2018 -"Syyspäiväntasaus" seasonal on 23 september 2019 -"Syyspäiväntasaus" seasonal on 22 september 2020 -: Winter solstice -"Talvipäivänseisaus" seasonal on 21 december 2013 -"Talvipäivänseisaus" seasonal on 22 december 2014 -"Talvipäivänseisaus" seasonal on 22 december 2015 -"Talvipäivänseisaus" seasonal on 21 december 2016 -"Talvipäivänseisaus" seasonal on 21 december 2017 -"Talvipäivänseisaus" seasonal on 22 december 2018 -"Talvipäivänseisaus" seasonal on 22 december 2019 -"Talvipäivänseisaus" seasonal on 21 december 2020 - :: Name Days diff --git a/holidays/plan2/holiday_fr_fr b/holidays/plan2/holiday_fr_fr --- a/holidays/plan2/holiday_fr_fr +++ b/holidays/plan2/holiday_fr_fr @@ -117,14 +117,4 @@ : winter "Heure d'hiver" seasonal on last sunday in october -:: Seasons -: Spring -"Printemps" seasonal on march 20 -: Summer -"Été" seasonal on june 21 -: Fall -"Automne" seasonal on september 23 -: Winter -"Hiver" seasonal on december 21 - :: Name Days diff --git a/holidays/plan2/holiday_gf_fr b/holidays/plan2/holiday_gf_fr --- a/holidays/plan2/holiday_gf_fr +++ b/holidays/plan2/holiday_gf_fr @@ -109,14 +109,4 @@ : winter "Heure d'hiver" seasonal on last sunday in october -:: Seasons -: Spring -"Printemps" seasonal on march 20 -: Summer -"Été" seasonal on june 21 -: Fall -"Automne" seasonal on september 23 -: Winter -"Hiver" seasonal on december 21 - :: Name Days diff --git a/holidays/plan2/holiday_gp_fr b/holidays/plan2/holiday_gp_fr --- a/holidays/plan2/holiday_gp_fr +++ b/holidays/plan2/holiday_gp_fr @@ -110,14 +110,4 @@ : winter "Heure d'hiver" seasonal on last sunday in october -:: Seasons -: Spring -"Printemps" seasonal on march 20 -: Summer -"Été" seasonal on june 21 -: Fall -"Automne" seasonal on september 23 -: Winter -"Hiver" seasonal on december 21 - :: Name Days diff --git a/holidays/plan2/holiday_gt_es b/holidays/plan2/holiday_gt_es --- a/holidays/plan2/holiday_gt_es +++ b/holidays/plan2/holiday_gt_es @@ -47,10 +47,4 @@ :: Daylight Saving -:: Seasons -"Llega la Primavera" seasonal on march 20 -"Llega el Verano" seasonal on june 21 -"Llega el Otoño" seasonal on september 23 -"Llega el Invierno" seasonal on december 22 - :: Name Days diff --git a/holidays/plan2/holiday_hr_hr b/holidays/plan2/holiday_hr_hr --- a/holidays/plan2/holiday_hr_hr +++ b/holidays/plan2/holiday_hr_hr @@ -76,12 +76,6 @@ "Ljetno računanje vremena" seasonal on last sunday in march "Zimsko računanje vremena" seasonal on last sunday in october -:: Seasons -"Proljetna ravnodnevica (ekvinocij)" seasonal on march 20 -"Ljetna dugodnevica (solsticij)" seasonal on june 21 -"Jesenska ravnodnevica (ekvinocij)" seasonal on september 22 -"Zimska kratkodnevica (solsticij)" seasonal on december 21 - :: Name Days :: To be sorted diff --git a/holidays/plan2/holiday_in_en-gb b/holidays/plan2/holiday_in_en-gb --- a/holidays/plan2/holiday_in_en-gb +++ b/holidays/plan2/holiday_in_en-gb @@ -3,18 +3,20 @@ :: :: Language: UK English :: -:: Author: Karthik +:: Author: Leo (sk.griffinix@gmail.com) :: -:: Updated: -:: -:: Source: These were taken from supremecourtofindia webpage, and Indian Embassy london page -:: Since different states have changes it is very difficult to be accurate and cover everything. -:: Most of these are Federal holidays. -:: Note: Only the fixed holidays are available. Some celebrations depend on -:: special events, eg: Eid al-Fitr which depend on the ramadan end date, -:: Holi, Divali and Raksh Bandan which depend on the moon phase (not handled -:: in kholidays) +:: Updated: 31/03/2018 :: +:: Source: only gazetted holidays listed on official indian calendar have been included. +:: https://www.india.gov.in/calendar +:: There are many more restricted holidays and important events that have not been listed +:: due to lack of support for hindu calendar. +:: The future dates have been taken from multiple sources, which may vary from +:: the official dates, when announced, and changes may have to be made for the same. +:: The reader is requested to contribute to expand the list and accuracy, +:: request to the kde developers to add support for hindu calendar. If possible attempt can +:: be made to define dates as per hebrew calendar +:: submitted via bug report on https://bugs.kde.org/show_bug.cgi?id=392503 :: Metadata country "IN" @@ -26,10 +28,132 @@ "New Year holiday" public on january 1 "Republic Day" public on january 26 "Independence Day" public on august 15 -"Mahatma Gandhi's Birthday" public on october 2 -"Christmas" public religious on december 25 +"Gandhi Jayanti" public on october 2 :: Religious +"Good Friday" public religious on easter minus 2 days + +"Christmas" public religious on december 25 + +"Maha Shivratri" public religious on february 13 2018 +"Maha Shivratri" public religious on march 4 2019 +"Maha Shivratri" public religious on february 21 2020 +"Maha Shivratri" public religious on march 11 2021 +"Maha Shivratri" public religious on march 1 2022 +"Maha Shivratri" public religious on march 18 2023 +"Maha Shivratri" public religious on march 8 2024 +"Maha Shivratri" public religious on february 26 2025 +"Maha Shivratri" public religious on february 15 2026 +"Maha Shivratri" public religious on march 6 2027 +"Maha Shivratri" public religious on february 23 2028 +"Maha Shivratri" public religious on february 11 2029 +"Maha Shivratri" public religious on march 2 2030 + +"Holi" public religious on march 2 2018 +"Holi" public religious on march 21 2019 +"Holi" public religious on march 10 2020 +"Holi" public religious on march 29 2021 +"Holi" public religious on march 18 2022 +"Holi" public religious on march 8 2023 +"Holi" public religious on march 25 2024 +"Holi" public religious on march 14 2025 +"Holi" public religious on march 4 2026 +"Holi" public religious on march 23 2027 +"Holi" public religious on march 11 2028 +"Holi" public religious on march 1 2029 +"Holi" public religious on march 20 2030 + +"Mahavir Jayanti" public religious on march 29 2018 +"Mahavir Jayanti" public religious on april 17 2019 +"Mahavir Jayanti" public religious on april 6 2020 +"Mahavir Jayanti" public religious on april 25 2021 +"Mahavir Jayanti" public religious on april 14 2022 +"Mahavir Jayanti" public religious on april 4 2023 +"Mahavir Jayanti" public religious on april 21 2024 +"Mahavir Jayanti" public religious on april 10 2025 +"Mahavir Jayanti" public religious on march 31 2026 +"Mahavir Jayanti" public religious on april 19 2027 +"Mahavir Jayanti" public religious on april 7 2028 +"Mahavir Jayanti" public religious on april 26 2029 +"Mahavir Jayanti" public religious on april 16 2030 + +"Buddha Purnima" public religious on april 30 2018 +"Buddha Purnima" public religious on may 18 2019 +"Buddha Purnima" public religious on may 7 2020 +"Buddha Purnima" public religious on may 26 2021 +"Buddha Purnima" public religious on may 16 2022 +"Buddha Purnima" public religious on may 5 2023 +"Buddha Purnima" public religious on may 23 2024 +"Buddha Purnima" public religious on may 12 2025 +"Buddha Purnima" public religious on may 1 2026 +"Buddha Purnima" public religious on may 20 2027 +"Buddha Purnima" public religious on may 8 2028 +"Buddha Purnima" public religious on may 27 2029 +"Buddha Purnima" public religious on may 17 2030 + +"Idu'l Fitr" public religious on hijri shawwal 1 length 2 days +"Id-ul-Zuha" public religious on hijri thualhijjah 10 + +"Janmashtami" public religious on september 3 2018 +"Janmashtami" public religious on august 24 2019 +"Janmashtami" public religious on august 12 2020 +"Janmashtami" public religious on august 30 2021 +"Janmashtami" public religious on august 19 2022 +"Janmashtami" public religious on september 7 2023 +"Janmashtami" public religious on august 26 2024 +"Janmashtami" public religious on august 16 2025 +"Janmashtami" public religious on september 4 2026 +"Janmashtami" public religious on august 25 2027 +"Janmashtami" public religious on august 14 2028 +"Janmashtami" public religious on september 1 2029 +"Janmashtami" public religious on august 21 2030 + +"Muharram" public religious on hijri muharram 1 + +"Dussehra" public religious on october 19 2018 +"Dussehra" public religious on october 8 2019 +"Dussehra" public religious on october 25 2020 +"Dussehra" public religious on october 15 2021 +"Dussehra" public religious on october 5 2022 +"Dussehra" public religious on october 24 2023 +"Dussehra" public religious on october 12 2024 +"Dussehra" public religious on october 2 2025 +"Dussehra" public religious on october 20 2026 +"Dussehra" public religious on october 9 2027 +"Dussehra" public religious on september 27 2028 +"Dussehra" public religious on october 16 2029 +"Dussehra" public religious on october 6 2030 + +"Diwali" public religious on november 7 2018 +"Diwali" public religious on october 27 2019 +"Diwali" public religious on november 14 2020 +"Diwali" public religious on november 4 2021 +"Diwali" public religious on october 24 2022 +"Diwali" public religious on november 12 2023 +"Diwali" public religious on november 1 2024 +"Diwali" public religious on october 20 2025 +"Diwali" public religious on november 8 2026 +"Diwali" public religious on october 29 2027 +"Diwali" public religious on october 17 2028 +"Diwali" public religious on november 5 2029 +"Diwali" public religious on october 26 2030 + +"Id-e-Milad" public religious on hijri rabialawal 12 + +"Guru Nanak Jayanti" public religious on november 23 2018 +"Guru Nanak Jayanti" public religious on november 12 2019 +"Guru Nanak Jayanti" public religious on november 30 2020 +"Guru Nanak Jayanti" public religious on november 19 2021 +"Guru Nanak Jayanti" public religious on november 8 2022 +"Guru Nanak Jayanti" public religious on november 27 2023 +"Guru Nanak Jayanti" public religious on november 15 2024 +"Guru Nanak Jayanti" public religious on november 5 2025 +"Guru Nanak Jayanti" public religious on november 24 2026 +"Guru Nanak Jayanti" public religious on november 14 2027 +"Guru Nanak Jayanti" public religious on november 2 2028 +"Guru Nanak Jayanti" public religious on november 21 2019 +"Guru Nanak Jayanti" public religious on november 10 2030 + :: Financial @@ -42,20 +166,3 @@ :: Seasons :: Name Days - - -:: To be sorted, enable with new parser that has alternative calendar support -:"Milad-un-Nabi" on march 9 -:"Holi -Festival of Colours" on march 14 -:"Ram navami" on april 3 -:"Mahavir Jayanthi" on april 7 -:"Good Friday" on april 10 -:"Buddha Purnima" on may 9 -:"Raksha Bandhan" on august 5 -:"Janmashtami" on august 14 -:"Idu'l Fitr" on september 21 -:"Dussehra(Vijaya Dashami)" on september 28 -:"Diwali" on October 17 -:"Guru Nanak's Birthday" on november 2 -:"Bakrid" on november 28 -:"Muharram" on december 28 diff --git a/holidays/plan2/holiday_is_is b/holidays/plan2/holiday_is_is --- a/holidays/plan2/holiday_is_is +++ b/holidays/plan2/holiday_is_is @@ -66,10 +66,4 @@ :: Daylight Saving -:: Seasons -"Vorjafndægur" seasonal on march 22 -"Sumar sólstöður" seasonal on june 22 -"Haustjafndægur" seasonal on september 22 -"Vetrarsólstöður" seasonal on december 22 - :: Name Days diff --git a/holidays/plan2/holiday_jp_en-us b/holidays/plan2/holiday_jp_en-us --- a/holidays/plan2/holiday_jp_en-us +++ b/holidays/plan2/holiday_jp_en-us @@ -2,66 +2,138 @@ :: Country: Japan :: :: Author: Toyohiro Asukai +:: Jumpei Ogawa :: :: Language: English :: -:: Updated: 2004-11-16 +:: Updated: 2017-05-07 :: -:: Source: +:: Source: http://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html +:: http://www.nao.ac.jp/faq/a0301.html +:: +:: Note: On each Februaries, Vernal and Autumnal Equinox Days of next year are announced by government. +:: Currently Equinox Days on and after 2019 are expected dates and may be changed. :: :: Metadata country "JP" language "en_US" :name "optional - defaults to country name" description "National holiday file for Japan" +:: Metadata +country "JP" +language "en_US" +:name "optional - defaults to country name" +description "National Holiday file for Japan" + + :: Public Holidays "New Year's Day" public on january 1 -"Coming of Age" public on second monday in january +"Coming of Age Day" public on second monday in january "National Foundation Day" public on february 11 -"Vernal Equinox Day" public on 20.3.2005 -"Vernal Equinox Day" public on 21.3.2006 -"Vernal Equinox Day" public on 21.3.2007 -"Vernal Equinox Day" public on 20.3.2008 -"Vernal Equinox Day" public on 20.3.2009 -"Vernal Equinox Day" public on 21.3.2010 -"Greenery Day" public on april 29 + +:: Equinox Days on and after 2019 are expected dates. See notes above. +"Vernal Equinox Day" public on march 20 2000 +"Vernal Equinox Day" public on march 20 2001 +"Vernal Equinox Day" public on march 21 2002 +"Vernal Equinox Day" public on march 21 2003 +"Vernal Equinox Day" public on march 20 2004 +"Vernal Equinox Day" public on march 20 2005 +"Vernal Equinox Day" public on march 21 2006 +"Vernal Equinox Day" public on march 21 2007 +"Vernal Equinox Day" public on march 20 2008 +"Vernal Equinox Day" public on march 20 2009 +"Vernal Equinox Day" public on march 21 2010 +"Vernal Equinox Day" public on march 21 2011 +"Vernal Equinox Day" public on march 20 2012 +"Vernal Equinox Day" public on march 20 2013 +"Vernal Equinox Day" public on march 21 2014 +"Vernal Equinox Day" public on march 21 2015 +"Vernal Equinox Day" public on march 20 2016 +"Vernal Equinox Day" public on march 20 2017 +"Vernal Equinox Day" public on march 21 2018 +"Vernal Equinox Day" public on march 21 2019 +"Vernal Equinox Day" public on march 20 2020 +"Vernal Equinox Day" public on march 20 2021 +"Vernal Equinox Day" public on march 21 2022 +"Vernal Equinox Day" public on march 21 2023 +"Vernal Equinox Day" public on march 20 2024 +"Vernal Equinox Day" public on march 20 2025 +"Vernal Equinox Day" public on march 20 2026 +"Vernal Equinox Day" public on march 21 2027 +"Vernal Equinox Day" public on march 20 2028 +"Vernal Equinox Day" public on march 20 2029 +"Vernal Equinox Day" public on march 20 2030 + +"Showa Day" public on april 29 "Constitution Day" public on may 3 -"Holiday" public on may 4 +"Greenery Day" public on may 4 "Children's Day" public on may 5 "Oceans' Day" public on third monday in july +"Mountain Day" public on august 11 "Respect for Senior Citizens Day" public on third monday in september -"Autumnal Equinox Day" public on september 23 + +:: Equinox Days on and after 2019 are expected dates. See notes above. +"Autumnal Equinox Day" public on september 23 2000 +"Autumnal Equinox Day" public on september 23 2001 +"Autumnal Equinox Day" public on september 23 2002 +"Autumnal Equinox Day" public on september 23 2003 +"Autumnal Equinox Day" public on september 23 2004 +"Autumnal Equinox Day" public on september 23 2005 +"Autumnal Equinox Day" public on september 23 2006 +"Autumnal Equinox Day" public on september 23 2007 +"Autumnal Equinox Day" public on september 23 2008 +"Autumnal Equinox Day" public on september 23 2009 +"Autumnal Equinox Day" public on september 23 2010 +"Autumnal Equinox Day" public on september 23 2011 +"Autumnal Equinox Day" public on september 22 2012 +"Autumnal Equinox Day" public on september 23 2013 +"Autumnal Equinox Day" public on september 23 2014 +"Autumnal Equinox Day" public on september 23 2015 +"Autumnal Equinox Day" public on september 22 2016 +"Autumnal Equinox Day" public on september 23 2017 +"Autumnal Equinox Day" public on september 23 2018 +"Autumnal Equinox Day" public on september 23 2019 +"Autumnal Equinox Day" public on september 22 2020 +"Autumnal Equinox Day" public on september 23 2021 +"Autumnal Equinox Day" public on september 23 2022 +"Autumnal Equinox Day" public on september 23 2023 +"Autumnal Equinox Day" public on september 22 2024 +"Autumnal Equinox Day" public on september 23 2025 +"Autumnal Equinox Day" public on september 23 2026 +"Autumnal Equinox Day" public on september 23 2027 +"Autumnal Equinox Day" public on september 22 2028 +"Autumnal Equinox Day" public on september 23 2029 +"Autumnal Equinox Day" public on september 23 2030 + "Sports Day" public on second monday in october "Culture Day" public on november 3 "Labor Thanksgiving Day" public on november 23 "The Emperor's Birthday" public on december 23 + :: If a "National Holiday" is on Sunday,the following day :: shall be a substitute holiday. -"Substitute holiday" public on 21.3.2005 -"Substitute holiday" public on 2.1.2006 -"Substitute holiday" public on 12.2.2007 -"Substitute holiday" public on 30.4.2007 -"Substitute holiday" public on 24.9.2007 -"Substitute holiday" public on 24.12.2007 -"Substitute holiday" public on 24.11.2008 -"Substitute holiday" public on 22.3.2010 +"Substitute holiday" public on march 21 2005 +"Substitute holiday" public on january 2 2006 +"Substitute holiday" public on february 12 2007 +"Substitute holiday" public on april 30 2007 +"Substitute holiday" public on september 24 2007 +"Substitute holiday" public on december 24 2007 +"Substitute holiday" public on november 24 2008 +"Substitute holiday" public on march 22 2010 +"Substitute holiday" public on march 21 2016 +"Substitute holiday" public on january 2 2017 +"Substitute holiday" public on february 12 2018 +"Substitute holiday" public on april 30 2018 +"Substitute holiday" public on september 24 2018 +"Substitute holiday" public on december 24 2018 :: Religious :: Financial :: Cultural -"St. Valentine's Day" cultural on february 14 -"Girls' Festival" cultural on march 3 -"Buddha's Birthday" cultural on april 8 -"May Day" cultural on may 1 -"Boys' Festival" cultural on may 5 -"Mother's Day" cultural on second sunday in may -"Father's Day" cultural on third sunday in june -"Festival of the Weaver Star" cultural on july 7 -"Christmas" cultural on december 25 :: School diff --git a/holidays/plan2/holiday_jp_ja b/holidays/plan2/holiday_jp_ja --- a/holidays/plan2/holiday_jp_ja +++ b/holidays/plan2/holiday_jp_ja @@ -2,48 +2,115 @@ :: Country: Japan :: :: Author: Toyohiro Asukai +:: Jumpei Ogawa :: :: Language: Japanese :: -:: Updated: 2004-11-16 +:: Updated: 2017-05-07 :: -:: Source: +:: Source: http://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html +:: http://www.nao.ac.jp/faq/a0301.html :: +:: Note: On each Februaries, Vernal and Autumnal Equinox Days of next year are announced by government. +:: Currently Equinox Days on and after 2019 are expected dates and may be changed. :: Metadata country "JP" language "ja" :name "optional - defaults to country name" -:description "(please add description in source language) National holiday file for Japan" +description "日本の国民の休日のファイルです。" :: Public Holidays :"New Year's Day" "元旦" public on january 1 -:"Coming of Age" +:"Coming of Age Day" "成人の日" public on second monday in january :"National Foundation Day" "建国記念日" public on february 11 + :"Vernal Equinox Day" -"春分の日" public on 20.3.2005 -"春分の日" public on 21.3.2006 -"春分の日" public on 21.3.2007 -"春分の日" public on 21.3.2008 -"春分の日" public on 21.3.2009 -"春分の日" public on 21.3.2010 -:"Greenery Day" -"みどりの日" public on april 29 +:: Equinox Days on and after 2019 are expected dates. See notes above. +"春分の日" public on march 20 2000 +"春分の日" public on march 20 2001 +"春分の日" public on march 21 2002 +"春分の日" public on march 21 2003 +"春分の日" public on march 20 2004 +"春分の日" public on march 20 2005 +"春分の日" public on march 21 2006 +"春分の日" public on march 21 2007 +"春分の日" public on march 20 2008 +"春分の日" public on march 20 2009 +"春分の日" public on march 21 2010 +"春分の日" public on march 21 2011 +"春分の日" public on march 20 2012 +"春分の日" public on march 20 2013 +"春分の日" public on march 21 2014 +"春分の日" public on march 21 2015 +"春分の日" public on march 20 2016 +"春分の日" public on march 20 2017 +"春分の日" public on march 21 2018 +"春分の日" public on march 21 2019 +"春分の日" public on march 20 2020 +"春分の日" public on march 20 2021 +"春分の日" public on march 21 2022 +"春分の日" public on march 21 2023 +"春分の日" public on march 20 2024 +"春分の日" public on march 20 2025 +"春分の日" public on march 20 2026 +"春分の日" public on march 21 2027 +"春分の日" public on march 20 2028 +"春分の日" public on march 20 2029 +"春分の日" public on march 20 2030 + +:"Showa Day" +"昭和の日" public on april 29 :"Constitution Day" "憲法記念日" public on may 3 -:"Holiday" -"休日" public on may 4 +:"Greenery Day" +"みどりの日" public on may 4 :"Children's Day" "こどもの日" public on may 5 :"Oceans' Day" "海の日" public on third monday in july +:"Mountain Day" +"山の日" public on august 11 :"Respect for Senior Citizens Day" "敬老の日" public on third monday in september + :"Autumnal Equinox Day" -"秋分の日" public on september 23 +:: Equinox Days on and after 2019 are expected dates. See notes above. +"秋分の日" public on september 23 2000 +"秋分の日" public on september 23 2001 +"秋分の日" public on september 23 2002 +"秋分の日" public on september 23 2003 +"秋分の日" public on september 23 2004 +"秋分の日" public on september 23 2005 +"秋分の日" public on september 23 2006 +"秋分の日" public on september 23 2007 +"秋分の日" public on september 23 2008 +"秋分の日" public on september 23 2009 +"秋分の日" public on september 23 2010 +"秋分の日" public on september 23 2011 +"秋分の日" public on september 22 2012 +"秋分の日" public on september 23 2013 +"秋分の日" public on september 23 2014 +"秋分の日" public on september 23 2015 +"秋分の日" public on september 22 2016 +"秋分の日" public on september 23 2017 +"秋分の日" public on september 23 2018 +"秋分の日" public on september 23 2019 +"秋分の日" public on september 22 2020 +"秋分の日" public on september 23 2021 +"秋分の日" public on september 23 2022 +"秋分の日" public on september 23 2023 +"秋分の日" public on september 22 2024 +"秋分の日" public on september 23 2025 +"秋分の日" public on september 23 2026 +"秋分の日" public on september 23 2027 +"秋分の日" public on september 22 2028 +"秋分の日" public on september 23 2029 +"秋分の日" public on september 23 2030 + :"Sports Day" "体育の日" public on second monday in october :"Culture Day" @@ -56,29 +123,26 @@ :: If a "National Holiday" is on Sunday,the following day :: shall be a substitute holiday. :"Substitute holiday" -"振替休日" public on 21.3.2005 -"振替休日" public on 2.1.2006 -"振替休日" public on 12.2.2007 -"振替休日" public on 30.4.2007 -"振替休日" public on 24.9.2007 -"振替休日" public on 24.12.2007 -"振替休日" public on 24.11.2008 -"振替休日" public on 22.3.2010 +"振替休日" public on march 21 2005 +"振替休日" public on january 2 2006 +"振替休日" public on february 12 2007 +"振替休日" public on april 30 2007 +"振替休日" public on september 24 2007 +"振替休日" public on december 24 2007 +"振替休日" public on november 24 2008 +"振替休日" public on march 22 2010 +"振替休日" public on march 21 2016 +"振替休日" public on january 2 2017 +"振替休日" public on february 12 2018 +"振替休日" public on april 30 2018 +"振替休日" public on september 24 2018 +"振替休日" public on december 24 2018 :: Religious :: Financial :: Cultural -:"St. Valentine's Day" cultural on february 14 -:"Girls' Festival" cultural on march 3 -:"Buddha's Birthday" cultural on april 8 -:"May Day" cultural on may 1 -:"Boys' Festival" cultural on may 5 -:"Mother's Day" cultural on second sunday in may -:"Father's Day" cultural on third sunday in june -:"Festival of the Weaver Star" cultural on july 7 -:"Christmas" cultural on december 25 :: School diff --git a/holidays/plan2/holiday_kr_ko b/holidays/plan2/holiday_kr_ko --- a/holidays/plan2/holiday_kr_ko +++ b/holidays/plan2/holiday_kr_ko @@ -5,8 +5,9 @@ :: :: Author: John Layt :: Park Shinjo +:: Minori Hiraoka :: -:: Updated: 2014-06-20 +:: Updated: 2017-10-27 :: :: Source: http://www.law.go.kr/%EB%B2%95%EB%A0%B9/%EA%B5%AD%EA%B2%BD%EC%9D%BC%EC%97%90%EA%B4%80%ED%95%9C%EB%B2%95%EB%A5%A0 :: http://www.law.go.kr/%EB%B2%95%EB%A0%B9/%EA%B4%80%EA%B3%B5%EC%84%9C%EC%9D%98%EA%B3%B5%ED%9C%B4%EC%9D%BC%EC%97%90%EA%B4%80%ED%95%9C%EA%B7%9C%EC%A0%95 @@ -55,6 +56,28 @@ "설날" public on 30.1.2014 length 3 days "설날" public on 18.2.2015 length 3 days "설날" public on 7.2.2016 length 3 days +"설날" public on 27.1.2017 length 3 days +"설날" public on 15.2.2018 length 3 days +"설날" public on 4.2.2019 length 3 days +"설날" public on 24.1.2020 length 3 days +"설날" public on 11.2.2021 length 3 days +"설날" public on 31.1.2022 length 3 days +"설날" public on 21.1.2023 length 3 days +"설날" public on 9.2.2024 length 3 days +"설날" public on 28.1.2025 length 3 days +"설날" public on 16.2.2026 length 3 days +"설날" public on 6.2.2027 length 3 days +"설날" public on 26.1.2028 length 3 days +"설날" public on 12.2.2029 length 3 days +"설날" public on 2.2.2030 length 3 days +"설날" public on 22.1.2031 length 3 days +"설날" public on 10.2.2032 length 3 days +"설날" public on 30.1.2033 length 3 days +"설날" public on 18.2.2034 length 3 days +"설날" public on 7.2.2035 length 3 days +"설날" public on 27.1.2036 length 3 days +"설날" public on 14.2.2037 length 3 days + : Buddha's Birthday: Day 8 Month 4 "부처님 오신 날" public religious on 24.5.2007 "부처님 오신 날" public religious on 12.5.2008 @@ -66,6 +89,28 @@ "부처님 오신 날" public religious on 6.5.2014 "부처님 오신 날" public religious on 25.5.2015 "부처님 오신 날" public religious on 14.5.2016 +"부처님 오신 날" public religious on 3.5.2017 +"부처님 오신 날" public religious on 22.5.2018 +"부처님 오신 날" public religious on 12.5.2019 +"부처님 오신 날" public religious on 30.4.2020 +"부처님 오신 날" public religious on 19.5.2021 +"부처님 오신 날" public religious on 8.5.2022 +"부처님 오신 날" public religious on 27.5.2023 +"부처님 오신 날" public religious on 15.5.2024 +"부처님 오신 날" public religious on 5.5.2025 +"부처님 오신 날" public religious on 24.5.2026 +"부처님 오신 날" public religious on 13.5.2027 +"부처님 오신 날" public religious on 2.5.2028 +"부처님 오신 날" public religious on 20.5.2029 +"부처님 오신 날" public religious on 9.5.2030 +"부처님 오신 날" public religious on 28.5.2031 +"부처님 오신 날" public religious on 16.5.2032 +"부처님 오신 날" public religious on 6.5.2033 +"부처님 오신 날" public religious on 25.5.2034 +"부처님 오신 날" public religious on 15.5.2035 +"부처님 오신 날" public religious on 3.5.2036 +"부처님 오신 날" public religious on 22.5.2037 + : Chuseok: Day 15 Month 8 "추석" public on 17.9.2005 length 3 days "추석" public on 5.10.2006 length 3 days @@ -79,6 +124,27 @@ "추석" public on 7.9.2014 length 3 days "추석" public on 26.9.2015 length 3 days "추석" public on 14.9.2016 length 3 days +"추석" public on 3.10.2017 length 3 days +"추석" public on 23.9.2018 length 3 days +"추석" public on 12.9.2019 length 3 days +"추석" public on 30.9.2020 length 3 days +"추석" public on 20.9.2021 length 3 days +"추석" public on 9.9.2022 length 3 days +"추석" public on 28.9.2023 length 3 days +"추석" public on 16.9.2024 length 3 days +"추석" public on 5.10.2025 length 3 days +"추석" public on 24.9.2026 length 3 days +"추석" public on 14.9.2027 length 3 days +"추석" public on 2.10.2028 length 3 days +"추석" public on 21.9.2029 length 3 days +"추석" public on 11.9.2030 length 3 days +"추석" public on 30.9.2031 length 3 days +"추석" public on 18.9.2032 length 3 days +"추석" public on 7.9.2033 length 3 days +"추석" public on 26.9.2034 length 3 days +"추석" public on 15.9.2035 length 3 days +"추석" public on 3.10.2036 length 3 days +"추석" public on 23.9.2037 length 3 days :: Religious diff --git a/holidays/plan2/holiday_mq_fr b/holidays/plan2/holiday_mq_fr --- a/holidays/plan2/holiday_mq_fr +++ b/holidays/plan2/holiday_mq_fr @@ -110,14 +110,4 @@ : winter "Heure d'hiver" seasonal on last sunday in october -:: Seasons -: Spring -"Printemps" seasonal on march 20 -: Summer -"Été" seasonal on june 21 -: Fall -"Automne" seasonal on september 23 -: Winter -"Hiver" seasonal on december 21 - :: Name Days diff --git a/holidays/plan2/holiday_mu_en b/holidays/plan2/holiday_mu_en new file mode 100644 --- /dev/null +++ b/holidays/plan2/holiday_mu_en @@ -0,0 +1,51 @@ +:: +:: Country: Mauritius +:: +:: Language: UK English +:: +:: Author: Nadim Attari +:: +:: Updated: +:: +:: Source: These were taken from http://pmo.govmu.org +:: Note: Only the fixed holidays are available. Some celebrations depend on +:: special events, eg: The exact date of Eid-ul-Fitr is subject to +:: confirmation as its celebration depends on the visibility of the moon +:: + +:: Metadata +country "MU" +language "en_GB" +name "Mauritius" +description "National holiday file for Mauritius" + +:: Public Holidays +"New Year" public on january 01 +"New Year" public on january 02 +"Chinese Spring Festival" public on january 28 +"Abolition Of Slavery" public on february 01 +"Thaipoosam Cavadee" public on february 09 +"Maha Shivaratree" public on february 24 +"Independence And Republic Day" public on march 12 +"Ugaadi" public on march 29 +"Labour Day" public on may 01 +"Eid-ul-fitr" public on june 26 +"Ganesh Chaturthi" public on august 26 +"Divali" public on october 19 +"All Saints Day" public on november 01 +"Arrival Of Indentured Labourers" public on november 02 +"Christmas" public on december 25 + +:: Religious + +:: Financial + +:: Cultural + +:: School + +:: Daylight Saving + +:: Seasons + +:: Name Days diff --git a/holidays/plan2/holiday_mx_es b/holidays/plan2/holiday_mx_es --- a/holidays/plan2/holiday_mx_es +++ b/holidays/plan2/holiday_mx_es @@ -43,15 +43,8 @@ :: Daylight Saving -:: Seasons -"Equinoxio de primavera" seasonal on march 21 -"Solsticio de verano" seasonal on june 21 -"Equinoxio de otoño" seasonal on september 21 -"Solsticio de invierno" seasonal on december 21 - :: Name Days - :: To be sorted "Día de la expropiación petrolera" civil on march 18 "Batalla de Puebla" civil on may 5 diff --git a/holidays/plan2/holiday_nc_fr b/holidays/plan2/holiday_nc_fr --- a/holidays/plan2/holiday_nc_fr +++ b/holidays/plan2/holiday_nc_fr @@ -108,14 +108,4 @@ : winter "Heure d'hiver" seasonal on last sunday in october -:: Seasons -: Spring -"Printemps" seasonal on september 23 -: Summer -"Été" seasonal on december 21 -: Fall -"Automne" seasonal on march 20 -: Winter -"Hiver" seasonal on june 21 - :: Name Days diff --git a/holidays/plan2/holiday_pa_en b/holidays/plan2/holiday_pa_en --- a/holidays/plan2/holiday_pa_en +++ b/holidays/plan2/holiday_pa_en @@ -59,10 +59,4 @@ :: Daylight Saving -:: Seasons -"March Equinox" seasonal on march 20 -"June Solstice" seasonal on june 21 -"September Equinox" seasonal on september 22 -"December Solstice" seasonal on december 21 - :: Name Days diff --git a/holidays/plan2/holiday_pa_es b/holidays/plan2/holiday_pa_es --- a/holidays/plan2/holiday_pa_es +++ b/holidays/plan2/holiday_pa_es @@ -59,10 +59,4 @@ :: Daylight Saving -:: Seasons -"Equinoccio" seasonal on march 20 -"Solticio" seasonal on june 21 -"Equinoccio" seasonal on september 22 -"Solticio" seasonal on december 21 - :: Name Days diff --git a/holidays/plan2/holiday_pf_fr b/holidays/plan2/holiday_pf_fr --- a/holidays/plan2/holiday_pf_fr +++ b/holidays/plan2/holiday_pf_fr @@ -108,14 +108,4 @@ : winter "Heure d'hiver" seasonal on last sunday in october -:: Seasons -: Spring -"Printemps" seasonal on september 23 -: Summer -"Été" seasonal on december 21 -: Fall -"Automne" seasonal on march 20 -: Winter -"Hiver" seasonal on june 21 - :: Name Days diff --git a/holidays/plan2/holiday_pl_pl b/holidays/plan2/holiday_pl_pl --- a/holidays/plan2/holiday_pl_pl +++ b/holidays/plan2/holiday_pl_pl @@ -44,12 +44,6 @@ :: Daylight Saving -:: Seasons -"Początek wiosny" seasonal on march 21 -"Początek lata" seasonal on june 22 -"Początek jesieni" seasonal on september 23 -"Początek zimy" seasonal on december 22 - :: Name Days diff --git a/holidays/plan2/holiday_pt_pt b/holidays/plan2/holiday_pt_pt --- a/holidays/plan2/holiday_pt_pt +++ b/holidays/plan2/holiday_pt_pt @@ -42,13 +42,6 @@ :: Daylight Saving -:: Seasons -"Primavera" seasonal on march 22 -"Verão" seasonal on june 22 -"Outono" seasonal on september 22 -"Inverno" seasonal on december 22 - - :: Removed holidays :: "Corpo de Deus" public on easter plus 60 days :: "República" public on october 5 diff --git a/holidays/plan2/holiday_re_fr b/holidays/plan2/holiday_re_fr --- a/holidays/plan2/holiday_re_fr +++ b/holidays/plan2/holiday_re_fr @@ -109,14 +109,4 @@ : winter "Heure d'hiver" seasonal on last sunday in october -:: Seasons -: Spring -"Printemps" seasonal on september 23 -: Summer -"Été" seasonal on december 21 -: Fall -"Automne" seasonal on march 20 -: Winter -"Hiver" seasonal on june 21 - :: Name Days diff --git a/holidays/plan2/holiday_rs_sr b/holidays/plan2/holiday_rs_sr --- a/holidays/plan2/holiday_rs_sr +++ b/holidays/plan2/holiday_rs_sr @@ -63,10 +63,4 @@ "Летње рачунање времена (ГМТ+2)" seasonal on last sunday in march "Зимско рачунање времена (ГМТ+1)" seasonal on last sunday in october -:: Seasons -"Први дан пролећа" seasonal on march 20 -"Први дан лета" seasonal on june 21 -"Први дан јесени" seasonal on september 23 -"Први дан зиме" seasonal on december 22 - :: Name Days diff --git a/holidays/plan2/holiday_rs_sr@ijekavian b/holidays/plan2/holiday_rs_sr@ijekavian --- a/holidays/plan2/holiday_rs_sr@ijekavian +++ b/holidays/plan2/holiday_rs_sr@ijekavian @@ -63,10 +63,4 @@ "Љетње рачунање времена (ГМТ+2)" seasonal on last sunday in march "Зимско рачунање времена (ГМТ+1)" seasonal on last sunday in october -:: Seasons -"Први дан прољећа" seasonal on march 20 -"Први дан љета" seasonal on june 21 -"Први дан јесени" seasonal on september 23 -"Први дан зиме" seasonal on december 22 - :: Name Days diff --git a/holidays/plan2/holiday_rs_sr@ijekavianlatin b/holidays/plan2/holiday_rs_sr@ijekavianlatin --- a/holidays/plan2/holiday_rs_sr@ijekavianlatin +++ b/holidays/plan2/holiday_rs_sr@ijekavianlatin @@ -63,10 +63,4 @@ "Ljetnje računanje vremena (GMT+2)" seasonal on last sunday in march "Zimsko računanje vremena (GMT+1)" seasonal on last sunday in october -:: Seasons -"Prvi dan proljeća" seasonal on march 20 -"Prvi dan ljeta" seasonal on june 21 -"Prvi dan jeseni" seasonal on september 23 -"Prvi dan zime" seasonal on december 22 - :: Name Days diff --git a/holidays/plan2/holiday_rs_sr@latin b/holidays/plan2/holiday_rs_sr@latin --- a/holidays/plan2/holiday_rs_sr@latin +++ b/holidays/plan2/holiday_rs_sr@latin @@ -63,10 +63,4 @@ "Letnje računanje vremena (GMT+2)" seasonal on last sunday in march "Zimsko računanje vremena (GMT+1)" seasonal on last sunday in october -:: Seasons -"Prvi dan proleća" seasonal on march 20 -"Prvi dan leta" seasonal on june 21 -"Prvi dan jeseni" seasonal on september 23 -"Prvi dan zime" seasonal on december 22 - :: Name Days diff --git a/holidays/plan2/holiday_ru_ru b/holidays/plan2/holiday_ru_ru --- a/holidays/plan2/holiday_ru_ru +++ b/holidays/plan2/holiday_ru_ru @@ -56,7 +56,8 @@ "День работника прокуратуры Российской Федерации" government on january 12 "День работника органов наркоконтроля" government on ((year >= 2008) ? [march 11] : noop) "День работников гидрометеорологической службы России" government on ((year >= 2009) ? [march 23] : noop) -"День внутренних войск МВД России" government on march 27 +"День внутренних войск МВД России" government on ((year < 2017) ? [march 27] : noop) +"День войск национальной гвардии Российской Федерации" government on ((year >= 2017) ? [march 27] : noop) "День пограничника" government on may 28 "День таможенника Российской Федерации" government on october 25 "День работника налоговых органов Российской Федерации" government on november 21 diff --git a/holidays/plan2/holiday_si_sl b/holidays/plan2/holiday_si_sl --- a/holidays/plan2/holiday_si_sl +++ b/holidays/plan2/holiday_si_sl @@ -7,9 +7,10 @@ :: Jure Repinc :: Andrej Mernik :: -:: Updated: 2012 +:: Updated: 2018 :: :: Source: http://www.vlada.si/o_sloveniji/politicni_sistem/prazniki/ +:: https://podatki.gov.si/dataset/seznam-praznikov-in-dela-prostih-dni-v-republiki-sloveniji :: :: Metadata @@ -20,7 +21,7 @@ :: Public Holidays -"Novo leto" public on january 1 +"Novo leto" public on january 1 length 2 days "Dan upora proti okupatorju" public on april 27 "Praznik dela" public on may 1 length 2 days "Dan državnosti" public on june 25 diff --git a/holidays/plan2/holiday_sk_sk b/holidays/plan2/holiday_sk_sk --- a/holidays/plan2/holiday_sk_sk +++ b/holidays/plan2/holiday_sk_sk @@ -52,7 +52,7 @@ :: To be sorted "Medzinárodný deň žien" civil on march 8 -"Deň učiteľov" civil on april 28 +"Deň učiteľov" civil on march 28 "Deň matiek" civil on may 13 "Medzinárodný deň detí" civil on june 1 "Deň otcov" civil on june 17 diff --git a/holidays/plan2/holiday_th_en-gb b/holidays/plan2/holiday_th_en-gb --- a/holidays/plan2/holiday_th_en-gb +++ b/holidays/plan2/holiday_th_en-gb @@ -5,7 +5,7 @@ :: :: Author: Gerald Williams :: -:: Updated: +:: Updated: May 31 2018 :: :: Source: :: @@ -18,35 +18,47 @@ :: Public Holidays "New Years Day" public on January 1 -:"Makha Bucha Day" public on February 11 -"Chakri Memorial Day" public on April 6 -"Songkran Festival" public on April 13 length 3 days -"Coranation Day" public on May 5 -:"Royal Ploughing Ceremony Day" public on May 8 -:"Visakha Bucha Day" public on May 10 -:"Mid Year Day" public on July 1 -:"Asarnha Bucha Day" public on July 8 -:"Khao Phansa Day" public on July 9 -"HM The Queens Birthday" public on August 12 -"Chulalongkorn Day" public on October 23 -"HM The King's Birthdayday" public on December 5 +"Bridge Public Holiday" public on January 2 +"Labor Day" public on May 1 +"Royal Ploughing Ceremony Day" public on May 14 +"His Majesty King Vajiralongkorn's Birthday" public on July 28 +"King's Birthday holiday" public on July 30 +"Her Majesty the Queen's Birthday" public on August 12 length 2 days +"Mother's Day" public on August 12 length 2 days +"His Majesty the late King Bhumibol Adulyadej Memorial Day" public on October 13 +"Anniversary of the Death of King Bhumibol" public on October 15 +"King Chulalongkorn Memorial Day" public on October 23 +"Father's Day" public on December 5 "Constitution Day" public on December 10 -"New Years Eve" public on December 31 +"Christmas Eve" public on December 24 +"Christmas Day" public on December 25 +"New Year's Eve" public on December 31 :: Religious Holidays +"Makha Bucha" public on March 1 +"Chakri Day" public on April 6 +"Visakha Bucha" public on May 29 +"Asalha Bucha" public on July 27 +"Buddhist Lent Day" public on July 28 :: Financial :: Cultural +"National Children's Day" public on January 13 +"Valentine's Day" public on February 14 +"Chinese Lunar New Year's Day" public on February 16 length 3 days +"Songkran Festival" public on April 12 length 5 days +"Halloween" public on October 31 +"Loy Krathong" public on November 22 :: School +"Teachers' Day" public on January 16 :: Daylight Saving :: Seasons -"Hot season begins" seasonal on march 1 -"Rainy season begins" seasonal on june 1 -"Cool season begins" seasonal on november 1 +"Hot season begins" seasonal on March 1 +"Rainy season begins" seasonal on June 1 +"Cool season begins" seasonal on November 1 :: Name Days - diff --git a/holidays/plan2/holiday_tr_en-gb b/holidays/plan2/holiday_tr_en-gb --- a/holidays/plan2/holiday_tr_en-gb +++ b/holidays/plan2/holiday_tr_en-gb @@ -10,10 +10,10 @@ :: Volkan Gezer :: Ömer Fadıl Usta :: -:: Updated: 2013-04-19 +:: Updated: 2017-05-20 :: -:: Source: http://mevzuat.meb.gov.tr/html/114.html (for public holidays) and -:: http://www.diyanet.gov.tr/turkish/dy/Diyanet-Isleri-Baskanligi-Duyuru-9882.aspx +:: Source: http://www.mevzuat.gov.tr/MevzuatMetin/1.5.2429.pdf (for public holidays) and +:: http://www2.diyanet.gov.tr/DinHizmetleriGenelMudurlugu/Sayfalar/2017DiniG%C3%BCnlerListesi.aspx :: (for religious holidays) :: Metadata @@ -27,43 +27,27 @@ "National Sovereignty and Children's Day" public on april 23 "Labour and Solidarity Day" public on may 1 "Commemoration of Atatürk, Youth and Sports Day" public on may 19 +"Democracy and National Unity Day" public on july 15 "Victory Day" public on august 30 "Republic Day" public on october 29 :: Religious -:: We cannot use KDE Hijri calendar since is one/two days ahead -:: than holiday dates defined for Turkey -:: "Ramadan Feast" public religious on hijri shawwal 1 length 3 days -:: "Sacrifice Feast" public religious on hijri thualhijjah 10 length 4 days -"Ramadan Feast" public religious on 08 august 2013 length 3 days -"Ramadan Feast" public religious on 28 july 2014 length 3 days -"Ramadan Feast" public religious on 17 july 2015 length 3 days +"Ramadan Feast" public religious on hijri shawwal 1 length 3 +"Sacrifice Feast" public religious on hijri thualhijjah 10 length 4 -"Sacrifice Feast" public religious on 15 october 2013 length 4 days -"Sacrifice Feast" public religious on 04 october 2014 length 4 days -"Sacrifice Feast" public religious on 23 september 2015 length 4 days +"Night of Qadr" religious on hijri ramadan 26 -"Night of Qadr" religious on 03 august 2013 -"Night of Qadr" religious on 23 july 2014 -"Night of Qadr" religious on 12 july 2015 +"Mawlid" religious on hijri rabialawal 12 -"Mawlid" religious on 23 january 2013 -"Mawlid" religious on 12 january 2014 -"Mawlid" religious on 02 january 2015 -"Mawlid" religious on 22 december 2015 +"Regaib Night" religious on hijri first thursday in rajab -"Regaib Night" religious on 16 may 2013 -"Regaib Night" religious on 01 may 2014 -"Regaib Night" religious on 23 april 2015 +"Ashura" religious on hijri muharram 10 -"Miraj" religious on 05 june 2013 -"Miraj" religious on 25 may 2014 -"Miraj" religious on 15 may 2015 +"Miraj" religious on hijri rajab 26 + +"Bara'ah Night" religious on hijri shaban 14 -"Bara'ah Night" religious on 23 june 2013 -"Bara'ah Night" religious on 12 june 2014 -"Bara'ah Night" religious on 01 june 2015 :: Financial @@ -103,14 +87,6 @@ :: School :: Daylight Saving -"Daylight Saving Start" seasonal on ((year == 2011) ? [march 28] : [last sunday in march]) -"Daylight Saving End" seasonal on last sunday in october - -:: Seasons -"Spring Begins" seasonal on march 21 -"Summer Begins" seasonal on june 21 -"Fall Begins" seasonal on september 23 -"Winter Begins" seasonal on december 21 "Heat Falling from the Sun to the Air" seasonal on november 8 plus 105 days "Heat Falling from the Sun to the Water" seasonal on november 8 plus 112 days diff --git a/holidays/plan2/holiday_tr_tr b/holidays/plan2/holiday_tr_tr --- a/holidays/plan2/holiday_tr_tr +++ b/holidays/plan2/holiday_tr_tr @@ -10,60 +10,43 @@ :: Volkan Gezer :: Ömer Fadıl Usta :: -:: Updated: 2013-04-19 +:: Updated: 2017-05-20 :: -:: Source: http://mevzuat.meb.gov.tr/html/114.html (for public holidays) and -:: http://www.diyanet.gov.tr/turkish/dy/Diyanet-Isleri-Baskanligi-Duyuru-9882.aspx +:: Source: http://www.mevzuat.gov.tr/MevzuatMetin/1.5.2429.pdf (for public holidays) and +:: http://www2.diyanet.gov.tr/DinHizmetleriGenelMudurlugu/Sayfalar/2017DiniG%C3%BCnlerListesi.aspx :: (for religious holidays) :: Metadata country "TR" language "tr" -:name "optional - defaults to country name" -description "National holiday file for Turkey" +name "Türkiye" +description "Türkiye'nin ulusal tatilleri" :: Public Holidays "Yeni Yıl Tatili" public on january 1 "Ulusal Egemenlik ve Çocuk Bayramı" public on april 23 "Emek ve Dayanışma Günü" public on may 1 "Atatürk'ü Anma, Gençlik ve Spor Bayramı" public on may 19 +"Demokrasi ve Millî Birlik Günü" public on july 15 "Zafer Bayramı" public on august 30 "Cumhuriyet Bayramı" public on october 29 :: Religious -:: We cannot use KDE Hijri calendar since is one/two days ahead -:: than holiday dates defined for Turkey -:: "Ramazan Bayramı" public religious on hijri shawwal 1 length 3 days -:: "Kurban Bayramı" public religious on hijri thualhijjah 10 length 4 days -"Ramazan Bayramı" public religious on 08 august 2013 length 3 days -"Ramazan Bayramı" public religious on 28 july 2014 length 3 days -"Ramazan Bayramı" public religious on 17 july 2015 length 3 days +"Ramazan Bayramı" public religious on hijri shawwal 1 length 3 +"Kurban Bayramı" public religious on hijri thualhijjah 10 length 4 -"Kurban Bayramı" public religious on 15 october 2013 length 4 days -"Kurban Bayramı" public religious on 04 october 2014 length 4 days -"Kurban Bayramı" public religious on 23 september 2015 length 4 days +"Kadir Gecesi" religious on hijri ramadan 26 -"Kadir Gecesi" religious on 03 august 2013 -"Kadir Gecesi" religious on 23 july 2014 -"Kadir Gecesi" religious on 12 july 2015 +"Mevlid Kandili" religious on hijri rabialawal 12 -"Mevlid Kandili" religious on 23 january 2013 -"Mevlid Kandili" religious on 12 january 2014 -"Mevlid Kandili" religious on 02 january 2015 -"Mevlid Kandili" religious on 22 december 2015 +"Regaib Kandili" religious on hijri first thursday in rajab -"Regaib Kandili" religious on 16 may 2013 -"Regaib Kandili" religious on 01 may 2014 -"Regaib Kandili" religious on 23 april 2015 +"Aşure Günü" religious on hijri muharram 10 -"Mirac Kandili" religious on 05 june 2013 -"Mirac Kandili" religious on 25 may 2014 -"Mirac Kandili" religious on 15 may 2015 +"Mirac Kandili" religious on hijri rajab 26 -"Berat Kandili" religious on 23 june 2013 -"Berat Kandili" religious on 12 june 2014 -"Berat Kandili" religious on 01 june 2015 +"Berat Kandili" religious on hijri shaban 14 :: Financial @@ -92,7 +75,7 @@ "Türk Dil Bayramı" cultural on september 26 "Dünya Kalp Günü" cultural on last sunday in september "Dünya Hayvanları Koruma Günü" cultural on october 4 -"Atatürk'ün Ölüm Yıldönümü" cultural on november 10 +"Atatürk'ü Anma Günü ve Atatürk Haftası" cultural on november 10 "Çocuk Hakları Günü" cultural on november 20 "Öğretmenler Günü" cultural on november 24 "Kadına Yönelik Şiddete Karşı Mücadele Günü" cultural on november 25 @@ -103,14 +86,6 @@ :: School :: Daylight Saving -"Yaz Saati Uygulaması Başlangıcı" seasonal on ((year == 2011) ? [march 28] : [last sunday in march]) -"Yaz Saati Uygulaması Bitişi" seasonal on last sunday in october - -:: Seasons -"İlkbahar Başlangıcı" seasonal on march 21 -"Yaz Başlangıcı" seasonal on june 21 -"Sonbahar Başlangıcı" seasonal on september 23 -"Kış Başlangıcı" seasonal on december 21 "Birinci Cemrenin (Havaya) Düşüşü" seasonal on november 8 plus 105 days "İkinci Cemrenin (Suya) Düşüşü" seasonal on november 8 plus 112 days diff --git a/holidays/plan2/holiday_ua_uk b/holidays/plan2/holiday_ua_uk --- a/holidays/plan2/holiday_ua_uk +++ b/holidays/plan2/holiday_ua_uk @@ -172,16 +172,6 @@ : DST back "Перехід на зимовий час" seasonal on last sunday in october -:: Seasons -: Spring -"Початок весни" seasonal on march 1 -: Summer -"Початок літа" seasonal on june 1 -: Autumn -"Початок осені" seasonal on september 1 -: Winter -"Початок зими" seasonal on december 1 - :: Name Days :: Professions diff --git a/holidays/plan2/holiday_us_en-us b/holidays/plan2/holiday_us_en-us --- a/holidays/plan2/holiday_us_en-us +++ b/holidays/plan2/holiday_us_en-us @@ -64,10 +64,4 @@ :: Daylight Saving -:: Seasons -"Spring Begins" seasonal on march 22 -"Summer Begins" seasonal on june 22 -"Fall Begins" seasonal on september 22 -"Winter Begins" seasonal on december 22 - :: Name Days diff --git a/holidays/plan2/holiday_ve_es b/holidays/plan2/holiday_ve_es new file mode 100644 --- /dev/null +++ b/holidays/plan2/holiday_ve_es @@ -0,0 +1,35 @@ +:: +:: Country: Venezuela +:: +:: Language: Spanish +:: +:: Author: Daniel Klopp +:: +:: Updated: 03-MAY-2014 +:: +:: Source: http://www.lottt.gob.ve/ley-del-trabajo/titulo-iii/#capituloviii +:: http://www.ilo.org/dyn/travail/docs/2030/Law%20No.29.541.pdf +:: http://es.wikipedia.org/wiki/Venezuela#Festividades +:: + +:: Metadata +country "VE" +language "es" +:name "optional - defaults to country name" +description "Feriados Nacionales de Venezuela" + +:: Public Holidays +"Año Nuevo" public on january 1 +"Lunes de Carnaval" public on easter minus 48 +"Martes de Carnaval" public on easter minus 47 +"Jueves Santo" public on easter minus 3 +"Viernes Santo" public on easter minus 2 +"Declaración de la Independencia" public on april 19 +"Día del Trabajador" public on may 1 +"Batalla de Carabobo" public on june 24 +"Día de la Independencia" public on july 5 +"Natalicio de Simón Bolívar" public on july 24 +"Día de la Resistencia Indígena" public on october 12 +"Nochebuena" public on december 24 +"Navidad" public on december 25 +"Fin de Año" public on december 31 diff --git a/holidays/plan2/holiday_wf_fr b/holidays/plan2/holiday_wf_fr --- a/holidays/plan2/holiday_wf_fr +++ b/holidays/plan2/holiday_wf_fr @@ -109,14 +109,4 @@ : winter "Heure d'hiver" seasonal on last sunday in october -:: Seasons -: Spring -"Printemps" seasonal on september 23 -: Summer -"Été" seasonal on december 21 -: Fall -"Automne" seasonal on march 20 -: Winter -"Hiver" seasonal on june 21 - :: Name Days diff --git a/holidays/plan2/holiday_yt_fr b/holidays/plan2/holiday_yt_fr --- a/holidays/plan2/holiday_yt_fr +++ b/holidays/plan2/holiday_yt_fr @@ -111,14 +111,4 @@ : winter "Heure d'hiver" seasonal on last sunday in october -:: Seasons -: Spring -"Printemps" seasonal on september 23 -: Summer -"Été" seasonal on december 21 -: Fall -"Automne" seasonal on march 20 -: Winter -"Hiver" seasonal on june 21 - :: Name Days diff --git a/metainfo.yaml b/metainfo.yaml --- a/metainfo.yaml +++ b/metainfo.yaml @@ -1,18 +1,17 @@ -maintainer: jlayt +maintainer: winter description: Holiday calculation library tier: 1 type: functional platforms: - name: All portingAid: false deprecated: false -release: false +release: true libraries: - qmake: KHolidays cmake: "KF5::Holidays" cmakename: KF5Holidays public_lib: true -group: kdepim -platforms: - - name: Linux +group: Frameworks +subgroup: Tier 1 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -21,6 +21,7 @@ parsers/plan2/holidayparserdriverplan.cpp parsers/plan2/holidayparserplan.cpp ${kholidays_QM_LOADER} + ../holidays/holidays.qrc ) add_library(KF5Holidays ${kholidays_SRCS}) @@ -32,15 +33,12 @@ target_include_directories(KF5Holidays PUBLIC "$") target_include_directories(KF5Holidays PUBLIC "$") -target_link_libraries(KF5Holidays -PUBLIC - Qt5::Core -) +target_link_libraries(KF5Holidays PUBLIC Qt5::Core) set_target_properties(KF5Holidays PROPERTIES - VERSION ${KHOLIDAYS_VERSION_STRING} - SOVERSION ${KHOLIDAYS_SOVERSION} - EXPORT_NAME Holidays + VERSION ${KHOLIDAYS_VERSION_STRING} + SOVERSION ${KHOLIDAYS_SOVERSION} + EXPORT_NAME Holidays ) ecm_generate_headers(KHolidays_CamelCase_HEADERS @@ -58,20 +56,46 @@ ########### install files ############### install(FILES - ${CMAKE_CURRENT_BINARY_DIR}/kholidays_export.h - ${KHolidays_HEADERS} - ${KHolidays_CamelCase_HEADERS} - DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/KHolidays/kholidays - COMPONENT Devel + ${CMAKE_CURRENT_BINARY_DIR}/kholidays_export.h + ${KHolidays_HEADERS} + ${KHolidays_CamelCase_HEADERS} + DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/KHolidays/kholidays + COMPONENT Devel ) install(FILES - ${KHolidays_CamelCase_HEADERS} - DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/KHolidays/KHolidays - COMPONENT Devel + ${KHolidays_CamelCase_HEADERS} + DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/KHolidays/KHolidays + COMPONENT Devel ) -ecm_generate_pri_file(BASE_NAME KHolidays LIB_NAME KF5KHolidays DEPS "widgets" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF5}/KHolidays) +if(BUILD_QCH) + ecm_add_qch( + KF5Holidays_QCH + NAME KHolidays + BASE_NAME KF5Holidays + VERSION ${KF5_VERSION} + ORG_DOMAIN org.kde + SOURCES # using only public headers, to cover only public API + ${KHolidays_HEADERS} + MD_MAINPAGE "${CMAKE_SOURCE_DIR}/README.md" + LINK_QCHS + Qt5Core_QCH + BLANK_MACROS + KHOLIDAYS_EXPORT + TAGFILE_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} + QCH_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} + COMPONENT Devel + ) +endif() + +ecm_generate_pri_file( + BASE_NAME KHolidays + LIB_NAME KF5KHolidays + DEPS "widgets" + FILENAME_VAR PRI_FILENAME + INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF5}/KHolidays +) install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR}) diff --git a/src/astroseasons.h b/src/astroseasons.h --- a/src/astroseasons.h +++ b/src/astroseasons.h @@ -22,6 +22,14 @@ #ifndef KHOLIDAYS_ASTROSEASONS_H #define KHOLIDAYS_ASTROSEASONS_H +#include "kholidays_export.h" + +class QDate; +class QString; + +namespace KHolidays +{ + /** Represents and manages the Astronomical Seasons (solstices and equinoxes). For the purposes of this class, we sometimes use the shorthand of "Season" @@ -41,15 +49,6 @@ Note that this class represents the "Astronomical Seasons" and not the traditional "Seasons" which vary widely by culture. */ - -#include "kholidays_export.h" - -class QDate; -class QString; - -namespace KHolidays -{ - class KHOLIDAYS_EXPORT AstroSeasons //krazy:exclude=dpointer { public: diff --git a/src/astroseasons.cpp b/src/astroseasons.cpp --- a/src/astroseasons.cpp +++ b/src/astroseasons.cpp @@ -21,8 +21,8 @@ #include "astroseasons.h" -#include -#include +#include +#include using namespace KHolidays; @@ -42,10 +42,10 @@ return QCoreApplication::translate("AstroSeasons", "March Equinox"); case SeptemberEquinox: return QCoreApplication::translate("AstroSeasons", "September Equinox"); - default: case None: return QString(); } + return QString(); } AstroSeasons::Season AstroSeasons::seasonAtDate(const QDate &date) diff --git a/src/declarative/CMakeLists.txt b/src/declarative/CMakeLists.txt --- a/src/declarative/CMakeLists.txt +++ b/src/declarative/CMakeLists.txt @@ -1,11 +1,9 @@ -include_directories(${CMAKE_CURRENT_BINARY_DIR}/.. ${CMAKE_CURRENT_SOURCE_DIR}/..) +add_library(kholidaysdeclarativeplugin SHARED kholidaysdeclarativeplugin.cpp holidayregionsmodel.cpp) -add_library(kholidaysdeclarativeplugin SHARED kholidaysdeclarativeplugin.cpp - holidayregionsmodel.cpp) - -target_link_libraries(kholidaysdeclarativeplugin Qt5::Qml - Qt5::Core - KF5Holidays +target_link_libraries(kholidaysdeclarativeplugin + Qt5::Qml + Qt5::Core + KF5Holidays ) install(TARGETS kholidaysdeclarativeplugin DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/kholidays) diff --git a/src/declarative/holidayregionsmodel.h b/src/declarative/holidayregionsmodel.h --- a/src/declarative/holidayregionsmodel.h +++ b/src/declarative/holidayregionsmodel.h @@ -19,8 +19,8 @@ Boston, MA 02110-1301, USA. */ -#ifndef HOLIDAYREGIONSDECLARATIVEMODEL_H -#define HOLIDAYREGIONSDECLARATIVEMODEL_H +#ifndef HOLIDAYREGIONSMODEL_H +#define HOLIDAYREGIONSMODEL_H #include #include @@ -35,11 +35,11 @@ DescriptionRole }; explicit HolidayRegionsDeclarativeModel(QObject *parent = nullptr); - virtual ~HolidayRegionsDeclarativeModel(); + ~HolidayRegionsDeclarativeModel() override; - int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; - QVariant data(const QModelIndex &index, int role) const Q_DECL_OVERRIDE; - QHash roleNames() const Q_DECL_OVERRIDE; + int rowCount(const QModelIndex &parent = QModelIndex()) const override; + QVariant data(const QModelIndex &index, int role) const override; + QHash roleNames() const override; private: class Private; diff --git a/src/declarative/holidaysmodel.h b/src/declarative/holidaysmodel.h deleted file mode 100644 diff --git a/src/declarative/kholidaysdeclarativeplugin.h b/src/declarative/kholidaysdeclarativeplugin.h --- a/src/declarative/kholidaysdeclarativeplugin.h +++ b/src/declarative/kholidaysdeclarativeplugin.h @@ -29,7 +29,7 @@ Q_OBJECT Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface") public: - void registerTypes(const char *uri) Q_DECL_OVERRIDE; + void registerTypes(const char *uri) override; }; #endif // KHOLIDAYSDECLARATIVEPLUGIN_H diff --git a/src/holiday.h b/src/holiday.h --- a/src/holiday.h +++ b/src/holiday.h @@ -27,8 +27,8 @@ #include "kholidays_export.h" -#include -#include +#include +#include class QDate; class QString; @@ -39,9 +39,11 @@ class HolidayPrivate; class HolidayRegion; +/** Represents a holiday event. */ class KHOLIDAYS_EXPORT Holiday { friend class HolidayRegion; + friend class HolidayParserDriver; friend class HolidayParserDriverPlan; friend class HolidayParserDriverPlanOld; @@ -53,6 +55,7 @@ /** * Describes the date type of the holiday. + * If any of the holidays on a date are non-workdays types, then the entire day is non-working. */ enum DayType { Workday, ///< The holiday is a workday @@ -133,6 +136,14 @@ */ DayType dayType() const; + /** + * @since 5.8 + * + * Returns a QStringList of categories for the Holiday. + * If the Holiday has no categories then an empty list is returned. + */ + QStringList categoryList() const; + private: QSharedDataPointer d; }; diff --git a/src/holiday.cpp b/src/holiday.cpp --- a/src/holiday.cpp +++ b/src/holiday.cpp @@ -25,9 +25,9 @@ #include "holiday.h" #include "holiday_p.h" -#include -#include -#include +#include +#include +#include using namespace KHolidays; @@ -93,3 +93,8 @@ { return d->mDayType; } + +QStringList Holiday::categoryList() const +{ + return d->mCategoryList; +} diff --git a/src/holiday_p.h b/src/holiday_p.h --- a/src/holiday_p.h +++ b/src/holiday_p.h @@ -27,10 +27,10 @@ #include "holiday.h" -#include -#include -#include -#include +#include +#include +#include +#include namespace KHolidays { @@ -48,700 +48,18 @@ mDuration = other.mDuration; mName = other.mName; mDescription = other.mDescription; + mCategoryList = other.mCategoryList; mDayType = other.mDayType; } QDate mObservedDate; int mDuration; QString mName; QString mDescription; + QStringList mCategoryList; Holiday::DayType mDayType; }; } -// Copied from qlocale_data_p.h and qlocale.h -// Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). -// To later be replaced by OpenCodes or public Qt api - -static const unsigned char language_code_list[] = - " \0" // AnyLanguage - " \0" // C - "ab\0" // Abkhazian - "om\0" // Oromo - "aa\0" // Afar - "af\0" // Afrikaans - "sq\0" // Albanian - "am\0" // Amharic - "ar\0" // Arabic - "hy\0" // Armenian - "as\0" // Assamese - "ay\0" // Aymara - "az\0" // Azerbaijani - "ba\0" // Bashkir - "eu\0" // Basque - "bn\0" // Bengali - "dz\0" // Dzongkha - "bh\0" // Bihari - "bi\0" // Bislama - "br\0" // Breton - "bg\0" // Bulgarian - "my\0" // Burmese - "be\0" // Belarusian - "km\0" // Khmer - "ca\0" // Catalan - "zh\0" // Chinese - "co\0" // Corsican - "hr\0" // Croatian - "cs\0" // Czech - "da\0" // Danish - "nl\0" // Dutch - "en\0" // English - "eo\0" // Esperanto - "et\0" // Estonian - "fo\0" // Faroese - "fj\0" // Fijian - "fi\0" // Finnish - "fr\0" // French - "fy\0" // Western Frisian - "gd\0" // Gaelic - "gl\0" // Galician - "ka\0" // Georgian - "de\0" // German - "el\0" // Greek - "kl\0" // Greenlandic - "gn\0" // Guarani - "gu\0" // Gujarati - "ha\0" // Hausa - "he\0" // Hebrew - "hi\0" // Hindi - "hu\0" // Hungarian - "is\0" // Icelandic - "id\0" // Indonesian - "ia\0" // Interlingua - "ie\0" // Interlingue - "iu\0" // Inuktitut - "ik\0" // Inupiak - "ga\0" // Irish - "it\0" // Italian - "ja\0" // Japanese - "jv\0" // Javanese - "kn\0" // Kannada - "ks\0" // Kashmiri - "kk\0" // Kazakh - "rw\0" // Kinyarwanda - "ky\0" // Kirghiz - "ko\0" // Korean - "ku\0" // Kurdish - "rn\0" // Rundi - "lo\0" // Lao - "la\0" // Latin - "lv\0" // Latvian - "ln\0" // Lingala - "lt\0" // Lithuanian - "mk\0" // Macedonian - "mg\0" // Malagasy - "ms\0" // Malay - "ml\0" // Malayalam - "mt\0" // Maltese - "mi\0" // Maori - "mr\0" // Marathi - "mh\0" // Marshallese - "mn\0" // Mongolian - "na\0" // Nauru - "ne\0" // Nepali - "nb\0" // NorwegianBokmal - "oc\0" // Occitan - "or\0" // Oriya - "ps\0" // Pashto - "fa\0" // Persian - "pl\0" // Polish - "pt\0" // Portuguese - "pa\0" // Punjabi - "qu\0" // Quechua - "rm\0" // Romansh - "ro\0" // Romanian - "ru\0" // Russian - "sm\0" // Samoan - "sg\0" // Sango - "sa\0" // Sanskrit - "sr\0" // Serbian - "os\0" // Ossetic - "st\0" // Southern Sotho - "tn\0" // Tswana - "sn\0" // Shona - "sd\0" // Sindhi - "si\0" // Sinhala - "ss\0" // Swati - "sk\0" // Slovak - "sl\0" // Slovenian - "so\0" // Somali - "es\0" // Spanish - "su\0" // Sundanese - "sw\0" // Swahili - "sv\0" // Swedish - "sc\0" // Sardinian - "tg\0" // Tajik - "ta\0" // Tamil - "tt\0" // Tatar - "te\0" // Telugu - "th\0" // Thai - "bo\0" // Tibetan - "ti\0" // Tigrinya - "to\0" // Tongan - "ts\0" // Tsonga - "tr\0" // Turkish - "tk\0" // Turkmen - "ty\0" // Tahitian - "ug\0" // Uighur - "uk\0" // Ukrainian - "ur\0" // Urdu - "uz\0" // Uzbek - "vi\0" // Vietnamese - "vo\0" // Volapuk - "cy\0" // Welsh - "wo\0" // Wolof - "xh\0" // Xhosa - "yi\0" // Yiddish - "yo\0" // Yoruba - "za\0" // Zhuang - "zu\0" // Zulu - "nn\0" // NorwegianNynorsk - "bs\0" // Bosnian - "dv\0" // Divehi - "gv\0" // Manx - "kw\0" // Cornish - "ak\0" // Akan - "kok" // Konkani - "gaa" // Ga - "ig\0" // Igbo - "kam" // Kamba - "syr" // Syriac - "byn" // Blin - "gez" // Geez - "kfo" // Koro - "sid" // Sidamo - "cch" // Atsam - "tig" // Tigre - "kaj" // Jju - "fur" // Friulian - "ve\0" // Venda - "ee\0" // Ewe - "wal" // Walamo - "haw" // Hawaiian - "kcg" // Tyap - "ny\0" // Nyanja - "fil" // Filipino - "gsw" // Swiss German - "ii\0" // Sichuan Yi - "kpe" // Kpelle - "nds" // Low German - "nr\0" // South Ndebele - "nso" // Northern Sotho - "se\0" // Northern Sami - "trv" // Taroko - "guz" // Gusii - "dav" // Taita - "ff\0" // Fulah - "ki\0" // Kikuyu - "saq" // Samburu - "seh" // Sena - "nd\0" // North Ndebele - "rof" // Rombo - "shi" // Tachelhit - "kab" // Kabyle - "nyn" // Nyankole - "bez" // Bena - "vun" // Vunjo - "bm\0" // Bambara - "ebu" // Embu - "chr" // Cherokee - "mfe" // Morisyen - "kde" // Makonde - "lag" // Langi - "lg\0" // Ganda - "bem" // Bemba - "kea" // Kabuverdianu - "mer" // Meru - "kln" // Kalenjin - "naq" // Nama - "jmc" // Machame - "ksh" // Colognian - "mas" // Masai - "xog" // Soga - "luy" // Luyia - "asa" // Asu - "teo" // Teso - "ssy" // Saho - "khq" // Koyra Chiini - "rwk" // Rwa - "luo" // Luo - "cgg" // Chiga - "tzm" // Central Morocco Tamazight - "ses" // Koyraboro Senni - "ksb" // Shambala - "brx" // Bodo - "av\0" // Avaric - "ch\0" // Chamorro - "ce\0" // Chechen - "cu\0" // Church - "cv\0" // Chuvash - "cr\0" // Cree - "ht\0" // Haitian - "hz\0" // Herero - "ho\0" // Hiri Motu - "kr\0" // Kanuri - "kv\0" // Komi - "kg\0" // Kongo - "kj\0" // Kwanyama - "li\0" // Limburgish - "lu\0" // LubaKatanga - "lb\0" // Luxembourgish - "nv\0" // Navaho - "ng\0" // Ndonga - "oj\0" // Ojibwa - "pi\0" // Pali - "wa\0" // Walloon - "agq" // Aghem - "bas" // Basaa - "dje" // Zarma - "dua" // Duala - "dyo" // JolaFonyi - "ewo" // Ewondo - "ksf" // Bafia - "mgh" // MakhuwaMeetto - "mua" // Mundang - "nmg" // Kwasio - "nus" // Nuer - "sah" // Sakha - "sbp" // Sangu - "swc" // Congo Swahili - "twq" // Tasawaq - "vai" // Vai - "wae" // Walser - "yav" // Yangben - "ae\0" // Avestan - "ast" // Asturian - "jgo" // Ngomba - "kkj" // Kako - "mgo" // Meta - "nnh" // Ngiemboon - "an\0" // Aragonese - "akk" // Akkadian - "egy" // AncientEgyptian - "grc" // AncientGreek - "arc" // Aramaic - "ban" // Balinese - "bax" // Bamun - "bbc" // BatakToba - "bug" // Buginese - "bku" // Buhid - "xcr" // Carian - "ccp" // Chakma - "myz" // ClassicalMandaic - "cop" // Coptic - "doi" // Dogri - "cjm" // EasternCham - "eky" // EasternKayah - "ett" // Etruscan - "got" // Gothic - "hnn" // Hanunoo - "inh" // Ingush - "hmd" // LargeFloweryMiao - "lep" // Lepcha - "lif" // Limbu - "lis" // Lisu - "khb" // Lu - "xlc" // Lycian - "xld" // Lydian - "man" // Mandingo - "mni" // Manipuri - "xmr" // Meroitic - "nod" // NorthernThai - "sga" // OldIrish - "non" // OldNorse - "peo" // OldPersian - "otk" // OldTurkish - "pal" // Pahlavi - "xpr" // Parthian - "phn" // Phoenician - "pra" // PrakritLanguage - "rej" // Rejang - "xsa" // Sabaean - "smp" // Samaritan - "sat" // Santali - "saz" // Saurashtra - "srb" // Sora - "syl" // Sylheti - "tbw" // Tagbanwa - "blt" // TaiDam - "tdd" // TaiNua - "uga" // Ugaritic - "bss" // Akoose - "lkt" // Lakota - "zgh" // Standard Moroccan Tamazight - ; - -static const unsigned char country_code_list[] = - "ZZ\0" // AnyCountry - "AF\0" // Afghanistan - "AL\0" // Albania - "DZ\0" // Algeria - "AS\0" // AmericanSamoa - "AD\0" // Andorra - "AO\0" // Angola - "AI\0" // Anguilla - "AQ\0" // Antarctica - "AG\0" // AntiguaAndBarbuda - "AR\0" // Argentina - "AM\0" // Armenia - "AW\0" // Aruba - "AU\0" // Australia - "AT\0" // Austria - "AZ\0" // Azerbaijan - "BS\0" // Bahamas - "BH\0" // Bahrain - "BD\0" // Bangladesh - "BB\0" // Barbados - "BY\0" // Belarus - "BE\0" // Belgium - "BZ\0" // Belize - "BJ\0" // Benin - "BM\0" // Bermuda - "BT\0" // Bhutan - "BO\0" // Bolivia - "BA\0" // BosniaAndHerzegowina - "BW\0" // Botswana - "BV\0" // BouvetIsland - "BR\0" // Brazil - "IO\0" // BritishIndianOceanTerritory - "BN\0" // Brunei - "BG\0" // Bulgaria - "BF\0" // BurkinaFaso - "BI\0" // Burundi - "KH\0" // Cambodia - "CM\0" // Cameroon - "CA\0" // Canada - "CV\0" // CapeVerde - "KY\0" // CaymanIslands - "CF\0" // CentralAfricanRepublic - "TD\0" // Chad - "CL\0" // Chile - "CN\0" // China - "CX\0" // ChristmasIsland - "CC\0" // CocosIslands - "CO\0" // Colombia - "KM\0" // Comoros - "CD\0" // CongoKinshasa - "CG\0" // CongoBrazzaville - "CK\0" // CookIslands - "CR\0" // CostaRica - "CI\0" // IvoryCoast - "HR\0" // Croatia - "CU\0" // Cuba - "CY\0" // Cyprus - "CZ\0" // CzechRepublic - "DK\0" // Denmark - "DJ\0" // Djibouti - "DM\0" // Dominica - "DO\0" // DominicanRepublic - "TL\0" // EastTimor - "EC\0" // Ecuador - "EG\0" // Egypt - "SV\0" // ElSalvador - "GQ\0" // EquatorialGuinea - "ER\0" // Eritrea - "EE\0" // Estonia - "ET\0" // Ethiopia - "FK\0" // FalklandIslands - "FO\0" // FaroeIslands - "FJ\0" // Fiji - "FI\0" // Finland - "FR\0" // France - "GG\0" // Guernsey - "GF\0" // FrenchGuiana - "PF\0" // FrenchPolynesia - "TF\0" // FrenchSouthernTerritories - "GA\0" // Gabon - "GM\0" // Gambia - "GE\0" // Georgia - "DE\0" // Germany - "GH\0" // Ghana - "GI\0" // Gibraltar - "GR\0" // Greece - "GL\0" // Greenland - "GD\0" // Grenada - "GP\0" // Guadeloupe - "GU\0" // Guam - "GT\0" // Guatemala - "GN\0" // Guinea - "GW\0" // GuineaBissau - "GY\0" // Guyana - "HT\0" // Haiti - "HM\0" // HeardAndMcDonaldIslands - "HN\0" // Honduras - "HK\0" // HongKong - "HU\0" // Hungary - "IS\0" // Iceland - "IN\0" // India - "ID\0" // Indonesia - "IR\0" // Iran - "IQ\0" // Iraq - "IE\0" // Ireland - "IL\0" // Israel - "IT\0" // Italy - "JM\0" // Jamaica - "JP\0" // Japan - "JO\0" // Jordan - "KZ\0" // Kazakhstan - "KE\0" // Kenya - "KI\0" // Kiribati - "KP\0" // NorthKorea - "KR\0" // SouthKorea - "KW\0" // Kuwait - "KG\0" // Kyrgyzstan - "LA\0" // Laos - "LV\0" // Latvia - "LB\0" // Lebanon - "LS\0" // Lesotho - "LR\0" // Liberia - "LY\0" // Libya - "LI\0" // Liechtenstein - "LT\0" // Lithuania - "LU\0" // Luxembourg - "MO\0" // Macau - "MK\0" // Macedonia - "MG\0" // Madagascar - "MW\0" // Malawi - "MY\0" // Malaysia - "MV\0" // Maldives - "ML\0" // Mali - "MT\0" // Malta - "MH\0" // MarshallIslands - "MQ\0" // Martinique - "MR\0" // Mauritania - "MU\0" // Mauritius - "YT\0" // Mayotte - "MX\0" // Mexico - "FM\0" // Micronesia - "MD\0" // Moldova - "MC\0" // Monaco - "MN\0" // Mongolia - "MS\0" // Montserrat - "MA\0" // Morocco - "MZ\0" // Mozambique - "MM\0" // Myanmar - "NA\0" // Namibia - "NR\0" // Nauru - "NP\0" // Nepal - "NL\0" // Netherlands - "CW\0" // CuraSao - "NC\0" // NewCaledonia - "NZ\0" // NewZealand - "NI\0" // Nicaragua - "NE\0" // Niger - "NG\0" // Nigeria - "NU\0" // Niue - "NF\0" // NorfolkIsland - "MP\0" // NorthernMarianaIslands - "NO\0" // Norway - "OM\0" // Oman - "PK\0" // Pakistan - "PW\0" // Palau - "PS\0" // PalestinianTerritories - "PA\0" // Panama - "PG\0" // PapuaNewGuinea - "PY\0" // Paraguay - "PE\0" // Peru - "PH\0" // Philippines - "PN\0" // Pitcairn - "PL\0" // Poland - "PT\0" // Portugal - "PR\0" // PuertoRico - "QA\0" // Qatar - "RE\0" // Reunion - "RO\0" // Romania - "RU\0" // Russia - "RW\0" // Rwanda - "KN\0" // SaintKittsAndNevis - "LC\0" // SaintLucia - "VC\0" // SaintVincentAndTheGrenadines - "WS\0" // Samoa - "SM\0" // SanMarino - "ST\0" // SaoTomeAndPrincipe - "SA\0" // SaudiArabia - "SN\0" // Senegal - "SC\0" // Seychelles - "SL\0" // SierraLeone - "SG\0" // Singapore - "SK\0" // Slovakia - "SI\0" // Slovenia - "SB\0" // SolomonIslands - "SO\0" // Somalia - "ZA\0" // SouthAfrica - "GS\0" // SouthGeorgiaAndTheSouthSandwichIslands - "ES\0" // Spain - "LK\0" // SriLanka - "SH\0" // SaintHelena - "PM\0" // SaintPierreAndMiquelon - "SD\0" // Sudan - "SR\0" // Suriname - "SJ\0" // SvalbardAndJanMayenIslands - "SZ\0" // Swaziland - "SE\0" // Sweden - "CH\0" // Switzerland - "SY\0" // Syria - "TW\0" // Taiwan - "TJ\0" // Tajikistan - "TZ\0" // Tanzania - "TH\0" // Thailand - "TG\0" // Togo - "TK\0" // Tokelau - "TO\0" // Tonga - "TT\0" // TrinidadAndTobago - "TN\0" // Tunisia - "TR\0" // Turkey - "TM\0" // Turkmenistan - "TC\0" // TurksAndCaicosIslands - "TV\0" // Tuvalu - "UG\0" // Uganda - "UA\0" // Ukraine - "AE\0" // UnitedArabEmirates - "GB\0" // UnitedKingdom - "US\0" // UnitedStates - "UM\0" // UnitedStatesMinorOutlyingIslands - "UY\0" // Uruguay - "UZ\0" // Uzbekistan - "VU\0" // Vanuatu - "VA\0" // VaticanCityState - "VE\0" // Venezuela - "VN\0" // Vietnam - "VG\0" // BritishVirginIslands - "VI\0" // UnitedStatesVirginIslands - "WF\0" // WallisAndFutunaIslands - "EH\0" // WesternSahara - "YE\0" // Yemen - "IC\0" // CanaryIslands - "ZM\0" // Zambia - "ZW\0" // Zimbabwe - "CP\0" // ClippertonIsland - "ME\0" // Montenegro - "RS\0" // Serbia - "BL\0" // Saint Barthelemy - "MF\0" // Saint Martin - "419" // LatinAmericaAndTheCaribbean - "AC\0" // AscensionIsland - "AX\0" // AlandIslands - "DG\0" // DiegoGarcia - "EA\0" // CeutaAndMelilla - "IM\0" // IsleOfMan - "JE\0" // Jersey - "TA\0" // TristanDaCunha - "SS\0" // SouthSudan - "BQ\0" // Bonaire - "SX\0" // SintMaarten - "XK\0" // Kosovo - ; - -static QString languageToCode(QLocale::Language language) -{ - if (language == QLocale::AnyLanguage) { - return QString(); - } - if (language == QLocale::C) { - return QStringLiteral("C"); - } - - const unsigned char *c = language_code_list + 3 * (uint(language)); - - QString code(c[2] == 0 ? 2 : 3, Qt::Uninitialized); - - code[0] = ushort(c[0]); - code[1] = ushort(c[1]); - if (c[2] != 0) { - code[2] = ushort(c[2]); - } - - return code; -} - -static QLocale::Language codeToLanguage(const QString &code) -{ - int len = code.length(); - if (len != 2 && len != 3) { - return QLocale::C; - } - ushort uc1 = len-- > 0 ? code[0].toLower().unicode() : 0; - ushort uc2 = len-- > 0 ? code[1].toLower().unicode() : 0; - ushort uc3 = len-- > 0 ? code[2].toLower().unicode() : 0; - - const unsigned char *c = language_code_list; - for (; *c != 0; c += 3) { - if (uc1 == c[0] && uc2 == c[1] && uc3 == c[2]) { - return QLocale::Language((c - language_code_list) / 3); - } - } - - // legacy codes - if (uc1 == 'n' && uc2 == 'o' && uc3 == 0) { // no -> nb - Q_STATIC_ASSERT(QLocale::Norwegian == QLocale::NorwegianBokmal); - return QLocale::Norwegian; - } - if (uc1 == 't' && uc2 == 'l' && uc3 == 0) { // tl -> fil - Q_STATIC_ASSERT(QLocale::Tagalog == QLocale::Filipino); - return QLocale::Tagalog; - } - if (uc1 == 's' && uc2 == 'h' && uc3 == 0) { // sh -> sr[_Latn] - Q_STATIC_ASSERT(QLocale::SerboCroatian == QLocale::Serbian); - return QLocale::SerboCroatian; - } - if (uc1 == 'm' && uc2 == 'o' && uc3 == 0) { // mo -> ro - Q_STATIC_ASSERT(QLocale::Moldavian == QLocale::Romanian); - return QLocale::Moldavian; - } - - return QLocale::C; -} - -static QString countryToCode(QLocale::Country country) -{ - if (country == QLocale::AnyCountry) { - return QString(); - } - - const unsigned char *c = country_code_list + 3 * (uint(country)); - - QString code(c[2] == 0 ? 2 : 3, Qt::Uninitialized); - - code[0] = ushort(c[0]); - code[1] = ushort(c[1]); - if (c[2] != 0) { - code[2] = ushort(c[2]); - } - - return code; -} - -static QLocale::Country codeToCountry(const QString &code) -{ - int len = code.length(); - if (len != 2 && len != 3) { - return QLocale::AnyCountry; - } - ushort uc1 = len-- > 0 ? code[0].toUpper().unicode() : 0; - ushort uc2 = len-- > 0 ? code[1].toUpper().unicode() : 0; - ushort uc3 = len-- > 0 ? code[2].toUpper().unicode() : 0; - - const unsigned char *c = country_code_list; - for (; *c != 0; c += 3) { - if (uc1 == c[0] && uc2 == c[1] && uc3 == c[2]) { - return QLocale::Country((c - country_code_list) / 3); - } - } - - return QLocale::AnyCountry; -} - -// End Qt copied code - #endif // KHOLIDAYS_HOLIDAY_P_H diff --git a/src/holidayregion.h b/src/holidayregion.h --- a/src/holidayregion.h +++ b/src/holidayregion.h @@ -27,9 +27,9 @@ #include "kholidays_export.h" -#include -#include -#include +#include +#include +#include #include "holiday.h" @@ -40,6 +40,7 @@ namespace KHolidays { +/** Represents a holiday region. */ class KHOLIDAYS_EXPORT HolidayRegion { public: diff --git a/src/holidayregion.cpp b/src/holidayregion.cpp --- a/src/holidayregion.cpp +++ b/src/holidayregion.cpp @@ -6,6 +6,9 @@ Copyright (c) 2008 David Jarvie Copyright 2010 John Layt + The functions languageToCode(), codeToLanguage(), countryToCode() and codeToCounty() are + Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). + This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either @@ -24,22 +27,707 @@ #include "holidayregion.h" -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include "holiday_p.h" #include "parsers/plan2/holidayparserdriverplan_p.h" using namespace KHolidays; +// Copied from qlocale_data_p.h and qlocale.h +// Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +// To later be replaced by OpenCodes or public Qt api +static const unsigned char country_code_list[] = + "ZZ\0" // AnyCountry + "AF\0" // Afghanistan + "AL\0" // Albania + "DZ\0" // Algeria + "AS\0" // AmericanSamoa + "AD\0" // Andorra + "AO\0" // Angola + "AI\0" // Anguilla + "AQ\0" // Antarctica + "AG\0" // AntiguaAndBarbuda + "AR\0" // Argentina + "AM\0" // Armenia + "AW\0" // Aruba + "AU\0" // Australia + "AT\0" // Austria + "AZ\0" // Azerbaijan + "BS\0" // Bahamas + "BH\0" // Bahrain + "BD\0" // Bangladesh + "BB\0" // Barbados + "BY\0" // Belarus + "BE\0" // Belgium + "BZ\0" // Belize + "BJ\0" // Benin + "BM\0" // Bermuda + "BT\0" // Bhutan + "BO\0" // Bolivia + "BA\0" // BosniaAndHerzegowina + "BW\0" // Botswana + "BV\0" // BouvetIsland + "BR\0" // Brazil + "IO\0" // BritishIndianOceanTerritory + "BN\0" // Brunei + "BG\0" // Bulgaria + "BF\0" // BurkinaFaso + "BI\0" // Burundi + "KH\0" // Cambodia + "CM\0" // Cameroon + "CA\0" // Canada + "CV\0" // CapeVerde + "KY\0" // CaymanIslands + "CF\0" // CentralAfricanRepublic + "TD\0" // Chad + "CL\0" // Chile + "CN\0" // China + "CX\0" // ChristmasIsland + "CC\0" // CocosIslands + "CO\0" // Colombia + "KM\0" // Comoros + "CD\0" // CongoKinshasa + "CG\0" // CongoBrazzaville + "CK\0" // CookIslands + "CR\0" // CostaRica + "CI\0" // IvoryCoast + "HR\0" // Croatia + "CU\0" // Cuba + "CY\0" // Cyprus + "CZ\0" // CzechRepublic + "DK\0" // Denmark + "DJ\0" // Djibouti + "DM\0" // Dominica + "DO\0" // DominicanRepublic + "TL\0" // EastTimor + "EC\0" // Ecuador + "EG\0" // Egypt + "SV\0" // ElSalvador + "GQ\0" // EquatorialGuinea + "ER\0" // Eritrea + "EE\0" // Estonia + "ET\0" // Ethiopia + "FK\0" // FalklandIslands + "FO\0" // FaroeIslands + "FJ\0" // Fiji + "FI\0" // Finland + "FR\0" // France + "GG\0" // Guernsey + "GF\0" // FrenchGuiana + "PF\0" // FrenchPolynesia + "TF\0" // FrenchSouthernTerritories + "GA\0" // Gabon + "GM\0" // Gambia + "GE\0" // Georgia + "DE\0" // Germany + "GH\0" // Ghana + "GI\0" // Gibraltar + "GR\0" // Greece + "GL\0" // Greenland + "GD\0" // Grenada + "GP\0" // Guadeloupe + "GU\0" // Guam + "GT\0" // Guatemala + "GN\0" // Guinea + "GW\0" // GuineaBissau + "GY\0" // Guyana + "HT\0" // Haiti + "HM\0" // HeardAndMcDonaldIslands + "HN\0" // Honduras + "HK\0" // HongKong + "HU\0" // Hungary + "IS\0" // Iceland + "IN\0" // India + "ID\0" // Indonesia + "IR\0" // Iran + "IQ\0" // Iraq + "IE\0" // Ireland + "IL\0" // Israel + "IT\0" // Italy + "JM\0" // Jamaica + "JP\0" // Japan + "JO\0" // Jordan + "KZ\0" // Kazakhstan + "KE\0" // Kenya + "KI\0" // Kiribati + "KP\0" // NorthKorea + "KR\0" // SouthKorea + "KW\0" // Kuwait + "KG\0" // Kyrgyzstan + "LA\0" // Laos + "LV\0" // Latvia + "LB\0" // Lebanon + "LS\0" // Lesotho + "LR\0" // Liberia + "LY\0" // Libya + "LI\0" // Liechtenstein + "LT\0" // Lithuania + "LU\0" // Luxembourg + "MO\0" // Macau + "MK\0" // Macedonia + "MG\0" // Madagascar + "MW\0" // Malawi + "MY\0" // Malaysia + "MV\0" // Maldives + "ML\0" // Mali + "MT\0" // Malta + "MH\0" // MarshallIslands + "MQ\0" // Martinique + "MR\0" // Mauritania + "MU\0" // Mauritius + "YT\0" // Mayotte + "MX\0" // Mexico + "FM\0" // Micronesia + "MD\0" // Moldova + "MC\0" // Monaco + "MN\0" // Mongolia + "MS\0" // Montserrat + "MA\0" // Morocco + "MZ\0" // Mozambique + "MM\0" // Myanmar + "NA\0" // Namibia + "NR\0" // Nauru + "NP\0" // Nepal + "NL\0" // Netherlands + "CW\0" // CuraSao + "NC\0" // NewCaledonia + "NZ\0" // NewZealand + "NI\0" // Nicaragua + "NE\0" // Niger + "NG\0" // Nigeria + "NU\0" // Niue + "NF\0" // NorfolkIsland + "MP\0" // NorthernMarianaIslands + "NO\0" // Norway + "OM\0" // Oman + "PK\0" // Pakistan + "PW\0" // Palau + "PS\0" // PalestinianTerritories + "PA\0" // Panama + "PG\0" // PapuaNewGuinea + "PY\0" // Paraguay + "PE\0" // Peru + "PH\0" // Philippines + "PN\0" // Pitcairn + "PL\0" // Poland + "PT\0" // Portugal + "PR\0" // PuertoRico + "QA\0" // Qatar + "RE\0" // Reunion + "RO\0" // Romania + "RU\0" // Russia + "RW\0" // Rwanda + "KN\0" // SaintKittsAndNevis + "LC\0" // SaintLucia + "VC\0" // SaintVincentAndTheGrenadines + "WS\0" // Samoa + "SM\0" // SanMarino + "ST\0" // SaoTomeAndPrincipe + "SA\0" // SaudiArabia + "SN\0" // Senegal + "SC\0" // Seychelles + "SL\0" // SierraLeone + "SG\0" // Singapore + "SK\0" // Slovakia + "SI\0" // Slovenia + "SB\0" // SolomonIslands + "SO\0" // Somalia + "ZA\0" // SouthAfrica + "GS\0" // SouthGeorgiaAndTheSouthSandwichIslands + "ES\0" // Spain + "LK\0" // SriLanka + "SH\0" // SaintHelena + "PM\0" // SaintPierreAndMiquelon + "SD\0" // Sudan + "SR\0" // Suriname + "SJ\0" // SvalbardAndJanMayenIslands + "SZ\0" // Swaziland + "SE\0" // Sweden + "CH\0" // Switzerland + "SY\0" // Syria + "TW\0" // Taiwan + "TJ\0" // Tajikistan + "TZ\0" // Tanzania + "TH\0" // Thailand + "TG\0" // Togo + "TK\0" // Tokelau + "TO\0" // Tonga + "TT\0" // TrinidadAndTobago + "TN\0" // Tunisia + "TR\0" // Turkey + "TM\0" // Turkmenistan + "TC\0" // TurksAndCaicosIslands + "TV\0" // Tuvalu + "UG\0" // Uganda + "UA\0" // Ukraine + "AE\0" // UnitedArabEmirates + "GB\0" // UnitedKingdom + "US\0" // UnitedStates + "UM\0" // UnitedStatesMinorOutlyingIslands + "UY\0" // Uruguay + "UZ\0" // Uzbekistan + "VU\0" // Vanuatu + "VA\0" // VaticanCityState + "VE\0" // Venezuela + "VN\0" // Vietnam + "VG\0" // BritishVirginIslands + "VI\0" // UnitedStatesVirginIslands + "WF\0" // WallisAndFutunaIslands + "EH\0" // WesternSahara + "YE\0" // Yemen + "IC\0" // CanaryIslands + "ZM\0" // Zambia + "ZW\0" // Zimbabwe + "CP\0" // ClippertonIsland + "ME\0" // Montenegro + "RS\0" // Serbia + "BL\0" // Saint Barthelemy + "MF\0" // Saint Martin + "419" // LatinAmericaAndTheCaribbean + "AC\0" // AscensionIsland + "AX\0" // AlandIslands + "DG\0" // DiegoGarcia + "EA\0" // CeutaAndMelilla + "IM\0" // IsleOfMan + "JE\0" // Jersey + "TA\0" // TristanDaCunha + "SS\0" // SouthSudan + "BQ\0" // Bonaire + "SX\0" // SintMaarten + "XK\0" // Kosovo + ; + +static const unsigned char language_code_list[] = + " \0" // AnyLanguage + " \0" // C + "ab\0" // Abkhazian + "om\0" // Oromo + "aa\0" // Afar + "af\0" // Afrikaans + "sq\0" // Albanian + "am\0" // Amharic + "ar\0" // Arabic + "hy\0" // Armenian + "as\0" // Assamese + "ay\0" // Aymara + "az\0" // Azerbaijani + "ba\0" // Bashkir + "eu\0" // Basque + "bn\0" // Bengali + "dz\0" // Dzongkha + "bh\0" // Bihari + "bi\0" // Bislama + "br\0" // Breton + "bg\0" // Bulgarian + "my\0" // Burmese + "be\0" // Belarusian + "km\0" // Khmer + "ca\0" // Catalan + "zh\0" // Chinese + "co\0" // Corsican + "hr\0" // Croatian + "cs\0" // Czech + "da\0" // Danish + "nl\0" // Dutch + "en\0" // English + "eo\0" // Esperanto + "et\0" // Estonian + "fo\0" // Faroese + "fj\0" // Fijian + "fi\0" // Finnish + "fr\0" // French + "fy\0" // Western Frisian + "gd\0" // Gaelic + "gl\0" // Galician + "ka\0" // Georgian + "de\0" // German + "el\0" // Greek + "kl\0" // Greenlandic + "gn\0" // Guarani + "gu\0" // Gujarati + "ha\0" // Hausa + "he\0" // Hebrew + "hi\0" // Hindi + "hu\0" // Hungarian + "is\0" // Icelandic + "id\0" // Indonesian + "ia\0" // Interlingua + "ie\0" // Interlingue + "iu\0" // Inuktitut + "ik\0" // Inupiak + "ga\0" // Irish + "it\0" // Italian + "ja\0" // Japanese + "jv\0" // Javanese + "kn\0" // Kannada + "ks\0" // Kashmiri + "kk\0" // Kazakh + "rw\0" // Kinyarwanda + "ky\0" // Kirghiz + "ko\0" // Korean + "ku\0" // Kurdish + "rn\0" // Rundi + "lo\0" // Lao + "la\0" // Latin + "lv\0" // Latvian + "ln\0" // Lingala + "lt\0" // Lithuanian + "mk\0" // Macedonian + "mg\0" // Malagasy + "ms\0" // Malay + "ml\0" // Malayalam + "mt\0" // Maltese + "mi\0" // Maori + "mr\0" // Marathi + "mh\0" // Marshallese + "mn\0" // Mongolian + "na\0" // Nauru + "ne\0" // Nepali + "nb\0" // NorwegianBokmal + "oc\0" // Occitan + "or\0" // Oriya + "ps\0" // Pashto + "fa\0" // Persian + "pl\0" // Polish + "pt\0" // Portuguese + "pa\0" // Punjabi + "qu\0" // Quechua + "rm\0" // Romansh + "ro\0" // Romanian + "ru\0" // Russian + "sm\0" // Samoan + "sg\0" // Sango + "sa\0" // Sanskrit + "sr\0" // Serbian + "os\0" // Ossetic + "st\0" // Southern Sotho + "tn\0" // Tswana + "sn\0" // Shona + "sd\0" // Sindhi + "si\0" // Sinhala + "ss\0" // Swati + "sk\0" // Slovak + "sl\0" // Slovenian + "so\0" // Somali + "es\0" // Spanish + "su\0" // Sundanese + "sw\0" // Swahili + "sv\0" // Swedish + "sc\0" // Sardinian + "tg\0" // Tajik + "ta\0" // Tamil + "tt\0" // Tatar + "te\0" // Telugu + "th\0" // Thai + "bo\0" // Tibetan + "ti\0" // Tigrinya + "to\0" // Tongan + "ts\0" // Tsonga + "tr\0" // Turkish + "tk\0" // Turkmen + "ty\0" // Tahitian + "ug\0" // Uighur + "uk\0" // Ukrainian + "ur\0" // Urdu + "uz\0" // Uzbek + "vi\0" // Vietnamese + "vo\0" // Volapuk + "cy\0" // Welsh + "wo\0" // Wolof + "xh\0" // Xhosa + "yi\0" // Yiddish + "yo\0" // Yoruba + "za\0" // Zhuang + "zu\0" // Zulu + "nn\0" // NorwegianNynorsk + "bs\0" // Bosnian + "dv\0" // Divehi + "gv\0" // Manx + "kw\0" // Cornish + "ak\0" // Akan + "kok" // Konkani + "gaa" // Ga + "ig\0" // Igbo + "kam" // Kamba + "syr" // Syriac + "byn" // Blin + "gez" // Geez + "kfo" // Koro + "sid" // Sidamo + "cch" // Atsam + "tig" // Tigre + "kaj" // Jju + "fur" // Friulian + "ve\0" // Venda + "ee\0" // Ewe + "wal" // Walamo + "haw" // Hawaiian + "kcg" // Tyap + "ny\0" // Nyanja + "fil" // Filipino + "gsw" // Swiss German + "ii\0" // Sichuan Yi + "kpe" // Kpelle + "nds" // Low German + "nr\0" // South Ndebele + "nso" // Northern Sotho + "se\0" // Northern Sami + "trv" // Taroko + "guz" // Gusii + "dav" // Taita + "ff\0" // Fulah + "ki\0" // Kikuyu + "saq" // Samburu + "seh" // Sena + "nd\0" // North Ndebele + "rof" // Rombo + "shi" // Tachelhit + "kab" // Kabyle + "nyn" // Nyankole + "bez" // Bena + "vun" // Vunjo + "bm\0" // Bambara + "ebu" // Embu + "chr" // Cherokee + "mfe" // Morisyen + "kde" // Makonde + "lag" // Langi + "lg\0" // Ganda + "bem" // Bemba + "kea" // Kabuverdianu + "mer" // Meru + "kln" // Kalenjin + "naq" // Nama + "jmc" // Machame + "ksh" // Colognian + "mas" // Masai + "xog" // Soga + "luy" // Luyia + "asa" // Asu + "teo" // Teso + "ssy" // Saho + "khq" // Koyra Chiini + "rwk" // Rwa + "luo" // Luo + "cgg" // Chiga + "tzm" // Central Morocco Tamazight + "ses" // Koyraboro Senni + "ksb" // Shambala + "brx" // Bodo + "av\0" // Avaric + "ch\0" // Chamorro + "ce\0" // Chechen + "cu\0" // Church + "cv\0" // Chuvash + "cr\0" // Cree + "ht\0" // Haitian + "hz\0" // Herero + "ho\0" // Hiri Motu + "kr\0" // Kanuri + "kv\0" // Komi + "kg\0" // Kongo + "kj\0" // Kwanyama + "li\0" // Limburgish + "lu\0" // LubaKatanga + "lb\0" // Luxembourgish + "nv\0" // Navaho + "ng\0" // Ndonga + "oj\0" // Ojibwa + "pi\0" // Pali + "wa\0" // Walloon + "agq" // Aghem + "bas" // Basaa + "dje" // Zarma + "dua" // Duala + "dyo" // JolaFonyi + "ewo" // Ewondo + "ksf" // Bafia + "mgh" // MakhuwaMeetto + "mua" // Mundang + "nmg" // Kwasio + "nus" // Nuer + "sah" // Sakha + "sbp" // Sangu + "swc" // Congo Swahili + "twq" // Tasawaq + "vai" // Vai + "wae" // Walser + "yav" // Yangben + "ae\0" // Avestan + "ast" // Asturian + "jgo" // Ngomba + "kkj" // Kako + "mgo" // Meta + "nnh" // Ngiemboon + "an\0" // Aragonese + "akk" // Akkadian + "egy" // AncientEgyptian + "grc" // AncientGreek + "arc" // Aramaic + "ban" // Balinese + "bax" // Bamun + "bbc" // BatakToba + "bug" // Buginese + "bku" // Buhid + "xcr" // Carian + "ccp" // Chakma + "myz" // ClassicalMandaic + "cop" // Coptic + "doi" // Dogri + "cjm" // EasternCham + "eky" // EasternKayah + "ett" // Etruscan + "got" // Gothic + "hnn" // Hanunoo + "inh" // Ingush + "hmd" // LargeFloweryMiao + "lep" // Lepcha + "lif" // Limbu + "lis" // Lisu + "khb" // Lu + "xlc" // Lycian + "xld" // Lydian + "man" // Mandingo + "mni" // Manipuri + "xmr" // Meroitic + "nod" // NorthernThai + "sga" // OldIrish + "non" // OldNorse + "peo" // OldPersian + "otk" // OldTurkish + "pal" // Pahlavi + "xpr" // Parthian + "phn" // Phoenician + "pra" // PrakritLanguage + "rej" // Rejang + "xsa" // Sabaean + "smp" // Samaritan + "sat" // Santali + "saz" // Saurashtra + "srb" // Sora + "syl" // Sylheti + "tbw" // Tagbanwa + "blt" // TaiDam + "tdd" // TaiNua + "uga" // Ugaritic + "bss" // Akoose + "lkt" // Lakota + "zgh" // Standard Moroccan Tamazight + ; + +static QString languageToCode(QLocale::Language language) +{ + if (language == QLocale::AnyLanguage) { + return QString(); + } + if (language == QLocale::C) { + return QStringLiteral("C"); + } + + const unsigned char *c = language_code_list + 3 * (uint(language)); + + QString code(c[2] == 0 ? 2 : 3, Qt::Uninitialized); + + code[0] = ushort(c[0]); + code[1] = ushort(c[1]); + if (c[2] != 0) { + code[2] = ushort(c[2]); + } + + return code; +} + +static QString countryToCode(QLocale::Country country) +{ + if (country == QLocale::AnyCountry) { + return QString(); + } + + const unsigned char *c = country_code_list + 3 * (uint(country)); + + QString code(c[2] == 0 ? 2 : 3, Qt::Uninitialized); + + code[0] = ushort(c[0]); + code[1] = ushort(c[1]); + if (c[2] != 0) { + code[2] = ushort(c[2]); + } + + return code; +} + +static QLocale::Country codeToCountry(const QString &code) +{ + int len = code.length(); + if (len != 2 && len != 3) { + return QLocale::AnyCountry; + } + ushort uc1 = len-- > 0 ? code[0].toUpper().unicode() : 0; + ushort uc2 = len-- > 0 ? code[1].toUpper().unicode() : 0; + ushort uc3 = len-- > 0 ? code[2].toUpper().unicode() : 0; + + const unsigned char *c = country_code_list; + for (; *c != 0; c += 3) { + if (uc1 == c[0] && uc2 == c[1] && uc3 == c[2]) { + return QLocale::Country((c - country_code_list) / 3); + } + } + + return QLocale::AnyCountry; +} + +#if 0 +static QLocale::Language codeToLanguage(const QString &code) +{ + int len = code.length(); + if (len != 2 && len != 3) { + return QLocale::C; + } + ushort uc1 = len-- > 0 ? code[0].toLower().unicode() : 0; + ushort uc2 = len-- > 0 ? code[1].toLower().unicode() : 0; + ushort uc3 = len-- > 0 ? code[2].toLower().unicode() : 0; + + const unsigned char *c = language_code_list; + for (; *c != 0; c += 3) { + if (uc1 == c[0] && uc2 == c[1] && uc3 == c[2]) { + return QLocale::Language((c - language_code_list) / 3); + } + } + + // legacy codes + if (uc1 == 'n' && uc2 == 'o' && uc3 == 0) { // no -> nb + Q_STATIC_ASSERT(QLocale::Norwegian == QLocale::NorwegianBokmal); + return QLocale::Norwegian; + } + if (uc1 == 't' && uc2 == 'l' && uc3 == 0) { // tl -> fil + Q_STATIC_ASSERT(QLocale::Tagalog == QLocale::Filipino); + return QLocale::Tagalog; + } + if (uc1 == 's' && uc2 == 'h' && uc3 == 0) { // sh -> sr[_Latn] + Q_STATIC_ASSERT(QLocale::SerboCroatian == QLocale::Serbian); + return QLocale::SerboCroatian; + } + if (uc1 == 'm' && uc2 == 'o' && uc3 == 0) { // mo -> ro + Q_STATIC_ASSERT(QLocale::Moldavian == QLocale::Romanian); + return QLocale::Moldavian; + } + + return QLocale::C; +} +#endif +// End Qt copied code + static QStringList allHolidayFiles(const QString &location = QString()) { - const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, + QStringList dirs{ QStringLiteral(":/org.kde.kholidays/plan2") }; + dirs += QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("kf5/libkholidays/plan2"), QStandardPaths::LocateDirectory); QStringList files; @@ -55,19 +743,26 @@ class Q_DECL_HIDDEN HolidayRegion::HolidayRegionPrivate { public: - HolidayRegionPrivate(const QString ®ionCode) : mDriver(nullptr), + explicit HolidayRegionPrivate(const QString ®ionCode) : mDriver(nullptr), mRegionCode(regionCode) { if (!mRegionCode.isEmpty()) { - mHolidayFile.setFile( - QStandardPaths::locate(QStandardPaths::GenericDataLocation, - QLatin1String("kf5/libkholidays/plan2/holiday_") + mRegionCode)); + auto file = QStandardPaths::locate(QStandardPaths::GenericDataLocation, + QLatin1String("kf5/libkholidays/plan2/holiday_") + mRegionCode); + if (!file.isEmpty()) { + mHolidayFile.setFile(file); + } else { + file = QStringLiteral(":/org.kde.kholidays/plan2/holiday_") + mRegionCode; + if (QFile::exists(file)) { + mHolidayFile.setFile(file); + } + } } init(); } - HolidayRegionPrivate(const QFileInfo ®ionFile) : mDriver(nullptr), + explicit HolidayRegionPrivate(const QFileInfo ®ionFile) : mDriver(nullptr), mHolidayFile(regionFile) { init(); @@ -100,9 +795,9 @@ } } - HolidayParserDriver *mDriver; // The parser driver for the holiday file - QString mRegionCode; // region code of holiday region - QFileInfo mHolidayFile; // file containing holiday data, or null + HolidayParserDriver *mDriver; // The parser driver for the holiday file + QString mRegionCode; // region code of holiday region + QFileInfo mHolidayFile; // file containing holiday data, or null }; HolidayRegion::HolidayRegion(const QString ®ionCode) @@ -175,50 +870,55 @@ if (tempName.isEmpty()) { QStringList countryParts = countryCode().toLower().split(QLatin1Char('-')); - QString country = countryParts.at(0); + const QString &country = countryParts.at(0); QString regionName, typeName; if (country != QLatin1String("xx")) { if (countryParts.count() == 2) { // Temporary measure to get regions translated, only those files that already exist // In 4.6 hope to have isocodes project integration for translations via KLocale - QString subdivision = countryParts.at(1); + const QString &subdivision = countryParts.at(1); if (country == QLatin1String("ca") && subdivision == QLatin1String("qc")) { - regionName = QCoreApplication::translate("HolidayRegion", "Quebec", "Canadian region"); + regionName = QCoreApplication::translate("HolidayRegion", "Quebec", "Canadian region"); } else if (country == QLatin1String("de") && subdivision == QLatin1String("by")) { - regionName = QCoreApplication::translate("HolidayRegion", "Bavaria", "German region"); + regionName = QCoreApplication::translate("HolidayRegion", "Bavaria", "German region"); } else if (country == QLatin1String("es") && subdivision == QLatin1String("ct")) { - regionName = QCoreApplication::translate("HolidayRegion", "Catalonia", "Spanish region"); + regionName = QCoreApplication::translate("HolidayRegion", "Catalonia", "Spanish region"); } else if (country == QLatin1String("gb") && subdivision == QLatin1String("eaw")) { - regionName = QCoreApplication::translate("HolidayRegion", "England and Wales", "UK Region"); + regionName = QCoreApplication::translate("HolidayRegion", "England and Wales", "UK Region"); } else if (country == QLatin1String("gb") && subdivision == QLatin1String("eng")) { - regionName = QCoreApplication::translate("HolidayRegion", "England", "UK Region"); + regionName = QCoreApplication::translate("HolidayRegion", "England", "UK Region"); } else if (country == QLatin1String("gb") && subdivision == QLatin1String("wls")) { - regionName = QCoreApplication::translate("HolidayRegion", "Wales", "UK Region"); + regionName = QCoreApplication::translate("HolidayRegion", "Wales", "UK Region"); } else if (country == QLatin1String("gb") && subdivision == QLatin1String("sct")) { - regionName = QCoreApplication::translate("HolidayRegion", "Scotland", "UK Region"); + regionName = QCoreApplication::translate("HolidayRegion", "Scotland", "UK Region"); } else if (country == QLatin1String("gb") && subdivision == QLatin1String("nir")) { - regionName = QCoreApplication::translate("HolidayRegion", "Northern Ireland", "UK Region"); + regionName = QCoreApplication::translate("HolidayRegion", "Northern Ireland", "UK Region"); } else if (country == QLatin1String("it") && subdivision == QLatin1String("bz")) { - regionName = QCoreApplication::translate("HolidayRegion", "South Tyrol", "Italian Region"); + regionName = QCoreApplication::translate("HolidayRegion", "South Tyrol", "Italian Region"); } else if (country == QLatin1String("au") && subdivision == QLatin1String("nsw")) { regionName = QCoreApplication::translate("HolidayRegion", "New South Wales"); } else if (country == QLatin1String("au") && subdivision == QLatin1String("qld")) { - regionName = QCoreApplication::translate("HolidayRegion", "Queensland", "Australian Region"); + regionName = QCoreApplication::translate("HolidayRegion", "Queensland", "Australian Region"); } else if (country == QLatin1String("au") && subdivision == QLatin1String("vic")) { - regionName = QCoreApplication::translate("HolidayRegion", "Victoria", "Australian Region"); + regionName = QCoreApplication::translate("HolidayRegion", "Victoria", "Australian Region"); } else if (country == QLatin1String("au") && subdivision == QLatin1String("sa")) { - regionName = QCoreApplication::translate("HolidayRegion", "South Australia", "Australian Region"); + regionName = QCoreApplication::translate("HolidayRegion", "South Australia", "Australian Region"); } else if (country == QLatin1String("au") && subdivision == QLatin1String("nt")) { - regionName = QCoreApplication::translate("HolidayRegion", "Northern Territory", "Australian Region"); + regionName = QCoreApplication::translate("HolidayRegion", + "Northern Territory", "Australian Region"); } else if (country == QLatin1String("au") && subdivision == QLatin1String("act")) { - regionName = QCoreApplication::translate("HolidayRegion", "Australian Capital Territory", "Australian Region"); + regionName = QCoreApplication::translate("HolidayRegion", + "Australian Capital Territory", "Australian Region"); } else if (country == QLatin1String("au") && subdivision == QLatin1String("wa")) { - regionName = QCoreApplication::translate("HolidayRegion", "Western Australia", "Australian Region"); + regionName = QCoreApplication::translate("HolidayRegion", + "Western Australia", "Australian Region"); } else if (country == QLatin1String("au") && subdivision == QLatin1String("tas")) { - regionName = QCoreApplication::translate("HolidayRegion", "Tasmania", "Australian Region"); + regionName = QCoreApplication::translate("HolidayRegion", + "Tasmania", "Australian Region"); } else if (country == QLatin1String("ba") && subdivision == QLatin1String("srp")) { - regionName = QCoreApplication::translate("HolidayRegion", "Republic of Srpska", "Bosnian and Herzegovinian Region"); + regionName = QCoreApplication::translate("HolidayRegion", + "Republic of Srpska", "Bosnian and Herzegovinian Region"); } else { // TODO Note this does not give the current QLocale translation! regionName = QLocale::countryToString(codeToCountry(country)); @@ -232,72 +932,76 @@ //Cheat on type for now,take direct from region code until API is introduced in SC 4.6 QStringList regionParts = regionCode().toLower().split(QLatin1Char('_')); if (regionParts.count() == 3) { - QString type = regionParts.at(2); + const QString &type = regionParts.at(2); // Will create lots more in 4.6 // Religious types, just simple for now if (type == QLatin1String("public")) { - typeName = QCoreApplication::translate("HolidayRegion", "Public", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Public", "Holiday type"); } else if (type == QLatin1String("civil")) { - typeName = QCoreApplication::translate("HolidayRegion", "Civil", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Civil", "Holiday type"); } else if (type == QLatin1String("religious")) { - typeName = QCoreApplication::translate("HolidayRegion", "Religious", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Religious", "Holiday type"); } else if (type == QLatin1String("government")) { - typeName = QCoreApplication::translate("HolidayRegion", "Government", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Government", "Holiday type"); } else if (type == QLatin1String("financial")) { - typeName = QCoreApplication::translate("HolidayRegion", "Financial", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Financial", "Holiday type"); } else if (type == QLatin1String("cultural")) { - typeName = QCoreApplication::translate("HolidayRegion", "Cultural", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Cultural", "Holiday type"); } else if (type == QLatin1String("commemorative")) { - typeName = QCoreApplication::translate("HolidayRegion", "Commemorative", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Commemorative", "Holiday type"); } else if (type == QLatin1String("historical")) { - typeName = QCoreApplication::translate("HolidayRegion", "Historical", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Historical", "Holiday type"); } else if (type == QLatin1String("school")) { - typeName = QCoreApplication::translate("HolidayRegion", "School", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "School", "Holiday type"); } else if (type == QLatin1String("seasonal")) { - typeName = QCoreApplication::translate("HolidayRegion", "Seasonal", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Seasonal", "Holiday type"); } else if (type == QLatin1String("nameday")) { - typeName = QCoreApplication::translate("HolidayRegion", "Name Days", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Name Days", "Holiday type"); } else if (type == QLatin1String("personal")) { - typeName = QCoreApplication::translate("HolidayRegion", "Personal", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Personal", "Holiday type"); } else if (type == QLatin1String("christian")) { - typeName = QCoreApplication::translate("HolidayRegion", "Christian", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Christian", "Holiday type"); } else if (type == QLatin1String("anglican")) { - typeName = QCoreApplication::translate("HolidayRegion", "Anglican", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Anglican", "Holiday type"); } else if (type == QLatin1String("catholic")) { - typeName = QCoreApplication::translate("HolidayRegion", "Catholic", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Catholic", "Holiday type"); } else if (type == QLatin1String("protestant")) { - typeName = QCoreApplication::translate("HolidayRegion", "Protestant", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Protestant", "Holiday type"); } else if (type == QLatin1String("orthodox")) { - typeName = QCoreApplication::translate("HolidayRegion", "Orthodox", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Orthodox", "Holiday type"); } else if (type == QLatin1String("jewish")) { - typeName = QCoreApplication::translate("HolidayRegion", "Jewish", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Jewish", "Holiday type"); } else if (type == QLatin1String("jewish-orthodox")) { - typeName = QCoreApplication::translate("HolidayRegion", "Jewish Orthodox", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Jewish Orthodox", "Holiday type"); } else if (type == QLatin1String("jewish-conservative")) { - typeName = QCoreApplication::translate("HolidayRegion", "Jewish Conservative", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Jewish Conservative", "Holiday type"); } else if (type == QLatin1String("jewish-reform")) { - typeName = QCoreApplication::translate("HolidayRegion", "Jewish Reform", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Jewish Reform", "Holiday type"); } else if (type == QLatin1String("islamic")) { - typeName = QCoreApplication::translate("HolidayRegion", "Islamic", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Islamic", "Holiday type"); } else if (type == QLatin1String("islamic-sunni")) { - typeName = QCoreApplication::translate("HolidayRegion", "Islamic Sunni", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Islamic Sunni", "Holiday type"); } else if (type == QLatin1String("islamic-shia")) { - typeName = QCoreApplication::translate("HolidayRegion", "Islamic Shia", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Islamic Shia", "Holiday type"); } else if (type == QLatin1String("islamic-sufi")) { - typeName = QCoreApplication::translate("HolidayRegion", "Islamic Sufi", "Holiday type"); + typeName = QCoreApplication::translate("HolidayRegion", "Islamic Sufi", "Holiday type"); } } if (!regionName.isEmpty()) { if (!typeName.isEmpty()) { - tempName = QCoreApplication::translate("HolidayRegion", "%1 - %2", "Holiday file display name, %1 = region name, %2 = holiday type").arg(regionName, typeName); + tempName = + QCoreApplication::translate( + "HolidayRegion", + "%1 - %2", + "Holiday file display name, %1 = region name, %2 = holiday type").arg(regionName, typeName); } else { tempName = regionName; } } else if (!typeName.isEmpty()) { tempName = typeName; } else { - tempName = QCoreApplication::translate("HolidayRegion", "Unknown", "Unknown holiday region"); + tempName = QCoreApplication::translate("HolidayRegion", "Unknown", "Unknown holiday region"); } } return tempName; @@ -408,7 +1112,6 @@ localeLanguageCountry = localeLanguage.split(QLatin1Char('_')).at(1); } - QString countryAndLanguageMatch, countryOnlyMatch, subdivisionAndLanguageMatch, subdivisionOnlyMatch, languageCountryAndLanguageMatch, languageCountryOnlyMatch, languageSubdivisionAndLanguageMatch, languageSubdivisionOnlyMatch; diff --git a/src/lunarphase.cpp b/src/lunarphase.cpp --- a/src/lunarphase.cpp +++ b/src/lunarphase.cpp @@ -25,8 +25,8 @@ #include "lunarphase.h" #include -#include -#include +#include +#include using namespace KHolidays; @@ -50,10 +50,10 @@ return (QCoreApplication::translate("LunarPhase", "First Quarter Moon")); case LastQuarter: return (QCoreApplication::translate("LunarPhase", "Last Quarter Moon")); - default: case None: return QString(); } + return QString(); } LunarPhase::Phase LunarPhase::phaseAtDate(const QDate &date) @@ -140,14 +140,14 @@ * */ -#include +#include #ifdef HAVE_ERR_H #include #endif -#include -#include -#include -#include +#include +#include +#include +#include static const double PI = 3.14159265358979323846; diff --git a/src/parsers/holidayparserdriver.cpp b/src/parsers/holidayparserdriver.cpp --- a/src/parsers/holidayparserdriver.cpp +++ b/src/parsers/holidayparserdriver.cpp @@ -20,12 +20,15 @@ */ #include "holidayparserdriver_p.h" +#include "holiday_p.h" +#include "astroseasons.h" #include using namespace KHolidays; HolidayParserDriver::HolidayParserDriver(const QString &filePath) + : m_parseYear(0), m_parseStartYear(0), m_parseEndYear(0) { m_filePath = filePath; } @@ -63,6 +66,21 @@ m_requestStart = startDate; m_requestEnd = endDate; parse(); + + QDate dt; + for (dt = startDate; dt <= endDate; dt = dt.addDays(1)) { + const QString seasonName = AstroSeasons::seasonNameAtDate(dt); + if (!seasonName.isEmpty()) { + Holiday season; + season.d->mDayType = Holiday::Workday; + season.d->mObservedDate = dt; + season.d->mDuration = 1; + season.d->mName = seasonName; + season.d->mCategoryList.append(QLatin1String("seasonal")); + m_resultList.append(season); + } + } + std::sort(m_resultList.begin(), m_resultList.end()); return m_resultList; } diff --git a/src/parsers/plan2/FlexLexer.h b/src/parsers/plan2/FlexLexer.h --- a/src/parsers/plan2/FlexLexer.h +++ b/src/parsers/plan2/FlexLexer.h @@ -118,18 +118,18 @@ // only make that assignment when initializing in yylex(). yyFlexLexer(FLEX_STD istream *arg_yyin = 0, FLEX_STD ostream *arg_yyout = 0); - virtual ~yyFlexLexer(); + ~yyFlexLexer() override; - void yy_switch_to_buffer(struct yy_buffer_state * new_buffer); - struct yy_buffer_state * yy_create_buffer(FLEX_STD istream * s, int size); - void yy_delete_buffer(struct yy_buffer_state * b); - void yyrestart(FLEX_STD istream * s); + void yy_switch_to_buffer(struct yy_buffer_state * new_buffer) override; + struct yy_buffer_state * yy_create_buffer(FLEX_STD istream * s, int size) override; + void yy_delete_buffer(struct yy_buffer_state * b) override; + void yyrestart(FLEX_STD istream * s) override; void yypush_buffer_state(struct yy_buffer_state * new_buffer); void yypop_buffer_state(); - virtual int yylex(); - virtual void switch_streams(FLEX_STD istream * new_in, FLEX_STD ostream *new_out = 0); + virtual int yylex() override; + virtual void switch_streams(FLEX_STD istream * new_in, FLEX_STD ostream *new_out = 0) override; virtual int yywrap(); protected: @@ -205,4 +205,3 @@ } #endif // yyFlexLexer || ! yyFlexLexerOnce - diff --git a/src/parsers/plan2/holidayparserdriverplan.cpp b/src/parsers/plan2/holidayparserdriverplan.cpp --- a/src/parsers/plan2/holidayparserdriverplan.cpp +++ b/src/parsers/plan2/holidayparserdriverplan.cpp @@ -43,17 +43,20 @@ #include "holiday_p.h" #define LAST 99999 -#define ANY -99999 -#define BEFORE -1 +#define ANY (-99999) +#define BEFORE (-1) #define AFTER 1 using namespace KHolidays; HolidayParserDriverPlan::HolidayParserDriverPlan(const QString &planFilePath) : HolidayParserDriver(planFilePath), m_traceParsing(false), m_traceScanning(false), - m_parseMetadataOnly(false) + m_parseMetadataOnly(false), + m_eventYear(0), + m_eventMonth(0), + m_eventDay(0) { QFile holidayFile(filePath()); if (holidayFile.open(QIODevice::ReadOnly)) { @@ -343,7 +346,7 @@ } // Return jd of Easter if Gregorian -int HolidayParserDriverPlan::julianDayFromEaster(void) +int HolidayParserDriverPlan::julianDayFromEaster() { if (m_eventCalendarType == QLatin1String("gregorian")) { return m_parseYearEaster.toJulianDay(); @@ -354,7 +357,7 @@ } // Return jd of Orthodox Easter if Gregorian or Julian -int HolidayParserDriverPlan::julianDayFromPascha(void) +int HolidayParserDriverPlan::julianDayFromPascha() { if (m_eventCalendarType == QLatin1String("gregorian") || m_eventCalendarType == QLatin1String("julian")) { return m_parseYearPascha.toJulianDay(); @@ -723,7 +726,7 @@ addHoliday(QDate::fromJulianDay(observeJd), duration); } -void HolidayParserDriverPlan::addHoliday(const QDate &observedDate, int duration) +void HolidayParserDriverPlan::addHoliday(const QDate &observedDate, int duration) { // Only set if event falls in requested date range, i.e. either starts or ends during range if (m_parseCalendar.isValid(observedDate) && @@ -734,6 +737,7 @@ holiday.d->mDuration = duration; holiday.d->mName = m_eventName; holiday.d->mDescription = m_eventName; + holiday.d->mCategoryList = m_eventCategories; if (m_eventCategories.contains(QStringLiteral("public"))) { holiday.d->mDayType = KHolidays::Holiday::NonWorkday; } else { diff --git a/src/parsers/plan2/holidayparserdriverplan_p.h b/src/parsers/plan2/holidayparserdriverplan_p.h --- a/src/parsers/plan2/holidayparserdriverplan_p.h +++ b/src/parsers/plan2/holidayparserdriverplan_p.h @@ -65,7 +65,7 @@ /** * Destructor. */ - ~HolidayParserDriverPlan(); + ~HolidayParserDriverPlan() override; /** * Bison C++ skeleton error message handling @@ -79,25 +79,25 @@ * * @param errorMessage error message to log */ - void error(const QString &errorMessage) Q_DECL_OVERRIDE; + void error(const QString &errorMessage) override; protected: /** * Actually parse the file, new plan format implementation */ - void parse() Q_DECL_OVERRIDE; + void parse() override; /** * Parse the file for metadata only and populate the metadata variables */ - void parseMetadata() Q_DECL_OVERRIDE; + void parseMetadata() override; /** * Set the calendar system to use * * @param calendar The QCalendarSystem calendar system to use */ - void setParseCalendar(QCalendarSystem::CalendarSystem calendar) Q_DECL_OVERRIDE; + void setParseCalendar(QCalendarSystem::CalendarSystem calendar) override; // Bison C++ skeleton required friend for Bison parser class implementation friend class HolidayParserPlan; @@ -175,7 +175,7 @@ int m_eventMonth; // Event date fields int m_eventDay; // Event date fields - std::string *m_fileToParse; + std::string *m_fileToParse = nullptr; }; } diff --git a/src/parsers/plan2/holidayscannerplan.cpp b/src/parsers/plan2/holidayscannerplan.cpp --- a/src/parsers/plan2/holidayscannerplan.cpp +++ b/src/parsers/plan2/holidayscannerplan.cpp @@ -1638,54 +1638,54 @@ case 1: /* rule 1 can match eol */ YY_RULE_SETUP -#line 89 "holidayscannerplan.lpp" +#line 89 "holidayscannerplan.lpp" { yylloc->lines(yyleng); yylloc->step(); } YY_BREAK case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 90 "holidayscannerplan.lpp" +#line 90 "holidayscannerplan.lpp" { yylloc->lines(yyleng); yylloc->step(); } YY_BREAK case 3: YY_RULE_SETUP -#line 91 "holidayscannerplan.lpp" +#line 91 "holidayscannerplan.lpp" { yylloc->step(); } YY_BREAK case 4: /* rule 4 can match eol */ YY_RULE_SETUP -#line 92 "holidayscannerplan.lpp" +#line 92 "holidayscannerplan.lpp" { yylloc->lines(yyleng); yylloc->step(); } YY_BREAK case 5: YY_RULE_SETUP -#line 93 "holidayscannerplan.lpp" +#line 93 "holidayscannerplan.lpp" { return KHolidays::HolidayParserPlan::token_type(*yytext); } YY_BREAK case 6: YY_RULE_SETUP -#line 95 "holidayscannerplan.lpp" +#line 95 "holidayscannerplan.lpp" { return token::COUNTRY; } YY_BREAK case 7: YY_RULE_SETUP -#line 96 "holidayscannerplan.lpp" +#line 96 "holidayscannerplan.lpp" { return token::LANGUAGE; } YY_BREAK case 8: YY_RULE_SETUP -#line 97 "holidayscannerplan.lpp" +#line 97 "holidayscannerplan.lpp" { return token::NAME; } YY_BREAK case 9: YY_RULE_SETUP -#line 98 "holidayscannerplan.lpp" +#line 98 "holidayscannerplan.lpp" { return token::DESCRIPTION; } YY_BREAK case 10: YY_RULE_SETUP -#line 100 "holidayscannerplan.lpp" +#line 100 "holidayscannerplan.lpp" { yylval->ival = atoi(yytext); return token::NUMBER; } YY_BREAK case 11: @@ -1725,927 +1725,927 @@ YY_BREAK case 17: YY_RULE_SETUP -#line 111 "holidayscannerplan.lpp" +#line 111 "holidayscannerplan.lpp" { return token::INOP; } YY_BREAK case 18: YY_RULE_SETUP -#line 112 "holidayscannerplan.lpp" +#line 112 "holidayscannerplan.lpp" { return token::IF; } YY_BREAK case 19: YY_RULE_SETUP -#line 113 "holidayscannerplan.lpp" +#line 113 "holidayscannerplan.lpp" { return token::PLUS; } YY_BREAK case 20: YY_RULE_SETUP -#line 114 "holidayscannerplan.lpp" +#line 114 "holidayscannerplan.lpp" { return token::MINUS; } YY_BREAK case 21: YY_RULE_SETUP -#line 115 "holidayscannerplan.lpp" +#line 115 "holidayscannerplan.lpp" { return token::YEAR; } YY_BREAK case 22: YY_RULE_SETUP -#line 116 "holidayscannerplan.lpp" +#line 116 "holidayscannerplan.lpp" { return token::LEAPYEAR; } YY_BREAK case 23: YY_RULE_SETUP -#line 117 "holidayscannerplan.lpp" +#line 117 "holidayscannerplan.lpp" { return token::EASTER; } YY_BREAK case 24: YY_RULE_SETUP -#line 118 "holidayscannerplan.lpp" +#line 118 "holidayscannerplan.lpp" { return token::PASCHA; } YY_BREAK case 25: YY_RULE_SETUP -#line 119 "holidayscannerplan.lpp" +#line 119 "holidayscannerplan.lpp" { return token::LENGTH; } YY_BREAK case 26: YY_RULE_SETUP -#line 120 "holidayscannerplan.lpp" +#line 120 "holidayscannerplan.lpp" { return token::SHIFT; } YY_BREAK case 27: YY_RULE_SETUP -#line 122 "holidayscannerplan.lpp" +#line 122 "holidayscannerplan.lpp" { return token::EQ; } YY_BREAK case 28: YY_RULE_SETUP -#line 123 "holidayscannerplan.lpp" +#line 123 "holidayscannerplan.lpp" { return token::NE; } YY_BREAK case 29: YY_RULE_SETUP -#line 124 "holidayscannerplan.lpp" +#line 124 "holidayscannerplan.lpp" { return token::LE; } YY_BREAK case 30: YY_RULE_SETUP -#line 125 "holidayscannerplan.lpp" +#line 125 "holidayscannerplan.lpp" { return token::GE; } YY_BREAK case 31: YY_RULE_SETUP -#line 126 "holidayscannerplan.lpp" +#line 126 "holidayscannerplan.lpp" { return token::LT; } YY_BREAK case 32: YY_RULE_SETUP -#line 127 "holidayscannerplan.lpp" +#line 127 "holidayscannerplan.lpp" { return token::GT; } YY_BREAK case 33: YY_RULE_SETUP -#line 128 "holidayscannerplan.lpp" +#line 128 "holidayscannerplan.lpp" { return token::AND;} YY_BREAK case 34: YY_RULE_SETUP -#line 129 "holidayscannerplan.lpp" +#line 129 "holidayscannerplan.lpp" { return token::OR; } YY_BREAK case 35: YY_RULE_SETUP -#line 131 "holidayscannerplan.lpp" +#line 131 "holidayscannerplan.lpp" { yylval->ival = 1; return token::NUMBER; } YY_BREAK case 36: YY_RULE_SETUP -#line 132 "holidayscannerplan.lpp" +#line 132 "holidayscannerplan.lpp" { yylval->ival = 2; return token::NUMBER; } YY_BREAK case 37: YY_RULE_SETUP -#line 133 "holidayscannerplan.lpp" +#line 133 "holidayscannerplan.lpp" { yylval->ival = 3; return token::NUMBER; } YY_BREAK case 38: YY_RULE_SETUP -#line 134 "holidayscannerplan.lpp" +#line 134 "holidayscannerplan.lpp" { yylval->ival = 4; return token::NUMBER; } YY_BREAK case 39: YY_RULE_SETUP -#line 135 "holidayscannerplan.lpp" +#line 135 "holidayscannerplan.lpp" { yylval->ival = 5; return token::NUMBER; } YY_BREAK case 40: YY_RULE_SETUP -#line 136 "holidayscannerplan.lpp" +#line 136 "holidayscannerplan.lpp" { yylval->ival = 99999; return token::NUMBER; } YY_BREAK case 41: YY_RULE_SETUP -#line 137 "holidayscannerplan.lpp" +#line 137 "holidayscannerplan.lpp" { yylval->ival = -99999; return token::NUMBER; } YY_BREAK case 42: YY_RULE_SETUP -#line 138 "holidayscannerplan.lpp" +#line 138 "holidayscannerplan.lpp" { yylval->ival = 0; return token::NUMBER; } YY_BREAK case 43: YY_RULE_SETUP -#line 140 "holidayscannerplan.lpp" +#line 140 "holidayscannerplan.lpp" { yylval->ival = -1; return token::NUMBER; } YY_BREAK case 44: YY_RULE_SETUP -#line 141 "holidayscannerplan.lpp" +#line 141 "holidayscannerplan.lpp" { yylval->ival = 1; return token::NUMBER; } YY_BREAK case 45: YY_RULE_SETUP -#line 143 "holidayscannerplan.lpp" - { yylval->sval = "public"; return token::CATEGORY; } +#line 143 "holidayscannerplan.lpp" + { yylval->sval = (char *)"public"; return token::CATEGORY; } YY_BREAK case 46: YY_RULE_SETUP -#line 144 "holidayscannerplan.lpp" - { yylval->sval = "civil"; return token::CATEGORY; } +#line 144 "holidayscannerplan.lpp" + { yylval->sval = (char *)"civil"; return token::CATEGORY; } YY_BREAK case 47: YY_RULE_SETUP -#line 145 "holidayscannerplan.lpp" - { yylval->sval = "religious"; return token::CATEGORY; } +#line 145 "holidayscannerplan.lpp" + { yylval->sval = (char *)"religious"; return token::CATEGORY; } YY_BREAK case 48: YY_RULE_SETUP -#line 146 "holidayscannerplan.lpp" - { yylval->sval = "school"; return token::CATEGORY; } +#line 146 "holidayscannerplan.lpp" + { yylval->sval = (char *)"school"; return token::CATEGORY; } YY_BREAK case 49: YY_RULE_SETUP -#line 147 "holidayscannerplan.lpp" - { yylval->sval = "government"; return token::CATEGORY; } +#line 147 "holidayscannerplan.lpp" + { yylval->sval = (char *)"government"; return token::CATEGORY; } YY_BREAK case 50: YY_RULE_SETUP -#line 148 "holidayscannerplan.lpp" - { yylval->sval = "financial"; return token::CATEGORY; } +#line 148 "holidayscannerplan.lpp" + { yylval->sval = (char *)"financial"; return token::CATEGORY; } YY_BREAK case 51: YY_RULE_SETUP -#line 149 "holidayscannerplan.lpp" - { yylval->sval = "cultural"; return token::CATEGORY; } +#line 149 "holidayscannerplan.lpp" + { yylval->sval = (char *)"cultural"; return token::CATEGORY; } YY_BREAK case 52: YY_RULE_SETUP -#line 150 "holidayscannerplan.lpp" - { yylval->sval = "commemorative"; return token::CATEGORY; } +#line 150 "holidayscannerplan.lpp" + { yylval->sval = (char *)"commemorative"; return token::CATEGORY; } YY_BREAK case 53: YY_RULE_SETUP -#line 151 "holidayscannerplan.lpp" - { yylval->sval = "historical"; return token::CATEGORY; } +#line 151 "holidayscannerplan.lpp" + { yylval->sval = (char *)"historical"; return token::CATEGORY; } YY_BREAK case 54: YY_RULE_SETUP -#line 152 "holidayscannerplan.lpp" - { yylval->sval = "nameday"; return token::CATEGORY; } +#line 152 "holidayscannerplan.lpp" + { yylval->sval = (char *)"nameday"; return token::CATEGORY; } YY_BREAK case 55: YY_RULE_SETUP -#line 153 "holidayscannerplan.lpp" - { yylval->sval = "seasonal"; return token::CATEGORY; } +#line 153 "holidayscannerplan.lpp" + { yylval->sval = (char *)"seasonal"; return token::CATEGORY; } YY_BREAK case 56: YY_RULE_SETUP -#line 155 "holidayscannerplan.lpp" - { yylval->sval = "gregorian"; return token::CALENDAR; } +#line 155 "holidayscannerplan.lpp" + { yylval->sval = (char *)"gregorian"; return token::CALENDAR; } YY_BREAK case 57: YY_RULE_SETUP -#line 156 "holidayscannerplan.lpp" - { yylval->sval = "julian"; return token::CALENDAR; } +#line 156 "holidayscannerplan.lpp" + { yylval->sval = (char *)"julian"; return token::CALENDAR; } YY_BREAK case 58: YY_RULE_SETUP -#line 158 "holidayscannerplan.lpp" +#line 158 "holidayscannerplan.lpp" { yylval->ival = 1; return token::MONTH; } YY_BREAK case 59: YY_RULE_SETUP -#line 159 "holidayscannerplan.lpp" +#line 159 "holidayscannerplan.lpp" { yylval->ival = 2; return token::MONTH; } YY_BREAK case 60: YY_RULE_SETUP -#line 160 "holidayscannerplan.lpp" +#line 160 "holidayscannerplan.lpp" { yylval->ival = 3; return token::MONTH; } YY_BREAK case 61: YY_RULE_SETUP -#line 161 "holidayscannerplan.lpp" +#line 161 "holidayscannerplan.lpp" { yylval->ival = 4; return token::MONTH; } YY_BREAK case 62: YY_RULE_SETUP -#line 162 "holidayscannerplan.lpp" +#line 162 "holidayscannerplan.lpp" { yylval->ival = 5; return token::MONTH; } YY_BREAK case 63: YY_RULE_SETUP -#line 163 "holidayscannerplan.lpp" +#line 163 "holidayscannerplan.lpp" { yylval->ival = 6; return token::MONTH; } YY_BREAK case 64: YY_RULE_SETUP -#line 164 "holidayscannerplan.lpp" +#line 164 "holidayscannerplan.lpp" { yylval->ival = 7; return token::MONTH; } YY_BREAK case 65: YY_RULE_SETUP -#line 165 "holidayscannerplan.lpp" +#line 165 "holidayscannerplan.lpp" { yylval->ival = 8; return token::MONTH; } YY_BREAK case 66: YY_RULE_SETUP -#line 166 "holidayscannerplan.lpp" +#line 166 "holidayscannerplan.lpp" { yylval->ival = 9; return token::MONTH; } YY_BREAK case 67: YY_RULE_SETUP -#line 167 "holidayscannerplan.lpp" +#line 167 "holidayscannerplan.lpp" { yylval->ival = 10; return token::MONTH; } YY_BREAK case 68: YY_RULE_SETUP -#line 168 "holidayscannerplan.lpp" +#line 168 "holidayscannerplan.lpp" { yylval->ival = 11; return token::MONTH; } YY_BREAK case 69: YY_RULE_SETUP -#line 169 "holidayscannerplan.lpp" +#line 169 "holidayscannerplan.lpp" { yylval->ival = 12; return token::MONTH; } YY_BREAK case 70: YY_RULE_SETUP -#line 171 "holidayscannerplan.lpp" +#line 171 "holidayscannerplan.lpp" { yylval->ival = 1; return token::WDAY; } YY_BREAK case 71: YY_RULE_SETUP -#line 172 "holidayscannerplan.lpp" +#line 172 "holidayscannerplan.lpp" { yylval->ival = 2; return token::WDAY; } YY_BREAK case 72: YY_RULE_SETUP -#line 173 "holidayscannerplan.lpp" +#line 173 "holidayscannerplan.lpp" { yylval->ival = 3; return token::WDAY; } YY_BREAK case 73: YY_RULE_SETUP -#line 174 "holidayscannerplan.lpp" +#line 174 "holidayscannerplan.lpp" { yylval->ival = 4; return token::WDAY; } YY_BREAK case 74: YY_RULE_SETUP -#line 175 "holidayscannerplan.lpp" +#line 175 "holidayscannerplan.lpp" { yylval->ival = 5; return token::WDAY; } YY_BREAK case 75: YY_RULE_SETUP -#line 176 "holidayscannerplan.lpp" +#line 176 "holidayscannerplan.lpp" { yylval->ival = 6; return token::WDAY; } YY_BREAK case 76: YY_RULE_SETUP -#line 177 "holidayscannerplan.lpp" +#line 177 "holidayscannerplan.lpp" { yylval->ival = 7; return token::WDAY; } YY_BREAK case 77: YY_RULE_SETUP -#line 179 "holidayscannerplan.lpp" - { yylval->sval = "coptic"; return token::CALENDAR; } +#line 179 "holidayscannerplan.lpp" + { yylval->sval = (char *)"coptic"; return token::CALENDAR; } YY_BREAK case 78: YY_RULE_SETUP -#line 181 "holidayscannerplan.lpp" +#line 181 "holidayscannerplan.lpp" { yylval->ival = 1; return token::MONTH; } YY_BREAK case 79: YY_RULE_SETUP -#line 182 "holidayscannerplan.lpp" +#line 182 "holidayscannerplan.lpp" { yylval->ival = 2; return token::MONTH; } YY_BREAK case 80: YY_RULE_SETUP -#line 183 "holidayscannerplan.lpp" +#line 183 "holidayscannerplan.lpp" { yylval->ival = 3; return token::MONTH; } YY_BREAK case 81: YY_RULE_SETUP -#line 184 "holidayscannerplan.lpp" +#line 184 "holidayscannerplan.lpp" { yylval->ival = 4; return token::MONTH; } YY_BREAK case 82: YY_RULE_SETUP -#line 185 "holidayscannerplan.lpp" +#line 185 "holidayscannerplan.lpp" { yylval->ival = 5; return token::MONTH; } YY_BREAK case 83: YY_RULE_SETUP -#line 186 "holidayscannerplan.lpp" +#line 186 "holidayscannerplan.lpp" { yylval->ival = 6; return token::MONTH; } YY_BREAK case 84: YY_RULE_SETUP -#line 187 "holidayscannerplan.lpp" +#line 187 "holidayscannerplan.lpp" { yylval->ival = 7; return token::MONTH; } YY_BREAK case 85: YY_RULE_SETUP -#line 188 "holidayscannerplan.lpp" +#line 188 "holidayscannerplan.lpp" { yylval->ival = 8; return token::MONTH; } YY_BREAK case 86: YY_RULE_SETUP -#line 189 "holidayscannerplan.lpp" +#line 189 "holidayscannerplan.lpp" { yylval->ival = 9; return token::MONTH; } YY_BREAK case 87: YY_RULE_SETUP -#line 190 "holidayscannerplan.lpp" +#line 190 "holidayscannerplan.lpp" { yylval->ival = 10; return token::MONTH; } YY_BREAK case 88: YY_RULE_SETUP -#line 191 "holidayscannerplan.lpp" +#line 191 "holidayscannerplan.lpp" { yylval->ival = 11; return token::MONTH; } YY_BREAK case 89: YY_RULE_SETUP -#line 192 "holidayscannerplan.lpp" +#line 192 "holidayscannerplan.lpp" { yylval->ival = 12; return token::MONTH; } YY_BREAK case 90: YY_RULE_SETUP -#line 193 "holidayscannerplan.lpp" +#line 193 "holidayscannerplan.lpp" { yylval->ival = 13; return token::MONTH; } YY_BREAK case 91: YY_RULE_SETUP -#line 195 "holidayscannerplan.lpp" +#line 195 "holidayscannerplan.lpp" { yylval->ival = 1; return token::WDAY; } YY_BREAK case 92: YY_RULE_SETUP -#line 196 "holidayscannerplan.lpp" +#line 196 "holidayscannerplan.lpp" { yylval->ival = 2; return token::WDAY; } YY_BREAK case 93: YY_RULE_SETUP -#line 197 "holidayscannerplan.lpp" +#line 197 "holidayscannerplan.lpp" { yylval->ival = 3; return token::WDAY; } YY_BREAK case 94: YY_RULE_SETUP -#line 198 "holidayscannerplan.lpp" +#line 198 "holidayscannerplan.lpp" { yylval->ival = 4; return token::WDAY; } YY_BREAK case 95: YY_RULE_SETUP -#line 199 "holidayscannerplan.lpp" +#line 199 "holidayscannerplan.lpp" { yylval->ival = 5; return token::WDAY; } YY_BREAK case 96: YY_RULE_SETUP -#line 200 "holidayscannerplan.lpp" +#line 200 "holidayscannerplan.lpp" { yylval->ival = 6; return token::WDAY; } YY_BREAK case 97: YY_RULE_SETUP -#line 201 "holidayscannerplan.lpp" +#line 201 "holidayscannerplan.lpp" { yylval->ival = 7; return token::WDAY; } YY_BREAK case 98: YY_RULE_SETUP -#line 203 "holidayscannerplan.lpp" - { yylval->sval = "ethiopian"; return token::CALENDAR; } +#line 203 "holidayscannerplan.lpp" + { yylval->sval = (char *)"ethiopian"; return token::CALENDAR; } YY_BREAK case 99: YY_RULE_SETUP -#line 205 "holidayscannerplan.lpp" +#line 205 "holidayscannerplan.lpp" { yylval->ival = 1; return token::MONTH; } YY_BREAK case 100: YY_RULE_SETUP -#line 206 "holidayscannerplan.lpp" +#line 206 "holidayscannerplan.lpp" { yylval->ival = 2; return token::MONTH; } YY_BREAK case 101: YY_RULE_SETUP -#line 207 "holidayscannerplan.lpp" +#line 207 "holidayscannerplan.lpp" { yylval->ival = 3; return token::MONTH; } YY_BREAK case 102: YY_RULE_SETUP -#line 208 "holidayscannerplan.lpp" +#line 208 "holidayscannerplan.lpp" { yylval->ival = 4; return token::MONTH; } YY_BREAK case 103: YY_RULE_SETUP -#line 209 "holidayscannerplan.lpp" +#line 209 "holidayscannerplan.lpp" { yylval->ival = 5; return token::MONTH; } YY_BREAK case 104: YY_RULE_SETUP -#line 210 "holidayscannerplan.lpp" +#line 210 "holidayscannerplan.lpp" { yylval->ival = 6; return token::MONTH; } YY_BREAK case 105: YY_RULE_SETUP -#line 211 "holidayscannerplan.lpp" +#line 211 "holidayscannerplan.lpp" { yylval->ival = 7; return token::MONTH; } YY_BREAK case 106: YY_RULE_SETUP -#line 212 "holidayscannerplan.lpp" +#line 212 "holidayscannerplan.lpp" { yylval->ival = 8; return token::MONTH; } YY_BREAK case 107: YY_RULE_SETUP -#line 213 "holidayscannerplan.lpp" +#line 213 "holidayscannerplan.lpp" { yylval->ival = 9; return token::MONTH; } YY_BREAK case 108: YY_RULE_SETUP -#line 214 "holidayscannerplan.lpp" +#line 214 "holidayscannerplan.lpp" { yylval->ival = 10; return token::MONTH; } YY_BREAK case 109: YY_RULE_SETUP -#line 215 "holidayscannerplan.lpp" +#line 215 "holidayscannerplan.lpp" { yylval->ival = 11; return token::MONTH; } YY_BREAK case 110: YY_RULE_SETUP -#line 216 "holidayscannerplan.lpp" +#line 216 "holidayscannerplan.lpp" { yylval->ival = 12; return token::MONTH; } YY_BREAK case 111: YY_RULE_SETUP -#line 217 "holidayscannerplan.lpp" +#line 217 "holidayscannerplan.lpp" { yylval->ival = 13; return token::MONTH; } YY_BREAK case 112: YY_RULE_SETUP -#line 219 "holidayscannerplan.lpp" +#line 219 "holidayscannerplan.lpp" { yylval->ival = 1; return token::WDAY; } YY_BREAK case 113: YY_RULE_SETUP -#line 220 "holidayscannerplan.lpp" +#line 220 "holidayscannerplan.lpp" { yylval->ival = 2; return token::WDAY; } YY_BREAK case 114: YY_RULE_SETUP -#line 221 "holidayscannerplan.lpp" +#line 221 "holidayscannerplan.lpp" { yylval->ival = 3; return token::WDAY; } YY_BREAK case 115: YY_RULE_SETUP -#line 222 "holidayscannerplan.lpp" +#line 222 "holidayscannerplan.lpp" { yylval->ival = 4; return token::WDAY; } YY_BREAK case 116: YY_RULE_SETUP -#line 223 "holidayscannerplan.lpp" +#line 223 "holidayscannerplan.lpp" { yylval->ival = 5; return token::WDAY; } YY_BREAK case 117: YY_RULE_SETUP -#line 224 "holidayscannerplan.lpp" +#line 224 "holidayscannerplan.lpp" { yylval->ival = 6; return token::WDAY; } YY_BREAK case 118: YY_RULE_SETUP -#line 225 "holidayscannerplan.lpp" +#line 225 "holidayscannerplan.lpp" { yylval->ival = 7; return token::WDAY; } YY_BREAK case 119: YY_RULE_SETUP -#line 227 "holidayscannerplan.lpp" - { yylval->sval = "hebrew"; return token::CALENDAR; } +#line 227 "holidayscannerplan.lpp" + { yylval->sval = (char *)"hebrew"; return token::CALENDAR; } YY_BREAK case 120: YY_RULE_SETUP -#line 229 "holidayscannerplan.lpp" +#line 229 "holidayscannerplan.lpp" { yylval->ival = 1; return token::MONTH; } YY_BREAK case 121: YY_RULE_SETUP -#line 230 "holidayscannerplan.lpp" +#line 230 "holidayscannerplan.lpp" { yylval->ival = 2; return token::MONTH; } YY_BREAK case 122: YY_RULE_SETUP -#line 231 "holidayscannerplan.lpp" +#line 231 "holidayscannerplan.lpp" { yylval->ival = 3; return token::MONTH; } YY_BREAK case 123: YY_RULE_SETUP -#line 232 "holidayscannerplan.lpp" +#line 232 "holidayscannerplan.lpp" { yylval->ival = 4; return token::MONTH; } YY_BREAK case 124: YY_RULE_SETUP -#line 233 "holidayscannerplan.lpp" +#line 233 "holidayscannerplan.lpp" { yylval->ival = 5; return token::MONTH; } YY_BREAK case 125: YY_RULE_SETUP -#line 234 "holidayscannerplan.lpp" +#line 234 "holidayscannerplan.lpp" { yylval->ival = 6; return token::MONTH; } YY_BREAK case 126: YY_RULE_SETUP -#line 235 "holidayscannerplan.lpp" +#line 235 "holidayscannerplan.lpp" { yylval->ival = 7; return token::MONTH; } YY_BREAK case 127: YY_RULE_SETUP -#line 236 "holidayscannerplan.lpp" +#line 236 "holidayscannerplan.lpp" { yylval->ival = 8; return token::MONTH; } YY_BREAK case 128: YY_RULE_SETUP -#line 237 "holidayscannerplan.lpp" +#line 237 "holidayscannerplan.lpp" { yylval->ival = 9; return token::MONTH; } YY_BREAK case 129: YY_RULE_SETUP -#line 238 "holidayscannerplan.lpp" +#line 238 "holidayscannerplan.lpp" { yylval->ival = 10; return token::MONTH; } YY_BREAK case 130: YY_RULE_SETUP -#line 239 "holidayscannerplan.lpp" +#line 239 "holidayscannerplan.lpp" { yylval->ival = 11; return token::MONTH; } YY_BREAK case 131: YY_RULE_SETUP -#line 240 "holidayscannerplan.lpp" +#line 240 "holidayscannerplan.lpp" { yylval->ival = 12; return token::MONTH; } YY_BREAK case 132: YY_RULE_SETUP -#line 241 "holidayscannerplan.lpp" +#line 241 "holidayscannerplan.lpp" { yylval->ival = 13; return token::MONTH; } YY_BREAK case 133: YY_RULE_SETUP -#line 242 "holidayscannerplan.lpp" +#line 242 "holidayscannerplan.lpp" { yylval->ival = 14; return token::MONTH; } YY_BREAK case 134: YY_RULE_SETUP -#line 244 "holidayscannerplan.lpp" +#line 244 "holidayscannerplan.lpp" { yylval->ival = 1; return token::WDAY; } YY_BREAK case 135: YY_RULE_SETUP -#line 245 "holidayscannerplan.lpp" +#line 245 "holidayscannerplan.lpp" { yylval->ival = 2; return token::WDAY; } YY_BREAK case 136: YY_RULE_SETUP -#line 246 "holidayscannerplan.lpp" +#line 246 "holidayscannerplan.lpp" { yylval->ival = 3; return token::WDAY; } YY_BREAK case 137: YY_RULE_SETUP -#line 247 "holidayscannerplan.lpp" +#line 247 "holidayscannerplan.lpp" { yylval->ival = 4; return token::WDAY; } YY_BREAK case 138: YY_RULE_SETUP -#line 248 "holidayscannerplan.lpp" +#line 248 "holidayscannerplan.lpp" { yylval->ival = 5; return token::WDAY; } YY_BREAK case 139: YY_RULE_SETUP -#line 249 "holidayscannerplan.lpp" +#line 249 "holidayscannerplan.lpp" { yylval->ival = 6; return token::WDAY; } YY_BREAK case 140: YY_RULE_SETUP -#line 250 "holidayscannerplan.lpp" +#line 250 "holidayscannerplan.lpp" { yylval->ival = 7; return token::WDAY; } YY_BREAK case 141: YY_RULE_SETUP -#line 252 "holidayscannerplan.lpp" - { yylval->sval = "hijri"; return token::CALENDAR; } +#line 252 "holidayscannerplan.lpp" + { yylval->sval = (char *)"hijri"; return token::CALENDAR; } YY_BREAK case 142: YY_RULE_SETUP -#line 254 "holidayscannerplan.lpp" +#line 254 "holidayscannerplan.lpp" { yylval->ival = 1; return token::MONTH; } YY_BREAK case 143: YY_RULE_SETUP -#line 255 "holidayscannerplan.lpp" +#line 255 "holidayscannerplan.lpp" { yylval->ival = 2; return token::MONTH; } YY_BREAK case 144: YY_RULE_SETUP -#line 256 "holidayscannerplan.lpp" +#line 256 "holidayscannerplan.lpp" { yylval->ival = 3; return token::MONTH; } YY_BREAK case 145: YY_RULE_SETUP -#line 257 "holidayscannerplan.lpp" +#line 257 "holidayscannerplan.lpp" { yylval->ival = 4; return token::MONTH; } YY_BREAK case 146: YY_RULE_SETUP -#line 258 "holidayscannerplan.lpp" +#line 258 "holidayscannerplan.lpp" { yylval->ival = 5; return token::MONTH; } YY_BREAK case 147: YY_RULE_SETUP -#line 259 "holidayscannerplan.lpp" +#line 259 "holidayscannerplan.lpp" { yylval->ival = 6; return token::MONTH; } YY_BREAK case 148: YY_RULE_SETUP -#line 260 "holidayscannerplan.lpp" +#line 260 "holidayscannerplan.lpp" { yylval->ival = 7; return token::MONTH; } YY_BREAK case 149: YY_RULE_SETUP -#line 261 "holidayscannerplan.lpp" +#line 261 "holidayscannerplan.lpp" { yylval->ival = 8; return token::MONTH; } YY_BREAK case 150: YY_RULE_SETUP -#line 262 "holidayscannerplan.lpp" +#line 262 "holidayscannerplan.lpp" { yylval->ival = 9; return token::MONTH; } YY_BREAK case 151: YY_RULE_SETUP -#line 263 "holidayscannerplan.lpp" +#line 263 "holidayscannerplan.lpp" { yylval->ival = 10; return token::MONTH; } YY_BREAK case 152: YY_RULE_SETUP -#line 264 "holidayscannerplan.lpp" +#line 264 "holidayscannerplan.lpp" { yylval->ival = 11; return token::MONTH; } YY_BREAK case 153: YY_RULE_SETUP -#line 265 "holidayscannerplan.lpp" +#line 265 "holidayscannerplan.lpp" { yylval->ival = 12; return token::MONTH; } YY_BREAK case 154: YY_RULE_SETUP -#line 267 "holidayscannerplan.lpp" +#line 267 "holidayscannerplan.lpp" { yylval->ival = 1; return token::WDAY; } YY_BREAK case 155: YY_RULE_SETUP -#line 268 "holidayscannerplan.lpp" +#line 268 "holidayscannerplan.lpp" { yylval->ival = 2; return token::WDAY; } YY_BREAK case 156: YY_RULE_SETUP -#line 269 "holidayscannerplan.lpp" +#line 269 "holidayscannerplan.lpp" { yylval->ival = 3; return token::WDAY; } YY_BREAK case 157: YY_RULE_SETUP -#line 270 "holidayscannerplan.lpp" +#line 270 "holidayscannerplan.lpp" { yylval->ival = 4; return token::WDAY; } YY_BREAK case 158: YY_RULE_SETUP -#line 271 "holidayscannerplan.lpp" +#line 271 "holidayscannerplan.lpp" { yylval->ival = 5; return token::WDAY; } YY_BREAK case 159: YY_RULE_SETUP -#line 272 "holidayscannerplan.lpp" +#line 272 "holidayscannerplan.lpp" { yylval->ival = 6; return token::WDAY; } YY_BREAK case 160: YY_RULE_SETUP -#line 273 "holidayscannerplan.lpp" +#line 273 "holidayscannerplan.lpp" { yylval->ival = 7; return token::WDAY; } YY_BREAK case 161: YY_RULE_SETUP -#line 275 "holidayscannerplan.lpp" - { yylval->sval = "indian-national"; return token::CALENDAR; } +#line 275 "holidayscannerplan.lpp" + { yylval->sval = (char *)"indian-national"; return token::CALENDAR; } YY_BREAK case 162: YY_RULE_SETUP -#line 277 "holidayscannerplan.lpp" +#line 277 "holidayscannerplan.lpp" { yylval->ival = 1; return token::MONTH; } YY_BREAK case 163: YY_RULE_SETUP -#line 278 "holidayscannerplan.lpp" +#line 278 "holidayscannerplan.lpp" { yylval->ival = 2; return token::MONTH; } YY_BREAK case 164: YY_RULE_SETUP -#line 279 "holidayscannerplan.lpp" +#line 279 "holidayscannerplan.lpp" { yylval->ival = 3; return token::MONTH; } YY_BREAK case 165: YY_RULE_SETUP -#line 280 "holidayscannerplan.lpp" +#line 280 "holidayscannerplan.lpp" { yylval->ival = 4; return token::MONTH; } YY_BREAK case 166: YY_RULE_SETUP -#line 281 "holidayscannerplan.lpp" +#line 281 "holidayscannerplan.lpp" { yylval->ival = 5; return token::MONTH; } YY_BREAK case 167: YY_RULE_SETUP -#line 282 "holidayscannerplan.lpp" +#line 282 "holidayscannerplan.lpp" { yylval->ival = 6; return token::MONTH; } YY_BREAK case 168: YY_RULE_SETUP -#line 283 "holidayscannerplan.lpp" +#line 283 "holidayscannerplan.lpp" { yylval->ival = 7; return token::MONTH; } YY_BREAK case 169: YY_RULE_SETUP -#line 284 "holidayscannerplan.lpp" +#line 284 "holidayscannerplan.lpp" { yylval->ival = 8; return token::MONTH; } YY_BREAK case 170: YY_RULE_SETUP -#line 285 "holidayscannerplan.lpp" +#line 285 "holidayscannerplan.lpp" { yylval->ival = 9; return token::MONTH; } YY_BREAK case 171: YY_RULE_SETUP -#line 286 "holidayscannerplan.lpp" +#line 286 "holidayscannerplan.lpp" { yylval->ival = 10; return token::MONTH; } YY_BREAK case 172: YY_RULE_SETUP -#line 287 "holidayscannerplan.lpp" +#line 287 "holidayscannerplan.lpp" { yylval->ival = 11; return token::MONTH; } YY_BREAK case 173: YY_RULE_SETUP -#line 288 "holidayscannerplan.lpp" +#line 288 "holidayscannerplan.lpp" { yylval->ival = 12; return token::MONTH; } YY_BREAK case 174: YY_RULE_SETUP -#line 290 "holidayscannerplan.lpp" +#line 290 "holidayscannerplan.lpp" { yylval->ival = 1; return token::WDAY; } YY_BREAK case 175: YY_RULE_SETUP -#line 291 "holidayscannerplan.lpp" +#line 291 "holidayscannerplan.lpp" { yylval->ival = 2; return token::WDAY; } YY_BREAK case 176: YY_RULE_SETUP -#line 292 "holidayscannerplan.lpp" +#line 292 "holidayscannerplan.lpp" { yylval->ival = 3; return token::WDAY; } YY_BREAK case 177: YY_RULE_SETUP -#line 293 "holidayscannerplan.lpp" +#line 293 "holidayscannerplan.lpp" { yylval->ival = 4; return token::WDAY; } YY_BREAK case 178: YY_RULE_SETUP -#line 294 "holidayscannerplan.lpp" +#line 294 "holidayscannerplan.lpp" { yylval->ival = 5; return token::WDAY; } YY_BREAK case 179: YY_RULE_SETUP -#line 295 "holidayscannerplan.lpp" +#line 295 "holidayscannerplan.lpp" { yylval->ival = 6; return token::WDAY; } YY_BREAK case 180: YY_RULE_SETUP -#line 296 "holidayscannerplan.lpp" +#line 296 "holidayscannerplan.lpp" { yylval->ival = 7; return token::WDAY; } YY_BREAK case 181: YY_RULE_SETUP -#line 298 "holidayscannerplan.lpp" - { yylval->sval = "jalali"; return token::CALENDAR; } +#line 298 "holidayscannerplan.lpp" + { yylval->sval = (char *)"jalali"; return token::CALENDAR; } YY_BREAK case 182: YY_RULE_SETUP -#line 300 "holidayscannerplan.lpp" +#line 300 "holidayscannerplan.lpp" { yylval->ival = 1; return token::MONTH; } YY_BREAK case 183: YY_RULE_SETUP -#line 301 "holidayscannerplan.lpp" +#line 301 "holidayscannerplan.lpp" { yylval->ival = 2; return token::MONTH; } YY_BREAK case 184: YY_RULE_SETUP -#line 302 "holidayscannerplan.lpp" +#line 302 "holidayscannerplan.lpp" { yylval->ival = 3; return token::MONTH; } YY_BREAK case 185: YY_RULE_SETUP -#line 303 "holidayscannerplan.lpp" +#line 303 "holidayscannerplan.lpp" { yylval->ival = 4; return token::MONTH; } YY_BREAK case 186: YY_RULE_SETUP -#line 304 "holidayscannerplan.lpp" +#line 304 "holidayscannerplan.lpp" { yylval->ival = 5; return token::MONTH; } YY_BREAK case 187: YY_RULE_SETUP -#line 305 "holidayscannerplan.lpp" +#line 305 "holidayscannerplan.lpp" { yylval->ival = 6; return token::MONTH; } YY_BREAK case 188: YY_RULE_SETUP -#line 306 "holidayscannerplan.lpp" +#line 306 "holidayscannerplan.lpp" { yylval->ival = 7; return token::MONTH; } YY_BREAK case 189: YY_RULE_SETUP -#line 307 "holidayscannerplan.lpp" +#line 307 "holidayscannerplan.lpp" { yylval->ival = 8; return token::MONTH; } YY_BREAK case 190: YY_RULE_SETUP -#line 308 "holidayscannerplan.lpp" +#line 308 "holidayscannerplan.lpp" { yylval->ival = 9; return token::MONTH; } YY_BREAK case 191: YY_RULE_SETUP -#line 309 "holidayscannerplan.lpp" +#line 309 "holidayscannerplan.lpp" { yylval->ival = 10; return token::MONTH; } YY_BREAK case 192: YY_RULE_SETUP -#line 310 "holidayscannerplan.lpp" +#line 310 "holidayscannerplan.lpp" { yylval->ival = 11; return token::MONTH; } YY_BREAK case 193: YY_RULE_SETUP -#line 311 "holidayscannerplan.lpp" +#line 311 "holidayscannerplan.lpp" { yylval->ival = 12; return token::MONTH; } YY_BREAK case 194: YY_RULE_SETUP -#line 313 "holidayscannerplan.lpp" +#line 313 "holidayscannerplan.lpp" { yylval->ival = 1; return token::WDAY; } YY_BREAK case 195: YY_RULE_SETUP -#line 314 "holidayscannerplan.lpp" +#line 314 "holidayscannerplan.lpp" { yylval->ival = 2; return token::WDAY; } YY_BREAK case 196: YY_RULE_SETUP -#line 315 "holidayscannerplan.lpp" +#line 315 "holidayscannerplan.lpp" { yylval->ival = 3; return token::WDAY; } YY_BREAK case 197: YY_RULE_SETUP -#line 316 "holidayscannerplan.lpp" +#line 316 "holidayscannerplan.lpp" { yylval->ival = 4; return token::WDAY; } YY_BREAK case 198: YY_RULE_SETUP -#line 317 "holidayscannerplan.lpp" +#line 317 "holidayscannerplan.lpp" { yylval->ival = 5; return token::WDAY; } YY_BREAK case 199: YY_RULE_SETUP -#line 318 "holidayscannerplan.lpp" +#line 318 "holidayscannerplan.lpp" { yylval->ival = 6; return token::WDAY; } YY_BREAK case 200: YY_RULE_SETUP -#line 319 "holidayscannerplan.lpp" +#line 319 "holidayscannerplan.lpp" { yylval->ival = 7; return token::WDAY; } YY_BREAK case 201: YY_RULE_SETUP -#line 321 "holidayscannerplan.lpp" +#line 321 "holidayscannerplan.lpp" { LexerError(yytext); } YY_BREAK case 202: @@ -3763,4 +3763,3 @@ { return 1; } - diff --git a/src/parsers/plan2/holidayscannerplan.lpp b/src/parsers/plan2/holidayscannerplan.lpp --- a/src/parsers/plan2/holidayscannerplan.lpp +++ b/src/parsers/plan2/holidayscannerplan.lpp @@ -140,20 +140,20 @@ before { yylval->ival = -1; return token::NUMBER; } after { yylval->ival = 1; return token::NUMBER; } -public { yylval->sval = "public"; return token::CATEGORY; } -civil { yylval->sval = "civil"; return token::CATEGORY; } -religious { yylval->sval = "religious"; return token::CATEGORY; } -school { yylval->sval = "school"; return token::CATEGORY; } -government { yylval->sval = "government"; return token::CATEGORY; } -financial { yylval->sval = "financial"; return token::CATEGORY; } -cultural { yylval->sval = "cultural"; return token::CATEGORY; } -commemorative { yylval->sval = "commemorative"; return token::CATEGORY; } -historical { yylval->sval = "historical"; return token::CATEGORY; } -nameday { yylval->sval = "nameday"; return token::CATEGORY; } -seasonal { yylval->sval = "seasonal"; return token::CATEGORY; } - -gregorian { yylval->sval = "gregorian"; return token::CALENDAR; } -julian { yylval->sval = "julian"; return token::CALENDAR; } +public { yylval->sval = (char *)"public"; return token::CATEGORY; } +civil { yylval->sval = (char *)"civil"; return token::CATEGORY; } +religious { yylval->sval = (char *)"religious"; return token::CATEGORY; } +school { yylval->sval = (char *)"school"; return token::CATEGORY; } +government { yylval->sval = (char *)"government"; return token::CATEGORY; } +financial { yylval->sval = (char *)"financial"; return token::CATEGORY; } +cultural { yylval->sval = (char *)"cultural"; return token::CATEGORY; } +commemorative { yylval->sval = (char *)"commemorative"; return token::CATEGORY; } +historical { yylval->sval = (char *)"historical"; return token::CATEGORY; } +nameday { yylval->sval = (char *)"nameday"; return token::CATEGORY; } +seasonal { yylval->sval = (char *)"seasonal"; return token::CATEGORY; } + +gregorian { yylval->sval = (char *)"gregorian"; return token::CALENDAR; } +julian { yylval->sval = (char *)"julian"; return token::CALENDAR; } january { yylval->ival = 1; return token::MONTH; } february { yylval->ival = 2; return token::MONTH; } @@ -176,7 +176,7 @@ saturday { yylval->ival = 6; return token::WDAY; } sunday { yylval->ival = 7; return token::WDAY; } -coptic { yylval->sval = "coptic"; return token::CALENDAR; } +coptic { yylval->sval = (char *)"coptic"; return token::CALENDAR; } thoout { yylval->ival = 1; return token::MONTH; } paope { yylval->ival = 2; return token::MONTH; } @@ -200,7 +200,7 @@ psabbaton { yylval->ival = 6; return token::WDAY; } tkyriake { yylval->ival = 7; return token::WDAY; } -ethiopian { yylval->sval = "ethiopian"; return token::CALENDAR; } +ethiopian { yylval->sval = (char *)"ethiopian"; return token::CALENDAR; } meskerem { yylval->ival = 1; return token::MONTH; } tequemt { yylval->ival = 2; return token::MONTH; } @@ -224,7 +224,7 @@ qedame { yylval->ival = 6; return token::WDAY; } ehud { yylval->ival = 7; return token::WDAY; } -hebrew { yylval->sval = "hebrew"; return token::CALENDAR; } +hebrew { yylval->sval = (char *)"hebrew"; return token::CALENDAR; } tishrey { yylval->ival = 1; return token::MONTH; } heshvan { yylval->ival = 2; return token::MONTH; } @@ -249,7 +249,7 @@ shabbat { yylval->ival = 6; return token::WDAY; } yomrishon { yylval->ival = 7; return token::WDAY; } -hijri { yylval->sval = "hijri"; return token::CALENDAR; } +hijri { yylval->sval = (char *)"hijri"; return token::CALENDAR; } muharram { yylval->ival = 1; return token::MONTH; } safar { yylval->ival = 2; return token::MONTH; } @@ -272,7 +272,7 @@ yaumalsabt { yylval->ival = 6; return token::WDAY; } yaumalahad { yylval->ival = 7; return token::WDAY; } -indiannational { yylval->sval = "indian-national"; return token::CALENDAR; } +indiannational { yylval->sval = (char *)"indian-national"; return token::CALENDAR; } chaitra { yylval->ival = 1; return token::MONTH; } vaishakh { yylval->ival = 2; return token::MONTH; } @@ -295,7 +295,7 @@ sanivara { yylval->ival = 6; return token::WDAY; } raviara { yylval->ival = 7; return token::WDAY; } -jalali { yylval->sval = "jalali"; return token::CALENDAR; } +jalali { yylval->sval = (char *)"jalali"; return token::CALENDAR; } farvardin { yylval->ival = 1; return token::MONTH; } ordibehesht { yylval->ival = 2; return token::MONTH; } diff --git a/src/parsers/plan2/holidayscannerplan_p.h b/src/parsers/plan2/holidayscannerplan_p.h --- a/src/parsers/plan2/holidayscannerplan_p.h +++ b/src/parsers/plan2/holidayscannerplan_p.h @@ -66,7 +66,7 @@ public: HolidayScannerPlan(std::istream *arg_yyin = 0, std::ostream *arg_yyout = 0); - virtual ~HolidayScannerPlan(); + ~HolidayScannerPlan() override; virtual HolidayParserPlan::token_type lex(HolidayParserPlan::semantic_type *yylval, HolidayParserPlan::location_type *yylloc); diff --git a/src/parsers/qcalendarsystem.cpp b/src/parsers/qcalendarsystem.cpp --- a/src/parsers/qcalendarsystem.cpp +++ b/src/parsers/qcalendarsystem.cpp @@ -21,15 +21,15 @@ #include "qcalendarsystem_p.h" -#include -#include +#include +#include #include "qdebug.h" class QCalendarSystemPrivate : public QSharedData { public: - QCalendarSystemPrivate(QCalendarSystem::CalendarSystem calendar); + explicit QCalendarSystemPrivate(QCalendarSystem::CalendarSystem calendar); QCalendarSystem::CalendarSystem calendarSystem() const; qint64 epoch() const; @@ -217,7 +217,8 @@ int QCalendarSystemPrivate::monthsInYear(int year) const { - year = year + yearOffset(); + //year = year + yearOffset(); + Q_UNUSED(year); switch (calendarSystem()) { case QCalendarSystem::CopticCalendar: @@ -344,6 +345,7 @@ if (month == 13) { // Consider the short epagomenal month as part of the 4th quarter return 4; } + Q_FALLTHROUGH(); default: return (((month - 1) / 3) + 1); } @@ -386,7 +388,7 @@ void QCalendarSystemPrivate::julianDayToDate(qint64 jd, int *year, int *month, int *day) const { - int yy = 0, mm, dd; + int yy = 0, mm = 0, dd = 0; switch (calendarSystem()) { @@ -415,10 +417,11 @@ // Formula derived from first principles by John Layt qint64 s = jd - (epoch() - 365); qint64 l = s / 1461; - yy = (l * 4) + qMin((qint64)3, (s % 1461) / 365); + yy = (l * 4) + qMin(static_cast(3), (s % 1461) / 365); qint64 diy = s - (yy * 365) + (yy / 4); mm = (diy / 30) + 1; dd = (diy % 30) + 1; + break; } case QCalendarSystem::IndianNationalCalendar: { @@ -435,6 +438,7 @@ l = j / 11; mm = j + 2 - 12 * l; yy = 100 * (n - 49) + l + i - 78; + break; } case QCalendarSystem::IslamicCivilCalendar: { @@ -449,6 +453,7 @@ yy = (30 * n) + j - 30; mm = (24 * l) / 709; dd = l - ((709 * mm) / 24); + break; } case QCalendarSystem::JulianCalendar: { @@ -508,65 +513,68 @@ int a = (14 - month) / 12; year = year + 4800 - a; int m = month + (12 * a) - 3; - jd = day - + (((153 * m) + 2) / 5) - + (365 * year) - + (year / 4) - - (year / 100) - + (year / 400) - - 32045; + jd = day + + (((153 * m) + 2) / 5) + + (365 * year) + + (year / 4) - + (year / 100) + + (year / 400) - + 32045; break; } case QCalendarSystem::CopticCalendar: case QCalendarSystem::EthiopicCalendar: case QCalendarSystem::EthiopicAmeteAlemCalendar: { // Formula derived from first principles by John Layt - jd = epoch() - 1 - + ((year - 1) * 365) - + (year / 4) - + ((month - 1) * 30) - + day; + jd = epoch() - 1 + + ((year - 1) * 365) + + (year / 4) + + ((month - 1) * 30) + + day; + break; } case QCalendarSystem::IndianNationalCalendar: { // Formula from the "Explanatory Supplement to the Astronomical Almanac" // Revised Edition 2006 section 12.94 pp 605-606, US Naval Observatory // Originally from the "Report of the Calendar Reform Committee" 1955, Indian Government - jd = 365 * year - + (year + 78 - 1 / month) / 4 - + 31 * month - - (month + 9) / 11 - - (month / 7) * (month - 7) - - (3 * ((year + 78 - 1 / month) / 100 + 1)) / 4 - + day - + 1749579; + jd = 365 * year + + (year + 78 - 1 / month) / 4 + + 31 * month - + (month + 9) / 11 - + (month / 7) * (month - 7) - + (3 * ((year + 78 - 1 / month) / 100 + 1)) / 4 + + day + + 1749579; + break; } case QCalendarSystem::IslamicCivilCalendar: { // Formula from the "Explanatory Supplement to the Astronomical Almanac" // Revised Edition 2006 section ??? pp ???, US Naval Observatory // Derived from Fliegel & Van Flandern 1968 - jd = (3 + (11 * year)) / 30 - + 354 * year - + 30 * month - - (month - 1) / 2 - + day - + epoch() - - 385; + jd = (3 + (11 * year)) / 30 + + 354 * year + + 30 * month - + (month - 1) / 2 + + day + + epoch() - + 385; + break; } case QCalendarSystem::JulianCalendar: { // Formula from The Calendar FAQ by Claus Tondering // http://www.tondering.dk/claus/cal/node3.html#SECTION003161000000000000000 int a = (14 - month) / 12; year = year + 4800 - a; int m = month + (12 * a) - 3; - jd = day - + (((153 * m) + 2) / 5) - + (365 * year) - + (year / 4) - - 32083; + jd = day + + (((153 * m) + 2) / 5) + + (365 * year) + + (year / 4) - + 32083; break; } diff --git a/src/parsers/qcalendarsystem_p.h b/src/parsers/qcalendarsystem_p.h --- a/src/parsers/qcalendarsystem_p.h +++ b/src/parsers/qcalendarsystem_p.h @@ -22,8 +22,8 @@ #ifndef QCALENDARSYSTEM_H #define QCALENDARSYSTEM_H -#include -#include +#include +#include class QCalendarSystemPrivate; @@ -86,8 +86,8 @@ int dayOfWeek(const QDate &date) const; int dayOfWeek(int year, int month, int day) const; - int weekNumber(const QDate &date, int *yearNum = 0) const; - int weekNumber(int year, int month, int day, int *yearNum = 0) const; + int weekNumber(const QDate &date, int *yearNum = nullptr) const; + int weekNumber(int year, int month, int day, int *yearNum = nullptr) const; int monthsInYear(const QDate &date) const; int monthsInYear(int year) const; diff --git a/src/sunriseset.cpp b/src/sunriseset.cpp --- a/src/sunriseset.cpp +++ b/src/sunriseset.cpp @@ -23,7 +23,6 @@ */ #include "sunriseset.h" -#include #include static const double PI = 3.14159265358979323846; static const double MaxLat = 89.99; diff --git a/src/zodiac.h b/src/zodiac.h --- a/src/zodiac.h +++ b/src/zodiac.h @@ -22,6 +22,18 @@ #ifndef KHOLIDAYS_ZODIAC_H #define KHOLIDAYS_ZODIAC_H +#include "kholidays_export.h" + +#include + +class QDate; +class QString; + +namespace KHolidays +{ + +class ZodiacPrivate; + /** Represents and manages the Zodiac calendar. The Tropical and Sidereal Zodiacs are supported. @@ -50,19 +62,6 @@ Pisces fish Feb 19 - Mar 20 Mar 15 - Apr 13 */ - -#include "kholidays_export.h" - -#include - -class QDate; -class QString; - -namespace KHolidays -{ - -class ZodiacPrivate; - class KHOLIDAYS_EXPORT Zodiac { public: @@ -87,7 +86,7 @@ None }; - Zodiac(ZodiacType type); + explicit Zodiac(ZodiacType type); Zodiac(const Zodiac &other); ~Zodiac(); @@ -130,4 +129,3 @@ } #endif - diff --git a/src/zodiac.cpp b/src/zodiac.cpp --- a/src/zodiac.cpp +++ b/src/zodiac.cpp @@ -21,16 +21,16 @@ #include "zodiac.h" -#include -#include -#include +#include +#include +#include using namespace KHolidays; class Q_DECL_HIDDEN KHolidays::ZodiacPrivate : public QSharedData { public: - ZodiacPrivate(Zodiac::ZodiacType type) + explicit ZodiacPrivate(Zodiac::ZodiacType type) : mType(type) { } @@ -99,10 +99,10 @@ return QCoreApplication::translate("Zodiac", "Aquarius"); case Pisces: return QCoreApplication::translate("Zodiac", "Pisces"); - default: case None: return QString(); } + return QString(); } Zodiac::ZodiacSigns Zodiac::signAtDate(const QDate &date) const @@ -184,7 +184,6 @@ } return Capricorn; - break; case Sidereal: startdate = QDate(date.year(), 1, 1); @@ -260,7 +259,6 @@ } return Sagittarius; - break; } return None; } @@ -292,8 +290,8 @@ return QCoreApplication::translate("HolidayRegion", "water carrier", "zodiac symbol for Aquarius"); case Pisces: return QCoreApplication::translate("HolidayRegion", "fish", "zodiac symbol for Pices"); - default: case None: return QString(); } + return QString(); }