提交 53f67629 authored 作者: Evgenij Ryazanov's avatar Evgenij Ryazanov

Parse http:// and https:// in GenerateDoc

上级 d9fef6f5
...@@ -178,6 +178,7 @@ public class GenerateDoc { ...@@ -178,6 +178,7 @@ public class GenerateDoc {
text = StringUtils.replaceAll(text, text = StringUtils.replaceAll(text,
"<br />", " "); "<br />", " ");
text = addCode(text); text = addCode(text);
text = addLinks(text);
map.put("text", text); map.put("text", text);
} }
...@@ -254,4 +255,42 @@ public class GenerateDoc { ...@@ -254,4 +255,42 @@ public class GenerateDoc {
s = StringUtils.replaceAll(s, "<code>GB</code>", "GB"); s = StringUtils.replaceAll(s, "<code>GB</code>", "GB");
return s; return s;
} }
private static String addLinks(String text) {
int start = nextLink(text, 0);
if (start < 0) {
return text;
}
StringBuilder buff = new StringBuilder(text.length());
int len = text.length();
int offset = 0;
do {
int end = start + 7;
for (; end < len && !Character.isWhitespace(text.charAt(end)); end++) {
// Nothing to do
}
buff.append(text, offset, start) //
.append("<a href=\"").append(text, start, end).append("\">") //
.append(text, start, end) //
.append("</a>");
offset = end;
} while ((start = nextLink(text, offset)) >= 0);
return buff.append(text, offset, len).toString();
}
private static int nextLink(String text, int i) {
int found = -1;
found = findLink(text, i, "http://", found);
found = findLink(text, i, "https://", found);
return found;
}
private static int findLink(String text, int offset, String prefix, int found) {
int idx = text.indexOf(prefix, offset);
if (idx >= 0 && (found < 0 || idx < found)) {
found = idx;
}
return found;
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论