@@ -119,64 +119,69 @@ module.private = {
119119 --- @param curr_time integer
120120 --- @return table
121121 format_task_line = function (task , curr_time )
122- local task_time = os.time ({
123- year = tonumber (task .deadline .year ) or 2024 ,
124- month = tonumber (task .deadline .month ) or 8 ,
125- day = tonumber (task .deadline .day ) or 12 ,
126- })
127-
128- local is_today = (task .deadline .year - tonumber (os.date (" %Y" )) == 0 ) and
122+ local time_str = " "
123+ if task .deadline then
124+ local task_time = os.time ({
125+ year = tonumber (task .deadline .year ) or 2024 ,
126+ month = tonumber (task .deadline .month ) or 8 ,
127+ day = tonumber (task .deadline .day ) or 12 ,
128+ })
129+
130+ local is_today = (task .deadline .year - tonumber (os.date (" %Y" )) == 0 ) and
129131 (task .deadline .month - tonumber (os.date (" %m" )) == 0 ) and
130132 (task .deadline .day - tonumber (os.date (" %d" )) == 0 )
131133
132- local years_diff = nil
133- local months_diff = nil
134- local days_diff = nil
135- local time_str = " "
136- if is_today then
137- years_diff = os.date (" %Y" , curr_time ) - os.date (" %Y" , task_time )
138- months_diff = os.date (" %m" , curr_time ) - os.date (" %m" , task_time )
139- days_diff = os.date (" %d" , curr_time ) - os.date (" %d" , task_time )
140-
141- time_str = " *"
142- time_str = time_str .. " {:" .. task .filename .. " :" .. string.gsub (task .task , " %b()" , " " ) .. " }["
143- time_str = time_str .. task .deadline .hour .. " :" .. task .deadline .minute .. " ]*"
144- else
145- if task_time > curr_time then
146- years_diff = os.date (" %Y" , task_time ) - os.date (" %Y" , curr_time )
147- months_diff = os.date (" %m" , task_time ) - os.date (" %m" , curr_time )
148- days_diff = os.date (" %d" , task_time ) - os.date (" %d" , curr_time )
149- else
134+ local years_diff = nil
135+ local months_diff = nil
136+ local days_diff = nil
137+ if is_today then
150138 years_diff = os.date (" %Y" , curr_time ) - os.date (" %Y" , task_time )
151139 months_diff = os.date (" %m" , curr_time ) - os.date (" %m" , task_time )
152140 days_diff = os.date (" %d" , curr_time ) - os.date (" %d" , task_time )
153- end
154141
155- if days_diff < 0 then
156- months_diff = months_diff - 1
157- days_diff = days_diff + os.date (" %d" , os.time ({
158- year = os.date (" %Y" , task_time ),
159- month = os.date (" %m" , task_time ) + 1 ,
160- day = 0
161- }))
162- end
142+ time_str = " *"
143+ time_str = time_str .. " {:" .. task .filename .. " :" .. string.gsub (task .task , " %b()" , " " ) .. " }["
144+ time_str = time_str .. task .deadline .hour .. " :" .. task .deadline .minute .. " ]*"
145+ else
146+ if task_time > curr_time then
147+ years_diff = os.date (" %Y" , task_time ) - os.date (" %Y" , curr_time )
148+ months_diff = os.date (" %m" , task_time ) - os.date (" %m" , curr_time )
149+ days_diff = os.date (" %d" , task_time ) - os.date (" %d" , curr_time )
150+ else
151+ years_diff = os.date (" %Y" , curr_time ) - os.date (" %Y" , task_time )
152+ months_diff = os.date (" %m" , curr_time ) - os.date (" %m" , task_time )
153+ days_diff = os.date (" %d" , curr_time ) - os.date (" %d" , task_time )
154+ end
163155
164- if months_diff < 0 then
165- years_diff = years_diff - 1
166- months_diff = months_diff + 12
167- end
156+ if days_diff < 0 then
157+ months_diff = months_diff - 1
158+ days_diff = days_diff + os.date (" %d" , os.time ({
159+ year = os.date (" %Y" , task_time ),
160+ month = os.date (" %m" , task_time ) + 1 ,
161+ day = 0
162+ }))
163+ end
164+
165+ if months_diff < 0 then
166+ years_diff = years_diff - 1
167+ months_diff = months_diff + 12
168+ end
168169
169- time_str = " *{:" .. task .filename .. " :" .. string.gsub (task .task , " ^(%*+)%s*%b()%s*" , " %1 " ) .. " }["
170+ time_str = " *{:" .. task .filename .. " :" .. string.gsub (task .task , " ^(%*+)%s*%b()%s*" , " %1 " ) .. " }["
170171
171- if years_diff > 0 then
172- time_str = time_str .. years_diff .. " y"
173- end
174- if months_diff > 0 then
175- time_str = time_str .. months_diff .. " m"
176- end
177- if days_diff > 0 then
178- time_str = time_str .. days_diff .. " d]*"
172+ if years_diff > 0 then
173+ time_str = time_str .. years_diff .. " y"
174+ end
175+ if months_diff > 0 then
176+ time_str = time_str .. months_diff .. " m"
177+ end
178+ if days_diff > 0 then
179+ time_str = time_str .. days_diff .. " d]*"
180+ end
179181 end
182+ else
183+ time_str = " *"
184+ time_str = time_str .. " {:" .. task .filename .. " :" .. string.gsub (task .task , " %b()" , " " ) .. " }[" .. " unscheduled" .. " ]*"
180185 end
181186
182187 local task_state_str = " \\ [" .. task .state .. " \\ ] " .. (task .task ):match (" %)%s*(.+)" )
@@ -204,9 +209,7 @@ module.private = {
204209 insert_task_lines = function (buf_lines , header , tasks , curr_time )
205210 table.insert (buf_lines , " ** " .. header )
206211 for _ , task in ipairs (tasks ) do
207- if task .deadline then
208- table.insert (buf_lines , module .private .format_task_line (task , curr_time ))
209- end
212+ table.insert (buf_lines , module .private .format_task_line (task , curr_time ))
210213 end
211214 table.insert (buf_lines , " " )
212215 table.insert (buf_lines , " " )
0 commit comments