diff --git a/eo-maven-plugin/src/main/java/org/eolang/maven/MjParse.java b/eo-maven-plugin/src/main/java/org/eolang/maven/MjParse.java index a7cf271d536..e2fd645c79c 100644 --- a/eo-maven-plugin/src/main/java/org/eolang/maven/MjParse.java +++ b/eo-maven-plugin/src/main/java/org/eolang/maven/MjParse.java @@ -9,6 +9,9 @@ import com.jcabi.log.Logger; import com.jcabi.xml.XML; import com.jcabi.xml.XMLDocument; +import com.yegor256.xsline.StClasspath; +import com.yegor256.xsline.TrDefault; +import com.yegor256.xsline.Xsline; import java.io.FileNotFoundException; import java.io.IOException; import java.nio.file.Path; @@ -21,6 +24,7 @@ import org.apache.maven.plugins.annotations.ResolutionScope; import org.cactoos.io.InputOf; import org.cactoos.iterable.Filtered; +import org.cactoos.list.ListOf; import org.cactoos.text.TextOf; import org.eolang.parser.EoSyntax; import org.eolang.parser.OnDefault; @@ -41,6 +45,32 @@ requiresDependencyResolution = ResolutionScope.COMPILE ) public final class MjParse extends MjSafe { + /** + * Reserved object bases from QQ. + */ + private static final String QQS = String.join( + ",", + new ListOf<>( + "Φ.org.eolang.number", + "Φ.org.eolang.bytes" + ) + ); + + /** + * Optimization line. + */ + private static final Xsline OPTIMIZATION_LINE = new Xsline( + new TrDefault<>( + new StClasspath( + "/org/eolang/maven/parse/locals-to-aliases.xsl", + "name reserved", + String.format( + "reserved %s", + MjParse.QQS + ) + ) + ) + ); /** * Zero version. @@ -104,7 +134,7 @@ private int parsed(final TjForeign tojo) throws Exception { src -> { final Node node = this.parsed(src, name); refs.add(node); - return new XMLDocument(node).toString(); + return MjParse.OPTIMIZATION_LINE.pass(new XMLDocument(node)).toString(); }, this.cache.toPath().resolve(MjParse.CACHE), this.plugin.getVersion(), diff --git a/eo-maven-plugin/src/main/resources/org/eolang/maven/parse/locals-to-aliases.xsl b/eo-maven-plugin/src/main/resources/org/eolang/maven/parse/locals-to-aliases.xsl new file mode 100644 index 00000000000..17aec16b650 --- /dev/null +++ b/eo-maven-plugin/src/main/resources/org/eolang/maven/parse/locals-to-aliases.xsl @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + alias + + + + + + + + + diff --git a/eo-maven-plugin/src/main/resources/org/eolang/maven/shake/clean-up.xsl b/eo-maven-plugin/src/main/resources/org/eolang/maven/shake/clean-up.xsl deleted file mode 100644 index dd8ac4d36a0..00000000000 --- a/eo-maven-plugin/src/main/resources/org/eolang/maven/shake/clean-up.xsl +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - diff --git a/eo-maven-plugin/src/main/resources/org/eolang/maven/shake/remove-noise.xsl b/eo-maven-plugin/src/main/resources/org/eolang/maven/shake/remove-noise.xsl deleted file mode 100644 index 210c37bda04..00000000000 --- a/eo-maven-plugin/src/main/resources/org/eolang/maven/shake/remove-noise.xsl +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/eo-maven-plugin/src/test/java/org/eolang/maven/MjParseTest.java b/eo-maven-plugin/src/test/java/org/eolang/maven/MjParseTest.java index d34d44e20b5..9597cb7561f 100644 --- a/eo-maven-plugin/src/test/java/org/eolang/maven/MjParseTest.java +++ b/eo-maven-plugin/src/test/java/org/eolang/maven/MjParseTest.java @@ -5,6 +5,7 @@ package org.eolang.maven; import com.jcabi.matchers.XhtmlMatchers; +import com.jcabi.xml.XML; import com.jcabi.xml.XMLDocument; import com.yegor256.Mktmp; import com.yegor256.MktmpResolver; @@ -283,6 +284,33 @@ void parsesWithTargetCache(@Mktmp final Path temp) throws IOException { ); } + @Test + void convertsLocalObjectsToAliases(@Mktmp final Path temp) throws IOException { + MatcherAssert.assertThat( + "Local object is not converted to alias, but it should", + new XMLDocument( + new FakeMaven(temp) + .withProgram( + String.join( + "\n", + "+package foo", + "", + "[] > x", + " bar 42 > @" + ), + "foo.x" + ) + .execute(new FakeMaven.Parse()) + .result() + .get("target/1-parse/foo/x.xmir") + ), + XhtmlMatchers.hasXPaths( + "/object/metas/meta[head='alias' and part='bar' and part='foo.bar' and tail='bar foo.bar']", + "//o[@base='foo.bar']/o[1][@base='Φ.org.eolang.number']/o[1][@base='Φ.org.eolang.bytes']" + ) + ); + } + /** * The mojo that does nothing, but executes infinitely. * @since 0.29