{
  "TODO": "dwudziesta/dwudziesty, etc",
  "regexEscape": "%",
  "comment": "przed ostatnimi cyframi dodałem znak '=', żeby słowo 'trzy' było zapisane jako '=trzy' - dzięki temu normalizując '=trzy' na '3' nie zamienimy 'trzy' w 'trzydzieści'",
  "rules": {
    "(1-9):00-prefixed": {
      "extract": "godzina[.]?%s+$reLT10st%s*$reZero?%s*$reZero?$",
      "normalize": "xxxx-xx-xxt0@group(0):00"
    },
    "(1-9):(1-9)-prefixed": {
      "extract": "godzina[.]?%s+$reLT10st%s+$reLT10$",
      "normalize": "xxxx-xx-xxt0@group(0):0=@group(1)"
    },
    "(1-9):0(1-9)-prefixed": {
      "extract": "godzina[.]?%s+$reLT10st%s+$reZero%s+$reLT10$",
      "normalize": "xxxx-xx-xxt0@group(0):0=@group(2)"
    },
    "(1-9):(1-5)0-prefixed": {
      "extract": "godzina[.]?%s+$reLT10st%s+$reTens$",
      "normalize": "xxxx-xx-xxt0@group(0):@group(1)0"
    },
    "(1-9):(1-5)(1-9)-prefixed": {
      "comment": "it is more (1-9):(2-5)(1-9) as ...:1(1-9) is covered in rule below; same applies to other ...:(1-5)(1-9) rules",
      "extract": "godzina[.]?%s+$reLT10st%s+$reTens%s+$reLT10$",
      "normalize": "xxxx-xx-xxt0@group(0):@group(1)=@group(2)"
    },
    "(1-9):1(1-9)-prefixed": {
      "extract": "godzina[.]?%s+$reLT10st%s+$reTeens$",
      "normalize": "xxxx-xx-xxt0@group(0):@group(1)"
    },
    "1(01):00-prefixed": {
      "extract": "godzina[.]?%s+$reTenthEleventh%s*$reZero?%s*$reZero?$",
      "normalize": "xxxx-xx-xxt@group(0):00"
    },
    "12:00-prefixed": {
      "extract": "godzina[.]?%s+$reTwelth%s*$reZero?%s*$reZero?$",
      "normalize": "xxxx-xx-xxt@group(0):00"
    },
    "1(012):(1-9)-prefixed": {
      "extract": "godzina[.]?%s+$reTenthEleventhTwelth%s+$reLT10$",
      "normalize": "xxxx-xx-xxt@group(0):0=@group(1)"
    },
    "1(012):0(1-9)-prefixed": {
      "extract": "godzina[.]?%s+$reTenthEleventhTwelth%s+$reZero%s+$reLT10$",
      "normalize": "xxxx-xx-xxt@group(0):0=@group(2)"
    },
    "1(012):(1-5)0-prefixed": {
      "extract": "godzina[.]?%s+$reTenthEleventhTwelth%s+$reTens$",
      "normalize": "xxxx-xx-xxt@group(0):@group(1)0"
    },
    "1(012):(1-5)(1-9)-prefixed": {
      "comment": "see (1-9):(1-5)(1-9)",
      "extract": "godzina[.]?%s+$reTenthEleventhTwelth%s+$reTens%s$reLT10$",
      "normalize": "xxxx-xx-xxt@group(0):@group(1)=@group(2)"
    },
    "1(012):1(1-9)-prefixed": {
      "extract": "godzina[.]?%s+$reTenthEleventhTwelth%s+$reTeens$",
      "normalize": "xxxx-xx-xxt@group(0):@group(1)"
    },
    "1(3-9):00-prefixed": {
      "extract": "godzina[.]?%s+$reTeenth%s*$reZero?%s*$reZero?$",
      "normalize": "xxxx-xx-xxT@group(0):00"
    },
    "1(3-9):(1-9)-prefixed": {
      "extract": "godzina[.]?%s+$reTeenth%s+$reLT10$",
      "normalize": "xxxx-xx-xxT@group(0):0=@group(1)"
    },
    "1(3-9):0(1-9)-prefixed": {
      "extract": "godzina[.]?%s+$reTeenth%s+$reZero%s+$reLT10$",
      "normalize": "xxxx-xx-xxT@group(0):0=@group(2)"
    },
    "1(3-9):(1-5)0-prefixed": {
      "extract": "godzina[.]?%s+$reTeenth%s+$reTens$",
      "normalize": "xxxx-xx-xxT@group(0):@group(1)0"
    },
    "1(3-9):(1-5)(1-9)-prefixed": {
      "comment": "see (1-9):(1-5)(1-9)",
      "extract": "godzina[.]?%s+$reTeenth%s+$reTens%s+$reLT10$",
      "normalize": "xxxx-xx-xxT@group(0):@group(1)=@group(2)"
    },
    "1(3-9):1(1-9)-prefixed": {
      "extract": "godzina[.]?%s+$reTeenth%s+$reTeens$",
      "normalize": "xxxx-xx-xxT@group(0):@group(1)"
    },
    "20:00-prefixed": {
      "extract": "godzina[.]?%s+$reTwentieth%s*$reZero?%s*$reZero?$",
      "normalize": "xxxx-xx-xxT@group(0)0:00"
    },
    "20:(1-9)-prefixed": {
      "extract": "godzina[.]?%s+$reTwentieth%s+$reLT10$",
      "normalize": "xxxx-xx-xxT@group(0)0:0=@group(1)"
    },
    "20:0(1-9)-prefixed": {
      "extract": "godzina[.]?%s+$reTwentieth%s+$reZero%s+$reLT10$",
      "normalize": "xxxx-xx-xxT@group(0)0:0=@group(2)"
    },
    "20:(1-5)0-prefixed": {
      "extract": "godzina[.]?%s+$reTwentieth%s+$reTens$",
      "normalize": "xxxx-xx-xxT@group(0)0:@group(1)0"
    },
    "20:(1-5)(1-9)-prefixed": {
      "comment": "see (1-9):(1-5)(1-9)",
      "extract": "godzina[.]?%s+$reTwentieth%s+$reTens%s+$reLT10$",
      "normalize": "xxxx-xx-xxT@group(0)0:@group(1)=@group(2)"
    },
    "20:1(1-9)-prefixed": {
      "extract": "godzina[.]?%s+$reTwentieth%s+$reTeens$",
      "normalize": "xxxx-xx-xxT@group(0)0:@group(1)"
    },
    "2(1-4):00-prefixed": {
      "extract": "godzina[.]?%s+$reTwentyPrefix%s+$reFirstToFourth%s*$reZero?%s*$reZero?$",
      "normalize": "xxxx-xx-xxT@group(0)@group(1):00"
    },
    "2(1-4):(1-9)-prefixed": {
      "extract": "godzina[.]?%s+$reTwentyPrefix%s+$reFirstToFourth%s+$reLT10$",
      "normalize": "xxxx-xx-xxT@group(0)@group(1):0=@group(2)"
    },
    "2(1-4):0(1-9)-prefixed": {
      "extract": "godzina[.]?%s+$reTwentyPrefix%s+$reFirstToFourth%s+%reZero%s+$reLT10$",
      "normalize": "xxxx-xx-xxT@group(0)@group(1):0=@group(3)"
    },
    "2(1-4):(1-5)0-prefixed": {
      "extract": "godzina[.]?%s+$reTwentyPrefix%s+$reFirstToFourth%s+$reTens$",
      "normalize": "xxxx-xx-xxT@group(0)@group(1):@group(2)0"
    },
    "2(1-4):(1-5)(1-9)-prefixed": {
      "comment": "see (1-9):(1-5)(1-9)",
      "extract": "godzina[.]?%s+$reTwentyPrefix%s+$reFirstToFourth%s+$reTens%s+$reLT10$",
      "normalize": "xxxx-xx-xxT@group(0)@group(1):@group(2)=@group(3)"
    },
    "2(1-4):1(1-9)-prefixed": {
      "extract": "godzina[.]?%s+$reTwentyPrefix%s+$reFirstToFourth%s+$reTeens$",
      "normalize": "xxxx-xx-xxT@group(0)@group(1):@group(2)"
    }
  },
  "comments": {
    "TODO": "zadbaj o polskie znaki i normalizacje"
  },
  "patterns": {
    "reZero": [
      "zero"
    ],
    "reLT10": [
      "jeden",
      "dwa",
      "trzy",
      "cztery",
      "pięć",
      "sześć",
      "siedem",
      "osiem",
      "dziewięć"
    ],
    "reLT10st": [
      "pierwszy",
      "drugi",
      "trzeci",
      "czwarty",
      "piąty",
      "szósty",
      "siódmy",
      "ósmy",
      "dziewiąty"
    ],
    "reEQ10": [
      "dziesięć"
    ],
    "reTenthEleventh": [
      "dziesiąty",
      "jedenasty"
    ],
    "reTenthEleventhTwelth": [
      "dziesiąty",
      "jedenasty",
      "dwunasty"
    ],
    "reTwelth": [
      "dwunasty"
    ],
    "reTens": [
      "dziesięć",
      "dwadzieścia",
      "trzydzieści",
      "czterdzieści",
      "pięćdziesiąt"
    ],
    "reTeenth": [
      "trzynasty",
      "czternasty",
      "piętnasty",
      "szesnasty",
      "siedemnasty",
      "osiemnasty",
      "dziewiętnasty"
    ],
    "reTeens": [
      "jedenaście",
      "dwanaście",
      "trzynaście",
      "czternaście",
      "piętnaście",
      "szesnaście",
      "siedemnaście",
      "osiemnaście",
      "dziewiętnaście"
    ],
    "reTwentieth": [
      "dwudziesty"
    ],
    "reTwentyPrefix": [
      "dwudziesta",
      "dwudziesty"
    ],
    "reFirstToFourth": [
      "pierwszy",
      "drugi",
      "trzeci",
      "czwarty"
    ]

  },
  "normalization": {
    "ones": {
      "=jeden": "1",
      "=dwa": "2",
      "=trzy": "3",
      "=cztery": "4",
      "=pięć": "5",
      "=sześć": "6",
      "=siedem": "7",
      "=osiem": "8",
      "=dziewięć": "9",
      "pierwszy": "1",
      "drugi": "2",
      "trzeci": "3",
      "czwarty": "4",
      "piąty": "5",
      "szósty": "6",
      "siódmy": "7",
      "ósmy": "8",
      "dziewiąty": "9"
    },
    "teens": {
      "jedenasty[:]": "11:",
      "dwunasty[:]": "12:",
      "trzynasty[:]": "13:",
      "czternasty[:]": "14:",
      "piętnasty[:]": "15:",
      "szesnasty[:]": "16:",
      "siedemnasty[:]": "17:",
      "osiemnasty[:]": "18:",
      "dziewiętnasty[:]": "19:",
      "jedenaście": "11",
      "dwanaście": "12",
      "trzynaście": "13",
      "czternaście": "14",
      "piętnaście": "15",
      "szesnaście": "16",
      "siedemnaście": "17",
      "osiemnaście": "18",
      "dziewiętnaście": "19"
    },
    "tens": {
      "dziesiąty[:]": "10:",
      "[:]dziesięć": ":1",
      "[:]dwadzieścia": ":2",
      "[:]trzydzieści": ":3",
      "[:]czterdzieści": ":4",
      "[:]pięćdziesiąt": ":5",
      "dwudziesty": "2",
      "dwudziesta[:]": "20:"
    }
  }
}