complete tz implementation
This commit is contained in:
parent
54b0cffd4f
commit
b7b0e506a9
4 changed files with 26 additions and 62 deletions
|
|
@ -10,6 +10,7 @@ This directory contains comprehensive documentation for rewriting wttr.in in Zig
|
|||
- Caching system
|
||||
- GeoIP database integration (libmaxminddb)
|
||||
- Location resolver with multiple input types
|
||||
- Weather provider (Met.no) with timezone-aware forecasts; core data structures use zeit.Time/zeit.Date for type-safe date/time handling
|
||||
- Output formats: ANSI, line (1-4), JSON (j1), v2 data-rich, custom (%)
|
||||
- Query parameter parsing
|
||||
- Static help pages (/:help, /:translation)
|
||||
|
|
|
|||
|
|
@ -1227,7 +1227,7 @@ test "ansi format - MetNo real data - phoenix" {
|
|||
const output = try render(allocator, weather_data, .{ .format = .ansi, .days = 3, .use_imperial = true });
|
||||
defer allocator.free(output);
|
||||
|
||||
const expected = @embedFile("../tests/metno-phoenix-tmp.ansi");
|
||||
const expected = @embedFile("../tests/metno-phoenix.ansi");
|
||||
|
||||
try std.testing.expectEqualStrings(expected, output);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,38 +0,0 @@
|
|||
Weather report: 33.4484,-112.0741
|
||||
|
||||
Cloudy
|
||||
[38;5;250m .--. [0m [38;5;154m+61(+61)[0m °F
|
||||
[38;5;250m .-( ). [0m ↘ [38;5;242m2[0m mph
|
||||
[38;5;250m (___.__)__) [0m
|
||||
0.0 in
|
||||
|
||||
┌─────────────┐
|
||||
┌──────────────────────────────┬───────────────────────┤ Sat 3 Jan ├───────────────────────┬──────────────────────────────┐
|
||||
│ Morning │ Noon └──────┬──────┘ Evening │ Night │
|
||||
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
|
||||
│ │ │ Cloudy │ Cloudy │
|
||||
│ │ │ [38;5;250m .--. [0m [38;5;154m+61(+61)[0m °F │ [38;5;250m .--. [0m [38;5;118m+59(+59)[0m °F │
|
||||
│ │ │ [38;5;250m .-( ). [0m ↘ [38;5;242m2[0m mph │ [38;5;250m .-( ). [0m ↑ [38;5;241m1[0m mph │
|
||||
│ │ │ [38;5;250m (___.__)__) [0m │ [38;5;250m (___.__)__) [0m │
|
||||
│ │ │ 0.0 in | 0% │ 0.0 in | 0% │
|
||||
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
|
||||
┌─────────────┐
|
||||
┌──────────────────────────────┬───────────────────────┤ Sun 4 Jan ├───────────────────────┬──────────────────────────────┐
|
||||
│ Morning │ Noon └──────┬──────┘ Evening │ Night │
|
||||
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
|
||||
│ [38;5;226m \ /[0m Partly cloudy │ [38;5;226m \ / [0m Clear │ [38;5;226m \ /[0m Fair │ Cloudy │
|
||||
│ [38;5;226m _ /""[38;5;250m.-. [0m [38;5;82m+50(+50)[0m °F │ [38;5;226m .-. [0m [38;5;190m+65(+65)[0m °F │ [38;5;226m _ /""[38;5;250m.-. [0m [38;5;154m+65(+65)[0m °F │ [38;5;250m .--. [0m [38;5;118m+59(+59)[0m °F │
|
||||
│ [38;5;226m \_[38;5;250m( ). [0m ↖ [38;5;242m3[0m mph │ [38;5;226m ― ( ) ― [0m ↖ [38;5;242m3[0m mph │ [38;5;226m \_[38;5;250m( ). [0m ↙ [38;5;242m3[0m mph │ [38;5;250m .-( ). [0m ↗ [38;5;241m1[0m mph │
|
||||
│ [38;5;226m /[38;5;250m(___(__) [0m │ [38;5;226m `-' [0m │ [38;5;226m /[38;5;250m(___(__) [0m │ [38;5;250m (___.__)__) [0m │
|
||||
│ 0.0 in | 0% │ [38;5;226m / \ [0m 0.0 in | 0% │ 0.0 in | 0% │ 0.0 in | 0% │
|
||||
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
|
||||
┌─────────────┐
|
||||
┌──────────────────────────────┬───────────────────────┤ Mon 5 Jan ├───────────────────────┬──────────────────────────────┐
|
||||
│ Morning │ Noon └──────┬──────┘ Evening │ Night │
|
||||
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
|
||||
│ [38;5;226m \ /[0m Partly cloudy │ [38;5;226m \ /[0m Partly cloudy │ [38;5;226m \ /[0m Partly cloudy │ Cloudy │
|
||||
│ [38;5;226m _ /""[38;5;250m.-. [0m [38;5;82m+51(+51)[0m °F │ [38;5;226m _ /""[38;5;250m.-. [0m [38;5;154m+64(+64)[0m °F │ [38;5;226m _ /""[38;5;250m.-. [0m [38;5;154m+63(+63)[0m °F │ [38;5;250m .--. [0m [38;5;118m+56(+56)[0m °F │
|
||||
│ [38;5;226m \_[38;5;250m( ). [0m ↖ [38;5;242m3[0m mph │ [38;5;226m \_[38;5;250m( ). [0m ↖ [38;5;241m2[0m mph │ [38;5;226m \_[38;5;250m( ). [0m ↓ [38;5;242m2[0m mph │ [38;5;250m .-( ). [0m ↖ [38;5;242m2[0m mph │
|
||||
│ [38;5;226m /[38;5;250m(___(__) [0m │ [38;5;226m /[38;5;250m(___(__) [0m │ [38;5;226m /[38;5;250m(___(__) [0m │ [38;5;250m (___.__)__) [0m │
|
||||
│ 0.0 in | 0% │ 0.0 in | 0% │ 0.0 in | 0% │ 0.0 in | 0% │
|
||||
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
|
||||
|
|
@ -1,37 +1,38 @@
|
|||
Weather report: 33.4484,-112.0741
|
||||
|
||||
[38;5;226m \ /[0m Partly cloudy
|
||||
[38;5;226m _ /""[38;5;250m.-. [0m [38;5;154m64[0m °F[0m
|
||||
[38;5;226m \_[38;5;250m( ). [0m [1m↘[0m [38;5;118m2[0m mph[0m
|
||||
[38;5;226m /[38;5;250m(___(__) [0m 9 mi[0m
|
||||
0.0 in[0m
|
||||
Cloudy
|
||||
[38;5;250m .--. [0m [38;5;154m+61(+61)[0m °F
|
||||
[38;5;250m .-( ). [0m ↘ [38;5;242m2[0m mph
|
||||
[38;5;250m (___.__)__) [0m
|
||||
0.0 in
|
||||
|
||||
┌─────────────┐
|
||||
┌──────────────────────────────┬───────────────────────┤ Sat 03 Jan ├───────────────────────┬──────────────────────────────┐
|
||||
┌──────────────────────────────┬───────────────────────┤ Sat 3 Jan ├───────────────────────┬──────────────────────────────┐
|
||||
│ Morning │ Noon └──────┬──────┘ Evening │ Night │
|
||||
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
|
||||
│ [38;5;226m \ / [0m Sunny │ [38;5;226m \ / [0m Sunny │ [38;5;226m \ / [0m Clear │ [38;5;226m \ / [0m Clear │
|
||||
│ [38;5;226m .-. [0m [38;5;082m53[0m °F[0m │ [38;5;226m .-. [0m [38;5;190m69[0m °F[0m │ [38;5;226m .-. [0m [38;5;226m+75[0m([38;5;220m77[0m) °F[0m │ [38;5;226m .-. [0m [38;5;154m62[0m °F[0m │
|
||||
│ [38;5;226m ― ( ) ― [0m [1m↙[0m [38;5;118m3[0m-[38;5;154m5[0m mph[0m │ [38;5;226m ― ( ) ― [0m [1m←[0m [38;5;118m3[0m-[38;5;154m4[0m mph[0m │ [38;5;226m ― ( ) ― [0m [1m↗[0m [38;5;082m1[0m mph[0m │ [38;5;226m ― ( ) ― [0m [1m↘[0m [38;5;082m1[0m-[38;5;118m3[0m mph[0m │
|
||||
│ [38;5;226m `-’ [0m 6 mi[0m │ [38;5;226m `-’ [0m 6 mi[0m │ [38;5;226m `-’ [0m 6 mi[0m │ [38;5;226m `-’ [0m 6 mi[0m │
|
||||
│ [38;5;226m / \ [0m 0.0 in | 0%[0m │ [38;5;226m / \ [0m 0.0 in | 0%[0m │ [38;5;226m / \ [0m 0.0 in | 0%[0m │ [38;5;226m / \ [0m 0.0 in | 0%[0m │
|
||||
│ │ │ Cloudy │ Cloudy │
|
||||
│ │ │ [38;5;250m .--. [0m [38;5;154m+61(+61)[0m °F │ [38;5;250m .--. [0m [38;5;118m+59(+59)[0m °F │
|
||||
│ │ │ [38;5;250m .-( ). [0m ↘ [38;5;242m2[0m mph │ [38;5;250m .-( ). [0m ↑ [38;5;241m1[0m mph │
|
||||
│ │ │ [38;5;250m (___.__)__) [0m │ [38;5;250m (___.__)__) [0m │
|
||||
│ │ │ 0.0 in | 0% │ 0.0 in | 0% │
|
||||
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
|
||||
┌─────────────┐
|
||||
┌──────────────────────────────┬───────────────────────┤ Sun 04 Jan ├───────────────────────┬──────────────────────────────┐
|
||||
┌──────────────────────────────┬───────────────────────┤ Sun 4 Jan ├───────────────────────┬──────────────────────────────┐
|
||||
│ Morning │ Noon └──────┬──────┘ Evening │ Night │
|
||||
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
|
||||
│ Cloudy │ [38;5;226m \ / [0m Sunny │ [38;5;226m \ / [0m Clear │ [38;5;226m \ / [0m Clear │
|
||||
│ [38;5;250m .--. [0m [38;5;118m55[0m °F[0m │ [38;5;226m .-. [0m [38;5;154m62[0m °F[0m │ [38;5;226m .-. [0m [38;5;190m69[0m °F[0m │ [38;5;226m .-. [0m [38;5;154m62[0m °F[0m │
|
||||
│ [38;5;250m .-( ). [0m [1m→[0m [38;5;082m1[0m-[38;5;118m3[0m mph[0m │ [38;5;226m ― ( ) ― [0m [1m↖[0m [38;5;118m3[0m mph[0m │ [38;5;226m ― ( ) ― [0m [1m→[0m [38;5;118m3[0m-[38;5;154m4[0m mph[0m │ [38;5;226m ― ( ) ― [0m [1m↑[0m [38;5;082m1[0m-[38;5;118m3[0m mph[0m │
|
||||
│ [38;5;250m (___.__)__) [0m 6 mi[0m │ [38;5;226m `-’ [0m 6 mi[0m │ [38;5;226m `-’ [0m 6 mi[0m │ [38;5;226m `-’ [0m 6 mi[0m │
|
||||
│ 0.0 in | 0%[0m │ [38;5;226m / \ [0m 0.0 in | 0%[0m │ [38;5;226m / \ [0m 0.0 in | 0%[0m │ [38;5;226m / \ [0m 0.0 in | 0%[0m │
|
||||
│ [38;5;226m \ /[0m Partly cloudy │ [38;5;226m \ / [0m Clear │ [38;5;226m \ /[0m Fair │ Cloudy │
|
||||
│ [38;5;226m _ /""[38;5;250m.-. [0m [38;5;82m+50(+50)[0m °F │ [38;5;226m .-. [0m [38;5;190m+65(+65)[0m °F │ [38;5;226m _ /""[38;5;250m.-. [0m [38;5;154m+65(+65)[0m °F │ [38;5;250m .--. [0m [38;5;118m+59(+59)[0m °F │
|
||||
│ [38;5;226m \_[38;5;250m( ). [0m ↖ [38;5;242m3[0m mph │ [38;5;226m ― ( ) ― [0m ↖ [38;5;242m3[0m mph │ [38;5;226m \_[38;5;250m( ). [0m ↙ [38;5;242m3[0m mph │ [38;5;250m .-( ). [0m ↗ [38;5;241m1[0m mph │
|
||||
│ [38;5;226m /[38;5;250m(___(__) [0m │ [38;5;226m `-' [0m │ [38;5;226m /[38;5;250m(___(__) [0m │ [38;5;250m (___.__)__) [0m │
|
||||
│ 0.0 in | 0% │ [38;5;226m / \ [0m 0.0 in | 0% │ 0.0 in | 0% │ 0.0 in | 0% │
|
||||
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
|
||||
┌─────────────┐
|
||||
┌──────────────────────────────┬───────────────────────┤ Mon 05 Jan ├───────────────────────┬──────────────────────────────┐
|
||||
┌──────────────────────────────┬───────────────────────┤ Mon 5 Jan ├───────────────────────┬──────────────────────────────┐
|
||||
│ Morning │ Noon └──────┬──────┘ Evening │ Night │
|
||||
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
|
||||
│ Overcast │ Overcast │ [38;5;226m \ / [0m Clear │ [38;5;226m \ / [0m Clear │
|
||||
│ [38;5;240;1m .--. [0m [38;5;118m59[0m °F[0m │ [38;5;240;1m .--. [0m [38;5;154m62[0m °F[0m │ [38;5;226m .-. [0m [38;5;190m66[0m °F[0m │ [38;5;226m .-. [0m [38;5;154m60[0m °F[0m │
|
||||
│ [38;5;240;1m .-( ). [0m [1m↗[0m [38;5;154m4[0m-[38;5;190m6[0m mph[0m │ [38;5;240;1m .-( ). [0m [1m↗[0m [38;5;118m2[0m-[38;5;118m3[0m mph[0m │ [38;5;226m ― ( ) ― [0m [1m→[0m [38;5;154m5[0m-[38;5;190m6[0m mph[0m │ [38;5;226m ― ( ) ― [0m [1m↘[0m [38;5;082m1[0m-[38;5;118m3[0m mph[0m │
|
||||
│ [38;5;240;1m (___.__)__) [0m 6 mi[0m │ [38;5;240;1m (___.__)__) [0m 6 mi[0m │ [38;5;226m `-’ [0m 6 mi[0m │ [38;5;226m `-’ [0m 6 mi[0m │
|
||||
│ 0.0 in | 0%[0m │ 0.0 in | 0%[0m │ [38;5;226m / \ [0m 0.0 in | 0%[0m │ [38;5;226m / \ [0m 0.0 in | 0%[0m │
|
||||
│ [38;5;226m \ /[0m Partly cloudy │ [38;5;226m \ /[0m Partly cloudy │ [38;5;226m \ /[0m Partly cloudy │ Cloudy │
|
||||
│ [38;5;226m _ /""[38;5;250m.-. [0m [38;5;82m+51(+51)[0m °F │ [38;5;226m _ /""[38;5;250m.-. [0m [38;5;154m+64(+64)[0m °F │ [38;5;226m _ /""[38;5;250m.-. [0m [38;5;154m+63(+63)[0m °F │ [38;5;250m .--. [0m [38;5;118m+56(+56)[0m °F │
|
||||
│ [38;5;226m \_[38;5;250m( ). [0m ↖ [38;5;242m3[0m mph │ [38;5;226m \_[38;5;250m( ). [0m ↖ [38;5;241m2[0m mph │ [38;5;226m \_[38;5;250m( ). [0m ↓ [38;5;242m2[0m mph │ [38;5;250m .-( ). [0m ↖ [38;5;242m2[0m mph │
|
||||
│ [38;5;226m /[38;5;250m(___(__) [0m │ [38;5;226m /[38;5;250m(___(__) [0m │ [38;5;226m /[38;5;250m(___(__) [0m │ [38;5;250m (___.__)__) [0m │
|
||||
│ 0.0 in | 0% │ 0.0 in | 0% │ 0.0 in | 0% │ 0.0 in | 0% │
|
||||
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue