HaskerDeux

Check-in [beb9ee5fca]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Support using "Mon", "Tue", etc aswell as "today", "tomorrow"

Works well, but not having hlint means my code is messy. Could do with a
further commit that means I can use lower case. And probably lots of tidying
up.

Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | origin/issue1 | trunk | master
Files: files | file ages | folders
SHA3-256: beb9ee5fcaec1752e860dc9edf121c719c4bf96d7ef3a70a03c4a376828eac12
User & Date: atomicules 2020-05-14 20:47:43
Context
2020-05-15
08:29
Handle any case of short day: Mon, mon, MON, etc.

Just because it'll be easier for me to use lowercase. check-in: 386fcc875a user: atomicules tags: master, origin/issue1, trunk

2020-05-14
20:47
Support using "Mon", "Tue", etc aswell as "today", "tomorrow"

Works well, but not having hlint means my code is messy. Could do with a
further commit that means I can use lower case. And probably lots of tidying
up. check-in: beb9ee5fca user: atomicules tags: master, origin/issue1, trunk

06:16
Add `nextweek` command to move todos to "next" Monday

I.e. whatever day of the week the todo is on it'll be moved to the next Monday.
I find myself doing this a fair bit and it's actually fiddly via the web
interface. I could do with figuring out handling multiple todos at once at some
point. check-in: ca6b54431e user: atomicules tags: master, origin/issue1, trunk

Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to haskerdeux.hs.

33
34
35
36
37
38
39

40
41
42
43
44



















45
46
47
48
49
50
51
main = do 
	(date:command:argList) <- getArgs
	time <- getClockTime >>= toCalendarTime --https://wiki.haskell.org/Unix_tools/Date
	let todays_date = formatCalendarTime defaultTimeLocale "%Y-%m-%d" time
	let tomorrows_date = show (addDays 1 $ read todays_date::Data.Time.Day)
	let  todos_date | date == "today" = todays_date
	                | date == "tomorrow" = tomorrows_date

	                | otherwise = date
	when ((command `elem` ["todos"] && Data.List.null argList) || (command `elem` ["new", "crossoff", "putoff", "delete", "nextweek"] && length argList == 1) || (command == "moveto" && length argList == 2)) $ do
		token <- login
		dispatch command (token, todos_date:argList)





















readnetrc = do
	home <- getHomeDirectory
	netrc <- lines Control.Applicative.<$> readFile (home ++ "/.netrc")
	let netrc' = dropWhile (not . ("teuxdeux" `isInfixOf`)) netrc
	let (username, password) = if "login" `isInfixOf` head netrc'
		-- if entry is on one line	







>





>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
main = do 
	(date:command:argList) <- getArgs
	time <- getClockTime >>= toCalendarTime --https://wiki.haskell.org/Unix_tools/Date
	let todays_date = formatCalendarTime defaultTimeLocale "%Y-%m-%d" time
	let tomorrows_date = show (addDays 1 $ read todays_date::Data.Time.Day)
	let  todos_date | date == "today" = todays_date
	                | date == "tomorrow" = tomorrows_date
	                | date `elem` ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"] = parseday (date, todays_date)
	                | otherwise = date
	when ((command `elem` ["todos"] && Data.List.null argList) || (command `elem` ["new", "crossoff", "putoff", "delete", "nextweek"] && length argList == 1) || (command == "moveto" && length argList == 2)) $ do
		token <- login
		dispatch command (token, todos_date:argList)


parseday (future_day, todays_date) = do
	let days_map = fromList
		[ ("Mon", 0)
		, ("Tue", 1)
		, ("Wed", 2)
		, ("Thu", 3)
		, ("Fri", 4)
		, ("Sat", 5)
		, ("Sun", 6)]
	
	let time_from_string = readTime defaultTimeLocale "%Y-%m-%d" todays_date::Data.Time.Day
	let todays_day = formatTime defaultTimeLocale "%a" time_from_string
	let todays_day_num = fromJust $ Data.Map.lookup todays_day days_map
	let future_day_num = fromJust $ Data.Map.lookup future_day days_map
	let days_to_add | future_day_num >= todays_day_num = future_day_num - todays_day_num
	                | otherwise = (7 + future_day_num) - todays_day_num
	show (addDays days_to_add $ read todays_date::Data.Time.Day)


readnetrc = do
	home <- getHomeDirectory
	netrc <- lines Control.Applicative.<$> readFile (home ++ "/.netrc")
	let netrc' = dropWhile (not . ("teuxdeux" `isInfixOf`)) netrc
	let (username, password) = if "login" `isInfixOf` head netrc'
		-- if entry is on one line