branch: elpa/logview
commit 3620b1ff3b7e86a353b61bd7b653a23b7b11a6f3
Author: Paul Pogonyshev <pogonys...@gmail.com>
Commit: Paul Pogonyshev <pogonys...@gmail.com>

    Adapt to Java 17 changes as much as possible (in `datetime' 0.8; also 
require that version to ensure we deal only with Java 17 data).
---
 logview.el          | 22 ++++++++++++++++++----
 test/log4j/fr-1.log |  2 +-
 test/log4j/fr-2.log |  1 +
 test/logview.el     |  6 ++++++
 4 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/logview.el b/logview.el
index 24ad85c1f6..3164ec45b5 100644
--- a/logview.el
+++ b/logview.el
@@ -7,7 +7,7 @@
 ;; Version:    0.16.4snapshot
 ;; Keywords:   files, tools
 ;; Homepage:   https://github.com/doublep/logview
-;; Package-Requires: ((emacs "25.1") (datetime "0.6.1") (extmap "1.0"))
+;; Package-Requires: ((emacs "25.1") (datetime "0.8") (extmap "1.0"))
 
 ;; This program is free software; you can redistribute it and/or
 ;; modify it under the terms of the GNU General Public License as
@@ -3020,9 +3020,23 @@ returns non-nil."
                         (dolist (pattern (cons time-pattern
                                                (mapcar (lambda (date-variant) 
(datetime-locale-date-time-pattern locale date-variant time-variant))
                                                        '(:short :medium :long 
:full))))
-                          (push pattern                                        
                                           variants)
-                          (push (replace-regexp-in-string "\\<s+\\>" (concat 
"\\&" decimal-separator "SSS")    pattern t) variants)
-                          (push (replace-regexp-in-string "\\<s+\\>" (concat 
"\\&" decimal-separator "SSSSSS") pattern t) variants))
+                          (let ((subvariants (list pattern)))
+                            ;; Java 17 (used in `datetime' 0.8+) added commas 
in a lot of places.  We create
+                            ;; variants also without the commas, if only to 
match older logs.  There are also
+                            ;; other changes (e.g. separator "à" is gone in 
some patterns in French locale),
+                            ;; but those we can't handle transparently and 
generically, oh well.
+                            (when (string-match "\\(\\w\\), \\(\\w\\)" pattern)
+                              (let ((left  (intern (match-string 1 pattern)))
+                                    (right (intern (match-string 2 pattern))))
+                                (when (cond ((memq left  '(y d E c))
+                                             (memq right '(H h a)))    ; 
Between date and time.
+                                            ((memq left  '(s S))
+                                             (memq right '(y d E c)))) ; 
Between time and date.
+                                  (push (replace-match "\\1 \\2" t nil 
pattern) subvariants))))
+                            (dolist (pattern subvariants)
+                              (push pattern                                    
                                               variants)
+                              (push (replace-regexp-in-string "\\<s+\\>" 
(concat "\\&" decimal-separator "SSS")    pattern t) variants)
+                              (push (replace-regexp-in-string "\\<s+\\>" 
(concat "\\&" decimal-separator "SSSSSS") pattern t) variants))))
                         (dolist (pattern variants)
                           (let* ((parts            (datetime-recode-pattern 
'java 'parsed pattern))
                                  (locale-dependent 
(datetime-pattern-locale-dependent-p 'parsed parts))
diff --git a/test/log4j/fr-1.log b/test/log4j/fr-1.log
index 47c3b266ac..5205c9d928 100644
--- a/test/log4j/fr-1.log
+++ b/test/log4j/fr-1.log
@@ -1 +1 @@
-27 sept. 2011 à 04:58:59 [thread 1] INFO my.Class - a message
+27 sept. 2011, 04:58:59 [thread 1] INFO my.Class - a message
diff --git a/test/log4j/fr-2.log b/test/log4j/fr-2.log
new file mode 100644
index 0000000000..3284a5157a
--- /dev/null
+++ b/test/log4j/fr-2.log
@@ -0,0 +1 @@
+27 sept. 2011 04:58:59 [thread 1] INFO my.Class - a message
diff --git a/test/logview.el b/test/logview.el
index ee7b037b8b..85d3e23244 100644
--- a/test/logview.el
+++ b/test/logview.el
@@ -96,6 +96,12 @@
   (logview--test-with-file "log4j/fr-1.log"
     (should (equal logview--submode-name "SLF4J"))))
 
+(ert-deftest logview-test-log4j-national-timestamp-2 ()
+  ;; It's the same as above, but without comma in the timestamp.  See
+  ;; `logview--all-timestamp-formats'.
+  (logview--test-with-file "log4j/fr-2.log"
+    (should (equal logview--submode-name "SLF4J"))))
+
 ;; Issue #2.
 (ert-deftest logview-test-log4j-parens-in-thread-name ()
   (logview--test-with-file "log4j/parens-in-thread-name.log"

Reply via email to