Removed unused classes.
This commit is contained in:
parent
13c84e8879
commit
a2c93f080c
@ -1,33 +0,0 @@
|
|||||||
package groowt.view.component.web.transpile;
|
|
||||||
|
|
||||||
import groowt.view.component.web.util.SourcePosition;
|
|
||||||
|
|
||||||
public final class DefaultSourceMapSerializer implements SourceMapSerializer {
|
|
||||||
|
|
||||||
public static final char LINE_COL_SEP = ',';
|
|
||||||
public static final char POS_SEP = '.';
|
|
||||||
public static final char ENTRY_SEP = ':';
|
|
||||||
|
|
||||||
private void serialize(StringBuilder sb, SourcePosition sourcePosition) {
|
|
||||||
final var line = sourcePosition.line();
|
|
||||||
final var column = sourcePosition.column();
|
|
||||||
sb.append(line).append(LINE_COL_SEP).append(column);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String serialize(SourceMap sourceMap) {
|
|
||||||
final StringBuilder sb = new StringBuilder();
|
|
||||||
final var iter = sourceMap.getAll().iterator();
|
|
||||||
while (iter.hasNext()) {
|
|
||||||
final var entry = iter.next();
|
|
||||||
this.serialize(sb, entry.from());
|
|
||||||
sb.append(POS_SEP);
|
|
||||||
this.serialize(sb, entry.to());
|
|
||||||
if (iter.hasNext()) {
|
|
||||||
sb.append(ENTRY_SEP);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return sb.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,58 +0,0 @@
|
|||||||
package groowt.view.component.web.transpile;
|
|
||||||
|
|
||||||
import groowt.view.component.web.util.SourcePosition;
|
|
||||||
|
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
public final class SourceMap {
|
|
||||||
|
|
||||||
public record SourceMapEntry(SourcePosition from, SourcePosition to) {}
|
|
||||||
|
|
||||||
private final Map<SourcePosition, SourcePosition> mapFromTo = new LinkedHashMap<>();
|
|
||||||
|
|
||||||
public SourceMap() {}
|
|
||||||
|
|
||||||
public SourceMap(String serialized, SourceMapDeserializer deserializer) {
|
|
||||||
this.putAll(deserializer.deserialize(serialized));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void put(SourcePosition from, SourcePosition to) {
|
|
||||||
this.mapFromTo.put(from, to);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void put(SourceMapEntry entry) {
|
|
||||||
this.mapFromTo.put(entry.from, entry.to);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void putAll(Map<SourcePosition, SourcePosition> map) {
|
|
||||||
this.mapFromTo.putAll(map);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void putAll(SourceMap sourceMap) {
|
|
||||||
this.mapFromTo.putAll(sourceMap.mapFromTo);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void putAll(List<SourceMapEntry> entries) {
|
|
||||||
entries.forEach(this::put);
|
|
||||||
}
|
|
||||||
|
|
||||||
public SourcePosition getTo(SourcePosition from) {
|
|
||||||
return this.mapFromTo.getOrDefault(from, SourcePosition.UNKNOWN);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Stream<SourceMapEntry> stream() {
|
|
||||||
return this.mapFromTo.entrySet().stream().map(entry -> new SourceMapEntry(entry.getKey(), entry.getValue()));
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<SourceMapEntry> getAll() {
|
|
||||||
return this.stream().toList();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String serialize(SourceMapSerializer serializer) {
|
|
||||||
return serializer.serialize(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
package groowt.view.component.web.transpile;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@FunctionalInterface
|
|
||||||
public interface SourceMapDeserializer {
|
|
||||||
List<SourceMap.SourceMapEntry> deserialize(String serializedSourceMap);
|
|
||||||
}
|
|
@ -1,6 +0,0 @@
|
|||||||
package groowt.view.component.web.transpile;
|
|
||||||
|
|
||||||
@FunctionalInterface
|
|
||||||
public interface SourceMapSerializer {
|
|
||||||
String serialize(SourceMap sourceMap);
|
|
||||||
}
|
|
@ -1,265 +0,0 @@
|
|||||||
package groowt.view.component.web.transpile;
|
|
||||||
|
|
||||||
import groowt.view.component.web.util.Range;
|
|
||||||
import org.codehaus.groovy.control.HasCleanup;
|
|
||||||
import org.codehaus.groovy.control.Janitor;
|
|
||||||
import org.codehaus.groovy.control.io.ReaderSource;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
import java.io.*;
|
|
||||||
import java.net.URI;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
public class WebViewComponentReaderSource implements ReaderSource {
|
|
||||||
|
|
||||||
public record LineAndColumnRange(LineAndColumn start, LineAndColumn end) {}
|
|
||||||
|
|
||||||
public record LineAndColumn(int line, int column) {}
|
|
||||||
|
|
||||||
public static final LineAndColumn minusOneLineAndColumn = new LineAndColumn(-1, -1);
|
|
||||||
public static final LineAndColumnRange minusOneLineAndColumnRange = new LineAndColumnRange(
|
|
||||||
minusOneLineAndColumn,
|
|
||||||
minusOneLineAndColumn
|
|
||||||
);
|
|
||||||
|
|
||||||
protected interface Source {
|
|
||||||
Reader toReader() throws IOException;
|
|
||||||
@Nullable String getLine(int lineNumber);
|
|
||||||
@Nullable URI toUri();
|
|
||||||
LineAndColumnRange convertToLineAndColumnRange(Range<Integer> range);
|
|
||||||
LineAndColumn convertToLineAndColumn(int index);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static abstract class AbstractSource implements Source {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public LineAndColumnRange convertToLineAndColumnRange(Range<Integer> range) {
|
|
||||||
try (final Reader reader = new BufferedReader(this.toReader())) {
|
|
||||||
int read = reader.read();
|
|
||||||
boolean enteredRangeYet = false;
|
|
||||||
int startLine = -1;
|
|
||||||
int startColumn = -1;
|
|
||||||
int index = 0;
|
|
||||||
int curLine = 0;
|
|
||||||
int curColumn = 1;
|
|
||||||
while (read > -1) {
|
|
||||||
if ((char) read == '\n') {
|
|
||||||
reader.mark(1);
|
|
||||||
final int next = reader.read();
|
|
||||||
if ((char) next != '\r') {
|
|
||||||
reader.reset();
|
|
||||||
}
|
|
||||||
curLine++;
|
|
||||||
curColumn = 1;
|
|
||||||
} else if ((char) read == '\r') {
|
|
||||||
curLine++;
|
|
||||||
curColumn = 1;
|
|
||||||
}
|
|
||||||
if (!enteredRangeYet && range.isInRange(index)) {
|
|
||||||
enteredRangeYet = true;
|
|
||||||
startLine = curLine;
|
|
||||||
startColumn = curColumn;
|
|
||||||
} else if (enteredRangeYet && !range.isInRange(index)) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
read = reader.read();
|
|
||||||
if (read > -1) {
|
|
||||||
index++;
|
|
||||||
curColumn++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return new LineAndColumnRange(
|
|
||||||
new LineAndColumn(startLine, startColumn),
|
|
||||||
new LineAndColumn(curLine, curColumn)
|
|
||||||
);
|
|
||||||
} catch (IOException ignored) {
|
|
||||||
return minusOneLineAndColumnRange;
|
|
||||||
} finally {
|
|
||||||
if (this instanceof HasCleanup hasCleanup) {
|
|
||||||
hasCleanup.cleanup();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public LineAndColumn convertToLineAndColumn(final int index) {
|
|
||||||
try (final Reader reader = new BufferedReader(this.toReader())) {
|
|
||||||
int read = reader.read();
|
|
||||||
int currentIndex = 0;
|
|
||||||
int currentLine = 0;
|
|
||||||
int currentColumn = 1;
|
|
||||||
while (read > -1 && currentIndex <= index) {
|
|
||||||
if ((char) read == '\n') {
|
|
||||||
reader.mark(1);
|
|
||||||
final int next = reader.read();
|
|
||||||
if ((char) next != '\r') {
|
|
||||||
reader.reset();
|
|
||||||
}
|
|
||||||
currentLine++;
|
|
||||||
currentColumn = 1;
|
|
||||||
} else if ((char) read == '\r') {
|
|
||||||
currentLine++;
|
|
||||||
currentColumn = 1;
|
|
||||||
}
|
|
||||||
read = reader.read();
|
|
||||||
if (read > -1) {
|
|
||||||
currentIndex++;
|
|
||||||
currentColumn++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return new LineAndColumn(currentLine, currentColumn);
|
|
||||||
} catch (IOException ignored) {
|
|
||||||
return minusOneLineAndColumn;
|
|
||||||
} finally {
|
|
||||||
if (this instanceof HasCleanup hasCleanup) {
|
|
||||||
hasCleanup.cleanup();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static abstract class AbstractSourceWithHasCleanup extends AbstractSource implements HasCleanup {
|
|
||||||
|
|
||||||
private final Collection<Reader> createdReaders = new ArrayList<>();
|
|
||||||
|
|
||||||
protected void addReader(Reader reader) {
|
|
||||||
this.createdReaders.add(reader);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void cleanup() {
|
|
||||||
this.createdReaders.forEach(reader -> {
|
|
||||||
try {
|
|
||||||
reader.close();
|
|
||||||
} catch (IOException ignored) {
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static final class FileSource extends AbstractSourceWithHasCleanup {
|
|
||||||
|
|
||||||
private final File source;
|
|
||||||
@Nullable
|
|
||||||
private List<String> cachedLines;
|
|
||||||
private boolean triedFetchingLines;
|
|
||||||
|
|
||||||
public FileSource(File source) {
|
|
||||||
this.source = source;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Reader toReader() throws IOException {
|
|
||||||
final Reader r = new FileReader(this.source);
|
|
||||||
this.addReader(r);
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initCachedLines() {
|
|
||||||
try (final FileInputStream inputStream = new FileInputStream(this.source)) {
|
|
||||||
final byte[] allBytes = inputStream.readAllBytes();
|
|
||||||
final String allSource = new String(allBytes);
|
|
||||||
this.cachedLines = allSource.lines().toList();
|
|
||||||
} catch (IOException ignored) {
|
|
||||||
// ignored
|
|
||||||
} finally {
|
|
||||||
this.triedFetchingLines = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public @Nullable String getLine(int lineNumber) {
|
|
||||||
if (!this.triedFetchingLines) {
|
|
||||||
this.initCachedLines();
|
|
||||||
}
|
|
||||||
return this.cachedLines != null ? this.cachedLines.get(lineNumber) : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public URI toUri() {
|
|
||||||
return this.source.toURI();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static final class StringSource extends AbstractSourceWithHasCleanup {
|
|
||||||
|
|
||||||
private final String source;
|
|
||||||
private List<String> cachedLines;
|
|
||||||
|
|
||||||
public StringSource(String source) {
|
|
||||||
this.source = source;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Reader toReader() throws IOException {
|
|
||||||
final Reader r = new StringReader(this.source);
|
|
||||||
this.addReader(r);
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getLine(int lineNumber) {
|
|
||||||
if (this.cachedLines == null) {
|
|
||||||
this.cachedLines = this.source.lines().toList();
|
|
||||||
}
|
|
||||||
return this.cachedLines.get(lineNumber);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public @Nullable URI toUri() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private final Source source;
|
|
||||||
|
|
||||||
public WebViewComponentReaderSource(File sourceFile) {
|
|
||||||
this.source = new FileSource(sourceFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
public WebViewComponentReaderSource(String sourceString) {
|
|
||||||
this.source = new StringSource(sourceString);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Reader getReader() throws IOException {
|
|
||||||
return this.source.toReader();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canReopenSource() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getLine(int lineNumber, Janitor janitor) {
|
|
||||||
if (lineNumber < 0) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
final var line = this.source.getLine(lineNumber);
|
|
||||||
if (this.source instanceof HasCleanup hasCleanup) {
|
|
||||||
janitor.register(hasCleanup);
|
|
||||||
}
|
|
||||||
return line;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void cleanup() {
|
|
||||||
if (this.source instanceof HasCleanup hasCleanup) {
|
|
||||||
hasCleanup.cleanup();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public URI getURI() {
|
|
||||||
return this.source.toUri();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user