aboutsummaryrefslogtreecommitdiff
path: root/converter.go
diff options
context:
space:
mode:
Diffstat (limited to 'converter.go')
-rw-r--r--converter.go62
1 files changed, 43 insertions, 19 deletions
diff --git a/converter.go b/converter.go
index da1aa8e..57695e7 100644
--- a/converter.go
+++ b/converter.go
@@ -84,29 +84,13 @@ func (converter *Converter) convertFileMarkups(fileMarkups map[string]*FileMarku
var (
logp = `convertFileMarkups`
- fmarkup *FileMarkup
- htmlInfo os.FileInfo
- htmlModtime time.Time
- err error
- skip bool
+ fmarkup *FileMarkup
+ err error
)
for _, fmarkup = range fileMarkups {
- skip = true
if !isForce {
- htmlInfo, _ = os.Stat(fmarkup.pathHTML)
- if htmlInfo == nil {
- // HTML file may not exist.
- skip = false
- } else {
- htmlModtime = htmlInfo.ModTime()
- if converter.htmlTemplateModtime.After(htmlModtime) {
- skip = false
- } else if fmarkup.info.ModTime().After(htmlModtime) {
- skip = false
- }
- }
- if skip {
+ if !converter.shouldConvert(fmarkup) {
continue
}
}
@@ -230,3 +214,43 @@ func (converter *Converter) markdownToHTML(fmarkup *FileMarkup) (fhtml *fileHTML
return fhtml, nil
}
+
+// shouldConvert will return true if the file markup fmarkup needs to be
+// converted to HTML.
+// It return true if the HTML file not exist or the template or markup file is
+// newer than the HTML file.
+func (converter *Converter) shouldConvert(fmarkup *FileMarkup) bool {
+ var fi os.FileInfo
+ fi, _ = os.Stat(fmarkup.pathHTML)
+ if fi == nil {
+ // HTML file may not exist.
+ return true
+ }
+
+ var htmlModtime = fi.ModTime()
+ var err error
+
+ if len(converter.htmlTemplate) != 0 {
+ fi, err = os.Stat(converter.htmlTemplate)
+ if err != nil {
+ // The template file may has been deleted.
+ return true
+ }
+
+ if fi.ModTime().After(htmlModtime) {
+ converter.htmlTemplateModtime = fi.ModTime()
+ return true
+ }
+ }
+
+ fi, err = os.Stat(fmarkup.path)
+ if err != nil {
+ // The markup file may has been deleted.
+ return false
+ }
+ if fi.ModTime().After(htmlModtime) || fmarkup.info.Size() != fi.Size() {
+ fmarkup.info = fi
+ return true
+ }
+ return false
+}