Received: (at 74841) by debbugs.gnu.org; 22 Dec 2024 21:41:51 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Dec 22 16:41:51 2024 Received: from localhost ([127.0.0.1]:52228 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tPThv-00035n-9e for submit <at> debbugs.gnu.org; Sun, 22 Dec 2024 16:41:51 -0500 Received: from eggs.gnu.org ([209.51.188.92]:37782) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <ludo@HIDDEN>) id 1tPTht-00035a-DR for 74841 <at> debbugs.gnu.org; Sun, 22 Dec 2024 16:41:50 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <ludo@HIDDEN>) id 1tPThn-0001Ku-Iq; Sun, 22 Dec 2024 16:41:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To: From; bh=2ccBUc2a9f0X+UTaINEXndiQ5I+bIpNfy6HgZwZsfdU=; b=NGNOK/KmSs+VsXClHqPS ddrV2348D/dBcQv0Sz4r6HMb0yRz6tbGD7fHMPh7Uv016/vqVYgBDmY+CdhmIe2HfZOgpaEN88g0F AsXwOINB3hpgXLlr36qbdh0030U5Z1ZnrfpuFYRGposJyMidk00iK/diAsoxLS428hA6iuTCR3VZa z4d1UCI5ySjJdXTJlp8nQx8kq91PaBJlUneOtYVBOFK2SegI+55MH+4OYU8dVwqrywegeVgNlSiEK pUf3lrMLSsDqI5sBWacqkSmc26DLFift8u2cDiGAJY3Z0YCbQ/Eynfzj2UKW6TVhlma0iB0axK9fB jy7YOvBw5OvG7A==; From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN> To: Tomas Volf <~@wolfsden.cz> Subject: Re: bug#74841: [PATCH] srfi-19: Fix ~V converter in date->string. In-Reply-To: <20241212210322.32016-2-~@wolfsden.cz> (Tomas Volf's message of "Thu, 12 Dec 2024 22:03:21 +0100") References: <20241212210322.32016-2-~@wolfsden.cz> Date: Sun, 22 Dec 2024 22:41:41 +0100 Message-ID: <87bjx3fl9m.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 74841 Cc: 74841 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) Hi, Tomas Volf <~@wolfsden.cz> skribis: > The ~V is supposed to print ISO week number, not a week number. This > commit fixes that. > > * module/srfi/srfi-19.scm (date-week-number-iso): New procedure taken > from the reference implementation. > (directives)<#\V>: Use it. > * test-suite/tests/srfi-19.test ("date->string ~V"): Add tests taken > from the reference test suite. The manual just reads this: ~U week of year, Sunday first day of week, =E2=80=9800=E2=80=99 to =E2=80=9852=E2=80=99 ~V week of year, Monday first day of week, =E2=80=9801=E2=80=99 to =E2=80=9853=E2=80=99 Should it be fixed or clarified? > +(define (date-week-number-iso date) Please add a docstring. > + (let ((convert (=CE=BB (lst) > + (date->string > + (make-date 0 0 0 0 > + (caddr lst) (cadr lst) (car lst) Please use =E2=80=98match-lambda=E2=80=99. > + (with-test-prefix "date->string ~V" > + (pass-if-equal "Thursday, week 53" "53" If these are from the SRFI-19 spec, could you add a comment to say so? Thanks, Ludo=E2=80=99.
bug-guile@HIDDEN
:bug#74841
; Package guile
.
Full text available.Received: (at submit) by debbugs.gnu.org; 12 Dec 2024 21:04:06 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Dec 12 16:04:06 2024 Received: from localhost ([127.0.0.1]:40585 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tLqLn-0000gn-TU for submit <at> debbugs.gnu.org; Thu, 12 Dec 2024 16:04:05 -0500 Received: from lists.gnu.org ([209.51.188.17]:35496) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <~@wolfsden.cz>) id 1tLqLj-0000ga-Fo for submit <at> debbugs.gnu.org; Thu, 12 Dec 2024 16:03:58 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <~@wolfsden.cz>) id 1tLqLi-00048o-2e for bug-guile@HIDDEN; Thu, 12 Dec 2024 16:03:54 -0500 Received: from wolfsden.cz ([37.205.8.62]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <~@wolfsden.cz>) id 1tLqLf-0005R6-OA for bug-guile@HIDDEN; Thu, 12 Dec 2024 16:03:53 -0500 Received: by wolfsden.cz (Postfix, from userid 104) id C658235B32C; Thu, 12 Dec 2024 21:03:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=wolfsden.cz; s=mail; t=1734037428; bh=uuodW7FBdAEGpBSqznpZU8i1BVZtibZR0LZPPlZv57M=; h=From:To:Cc:Subject:Date; b=jMTkzrZI/Q1IJ1l+CD0vK/jWPAX9Zi6kHADR98f+a/bHuq86W4MFPhV3oOPD3wTKU 2MouY2Y0N2AAAUQeVpzl3a25rqRX/ZXioC1sEZqZYnTxIv5waBDDrjN8RD5IrdHXo7 NI/PCNxt+0wiVhZEQetiH1IJ67D8eUe9v5Fqt3TKpxatQRJ77OhZS7B8dE8d063iIx Mod5R/tFkY3oQpxDtFRqB7y0dRhFHwLSWkT4AdnHDRdocHyLLqvuWUPf4SNb+aX4E1 5EAfAhbYr5dTagsZZhWKb+Lz1CNsf4FpffrABAh16dUMAcgTHnG76KG4dNOPa8MyPF hx/W7QK3n/IdRP4FFTzWMryO91W52aB8z8B5Jgyqee2WJfme056BpoRMa7Dstk99gN NysDoSETCjfWcDh88ucE2l+qy1xwqj61mcN0XcPpL2fSJm0MWgdjeDH0xP87oYN34P 3TgyucOJaRX56i/Ai3v6KkiboiyHr6i1kLR9yAvf2N2e9OXgsKQcVUEDnj/dMevDj2 Xjjb80+7Uy+W1yjoIYvJvDa0p0/kkbYiSJF3tXurWSGj8XWGDLLPB0sFt762pMYkQK 4pcckTucCLhhY/bzF13LMf7Pg9vNSbZ4YwlMBdmc8sGtSY1bH1NpXq0WR+9Dipfpvv C1lQSRMT3juallmzIj4Ybp1Y= X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on wolfsden X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from localhost (unknown [128.0.188.242]) by wolfsden.cz (Postfix) with ESMTPSA id 3E08B35C29B; Thu, 12 Dec 2024 21:03:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=wolfsden.cz; s=mail; t=1734037428; bh=uuodW7FBdAEGpBSqznpZU8i1BVZtibZR0LZPPlZv57M=; h=From:To:Cc:Subject:Date; b=jMTkzrZI/Q1IJ1l+CD0vK/jWPAX9Zi6kHADR98f+a/bHuq86W4MFPhV3oOPD3wTKU 2MouY2Y0N2AAAUQeVpzl3a25rqRX/ZXioC1sEZqZYnTxIv5waBDDrjN8RD5IrdHXo7 NI/PCNxt+0wiVhZEQetiH1IJ67D8eUe9v5Fqt3TKpxatQRJ77OhZS7B8dE8d063iIx Mod5R/tFkY3oQpxDtFRqB7y0dRhFHwLSWkT4AdnHDRdocHyLLqvuWUPf4SNb+aX4E1 5EAfAhbYr5dTagsZZhWKb+Lz1CNsf4FpffrABAh16dUMAcgTHnG76KG4dNOPa8MyPF hx/W7QK3n/IdRP4FFTzWMryO91W52aB8z8B5Jgyqee2WJfme056BpoRMa7Dstk99gN NysDoSETCjfWcDh88ucE2l+qy1xwqj61mcN0XcPpL2fSJm0MWgdjeDH0xP87oYN34P 3TgyucOJaRX56i/Ai3v6KkiboiyHr6i1kLR9yAvf2N2e9OXgsKQcVUEDnj/dMevDj2 Xjjb80+7Uy+W1yjoIYvJvDa0p0/kkbYiSJF3tXurWSGj8XWGDLLPB0sFt762pMYkQK 4pcckTucCLhhY/bzF13LMf7Pg9vNSbZ4YwlMBdmc8sGtSY1bH1NpXq0WR+9Dipfpvv C1lQSRMT3juallmzIj4Ybp1Y= From: Tomas Volf <~@wolfsden.cz> To: bug-guile@HIDDEN Subject: [PATCH] srfi-19: Fix ~V converter in date->string. Date: Thu, 12 Dec 2024 22:03:21 +0100 Message-ID: <20241212210322.32016-2-~@wolfsden.cz> X-Mailer: git-send-email 2.46.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=37.205.8.62; envelope-from=~@wolfsden.cz; helo=wolfsden.cz X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-Debbugs-Envelope-To: submit Cc: Tomas Volf <~@wolfsden.cz> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -2.3 (--) The ~V is supposed to print ISO week number, not a week number. This commit fixes that. * module/srfi/srfi-19.scm (date-week-number-iso): New procedure taken from the reference implementation. (directives)<#\V>: Use it. * test-suite/tests/srfi-19.test ("date->string ~V"): Add tests taken from the reference test suite. --- module/srfi/srfi-19.scm | 21 ++++++++++++- test-suite/tests/srfi-19.test | 57 ++++++++++++++++++++++++++++++++++- 2 files changed, 76 insertions(+), 2 deletions(-) diff --git a/module/srfi/srfi-19.scm b/module/srfi/srfi-19.scm index d809ac1ec..77be57a0e 100644 --- a/module/srfi/srfi-19.scm +++ b/module/srfi/srfi-19.scm @@ -753,6 +753,25 @@ (days-before-first-week date day-of-week-starting-week)) 7)) +(define (date-week-number-iso date) + ;; The week with the year's first Thursday is week 01. + (let* ((first-day-of-the-week (week-day 1 1 (date-year date))) + (offset (if (> first-day-of-the-week 4) 0 1)) + ;; -2: decrement one day to compensate 1-origin of date-year-day, + ;; and decrement one more day for Sunday belongs to the previous week. + (w (+ (floor-quotient (+ (date-year-day date) first-day-of-the-week -2) + 7) + offset))) + (cond ((zero? w) + ;; date belongs to the last week of the previous year + (date-week-number-iso (make-date 0 0 0 0 31 12 + (- (date-year date) 1) 0))) + ((and (= w 53) + (<= (week-day 1 1 (+ (date-year date) 1)) 4)) + ;; date belongs to the first week of the next year + 1) + (else w)))) + (define (current-date . tz-offset) (let ((time (current-time time-utc))) (time-utc->date @@ -1043,7 +1062,7 @@ (display (padding (date-week-number date 0) #\0 2) port)))) (cons #\V (lambda (date pad-with port) - (display (padding (date-week-number date 1) + (display (padding (date-week-number-iso date) #\0 2) port))) (cons #\w (lambda (date pad-with port) (display (date-week-day date) port))) diff --git a/test-suite/tests/srfi-19.test b/test-suite/tests/srfi-19.test index 55eb82320..5e3e1f445 100644 --- a/test-suite/tests/srfi-19.test +++ b/test-suite/tests/srfi-19.test @@ -412,7 +412,62 @@ incomplete numerical tower implementation.)" (with-test-prefix "date-week-number" (pass-if (= 0 (date-week-number (make-date 0 0 0 0 1 1 1984 0) 0))) (pass-if (= 0 (date-week-number (make-date 0 0 0 0 7 1 1984 0) 0))) - (pass-if (= 1 (date-week-number (make-date 0 0 0 0 8 1 1984 0) 0))))) + (pass-if (= 1 (date-week-number (make-date 0 0 0 0 8 1 1984 0) 0)))) + + (let ((convert (λ (lst) + (date->string + (make-date 0 0 0 0 + (caddr lst) (cadr lst) (car lst) + 0) + "~V")))) + (with-test-prefix "date->string ~V" + (pass-if-equal "Thursday, week 53" "53" + (convert '(2020 12 31))) + (pass-if-equal "Friday, week 53 (previous year)" "53" + (convert '(2021 1 1))) + (pass-if-equal "Sunday, week 53 (previous year)" "53" + (convert '(2021 1 3))) + (pass-if-equal "Monday, week 1" "01" + (convert '(2021 1 4))) + + (pass-if-equal "Sunday, week 52" "52" + (convert '(2019 12 29))) + (pass-if-equal "Monday, week 1 (next year)" "01" + (convert '(2019 12 30))) + (pass-if-equal "Tuesday, week 1 (next year)" "01" + (convert '(2019 12 31))) + (pass-if-equal "Wednesday, week 1" "01" + (convert '(2020 1 1))) + + (pass-if-equal "Saturday, week 52" "52" + (convert '(2016 12 31))) + (pass-if-equal "Sunday, week 52 (previous year)" "52" + (convert '(2017 1 1))) + (pass-if-equal "Monday, week 1" "01" + (convert '(2017 1 2))) + (pass-if-equal "Sunday, week 1" "01" + (convert '(2017 1 8))) + (pass-if-equal "Monday, week 2" "02" + (convert '(2017 1 9))) + + (pass-if-equal "Sunday, week 52" "52" + (convert '(2014 12 28))) + (pass-if-equal "Monday, week 1 (next year)" "01" + (convert '(2014 12 29))) + (pass-if-equal "Tuesday, week 1 (next year)" "01" + (convert '(2014 12 30))) + (pass-if-equal "Wednesday, week 1 (next year)" "01" + (convert '(2014 12 31))) + (pass-if-equal "Thursday, week 1" "01" + (convert '(2015 1 1))) + (pass-if-equal "Friday, week 1" "01" + (convert '(2015 1 2))) + (pass-if-equal "Saturday, week 1" "01" + (convert '(2015 1 3))) + (pass-if-equal "Sunday, week 1" "01" + (convert '(2015 1 4))) + (pass-if-equal "Monday, week 2" "02" + (convert '(2015 1 5)))))) ;; Local Variables: -- 2.46.0
Tomas Volf <~@wolfsden.cz>
:bug-guile@HIDDEN
.
Full text available.bug-guile@HIDDEN
:bug#74841
; Package guile
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.