diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-05 09:48:13 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-05 09:48:13 -0500 |
| commit | ec00dbe1c03527ec46a0faa20545a7acd382da84 (patch) | |
| tree | 268cd3af685677808654de3f775d60d7693c83ff /tests | |
| parent | b83865a65eb744f6d36c1c672a4d83a59d6383f8 (diff) | |
| download | emacs-wttrin-ec00dbe1c03527ec46a0faa20545a7acd382da84.tar.gz emacs-wttrin-ec00dbe1c03527ec46a0faa20545a7acd382da84.zip | |
feat: add wttrin-display-options for wttr.in flag customization (closes #3)
wttr.in accepts single-character flags appended to the URL that control what the report looks like — no Follow line (F), narrow output (n), quiet mode (q), forecast horizon (0/1/2), console-glyph mode (d), and so on. Until now wttrin always used the same default report shape with no way to opt into these.
Added a `wttrin-display-options` defcustom that takes a string of concatenated flags, e.g. "0Fq" for current weather only with no Follow line and no header. The flags get appended to every request via `wttrin--build-url`. The defcustom defaults to nil so existing users see no change.
I excluded `A` and `T` from the recommended set in the docstring since wttrin needs ANSI output for the xterm-color rendering to produce the colored glyphs. The user could still pass them, but the docstring nudges them away.
Tests cover the normal cases (single, multi-flag, with and without unit system), the boundaries (nil and empty string both leave the URL unchanged from baseline, single character works), and a sanity check that the new flags slot in after the always-on `A`. Existing build-url tests stay green because they don't bind the new variable, and the default is nil.
Also added `.claude/` to .gitignore — the scheduled-tasks lockfile from local wakeup scheduling shouldn't be tracked.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test-wttrin--build-url.el | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/test-wttrin--build-url.el b/tests/test-wttrin--build-url.el index b19ede1..9bb514a 100644 --- a/tests/test-wttrin--build-url.el +++ b/tests/test-wttrin--build-url.el @@ -91,6 +91,50 @@ The @ symbol should be URL-encoded as %40." (should (string-prefix-p "https://wttr.in/" url)) (should (string-match-p "%40github\\.com" url))))) +;;; Display Options Cases + +(ert-deftest test-wttrin--build-url-normal-display-options-appended-after-A () + "Display options string is appended after the A flag." + (let ((wttrin-unit-system nil) + (wttrin-display-options "0Fq")) + (should (string= "https://wttr.in/Paris?A0Fq" + (wttrin--build-url "Paris"))))) + +(ert-deftest test-wttrin--build-url-normal-display-options-with-unit-system () + "Display options coexist with unit system, both inside the same query string." + (let ((wttrin-unit-system "m") + (wttrin-display-options "0F")) + (should (string= "https://wttr.in/Tokyo?mA0F" + (wttrin--build-url "Tokyo"))))) + +(ert-deftest test-wttrin--build-url-normal-display-options-narrow-quiet () + "Common combination: narrow + quiet." + (let ((wttrin-unit-system nil) + (wttrin-display-options "nq")) + (should (string= "https://wttr.in/SFO?Anq" + (wttrin--build-url "SFO"))))) + +(ert-deftest test-wttrin--build-url-boundary-display-options-nil-omits-flags () + "Nil display-options leaves URL unchanged from baseline." + (let ((wttrin-unit-system nil) + (wttrin-display-options nil)) + (should (string= "https://wttr.in/Paris?A" + (wttrin--build-url "Paris"))))) + +(ert-deftest test-wttrin--build-url-boundary-display-options-empty-string-omits-flags () + "Empty display-options string is treated like nil." + (let ((wttrin-unit-system nil) + (wttrin-display-options "")) + (should (string= "https://wttr.in/Paris?A" + (wttrin--build-url "Paris"))))) + +(ert-deftest test-wttrin--build-url-boundary-display-options-single-character () + "Single-character display-options works." + (let ((wttrin-unit-system nil) + (wttrin-display-options "F")) + (should (string= "https://wttr.in/London?AF" + (wttrin--build-url "London"))))) + ;;; Error Cases (ert-deftest test-wttrin--build-url-error-nil-query-signals-error () |
