Skip to content

Commit 407912c

Browse files
committed
R Split MarkdownTable to encapsulate Verifiable part
1 parent 88245d2 commit 407912c

File tree

3 files changed

+82
-60
lines changed

3 files changed

+82
-60
lines changed

approvaltests-tests/src/test/java/org/approvaltests/TableTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.approvaltests.legacycode.Range;
44
import org.approvaltests.utils.MarkdownTable;
5+
import org.approvaltests.utils.MarkdownTableBasic;
56
import org.junit.jupiter.api.Test;
67

78
public class TableTest
@@ -18,9 +19,9 @@ void differentCases()
1819
{
1920
// begin-snippet: markdown_table_example
2021
String[] inputs = {"verify json", "verify all", "verify parameters", "verify as json"};
21-
MarkdownTable table = MarkdownTable.withHeaders("Input", "Camel Case", "Snake Case", "Kebab Case");
22+
MarkdownTableBasic table = MarkdownTableBasic.withHeaders("Input", "Camel Case", "Snake Case", "Kebab Case");
2223
table.addRowsForInputs(inputs, this::toCamelCase, this::toSnakeCase, this::toKebabCase);
23-
Approvals.verify(table);
24+
Approvals.verify(new MarkdownTable(table));
2425
// end-snippet
2526
}
2627
private String toKebabCase(String input)

approvaltests/src/main/java/org/approvaltests/utils/MarkdownTable.java

Lines changed: 6 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -8,71 +8,19 @@
88
import org.lambda.functions.Function1;
99
import org.lambda.query.Queryable;
1010

11-
public class MarkdownTable implements Verifiable, MarkdownCompatible
11+
public class MarkdownTable extends MarkdownTableBasic implements Verifiable
1212
{
13-
private String markdown;
14-
public static <I, O> MarkdownTable create(I[] inputs, Function1<I, O> o, String column1, String column2)
15-
{
16-
MarkdownTable table = new MarkdownTable().withColumnHeaders(column1, column2);
17-
for (I input : inputs)
18-
{
19-
table.addRow(input, o.call(input));
20-
}
21-
return table;
22-
}
23-
public static MarkdownTable withHeaders(String... columnNames)
24-
{
25-
MarkdownTable table = new MarkdownTable();
26-
return table.withColumnHeaders(columnNames);
27-
}
28-
public <I> MarkdownTable addRowsForInputs(I[] inputs, Function1<I, Object>... transfers)
29-
{
30-
for (I input : inputs)
31-
{
32-
Queryable<Object> row = Queryable.as(transfers).select(f -> f.call(input));
33-
row.add(0, input);
34-
addRow(row.toArray());
35-
}
36-
return this;
37-
}
38-
public MarkdownTable addRow(Object... columns)
39-
{
40-
markdown += printRow(columns);
41-
return this;
13+
public MarkdownTable(MarkdownTableBasic markdownTableBasic) {
14+
this.markdown = markdownTableBasic.toMarkdown();
4215
}
43-
public MarkdownTable withColumnHeaders(String... headers)
16+
17+
public static <I, O> MarkdownTable create(I[] inputs, Function1<I, O> o, String column1, String column2)
4418
{
45-
markdown = printColumnHeaders(headers);
46-
return this;
19+
return new MarkdownTable(MarkdownTableBasic.create(inputs, o, column1, column2));
4720
}
4821
@Override
4922
public VerifyParameters getVerifyParameters(Options options)
5023
{
5124
return new VerifyParameters(options.forFile().withExtension(".md"));
5225
}
53-
@Override
54-
public String toString()
55-
{
56-
return toMarkdown();
57-
}
58-
@Override
59-
public String toMarkdown()
60-
{
61-
return markdown;
62-
}
63-
public static String printColumnHeaders(String... headers)
64-
{
65-
return printRow(headers) + printRow(ArrayUtils.of("---", headers.length));
66-
}
67-
public static String printRow(Object... columns)
68-
{
69-
StringBuffer b = new StringBuffer();
70-
b.append("|");
71-
for (int x = 0; x < columns.length; ++x)
72-
{
73-
b.append(String.format(" %s |", columns[x]));
74-
}
75-
b.append("\n");
76-
return b.toString();
77-
}
7826
}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package org.approvaltests.utils;
2+
3+
import com.spun.util.ArrayUtils;
4+
import org.approvaltests.core.Options;
5+
import org.approvaltests.core.Verifiable;
6+
import org.approvaltests.core.VerifyParameters;
7+
import org.approvaltests.strings.MarkdownCompatible;
8+
import org.lambda.functions.Function1;
9+
import org.lambda.query.Queryable;
10+
11+
public class MarkdownTableBasic implements MarkdownCompatible
12+
{
13+
protected String markdown;
14+
public static <I, O> MarkdownTableBasic create(I[] inputs, Function1<I, O> o, String column1, String column2)
15+
{
16+
MarkdownTableBasic table = new MarkdownTableBasic().withColumnHeaders(column1, column2);
17+
for (I input : inputs)
18+
{
19+
table.addRow(input, o.call(input));
20+
}
21+
return table;
22+
}
23+
public static MarkdownTableBasic withHeaders(String... columnNames)
24+
{
25+
MarkdownTableBasic table = new MarkdownTableBasic();
26+
return table.withColumnHeaders(columnNames);
27+
}
28+
public <I> MarkdownTableBasic addRowsForInputs(I[] inputs, Function1<I, Object>... transfers)
29+
{
30+
for (I input : inputs)
31+
{
32+
Queryable<Object> row = Queryable.as(transfers).select(f -> f.call(input));
33+
row.add(0, input);
34+
addRow(row.toArray());
35+
}
36+
return this;
37+
}
38+
public MarkdownTableBasic addRow(Object... columns)
39+
{
40+
markdown += printRow(columns);
41+
return this;
42+
}
43+
public MarkdownTableBasic withColumnHeaders(String... headers)
44+
{
45+
markdown = printColumnHeaders(headers);
46+
return this;
47+
}
48+
@Override
49+
public String toString()
50+
{
51+
return toMarkdown();
52+
}
53+
@Override
54+
public String toMarkdown()
55+
{
56+
return markdown;
57+
}
58+
public static String printColumnHeaders(String... headers)
59+
{
60+
return printRow(headers) + printRow(ArrayUtils.of("---", headers.length));
61+
}
62+
public static String printRow(Object... columns)
63+
{
64+
StringBuffer b = new StringBuffer();
65+
b.append("|");
66+
for (int x = 0; x < columns.length; ++x)
67+
{
68+
b.append(String.format(" %s |", columns[x]));
69+
}
70+
b.append("\n");
71+
return b.toString();
72+
}
73+
}

0 commit comments

Comments
 (0)