On 3/11/2020 2:14 PM, Axel Kielhorn wrote:


Am 15.08.2018 um 14:04 schrieb Hans Hagen <j.ha...@xs4all.nl>:

On 8/15/2018 12:27 PM, Mike O'Connor wrote:
G’Day,
Having a first go at converting TEI XML to ConTeXt.
Steep learning curve, but easier (for me) than XSLT, and first results were 
amazing.  Using http://www.pragma-ade.com/general/manuals/xml-mkiv.pdf as a 
guide.
Currently stuck on converting an ISO format date (eg. 1908-01-10) into 
something more readable (eg. 10 January 1908) in the output.  I presume I 
should create a function (?luacode) that can take any ISO value and output the 
readable form.  The following works but seems to me inefficient.
Grateful for any pointers.
Mike
Here is my MWE:
\startbuffer[demo]
<TEI>
     <text>
         <body>
             <div type="letter">
                 <opener>
                     <date when-iso="1908-01-10" type="divDate">10.I.08</date>
                 </opener>
                 <closer>
<date when-iso="1908-03-19" type="secondDate">19 Mar '08</date>
                 </closer>
             </div>
         </body>
     </text>
</TEI>
\stopbuffer
\startxmlsetups xml:initialize
\xmlsetsetup{#1}{date}{xml:date}
\stopxmlsetups
\xmlregistersetup{xml:initialize}
\startxmlsetups xml:date
\xmldoifelse {#1}{.[@type='divDate']} {
\def\docdate{\ctxlua{
local tyear = string.sub('\xmlatt{#1}{when-iso}',1,4)
local tmonth = string.sub('\xmlatt{#1}{when-iso}',6,7)
local tday = string.sub('\xmlatt{#1}{when-iso}',9,10)
context.date{d = tday, m = tmonth, y = tyear}
}}
\docdate[day,month,year] = Document Date \par
     } {
\def\docdate{\ctxlua{
local tyear = string.sub('\xmlatt{#1}{when-iso}',1,4)
local tmonth = string.sub('\xmlatt{#1}{when-iso}',6,7)
local tday = string.sub('\xmlatt{#1}{when-iso}',9,10)
context.date{d = tday, m = tmonth, y = tyear}
}}
\docdate[day,month,year] = Event Date\par
}
\stopxmlsetups
\starttext
\xmlprocessbuffer{main}{demo}{}
\stoptext
Can be wikified ...

\startluacode
    function xml.finalizers.tex.MyDate(e,what,how)
        local t = string.split(e[1].at[what],"-")
        context.date(
            { y = t[1], m = t[2], d = t[3] },
            { how }
        )
    end
\stopluacode

\startxmlsetups xml:date

        \xmldoifelse {#1}{.[@type='divDate']} {
        \xmlfilter{#1}{./MyDate("when-iso","day,month,year")}\
        Document Date \par
    } {
        \xmlfilter{#1}{./MyDate("when-iso","day,month,year")}\
        Event Date\par

        }
\stopxmlsetups

I couldn’t get this to work.
Had to change it to:

\startluacode
    function xml.finalizers.tex.MyDate(e,what,how)
        local ee = e[1].at[what]
        local t = (string.split(ee,"-"))
        context.date(
            { y = t[1], m = t[2], d = t[3] },
            { how }
        )
    end
\stopluacode
You mean the () around the split? weird. Anyway, there's also a time splitter (dedicated to Alan who needed one):

print(os.time(utilities.parsers.totime("2019-03-05 12:12:12")))
print(os.time(utilities.parsers.totime("2019/03/05 12:12:12")))
print(os.time(utilities.parsers.totime("05-03-2019 12:12:12")))
print(os.time(utilities.parsers.totime("05/03/2019 12:12:12")))

inspect(utilities.parsers.totime("2019-03-05 12:12:12"))
inspect(utilities.parsers.totime("2019/03/05 12:12:12"))
inspect(utilities.parsers.totime("05-03-2019 12:12:12"))
inspect(utilities.parsers.totime("05/03/2019 12:12:12"))


-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
       tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to