{-# LANGUAGE TypeFamilies #-} -- | The 'Date' module provides the API for the Javascript @Date@ -- object. The API documentation is mainly taken from -- w3schools (). -- Deprecated methods are not supported. module Language.Sunroof.JS.Date ( JSDate , newDate , getHours, getMinutes, getSeconds , getDate, getDay, getFullYear , getMilliseconds, getMonth , getTime, getTimezoneOffset , getUTCDate, getUTCDay, getUTCFullYear , getUTCHours, getUTCMilliseconds , getUTCMinutes, getUTCMonth, getUTCSeconds , parseDate , setDate, setFullYear, setHours , setMilliseconds, setMinutes, setMonth , setSeconds, setTime , setUTCDate, setUTCFullYear, setUTCHours , setUTCMilliseconds, setUTCMinutes, setUTCMonth , setUTCSeconds, toDateString , toISOString, toJSON , toLocaleDateString, toLocaleTimeString , toLocaleString, toString , toTimeString, toUTCString ) where import Data.Boolean ( BooleanOf, IfB(..), EqB(..) ) import Language.Sunroof.Classes ( Sunroof(..), SunroofArgument(..) ) import Language.Sunroof.Types ( JS, invoke, new, cast ) import Language.Sunroof.JS.Object ( JSObject ) import Language.Sunroof.JS.Number ( JSNumber ) import Language.Sunroof.JS.String ( JSString ) import Language.Sunroof.JS.Bool ( JSBool, jsIfB ) -- ------------------------------------------------------------- -- JSDate Type -- ------------------------------------------------------------- -- | The type of a date object. newtype JSDate = JSDate JSObject -- | Show the Javascript. instance Show JSDate where show (JSDate o) = show o -- | First-class values in Javascript. instance Sunroof JSDate where box = JSDate . box unbox (JSDate o) = unbox o -- | Associated boolean is 'JSBool'. type instance BooleanOf JSDate = JSBool -- | Can be returned in branches. instance IfB JSDate where ifB = jsIfB -- | Reference equality, not value equality. instance EqB JSDate where (JSDate a) ==* (JSDate b) = a ==* b -- ------------------------------------------------------------- -- JSDate Methods -- ------------------------------------------------------------- -- | Creates a new @Date@ object. -- See: newDate :: (SunroofArgument a) => a -> JS t JSDate newDate args = cast `fmap` new "Date" args -- | Returns the hour (from 0-23). -- See: getHours :: JSDate -> JS t JSNumber getHours = invoke "getHours" () -- | Returns the minutes (from 0-59). -- See: getMinutes :: JSDate -> JS t JSNumber getMinutes = invoke "getMinutes" () -- | Returns the seconds (from 0-59). -- See: getSeconds :: JSDate -> JS t JSNumber getSeconds = invoke "getSeconds" () -- | Returns the day of the month (from 1-31). -- See: getDate :: JSDate -> JS t JSNumber getDate = invoke "getDate" () -- | Returns the day of the week (from 0-6). -- See: getDay :: JSDate -> JS t JSNumber getDay = invoke "getDay" () -- | Returns the year (four digits). -- See: getFullYear :: JSDate -> JS t JSNumber getFullYear = invoke "getFullYear" () -- | Returns the milliseconds (from 0-999). -- See: getMilliseconds :: JSDate -> JS t JSNumber getMilliseconds = invoke "getMilliseconds" () -- | Returns the month (from 0-11). -- See: getMonth :: JSDate -> JS t JSNumber getMonth = invoke "getMonth" () -- | Returns the number of milliseconds since midnight Jan 1, 1970. -- See: getTime :: JSDate -> JS t JSNumber getTime = invoke "getTime" () -- | Returns the time difference between UTC time and local time, in minutes. -- See: getTimezoneOffset :: JSDate -> JS t JSNumber getTimezoneOffset = invoke "getTimezoneOffset" () -- | Returns the day of the month, according to universal time (from 1-31). -- See: getUTCDate :: JSDate -> JS t JSNumber getUTCDate = invoke "getUTCDate" () -- | Returns the day of the week, according to universal time (from 0-6). -- See: getUTCDay :: JSDate -> JS t JSNumber getUTCDay = invoke "getUTCDay" () -- | Returns the year, according to universal time (four digits). -- See: getUTCFullYear :: JSDate -> JS t JSNumber getUTCFullYear = invoke "getUTCFullYear" () -- | Returns the hour, according to universal time (from 0-23). -- See: getUTCHours :: JSDate -> JS t JSNumber getUTCHours = invoke "getUTCHours" () -- | Returns the milliseconds, according to universal time (from 0-999). -- See: getUTCMilliseconds :: JSDate -> JS t JSNumber getUTCMilliseconds = invoke "getUTCMilliseconds" () -- | Returns the minutes, according to universal time (from 0-59). -- See: getUTCMinutes :: JSDate -> JS t JSNumber getUTCMinutes = invoke "getUTCMinutes" () -- | Returns the month, according to universal time (from 0-11). -- See: getUTCMonth :: JSDate -> JS t JSNumber getUTCMonth = invoke "getUTCMonth" () -- | Returns the seconds, according to universal time (from 0-59). -- See: getUTCSeconds :: JSDate -> JS t JSNumber getUTCSeconds = invoke "getUTCSeconds" () -- | Parses a date string and returns the number of milliseconds -- since midnight of January 1, 1970. -- See: parseDate :: JSString -> JSDate -> JS t JSNumber parseDate str = invoke "parse" str -- | Sets the day of the month of a date object. -- See: setDate :: JSNumber -> JSDate -> JS t () setDate n = invoke "setDate" n -- | Sets the year (four digits) of a date object. -- See: setFullYear :: JSNumber -> JSDate -> JS t () setFullYear n = invoke "setFullYear" n -- | Sets the hour of a date object. -- See: setHours :: JSNumber -> JSDate -> JS t () setHours n = invoke "setHours" n -- | Sets the milliseconds of a date object. -- See: setMilliseconds :: JSNumber -> JSDate -> JS t () setMilliseconds n = invoke "setMilliseconds" n -- | Set the minutes of a date object. -- See: setMinutes :: JSNumber -> JSDate -> JS t () setMinutes n = invoke "setMinutes" n -- | Sets the month of a date object. -- See: setMonth :: JSNumber -> JSDate -> JS t () setMonth n = invoke "setMonth" n -- | Sets the seconds of a date object. -- See: setSeconds :: JSNumber -> JSDate -> JS t () setSeconds n = invoke "setSeconds" n -- | Sets a date and time by adding or subtracting a specified number -- of milliseconds to/from midnight January 1, 1970. -- See: setTime :: JSNumber -> JSDate -> JS t () setTime n = invoke "setTime" n -- | Sets the day of the month of a date object, according to universal time. -- See: setUTCDate :: JSNumber -> JSDate -> JS t () setUTCDate n = invoke "setUTCDate" n -- | Sets the year of a date object, according to universal time (four digits). -- See: setUTCFullYear :: JSNumber -> JSDate -> JS t () setUTCFullYear n = invoke "setUTCFullYear" n -- | Sets the hour of a date object, according to universal time. -- See: setUTCHours :: JSNumber -> JSDate -> JS t () setUTCHours n = invoke "setUTCHours" n -- | Sets the milliseconds of a date object, according to universal time. -- See: setUTCMilliseconds :: JSNumber -> JSDate -> JS t () setUTCMilliseconds n = invoke "setUTCMilliseconds" n -- | Set the minutes of a date object, according to universal time. -- See: setUTCMinutes :: JSNumber -> JSDate -> JS t () setUTCMinutes n = invoke "setUTCMinutes" n -- | Sets the month of a date object, according to universal time. -- See: setUTCMonth :: JSNumber -> JSDate -> JS t () setUTCMonth n = invoke "setUTCMonth" n -- | Set the seconds of a date object, according to universal time. -- See: setUTCSeconds :: JSNumber -> JSDate -> JS t () setUTCSeconds n = invoke "setUTCSeconds" n -- | Converts the date portion of a Date object into a readable string. -- See: toDateString :: JSDate -> JS t JSString toDateString = invoke "toDateString" () -- | Returns the date as a string, using the ISO standard. -- See: toISOString :: JSDate -> JS t JSString toISOString = invoke "toISOString" () -- | Returns the date as a string, formated as a JSON date. -- See: toJSON :: JSDate -> JS t JSString toJSON = invoke "toJSON" () -- | Returns the date portion of a Date object as a string, -- using locale conventions. -- See: toLocaleDateString :: JSDate -> JS t JSString toLocaleDateString = invoke "toLocaleDateString" () -- | Returns the time portion of a Date object as a string, -- using locale conventions. -- See: toLocaleTimeString :: JSDate -> JS t JSString toLocaleTimeString = invoke "toLocaleTimeString" () -- | Converts a Date object to a string, using locale conventions. -- See: toLocaleString :: JSDate -> JS t JSString toLocaleString = invoke "toLocaleString" () -- | Converts a Date object to a string. -- See: toString :: JSDate -> JS t JSString toString = invoke "toString" () -- | Converts the time portion of a Date object to a string. -- See: toTimeString :: JSDate -> JS t JSString toTimeString = invoke "toTimeString" () -- | Converts a Date object to a string, according to universal time. -- See: toUTCString :: JSDate -> JS t JSString toUTCString = invoke "toUTCString" ()