emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [PATCH] oc-basic: support biblatex date field
@ 2021-10-29 12:27 Bruce D'Arcus
  2021-11-02 17:44 ` Nicolas Goaziou
  0 siblings, 1 reply; 6+ messages in thread
From: Bruce D'Arcus @ 2021-10-29 12:27 UTC (permalink / raw)
  To: org-mode-email

[-- Attachment #1: Type: text/plain, Size: 132 bytes --]

This is a tiny change that just checks for a 'date' field if 'year' is
nil, and if present, grabs the first four characters.

Bruce

[-- Attachment #2: 0001-oc-basic-Support-biblatex-date-field.patch --]
[-- Type: text/x-patch, Size: 1729 bytes --]

From feee2ca6d54d3495050de334c258438950494372 Mon Sep 17 00:00:00 2001
From: Bruce D'Arcus <bdarcus@gmail.com>
Date: Fri, 29 Oct 2021 08:17:43 -0400
Subject: [PATCH] oc-basic: Support biblatex date field

* lisp/oc-basic.el (org-cite-basic--print-bibliography,
org-cite-basic--get-year): Check 'date' field if 'year' nil.
---
 lisp/oc-basic.el | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/lisp/oc-basic.el b/lisp/oc-basic.el
index 1a01ea408..1c5634341 100644
--- a/lisp/oc-basic.el
+++ b/lisp/oc-basic.el
@@ -345,7 +345,9 @@ patterns."
   ;; the cite key, as a string, and SUFFIX is the generated suffix
   ;; string, or the empty string.
   (let* ((author (org-cite-basic--get-field 'author entry-or-key info 'raw))
-         (year (org-cite-basic--get-field 'year entry-or-key info 'raw))
+         (year
+          (or (org-cite-basic--get-field 'year entry-or-key info 'raw)
+              (substring (org-cite-basic--get-field 'date entry-or-key info 'raw) 0 4)))
          (cache-key (cons author year))
          (key
           (pcase entry-or-key
@@ -371,7 +373,9 @@ ENTRY is an alist, as returned by `org-cite-basic--get-entry'.
 Optional argument INFO is the export state, as a property list."
   (let ((author (org-cite-basic--get-field 'author entry info))
         (title (org-cite-basic--get-field 'title entry info))
-        (year (org-cite-basic--get-field 'year entry info))
+        (year
+         (or (org-cite-basic--get-field 'year entry info)
+             (substring (org-cite-basic--get-field 'date entry info) 0 4)))
         (from
          (or (org-cite-basic--get-field 'publisher entry info)
              (org-cite-basic--get-field 'journal entry info)
-- 
2.33.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] oc-basic: support biblatex date field
  2021-10-29 12:27 [PATCH] oc-basic: support biblatex date field Bruce D'Arcus
@ 2021-11-02 17:44 ` Nicolas Goaziou
  2021-11-02 18:00   ` Bruce D'Arcus
  0 siblings, 1 reply; 6+ messages in thread
From: Nicolas Goaziou @ 2021-11-02 17:44 UTC (permalink / raw)
  To: Bruce D'Arcus; +Cc: org-mode-email

Hello,

"Bruce D'Arcus" <bdarcus@gmail.com> writes:

> This is a tiny change that just checks for a 'date' field if 'year' is
> nil, and if present, grabs the first four characters.

The date field may also be nil, leading to an error.

Is there a guarantee that the date field starts with the year?

Regards,
-- 
Nicolas Goaziou


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] oc-basic: support biblatex date field
  2021-11-02 17:44 ` Nicolas Goaziou
@ 2021-11-02 18:00   ` Bruce D'Arcus
  2021-11-03 15:16     ` Nicolas Goaziou
  0 siblings, 1 reply; 6+ messages in thread
From: Bruce D'Arcus @ 2021-11-02 18:00 UTC (permalink / raw)
  To: Nicolas Goaziou; +Cc: org-mode-email

On Tue, Nov 2, 2021 at 1:44 PM Nicolas Goaziou <mail@nicolasgoaziou.fr> wrote:
>
> Hello,
>
> "Bruce D'Arcus" <bdarcus@gmail.com> writes:
>
> > This is a tiny change that just checks for a 'date' field if 'year' is
> > nil, and if present, grabs the first four characters.
>
> The date field may also be nil, leading to an error.

Can you please fix that, if the patchis otherwise fine?

> Is there a guarantee that the date field starts with the year?

Not 100% guarantee, but should be close.

The biblatex manual (section 2.3.8 Date and Time Specifications), says
the following:

"Date fields such as the default data model dates date, origdate,
eventdate, and urldate adhere to iso8601-2 Extended Format
specification level 1."

This is an extension to standard 8601 dates, previously known as EDTF
(extended date-time format).

So for the vast majority of cases, yes; the value would be standard 8601 dates.

The exceptions should be very rare open-ended ranged dates; from table 3.

../1997
/1997

I do not, however, have a good knowledge of what people do in the
wild. It just seems like such a critical data field should be
supported.

Bruce

PS - FSF confirmed my copyright assignment today.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] oc-basic: support biblatex date field
  2021-11-02 18:00   ` Bruce D'Arcus
@ 2021-11-03 15:16     ` Nicolas Goaziou
  2021-11-04 20:47       ` Bruce D'Arcus
  0 siblings, 1 reply; 6+ messages in thread
From: Nicolas Goaziou @ 2021-11-03 15:16 UTC (permalink / raw)
  To: Bruce D'Arcus; +Cc: org-mode-email

Hello,

"Bruce D'Arcus" <bdarcus@gmail.com> writes:

> Can you please fix that, if the patchis otherwise fine?

OK.

> The biblatex manual (section 2.3.8 Date and Time Specifications), says
> the following:
>
> "Date fields such as the default data model dates date, origdate,
> eventdate, and urldate adhere to iso8601-2 Extended Format
> specification level 1."
>
> This is an extension to standard 8601 dates, previously known as EDTF
> (extended date-time format).
>
> So for the vast majority of cases, yes; the value would be standard 8601 dates.
>
> The exceptions should be very rare open-ended ranged dates; from table 3.
>
> ../1997
> /1997
>
> I do not, however, have a good knowledge of what people do in the
> wild. It just seems like such a critical data field should be
> supported.

I pushed a change along these lines in bugfix branch. Please let me know
if it works for you.

Thank you.

Regards,
-- 
Nicolas Goaziou


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] oc-basic: support biblatex date field
  2021-11-03 15:16     ` Nicolas Goaziou
@ 2021-11-04 20:47       ` Bruce D'Arcus
  2021-11-04 22:03         ` Nicolas Goaziou
  0 siblings, 1 reply; 6+ messages in thread
From: Bruce D'Arcus @ 2021-11-04 20:47 UTC (permalink / raw)
  To: Nicolas Goaziou; +Cc: org-mode-email

On Wed, Nov 3, 2021 at 11:16 AM Nicolas Goaziou <mail@nicolasgoaziou.fr> wrote:

> I pushed a change along these lines in bugfix branch.

Thank you!

> Please let me know if it works for you.

This returns the correct result.

(org-cite-basic--get-year "kohn2005" nil)

How do I get that in the basic activate processor tooltip?

That was my main reason to suggest it.

Bruce


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] oc-basic: support biblatex date field
  2021-11-04 20:47       ` Bruce D'Arcus
@ 2021-11-04 22:03         ` Nicolas Goaziou
  0 siblings, 0 replies; 6+ messages in thread
From: Nicolas Goaziou @ 2021-11-04 22:03 UTC (permalink / raw)
  To: Bruce D'Arcus; +Cc: org-mode-email

Hello,

"Bruce D'Arcus" <bdarcus@gmail.com> writes:

> This returns the correct result.
>
> (org-cite-basic--get-year "kohn2005" nil)
>
> How do I get that in the basic activate processor tooltip?

`org-cite-basic-activate' calls `org-cite-basic--print-entry', which in
turn calls `org-cite-basic--get-year'.

IOW, the tooltip should already use the date if the year is unavailable.
Isn't is the case? Do you have an ECM?

Regards,
-- 
Nicolas Goaziou


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-11-04 22:04 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-29 12:27 [PATCH] oc-basic: support biblatex date field Bruce D'Arcus
2021-11-02 17:44 ` Nicolas Goaziou
2021-11-02 18:00   ` Bruce D'Arcus
2021-11-03 15:16     ` Nicolas Goaziou
2021-11-04 20:47       ` Bruce D'Arcus
2021-11-04 22:03         ` Nicolas Goaziou

Code repositories for project(s) associated with this inbox:

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).