Skip to content

Commit

Permalink
#2322: Made Savable the abstract class
Browse files Browse the repository at this point in the history
  • Loading branch information
levBagryansky committed Aug 16, 2023
1 parent c4087fa commit f322196
Show file tree
Hide file tree
Showing 7 changed files with 82 additions and 49 deletions.
18 changes: 12 additions & 6 deletions eo-maven-plugin/src/main/java/org/eolang/maven/rust/Cargo.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,14 @@
import com.moandjiezana.toml.TomlWriter;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import org.cactoos.io.OutputStreamTo;
import org.cactoos.io.OutputTo;
import org.cactoos.map.MapEntry;
import org.cactoos.map.MapOf;

Expand All @@ -40,7 +44,7 @@
* This class have save method and needs to have explanatory
* comment too via Commented class.
*/
public class Cargo {
public class Cargo extends Savable {
/**
* Package attributes.
*/
Expand All @@ -61,6 +65,10 @@ public class Cargo {
* @param name Name of lib.
*/
public Cargo(final String name) {
super(
name,
"rs"
);
this.pack = new MapOf<>(
new MapEntry<>("name", name),
new MapEntry<>("version", "0.1.0"),
Expand All @@ -85,17 +93,15 @@ public void add(final String crate, final Object content) {

/**
* Save it to specified folder.
* @param target Directory where to save to.
* @throws IOException If any issues with I/O
*/
public void save(final File target) throws IOException {
public String content() {
final Map<String, Object> raw = new HashMap<>();
raw.put("package", this.pack);
raw.put("dependencies", this.dependencies);
raw.put("lib", this.lib);
new TomlWriter().write(
raw,
target
return new TomlWriter().write(
raw
);
}
}
31 changes: 20 additions & 11 deletions eo-maven-plugin/src/main/java/org/eolang/maven/rust/Commented.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,22 +31,31 @@
*/
public class Commented extends Savable {

final Savable origin;
final String start;

/**
* Ctor.
* @param original Original object to save.
* @param origin Original object to save.
* @param start Prefix of commentary.
*/
public Commented(final Savable original, final String start) {
public Commented(final Savable origin, final String start) {
super(
original.name,
original.ext,
() -> String.format(
"%s %s%s%s",
start,
new Disclaimer(),
System.lineSeparator(),
original.content.value()
)
origin.name,
origin.ext
);
this.origin = origin;
this.start = start;
}

@Override
String content() {
return String.format(
"%s %s%s%s",
this.start,
new Disclaimer(),
System.lineSeparator(),
this.origin.content()
);
}
}
12 changes: 10 additions & 2 deletions eo-maven-plugin/src/main/java/org/eolang/maven/rust/Module.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
*/
public class Module extends Savable {

final String raw;

/**
* Ctor.
* @param raw Source code of rust insert.
Expand All @@ -38,8 +40,14 @@ public class Module extends Savable {
public Module(final String raw, final String name) {
super(
name,
"rs",
() -> raw
"rs"
);
this.raw = raw;
}

@Override
String content() {
return this.raw;
}

}
45 changes: 26 additions & 19 deletions eo-maven-plugin/src/main/java/org/eolang/maven/rust/Native.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
*/
public final class Native extends Savable {

final String pack;

/**
* Ctor.
* @param name Name of the class.
Expand All @@ -39,25 +41,30 @@ public final class Native extends Savable {
public Native(final String name, final String pack) {
super(
name,
"java",
() -> String.join(
System.lineSeparator(),
String.format(
"package %s;",
pack
),
"import org.eolang.Universe;",
String.format(
"public class %s {",
name
),
String.format(
" public static native byte[] %s",
name
),
" (final Universe universe);",
"}"
)
"java"
);
this.pack = pack;
}

@Override
String content() {
return String.join(
System.lineSeparator(),
String.format(
"package %s;",
pack
),
"import org.eolang.Universe;",
String.format(
"public class %s {",
name
),
String.format(
" public static native byte[] %s",
name
),
" (final Universe universe);",
"}"
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ public Path save() throws IOException {
for (final Module module: this.modules) {
new Commented(module, "//").save(this.footprint);
}
this.cargo.save(this.dest.resolve("Cargo.toml").toFile());
this.cargo.save(new FtDefault(this.dest.resolve("Cargo.toml")));
return this.dest;
}
}
10 changes: 4 additions & 6 deletions eo-maven-plugin/src/main/java/org/eolang/maven/rust/Savable.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
* @since 0.30
* @checkstyle VisibilityModifierCheck (20 lines)
*/
public class Savable {
public abstract class Savable {

/**
* Name of file.
Expand All @@ -47,18 +47,16 @@ public class Savable {
/**
* Content inside file.
*/
protected final Scalar<String> content;
abstract String content();

/**
* Ctor.
* @param name Name of the file.
* @param ext Extension.
* @param content Content.
*/
public Savable(final String name, final String ext, final Scalar<String> content) {
public Savable(final String name, final String ext) {
this.name = name;
this.ext = ext;
this.content = content;
}

/**
Expand All @@ -67,6 +65,6 @@ public Savable(final String name, final String ext, final Scalar<String> content
* @throws IOException If any issues with IO.
*/
public void save(final Footprint footprint) throws IOException {
footprint.save(this.name, this.ext, this.content);
footprint.save(this.name, this.ext, this::content);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,17 @@ final class CommentedTest {

@Test
void addsComment(@TempDir final Path temp) throws Exception {
final String content = "content";
new Commented(
new Savable(
"name",
"ext",
() -> "content"
),
"ext"
) {
@Override
String content() {
return content;
}
},
"//"
).save(new FtDefault(temp));
MatcherAssert.assertThat(
Expand All @@ -55,7 +60,7 @@ void addsComment(@TempDir final Path temp) throws Exception {
Matchers.stringContainsInOrder(
"// This file was auto-generated by eo-maven-plugin",
System.lineSeparator(),
"content"
content
)
);
}
Expand Down

0 comments on commit f322196

Please sign in to comment.