fix inline rendering of block elements
This commit is contained in:
@@ -20,6 +20,7 @@ import org.jsoup.safety.Safelist;
|
|||||||
import org.jsoup.select.NodeVisitor;
|
import org.jsoup.select.NodeVisitor;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
@@ -126,22 +127,24 @@ public class HtmlParser{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final static List<String> blockElements = Arrays.asList("p", "ul", "ol", "blockquote", "h1", "h2", "h3", "h4", "h5", "h6");
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tail(@NonNull Node node, int depth){
|
public void tail(@NonNull Node node, int depth){
|
||||||
if(node instanceof Element el){
|
if(node instanceof Element el){
|
||||||
if("span".equals(el.nodeName()) && el.hasClass("ellipsis")){
|
if("span".equals(el.nodeName()) && el.hasClass("ellipsis")){
|
||||||
ssb.append("…", new DeleteWhenCopiedSpan(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
ssb.append("…", new DeleteWhenCopiedSpan(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||||
}else if("p".equals(el.nodeName()) || "ul".equals(el.nodeName()) || "ol".equals(el.nodeName())){
|
}else if(blockElements.contains(el.nodeName()) && node.nextSibling()!=null){
|
||||||
if(node.nextSibling()!=null)
|
ssb.append("\n\n");
|
||||||
ssb.append("\n\n");
|
}
|
||||||
}else if(!openSpans.isEmpty()){
|
if(!openSpans.isEmpty()){
|
||||||
SpanInfo si=openSpans.get(openSpans.size()-1);
|
SpanInfo si=openSpans.get(openSpans.size()-1);
|
||||||
if(si.element==el){
|
if(si.element==el){
|
||||||
ssb.setSpan(si.span, si.start, ssb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
ssb.setSpan(si.span, si.start, ssb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||||
openSpans.remove(openSpans.size()-1);
|
openSpans.remove(openSpans.size()-1);
|
||||||
}
|
}
|
||||||
if("li".equals(el.nodeName())) {
|
if("li".equals(el.nodeName()) && node.nextSibling()!=null) {
|
||||||
if(node.nextSibling()!=null) ssb.append('\n');
|
ssb.append('\n');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user