Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Decomposed & refined Parser.java #449

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions java/read/AsciiOnlyFileContents.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package read;

import java.util.Objects;

public class AsciiOnlyFileContents implements FileContents {

private final FileContents original;

public AsciiOnlyFileContents(final FileContents original) {
this.original = Objects.requireNonNull(original);
}

@Override
public String asString() {
return this.original.asString().replaceAll("[^\\u0000-\\u007F]+", "");
}
}
37 changes: 37 additions & 0 deletions java/read/ConcreteFileContents.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package read;

import java.io.*;
import java.nio.file.Path;
import java.util.Iterator;
import java.util.Objects;

public class ConcreteFileContents implements FileContents {

private final File file;

public ConcreteFileContents(final Path path) {
this(path.toFile());
}

public ConcreteFileContents(final String file) {
this(new File(file));
}

public ConcreteFileContents(final File file) {
this.file = Objects.requireNonNull(file);
}

@Override
public String asString() {
final StringBuilder result = new StringBuilder();
try (final BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(this.file)))) {
final Iterator<String> lines = reader.lines().iterator();
while (lines.hasNext()) {
result.append(lines.next());
}
} catch (IOException e) {
throw new UncheckedIOException(e);
}
return result.toString();
}
}
6 changes: 6 additions & 0 deletions java/read/FileContents.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package read;

public interface FileContents {

String asString();
}
36 changes: 36 additions & 0 deletions java/write/WriteStringToFile.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package write;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.nio.file.Path;
import java.util.Objects;

public class WriteStringToFile implements WriteToFile {

private final File file;
private final String value;

public WriteStringToFile(final Path path, final String value) {
this(path.toFile(), value);
}

public WriteStringToFile(final String file, final String value) {
this(new File(file), value);
}

public WriteStringToFile(final File file, final String value) {
this.file = Objects.requireNonNull(file);
this.value = Objects.requireNonNull(value);
}

@Override
public void write() {
try (final FileWriter fileWriter = new FileWriter(this.file)) {
fileWriter.write(this.value);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
}
7 changes: 7 additions & 0 deletions java/write/WriteToFile.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package write;

public interface WriteToFile {

void write();

}