added date support
[asciidoctor_to_rss.git] / src / main / java / net / wpitchoune / asciidoctor / Main.java
index f68f354..43f0a88 100644 (file)
@@ -19,18 +19,17 @@ package net.wpitchoune.asciidoctor;
  */
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileReader;
-import java.io.FileWriter;
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.StringWriter;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
-import java.util.Properties;
 import java.util.logging.Logger;
 
 import org.asciidoctor.Asciidoctor;
@@ -114,6 +113,7 @@ public class Main {
         private static void generateHTMLFileItem(File file,
                                                 String title,
                                                 String content,
+                                                String date,
                                                 Configuration cfg) throws IOException {
                StringBuffer buf;
                
@@ -126,6 +126,11 @@ public class Main {
                appendHTMLContentHeader(buf, title);
                
                buf.append("<div id='content'>\n");
+               if (date != null) {
+                       buf.append("<div class='date'>");
+                       buf.append(date);
+                       buf.append("</div>");
+               }
                buf.append(content);
                buf.append("</div>");
                
@@ -134,7 +139,7 @@ public class Main {
                Files.write(file.toPath(), buf.toString().getBytes());
         }
         
-       public static void main(String[] args) throws FileNotFoundException, IOException, FeedException {
+       public static void main(String[] args) throws FileNotFoundException, IOException, FeedException, ParseException {
                File inDir, html, outDir;
                File[] adocs;
                StringWriter desc;
@@ -145,7 +150,11 @@ public class Main {
                DocumentHeader h;
                SyndContentImpl c;
                StringBuffer news;
-               String itemTitle, itemContent;
+               String itemTitle, itemContent, itemURI, strDate;
+               Date itemDate;
+               SimpleDateFormat sdf;
+               
+               sdf = new SimpleDateFormat("yyyy-dd-MM");
                
                inDir = new File(args[0]);
                outDir = new File(args[1]);
@@ -179,7 +188,14 @@ public class Main {
                        html = toHTMLFile(outDir, adoc);
                                
                        h = asciidoctor.readDocumentHeader(adoc);
-                                                           
+
+                       if (h.getAttributes().get("date") == null)
+                               strDate = h.getAttributes().get("docdate").toString();
+                       else
+                               strDate = h.getAttributes().get("date").toString();
+                                               
+                       itemDate = sdf.parse(strDate);
+                       
                        asciidoctor.convert(new FileReader(adoc), desc, new HashMap<String,Object>());
                        
                        itemTitle = h.getDocumentTitle().getMain(); 
@@ -187,7 +203,10 @@ public class Main {
                        
                        e = new SyndEntryImpl();
                        e.setTitle(itemTitle);
-                       e.setUri(cfg.getFeedBaseURL() + "/" + html.getName());
+                       itemURI = cfg.getFeedBaseURL() + "/" + html.getName(); 
+                       e.setUri(itemURI);
+                       e.setLink(itemURI);
+                       e.setPublishedDate(itemDate);
                        
                        c = toSyndContentImpl(itemContent);
                        
@@ -199,10 +218,15 @@ public class Main {
                        news.append("<h2>");
                        news.append(itemTitle);
                        news.append("</h2>");
+                       if (news != null) {
+                               news.append("<div class='date'>");
+                               news.append(itemDate);
+                               news.append("</div>");
+                       }
                        news.append(desc.toString());
                        news.append("</div>\n");     
                        
-                       generateHTMLFileItem(html, itemTitle, itemContent, cfg);
+                       generateHTMLFileItem(html, itemTitle, itemContent, itemDate.toString(), cfg);
                }
                
                news.append("</div>\n");
@@ -215,7 +239,6 @@ public class Main {
                SyndFeedOutput output = new SyndFeedOutput();
                output.output(feed, new File(outDir, "feed.xml"));
        
-               System.out.println(news.toString());
                Files.write(new File(outDir, "news.html").toPath(), news.toString().getBytes());
        }
 }