Remove increment/decrement blockIndent from visitor

This commit is contained in:
Dimitry Ivanov 2018-12-02 15:09:15 +03:00
parent 19cd94febb
commit 5b61521e30
5 changed files with 16 additions and 51 deletions

View File

@ -8,6 +8,7 @@ import android.support.annotation.ColorInt;
import android.support.annotation.NonNull;
import android.util.TypedValue;
import org.commonmark.node.Node;
import org.commonmark.parser.Parser;
import ru.noties.markwon.AbstractMarkwonPlugin;
@ -70,9 +71,7 @@ public class TaskListPlugin extends AbstractMarkwonPlugin {
visitor.ensureNewLine();
visitor.incrementBlockIndent();
visitor.visitChildren(taskListBlock);
visitor.decrementBlockIndent();
if (visitor.hasNext(taskListBlock)) {
visitor.ensureNewLine();
@ -86,20 +85,16 @@ public class TaskListPlugin extends AbstractMarkwonPlugin {
final int length = visitor.length();
final int indent = visitor.blockIndent();
visitor.blockIntent(indent + taskListItem.indent());
visitor.visitChildren(taskListItem);
visitor.setSpans(length, new TaskListSpan(
visitor.theme(),
drawable,
visitor.blockIndent(),
indent(taskListItem) + taskListItem.indent(),
taskListItem.done()));
if (visitor.hasNext(taskListItem)) {
visitor.ensureNewLine();
}
visitor.blockIntent(indent);
}
});
}
@ -114,4 +109,17 @@ public class TaskListPlugin extends AbstractMarkwonPlugin {
typedArray.recycle();
}
}
private static int indent(@NonNull Node node) {
int indent = 0;
Node parent = node.getParent();
if (parent != null) {
parent = parent.getParent();
while (parent != null) {
indent += 1;
parent = parent.getParent();
}
}
return indent;
}
}

View File

@ -19,10 +19,6 @@ public interface MarkwonVisitor extends Visitor {
@NonNull
<N extends Node> Builder on(@NonNull Class<N> node, @Nullable NodeVisitor<? super N> nodeVisitor);
// to obtain currently registered one
@Nullable
<N extends Node> NodeVisitor<N> registeredVisitor(@NonNull Class<N> node);
@NonNull
MarkwonVisitor build(@NonNull MarkwonConfiguration configuration);
}
@ -43,14 +39,6 @@ public interface MarkwonVisitor extends Visitor {
boolean hasNext(@NonNull Node node);
void incrementBlockIndent();
void decrementBlockIndent();
void blockIntent(int blockIndent);
int blockIndent();
void incrementListLevel();
void decrementListLevel();

View File

@ -43,7 +43,6 @@ class MarkwonVisitorImpl implements MarkwonVisitor {
private final SpannableBuilder builder = new SpannableBuilder();
private int blockQuoteIndent;
private int listLevel;
private MarkwonVisitorImpl(
@ -216,26 +215,6 @@ class MarkwonVisitorImpl implements MarkwonVisitor {
return node.getNext() != null;
}
@Override
public void incrementBlockIndent() {
blockQuoteIndent += 1;
}
@Override
public void decrementBlockIndent() {
blockQuoteIndent -= 1;
}
@Override
public void blockIntent(int blockIndent) {
this.blockQuoteIndent = blockIndent;
}
@Override
public int blockIndent() {
return blockQuoteIndent;
}
@Override
public void incrementListLevel() {
listLevel += 1;
@ -292,13 +271,6 @@ class MarkwonVisitorImpl implements MarkwonVisitor {
return this;
}
@Nullable
@Override
public <N extends Node> NodeVisitor<N> registeredVisitor(@NonNull Class<N> node) {
//noinspection unchecked
return (NodeVisitor<N>) nodes.get(node);
}
@NonNull
@Override
public MarkwonVisitor build(@NonNull MarkwonConfiguration configuration) {

View File

@ -13,10 +13,9 @@ public class BlockQuoteNodeVisitor implements MarkwonVisitor.NodeVisitor<BlockQu
visitor.ensureNewLine();
final int length = visitor.length();
visitor.incrementBlockIndent();
visitor.visitChildren(blockQuote);
visitor.setSpans(length, visitor.factory().blockQuote(visitor.theme()));
visitor.decrementBlockIndent();
if (visitor.hasNext(blockQuote)) {
visitor.ensureNewLine();

View File

@ -15,7 +15,6 @@ public class ListItemNodeVisitor implements MarkwonVisitor.NodeVisitor<ListItem>
final int length = visitor.length();
visitor.incrementBlockIndent();
visitor.incrementListLevel();
final Node parent = listItem.getParent();
@ -38,7 +37,6 @@ public class ListItemNodeVisitor implements MarkwonVisitor.NodeVisitor<ListItem>
}
visitor.decrementBlockIndent();
visitor.decrementListLevel();
if (visitor.hasNext(listItem)) {