2#if __GLASGOW_HASKELL__ >= 902
3{-# LANGUAGE FieldSelectors #-}
5{-# OPTIONS_GHC -Wno-name-shadowing #-}
7-- | Data fields of t'PhoneNumber' objects.
8module Data.PhoneNumber.Number
13 , preferredDomesticCarrierCode
18 , numberOfLeadingZeros
20 , CountryCodeSource(..)
23import Data.ByteString (ByteString)
24import Data.PhoneNumber.Internal.Number
25 ( CPhoneNumber(CPhoneNumber), PhoneNumber, CountryCodeSource, toCPhoneNumber
28import qualified Data.PhoneNumber.Internal.Number as I
30-- | A country calling code (International Subscriber Dialing code, ISD code),
31-- e.g. @34@ for Spain.
33-- Contrary to the name, doesn't always correspond to a unique country (e.g.
34-- @7@ could be either Russia or Kazakhstan), or a country at all, and instead a
35-- non-geographical entity (e.g. @800@ is a Universal International Freephone
36-- Service dialing code).
37newtype CountryCode = CountryCode Int
38 deriving newtype (Eq, Ord, Show, Num)
40-- | Record pattern synonym for accessing data fields of the underlying C++
41-- object. It can be used for record construction, record update, and record
42-- pattern match. See t'PhoneNumber'.
50 -> Maybe CountryCodeSource
56 , preferredDomesticCarrierCode
61 , numberOfLeadingZeros
63 <- (toCPhoneNumber -> CPhoneNumber
64 { I.nationalNumber = fromIntegral -> nationalNumber
65 , I.countryCode = fromIntegral -> CountryCode -> countryCode
66 , I.numberOfLeadingZeros = fmap fromIntegral -> numberOfLeadingZeros
69 PhoneNumber extension rawInput preferredDomesticCarrierCode
70 (fromIntegral -> nationalNumber)
71 (CountryCode (fromIntegral -> countryCode)) italianLeadingZero
72 countryCodeSource (fmap fromIntegral -> numberOfLeadingZeros)
73 = fromCPhoneNumber $ CPhoneNumber{..}
75{-# COMPLETE PhoneNumber #-}
80-- 'Data.PhoneNumber.Util.parseNumber' 'Data.PhoneNumber.Util.Canonicalize' 'Nothing' "+1 800-234-5678 ext. 1234"
81-- = 'Right' v'PhoneNumber' { 'extension' = 'Just' "1234", .. }
83extension :: PhoneNumber -> Maybe ByteString
88-- 'Data.PhoneNumber.Util.parseNumber' 'Data.PhoneNumber.Util.KeepRawInput' 'Nothing' " + 1(2-3~4*5.6 "
89-- = 'Right' v'PhoneNumber' { 'rawInput' = 'Just' " + 1(2-3~4*5.6 ", .. }
91rawInput :: PhoneNumber -> Maybe ByteString
96-- 'Data.PhoneNumber.Util.parseNumber' 'Data.PhoneNumber.Util.KeepRawInput' ('Just' \"BR\") "0 41 (21) 2345-6789"
97-- = 'Right' v'PhoneNumber' { 'preferredDomesticCarrierCode' = 'Just' "41", .. }
99preferredDomesticCarrierCode :: PhoneNumber -> Maybe ByteString
101-- | You probably want to use 'Data.PhoneNumber.Util.nationalSignificantNumber'
105-- 'Data.PhoneNumber.Util.parseNumber' 'Data.PhoneNumber.Util.Canonicalize' 'Nothing' "+800 0001 2345"
106-- = 'Right' v'PhoneNumber' { 'nationalNumber' = 12345, 'numberOfLeadingZeros' = Just 3, .. }
108nationalNumber :: PhoneNumber -> Word
113-- 'Data.PhoneNumber.Util.parseNumber' 'Data.PhoneNumber.Util.Canonicalize' ('Just' \"US\") "800-234-5678"
114-- = 'Right' v'PhoneNumber' { 'countryCode' = 1, .. }
116countryCode :: PhoneNumber -> CountryCode
121-- 'Data.PhoneNumber.Util.parseNumber' 'Data.PhoneNumber.Util.Canonicalize' 'Nothing' "+39 06 1234 5678"
122-- = 'Right' v'PhoneNumber' { 'italianLeadingZero' = 'Just' 'True', .. }
124italianLeadingZero :: PhoneNumber -> Maybe Bool
129-- 'Data.PhoneNumber.Util.parseNumber' 'Data.PhoneNumber.Util.KeepRawInput' ('Just' \"US\") "011 800 1234 5678"
130-- = 'Right' v'PhoneNumber' { 'countryCodeSource' = 'Just' 'FromNumberWithIdd', .. }
132countryCodeSource :: PhoneNumber -> Maybe CountryCodeSource
137-- 'Data.PhoneNumber.Util.parseNumber' 'Data.PhoneNumber.Util.Canonicalize' 'Nothing' "+800 0001 2345"
138-- = 'Right' v'PhoneNumber' { 'numberOfLeadingZeros' = Just 3, 'nationalNumber' = 12345, .. }
140numberOfLeadingZeros :: PhoneNumber -> Maybe Int
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list