Skip to content

Commit fd19782

Browse files
committed
move Lens' accessors next to record declarations
1 parent a82ab44 commit fd19782

File tree

8 files changed

+59
-64
lines changed

8 files changed

+59
-64
lines changed

src/Data/Thyme/Calendar.hs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,12 @@ module Data.Thyme.Calendar
1818
(
1919
-- * Day
2020
Day (..), modifiedJulianDay
21+
2122
-- * Calendar
2223
, Year, Month, DayOfMonth
23-
, YearMonthDay (..)
24+
, YearMonthDay (..), _ymdYear, _ymdMonth, _ymdDay
2425
, Years, Months, Days
26+
2527
-- * Gregorian calendar
2628
-- $proleptic
2729
, isLeapYear
@@ -263,9 +265,3 @@ addGregorianYearsClip n = gregorian %~ gregorianYearsClip n
263265
addGregorianYearsRollover :: Years -> Day -> Day
264266
addGregorianYearsRollover n = gregorian %~ gregorianYearsRollover n
265267

266-
-- * Lenses
267-
268-
LENS(YearMonthDay,ymdYear,Year)
269-
LENS(YearMonthDay,ymdMonth,Month)
270-
LENS(YearMonthDay,ymdDay,DayOfMonth)
271-

src/Data/Thyme/Calendar/Internal.hs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,9 @@ data OrdinalDate = OrdinalDate
230230
, odDay :: {-# UNPACK #-}!DayOfYear
231231
} deriving (INSTANCES_USUAL, Show)
232232

233+
LENS(OrdinalDate,odYear,Year)
234+
LENS(OrdinalDate,odDay,DayOfYear)
235+
233236
instance Hashable OrdinalDate
234237
instance NFData OrdinalDate
235238

@@ -367,6 +370,9 @@ data MonthDay = MonthDay
367370
, mdDay :: {-# UNPACK #-}!DayOfMonth
368371
} deriving (INSTANCES_USUAL, Show)
369372

373+
LENS(MonthDay,mdMonth,Month)
374+
LENS(MonthDay,mdDay,DayOfMonth)
375+
370376
instance Hashable MonthDay
371377
instance NFData MonthDay
372378

@@ -508,6 +514,10 @@ data WeekDate = WeekDate
508514
-- ^ /1 = Monday/ … /7 = Sunday/.
509515
} deriving (INSTANCES_USUAL, Show)
510516

517+
LENS(WeekDate,wdYear,Year)
518+
LENS(WeekDate,wdWeek,WeekOfYear)
519+
LENS(WeekDate,wdDay,DayOfWeek)
520+
511521
instance Hashable WeekDate
512522
instance NFData WeekDate
513523

@@ -594,6 +604,10 @@ data SundayWeek = SundayWeek
594604
-- ^ /0 = Sunday/.
595605
} deriving (INSTANCES_USUAL, Show)
596606

607+
LENS(SundayWeek,swYear,Year)
608+
LENS(SundayWeek,swWeek,WeekOfYear)
609+
LENS(SundayWeek,swDay,DayOfWeek)
610+
597611
instance Hashable SundayWeek
598612
instance NFData SundayWeek
599613

@@ -656,6 +670,10 @@ data MondayWeek = MondayWeek
656670
-- ^ /7 = Sunday/.
657671
} deriving (INSTANCES_USUAL, Show)
658672

673+
LENS(MondayWeek,mwYear,Year)
674+
LENS(MondayWeek,mwWeek,WeekOfYear)
675+
LENS(MondayWeek,mwDay,DayOfWeek)
676+
659677
instance Hashable MondayWeek
660678
instance NFData MondayWeek
661679

src/Data/Thyme/Calendar/MonthDay.hs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66

77
-- | Calendar months and day-of-months.
88
module Data.Thyme.Calendar.MonthDay
9-
( Month, DayOfMonth, MonthDay (..)
9+
( Month, DayOfMonth
10+
, MonthDay (..), _mdMonth, _mdDay
1011
, monthDay, monthDayValid, monthLength
1112
, module Data.Thyme.Calendar.MonthDay
1213
) where
@@ -60,8 +61,3 @@ monthAndDayToDayOfYearValid
6061
-> Maybe DayOfYear
6162
monthAndDayToDayOfYearValid leap m d = monthDayValid leap (MonthDay m d)
6263

63-
-- * Lenses
64-
65-
LENS(MonthDay,mdMonth,Month)
66-
LENS(MonthDay,mdDay,DayOfMonth)
67-

src/Data/Thyme/Calendar/OrdinalDate.hs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111
-- | ISO 8601 Ordinal Date format
1212
module Data.Thyme.Calendar.OrdinalDate
1313
( Year, isLeapYear
14-
, DayOfYear, OrdinalDate (..), ordinalDate
14+
, DayOfYear
15+
, OrdinalDate (..), _odYear, _odDay
16+
, ordinalDate
1517
, module Data.Thyme.Calendar.OrdinalDate
1618
) where
1719

@@ -166,8 +168,3 @@ fromMondayStartWeek y w d = mondayWeek # MondayWeek y w d
166168
fromMondayStartWeekValid :: Year -> WeekOfYear -> DayOfWeek -> Maybe Day
167169
fromMondayStartWeekValid y w d = mondayWeekValid (MondayWeek y w d)
168170

169-
-- * Lenses
170-
171-
LENS(OrdinalDate,odYear,Year)
172-
LENS(OrdinalDate,odDay,DayOfYear)
173-

src/Data/Thyme/Calendar/WeekDate.hs

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,17 @@
1515
module Data.Thyme.Calendar.WeekDate
1616
( Year, WeekOfYear, DayOfWeek
1717
-- * ISO 8601 Week Date
18-
, WeekDate (..), weekDate, weekDateValid, showWeekDate
18+
, WeekDate (..), _wdYear, _wdWeek, _wdDay
19+
, weekDate, weekDateValid, showWeekDate
20+
1921
-- * Weeks starting Sunday
20-
, SundayWeek (..), sundayWeek, sundayWeekValid
22+
, SundayWeek (..), _swYear, _swWeek, _swDay
23+
, sundayWeek, sundayWeekValid
24+
2125
-- * Weeks starting Monday
22-
, MondayWeek (..), mondayWeek, mondayWeekValid
26+
, MondayWeek (..), _mwYear, _mwWeek, _mwDay
27+
, mondayWeek, mondayWeekValid
28+
2329
, module Data.Thyme.Calendar.WeekDate
2430
) where
2531

@@ -115,17 +121,3 @@ fromWeekDate y w d = weekDate # WeekDate y w d
115121
fromWeekDateValid :: Year -> WeekOfYear -> DayOfWeek -> Maybe Day
116122
fromWeekDateValid y w d = weekDateValid (WeekDate y w d)
117123

118-
-- * Lenses
119-
120-
LENS(WeekDate,wdYear,Year)
121-
LENS(WeekDate,wdWeek,WeekOfYear)
122-
LENS(WeekDate,wdDay,DayOfWeek)
123-
124-
LENS(SundayWeek,swYear,Year)
125-
LENS(SundayWeek,swWeek,WeekOfYear)
126-
LENS(SundayWeek,swDay,DayOfWeek)
127-
128-
LENS(MondayWeek,mwYear,Year)
129-
LENS(MondayWeek,mwWeek,WeekOfYear)
130-
LENS(MondayWeek,mwDay,DayOfWeek)
131-

src/Data/Thyme/Calendar/WeekdayOfMonth.hs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ data WeekdayOfMonth = WeekdayOfMonth
5454
-- ^ Day of week. /1 = Monday, 7 = Sunday/, like ISO 8601 'WeekDate'.
5555
} deriving (INSTANCES_USUAL, Show)
5656

57+
LENS(WeekdayOfMonth,womYear,Year)
58+
LENS(WeekdayOfMonth,womMonth,Month)
59+
LENS(WeekdayOfMonth,womNth,Int)
60+
LENS(WeekdayOfMonth,womDayOfWeek,DayOfWeek)
61+
5762
derivingUnbox "WeekdayOfMonth"
5863
[t| WeekdayOfMonth -> Int |]
5964
[| \ WeekdayOfMonth {..} -> shiftL womYear 11 .|. shiftL womMonth 7
@@ -141,9 +146,3 @@ weekdayOfMonthValid (WeekdayOfMonth y m n wd) = (refDay .+^ s * offset)
141146
wo = s * (wd - wd1)
142147
offset = (abs n - 1) * 7 + if wo < 0 then wo + 7 else wo
143148

144-
-- * Lenses
145-
LENS(WeekdayOfMonth,womYear,Year)
146-
LENS(WeekdayOfMonth,womMonth,Month)
147-
LENS(WeekdayOfMonth,womNth,Int)
148-
LENS(WeekdayOfMonth,womDayOfWeek,DayOfWeek)
149-

src/Data/Thyme/Clock.hs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,17 @@ literals to avoid type defaulting warnings.
2323
module Data.Thyme.Clock (
2424
-- * UTC
2525
UTCTime
26+
, utctDay, utctDayTime
27+
, _utctDay, _utctDayTime
2628
#if __GLASGOW_HASKELL__ >= 708
2729
, pattern UTCTime
2830
#endif
2931
, mkUTCTime
30-
, utctDay, utctDayTime
31-
, UTCView (..)
3232
, utcTime
33+
34+
, UTCView (..), _utcvDay, _utcvDayTime
3335
, NominalDiffTime
36+
3437
, getCurrentTime
3538

3639
-- * Absolute intervals
@@ -59,10 +62,6 @@ module Data.Thyme.Clock (
5962
, diffUTCTime
6063
, toMicroseconds
6164
, fromMicroseconds
62-
63-
-- * Lenses
64-
, _utcvDay, _utcvDayTime
65-
, _utctDay, _utctDayTime
6665
) where
6766

6867
import Prelude

src/Data/Thyme/LocalTime.hs

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ data TimeZone = TimeZone
7373
-- ^ The name of the zone, typically a three- or four-letter acronym.
7474
} deriving (INSTANCES_USUAL)
7575

76+
LENS(TimeZone,timeZoneMinutes,Minutes)
77+
LENS(TimeZone,timeZoneSummerOnly,Bool)
78+
LENS(TimeZone,timeZoneName,String)
79+
7680
instance Hashable TimeZone
7781
instance NFData TimeZone
7882

@@ -182,6 +186,10 @@ data TimeOfDay = TimeOfDay
182186
, todSec :: {-# UNPACK #-}!DiffTime -- ^ Second.
183187
} deriving (INSTANCES_USUAL)
184188

189+
LENS(TimeOfDay,todHour,Hour)
190+
LENS(TimeOfDay,todMin,Minute)
191+
LENS(TimeOfDay,todSec,DiffTime)
192+
185193
derivingUnbox "TimeOfDay" [t| TimeOfDay -> Int64 |]
186194
[| \ TimeOfDay {..} -> fromIntegral (todHour .|. shiftL todMin 8)
187195
.|. shiftL (todSec ^. microseconds) 16 |]
@@ -347,6 +355,9 @@ data LocalTime = LocalTime
347355
-- ^ Local time-of-day.
348356
} deriving (INSTANCES_USUAL)
349357

358+
LENS(LocalTime,localDay,Day)
359+
LENS(LocalTime,localTimeOfDay,TimeOfDay)
360+
350361
derivingUnbox "LocalTime" [t| LocalTime -> (Day, TimeOfDay) |]
351362
[| \ LocalTime {..} -> (localDay, localTimeOfDay) |]
352363
[| \ (localDay, localTimeOfDay) -> LocalTime {..} |]
@@ -452,6 +463,9 @@ data ZonedTime = ZonedTime
452463
, zonedTimeZone :: !TimeZone
453464
} deriving (INSTANCES_USUAL)
454465

466+
LENS(ZonedTime,zonedTimeToLocalTime,LocalTime)
467+
LENS(ZonedTime,zonedTimeZone,TimeZone)
468+
455469
instance Hashable ZonedTime
456470
instance NFData ZonedTime where
457471
rnf ZonedTime {..} = rnf zonedTimeZone
@@ -655,19 +669,3 @@ utcToZonedTime z t = view zonedTime (z, t)
655669
zonedTimeToUTC :: ZonedTime -> UTCTime
656670
zonedTimeToUTC = snd . review zonedTime
657671

658-
-- * Lenses
659-
660-
LENS(TimeZone,timeZoneMinutes,Minutes)
661-
LENS(TimeZone,timeZoneSummerOnly,Bool)
662-
LENS(TimeZone,timeZoneName,String)
663-
664-
LENS(TimeOfDay,todHour,Hour)
665-
LENS(TimeOfDay,todMin,Minute)
666-
LENS(TimeOfDay,todSec,DiffTime)
667-
668-
LENS(LocalTime,localDay,Day)
669-
LENS(LocalTime,localTimeOfDay,TimeOfDay)
670-
671-
LENS(ZonedTime,zonedTimeToLocalTime,LocalTime)
672-
LENS(ZonedTime,zonedTimeZone,TimeZone)
673-

0 commit comments

Comments
 (0)