[PATCH 13/16] cal: stop trimming whitespaces

Sami Kerola
2013-05-02T18:52:30Z

Remove trailing spaces from output it is trivial

cal | sed 's/ *$//'

but padding them back is difficult.

CC: Pádraig Brady <P@draigbrady.com>
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
---
misc-utils/cal.c | 17 ---
tests/expected/cal/1m | 48 ++++----
tests/expected/cal/3m | 48 ++++----
tests/expected/cal/highlight | 72 ++++++------
tests/expected/cal/sep1752 | 264 +++++++++++++++++++++----------------------
tests/expected/cal/year | 240 +++++++++++++++++++--------------------
6 files changed, 336 insertions(+), 353 deletions(-)

diff --git a/misc-utils/cal.c b/misc-utils/cal.c
index d88fc2e..f4fb898 100644
--- a/misc-utils/cal.c
+++ b/misc-utils/cal.c
@@ -246,7 +246,6 @@ void yearly(int, int, int);
void do_monthly(int, int, int, struct fmt_st*);
void monthly(int, int, int);
void monthly3(int, int, int);
-void trim_trailing_spaces(char *);
static void __attribute__ ((__noreturn__)) usage(FILE * out);
void headers_init(int);

@@ -517,7 +516,6 @@ do_monthly(int day, int month, int year, struct fmt_st *out) {
p = ascii_day(p, xd);
}
*p = '\0';
- trim_trailing_spaces(lineout);
snprintf(out->s[row+2], FMT_ST_CHARS, "%s", lineout);
if (has_hl)
Hrow = out->s[row+2];
@@ -641,7 +639,6 @@ yearly(int day, int year, int julian) {
p += sprintf(p, " ");
}
*p = '\0';
- trim_trailing_spaces(lineout);
my_putstring(lineout);
my_putstring("\n");
}
@@ -767,20 +764,6 @@ ascii_day(char *p, int day) {
return p;
}

-void
-trim_trailing_spaces(char *s)
-{
- char *p;
-
- for (p = s; *p; ++p)
- continue;
- while (p > s && isspace(*--p))
- continue;
- if (p > s)
- ++p;
- *p = '\0';
-}
-
/*
* Center string, handling multibyte characters appropriately.
* In addition if the string is too large for the width it's truncated.
diff --git a/tests/expected/cal/1m b/tests/expected/cal/1m
index f657875..afe7f71 100644
--- a/tests/expected/cal/1m
+++ b/tests/expected/cal/1m
@@ -2,36 +2,36 @@
Gregorian - Monday-based week
September 2006
Mo Tu We Th Fr Sa Su
- 1 2 3
- 4 5 6 7 8 9 10
-11 12 13 14 15 16 17
-18 19 20 21 22 23 24
-25 26 27 28 29 30
-
+ 1 2 3
+ 4 5 6 7 8 9 10
+11 12 13 14 15 16 17
+18 19 20 21 22 23 24
+25 26 27 28 29 30
+
Gregorian - Sunday-based week
September 2006
Su Mo Tu We Th Fr Sa
- 1 2
- 3 4 5 6 7 8 9
-10 11 12 13 14 15 16
-17 18 19 20 21 22 23
-24 25 26 27 28 29 30
-
+ 1 2
+ 3 4 5 6 7 8 9
+10 11 12 13 14 15 16
+17 18 19 20 21 22 23
+24 25 26 27 28 29 30
+
Julian - Monday-based week
September 2006
Mon Tue Wed Thu Fri Sat Sun
- 244 245 246
-247 248 249 250 251 252 253
-254 255 256 257 258 259 260
-261 262 263 264 265 266 267
-268 269 270 271 272 273
-
+ 244 245 246
+247 248 249 250 251 252 253
+254 255 256 257 258 259 260
+261 262 263 264 265 266 267
+268 269 270 271 272 273
+
Julian - Sunday-based week
September 2006
Sun Mon Tue Wed Thu Fri Sat
- 244 245
-246 247 248 249 250 251 252
-253 254 255 256 257 258 259
-260 261 262 263 264 265 266
-267 268 269 270 271 272 273
-
+ 244 245
+246 247 248 249 250 251 252
+253 254 255 256 257 258 259
+260 261 262 263 264 265 266
+267 268 269 270 271 272 273
+
diff --git a/tests/expected/cal/3m b/tests/expected/cal/3m
index ba9657d..b6334ff 100644
--- a/tests/expected/cal/3m
+++ b/tests/expected/cal/3m
@@ -2,36 +2,36 @@
Gregorian - Monday-based week
August 2006 September 2006 October 2006
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
- 1 2 3 4 5 6 1 2 3 1
- 7 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 8
-14 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 15
-21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22
-28 29 30 31 25 26 27 28 29 30 23 24 25 26 27 28 29
- 30 31
+ 1 2 3 4 5 6 1 2 3 1
+ 7 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 8
+14 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 15
+21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22
+28 29 30 31 25 26 27 28 29 30 23 24 25 26 27 28 29
+ 30 31
Gregorian - Sunday-based week
August 2006 September 2006 October 2006
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
- 1 2 3 4 5 1 2 1 2 3 4 5 6 7
- 6 7 8 9 10 11 12 3 4 5 6 7 8 9 8 9 10 11 12 13 14
-13 14 15 16 17 18 19 10 11 12 13 14 15 16 15 16 17 18 19 20 21
-20 21 22 23 24 25 26 17 18 19 20 21 22 23 22 23 24 25 26 27 28
-27 28 29 30 31 24 25 26 27 28 29 30 29 30 31
-
+ 1 2 3 4 5 1 2 1 2 3 4 5 6 7
+ 6 7 8 9 10 11 12 3 4 5 6 7 8 9 8 9 10 11 12 13 14
+13 14 15 16 17 18 19 10 11 12 13 14 15 16 15 16 17 18 19 20 21
+20 21 22 23 24 25 26 17 18 19 20 21 22 23 22 23 24 25 26 27 28
+27 28 29 30 31 24 25 26 27 28 29 30 29 30 31
+
Julian - Monday-based week
August 2006 September 2006 October 2006
Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun
- 213 214 215 216 217 218 244 245 246 274
-219 220 221 222 223 224 225 247 248 249 250 251 252 253 275 276 277 278 279 280 281
-226 227 228 229 230 231 232 254 255 256 257 258 259 260 282 283 284 285 286 287 288
-233 234 235 236 237 238 239 261 262 263 264 265 266 267 289 290 291 292 293 294 295
-240 241 242 243 268 269 270 271 272 273 296 297 298 299 300 301 302
- 303 304
+ 213 214 215 216 217 218 244 245 246 274
+219 220 221 222 223 224 225 247 248 249 250 251 252 253 275 276 277 278 279 280 281
+226 227 228 229 230 231 232 254 255 256 257 258 259 260 282 283 284 285 286 287 288
+233 234 235 236 237 238 239 261 262 263 264 265 266 267 289 290 291 292 293 294 295
+240 241 242 243 268 269 270 271 272 273 296 297 298 299 300 301 302
+ 303 304
Julian - Sunday-based week
August 2006 September 2006 October 2006
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
- 213 214 215 216 217 244 245 274 275 276 277 278 279 280
-218 219 220 221 222 223 224 246 247 248 249 250 251 252 281 282 283 284 285 286 287
-225 226 227 228 229 230 231 253 254 255 256 257 258 259 288 289 290 291 292 293 294
-232 233 234 235 236 237 238 260 261 262 263 264 265 266 295 296 297 298 299 300 301
-239 240 241 242 243 267 268 269 270 271 272 273 302 303 304
-
+ 213 214 215 216 217 244 245 274 275 276 277 278 279 280
+218 219 220 221 222 223 224 246 247 248 249 250 251 252 281 282 283 284 285 286 287
+225 226 227 228 229 230 231 253 254 255 256 257 258 259 288 289 290 291 292 293 294
+232 233 234 235 236 237 238 260 261 262 263 264 265 266 295 296 297 298 299 300 301
+239 240 241 242 243 267 268 269 270 271 272 273 302 303 304
+
diff --git a/tests/expected/cal/highlight b/tests/expected/cal/highlight
index 7fa8304..26b0899 100644
--- a/tests/expected/cal/highlight
+++ b/tests/expected/cal/highlight
@@ -2,54 +2,54 @@
First day
January 1
Su Mo Tu We Th Fr Sa
- ^[[7m 1^[[27m
- 2 3 4 5 6 7 8
- 9 10 11 12 13 14 15
-16 17 18 19 20 21 22
-23 24 25 26 27 28 29
-30 31
+ ^[[7m 1^[[27m
+ 2 3 4 5 6 7 8
+ 9 10 11 12 13 14 15
+16 17 18 19 20 21 22
+23 24 25 26 27 28 29
+30 31
Reformation corner cases 1
September 1752
Su Mo Tu We Th Fr Sa
- 1 ^[[7m 2^[[27m 14 15 16
-17 18 19 20 21 22 23
-24 25 26 27 28 29 30
-
-
-
+ 1 ^[[7m 2^[[27m 14 15 16
+17 18 19 20 21 22 23
+24 25 26 27 28 29 30
+
+
+
Reformation corner cases 2
September 1752
Su Mo Tu We Th Fr Sa
- 1 2 14 15 16
-17 18 19 20 21 22 23
-24 25 26 27 28 29 30
-
-
-
+ 1 2 14 15 16
+17 18 19 20 21 22 23
+24 25 26 27 28 29 30
+
+
+
Reformation corner cases 3
September 1752
Su Mo Tu We Th Fr Sa
- 1 2 14 15 16
-17 18 19 20 21 22 23
-24 25 26 27 28 29 30
-
-
-
+ 1 2 14 15 16
+17 18 19 20 21 22 23
+24 25 26 27 28 29 30
+
+
+
Reformation corner cases 4
September 1752
Su Mo Tu We Th Fr Sa
- 1 2 ^[[7m14^[[27m 15 16
-17 18 19 20 21 22 23
-24 25 26 27 28 29 30
-
-
-
+ 1 2 ^[[7m14^[[27m 15 16
+17 18 19 20 21 22 23
+24 25 26 27 28 29 30
+
+
+
Last day
November 9999 December 9999 January 10000
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
- 1 2 3 4 5 6 1 2 3 4 1
- 7 8 9 10 11 12 13 5 6 7 8 9 10 11 2 3 4 5 6 7 8
-14 15 16 17 18 19 20 12 13 14 15 16 17 18 9 10 11 12 13 14 15
-21 22 23 24 25 26 27 19 20 21 22 23 24 25 16 17 18 19 20 21 22
-28 29 30 26 27 28 29 30 ^[[7m31^[[27m 23 24 25 26 27 28 29
- 30 31
+ 1 2 3 4 5 6 1 2 3 4 1
+ 7 8 9 10 11 12 13 5 6 7 8 9 10 11 2 3 4 5 6 7 8
+14 15 16 17 18 19 20 12 13 14 15 16 17 18 9 10 11 12 13 14 15
+21 22 23 24 25 26 27 19 20 21 22 23 24 25 16 17 18 19 20 21 22
+28 29 30 26 27 28 29 30 ^[[7m31^[[27m 23 24 25 26 27 28 29
+ 30 31
diff --git a/tests/expected/cal/sep1752 b/tests/expected/cal/sep1752
index b718fa0..0b12e49 100644
--- a/tests/expected/cal/sep1752
+++ b/tests/expected/cal/sep1752
@@ -2,197 +2,197 @@
Gregorian - Monday-based month
September 1752
Mo Tu We Th Fr Sa Su
- 1 2 14 15 16 17
-18 19 20 21 22 23 24
-25 26 27 28 29 30
-
-
-
+ 1 2 14 15 16 17
+18 19 20 21 22 23 24
+25 26 27 28 29 30
+
+
+
Gregorian - Sunday-based month
September 1752
Su Mo Tu We Th Fr Sa
- 1 2 14 15 16
-17 18 19 20 21 22 23
-24 25 26 27 28 29 30
-
-
-
+ 1 2 14 15 16
+17 18 19 20 21 22 23
+24 25 26 27 28 29 30
+
+
+
Julian - Monday-based month
September 1752
Mon Tue Wed Thu Fri Sat Sun
- 245 246 258 259 260 261
-262 263 264 265 266 267 268
-269 270 271 272 273 274
-
-
-
+ 245 246 258 259 260 261
+262 263 264 265 266 267 268
+269 270 271 272 273 274
+
+
+
Julian - Sunday-based month
September 1752
Sun Mon Tue Wed Thu Fri Sat
- 245 246 258 259 260
-261 262 263 264 265 266 267
-268 269 270 271 272 273 274
-
-
-
+ 245 246 258 259 260
+261 262 263 264 265 266 267
+268 269 270 271 272 273 274
+
+
+
Gregorian - Monday-based three months
August 1752 September 1752 October 1752
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
- 1 2 1 2 14 15 16 17 1
- 3 4 5 6 7 8 9 18 19 20 21 22 23 24 2 3 4 5 6 7 8
-10 11 12 13 14 15 16 25 26 27 28 29 30 9 10 11 12 13 14 15
-17 18 19 20 21 22 23 16 17 18 19 20 21 22
-24 25 26 27 28 29 30 23 24 25 26 27 28 29
-31 30 31
+ 1 2 1 2 14 15 16 17 1
+ 3 4 5 6 7 8 9 18 19 20 21 22 23 24 2 3 4 5 6 7 8
+10 11 12 13 14 15 16 25 26 27 28 29 30 9 10 11 12 13 14 15
+17 18 19 20 21 22 23 16 17 18 19 20 21 22
+24 25 26 27 28 29 30 23 24 25 26 27 28 29
+31 30 31
Gregorian - Sunday-based three months
August 1752 September 1752 October 1752
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
- 1 1 2 14 15 16 1 2 3 4 5 6 7
- 2 3 4 5 6 7 8 17 18 19 20 21 22 23 8 9 10 11 12 13 14
- 9 10 11 12 13 14 15 24 25 26 27 28 29 30 15 16 17 18 19 20 21
-16 17 18 19 20 21 22 22 23 24 25 26 27 28
-23 24 25 26 27 28 29 29 30 31
-30 31
+ 1 1 2 14 15 16 1 2 3 4 5 6 7
+ 2 3 4 5 6 7 8 17 18 19 20 21 22 23 8 9 10 11 12 13 14
+ 9 10 11 12 13 14 15 24 25 26 27 28 29 30 15 16 17 18 19 20 21
+16 17 18 19 20 21 22 22 23 24 25 26 27 28
+23 24 25 26 27 28 29 29 30 31
+30 31
Julian - Monday-based three months
August 1752 September 1752 October 1752
Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun
- 214 215 245 246 258 259 260 261 275
-216 217 218 219 220 221 222 262 263 264 265 266 267 268 276 277 278 279 280 281 282
-223 224 225 226 227 228 229 269 270 271 272 273 274 283 284 285 286 287 288 289
-230 231 232 233 234 235 236 290 291 292 293 294 295 296
-237 238 239 240 241 242 243 297 298 299 300 301 302 303
-244 304 305
+ 214 215 245 246 258 259 260 261 275
+216 217 218 219 220 221 222 262 263 264 265 266 267 268 276 277 278 279 280 281 282
+223 224 225 226 227 228 229 269 270 271 272 273 274 283 284 285 286 287 288 289
+230 231 232 233 234 235 236 290 291 292 293 294 295 296
+237 238 239 240 241 242 243 297 298 299 300 301 302 303
+244 304 305
Julian - Sunday-based three months
August 1752 September 1752 October 1752
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
- 214 245 246 258 259 260 275 276 277 278 279 280 281
-215 216 217 218 219 220 221 261 262 263 264 265 266 267 282 283 284 285 286 287 288
-222 223 224 225 226 227 228 268 269 270 271 272 273 274 289 290 291 292 293 294 295
-229 230 231 232 233 234 235 296 297 298 299 300 301 302
-236 237 238 239 240 241 242 303 304 305
-243 244
+ 214 245 246 258 259 260 275 276 277 278 279 280 281
+215 216 217 218 219 220 221 261 262 263 264 265 266 267 282 283 284 285 286 287 288
+222 223 224 225 226 227 228 268 269 270 271 272 273 274 289 290 291 292 293 294 295
+229 230 231 232 233 234 235 296 297 298 299 300 301 302
+236 237 238 239 240 241 242 303 304 305
+243 244
Gregorian - Monday-based year
1752

January February March
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
- 1 2 3 4 5 1 2 1
- 6 7 8 9 10 11 12 3 4 5 6 7 8 9 2 3 4 5 6 7 8
-13 14 15 16 17 18 19 10 11 12 13 14 15 16 9 10 11 12 13 14 15
-20 21 22 23 24 25 26 17 18 19 20 21 22 23 16 17 18 19 20 21 22
-27 28 29 30 31 24 25 26 27 28 29 23 24 25 26 27 28 29
- 30 31
+ 1 2 3 4 5 1 2 1
+ 6 7 8 9 10 11 12 3 4 5 6 7 8 9 2 3 4 5 6 7 8
+13 14 15 16 17 18 19 10 11 12 13 14 15 16 9 10 11 12 13 14 15
+20 21 22 23 24 25 26 17 18 19 20 21 22 23 16 17 18 19 20 21 22
+27 28 29 30 31 24 25 26 27 28 29 23 24 25 26 27 28 29
+ 30 31
April May June
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
- 1 2 3 4 5 1 2 3 1 2 3 4 5 6 7
- 6 7 8 9 10 11 12 4 5 6 7 8 9 10 8 9 10 11 12 13 14
-13 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 21
-20 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 28
-27 28 29 30 25 26 27 28 29 30 31 29 30
-
+ 1 2 3 4 5 1 2 3 1 2 3 4 5 6 7
+ 6 7 8 9 10 11 12 4 5 6 7 8 9 10 8 9 10 11 12 13 14
+13 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 21
+20 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 28
+27 28 29 30 25 26 27 28 29 30 31 29 30
+
July August September
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
- 1 2 3 4 5 1 2 1 2 14 15 16 17
- 6 7 8 9 10 11 12 3 4 5 6 7 8 9 18 19 20 21 22 23 24
-13 14 15 16 17 18 19 10 11 12 13 14 15 16 25 26 27 28 29 30
-20 21 22 23 24 25 26 17 18 19 20 21 22 23
-27 28 29 30 31 24 25 26 27 28 29 30
- 31
+ 1 2 3 4 5 1 2 1 2 14 15 16 17
+ 6 7 8 9 10 11 12 3 4 5 6 7 8 9 18 19 20 21 22 23 24
+13 14 15 16 17 18 19 10 11 12 13 14 15 16 25 26 27 28 29 30
+20 21 22 23 24 25 26 17 18 19 20 21 22 23
+27 28 29 30 31 24 25 26 27 28 29 30
+ 31
October November December
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
- 1 1 2 3 4 5 1 2 3
- 2 3 4 5 6 7 8 6 7 8 9 10 11 12 4 5 6 7 8 9 10
- 9 10 11 12 13 14 15 13 14 15 16 17 18 19 11 12 13 14 15 16 17
-16 17 18 19 20 21 22 20 21 22 23 24 25 26 18 19 20 21 22 23 24
-23 24 25 26 27 28 29 27 28 29 30 25 26 27 28 29 30 31
-30 31
+ 1 1 2 3 4 5 1 2 3
+ 2 3 4 5 6 7 8 6 7 8 9 10 11 12 4 5 6 7 8 9 10
+ 9 10 11 12 13 14 15 13 14 15 16 17 18 19 11 12 13 14 15 16 17
+16 17 18 19 20 21 22 20 21 22 23 24 25 26 18 19 20 21 22 23 24
+23 24 25 26 27 28 29 27 28 29 30 25 26 27 28 29 30 31
+30 31

Gregorian - Sunday-based year
1752

January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
- 1 2 3 4 1 1 2 3 4 5 6 7
- 5 6 7 8 9 10 11 2 3 4 5 6 7 8 8 9 10 11 12 13 14
-12 13 14 15 16 17 18 9 10 11 12 13 14 15 15 16 17 18 19 20 21
-19 20 21 22 23 24 25 16 17 18 19 20 21 22 22 23 24 25 26 27 28
-26 27 28 29 30 31 23 24 25 26 27 28 29 29 30 31
-
+ 1 2 3 4 1 1 2 3 4 5 6 7
+ 5 6 7 8 9 10 11 2 3 4 5 6 7 8 8 9 10 11 12 13 14
+12 13 14 15 16 17 18 9 10 11 12 13 14 15 15 16 17 18 19 20 21
+19 20 21 22 23 24 25 16 17 18 19 20 21 22 22 23 24 25 26 27 28
+26 27 28 29 30 31 23 24 25 26 27 28 29 29 30 31
+
April May June
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
- 1 2 3 4 1 2 1 2 3 4 5 6
- 5 6 7 8 9 10 11 3 4 5 6 7 8 9 7 8 9 10 11 12 13
-12 13 14 15 16 17 18 10 11 12 13 14 15 16 14 15 16 17 18 19 20
-19 20 21 22 23 24 25 17 18 19 20 21 22 23 21 22 23 24 25 26 27
-26 27 28 29 30 24 25 26 27 28 29 30 28 29 30
- 31
+ 1 2 3 4 1 2 1 2 3 4 5 6
+ 5 6 7 8 9 10 11 3 4 5 6 7 8 9 7 8 9 10 11 12 13
+12 13 14 15 16 17 18 10 11 12 13 14 15 16 14 15 16 17 18 19 20
+19 20 21 22 23 24 25 17 18 19 20 21 22 23 21 22 23 24 25 26 27
+26 27 28 29 30 24 25 26 27 28 29 30 28 29 30
+ 31
July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
- 1 2 3 4 1 1 2 14 15 16
- 5 6 7 8 9 10 11 2 3 4 5 6 7 8 17 18 19 20 21 22 23
-12 13 14 15 16 17 18 9 10 11 12 13 14 15 24 25 26 27 28 29 30
-19 20 21 22 23 24 25 16 17 18 19 20 21 22
-26 27 28 29 30 31 23 24 25 26 27 28 29
- 30 31
+ 1 2 3 4 1 1 2 14 15 16
+ 5 6 7 8 9 10 11 2 3 4 5 6 7 8 17 18 19 20 21 22 23
+12 13 14 15 16 17 18 9 10 11 12 13 14 15 24 25 26 27 28 29 30
+19 20 21 22 23 24 25 16 17 18 19 20 21 22
+26 27 28 29 30 31 23 24 25 26 27 28 29
+ 30 31
October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
- 1 2 3 4 5 6 7 1 2 3 4 1 2
- 8 9 10 11 12 13 14 5 6 7 8 9 10 11 3 4 5 6 7 8 9
-15 16 17 18 19 20 21 12 13 14 15 16 17 18 10 11 12 13 14 15 16
-22 23 24 25 26 27 28 19 20 21 22 23 24 25 17 18 19 20 21 22 23
-29 30 31 26 27 28 29 30 24 25 26 27 28 29 30
- 31
+ 1 2 3 4 5 6 7 1 2 3 4 1 2
+ 8 9 10 11 12 13 14 5 6 7 8 9 10 11 3 4 5 6 7 8 9
+15 16 17 18 19 20 21 12 13 14 15 16 17 18 10 11 12 13 14 15 16
+22 23 24 25 26 27 28 19 20 21 22 23 24 25 17 18 19 20 21 22 23
+29 30 31 26 27 28 29 30 24 25 26 27 28 29 30
+ 31

Julian - Monday-based year
1752

January February
Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun
- 1 2 3 4 5 32 33
- 6 7 8 9 10 11 12 34 35 36 37 38 39 40
- 13 14 15 16 17 18 19 41 42 43 44 45 46 47
- 20 21 22 23 24 25 26 48 49 50 51 52 53 54
- 27 28 29 30 31 55 56 57 58 59 60
-
+ 1 2 3 4 5 32 33
+ 6 7 8 9 10 11 12 34 35 36 37 38 39 40
+ 13 14 15 16 17 18 19 41 42 43 44 45 46 47
+ 20 21 22 23 24 25 26 48 49 50 51 52 53 54
+ 27 28 29 30 31 55 56 57 58 59 60
+
March April
Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun
- 61 92 93 94 95 96
- 62 63 64 65 66 67 68 97 98 99 100 101 102 103
- 69 70 71 72 73 74 75 104 105 106 107 108 109 110
- 76 77 78 79 80 81 82 111 112 113 114 115 116 117
- 83 84 85 86 87 88 89 118 119 120 121
- 90 91
+ 61 92 93 94 95 96
+ 62 63 64 65 66 67 68 97 98 99 100 101 102 103
+ 69 70 71 72 73 74 75 104 105 106 107 108 109 110
+ 76 77 78 79 80 81 82 111 112 113 114 115 116 117
+ 83 84 85 86 87 88 89 118 119 120 121
+ 90 91
May June
Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun
- 122 123 124 153 154 155 156 157 158 159
-125 126 127 128 129 130 131 160 161 162 163 164 165 166
-132 133 134 135 136 137 138 167 168 169 170 171 172 173
-139 140 141 142 143 144 145 174 175 176 177 178 179 180
-146 147 148 149 150 151 152 181 182
-
+ 122 123 124 153 154 155 156 157 158 159
+125 126 127 128 129 130 131 160 161 162 163 164 165 166
+132 133 134 135 136 137 138 167 168 169 170 171 172 173
+139 140 141 142 143 144 145 174 175 176 177 178 179 180
+146 147 148 149 150 151 152 181 182
+
July August
Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun
- 183 184 185 186 187 214 215
-188 189 190 191 192 193 194 216 217 218 219 220 221 222
-195 196 197 198 199 200 201 223 224 225 226 227 228 229
-202 203 204 205 206 207 208 230 231 232 233 234 235 236
-209 210 211 212 213 237 238 239 240 241 242 243
- 244
+ 183 184 185 186 187 214 215
+188 189 190 191 192 193 194 216 217 218 219 220 221 222
+195 196 197 198 199 200 201 223 224 225 226 227 228 229
+202 203 204 205 206 207 208 230 231 232 233 234 235 236
+209 210 211 212 213 237 238 239 240 241 242 243
+ 244
September October
Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun
- 245 246 258 259 260 261 275
-262 263 264 265 266 267 268 276 277 278 279 280 281 282
-269 270 271 272 273 274 283 284 285 286 287 288 289
- 290 291 292 293 294 295 296
- 297 298 299 300 301 302 303
- 304 305
+ 245 246 258 259 260 261 275
+262 263 264 265 266 267 268 276 277 278 279 280 281 282
+269 270 271 272 273 274 283 284 285 286 287 288 289
+ 290 291 292 293 294 295 296
+ 297 298 299 300 301 302 303
+ 304 305
November December
Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun
- 306 307 308 309 310 336 337 338
-311 312 313 314 315 316 317 339 340 341 342 343 344 345
-318 319 320 321 322 323 324 346 347 348 349 350 351 352
-325 326 327 328 329 330 331 353 354 355 356 357 358 359
-332 333 334 335 360 361 362 363 364 365 366
-
+ 306 307 308 309 310 336 337 338
+311 312 313 314 315 316 317 339 340 341 342 343 344 345
+318 319 320 321 322 323 324 346 347 348 349 350 351 352
+325 326 327 328 329 330 331 353 354 355 356 357 358 359
+332 333 334 335 360 361 362 363 364 365 366
+

Julian - Sunday-based year
diff --git a/tests/expected/cal/year b/tests/expected/cal/year
index 616d61a..0fd88d3 100644
--- a/tests/expected/cal/year
+++ b/tests/expected/cal/year
@@ -4,174 +4,174 @@ Gregorian - Monday-based week

January February March
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
- 1 1 2 3 4 5 1 2 3 4 5
- 2 3 4 5 6 7 8 6 7 8 9 10 11 12 6 7 8 9 10 11 12
- 9 10 11 12 13 14 15 13 14 15 16 17 18 19 13 14 15 16 17 18 19
-16 17 18 19 20 21 22 20 21 22 23 24 25 26 20 21 22 23 24 25 26
-23 24 25 26 27 28 29 27 28 27 28 29 30 31
-30 31
+ 1 1 2 3 4 5 1 2 3 4 5
+ 2 3 4 5 6 7 8 6 7 8 9 10 11 12 6 7 8 9 10 11 12
+ 9 10 11 12 13 14 15 13 14 15 16 17 18 19 13 14 15 16 17 18 19
+16 17 18 19 20 21 22 20 21 22 23 24 25 26 20 21 22 23 24 25 26
+23 24 25 26 27 28 29 27 28 27 28 29 30 31
+30 31
April May June
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
- 1 2 1 2 3 4 5 6 7 1 2 3 4
- 3 4 5 6 7 8 9 8 9 10 11 12 13 14 5 6 7 8 9 10 11
-10 11 12 13 14 15 16 15 16 17 18 19 20 21 12 13 14 15 16 17 18
-17 18 19 20 21 22 23 22 23 24 25 26 27 28 19 20 21 22 23 24 25
-24 25 26 27 28 29 30 29 30 31 26 27 28 29 30
-
+ 1 2 1 2 3 4 5 6 7 1 2 3 4
+ 3 4 5 6 7 8 9 8 9 10 11 12 13 14 5 6 7 8 9 10 11
+10 11 12 13 14 15 16 15 16 17 18 19 20 21 12 13 14 15 16 17 18
+17 18 19 20 21 22 23 22 23 24 25 26 27 28 19 20 21 22 23 24 25
+24 25 26 27 28 29 30 29 30 31 26 27 28 29 30
+
July August September
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
- 1 2 1 2 3 4 5 6 1 2 3
- 3 4 5 6 7 8 9 7 8 9 10 11 12 13 4 5 6 7 8 9 10
-10 11 12 13 14 15 16 14 15 16 17 18 19 20 11 12 13 14 15 16 17
-17 18 19 20 21 22 23 21 22 23 24 25 26 27 18 19 20 21 22 23 24
-24 25 26 27 28 29 30 28 29 30 31 25 26 27 28 29 30
-31
+ 1 2 1 2 3 4 5 6 1 2 3
+ 3 4 5 6 7 8 9 7 8 9 10 11 12 13 4 5 6 7 8 9 10
+10 11 12 13 14 15 16 14 15 16 17 18 19 20 11 12 13 14 15 16 17
+17 18 19 20 21 22 23 21 22 23 24 25 26 27 18 19 20 21 22 23 24
+24 25 26 27 28 29 30 28 29 30 31 25 26 27 28 29 30
+31
October November December
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
- 1 1 2 3 4 5 1 2 3
- 2 3 4 5 6 7 8 6 7 8 9 10 11 12 4 5 6 7 8 9 10
- 9 10 11 12 13 14 15 13 14 15 16 17 18 19 11 12 13 14 15 16 17
-16 17 18 19 20 21 22 20 21 22 23 24 25 26 18 19 20 21 22 23 24
-23 24 25 26 27 28 29 27 28 29 30 25 26 27 28 29 30 31
-30 31
+ 1 1 2 3 4 5 1 2 3
+ 2 3 4 5 6 7 8 6 7 8 9 10 11 12 4 5 6 7 8 9 10
+ 9 10 11 12 13 14 15 13 14 15 16 17 18 19 11 12 13 14 15 16 17
+16 17 18 19 20 21 22 20 21 22 23 24 25 26 18 19 20 21 22 23 24
+23 24 25 26 27 28 29 27 28 29 30 25 26 27 28 29 30 31
+30 31

Gregorian - Sunday-based week
2006

January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
- 1 2 3 4 5 6 7 1 2 3 4 1 2 3 4
- 8 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 11
-15 16 17 18 19 20 21 12 13 14 15 16 17 18 12 13 14 15 16 17 18
-22 23 24 25 26 27 28 19 20 21 22 23 24 25 19 20 21 22 23 24 25
-29 30 31 26 27 28 26 27 28 29 30 31
-
+ 1 2 3 4 5 6 7 1 2 3 4 1 2 3 4
+ 8 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 11
+15 16 17 18 19 20 21 12 13 14 15 16 17 18 12 13 14 15 16 17 18
+22 23 24 25 26 27 28 19 20 21 22 23 24 25 19 20 21 22 23 24 25
+29 30 31 26 27 28 26 27 28 29 30 31
+
April May June
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
- 1 1 2 3 4 5 6 1 2 3
- 2 3 4 5 6 7 8 7 8 9 10 11 12 13 4 5 6 7 8 9 10
- 9 10 11 12 13 14 15 14 15 16 17 18 19 20 11 12 13 14 15 16 17
-16 17 18 19 20 21 22 21 22 23 24 25 26 27 18 19 20 21 22 23 24
-23 24 25 26 27 28 29 28 29 30 31 25 26 27 28 29 30
-30
+ 1 1 2 3 4 5 6 1 2 3
+ 2 3 4 5 6 7 8 7 8 9 10 11 12 13 4 5 6 7 8 9 10
+ 9 10 11 12 13 14 15 14 15 16 17 18 19 20 11 12 13 14 15 16 17
+16 17 18 19 20 21 22 21 22 23 24 25 26 27 18 19 20 21 22 23 24
+23 24 25 26 27 28 29 28 29 30 31 25 26 27 28 29 30
+30
July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
- 1 1 2 3 4 5 1 2
- 2 3 4 5 6 7 8 6 7 8 9 10 11 12 3 4 5 6 7 8 9
- 9 10 11 12 13 14 15 13 14 15 16 17 18 19 10 11 12 13 14 15 16
-16 17 18 19 20 21 22 20 21 22 23 24 25 26 17 18 19 20 21 22 23
-23 24 25 26 27 28 29 27 28 29 30 31 24 25 26 27 28 29 30
-30 31
+ 1 1 2 3 4 5 1 2
+ 2 3 4 5 6 7 8 6 7 8 9 10 11 12 3 4 5 6 7 8 9
+ 9 10 11 12 13 14 15 13 14 15 16 17 18 19 10 11 12 13 14 15 16
+16 17 18 19 20 21 22 20 21 22 23 24 25 26 17 18 19 20 21 22 23
+23 24 25 26 27 28 29 27 28 29 30 31 24 25 26 27 28 29 30
+30 31
October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
- 1 2 3 4 5 6 7 1 2 3 4 1 2
- 8 9 10 11 12 13 14 5 6 7 8 9 10 11 3 4 5 6 7 8 9
-15 16 17 18 19 20 21 12 13 14 15 16 17 18 10 11 12 13 14 15 16
-22 23 24 25 26 27 28 19 20 21 22 23 24 25 17 18 19 20 21 22 23
-29 30 31 26 27 28 29 30 24 25 26 27 28 29 30
- 31
+ 1 2 3 4 5 6 7 1 2 3 4 1 2
+ 8 9 10 11 12 13 14 5 6 7 8 9 10 11 3 4 5 6 7 8 9
+15 16 17 18 19 20 21 12 13 14 15 16 17 18 10 11 12 13 14 15 16
+22 23 24 25 26 27 28 19 20 21 22 23 24 25 17 18 19 20 21 22 23
+29 30 31 26 27 28 29 30 24 25 26 27 28 29 30
+ 31

Julian - Monday-based week
2006

January February
Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun
- 1 32 33 34 35 36
- 2 3 4 5 6 7 8 37 38 39 40 41 42 43
- 9 10 11 12 13 14 15 44 45 46 47 48 49 50
- 16 17 18 19 20 21 22 51 52 53 54 55 56 57
- 23 24 25 26 27 28 29 58 59
- 30 31
+ 1 32 33 34 35 36
+ 2 3 4 5 6 7 8 37 38 39 40 41 42 43
+ 9 10 11 12 13 14 15 44 45 46 47 48 49 50
+ 16 17 18 19 20 21 22 51 52 53 54 55 56 57
+ 23 24 25 26 27 28 29 58 59
+ 30 31
March April
Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun
- 60 61 62 63 64 91 92
- 65 66 67 68 69 70 71 93 94 95 96 97 98 99
- 72 73 74 75 76 77 78 100 101 102 103 104 105 106
- 79 80 81 82 83 84 85 107 108 109 110 111 112 113
- 86 87 88 89 90 114 115 116 117 118 119 120
-
+ 60 61 62 63 64 91 92
+ 65 66 67 68 69 70 71 93 94 95 96 97 98 99
+ 72 73 74 75 76 77 78 100 101 102 103 104 105 106
+ 79 80 81 82 83 84 85 107 108 109 110 111 112 113
+ 86 87 88 89 90 114 115 116 117 118 119 120
+
May June
Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun
-121 122 123 124 125 126 127 152 153 154 155
-128 129 130 131 132 133 134 156 157 158 159 160 161 162
-135 136 137 138 139 140 141 163 164 165 166 167 168 169
-142 143 144 145 146 147 148 170 171 172 173 174 175 176
-149 150 151 177 178 179 180 181
-
+121 122 123 124 125 126 127 152 153 154 155
+128 129 130 131 132 133 134 156 157 158 159 160 161 162
+135 136 137 138 139 140 141 163 164 165 166 167 168 169
+142 143 144 145 146 147 148 170 171 172 173 174 175 176
+149 150 151 177 178 179 180 181
+
July August
Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun
- 182 183 213 214 215 216 217 218
-184 185 186 187 188 189 190 219 220 221 222 223 224 225
-191 192 193 194 195 196 197 226 227 228 229 230 231 232
-198 199 200 201 202 203 204 233 234 235 236 237 238 239
-205 206 207 208 209 210 211 240 241 242 243
-212
+ 182 183 213 214 215 216 217 218
+184 185 186 187 188 189 190 219 220 221 222 223 224 225
+191 192 193 194 195 196 197 226 227 228 229 230 231 232
+198 199 200 201 202 203 204 233 234 235 236 237 238 239
+205 206 207 208 209 210 211 240 241 242 243
+212
September October
Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun
- 244 245 246 274
-247 248 249 250 251 252 253 275 276 277 278 279 280 281
-254 255 256 257 258 259 260 282 283 284 285 286 287 288
-261 262 263 264 265 266 267 289 290 291 292 293 294 295
-268 269 270 271 272 273 296 297 298 299 300 301 302
- 303 304
+ 244 245 246 274
+247 248 249 250 251 252 253 275 276 277 278 279 280 281
+254 255 256 257 258 259 260 282 283 284 285 286 287 288
+261 262 263 264 265 266 267 289 290 291 292 293 294 295
+268 269 270 271 272 273 296 297 298 299 300 301 302
+ 303 304
November December
Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun
- 305 306 307 308 309 335 336 337
-310 311 312 313 314 315 316 338 339 340 341 342 343 344
-317 318 319 320 321 322 323 345 346 347 348 349 350 351
-324 325 326 327 328 329 330 352 353 354 355 356 357 358
-331 332 333 334 359 360 361 362 363 364 365
-
+ 305 306 307 308 309 335 336 337
+310 311 312 313 314 315 316 338 339 340 341 342 343 344
+317 318 319 320 321 322 323 345 346 347 348 349 350 351
+324 325 326 327 328 329 330 352 353 354 355 356 357 358
+331 332 333 334 359 360 361 362 363 364 365
+

Julian - Sunday-based week
2006

January February
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
- 1 2 3 4 5 6 7 32 33 34 35
- 8 9 10 11 12 13 14 36 37 38 39 40 41 42
- 15 16 17 18 19 20 21 43 44 45 46 47 48 49
- 22 23 24 25 26 27 28 50 51 52 53 54 55 56
- 29 30 31 57 58 59
-
+ 1 2 3 4 5 6 7 32 33 34 35
+ 8 9 10 11 12 13 14 36 37 38 39 40 41 42
+ 15 16 17 18 19 20 21 43 44 45 46 47 48 49
+ 22 23 24 25 26 27 28 50 51 52 53 54 55 56
+ 29 30 31 57 58 59
+
March April
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
- 60 61 62 63 91
- 64 65 66 67 68 69 70 92 93 94 95 96 97 98
- 71 72 73 74 75 76 77 99 100 101 102 103 104 105
- 78 79 80 81 82 83 84 106 107 108 109 110 111 112
- 85 86 87 88 89 90 113 114 115 116 117 118 119
- 120
+ 60 61 62 63 91
+ 64 65 66 67 68 69 70 92 93 94 95 96 97 98
+ 71 72 73 74 75 76 77 99 100 101 102 103 104 105
+ 78 79 80 81 82 83 84 106 107 108 109 110 111 112
+ 85 86 87 88 89 90 113 114 115 116 117 118 119
+ 120
May June
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
- 121 122 123 124 125 126 152 153 154
-127 128 129 130 131 132 133 155 156 157 158 159 160 161
-134 135 136 137 138 139 140 162 163 164 165 166 167 168
-141 142 143 144 145 146 147 169 170 171 172 173 174 175
-148 149 150 151 176 177 178 179 180 181
-
+ 121 122 123 124 125 126 152 153 154
+127 128 129 130 131 132 133 155 156 157 158 159 160 161
+134 135 136 137 138 139 140 162 163 164 165 166 167 168
+141 142 143 144 145 146 147 169 170 171 172 173 174 175
+148 149 150 151 176 177 178 179 180 181
+
July August
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
- 182 213 214 215 216 217
-183 184 185 186 187 188 189 218 219 220 221 222 223 224
-190 191 192 193 194 195 196 225 226 227 228 229 230 231
-197 198 199 200 201 202 203 232 233 234 235 236 237 238
-204 205 206 207 208 209 210 239 240 241 242 243
-211 212
+ 182 213 214 215 216 217
+183 184 185 186 187 188 189 218 219 220 221 222 223 224
+190 191 192 193 194 195 196 225 226 227 228 229 230 231
+197 198 199 200 201 202 203 232 233 234 235 236 237 238
+204 205 206 207 208 209 210 239 240 241 242 243
+211 212
September October
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
- 244 245 274 275 276 277 278 279 280
-246 247 248 249 250 251 252 281 282 283 284 285 286 287
-253 254 255 256 257 258 259 288 289 290 291 292 293 294
-260 261 262 263 264 265 266 295 296 297 298 299 300 301
-267 268 269 270 271 272 273 302 303 304
-
+ 244 245 274 275 276 277 278 279 280
+246 247 248 249 250 251 252 281 282 283 284 285 286 287
+253 254 255 256 257 258 259 288 289 290 291 292 293 294
+260 261 262 263 264 265 266 295 296 297 298 299 300 301
+267 268 269 270 271 272 273 302 303 304
+
November December
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
- 305 306 307 308 335 336
-309 310 311 312 313 314 315 337 338 339 340 341 342 343
-316 317 318 319 320 321 322 344 345 346 347 348 349 350
-323 324 325 326 327 328 329 351 352 353 354 355 356 357
-330 331 332 333 334 358 359 360 361 362 363 364
- 365
+ 305 306 307 308 335 336
+309 310 311 312 313 314 315 337 338 339 340 341 342 343
+316 317 318 319 320 321 322 344 345 346 347 348 349 350
+323 324 325 326 327 328 329 351 352 353 354 355 356 357
+330 331 332 333 334 358 359 360 361 362 363 364
+ 365

--
1.8.2.2