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