diff --git a/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultSourceMapSerializer.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultSourceMapSerializer.java deleted file mode 100644 index 12c14d1..0000000 --- a/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultSourceMapSerializer.java +++ /dev/null @@ -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(); - } - -} diff --git a/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/SourceMap.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/SourceMap.java deleted file mode 100644 index 023c6ae..0000000 --- a/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/SourceMap.java +++ /dev/null @@ -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 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 map) { - this.mapFromTo.putAll(map); - } - - public void putAll(SourceMap sourceMap) { - this.mapFromTo.putAll(sourceMap.mapFromTo); - } - - public void putAll(List entries) { - entries.forEach(this::put); - } - - public SourcePosition getTo(SourcePosition from) { - return this.mapFromTo.getOrDefault(from, SourcePosition.UNKNOWN); - } - - public Stream stream() { - return this.mapFromTo.entrySet().stream().map(entry -> new SourceMapEntry(entry.getKey(), entry.getValue())); - } - - public List getAll() { - return this.stream().toList(); - } - - public String serialize(SourceMapSerializer serializer) { - return serializer.serialize(this); - } - -} diff --git a/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/SourceMapDeserializer.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/SourceMapDeserializer.java deleted file mode 100644 index 88518f8..0000000 --- a/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/SourceMapDeserializer.java +++ /dev/null @@ -1,8 +0,0 @@ -package groowt.view.component.web.transpile; - -import java.util.List; - -@FunctionalInterface -public interface SourceMapDeserializer { - List deserialize(String serializedSourceMap); -} diff --git a/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/SourceMapSerializer.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/SourceMapSerializer.java deleted file mode 100644 index a63690e..0000000 --- a/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/SourceMapSerializer.java +++ /dev/null @@ -1,6 +0,0 @@ -package groowt.view.component.web.transpile; - -@FunctionalInterface -public interface SourceMapSerializer { - String serialize(SourceMap sourceMap); -} diff --git a/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/WebViewComponentReaderSource.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/WebViewComponentReaderSource.java deleted file mode 100644 index c1a54b5..0000000 --- a/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/WebViewComponentReaderSource.java +++ /dev/null @@ -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 range); - LineAndColumn convertToLineAndColumn(int index); - } - - protected static abstract class AbstractSource implements Source { - - @Override - public LineAndColumnRange convertToLineAndColumnRange(Range 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 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 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 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(); - } - -}