Skip to content

Commit

Permalink
review DSLMethod (#122)
Browse files Browse the repository at this point in the history
  • Loading branch information
boretti committed Apr 9, 2018
1 parent fac794a commit 52c29fc
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 45 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,12 @@
*
*/
public class DSLMethod {
public static Pattern DECLARATION_PARSER = Pattern.compile("^\\s*.*\\s+([0-9A-Za-z_]+)\\s*$");
public static final Pattern DECLARATION_PARSER = Pattern.compile("^\\s*.*\\s+([0-9A-Za-z_]+)\\s*$");

private final String javadoc;
private final String declaration;
private final String fullDeclaration;
private final String implementation;
private final String methodName;
private final String realArguments;
private final String realArgumentsName;
private final String fullMethodName;

private static String cleanJavadoc(String javadoc[]) {
return "/**\n" + Arrays.stream(javadoc).map(s -> " * " + s).collect(joining("\n")) + "\n */\n";
Expand Down Expand Up @@ -72,50 +70,24 @@ public DSLMethod(String javadoc, String declaration, String arguments[], String
}

public DSLMethod(String javadoc, String declaration, String arguments[][], String implementation[]) {
this.javadoc = javadoc;
this.declaration = declaration;
this.implementation = Arrays.stream(implementation).map(s -> " " + s).collect(joining("\n")) + "\n";
this.realArguments = Arrays.stream(arguments).map(a -> a[0] + " " + a[1]).collect(joining(","));
this.realArgumentsName = Arrays.stream(arguments).map(a -> a[1]).collect(joining(","));
String realArguments = Arrays.stream(arguments).map(a -> a[0] + " " + a[1]).collect(joining(","));
String realArgumentsName = Arrays.stream(arguments).map(a -> a[1]).collect(joining(","));
Matcher m = DECLARATION_PARSER.matcher(declaration);
if (!m.matches()) {
throw new IllegalArgumentException("Unable to parse the received declaration");
}
methodName = m.group(1);
this.javadoc = javadoc;
this.implementation = Arrays.stream(implementation).map(s -> " " + s).collect(joining("\n")) + "\n";
this.fullDeclaration = declaration + "(" + realArguments + ")";
this.fullMethodName = m.group(1) + "(" + realArgumentsName + ")";
}

public String asStaticImplementation() {
return javadoc + "@org.hamcrest.Factory\npublic static " + declaration + "(" + realArguments + ")" + " {\n"
+ implementation + "}\n";
return javadoc + "@org.hamcrest.Factory\npublic static " + fullDeclaration + " {\n" + implementation + "}\n";
}

public String asDefaultReference(String target) {
return javadoc + "default " + declaration + "(" + realArguments + ")" + " {\n return " + target + "."
+ methodName + "(" + realArgumentsName + ");\n}\n";
}

public String getJavadoc() {
return javadoc;
}

public String getDeclaration() {
return declaration;
}

public String getImplementation() {
return implementation;
}

public String getMethodName() {
return methodName;
}

public String getRealArguments() {
return realArguments;
}

public String getRealArgumentsName() {
return realArgumentsName;
return javadoc + "default " + fullDeclaration + " {\n return " + target + "." + fullMethodName + ";\n}\n";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,7 @@ public void testDSLMethodTwoArgument() {
new String[][] { { "java.lang.String", "one" }, { "java.lang.String", "two" } }, "l1");
assertThat(m.asStaticImplementation()).is(
"/**\n * l1\n * l2\n */\n@org.hamcrest.Factory\npublic static boolean isOK(java.lang.String one,java.lang.String two) {\n l1\n}\n");
assertThat(m.getMethodName()).is("isOK");
assertThat(m.getRealArguments()).is("java.lang.String one,java.lang.String two");
assertThat(m.getRealArgumentsName()).is("one,two");
assertThat(m.asDefaultReference("target")).is(
"/**\n * l1\n * l2\n */\ndefault boolean isOK(java.lang.String one,java.lang.String two) {\n return target.isOK(one,two);\n}\n");
assertThat(m.getJavadoc()).is("/**\n * l1\n * l2\n */\n");
assertThat(m.getDeclaration()).is("boolean isOK");
assertThat(m.getImplementation()).is(" l1\n");
}
}

0 comments on commit 52c29fc

Please sign in to comment.