-import java.io.*;
-import java.util.*;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringWriter;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Properties;
+import java.util.logging.Logger;
import org.asciidoctor.Asciidoctor;
import org.asciidoctor.Asciidoctor.Factory;
-import org.asciidoctor.Options;
-import org.asciidoctor.ast.Document;
import org.asciidoctor.ast.DocumentHeader;
-import com.rometools.rome.feed.synd.*;
+import com.rometools.rome.feed.synd.SyndContentImpl;
+import com.rometools.rome.feed.synd.SyndEntry;
+import com.rometools.rome.feed.synd.SyndEntryImpl;
+import com.rometools.rome.feed.synd.SyndFeed;
+import com.rometools.rome.feed.synd.SyndFeedImpl;
import com.rometools.rome.io.FeedException;
import com.rometools.rome.io.SyndFeedOutput;
public class Main {
+ private static Logger LOG = Logger.getLogger(Main.class.getSimpleName());
+ private static String KEY_HTML_HEADER_FILE = "html.header.file";
+
private static File toHTMLFile(File dir, File adoc) {
int idx;
String name;
return new File(dir, name + ".html");
}
+ private static SyndContentImpl toSyndContentImpl(String description) {
+ SyndContentImpl ret;
+
+ ret = new SyndContentImpl();
+ ret.setType("text/html");
+ ret.setValue(description);
+
+ return ret;
+ }
+
+ private static String getHTMLHeader(Properties props) throws IOException {
+ String fileName;
+ File f;
+
+ fileName = props.getProperty(KEY_HTML_HEADER_FILE);
+
+ if (fileName == null) {
+ LOG.info(KEY_HTML_HEADER_FILE + " is not set");
+ return null;
+ }
+
+ f = new File(fileName);
+ return new String(Files.readAllBytes(f.toPath()),
+ StandardCharsets.UTF_8);
+ }
+
public static void main(String[] args) throws FileNotFoundException, IOException, FeedException {
File inDir, html, outDir;
File[] adocs;
- StringWriter sw;
+ StringWriter desc;
Asciidoctor asciidoctor;
- Options opts;
SyndFeed feed;
Properties props;
ArrayList<SyndEntry> entries;
InputStream in;
DocumentHeader h;
SyndContentImpl c;
+ StringBuffer news;
inDir = new File(args[0]);
outDir = new File(args[1]);
entries = new ArrayList<SyndEntry>();
+ news = new StringBuffer();
+ news.append("<html>\n");
+
+ getHTMLHeader(props);
+
+ news.append("<body>\n");
for (File adoc: adocs) {
if (!adoc.getName().endsWith(".adoc"))
continue;
- sw = new StringWriter();
+ desc = new StringWriter();
html = toHTMLFile(outDir, adoc);
h = asciidoctor.readDocumentHeader(adoc);
- asciidoctor.convert(new FileReader(adoc), sw, new HashMap<String,Object>());
+ asciidoctor.convert(new FileReader(adoc), desc, new HashMap<String,Object>());
e = new SyndEntryImpl();
e.setTitle(h.getDocumentTitle().getMain());
e.setUri(props.getProperty("feed.baseurl") + "/" + html.getName());
- c = new SyndContentImpl();
- c.setType("text/html");
- c.setValue(sw.toString());
+ c = toSyndContentImpl(desc.toString());
e.setDescription(c);
entries.add(e);
+
+ news.append("\n<div>\n");
+ news.append("<h2>");
+ news.append(h.getDocumentTitle().getMain());
+ news.append("</h2>\n");
+ news.append(desc.toString());
+ news.append("\n</div>\n");
}
+ news.append("</body>\n");
+ news.append("</html>\n");
feed.setEntries(entries);
feed.setFeedType("rss_2.0");
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());
}
-}
\ No newline at end of file
+}