Skip to content

Commit 2d2fa7d

Browse files
committed
remove AtFileReader
1 parent 4f6b287 commit 2d2fa7d

14 files changed

Lines changed: 236 additions & 304 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public static void main(String[] args) {
4747

4848
````
4949

50-
In addition to `parseOrExit`, there is also a highly configurable `parse` method with no side effects.
50+
In addition to `parseOrExit`, there is also a basic `parse` method with no side effects.
5151
Please see the [wiki](https://github.com/h908714124/jbock/wiki) for details.
5252

5353
### Sample projects

compiler/src/main/java/net/jbock/context/ParseMethod.java

Lines changed: 11 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,13 @@
44
import com.squareup.javapoet.MethodSpec;
55
import com.squareup.javapoet.ParameterSpec;
66
import net.jbock.processor.SourceElement;
7-
import net.jbock.util.AtFileError;
8-
import net.jbock.util.AtFileReader;
97
import net.jbock.util.ExNotSuccess;
10-
import net.jbock.util.ParseRequest;
118

129
import javax.inject.Inject;
13-
import java.util.List;
1410

1511
import static com.squareup.javapoet.ParameterSpec.builder;
1612
import static net.jbock.common.Constants.EITHER;
13+
import static net.jbock.common.Constants.LIST_OF_STRING;
1714
import static net.jbock.common.Constants.STRING_ITERATOR;
1815

1916
@ContextScope
@@ -39,39 +36,27 @@ public class ParseMethod extends CachedMethod {
3936
@Override
4037
MethodSpec define() {
4138

42-
ParameterSpec request = builder(ParseRequest.class, "request").build();
39+
ParameterSpec tokens = builder(LIST_OF_STRING, "tokens").build();
4340
ParameterSpec it = builder(STRING_ITERATOR, "it").build();
44-
ParameterSpec err = builder(AtFileError.class, "err").build();
4541

4642
CodeBlock.Builder code = CodeBlock.builder();
4743

48-
code.addStatement("return $L", CodeBlock.builder()
49-
.add("new $T().read($N)\n", AtFileReader.class, request).indent()
50-
.add(".mapLeft($1N -> $1N.addModel($2N()))\n", err, createModelMethod.get())
51-
.add(".map($T::iterator)\n", List.class)
52-
.add(".flatMap($N -> {\n", it)
53-
.indent().add(coreBlock(it)).unindent()
54-
.add("})").unindent()
55-
.build());
56-
57-
return MethodSpec.methodBuilder("parse")
58-
.addParameter(request)
59-
.returns(generatedTypes.parseResultType())
60-
.addCode(code.build())
61-
.addModifiers(sourceElement.accessModifiers())
62-
.build();
63-
}
64-
65-
private CodeBlock coreBlock(ParameterSpec it) {
44+
code.addStatement("$T $N = $N.iterator()", STRING_ITERATOR, it, tokens);
6645
ParameterSpec state = builder(generatedTypes.statefulParserType(), "statefulParser").build();
6746
ParameterSpec e = builder(Exception.class, "e").build();
68-
return CodeBlock.builder().add("$T $N = new $T();\n", state.type, state, state.type)
47+
code.add("$T $N = new $T();\n", state.type, state, state.type)
6948
.add("try {\n").indent()
7049
.add("return $T.right($N.parse($N).$N());\n", EITHER, state, it, buildMethod.get())
7150
.unindent().add("} catch ($T $N) {\n", ExNotSuccess.class, e).indent()
7251
.add("return $T.left($N.toError($N()));\n",
7352
EITHER, e, createModelMethod.get())
74-
.unindent().add("}\n")
53+
.unindent().add("}\n");
54+
55+
return MethodSpec.methodBuilder("parse")
56+
.addParameter(tokens)
57+
.returns(generatedTypes.parseResultType())
58+
.addCode(code.build())
59+
.addModifiers(sourceElement.accessModifiers())
7560
.build();
7661
}
7762
}

compiler/src/main/java/net/jbock/context/ParseOrExitMethod.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import net.jbock.contrib.StandardErrorHandler;
77
import net.jbock.convert.Mapping;
88
import net.jbock.processor.SourceElement;
9+
import net.jbock.util.AtFileError;
910
import net.jbock.util.ParseRequest;
1011

1112
import javax.inject.Inject;
@@ -42,7 +43,7 @@ MethodSpec define() {
4243

4344
ParameterSpec args = builder(STRING_ARRAY, "args").build();
4445
ParameterSpec notSuccess = builder(generatedTypes.parseResultType(), "notSuccess").build();
45-
ParameterSpec request = builder(ParseRequest.class, "request").build();
46+
ParameterSpec err = builder(AtFileError.class, "err").build();
4647

4748
CodeBlock.Builder code = CodeBlock.builder();
4849
if (allMappings.stream().anyMatch(Mapping::isRequired)) {
@@ -58,14 +59,16 @@ MethodSpec define() {
5859
.addStatement("$T.exit(0)", System.class)
5960
.endControlFlow();
6061
}
61-
code.addStatement("$1T $2N = $1T.maybeExpand($3N)", ParseRequest.class, request, args);
62-
code.add("return $N($N)", parseMethod.get(), request)
62+
63+
code.add("return $T.from($N).expand()\n", ParseRequest.class, args).indent()
64+
.add(".mapLeft($1N -> $1N.addModel($2N()))\n", err, createModelMethod.get())
65+
.add(".flatMap(this::$N)\n", parseMethod.get())
6366
.add(".orElseThrow($N -> {\n", notSuccess).indent()
6467
.addStatement("$T.builder().build().handle($N)",
6568
StandardErrorHandler.class, notSuccess)
6669
.addStatement("$T.exit(1)", System.class)
6770
.addStatement("return new $T()", RuntimeException.class).unindent()
68-
.addStatement("})");
71+
.addStatement("})").unindent();
6972
return methodBuilder("parseOrExit").addParameter(args)
7073
.addModifiers(sourceElement.accessModifiers())
7174
.returns(generatedTypes.parseSuccessType())

core/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ tasks.withType(GenerateModuleMetadata) {
3535

3636
dependencies {
3737
api('io.github.jbock-java:either:1.5')
38+
testImplementation('org.mockito:mockito-core:3.9.0')
3839
testImplementation('org.junit.jupiter:junit-jupiter:5.7.1')
3940
}
4041

core/src/main/java/net/jbock/util/AtFileReader.java

Lines changed: 0 additions & 214 deletions
This file was deleted.

core/src/main/java/net/jbock/util/ParseRequest.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package net.jbock.util;
22

3+
import io.jbock.util.Either;
4+
35
import java.nio.file.Path;
46
import java.nio.file.Paths;
57
import java.util.List;
@@ -18,7 +20,7 @@ public abstract class ParseRequest {
1820
* @param args command line input
1921
* @return a parse request
2022
*/
21-
public static ParseRequest maybeExpand(String[] args) {
23+
public static ParseRequest from(String[] args) {
2224
if (args.length >= 1
2325
&& args[0].length() >= 2
2426
&& args[0].startsWith("@")) {
@@ -67,4 +69,6 @@ public static ParseRequest expand(Path atFile, List<String> rest) {
6769
* @return command line arguments
6870
*/
6971
public abstract List<String> args();
70-
}
72+
73+
public abstract Either<? extends AtFileError, List<String>> expand();
74+
}

0 commit comments

Comments
 (0)