Skip to content

Commit f04acb8

Browse files
committed
Refactoring: MagicParser -> MagicsResolver
as parsing is only one step in the transformation that it does. The second step is applying the transpiler. Both of them together is "resolving"
1 parent e65566c commit f04acb8

File tree

9 files changed

+38
-37
lines changed

9 files changed

+38
-37
lines changed

jjava-distro/src/main/java/org/dflib/jjava/distro/Opts.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
class Opts {
77

8-
// TODO: see 7205d03766c8 and c91ade8fec0cdc. A similar split method in MagicParser got altered in a few subtle
8+
// TODO: see 7205d03766c8 and c91ade8fec0cdc. A similar split method in MagicsResolver got altered in a few subtle
99
// ways... Do those changes alloy here, and should we have a single splitter?
1010
// 7205d03766c8
1111
// - if (current.length() > 0 && inQuotes) {

jjava-jupyter/src/main/java/org/dflib/jjava/jupyter/kernel/BaseKernel.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import org.dflib.jjava.jupyter.kernel.display.common.Url;
1212
import org.dflib.jjava.jupyter.kernel.history.HistoryEntry;
1313
import org.dflib.jjava.jupyter.kernel.history.HistoryManager;
14-
import org.dflib.jjava.jupyter.kernel.magic.MagicParser;
14+
import org.dflib.jjava.jupyter.kernel.magic.MagicsResolver;
1515
import org.dflib.jjava.jupyter.kernel.magic.MagicsRegistry;
1616
import org.dflib.jjava.jupyter.kernel.util.PathsHandler;
1717
import org.dflib.jjava.jupyter.kernel.util.StringStyler;
@@ -85,7 +85,7 @@ public abstract class BaseKernel {
8585
protected final JupyterIO io;
8686
protected final CommManager commManager;
8787
protected final Renderer renderer;
88-
protected final MagicParser magicParser;
88+
protected final MagicsResolver magicsResolver;
8989
protected final MagicsRegistry magicsRegistry;
9090
protected final Map<String, Extension> extensions;
9191
protected final boolean extensionsEnabled;
@@ -111,7 +111,7 @@ protected BaseKernel(
111111
JupyterIO io,
112112
CommManager commManager,
113113
Renderer renderer,
114-
MagicParser magicParser,
114+
MagicsResolver magicsResolver,
115115
MagicsRegistry magicsRegistry,
116116
boolean extensionsEnabled,
117117
StringStyler errorStyler) {
@@ -127,7 +127,7 @@ protected BaseKernel(
127127
this.io = Objects.requireNonNull(io);
128128
this.commManager = Objects.requireNonNull(commManager);
129129
this.renderer = Objects.requireNonNull(renderer);
130-
this.magicParser = magicParser;
130+
this.magicsResolver = magicsResolver;
131131
this.magicsRegistry = magicsRegistry;
132132
this.extensionsEnabled = extensionsEnabled;
133133
this.extensions = new ConcurrentHashMap<>();
@@ -156,8 +156,8 @@ public MagicsRegistry getMagicsRegistry() {
156156
return magicsRegistry;
157157
}
158158

159-
public MagicParser getMagicParser() {
160-
return magicParser;
159+
public MagicsResolver getMagicsResolver() {
160+
return magicsResolver;
161161
}
162162

163163
public JupyterIO getIO() {

jjava-jupyter/src/main/java/org/dflib/jjava/jupyter/kernel/BaseKernelBuilder.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import org.dflib.jjava.jupyter.kernel.history.HistoryManager;
66
import org.dflib.jjava.jupyter.kernel.magic.CellMagic;
77
import org.dflib.jjava.jupyter.kernel.magic.LineMagic;
8-
import org.dflib.jjava.jupyter.kernel.magic.MagicParser;
8+
import org.dflib.jjava.jupyter.kernel.magic.MagicsResolver;
99
import org.dflib.jjava.jupyter.kernel.magic.MagicTranspiler;
1010
import org.dflib.jjava.jupyter.kernel.magic.MagicsRegistry;
1111
import org.dflib.jjava.jupyter.kernel.util.StringStyler;
@@ -24,7 +24,7 @@ public abstract class BaseKernelBuilder<
2424
protected String name;
2525
protected String version;
2626
protected Charset jupyterIOEncoding;
27-
protected MagicParser magicParser;
27+
protected MagicsResolver magicsResolver;
2828
protected MagicTranspiler magicTranspiler;
2929
protected HistoryManager historyManager;
3030
protected Boolean extensionsEnabled;
@@ -64,8 +64,8 @@ public B cellMagic(String name, CellMagic<?, ?> magic) {
6464
return (B) this;
6565
}
6666

67-
public B magicParser(MagicParser magicParser) {
68-
this.magicParser = magicParser;
67+
public B magicsResolver(MagicsResolver magicsResolver) {
68+
this.magicsResolver = magicsResolver;
6969
return (B) this;
7070
}
7171

jjava-jupyter/src/main/java/org/dflib/jjava/jupyter/kernel/magic/MagicTranspiler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import java.util.stream.Collectors;
99

1010
/**
11-
* A converter (aka "transpiler") of the generic magic syntax into kernel-specific syntax (such as Java).
11+
* A converter (aka "transpiler") of generic syntax of a single magic into kernel-specific syntax (such as Java).
1212
*/
1313
public class MagicTranspiler {
1414

jjava-jupyter/src/main/java/org/dflib/jjava/jupyter/kernel/magic/MagicParser.java renamed to jjava-jupyter/src/main/java/org/dflib/jjava/jupyter/kernel/magic/MagicsResolver.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,15 @@
77

88
/**
99
* Locates line and cell magic syntax in the cell code and replaces it with code native to the underlying kernel.
10+
* Code replacement happens via {@link MagicTranspiler}.
1011
*/
11-
public class MagicParser {
12+
public class MagicsResolver {
1213

1314
private final Pattern lineMagicPattern;
1415
private final Pattern cellMagicPattern;
1516
private final MagicTranspiler magicTranspiler;
1617

17-
public MagicParser(String lineMagicStart, String cellMagicStart, MagicTranspiler magicTranspiler) {
18+
public MagicsResolver(String lineMagicStart, String cellMagicStart, MagicTranspiler magicTranspiler) {
1819
this.lineMagicPattern = Pattern.compile(lineMagicStart + "(?<args>\\w.*?)$", Pattern.MULTILINE);
1920
this.cellMagicPattern = Pattern.compile("^(?<argsLine>" + cellMagicStart + "(?<args>\\w.*?))\\R(?<body>(?sU).+?)$");
2021
this.magicTranspiler = magicTranspiler;
@@ -23,7 +24,7 @@ public MagicParser(String lineMagicStart, String cellMagicStart, MagicTranspiler
2324
/**
2425
* Replaces cell and line magics in the source with native kernel code.
2526
*/
26-
public String resolveMagics(String cellSource) {
27+
public String resolve(String cellSource) {
2728
ParsedCellMagic parsedCell = parseCellMagic(cellSource);
2829
return parsedCell != null
2930
? magicTranspiler.transpileCell(parsedCell)

jjava-jupyter/src/test/java/org/dflib/jjava/jupyter/kernel/magic/MagicsArgsTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public class MagicsArgsTest {
2222
@ParameterizedTest(name = "{index}: \"{0}\" with \"{1}\"")
2323
@MethodSource
2424
public void values(MagicsArgs schema, String args, Matcher<Map<String, List<String>>> matcher) {
25-
List<String> rawArgs = MagicParser.split(args);
25+
List<String> rawArgs = MagicsResolver.split(args);
2626
Map<String, List<String>> actual = assertDoesNotThrow(() -> schema.parse(rawArgs));
2727

2828
assertThat(actual, matcher);
@@ -143,7 +143,7 @@ public static Stream<Arguments> values() {
143143
@ParameterizedTest(name = "{index}: \"{0}\" with \"{1}\"")
144144
@MethodSource
145145
public void flags(MagicsArgs schema, String args, Matcher<Map<String, List<String>>> matcher) {
146-
List<String> rawArgs = MagicParser.split(args);
146+
List<String> rawArgs = MagicsResolver.split(args);
147147
Map<String, List<String>> actual = Assertions.assertDoesNotThrow(() -> schema.parse(rawArgs));
148148

149149
assertThat(actual, matcher);
@@ -182,7 +182,7 @@ public static Stream<Arguments> flags() {
182182
@ParameterizedTest(name = "{index}: \"{0}\" with \"{1}\"")
183183
@MethodSource
184184
public void keywords(MagicsArgs schema, String args, Matcher<Map<String, List<String>>> matcher) {
185-
List<String> rawArgs = MagicParser.split(args);
185+
List<String> rawArgs = MagicsResolver.split(args);
186186
Map<String, List<String>> actual = Assertions.assertDoesNotThrow(() -> schema.parse(rawArgs));
187187

188188
assertThat(actual, matcher);
@@ -226,7 +226,7 @@ public static Stream<Arguments> keywords() {
226226
@ParameterizedTest(name = "{index}: \"{0}\" with \"{1}\"")
227227
@MethodSource
228228
public void flagsAndKeyWords(MagicsArgs schema, String args, Matcher<Map<String, List<String>>> matcher) {
229-
List<String> rawArgs = MagicParser.split(args);
229+
List<String> rawArgs = MagicsResolver.split(args);
230230
Map<String, List<String>> actual = Assertions.assertDoesNotThrow(() -> schema.parse(rawArgs));
231231

232232
assertThat(actual, matcher);
@@ -246,7 +246,7 @@ public static Stream<Arguments> flagsAndKeyWords() {
246246
@MethodSource
247247
public void positionalsAndFlagsAndKeywords(MagicsArgs schema, String args,
248248
Matcher<Map<String, List<String>>> matcher) {
249-
List<String> rawArgs = MagicParser.split(args);
249+
List<String> rawArgs = MagicsResolver.split(args);
250250
Map<String, List<String>> actual = Assertions.assertDoesNotThrow(() -> schema.parse(rawArgs));
251251

252252
assertThat(actual, matcher);
@@ -271,7 +271,7 @@ public static Stream<Arguments> positionalsAndFlagsAndKeywords() {
271271
@ParameterizedTest(name = "{index}: \"{0}\" with \"{1}\"")
272272
@MethodSource
273273
public void strange(MagicsArgs schema, String args, Matcher<Map<String, List<String>>> matcher) {
274-
List<String> rawArgs = MagicParser.split(args);
274+
List<String> rawArgs = MagicsResolver.split(args);
275275
Map<String, List<String>> actual = Assertions.assertDoesNotThrow(() -> schema.parse(rawArgs));
276276

277277
assertThat(actual, matcher);
@@ -300,7 +300,7 @@ public static Stream<Arguments> strange() {
300300
@ParameterizedTest(name = "{index}: \"{0}\" with \"{1}\"")
301301
@MethodSource
302302
public void any_throws(MagicsArgs schema, String args) {
303-
List<String> rawArgs = MagicParser.split(args);
303+
List<String> rawArgs = MagicsResolver.split(args);
304304

305305
assertThrows(MagicArgsParseException.class, () -> schema.parse(rawArgs));
306306
}

jjava-jupyter/src/test/java/org/dflib/jjava/jupyter/kernel/magic/MagicParserTest.java renamed to jjava-jupyter/src/test/java/org/dflib/jjava/jupyter/kernel/magic/MagicsResolverTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import static org.junit.jupiter.api.Assertions.assertEquals;
88
import static org.junit.jupiter.api.Assertions.assertNotNull;
99

10-
public class MagicParserTest {
10+
public class MagicsResolverTest {
1111

1212
@Test
1313
public void parseCellMagic() {
@@ -87,12 +87,12 @@ public void transpileLineMagics_startOfLineParserAllowsWhitespace() {
8787
assertEquals(expectedTransformedCell, transformedCell);
8888
}
8989

90-
static MagicParser inlineParser(MagicTranspiler transpiler) {
91-
return new MagicParser("//%", "//%%", transpiler);
90+
static MagicsResolver inlineParser(MagicTranspiler transpiler) {
91+
return new MagicsResolver("//%", "//%%", transpiler);
9292
}
9393

94-
static MagicParser startOfLineParser(MagicTranspiler transpiler) {
95-
return new MagicParser("^\\s*//%", "//%%", transpiler);
94+
static MagicsResolver startOfLineParser(MagicTranspiler transpiler) {
95+
return new MagicsResolver("^\\s*//%", "//%%", transpiler);
9696
}
9797

9898
static final MagicTranspiler emptyTranspiler = new MagicTranspiler() {

jjava-kernel/src/main/java/org/dflib/jjava/kernel/JavaKernel.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import org.dflib.jjava.jupyter.kernel.display.DisplayData;
1717
import org.dflib.jjava.jupyter.kernel.display.Renderer;
1818
import org.dflib.jjava.jupyter.kernel.history.HistoryManager;
19-
import org.dflib.jjava.jupyter.kernel.magic.MagicParser;
19+
import org.dflib.jjava.jupyter.kernel.magic.MagicsResolver;
2020
import org.dflib.jjava.jupyter.kernel.magic.MagicTranspiler;
2121
import org.dflib.jjava.jupyter.kernel.magic.MagicsRegistry;
2222
import org.dflib.jjava.jupyter.kernel.util.CharPredicate;
@@ -72,7 +72,7 @@ protected JavaKernel(
7272
JupyterIO io,
7373
CommManager commManager,
7474
Renderer renderer,
75-
MagicParser magicParser,
75+
MagicsResolver magicsResolver,
7676
MagicsRegistry magicsRegistry,
7777
boolean extensionsEnabled,
7878
StringStyler errorStyler,
@@ -88,7 +88,7 @@ protected JavaKernel(
8888
io,
8989
commManager,
9090
renderer,
91-
magicParser,
91+
magicsResolver,
9292
magicsRegistry,
9393
extensionsEnabled,
9494
errorStyler);
@@ -231,7 +231,7 @@ private List<String> formatEvaluationInterruptedException(EvaluationInterruptedE
231231
*/
232232
@Override
233233
public Object evalRaw(String source) {
234-
return evaluator.eval(magicParser.resolveMagics(source));
234+
return evaluator.eval(magicsResolver.resolve(source));
235235
}
236236

237237
@Override
@@ -385,7 +385,7 @@ public JavaKernel build() {
385385
buildJupyterIO(jupyterEncoding),
386386
buildCommManager(),
387387
buildRenderer(),
388-
buildMagicParser(magicTranspiler),
388+
buildMagicsResolver(magicTranspiler),
389389
buildMagicsRegistry(),
390390
buildExtensionsEnabled(),
391391
buildErrorStyler(),

jjava-kernel/src/main/java/org/dflib/jjava/kernel/JavaKernelBuilder.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import jdk.jshell.JShell;
44
import org.dflib.jjava.jupyter.kernel.BaseKernelBuilder;
55
import org.dflib.jjava.jupyter.kernel.LanguageInfo;
6-
import org.dflib.jjava.jupyter.kernel.magic.MagicParser;
6+
import org.dflib.jjava.jupyter.kernel.magic.MagicsResolver;
77
import org.dflib.jjava.jupyter.kernel.magic.MagicTranspiler;
88
import org.dflib.jjava.kernel.execution.CodeEvaluator;
99
import org.dflib.jjava.kernel.execution.JJavaExecutionControlProvider;
@@ -75,10 +75,10 @@ protected CodeEvaluator buildCodeEvaluator(JShell jShell, JJavaExecutionControlP
7575
return new CodeEvaluator(jShell, jShellExecControlProvider, jShellExecControlID);
7676
}
7777

78-
protected MagicParser buildMagicParser(MagicTranspiler transpiler) {
79-
return magicParser != null
80-
? magicParser
81-
: new MagicParser("(?<=(?:^|=))\\s*%", "%%", transpiler);
78+
protected MagicsResolver buildMagicsResolver(MagicTranspiler transpiler) {
79+
return magicsResolver != null
80+
? magicsResolver
81+
: new MagicsResolver("(?<=(?:^|=))\\s*%", "%%", transpiler);
8282
}
8383

8484
protected LanguageInfo buildLanguageInfo() {

0 commit comments

Comments
 (0)