[
    {
        "name": "Date.Utils",
        "comment": " Date Utils.\n\n## Date parsing\n@docs fromString\n\n**Be careful with unsafeFromString it will Debug.crash() if it cant parse date.**\n@docs unsafeFromString\n\n## Utility\n@docs dayList\n@docs isoWeek\n@docs isoWeekOne\n\nCopyright (c) 2016 Robin Luiten\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "dayList",
                "comment": " Return a list of days dayLength long for successive days\nstarting from startDate.\n",
                "type": "Int -> Date -> List Date"
            },
            {
                "name": "fromString",
                "comment": " Elm Date.fromString suffers from the some of the same javascript unusual\ncompensation of input ranges when converting strings to Dates.\n\nThis method makes some known undesirable no Err results return Err.\n\nExample produces `Ok \"2012-03-02\"` in javascript\n```\n  aDate = (Date.fromString \"2012-02-31\")\n```\n\ncheckDateResult tries to catch and mark as Err some of these cases.\n",
                "type": "String -> Result String Date"
            },
            {
                "name": "isoWeek",
                "comment": " Return iso week values year, week, isoDayOfWeek. ",
                "type": "Date -> ( Int, Int, Int )"
            },
            {
                "name": "isoWeekOne",
                "comment": " Return date of start of week one for year. ",
                "type": "Int -> Date"
            },
            {
                "name": "unsafeFromString",
                "comment": " Utility for known input string date creation cases.\nChecks for a fail just in case and calls Debug.crash().\n",
                "type": "String -> Date"
            }
        ],
        "binops": []
    },
    {
        "name": "Date.Floor",
        "comment": " Reduce a date to a given granularity this is similar in concept\nto floor on Float so was named the same.\n\nThis allows you to modify a date to reset to minimum values\nall values below a given granulasiry.\n\nExample `Floor.floor Hour date` will return a modified date with\n* Minutes to 0\n* Seconds to 0\n* Milliseconds to 0\n\n@docs floor\n@docs Floor\n\nCopyright (c) 2016 Robin Luiten\n",
        "unions": [
            {
                "name": "Floor",
                "comment": " Date granularity of operations. ",
                "args": [],
                "cases": [
                    [
                        "Millisecond",
                        []
                    ],
                    [
                        "Second",
                        []
                    ],
                    [
                        "Minute",
                        []
                    ],
                    [
                        "Hour",
                        []
                    ],
                    [
                        "Day",
                        []
                    ],
                    [
                        "Month",
                        []
                    ],
                    [
                        "Year",
                        []
                    ]
                ]
            }
        ],
        "aliases": [],
        "values": [
            {
                "name": "floor",
                "comment": " Floor date by reducing to minimum value all values below given granularity.\n\nThis floors in local time zone values, as the date element parts\nare pulled straight from the local time zone date values.\n",
                "type": "Floor -> Date -> Date"
            }
        ],
        "binops": []
    },
    {
        "name": "Date.Format",
        "comment": " Date Format, turning dates into strings.\n\nThe format code originally came from and was modified and extended from.\nhttps://github.com/mgold/elm-date-format/blob/1.0.4/src/Date/Format.elm\n\n## Notes\n* formatUtc and formatOffset are very new and not well tested.\n* hackDateAsUtc and hackDateAsOffset not sure should be exposed.\n\n## Date presentation\n@docs format\n@docs formatUtc\n@docs formatOffset\n\n## Extra presentation convenience\n@docs isoString\n@docs utcIsoString\n\n## Low level formats used in specific places in library.\n@docs isoDateString\n@docs utcIsoDateString\n\n## Useful strings for format\n@docs isoFormat\n@docs isoMsecFormat\n@docs isoOffsetFormat\n@docs isoMsecOffsetFormat\n@docs isoDateFormat\n@docs isoTimeFormat\n\nCopyright (c) 2016 Robin Luiten\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "format",
                "comment": " Use a format string to format a date.\nThis gets time zone offset from provided date.\n",
                "type": "Config -> String -> Date -> String"
            },
            {
                "name": "formatOffset",
                "comment": " This adjusts date for offset, and renders with the offset ",
                "type": "Config -> Int -> String -> Date -> String"
            },
            {
                "name": "formatUtc",
                "comment": " Convert date to utc then format it with offset set to 0 if rendered. ",
                "type": "Config -> String -> Date -> String"
            },
            {
                "name": "isoDateFormat",
                "comment": " ISO Date. ",
                "type": "String"
            },
            {
                "name": "isoDateString",
                "comment": " Return date as string.\n\nLow level routine required by areas like checkDateResult to avoid\nrecursive loops in Format.format.\n",
                "type": "Date -> String"
            },
            {
                "name": "isoFormat",
                "comment": " ISO date time, 24hr. ",
                "type": "String"
            },
            {
                "name": "isoMsecFormat",
                "comment": " ISO Date time with milliseconds, 24hr. ",
                "type": "String"
            },
            {
                "name": "isoMsecOffsetFormat",
                "comment": " ISO Date time with milliseconds and timezone, 24hr. ",
                "type": "String"
            },
            {
                "name": "isoOffsetFormat",
                "comment": " ISO Date time with timezone, 24hr. ",
                "type": "String"
            },
            {
                "name": "isoString",
                "comment": " Return date and time as string in local zone. ",
                "type": "Date -> String"
            },
            {
                "name": "isoTimeFormat",
                "comment": " ISO Time 24hr. ",
                "type": "String"
            },
            {
                "name": "utcIsoDateString",
                "comment": " Utc variant of isoDateString.\n\nLow level routine required by areas like checkDateResult to avoid\nrecursive loops in Format.format.\n",
                "type": "Date -> String"
            },
            {
                "name": "utcIsoString",
                "comment": " Return date and time as string in ISO form with Z for UTC offset. ",
                "type": "Date -> String"
            }
        ],
        "binops": []
    },
    {
        "name": "Date.Duration",
        "comment": " A Duration is time period that may vary with with calendar and time.\n\nName of type concept copied from NodaTime.\n\n@docs add\n@docs firstOfTheMonth\n@docs Duration\n\nCopyright (c) 2016 Robin Luiten\n",
        "unions": [
            {
                "name": "Duration",
                "comment": " A Duration is time period that may vary with with calendar and time.\n\nName of type copied from NodaTime.\n",
                "args": [],
                "cases": [
                    [
                        "Millisecond",
                        []
                    ],
                    [
                        "Second",
                        []
                    ],
                    [
                        "Minute",
                        []
                    ],
                    [
                        "Hour",
                        []
                    ],
                    [
                        "Day",
                        []
                    ],
                    [
                        "Week",
                        []
                    ],
                    [
                        "Month",
                        []
                    ],
                    [
                        "Year",
                        []
                    ]
                ]
            }
        ],
        "aliases": [],
        "values": [
            {
                "name": "add",
                "comment": " Add duration * count to date. ",
                "type": "Duration -> Int -> Date -> Date"
            },
            {
                "name": "firstOfTheMonth",
                "comment": " Return first of month for year of date adjusted to given month. ",
                "type": "Date -> Month -> Date"
            }
        ],
        "binops": []
    },
    {
        "name": "Date.Config.Config_en_au",
        "comment": " This is the default english config for formatting dates.\n\n@docs config\n\nCopyright (c) 2016 Robin Luiten\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "config",
                "comment": " Config for en-au ",
                "type": "Config"
            }
        ],
        "binops": []
    },
    {
        "name": "Date.Config.Config_en_us",
        "comment": " This is the default english config for formatting dates.\n\n@docs config\n\nCopyright (c) 2016 Robin Luiten\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "config",
                "comment": " Config for en-us ",
                "type": "Config"
            }
        ],
        "binops": []
    },
    {
        "name": "Date.Period",
        "comment": " Period is a fixed length of time.\n\nName of type concept copied from NodaTime.\n\nThis module has no concept of Months or Years which have variable lenghts of time.\nFor that see Duration.\n\n@docs add\n@docs diff\n@docs Period\n@docs DeltaRecord\n@docs zeroDelta\n\nCopyright (c) 2016 Robin Luiten\n",
        "unions": [
            {
                "name": "Period",
                "comment": " A Period.\n\nWeek is a convenience for users if they want to use it, it does\njust scale Day in functionality so is not strictly required.\n\nDELTARECORD values are multiplied addend on application.\n",
                "args": [],
                "cases": [
                    [
                        "Millisecond",
                        []
                    ],
                    [
                        "Second",
                        []
                    ],
                    [
                        "Minute",
                        []
                    ],
                    [
                        "Hour",
                        []
                    ],
                    [
                        "Day",
                        []
                    ],
                    [
                        "Week",
                        []
                    ],
                    [
                        "Delta",
                        [
                            "DeltaRecord"
                        ]
                    ]
                ]
            }
        ],
        "aliases": [
            {
                "name": "DeltaRecord",
                "comment": " A multi granularity period delta. ",
                "args": [],
                "type": "{ week : Int, day : Int, hour : Int, minute : Int, second : Int, millisecond : Int }"
            }
        ],
        "values": [
            {
                "name": "add",
                "comment": " Add Period count to date. ",
                "type": "Period -> Int -> Date -> Date"
            },
            {
                "name": "diff",
                "comment": " Return a Period representing date difference. date1 - date2.\n\nIf  you add the result of this function to date2 with addend of 1\nwill return date1.\n ",
                "type": "Date -> Date -> Period"
            },
            {
                "name": "zeroDelta",
                "comment": " All zero delta.\nUseful as a starting point if you want to set a few fields only.\n",
                "type": "DeltaRecord"
            }
        ],
        "binops": []
    },
    {
        "name": "Date.Create",
        "comment": " Create dates and offsets.\n\n@docs makeDateTicks\n@docs getTimezoneOffset\n\nCopyright (c) 2016 Robin Luiten\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "getTimezoneOffset",
                "comment": " Return the time zone offset of current javascript environment underneath\nElm in Minutes. This should produce the same result getTimezoneOffset()\nfor a given date in the same javascript VM.\n\nTime zone offset is always for a given date and time so an input date is required.\n\nGiven that timezones change (though slowly) this is not strictly pure, but\nI suspect it is sufficiently pure. Is is dependent on the timezone mechanics\nof the javascript VM.\n\n\n### Example zone stuff.\nFor an offset of -600 minutes, in +10:00 time zone offset.\n\nIn javascript date parsing of \"1970-01-01T00:00:00Z\" produces a\njavascript localised date.\n\nConverting this date to a string in javascript\n* toISOString()  produces \"1970-01-01T00:00:00.000Z\"\n* toLocalString() produces \"01/01/1970, 10:00:00\"\n\nThe 10 in hours field due to the +10:00 offset.\nThats how the time zone offset can be figured out, by creating the date\nusing makeDateTicks\n\nThe offset is picked up in Elm using makeDateTicks which creates a\nUTC date in ticks from the fields pulled from the date we want to\ncompare with.\n",
                "type": "Date -> Int"
            },
            {
                "name": "makeDateTicks",
                "comment": " Return raw epoch ticks since Unix epoch for given date.\nResult can be positive or negative.\nUnix epoch. Thursday, 1 January 1970 at 00:00:00.000 in UTC is 0 ticks.\n\nThis can be fed to Date.fromTime to create a time, but be careful this\nfunction does nothing about time zone offsets so you may not get you\nwould expect.\n\nTODO ? not sure should pass in Date as source of the parameters, it is\nmissleading as to whats doing the work this way I think. It also means\nthe date offset has an impact...\n",
                "type": "Date -> Int"
            }
        ],
        "binops": []
    },
    {
        "name": "Date.I18n.I_en_us",
        "comment": " English values for day and month names.\n\n@docs dayShort\n@docs dayName\n@docs monthShort\n@docs monthName\n\nCopyright (c) 2016 Robin Luiten\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "dayName",
                "comment": " Day full name. ",
                "type": "Day -> String"
            },
            {
                "name": "dayShort",
                "comment": " Day short name. ",
                "type": "Day -> String"
            },
            {
                "name": "monthName",
                "comment": " Month full name. ",
                "type": "Month -> String"
            },
            {
                "name": "monthShort",
                "comment": " Month short name. ",
                "type": "Month -> String"
            }
        ],
        "binops": []
    },
    {
        "name": "Date.Config",
        "comment": " Date configuration.\n\nFor i18n for day and month names.\nParameter to Format.format* functions.\n\nThere is scope to put in some default format strings here.\n\n@docs Config\n\nCopyright (c) 2016 Robin Luiten\n",
        "unions": [],
        "aliases": [
            {
                "name": "Config",
                "comment": " Configuration for formatting dates. ",
                "args": [],
                "type": "{ i18n : { dayShort : Day -> String, dayName : Day -> String, monthShort : Month -> String, monthName : Month -> String }, format : { date : String, time : String, datetime : String } }"
            }
        ],
        "values": [],
        "binops": []
    },
    {
        "name": "Date.Core",
        "comment": " Date core.\n\n## Info\n@docs monthToInt\n@docs daysInMonth\n@docs monthList\n@docs daysInNextMonth\n@docs daysInPrevMonth\n@docs daysInMonthDate\n@docs isLeapYear\n@docs isLeapYearDate\n@docs yearToDayLength\n@docs isoDayOfWeek\n\n## Utility\n@docs toFirstOfMonth\n@docs firstOfNextMonthDate\n@docs lastOfMonthDate\n@docs lastOfPrevMonthDate\n@docs daysBackToStartOfWeek\n\n## Conversion\n@docs fromTime\n@docs toTime\n\n## Iteration Utility\n@docs nextDay\n@docs prevDay\n@docs nextMonth\n@docs prevMonth\n\n## Date constants\n@docs epochDateStr\n\n## Date constants\n@docs ticksAMillisecond\n@docs ticksASecond\n@docs ticksAMinute\n@docs ticksAnHour\n@docs ticksADay\n@docs ticksAWeek\n\nCopyright (c) 2016 Robin Luiten\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "daysBackToStartOfWeek",
                "comment": " Days back to start of week day. ",
                "type": "Day -> Day -> Int"
            },
            {
                "name": "daysInMonth",
                "comment": " Return days in month for year month. ",
                "type": "Int -> Month -> Int"
            },
            {
                "name": "daysInMonthDate",
                "comment": " Days in month for given date. ",
                "type": "Date -> Int"
            },
            {
                "name": "daysInNextMonth",
                "comment": " Return days in next calendar month. ",
                "type": "Date -> Int"
            },
            {
                "name": "daysInPrevMonth",
                "comment": " Return days in previous calendar month. ",
                "type": "Date -> Int"
            },
            {
                "name": "epochDateStr",
                "comment": " Epoch starting point for tick 0. ",
                "type": "String"
            },
            {
                "name": "firstOfNextMonthDate",
                "comment": " Return first of next month date. ",
                "type": "Date -> Date"
            },
            {
                "name": "fromTime",
                "comment": " Convenience fromTime as time ticks are Elm Ints in this library. ",
                "type": "Int -> Date"
            },
            {
                "name": "isLeapYear",
                "comment": " Return True if Year is a leap year. ",
                "type": "Int -> Bool"
            },
            {
                "name": "isLeapYearDate",
                "comment": " Return True if Year of Date is a leap year. ",
                "type": "Date -> Bool"
            },
            {
                "name": "isoDayOfWeek",
                "comment": " Return the Iso DayOfWeek Monday 1, to Sunday 7. ",
                "type": "Day -> Int"
            },
            {
                "name": "lastOfMonthDate",
                "comment": " Resturn date of last day of month. ",
                "type": "Date -> Date"
            },
            {
                "name": "lastOfPrevMonthDate",
                "comment": " Return last of previous month date. ",
                "type": "Date -> Date"
            },
            {
                "name": "monthList",
                "comment": " List of months in order from Jan to Dec. ",
                "type": "List Month"
            },
            {
                "name": "monthToInt",
                "comment": " Return month as integer. Jan = 1 to Dec = 12. ",
                "type": "Month -> Int"
            },
            {
                "name": "nextDay",
                "comment": " Return next day in calendar sequence. ",
                "type": "Day -> Day"
            },
            {
                "name": "nextMonth",
                "comment": " Return next month in calendar sequence. ",
                "type": "Month -> Month"
            },
            {
                "name": "prevDay",
                "comment": " Return previous day in calendar sequence. ",
                "type": "Day -> Day"
            },
            {
                "name": "prevMonth",
                "comment": " Return previous month in calendar sequence. ",
                "type": "Month -> Month"
            },
            {
                "name": "ticksADay",
                "comment": " Ticks in a day. ",
                "type": "Int"
            },
            {
                "name": "ticksAMillisecond",
                "comment": " Ticks in a millisecond. (this is 1 on Win 7 in Chrome) ",
                "type": "Int"
            },
            {
                "name": "ticksAMinute",
                "comment": " Ticks in a minute. ",
                "type": "Int"
            },
            {
                "name": "ticksASecond",
                "comment": " Ticks in a second. ",
                "type": "Int"
            },
            {
                "name": "ticksAWeek",
                "comment": " Ticks in a week. ",
                "type": "Int"
            },
            {
                "name": "ticksAnHour",
                "comment": " Ticks in an hour. ",
                "type": "Int"
            },
            {
                "name": "toFirstOfMonth",
                "comment": " Return date of first of month. ",
                "type": "Date -> Date"
            },
            {
                "name": "toTime",
                "comment": " Convenience toTime as time ticks are Elm Ints in this library. ",
                "type": "Date -> Int"
            },
            {
                "name": "yearToDayLength",
                "comment": " Return number of days in a year. ",
                "type": "Int -> Int"
            }
        ],
        "binops": []
    }
]