Use mkRuleDaysOfWeek for KO language

Summary: Use mkRuleDaysOfWeek for KO language.

Reviewed By: patapizza

Differential Revision: D16441936

fbshipit-source-id: 1bee48cd59caede92cf43056ea5aa4d953827318
This commit is contained in:
Jae Lee 2019-07-31 16:07:36 -07:00 committed by Facebook Github Bot
parent fa386a548e
commit 125ab967e0
2 changed files with 206 additions and 159 deletions

View File

@ -33,6 +33,13 @@ classifiers
koData =
ClassData{prior = -infinity, unseen = -1.6094379124341003,
likelihoods = HashMap.fromList [], n = 0}}),
("Thursday",
Classifier{okData =
ClassData{prior = 0.0, unseen = -2.0794415416798357,
likelihoods = HashMap.fromList [("", 0.0)], n = 6},
koData =
ClassData{prior = -infinity, unseen = -0.6931471805599453,
likelihoods = HashMap.fromList [], n = 0}}),
("integer (numeric)",
Classifier{okData =
ClassData{prior = -0.40546510810816444,
@ -71,7 +78,6 @@ classifiers
likelihoods =
HashMap.fromList
[("dayhour", -1.1826954058786512),
("day-of-weekmorning", -3.4339872044851463),
("yesterdayevening|night", -3.4339872044851463),
("mm/ddafternoon", -3.4339872044851463),
("todayafternoon", -3.4339872044851463),
@ -82,6 +88,7 @@ classifiers
("next <cycle>evening|night", -3.028522096376982),
("tomorrowlunch", -3.4339872044851463),
("intersectmorning", -3.4339872044851463),
("Mondaymorning", -3.4339872044851463),
("the day before yesterday - \50634\44536\51228morning",
-3.4339872044851463),
("tomorrowevening|night", -3.028522096376982),
@ -95,12 +102,12 @@ classifiers
("dayhour", -1.8191584434161694),
("yearhour", -1.906169820405799),
("time-of-day (latent)evening|night", -3.6109179126442243),
("Fridayafternoon", -3.6109179126442243),
("year (latent)evening|night", -2.512305623976115),
("hourhour", -2.917770732084279),
("time-of-day (latent)lunch", -3.6109179126442243),
("intersectafternoon", -2.10684051586795),
("year (latent)afternoon", -3.20545280453606),
("day-of-weekafternoon", -3.6109179126442243),
("next <cycle>evening|night", -3.6109179126442243),
("time-of-day (latent)afternoon", -3.6109179126442243),
("year (latent)morning", -3.20545280453606),
@ -108,22 +115,26 @@ classifiers
n = 24}}),
("<time> nth <time> - 3\50900 \52395\51704 \54868\50836\51068",
Classifier{okData =
ClassData{prior = -0.6190392084062235, unseen = -2.890371757896165,
ClassData{prior = -0.6190392084062235, unseen = -2.995732273553991,
likelihoods =
HashMap.fromList
[("monthday", -0.7537718023763802),
("intersectordinals (\52395\48264\51704)day-of-week",
-0.8873031950009028),
("monthordinals (\52395\48264\51704)day-of-week",
-2.1400661634962708)],
[("monthday", -0.8649974374866046),
("intersectordinals (\52395\48264\51704)Tuesday",
-1.845826690498331),
("monthordinals (\52395\48264\51704)Tuesday",
-2.2512917986064953),
("intersectordinals (\52395\48264\51704)Wednesday",
-1.3350010667323402)],
n = 7},
koData =
ClassData{prior = -0.7731898882334817, unseen = -2.772588722239781,
ClassData{prior = -0.7731898882334817, unseen = -2.890371757896165,
likelihoods =
HashMap.fromList
[("monthday", -0.7621400520468967),
("monthordinals (\52395\48264\51704)day-of-week",
-0.7621400520468967)],
[("monthday", -0.8873031950009028),
("monthordinals (\52395\48264\51704)Wednesday",
-1.2237754316221157),
("monthordinals (\52395\48264\51704)Tuesday",
-1.7346010553881064)],
n = 6}}),
("the day before yesterday - \50634\44536\51228",
Classifier{okData =
@ -162,15 +173,16 @@ classifiers
likelihoods = HashMap.fromList [], n = 0}}),
("<time> \47560\51648\47561 <day-of-week>",
Classifier{okData =
ClassData{prior = 0.0, unseen = -2.3025850929940455,
ClassData{prior = 0.0, unseen = -2.3978952727983707,
likelihoods =
HashMap.fromList
[("intersectday-of-week", -1.5040773967762742),
("monthday", -0.8109302162163288),
("monthday-of-week", -1.0986122886681098)],
[("monthSunday", -1.6094379124341003),
("monthday", -0.916290731874155),
("monthMonday", -1.6094379124341003),
("intersectSunday", -1.6094379124341003)],
n = 3},
koData =
ClassData{prior = -infinity, unseen = -1.3862943611198906,
ClassData{prior = -infinity, unseen = -1.6094379124341003,
likelihoods = HashMap.fromList [], n = 0}}),
("integer - TYPE 1",
Classifier{okData =
@ -179,6 +191,13 @@ classifiers
koData =
ClassData{prior = -0.1694181519580468, unseen = -4.882801922586371,
likelihoods = HashMap.fromList [("", 0.0)], n = 130}}),
("Wednesday",
Classifier{okData =
ClassData{prior = 0.0, unseen = -2.0794415416798357,
likelihoods = HashMap.fromList [("", 0.0)], n = 6},
koData =
ClassData{prior = -infinity, unseen = -0.6931471805599453,
likelihoods = HashMap.fromList [], n = 0}}),
("hour (grain)",
Classifier{okData =
ClassData{prior = -1.241713132308783, unseen = -2.70805020110221,
@ -189,132 +208,140 @@ classifiers
likelihoods = HashMap.fromList [("", 0.0)], n = 32}}),
("intersect",
Classifier{okData =
ClassData{prior = -0.4279379639602229, unseen = -5.968707559985366,
ClassData{prior = -0.4279379639602229, unseen = -5.991464547107982,
likelihoods =
HashMap.fromList
[("intersect<hour-of-day> <integer> (as relative minutes)",
-5.272999558563747),
("intersectday-of-week", -4.174387269895637),
("year<time> \47560\51648\47561 <cycle>", -4.867534450455582),
("next <cycle>day-of-week", -4.356708826689592),
("dayhour", -2.0343211063993665),
("monthday", -2.4397862145075306),
("yearhour", -3.5682514663253215),
("<time> <part-of-day>time-of-day", -4.356708826689592),
("intersectam|pm <time-of-day>", -3.0757749812275272),
("next <cycle><time-of-day> am|pm", -5.272999558563747),
("next <cycle>am|pm <time-of-day>", -4.867534450455582),
("yearintersect", -2.9704144655697013),
("day-of-week<datetime> - <datetime> (interval)",
-4.356708826689592),
("day-of-week<time-of-day> - <time-of-day> (interval)",
-4.020236590068379),
-5.295814236329918),
("intersectFriday", -4.602667055769973),
("year<time> \47560\51648\47561 <cycle>", -4.890349128221754),
("next <cycle>Friday", -5.295814236329918),
("dayhour", -2.0571357841655376),
("last <cycle>Sunday", -4.890349128221754),
("monthday", -2.462600892273702),
("yearhour", -3.591066144091493),
("<time> <part-of-day>time-of-day", -4.379523504455763),
("this <cycle>Tuesday", -5.295814236329918),
("dayTuesday", -5.295814236329918),
("intersectam|pm <time-of-day>", -3.0985896589936988),
("next <cycle><time-of-day> am|pm", -5.295814236329918),
("next <cycle>am|pm <time-of-day>", -4.890349128221754),
("yearintersect", -2.9932291433358724),
("monthday with korean number - \51068\51068..\44396\51068",
-5.272999558563747),
("dayday-of-week", -4.356708826689592),
("this <cycle>day-of-week", -4.867534450455582),
("day-of-week<time> timezone", -4.867534450455582),
("monthhour", -3.5682514663253215),
("mm/ddam|pm <time-of-day>", -4.579852378003801),
("todayam|pm <time-of-day>", -4.579852378003801),
-5.295814236329918),
("Saturdaytime-of-day", -5.295814236329918),
("intersectMonday", -4.890349128221754),
("monthhour", -3.591066144091493),
("Thursday<time> timezone", -4.890349128221754),
("mm/ddam|pm <time-of-day>", -4.602667055769973),
("todayam|pm <time-of-day>", -4.602667055769973),
("the day before yesterday - \50634\44536\51228am|pm <time-of-day>",
-4.356708826689592),
("dayday", -3.6635616461296463),
("hourhour", -3.7689221617874726),
("year<time> <ordinal> <cycle>", -5.272999558563747),
("month<datetime> - <datetime> (interval)", -4.867534450455582),
("dayam|pm <time-of-day>", -5.272999558563747),
("day-of-weekam|pm <time-of-day>", -4.579852378003801),
("time-of-dayafter <time-of-day>", -5.272999558563747),
("monthminute", -4.867534450455582),
("hourminute", -4.579852378003801),
("intersectday", -4.174387269895637),
("am|pm <time-of-day>after <time-of-day>", -5.272999558563747),
("last <cycle>day-of-week", -4.579852378003801),
("month<time> <part-of-day>", -4.867534450455582),
("yearmonth", -3.132933395067476),
("dayminute", -3.4011973816621555),
("today<date>\50640", -5.272999558563747),
("mm/dd<date>\50640", -5.272999558563747),
-4.379523504455763),
("dayday", -3.686376323895818),
("hourhour", -3.791736839553644),
("year<time> <ordinal> <cycle>", -5.295814236329918),
("month<datetime> - <datetime> (interval)", -4.890349128221754),
("dayam|pm <time-of-day>", -5.295814236329918),
("last <cycle>Tuesday", -5.295814236329918),
("time-of-dayafter <time-of-day>", -5.295814236329918),
("monthminute", -4.890349128221754),
("hourminute", -4.602667055769973),
("this <cycle>Wednesday", -5.295814236329918),
("Thursdayhh:mm", -4.890349128221754),
("intersectday", -4.197201947661808),
("am|pm <time-of-day>after <time-of-day>", -5.295814236329918),
("dayMonday", -4.890349128221754),
("Thursday<datetime> - <datetime> (interval)",
-4.379523504455763),
("next <cycle>Wednesday", -5.295814236329918),
("month<time> <part-of-day>", -4.890349128221754),
("Thursday<time-of-day> - <time-of-day> (interval)",
-4.04305126783455),
("yearmonth", -3.1557480728336476),
("dayminute", -3.424012059428327),
("today<date>\50640", -5.295814236329918),
("mm/dd<date>\50640", -5.295814236329918),
("<hour-of-day> <integer> (as relative minutes)seconds",
-5.272999558563747),
("<time> <part-of-day><date>\50640", -4.867534450455582),
("monthintersect", -3.6635616461296463),
-5.295814236329918),
("<time> <part-of-day><date>\50640", -4.890349128221754),
("dayFriday", -5.295814236329918),
("monthintersect", -3.686376323895818),
("year<time> \47560\51648\47561 <day-of-week>",
-5.272999558563747),
("intersectintersect", -3.481240089335692),
("weekday", -3.6635616461296463),
-5.295814236329918),
("intersectintersect", -3.5040547671018634),
("weekday", -3.686376323895818),
("intersectday with korean number - \51068\51068..\44396\51068",
-4.867534450455582),
("yearday", -3.481240089335692),
("day-of-weekhh:mm", -4.867534450455582),
("yearweek", -4.867534450455582),
("minutesecond", -5.272999558563747),
-4.890349128221754),
("yearday", -3.5040547671018634),
("Thursdayam|pm <time-of-day>", -5.295814236329918),
("yearweek", -4.890349128221754),
("minutesecond", -5.295814236329918),
("<time> <part-of-day><hour-of-day> <integer> (as relative minutes)",
-4.867534450455582),
("tomorrow<time-of-day> am|pm", -5.272999558563747),
("tomorrowam|pm <time-of-day>", -4.867534450455582),
("dayintersect", -4.867534450455582),
("day-of-weektime-of-day", -5.272999558563747)],
-4.890349128221754),
("Fridayam|pm <time-of-day>", -4.890349128221754),
("next <cycle>Tuesday", -4.890349128221754),
("tomorrow<time-of-day> am|pm", -5.295814236329918),
("tomorrowam|pm <time-of-day>", -4.890349128221754),
("dayintersect", -4.890349128221754)],
n = 176},
koData =
ClassData{prior = -1.0551271767283708, unseen = -5.560681631015528,
ClassData{prior = -1.0551271767283708, unseen = -5.594711379601839,
likelihoods =
HashMap.fromList
[("year<time> \47560\51648\47561 <cycle>", -4.863680881139593),
("day-of-weekintersect", -4.863680881139593),
("dayhour", -2.2246235515243336),
("monthday", -3.158932788901167),
("yearhour", -3.158932788901167),
("<time> <part-of-day>time-of-day", -3.765068592471483),
("houryear", -4.1705337005796475),
("day-of-weekafter <time-of-day>", -4.863680881139593),
[("year<time> \47560\51648\47561 <cycle>", -4.897839799950911),
("dayhour", -2.2587824703356527),
("monthday", -3.1930917077124863),
("yearhour", -3.1930917077124863),
("<time> <part-of-day>time-of-day", -3.7992275112828016),
("houryear", -4.204692619390966),
("after <time-of-day>by <time> - \44620\51648",
-4.863680881139593),
("intersectam|pm <time-of-day>", -4.458215773031428),
("hournograin", -4.863680881139593),
("intersect<time> <part-of-day>", -3.9473901492654373),
("yearintersect", -2.991878704238001),
("day-of-week<time-of-day> - <time-of-day> (interval)",
-4.458215773031428),
("time-of-day<duration> ago", -4.863680881139593),
("this <cycle>day-of-week", -4.458215773031428),
("intersecttime-of-day", -4.458215773031428),
("monthhour", -2.991878704238001),
("intersectlast <time>", -4.863680881139593),
("dayday", -3.9473901492654373),
("hourhour", -2.917770732084279),
-4.897839799950911),
("intersectam|pm <time-of-day>", -4.492374691842747),
("hournograin", -4.897839799950911),
("intersect<time> <part-of-day>", -3.9815490680767565),
("yearintersect", -3.02603762304932),
("time-of-day<duration> ago", -4.897839799950911),
("intersecttime-of-day", -4.492374691842747),
("monthhour", -3.02603762304932),
("intersectlast <time>", -4.897839799950911),
("dayday", -3.9815490680767565),
("hourhour", -2.951929650895598),
("month<datetime> - <datetime> (interval)",
-3.9473901492654373),
("dayam|pm <time-of-day>", -4.458215773031428),
("day-of-weekam|pm <time-of-day>", -4.863680881139593),
("hourminute", -4.1705337005796475),
-3.9815490680767565),
("dayam|pm <time-of-day>", -4.492374691842747),
("hourminute", -4.204692619390966),
("Thursdayhh:mm", -4.492374691842747),
("<time-of-day> - <time-of-day> (interval)last <time>",
-3.9473901492654373),
("intersectday", -4.458215773031428),
("<datetime> - <datetime> (interval)day", -3.9473901492654373),
("month<time> <part-of-day>", -4.458215773031428),
("yearmonth", -4.458215773031428),
("dayminute", -4.458215773031428),
("<time> <part-of-day><date>\50640", -4.863680881139593),
("last <time>time-of-day", -4.863680881139593),
("monthintersect", -3.3596034843633182),
("year<time> <part-of-day>", -4.458215773031428),
("intersectintersect", -3.6109179126442243),
("weekday", -4.458215773031428),
-3.9815490680767565),
("intersectday", -4.492374691842747),
("Thursdayintersect", -4.897839799950911),
("this <cycle>Monday", -4.492374691842747),
("<datetime> - <datetime> (interval)day", -3.9815490680767565),
("month<time> <part-of-day>", -4.492374691842747),
("Thursday<time-of-day> - <time-of-day> (interval)",
-4.492374691842747),
("yearmonth", -4.492374691842747),
("Fridayafter <time-of-day>", -4.897839799950911),
("dayminute", -4.492374691842747),
("<time> <part-of-day><date>\50640", -4.897839799950911),
("last <time>time-of-day", -4.897839799950911),
("monthintersect", -3.3937624031746374),
("year<time> <part-of-day>", -4.492374691842747),
("intersectintersect", -3.6450768314555435),
("weekday", -4.492374691842747),
("intersectday with korean number - \51068\51068..\44396\51068",
-4.458215773031428),
("day<time> <part-of-day>", -4.863680881139593),
("yearday", -3.765068592471483),
("day-of-weekhh:mm", -4.458215773031428),
-4.492374691842747),
("day<time> <part-of-day>", -4.897839799950911),
("yearday", -3.7992275112828016),
("Thursdayam|pm <time-of-day>", -4.897839799950911),
("<time-of-day> - <time-of-day> (interval)time-of-day",
-4.458215773031428),
("intersectafter <time-of-day>", -3.3596034843633182),
-4.492374691842747),
("intersectafter <time-of-day>", -3.3937624031746374),
("<time> <part-of-day><hour-of-day> <integer> (as relative minutes)",
-4.458215773031428),
("dayintersect", -4.863680881139593),
("mm/ddafter <time-of-day>", -4.863680881139593),
("todayafter <time-of-day>", -4.863680881139593)],
-4.492374691842747),
("dayintersect", -4.897839799950911),
("mm/ddafter <time-of-day>", -4.897839799950911),
("todayafter <time-of-day>", -4.897839799950911)],
n = 94}}),
("year (grain)",
Classifier{okData =
@ -325,6 +352,13 @@ classifiers
ClassData{prior = -0.42488319396526597,
unseen = -2.9444389791664407,
likelihoods = HashMap.fromList [("", 0.0)], n = 17}}),
("Saturday",
Classifier{okData =
ClassData{prior = 0.0, unseen = -1.3862943611198906,
likelihoods = HashMap.fromList [("", 0.0)], n = 2},
koData =
ClassData{prior = -infinity, unseen = -0.6931471805599453,
likelihoods = HashMap.fromList [], n = 0}}),
("next <cycle>",
Classifier{okData =
ClassData{prior = -0.12516314295400605,
@ -351,14 +385,15 @@ classifiers
n = 2}}),
("this <day-of-week>",
Classifier{okData =
ClassData{prior = 0.0, unseen = -2.3978952727983707,
ClassData{prior = 0.0, unseen = -2.5649493574615367,
likelihoods =
HashMap.fromList
[("day", -0.6931471805599453),
("day-of-week", -0.6931471805599453)],
[("Wednesday", -1.791759469228055),
("Monday", -1.3862943611198906), ("day", -0.8754687373538999),
("Tuesday", -1.791759469228055)],
n = 4},
koData =
ClassData{prior = -infinity, unseen = -1.0986122886681098,
ClassData{prior = -infinity, unseen = -1.6094379124341003,
likelihoods = HashMap.fromList [], n = 0}}),
("yyyy-mm-dd",
Classifier{okData =
@ -403,6 +438,13 @@ classifiers
koData =
ClassData{prior = -infinity, unseen = -0.6931471805599453,
likelihoods = HashMap.fromList [], n = 0}}),
("Monday",
Classifier{okData =
ClassData{prior = 0.0, unseen = -2.1972245773362196,
likelihoods = HashMap.fromList [("", 0.0)], n = 7},
koData =
ClassData{prior = -infinity, unseen = -0.6931471805599453,
likelihoods = HashMap.fromList [], n = 0}}),
("yesterday",
Classifier{okData =
ClassData{prior = 0.0, unseen = -1.3862943611198906,
@ -522,6 +564,13 @@ classifiers
ClassData{prior = 0.0, unseen = -2.1972245773362196,
likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
n = 7}}),
("Friday",
Classifier{okData =
ClassData{prior = 0.0, unseen = -1.6094379124341003,
likelihoods = HashMap.fromList [("", 0.0)], n = 3},
koData =
ClassData{prior = -infinity, unseen = -0.6931471805599453,
likelihoods = HashMap.fromList [], n = 0}}),
("in|during the <part-of-day>",
Classifier{okData =
ClassData{prior = 0.0, unseen = -1.6094379124341003,
@ -593,6 +642,13 @@ classifiers
koData =
ClassData{prior = 0.0, unseen = -1.9459101490553135,
likelihoods = HashMap.fromList [("", 0.0)], n = 5}}),
("Sunday",
Classifier{okData =
ClassData{prior = 0.0, unseen = -2.0794415416798357,
likelihoods = HashMap.fromList [("", 0.0)], n = 6},
koData =
ClassData{prior = -infinity, unseen = -0.6931471805599453,
likelihoods = HashMap.fromList [], n = 0}}),
("afternoon",
Classifier{okData =
ClassData{prior = -0.2876820724517809,
@ -903,9 +959,8 @@ classifiers
ClassData{prior = -2.833213344056216, unseen = -3.1780538303479458,
likelihoods =
HashMap.fromList
[("day", -2.03688192726104), ("hour", -2.03688192726104),
("week-end", -2.03688192726104),
("day-of-week", -2.03688192726104)],
[("day", -2.03688192726104), ("Sunday", -2.03688192726104),
("hour", -2.03688192726104), ("week-end", -2.03688192726104)],
n = 4},
koData =
ClassData{prior = -6.0624621816434854e-2,
@ -1041,7 +1096,7 @@ classifiers
likelihoods =
HashMap.fromList
[("day", -1.3862943611198906), ("month", -1.3862943611198906),
("day-of-week", -1.3862943611198906)],
("Tuesday", -1.3862943611198906)],
n = 2},
koData =
ClassData{prior = -1.0986122886681098,
@ -1202,6 +1257,13 @@ classifiers
("<hour-of-day> <integer> (as relative minutes)",
-1.6094379124341003)],
n = 2}}),
("Tuesday",
Classifier{okData =
ClassData{prior = 0.0, unseen = -2.4849066497880004,
likelihoods = HashMap.fromList [("", 0.0)], n = 10},
koData =
ClassData{prior = -infinity, unseen = -0.6931471805599453,
likelihoods = HashMap.fromList [], n = 0}}),
("New Year's Day",
Classifier{okData =
ClassData{prior = 0.0, unseen = -1.3862943611198906,
@ -1432,13 +1494,6 @@ classifiers
koData =
ClassData{prior = -infinity, unseen = -1.9459101490553135,
likelihoods = HashMap.fromList [], n = 0}}),
("day-of-week",
Classifier{okData =
ClassData{prior = 0.0, unseen = -3.7376696182833684,
likelihoods = HashMap.fromList [("", 0.0)], n = 40},
koData =
ClassData{prior = -infinity, unseen = -0.6931471805599453,
likelihoods = HashMap.fromList [], n = 0}}),
("within <duration>",
Classifier{okData =
ClassData{prior = 0.0, unseen = -1.6094379124341003,

View File

@ -58,6 +58,17 @@ ruleSeasons = mkRuleSeasons
, ( "Spring" , "" , monthDay 3 20, monthDay 6 21 )
]
ruleDaysOfWeek :: [Rule]
ruleDaysOfWeek = mkRuleDaysOfWeek
[ ( "Monday" , "월(요일|욜)" )
, ( "Tuesday" , "화(요일|욜)" )
, ( "Wednesday" , "수(요일|욜)" )
, ( "Thursday" , "목(요일|욜)" )
, ( "Friday" , "금(요일|욜)" )
, ( "Saturday" , "토(요일|욜)" )
, ( "Sunday" , "일(요일|욜)" )
]
ruleNamedday :: Rule
ruleNamedday = Rule
{ name = "<named-day>에"
@ -335,25 +346,6 @@ ruleTheDayBeforeYesterday = Rule
tt . cycleNthAfter False TG.Day (-1) $ cycleNth TG.Day (-1)
}
ruleDayofweek :: Rule
ruleDayofweek = Rule
{ name = "day-of-week"
, pattern =
[ regex "(월|화|수|목|금|토|일)(요일|욜)"
]
, prod = \tokens -> case tokens of
(Token RegexMatch (GroupMatch (match:_)):_) -> case match of
"" -> tt $ dayOfWeek 1
"" -> tt $ dayOfWeek 2
"" -> tt $ dayOfWeek 3
"" -> tt $ dayOfWeek 4
"" -> tt $ dayOfWeek 5
"" -> tt $ dayOfWeek 6
"" -> tt $ dayOfWeek 7
_ -> Nothing
_ -> Nothing
}
ruleNextCycle :: Rule
ruleNextCycle = Rule
{ name = "next <cycle>"
@ -1157,7 +1149,6 @@ rules =
, ruleDay
, ruleDayWithKoreanNumeral
, ruleDayWithKoreanNumeral2
, ruleDayofweek
, ruleDurationAgo
, ruleDurationFromNow
, ruleEndOfTime
@ -1228,3 +1219,4 @@ rules =
]
++ ruleHolidays
++ ruleSeasons
++ ruleDaysOfWeek