View Javadoc
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  			// e.g. "[avc-base-testutil](https://gitlab.com/avcompris/avc-base-testutil/)"
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  }