X-Git-Url: https://git.sthu.org/?p=shutils.git;a=blobdiff_plain;f=bib2html.py;h=3ad3a93ee061d6f44088be9ac134b7f308ce9d43;hp=28abd58ecbfebd88bfcdc56099a1a33619139f13;hb=58dbef0f4c9b483070f21df665e86ed63f7388ad;hpb=3ac17777f987e1c78ea411f149e450015da3dfc4 diff --git a/bib2html.py b/bib2html.py index 28abd58..3ad3a93 100755 --- a/bib2html.py +++ b/bib2html.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/env python3 """Creates a webpage with all entries of a .bib file""" __version__ = "1.0" @@ -42,11 +42,12 @@ def format_field_span(type, value): def format_field(bibentry, field, pre='', post=''): if field in bibentry.fields: - return format_field_span(field, pre + bibentry.fields[field] + post) + if bibentry.fields[field] != "": + return format_field_span(field, pre + bibentry.fields[field] + post) return "" def format_author(a): - return ' '.join(' '.join(p) for p in (a.first(), a.middle(), a.prelast(), a.last(), a.lineage()) if p) + return ' '.join(' '.join(p) for p in (a.first_names, a.middle_names, a.prelast_names, a.last_names, a.lineage_names) if p) def format_authors(entry): return ", ".join([format_author(a) for a in entry.persons['author']]) @@ -95,12 +96,13 @@ def format_details_book(entry): return [", ".join(line)] def format_links(entry): + doi = format_field(entry, 'doi', pre='[DOI]') webpdf = format_field(entry, 'webpdf', pre='[PDF]') weblink = format_field(entry, 'weblink', pre='[link]') webslides = format_field(entry, 'webslides', pre='[slides]') weberrata = format_field(entry, 'weberrata', pre='[errata]') - return " ".join([webpdf, weblink, webslides, weberrata]) + return " ".join([doi, webpdf, weblink, webslides, weberrata]) def format_entry(entry): lines = [] @@ -125,19 +127,19 @@ def format_entry(entry): return "
\n".join(lines) -def entryCompareDate(p1, p2): - k1, e1 = p1 - k2, e2 = p2 +def entryDateSortKey(p): + k, e = p - - def toStr(e): - month = { 'jan' : '01', 'feb' : '02', 'mar' : '03', \ - 'apr' : '04', 'may' : '05', 'jun' : '06', \ - 'jul' : '07', 'aug' : '08', 'sep' : '09', \ - 'oct' : '10', 'nov' : '11', 'dec' : '12'} - return e.fields['year'] + "-" + month[e.fields['month'].lower()[0:3]] - - return cmp(toStr(e1), toStr(e2)) + month2num = { 'jan' : '01', 'feb' : '02', 'mar' : '03', \ + 'apr' : '04', 'may' : '05', 'jun' : '06', \ + 'jul' : '07', 'aug' : '08', 'sep' : '09', \ + 'oct' : '10', 'nov' : '11', 'dec' : '12'} + month = e.fields['month'].lower()[0:3] + if month in month2num: + month = month2num[month] + else: + month = "" + return e.fields['year'] + "-" + month def usage(): @@ -193,8 +195,8 @@ if __name__ == "__main__": print("

" + year + "

") - iteritems = list(entries.iteritems()) - iteritems.sort(cmp=entryCompareDate, reverse=True) + iteritems = list(entries.items()) + iteritems.sort(key=entryDateSortKey, reverse=True) for key, entry in iteritems: if entry.fields['year'] != year: @@ -203,7 +205,8 @@ if __name__ == "__main__": print("
") print("[" + key + "]
") - print(format_entry(entry).encode('utf8')) + e = format_entry(entry) + print(e) print("
\n")