@NonNull public CharSequence render(@NonNull SpannableConfiguration configuration, @NonNull Node node) { final SpannableBuilder builder = new SpannableBuilder(); node.accept(new SpannableMarkdownVisitor(configuration, builder)); return builder.text(); } }
@Before public void before() { builder = new SpannableBuilder(); }
.build(); final SpannableBuilder builder = new SpannableBuilder();
@Test public void append_spanned_reversed() { // #append is called with reversed spanned content -> spans should be added as-are final SpannableBuilder spannableBuilder = new SpannableBuilder(); for (int i = 0; i < 3; i++) { spannableBuilder.append(String.valueOf(i), i); } assertTrue(builder.getSpans(0, builder.length()).isEmpty()); builder.append(spannableBuilder.spannableStringBuilder()); final SpannableStringBuilder spannableStringBuilder = builder.spannableStringBuilder(); final Object[] spans = spannableStringBuilder.getSpans(0, spannableStringBuilder.length(), Object.class); assertEquals(3, spans.length); for (int i = 0, length = spans.length; i < length; i++) { // in the end order should be as we expect in order to properly render it // (no matter if reversed is used or not) assertEquals(length - 1 - i, spans[i]); } }
final SpannableBuilder builder = new SpannableBuilder();
final SpannableBuilder builder = new SpannableBuilder(); final SpannableMarkdownVisitor visitor = new SpannableMarkdownVisitor(SpannableConfiguration.create(this), builder) {
@Test public void test() { final TestData data = TestDataReader.readTest(file); final SpannableConfiguration configuration = configuration(data.config()); final SpannableBuilder builder = new SpannableBuilder(); final SpannableMarkdownVisitor visitor = new SpannableMarkdownVisitor(configuration, builder); final Node node = Markwon.createParser().parse(data.input()); node.accept(visitor); final SpannableStringBuilder stringBuilder = builder.spannableStringBuilder(); final TestValidator validator = TestValidator.create(file); int index = 0; for (TestNode testNode : data.output()) { index = validator.validate(stringBuilder, index, testNode); } // assert that the whole thing is processed assertEquals("`" + stringBuilder + "`", stringBuilder.length(), index); final Object[] spans = stringBuilder.getSpans(0, stringBuilder.length(), Object.class); final int length = spans != null ? spans.length : 0; assertEquals(Arrays.toString(spans), validator.processedSpanNodesCount(), length); }