1 package net.avcompris.devops;
2
3 import static com.google.common.base.Preconditions.checkNotNull;
4 import static com.google.common.collect.Lists.newArrayList;
5 import static java.nio.charset.StandardCharsets.UTF_8;
6 import static net.avcompris.commons3.databeans.DataBeans.instantiate;
7 import static org.apache.commons.lang3.StringUtils.substringAfter;
8 import static org.apache.commons.lang3.StringUtils.substringBetween;
9
10 import java.io.File;
11 import java.io.IOException;
12 import java.util.List;
13
14 import org.apache.commons.io.FileUtils;
15 import org.apache.commons.lang3.NotImplementedException;
16
17 import com.google.common.collect.Iterables;
18
19 public abstract class MarkdownUtils {
20
21 public static Link[] extractLinksFromMarkdown(final File mdFile) throws IOException {
22
23 checkNotNull(mdFile, "mdFile");
24
25 final List<Link> links = newArrayList();
26
27 for (final String line : FileUtils.readLines(mdFile, UTF_8.name())) {
28
29
30
31 if (line.contains("](")) {
32
33 final String url = substringBetween(line, "](", ")");
34
35 final String text = substringBetween(line, "[", "](");
36
37 links.add(instantiate(Link.class)
38 .setUrl(url)
39 .setText(text));
40
41 if (substringAfter(line, ")").contains("[")) {
42
43 throw new NotImplementedException("line: " + line);
44 }
45 }
46 }
47
48 return Iterables.toArray(links, Link.class);
49 }
50 }