summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2022-12-16 00:54:47 +0700
committerShulhan <ms@kilabit.info>2022-12-16 00:54:47 +0700
commitab6eaa00847d5b468acbc503b7b19b3cc99fb8b8 (patch)
treecfe691a0315d91258d24b12bd831f8988e4f5911
parent4b1ade55e50aa2768deecf101cb8d7c24f3bb6b3 (diff)
downloadasciidoctor-go-ab6eaa00847d5b468acbc503b7b19b3cc99fb8b8.tar.xz
all: add support for document attribute "last-update-label"
By default the last-update-label value set to "Last updated" and the value is the document modification time. If the label is suppressed with "!", no "Last updated" will be print on the footer.
-rw-r--r--README1
-rw-r--r--attribute_entry.go12
-rw-r--r--document.go3
-rw-r--r--html_backend.go29
-rw-r--r--parser.go58
5 files changed, 56 insertions, 47 deletions
diff --git a/README b/README
index 0d16fd0..4770e22 100644
--- a/README
+++ b/README
@@ -129,6 +129,7 @@ Supported metadata or attribute references,
* `idprefix`
* `idseparator`
* `lastname(_x)`
+* `last-update-label`
* `middlename(_x)`
* `nofooter`
* `noheader`
diff --git a/attribute_entry.go b/attribute_entry.go
index a4dd722..c1d329f 100644
--- a/attribute_entry.go
+++ b/attribute_entry.go
@@ -11,11 +11,13 @@ type AttributeEntry map[string]string
func newAttributeEntry() AttributeEntry {
return AttributeEntry{
- MetaNameGenerator: `asciidoctor-go ` + Version,
- metaNameSectIDs: ``,
- metaNameShowTitle: ``,
- metaNameTableCaption: ``,
- metaNameVersionLabel: ``,
+ MetaNameGenerator: `asciidoctor-go ` + Version,
+ metaNameLastUpdateLabel: `Last updated`,
+ metaNameLastUpdateValue: ``,
+ metaNameSectIDs: ``,
+ metaNameShowTitle: ``,
+ metaNameTableCaption: ``,
+ metaNameVersionLabel: ``,
}
}
diff --git a/document.go b/document.go
index 2b34300..aa6672a 100644
--- a/document.go
+++ b/document.go
@@ -43,7 +43,6 @@ type Document struct {
Revision Revision
- LastUpdated string
file string
fpath string
rawAuthors string
@@ -128,7 +127,7 @@ func Open(file string) (doc *Document, err error) {
doc = newDocument()
doc.fpath = filepath.Join(wd, file)
doc.file = file
- doc.LastUpdated = fi.ModTime().Round(time.Second).Format(`2006-01-02 15:04:05 Z0700`)
+ doc.Attributes[metaNameLastUpdateValue] = fi.ModTime().Round(time.Second).Format(`2006-01-02 15:04:05 Z0700`)
parse(doc, raw)
diff --git a/html_backend.go b/html_backend.go
index 1bbefcb..1635328 100644
--- a/html_backend.go
+++ b/html_backend.go
@@ -880,28 +880,33 @@ func htmlWriteBody(doc *Document, out *bytes.Buffer) {
}
func htmlWriteFooter(doc *Document, out io.Writer) {
+ var (
+ label string
+ value string
+ ok bool
+ )
+
fmt.Fprint(out, `
<div id="footer">
<div id="footer-text">`)
if len(doc.Revision.Number) > 0 {
- var (
- prefix string
- ok bool
- )
-
- prefix, ok = doc.Attributes[metaNameVersionLabel]
- if ok && len(prefix) == 0 {
- prefix = `Version `
+ label, ok = doc.Attributes[metaNameVersionLabel]
+ if ok && len(label) == 0 {
+ label = `Version `
} else {
- prefix = ` `
+ label = ` `
}
- fmt.Fprintf(out, "\n%s%s<br>", prefix, doc.Revision.Number)
+ fmt.Fprintf(out, "\n%s%s<br>", label, doc.Revision.Number)
}
- if len(doc.LastUpdated) > 0 {
- fmt.Fprintf(out, "\nLast updated %s", doc.LastUpdated)
+ label, ok = doc.Attributes[metaNameLastUpdateLabel]
+ if ok {
+ value = doc.Attributes[metaNameLastUpdateValue]
+ if len(value) != 0 {
+ fmt.Fprintf(out, "\n%s %s", label, value)
+ }
}
fmt.Fprint(out, "\n</div>\n</div>")
diff --git a/parser.go b/parser.go
index bc7da9e..fe6e0ff 100644
--- a/parser.go
+++ b/parser.go
@@ -178,34 +178,36 @@ const (
MetaNameGenerator = `generator`
MetaNameKeywords = `keywords`
- metaNameAuthorInitials = `authorinitials`
- metaNameDocTitle = `doctitle`
- metaNameEmail = attrValueEmail
- metaNameFirstName = `firstname`
- metaNameIDPrefix = `idprefix`
- metaNameIDSeparator = `idseparator`
- metaNameLastName = `lastname`
- metaNameMiddleName = `middlename`
- metaNameNoFooter = `nofooter`
- metaNameNoHeader = `noheader`
- metaNameNoHeaderFooter = `no-header-footer`
- metaNameNoTitle = `notitle`
- metaNameRevDate = `revdate`
- metaNameRevNumber = `revnumber`
- metaNameRevRemark = `revremark`
- metaNameSectAnchors = `sectanchors`
- metaNameSectIDs = `sectids`
- metaNameSectLinks = `sectlinks`
- metaNameSectNumLevel = `sectnumlevels`
- metaNameSectNums = `sectnums`
- metaNameShowTitle = `showtitle`
- metaNameTOC = `toc`
- metaNameTOCLevels = `toclevels`
- metaNameTOCTitle = `toc-title`
- metaNameTableCaption = `table-caption`
- metaNameTitle = attrNameTitle
- metaNameTitleSeparator = `title-separator`
- metaNameVersionLabel = `version-label`
+ metaNameAuthorInitials = `authorinitials`
+ metaNameDocTitle = `doctitle`
+ metaNameEmail = attrValueEmail
+ metaNameFirstName = `firstname`
+ metaNameIDPrefix = `idprefix`
+ metaNameIDSeparator = `idseparator`
+ metaNameLastName = `lastname`
+ metaNameLastUpdateLabel = `last-update-label`
+ metaNameLastUpdateValue = `last-update-value`
+ metaNameMiddleName = `middlename`
+ metaNameNoFooter = `nofooter`
+ metaNameNoHeader = `noheader`
+ metaNameNoHeaderFooter = `no-header-footer`
+ metaNameNoTitle = `notitle`
+ metaNameRevDate = `revdate`
+ metaNameRevNumber = `revnumber`
+ metaNameRevRemark = `revremark`
+ metaNameSectAnchors = `sectanchors`
+ metaNameSectIDs = `sectids`
+ metaNameSectLinks = `sectlinks`
+ metaNameSectNumLevel = `sectnumlevels`
+ metaNameSectNums = `sectnums`
+ metaNameShowTitle = `showtitle`
+ metaNameTOC = `toc`
+ metaNameTOCLevels = `toclevels`
+ metaNameTOCTitle = `toc-title`
+ metaNameTableCaption = `table-caption`
+ metaNameTitle = attrNameTitle
+ metaNameTitleSeparator = `title-separator`
+ metaNameVersionLabel = `version-label`
)
// List of possible metadata value.