Skip to content

Commit 1fcc4af

Browse files
author
ag88
committed
v0.8.0 added AsciiDoc support
v0.8.0 added AsciiDoc support
1 parent 31e5ff0 commit 1fcc4af

File tree

16 files changed

+642
-162
lines changed

16 files changed

+642
-162
lines changed

LICENSE.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,13 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
6969
SOFTWARE.
7070
*/
7171

72+
Asciidoctorj
73+
https://github.com/asciidoctor/asciidoctorj
74+
Apache License 2.0
75+
by https://asciidoctor.org/
76+
https://github.com/asciidoctor/asciidoctorj
77+
78+
7279
Apache Commons CLI
7380

7481
by Apache Software Foundation:

README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
# ![Markdown](web/markdown.png "Markdown")   Markdown Viewer
1+
# ![Markdown](web/markdown.png "Markdown")   Markdown and ![AsciiDoc](web/AsciiDoc-color.png "AsciiDoc") Viewer
22
---
33

4-
This is a Markdown viewer for java. Primarily it tries to display github styled markdown scripts.
4+
This is a Markdown (and AsciiDoc) viewer for java. Primarily it tries to display github styled markdown scripts.
55

66
![example](web/screen.png "example")
77

88
## Features
99

10+
- **new** v0.8 added AsciiDoc support
1011
- HTML and text export
1112
- Print (this may allow PDF export using some apps/utilities)
1213
- Github styled tables
@@ -46,6 +47,9 @@ Swing. This generally support image formats such as jpg, png and gif. Unsupporte
4647

4748
- Markdown parser: Commonmark java
4849
[https://github.com/commonmark/commonmark-java](https://github.com/commonmark/commonmark-java)
50+
- AsciiDoc parser: AsciidoctorJ
51+
[https://github.com/asciidoctor/asciidoctorj](https://github.com/asciidoctor/asciidoctorj)
52+
[https://asciidoctor.org](https://asciidoctor.org)
4953
- Apache Commons CLI
5054
<https://commons.apache.org/proper/commons-cli/index.html>
5155
- Last but not least Java and Java Swing itself. The html renderer isn't quite the most feature packed but is a mature implementation.

pom.xml

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
<project xmlns="http://maven.apache.org/POM/4.0.0"
2-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3-
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
42
<modelVersion>4.0.0</modelVersion>
53

64
<groupId>org.jmarkdownviewer</groupId>
75
<artifactId>jmdviewer</artifactId>
8-
<version>0.7</version>
6+
<version>0.8</version>
97

108
<name>jcommonmarkviewer</name>
119
<url>http://maven.apache.org</url>
@@ -34,7 +32,7 @@
3432
<archive>
3533
<manifest>
3634
<addClasspath>true</addClasspath>
37-
<mainClass> org.jmarkdownviewer.jmdviewer.App </mainClass>
35+
<mainClass>org.jmarkdownviewer.jmdviewer.App</mainClass>
3836
</manifest>
3937
</archive>
4038
</configuration>
@@ -61,12 +59,32 @@
6159
<dependency>
6260
<groupId>org.commonmark</groupId>
6361
<artifactId>commonmark</artifactId>
64-
<version>0.17.1</version>
62+
<version>0.18.0</version>
6563
</dependency>
6664
<dependency>
6765
<groupId>org.commonmark</groupId>
6866
<artifactId>commonmark-ext-gfm-tables</artifactId>
69-
<version>0.17.1</version>
67+
<version>0.18.0</version>
68+
</dependency>
69+
<dependency>
70+
<groupId>org.commonmark</groupId>
71+
<artifactId>commonmark-ext-yaml-front-matter</artifactId>
72+
<version>0.18.0</version>
73+
</dependency>
74+
<dependency>
75+
<groupId>org.commonmark</groupId>
76+
<artifactId>commonmark-ext-autolink</artifactId>
77+
<version>0.19.0</version>
78+
</dependency>
79+
<dependency>
80+
<groupId>org.asciidoctor</groupId>
81+
<artifactId>asciidoctorj</artifactId>
82+
<version>3.0.0</version> <!--(1)-->
83+
</dependency>
84+
<dependency>
85+
<groupId>org.jsoup</groupId>
86+
<artifactId>jsoup</artifactId>
87+
<version>1.19.1</version>
7088
</dependency>
7189
<dependency>
7290
<groupId>commons-cli</groupId>

src/main/java/org/jmarkdownviewer/jmdviewer/App.java

Lines changed: 157 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
package org.jmarkdownviewer.jmdviewer;
22

3+
import java.io.BufferedReader;
4+
import java.io.BufferedWriter;
35
import java.io.File;
6+
import java.io.FileNotFoundException;
7+
import java.io.FileReader;
8+
import java.io.FileWriter;
9+
import java.io.IOException;
410

511
import javax.swing.SwingUtilities;
612

@@ -11,74 +17,170 @@
1117
import org.apache.commons.cli.Option;
1218
import org.apache.commons.cli.Options;
1319
import org.apache.commons.cli.ParseException;
20+
import org.jmarkdownviewer.jmdviewer.parser.MarkdownParser;
1421

22+
public class App {
1523

16-
public class App implements Runnable {
17-
1824
String lastdir;
1925
String startfile = null;
20-
26+
2127
private static App m_instance;
22-
28+
2329
private App() {
24-
25-
//lastdir = System.getProperty("user.home");
30+
// lastdir = System.getProperty("user.home");
2631
lastdir = System.getProperty("user.dir");
27-
28-
}
29-
30-
@Override
31-
public void run() {
32-
MainFrame m = new MainFrame();
33-
m.pack();
34-
m.setLocationRelativeTo(null);
35-
m.setVisible(true);
36-
if (startfile != null) {
37-
File file = new File(startfile);
38-
if(file.exists())
39-
m.openfile(file);
40-
}
4132
}
4233

43-
4434
public static App getInstance() {
45-
if(m_instance == null)
35+
if (m_instance == null)
4636
m_instance = new App();
4737
return m_instance;
4838
}
49-
50-
51-
public static void main( String[] args )
52-
{
53-
App app = getInstance();
54-
Options options = new Options();
55-
Option help = new Option("h", "help", false, "help");
56-
options.addOption(help);
57-
58-
CommandLine line;
59-
CommandLineParser parser = new DefaultParser();
60-
try {
61-
line = parser.parse( options, args);
62-
if(line.hasOption("help")) {
63-
HelpFormatter formatter = new HelpFormatter();
64-
formatter.printHelp("java -jar jmdviewer.jar [filename.md]", options);
65-
System.exit(0);
66-
}
67-
args = line.getArgs();
68-
if(args != null && args.length > 0) {
69-
app.setStartfile(args[0]);
70-
}
71-
}
72-
catch( ParseException exp ) {
73-
// oops, something went wrong
74-
System.err.println( "Parsing failed. Reason: " + exp.getMessage() );
75-
HelpFormatter formatter = new HelpFormatter();
76-
formatter.printHelp("java -jar jmdviewer.jar [filename.md]", options);
77-
System.exit(1);
78-
}
79-
80-
SwingUtilities.invokeLater(app);
81-
}
39+
40+
private void run(String[] args) {
41+
parseargs(args);
42+
SwingUtilities.invokeLater(new Runnable() {
43+
@Override
44+
public void run() {
45+
MainFrame m = new MainFrame();
46+
m.pack();
47+
m.setLocationRelativeTo(null);
48+
m.setVisible(true);
49+
if (startfile != null) {
50+
File file = new File(startfile);
51+
if (file.exists())
52+
m.openfile(file);
53+
}
54+
}
55+
});
56+
57+
}
58+
59+
private void parseargs(String[] args) {
60+
Options options = new Options();
61+
Option help = new Option("h", "help", false, "help");
62+
options.addOption(help);
63+
options.addOption(
64+
Option.builder().longOpt("html").desc("convert to html").build());
65+
options.addOption(
66+
Option.builder().longOpt("text").desc("convert to txt").build());
67+
options.addOption(
68+
Option.builder("o").longOpt("out").hasArg().argName("filename")
69+
.desc("output to file").build());
70+
71+
CommandLine line;
72+
CommandLineParser parser = new DefaultParser();
73+
try {
74+
line = parser.parse(options, args);
75+
if (line.hasOption("help")) {
76+
HelpFormatter formatter = new HelpFormatter();
77+
formatter.printHelp("java -jar jmdviewer.jar [filename.md]", options);
78+
System.exit(0);
79+
}
80+
81+
if (line.hasOption("html")) {
82+
if (line.getArgs().length < 1) {
83+
System.err.println("filename required for html opt");
84+
System.exit(1);
85+
}
86+
String filename = line.getArgs()[0];
87+
String out = dotohtml(filename);
88+
if (out != null) {
89+
if(line.hasOption("out")) {
90+
String outfilename = line.getOptionValue("out");
91+
savefile(outfilename, out);
92+
System.out.println("saved in " + outfilename);
93+
} else
94+
System.out.println(out);
95+
}
96+
System.exit(0);
97+
}
98+
99+
if (line.hasOption("text")) {
100+
if (line.getArgs().length < 1) {
101+
System.err.println("filename required for text opt");
102+
System.exit(1);
103+
}
104+
String filename = line.getArgs()[0];
105+
String out = dototext(filename);
106+
if (out != null) {
107+
if(line.hasOption("out")) {
108+
String outfilename = line.getOptionValue("out");
109+
savefile(outfilename, out);
110+
System.out.println("saved in " + outfilename);
111+
} else
112+
System.out.println(out);
113+
}
114+
System.exit(0);
115+
}
116+
117+
args = line.getArgs();
118+
if (args != null && args.length > 0) {
119+
setStartfile(args[0]);
120+
}
121+
122+
} catch (ParseException exp) {
123+
// oops, something went wrong
124+
System.err.println("Parsing failed. Reason: " + exp.getMessage());
125+
HelpFormatter formatter = new HelpFormatter();
126+
formatter.printHelp("java -jar jmdviewer.jar [filename.md]", options);
127+
System.exit(1);
128+
}
129+
130+
}
131+
132+
133+
public static void main(String[] args) {
134+
App app = getInstance();
135+
app.run(args);
136+
}
137+
138+
private String dotohtml(String filename) {
139+
MarkdownParser parser = new MarkdownParser();
140+
String rtxt = loadfile(filename);
141+
if(rtxt == null) return null;
142+
parser.parse(rtxt);
143+
return parser.getHTML();
144+
}
145+
146+
private String dototext(String filename) {
147+
MarkdownParser parser = new MarkdownParser();
148+
String rtxt = loadfile(filename);
149+
if(rtxt == null) return null;
150+
parser.parse(rtxt);
151+
return parser.getText();
152+
}
153+
154+
public String loadfile(String filename) {
155+
StringBuilder sb = new StringBuilder(100);
156+
try {
157+
BufferedReader reader = new BufferedReader(new FileReader(filename));
158+
String line;
159+
while ((line = reader.readLine()) != null) {
160+
sb.append(line);
161+
sb.append("\n");
162+
}
163+
reader.close();
164+
} catch (FileNotFoundException e) {
165+
e.printStackTrace();
166+
return null;
167+
} catch (IOException e) {
168+
e.printStackTrace();
169+
return null;
170+
}
171+
return sb.toString();
172+
}
173+
174+
public void savefile(String filename, String text) {
175+
try {
176+
BufferedWriter writer = new BufferedWriter(new FileWriter(filename));
177+
writer.write(text);
178+
writer.flush();
179+
writer.close();
180+
} catch (IOException e) {
181+
e.printStackTrace();
182+
}
183+
}
82184

83185
public String getLastdir() {
84186
return lastdir;

0 commit comments

Comments
 (0)