diff --git a/settings.gradle b/settings.gradle index 7a272bd..e872fca 100644 --- a/settings.gradle +++ b/settings.gradle @@ -6,7 +6,8 @@ pluginManagement { rootProject.name = 'groowt' -include 'cli', 'groowt-all', 'groowt-gradle', 'groowt-gradle-model', 'views', 'view-components', 'web-view-components' +include 'cli', 'groowt-all', 'groowt-gradle', 'groowt-gradle-model', 'views', 'view-components', + 'web-view-components', 'web-view-components-compiler' file('util').eachDir { include it.name diff --git a/web-view-components-compiler/.gitignore b/web-view-components-compiler/.gitignore new file mode 100644 index 0000000..30b167a --- /dev/null +++ b/web-view-components-compiler/.gitignore @@ -0,0 +1,2 @@ +bin +groovyc-out diff --git a/web-view-components-compiler/build.gradle b/web-view-components-compiler/build.gradle new file mode 100644 index 0000000..1c1867c --- /dev/null +++ b/web-view-components-compiler/build.gradle @@ -0,0 +1,206 @@ +import groovy.transform.NullCheck +import groowt.gradle.antlr.GroowtAntlrExecTask + +plugins { + id 'groowt-conventions' + id 'groowt-antlr-plugin' + id 'groowt-testing' + id 'groowt-publish' + id 'java-library' + id 'groovy' + id 'org.jetbrains.kotlin.jvm' + id 'java-test-fixtures' +} + +repositories { + mavenCentral() +} + +configurations { + groovyConsole + sketchingImplementation { + extendsFrom(apiElements, runtimeElements) + } + testFixturesApi { + extendsFrom configurations.testing + } + toolsImplementation { + extendsFrom(apiElements, runtimeElements) + } +} + +sourceSets { + sketching { + java { + compileClasspath += sourceSets.main.output + runtimeClasspath += sourceSets.main.output + srcDirs = [file('sketching/java')] + } + groovy { + srcDirs = [file('sketching/groovy')] + } + resources { + srcDirs = [file('sketching/resources')] + } + } + tools { + java { + compileClasspath += sourceSets.main.output + runtimeClasspath += sourceSets.main.output + } + } +} + +dependencies { + api project(':web-view-components') + api libs.antlr.runtime + api project(':fp') + + compileOnlyApi libs.jetbrains.anotations + + implementation libs.slf4j.api + implementation libs.kotlin.stdlib + implementation libs.jansi + implementation libs.asm + implementation project(':di') + implementation project(':extensible') + + groowtAntlr libs.antlr + + testing libs.mockito.core, libs.mockito.junit + + groovyConsole libs.groovy.console + + toolsImplementation libs.picocli + toolsImplementation libs.groovy.console + toolsImplementation libs.log4j.core + + toolsRuntimeOnly libs.log4j.slf4jBinding +} + +ext { + antlrPackageName = 'groowt.view.component.web.antlr' + toolsPackageName = 'groowt.view.component.web.tools' +} + +groowtAntlr { + packageName = project.ext.get('antlrPackageName') + visitor = true +} + +tasks.named('generateWebViewComponentsLexerBase', GroowtAntlrExecTask) { task -> + doLast { + def pattern = ~/public class WebViewComponentsLexerBase(.*)/ + def lexerSource = task.resolveOutputFile 'WebViewComponentsLexerBase.java' + def outLines = lexerSource.readLines().collect { + def matcher = pattern.matcher(it) + if (matcher.matches()) { + return 'public abstract class WebViewComponentsLexerBase' + matcher.group(1) + } else { + return it + } + } + lexerSource.write(outLines.join('\n')) + } +} + +tasks.register('groovyConsole', JavaExec) { + group = 'groovy' + classpath += sourceSets.main.runtimeClasspath + configurations.groovyConsole + mainClass = 'groovy.console.ui.Console' +} + +tasks.register('toolsJar', Jar) { + group 'tools' + archiveBaseName = 'web-tools' + exclude { FileTreeElement element -> + element.file in sourceSets.main.output + } + from sourceSets.tools.output + from sourceSets.tools.runtimeClasspath.filter(File.&exists).collect { it.isDirectory() ? it : zipTree(it) } + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + dependsOn tasks.named('jar') +} + +@NullCheck +class ToolSpec { + + final String name + final String mainClass + final String mainClassPackage + + ToolSpec(String name, String mainClass, String mainClassPackage) { + this.name = name + this.mainClass = mainClass + this.mainClassPackage = mainClassPackage + } + + String getFullMainClass() { + this.mainClassPackage + '.' + this.mainClass + } + +} + +def toolSpec = { String name, String mainClass -> + new ToolSpec(name, mainClass, project.ext.get('toolsPackageName') as String) +} + +final List toolSpecs = [ + toolSpec('astFileMaker', 'AstFileMakerCli'), + toolSpec('convertToGroovy', 'ConvertToGroovy'), + toolSpec('lexer', 'LexerTool'), + toolSpec('parser', 'ParserTool'), + toolSpec('parseTreeFileMaker', 'ParseTreeFileMakerCli') +] + +toolSpecs.each { spec -> + tasks.register("create${spec.name.capitalize()}StartScripts", CreateStartScripts) { + group = 'tools' + outputDir = file('bin') + applicationName = spec.name + mainClass = spec.fullMainClass + unixStartScriptGenerator.template = resources.text.fromFile('src/tools/binTemplate.gst') + dependsOn tasks.named('toolsJar') + } +} + +tasks.register('createToolsStartScripts') { + group 'tools' + dependsOn tasks.matching { Task task -> + task != it + && task.name.startsWith('create') + && task.name.endsWith('StartScripts') + && task.group == 'tools' + } +} + +tasks.register('cleanBin', Delete) { + group = 'tools' + delete file('bin') +} + +tasks.register('uberJar', Jar) { + group 'groovyc' + archiveBaseName = 'web-view-components-uber' + from sourceSets.main.output + from sourceSets.main.runtimeClasspath.filter(File.&exists).collect { it.isDirectory() ? it : zipTree(it) } + duplicatesStrategy = DuplicatesStrategy.EXCLUDE +} + +test { + jvmArgs '-XX:+EnableDynamicAgentLoading' // for mockito/bytebuddy +} + +java { + withSourcesJar() +} + +publishing { + publications { + create('webViewComponentsCompiler', MavenPublication) { + artifactId = 'web-view-components-compiler' + from components.java + } + } +} + diff --git a/web-view-components-compiler/runGroovyc b/web-view-components-compiler/runGroovyc new file mode 100755 index 0000000..d6de9c9 --- /dev/null +++ b/web-view-components-compiler/runGroovyc @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +if [ "$1" == "--debug" ]; then + shift + gradle -q uberJar && \ + java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:8192 \ + -cp build/libs/web-view-components-uber-0.1.0.jar \ + org.codehaus.groovy.tools.FileSystemCompiler \ + --configscript src/main/resources/groowt/view/component/web/groovyc/groovycConfigurationScript.groovy \ + -d groovyc-out \ + "$@" +else + gradle -q uberJar && \ + groovyc -cp build/libs/web-view-components-uber-0.1.0.jar \ + --configscript src/main/resources/groowt/view/component/web/groovyc/groovycConfigurationScript.groovy \ + -d groovyc-out \ + "$@" +fi diff --git a/web-view-components/sketching/groovy/sketching/EchoElement.wvc b/web-view-components-compiler/sketching/groovy/sketching/EchoElement.wvc similarity index 100% rename from web-view-components/sketching/groovy/sketching/EchoElement.wvc rename to web-view-components-compiler/sketching/groovy/sketching/EchoElement.wvc diff --git a/web-view-components/sketching/groovy/sketching/Greeter.groovy b/web-view-components-compiler/sketching/groovy/sketching/Greeter.groovy similarity index 100% rename from web-view-components/sketching/groovy/sketching/Greeter.groovy rename to web-view-components-compiler/sketching/groovy/sketching/Greeter.groovy diff --git a/web-view-components/sketching/groovy/sketching/Greeters.groovy b/web-view-components-compiler/sketching/groovy/sketching/Greeters.groovy similarity index 100% rename from web-view-components/sketching/groovy/sketching/Greeters.groovy rename to web-view-components-compiler/sketching/groovy/sketching/Greeters.groovy diff --git a/web-view-components/sketching/groovy/sketching/HelloTarget.wvc b/web-view-components-compiler/sketching/groovy/sketching/HelloTarget.wvc similarity index 100% rename from web-view-components/sketching/groovy/sketching/HelloTarget.wvc rename to web-view-components-compiler/sketching/groovy/sketching/HelloTarget.wvc diff --git a/web-view-components/sketching/groovy/sketching/Helper.groovy b/web-view-components-compiler/sketching/groovy/sketching/Helper.groovy similarity index 100% rename from web-view-components/sketching/groovy/sketching/Helper.groovy rename to web-view-components-compiler/sketching/groovy/sketching/Helper.groovy diff --git a/web-view-components/sketching/groovy/sketching/MemberClassComponentType.wvc b/web-view-components-compiler/sketching/groovy/sketching/MemberClassComponentType.wvc similarity index 55% rename from web-view-components/sketching/groovy/sketching/MemberClassComponentType.wvc rename to web-view-components-compiler/sketching/groovy/sketching/MemberClassComponentType.wvc index a63dd90..248a58d 100644 --- a/web-view-components/sketching/groovy/sketching/MemberClassComponentType.wvc +++ b/web-view-components-compiler/sketching/groovy/sketching/MemberClassComponentType.wvc @@ -1,4 +1,4 @@ --- -package groowt.view.web.sketching +package sketching --- diff --git a/web-view-components/sketching/groovy/sketching/PreambleHelloTarget.wvc b/web-view-components-compiler/sketching/groovy/sketching/PreambleHelloTarget.wvc similarity index 100% rename from web-view-components/sketching/groovy/sketching/PreambleHelloTarget.wvc rename to web-view-components-compiler/sketching/groovy/sketching/PreambleHelloTarget.wvc diff --git a/web-view-components/sketching/groovy/sketching/SimpleGreeter.wvc b/web-view-components-compiler/sketching/groovy/sketching/SimpleGreeter.wvc similarity index 61% rename from web-view-components/sketching/groovy/sketching/SimpleGreeter.wvc rename to web-view-components-compiler/sketching/groovy/sketching/SimpleGreeter.wvc index 2b4d83f..5bf54c7 100644 --- a/web-view-components/sketching/groovy/sketching/SimpleGreeter.wvc +++ b/web-view-components-compiler/sketching/groovy/sketching/SimpleGreeter.wvc @@ -3,13 +3,13 @@ package sketching import groowt.view.component.web.BaseWebViewComponent -class Greeter extends BaseWebViewComponent { +class SimpleHello extends BaseWebViewComponent { String target - Greeter(Map attr) { + SimpleHello(Map attr) { super('Hello, $target!') this.target = attr.target } } --- - + diff --git a/web-view-components/sketching/groovy/sketching/TwoGreeters.wvc b/web-view-components-compiler/sketching/groovy/sketching/TwoGreeters.wvc similarity index 76% rename from web-view-components/sketching/groovy/sketching/TwoGreeters.wvc rename to web-view-components-compiler/sketching/groovy/sketching/TwoGreeters.wvc index 24bf413..00b4126 100644 --- a/web-view-components/sketching/groovy/sketching/TwoGreeters.wvc +++ b/web-view-components-compiler/sketching/groovy/sketching/TwoGreeters.wvc @@ -1,5 +1,5 @@ --- -package groowt.view.web.sketching +package sketching --- <>   diff --git a/web-view-components/sketching/groovy/sketching/UseGreeter.wvc b/web-view-components-compiler/sketching/groovy/sketching/UseGreeter.wvc similarity index 100% rename from web-view-components/sketching/groovy/sketching/UseGreeter.wvc rename to web-view-components-compiler/sketching/groovy/sketching/UseGreeter.wvc diff --git a/web-view-components/sketching/groovy/sketching/UseHelper.wvc b/web-view-components-compiler/sketching/groovy/sketching/UseHelper.wvc similarity index 100% rename from web-view-components/sketching/groovy/sketching/UseHelper.wvc rename to web-view-components-compiler/sketching/groovy/sketching/UseHelper.wvc diff --git a/web-view-components/src/main/antlr/LexerFragments.g4 b/web-view-components-compiler/src/main/antlr/LexerFragments.g4 similarity index 100% rename from web-view-components/src/main/antlr/LexerFragments.g4 rename to web-view-components-compiler/src/main/antlr/LexerFragments.g4 diff --git a/web-view-components/src/main/antlr/WebViewComponentsLexerBase.g4 b/web-view-components-compiler/src/main/antlr/WebViewComponentsLexerBase.g4 similarity index 100% rename from web-view-components/src/main/antlr/WebViewComponentsLexerBase.g4 rename to web-view-components-compiler/src/main/antlr/WebViewComponentsLexerBase.g4 diff --git a/web-view-components/src/main/antlr/WebViewComponentsParser.g4 b/web-view-components-compiler/src/main/antlr/WebViewComponentsParser.g4 similarity index 100% rename from web-view-components/src/main/antlr/WebViewComponentsParser.g4 rename to web-view-components-compiler/src/main/antlr/WebViewComponentsParser.g4 diff --git a/web-view-components/src/main/java/groowt/view/component/web/WebViewComponentBugError.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/WebViewComponentBugError.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/WebViewComponentBugError.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/WebViewComponentBugError.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/analysis/MismatchedComponentTypeAnalysis.kt b/web-view-components-compiler/src/main/java/groowt/view/component/web/analysis/MismatchedComponentTypeAnalysis.kt similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/analysis/MismatchedComponentTypeAnalysis.kt rename to web-view-components-compiler/src/main/java/groowt/view/component/web/analysis/MismatchedComponentTypeAnalysis.kt diff --git a/web-view-components/src/main/java/groowt/view/component/web/antlr/AbstractWebViewComponentsLexer.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/AbstractWebViewComponentsLexer.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/antlr/AbstractWebViewComponentsLexer.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/AbstractWebViewComponentsLexer.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/antlr/AntlrUtil.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/AntlrUtil.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/antlr/AntlrUtil.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/AntlrUtil.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/antlr/GroovyTokenSourceIterable.kt b/web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/GroovyTokenSourceIterable.kt similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/antlr/GroovyTokenSourceIterable.kt rename to web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/GroovyTokenSourceIterable.kt diff --git a/web-view-components/src/main/java/groowt/view/component/web/antlr/LexerSemanticPredicates.kt b/web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/LexerSemanticPredicates.kt similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/antlr/LexerSemanticPredicates.kt rename to web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/LexerSemanticPredicates.kt diff --git a/web-view-components/src/main/java/groowt/view/component/web/antlr/LexerUtil.kt b/web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/LexerUtil.kt similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/antlr/LexerUtil.kt rename to web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/LexerUtil.kt diff --git a/web-view-components/src/main/java/groowt/view/component/web/antlr/MergedGroovyCodeToken.kt b/web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/MergedGroovyCodeToken.kt similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/antlr/MergedGroovyCodeToken.kt rename to web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/MergedGroovyCodeToken.kt diff --git a/web-view-components/src/main/java/groowt/view/component/web/antlr/PairCounter.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/PairCounter.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/antlr/PairCounter.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/PairCounter.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/antlr/ParserUtil.kt b/web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/ParserUtil.kt similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/antlr/ParserUtil.kt rename to web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/ParserUtil.kt diff --git a/web-view-components/src/main/java/groowt/view/component/web/antlr/SimplePairCounter.kt b/web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/SimplePairCounter.kt similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/antlr/SimplePairCounter.kt rename to web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/SimplePairCounter.kt diff --git a/web-view-components/src/main/java/groowt/view/component/web/antlr/TokenList.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/TokenList.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/antlr/TokenList.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/TokenList.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/antlr/TokenUtil.kt b/web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/TokenUtil.kt similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/antlr/TokenUtil.kt rename to web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/TokenUtil.kt diff --git a/web-view-components/src/main/java/groowt/view/component/web/antlr/WebViewComponentsLexer.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/WebViewComponentsLexer.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/antlr/WebViewComponentsLexer.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/WebViewComponentsLexer.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/antlr/WebViewComponentsTokenStream.kt b/web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/WebViewComponentsTokenStream.kt similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/antlr/WebViewComponentsTokenStream.kt rename to web-view-components-compiler/src/main/java/groowt/view/component/web/antlr/WebViewComponentsTokenStream.kt diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/AstBuilder.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/AstBuilder.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/AstBuilder.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/AstBuilder.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/DefaultAstBuilder.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/DefaultAstBuilder.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/DefaultAstBuilder.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/DefaultAstBuilder.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/DefaultAstBuilderVisitor.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/DefaultAstBuilderVisitor.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/DefaultAstBuilderVisitor.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/DefaultAstBuilderVisitor.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/DefaultNodeFactory.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/DefaultNodeFactory.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/DefaultNodeFactory.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/DefaultNodeFactory.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/NodeFactory.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/NodeFactory.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/NodeFactory.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/NodeFactory.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/NodeUtil.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/NodeUtil.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/NodeUtil.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/NodeUtil.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/NodeUtil.kt b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/NodeUtil.kt similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/NodeUtil.kt rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/NodeUtil.kt diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/extension/ExtensionUtil.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/ExtensionUtil.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/extension/ExtensionUtil.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/ExtensionUtil.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/extension/GStringNodeExtension.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/GStringNodeExtension.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/extension/GStringNodeExtension.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/GStringNodeExtension.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/extension/GStringPathExtension.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/GStringPathExtension.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/extension/GStringPathExtension.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/GStringPathExtension.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/extension/GStringScriptletExtension.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/GStringScriptletExtension.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/extension/GStringScriptletExtension.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/GStringScriptletExtension.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/extension/GroovyCodeNodeExtension.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/GroovyCodeNodeExtension.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/extension/GroovyCodeNodeExtension.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/GroovyCodeNodeExtension.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/extension/HasExtensionOneOf.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/HasExtensionOneOf.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/extension/HasExtensionOneOf.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/HasExtensionOneOf.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/extension/HasExtensions.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/HasExtensions.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/extension/HasExtensions.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/HasExtensions.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/extension/IterableHasExtensionOneOf.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/IterableHasExtensionOneOf.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/extension/IterableHasExtensionOneOf.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/IterableHasExtensionOneOf.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/extension/IterableHasExtensions.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/IterableHasExtensions.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/extension/IterableHasExtensions.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/IterableHasExtensions.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/extension/NodeExtension.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/NodeExtension.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/extension/NodeExtension.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/NodeExtension.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/extension/NodeExtensionContainer.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/NodeExtensionContainer.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/extension/NodeExtensionContainer.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/NodeExtensionContainer.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/extension/NodeExtensionFactory.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/NodeExtensionFactory.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/extension/NodeExtensionFactory.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/NodeExtensionFactory.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/extension/SelfNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/SelfNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/extension/SelfNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/SelfNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/extension/SelfNodeRegistryExtension.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/SelfNodeRegistryExtension.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/extension/SelfNodeRegistryExtension.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/SelfNodeRegistryExtension.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/extension/SimpleNodeExtensionContainer.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/SimpleNodeExtensionContainer.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/extension/SimpleNodeExtensionContainer.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/SimpleNodeExtensionContainer.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/extension/SimpleNodeExtensionFactory.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/SimpleNodeExtensionFactory.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/extension/SimpleNodeExtensionFactory.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/SimpleNodeExtensionFactory.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/AbstractLeafNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/AbstractLeafNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/AbstractLeafNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/AbstractLeafNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/AbstractTreeNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/AbstractTreeNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/AbstractTreeNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/AbstractTreeNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/AttrNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/AttrNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/AttrNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/AttrNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/BodyChildNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/BodyChildNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/BodyChildNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/BodyChildNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/BodyNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/BodyNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/BodyNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/BodyNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/BooleanValueAttrNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/BooleanValueAttrNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/BooleanValueAttrNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/BooleanValueAttrNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/ClassComponentTypeNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/ClassComponentTypeNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/ClassComponentTypeNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/ClassComponentTypeNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/ClosureValueNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/ClosureValueNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/ClosureValueNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/ClosureValueNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/CompilationUnitNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/CompilationUnitNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/CompilationUnitNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/CompilationUnitNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/ComponentArgsNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/ComponentArgsNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/ComponentArgsNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/ComponentArgsNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/ComponentConstructorNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/ComponentConstructorNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/ComponentConstructorNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/ComponentConstructorNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/ComponentNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/ComponentNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/ComponentNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/ComponentNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/ComponentTypeNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/ComponentTypeNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/ComponentTypeNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/ComponentTypeNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/ComponentValueNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/ComponentValueNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/ComponentValueNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/ComponentValueNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/DollarReferenceNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/DollarReferenceNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/DollarReferenceNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/DollarReferenceNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/DollarScriptletNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/DollarScriptletNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/DollarScriptletNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/DollarScriptletNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/EmptyClosureValueNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/EmptyClosureValueNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/EmptyClosureValueNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/EmptyClosureValueNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/FragmentComponentNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/FragmentComponentNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/FragmentComponentNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/FragmentComponentNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/GStringBodyTextNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/GStringBodyTextNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/GStringBodyTextNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/GStringBodyTextNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/GStringValueNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/GStringValueNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/GStringValueNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/GStringValueNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/JStringBodyTextNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/JStringBodyTextNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/JStringBodyTextNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/JStringBodyTextNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/JStringValueNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/JStringValueNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/JStringValueNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/JStringValueNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/KeyNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/KeyNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/KeyNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/KeyNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/KeyValueAttrNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/KeyValueAttrNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/KeyValueAttrNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/KeyValueAttrNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/LeafNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/LeafNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/LeafNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/LeafNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/Node.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/Node.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/Node.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/Node.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/PlainScriptletNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/PlainScriptletNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/PlainScriptletNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/PlainScriptletNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/PreambleNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/PreambleNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/PreambleNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/PreambleNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/StringComponentTypeNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/StringComponentTypeNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/StringComponentTypeNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/StringComponentTypeNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/TreeNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/TreeNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/TreeNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/TreeNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/TypedComponentNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/TypedComponentNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/TypedComponentNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/TypedComponentNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/ast/node/ValueNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/ValueNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/ast/node/ValueNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/ValueNode.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/compiler/DefaultWebViewComponentTemplateCompiler.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/compiler/DefaultWebViewComponentTemplateCompiler.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/compiler/DefaultWebViewComponentTemplateCompiler.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/compiler/DefaultWebViewComponentTemplateCompiler.java diff --git a/web-view-components-compiler/src/main/java/groowt/view/component/web/compiler/DefaultWebViewComponentTemplateCompilerFactory.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/compiler/DefaultWebViewComponentTemplateCompilerFactory.java new file mode 100644 index 0000000..6760f26 --- /dev/null +++ b/web-view-components-compiler/src/main/java/groowt/view/component/web/compiler/DefaultWebViewComponentTemplateCompilerFactory.java @@ -0,0 +1,12 @@ +package groowt.view.component.web.compiler; + +import groowt.view.component.compiler.ComponentTemplateCompilerConfiguration; + +public class DefaultWebViewComponentTemplateCompilerFactory implements WebViewComponentTemplateCompilerFactory { + + @Override + public WebViewComponentTemplateCompiler create(ComponentTemplateCompilerConfiguration configuration) { + return new DefaultWebViewComponentTemplateCompiler(configuration); + } + +} diff --git a/web-view-components/src/main/java/groowt/view/component/web/compiler/MultipleWebViewComponentCompileErrorsException.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/compiler/MultipleWebViewComponentCompileErrorsException.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/compiler/MultipleWebViewComponentCompileErrorsException.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/compiler/MultipleWebViewComponentCompileErrorsException.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompileException.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompileException.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompileException.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompileException.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/groovyc/DelegatingWvcParserPlugin.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/groovyc/DelegatingWvcParserPlugin.java similarity index 96% rename from web-view-components/src/main/java/groowt/view/component/web/groovyc/DelegatingWvcParserPlugin.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/groovyc/DelegatingWvcParserPlugin.java index 139d832..1817198 100644 --- a/web-view-components/src/main/java/groowt/view/component/web/groovyc/DelegatingWvcParserPlugin.java +++ b/web-view-components-compiler/src/main/java/groowt/view/component/web/groovyc/DelegatingWvcParserPlugin.java @@ -10,10 +10,7 @@ import groowt.view.component.web.antlr.*; import groowt.view.component.web.ast.DefaultAstBuilder; import groowt.view.component.web.ast.DefaultNodeFactory; import groowt.view.component.web.ast.node.CompilationUnitNode; -import groowt.view.component.web.compiler.AnonymousWebViewComponent; -import groowt.view.component.web.compiler.MultipleWebViewComponentCompileErrorsException; -import groowt.view.component.web.compiler.WebViewComponentTemplateCompileException; -import groowt.view.component.web.compiler.WebViewComponentTemplateCompileUnit; +import groowt.view.component.web.compiler.*; import groowt.view.component.web.transpile.DefaultGroovyTranspiler; import groowt.view.component.web.util.SourcePosition; import org.antlr.v4.runtime.ParserRuleContext; @@ -135,7 +132,7 @@ public class DelegatingWvcParserPlugin implements ParserPlugin { final int lastSlashIndex = sourceUnitFullName.lastIndexOf(File.separator); final String sourceUnitFileName = sourceUnitFullName.substring(lastSlashIndex + 1); if (sourceUnitFileName.endsWith(".wvc")) { - final var compileUnit = new WebViewComponentTemplateCompileUnit( + final var compileUnit = new DefaultWebViewComponentTemplateCompileUnit( AnonymousWebViewComponent.class, ComponentTemplateSource.of(sourceUnit.getSource().getURI()), "" // default package diff --git a/web-view-components/src/main/resources/groowt/view/component/web/groovyc/GroovycConfigurationScript.groovy b/web-view-components-compiler/src/main/java/groowt/view/component/web/groovyc/GroovycConfigurationScript.groovy similarity index 100% rename from web-view-components/src/main/resources/groowt/view/component/web/groovyc/GroovycConfigurationScript.groovy rename to web-view-components-compiler/src/main/java/groowt/view/component/web/groovyc/GroovycConfigurationScript.groovy diff --git a/web-view-components/src/main/java/groowt/view/component/web/groovyc/WvcParserPluginFactory.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/groovyc/WvcParserPluginFactory.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/groovyc/WvcParserPluginFactory.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/groovyc/WvcParserPluginFactory.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/AppendOrAddStatementFactory.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/AppendOrAddStatementFactory.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/AppendOrAddStatementFactory.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/AppendOrAddStatementFactory.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/BodyTranspiler.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/BodyTranspiler.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/BodyTranspiler.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/BodyTranspiler.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/ComponentTranspiler.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/ComponentTranspiler.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/ComponentTranspiler.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/ComponentTranspiler.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/DefaultAppendOrAddStatementFactory.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultAppendOrAddStatementFactory.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/DefaultAppendOrAddStatementFactory.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultAppendOrAddStatementFactory.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/DefaultBodyTranspiler.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultBodyTranspiler.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/DefaultBodyTranspiler.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultBodyTranspiler.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/DefaultComponentTranspiler.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultComponentTranspiler.java similarity index 99% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/DefaultComponentTranspiler.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultComponentTranspiler.java index 212a42b..eaac1ce 100644 --- a/web-view-components/src/main/java/groowt/view/component/web/transpile/DefaultComponentTranspiler.java +++ b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultComponentTranspiler.java @@ -5,7 +5,6 @@ import groowt.view.component.context.ComponentResolveException; import groowt.view.component.runtime.ComponentCreateException; import groowt.view.component.web.WebViewComponentBugError; import groowt.view.component.web.ast.node.*; -import groowt.view.component.web.transpile.TranspilerUtil.*; import groowt.view.component.web.transpile.groovy.GroovyUtil; import groowt.view.component.web.transpile.groovy.GroovyUtil.ConvertResult; import groowt.view.component.web.transpile.resolve.ComponentClassNodeResolver; diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/DefaultGStringTranspiler.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultGStringTranspiler.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/DefaultGStringTranspiler.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultGStringTranspiler.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/DefaultGroovyTranspiler.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultGroovyTranspiler.java similarity index 99% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/DefaultGroovyTranspiler.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultGroovyTranspiler.java index aa6dc1f..c8e71d5 100644 --- a/web-view-components/src/main/java/groowt/view/component/web/transpile/DefaultGroovyTranspiler.java +++ b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultGroovyTranspiler.java @@ -142,7 +142,7 @@ public class DefaultGroovyTranspiler implements GroovyTranspiler { final var groovyCompilerConfiguration = compilerConfiguration.getGroovyCompilerConfiguration(); final var sourceUnit = new WebViewComponentSourceUnit( templateClassName, - compileUnit, + compileUnit.getGroovyReaderSource(), groovyCompilerConfiguration, compilerConfiguration.getGroovyClassLoader(), new ErrorCollector(groovyCompilerConfiguration) diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/DefaultJStringTranspiler.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultJStringTranspiler.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/DefaultJStringTranspiler.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultJStringTranspiler.java diff --git a/web-view-components/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 similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/DefaultSourceMapSerializer.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultSourceMapSerializer.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/DefaultTranspilerConfiguration.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultTranspilerConfiguration.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/DefaultTranspilerConfiguration.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultTranspilerConfiguration.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/DefaultValueNodeTranspiler.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultValueNodeTranspiler.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/DefaultValueNodeTranspiler.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultValueNodeTranspiler.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/GStringTranspiler.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/GStringTranspiler.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/GStringTranspiler.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/GStringTranspiler.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/GroovyTranspiler.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/GroovyTranspiler.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/GroovyTranspiler.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/GroovyTranspiler.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/JStringTranspiler.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/JStringTranspiler.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/JStringTranspiler.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/JStringTranspiler.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/PositionSetter.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/PositionSetter.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/PositionSetter.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/PositionSetter.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/SimplePositionSetter.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/SimplePositionSetter.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/SimplePositionSetter.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/SimplePositionSetter.java diff --git a/web-view-components/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 similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/SourceMap.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/SourceMap.java diff --git a/web-view-components/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 similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/SourceMapDeserializer.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/SourceMapDeserializer.java diff --git a/web-view-components/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 similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/SourceMapSerializer.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/SourceMapSerializer.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/TranspilerConfiguration.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/TranspilerConfiguration.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/TranspilerConfiguration.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/TranspilerConfiguration.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/TranspilerUtil.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/TranspilerUtil.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/TranspilerUtil.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/TranspilerUtil.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/ValueNodeTranspiler.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/ValueNodeTranspiler.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/ValueNodeTranspiler.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/ValueNodeTranspiler.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/WebViewComponentModuleNode.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/WebViewComponentModuleNode.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/WebViewComponentModuleNode.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/WebViewComponentModuleNode.java diff --git a/web-view-components/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 similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/WebViewComponentReaderSource.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/WebViewComponentReaderSource.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/WebViewComponentSourceUnit.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/WebViewComponentSourceUnit.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/WebViewComponentSourceUnit.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/WebViewComponentSourceUnit.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/groovy/GroovyPrettyPrinter.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/groovy/GroovyPrettyPrinter.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/groovy/GroovyPrettyPrinter.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/groovy/GroovyPrettyPrinter.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/groovy/GroovyUtil.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/groovy/GroovyUtil.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/groovy/GroovyUtil.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/groovy/GroovyUtil.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/groovy/GroovyUtil.kt b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/groovy/GroovyUtil.kt similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/groovy/GroovyUtil.kt rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/groovy/GroovyUtil.kt diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/resolve/CachingComponentClassNodeResolver.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/resolve/CachingComponentClassNodeResolver.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/resolve/CachingComponentClassNodeResolver.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/resolve/CachingComponentClassNodeResolver.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/resolve/ClassLoaderComponentClassNodeResolver.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/resolve/ClassLoaderComponentClassNodeResolver.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/resolve/ClassLoaderComponentClassNodeResolver.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/resolve/ClassLoaderComponentClassNodeResolver.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/resolve/ComponentClassNodeResolver.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/resolve/ComponentClassNodeResolver.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/resolve/ComponentClassNodeResolver.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/resolve/ComponentClassNodeResolver.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/resolve/ModuleNodeComponentClassNodeResolver.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/resolve/ModuleNodeComponentClassNodeResolver.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/resolve/ModuleNodeComponentClassNodeResolver.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/resolve/ModuleNodeComponentClassNodeResolver.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/transpile/resolve/ResolveUtil.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/resolve/ResolveUtil.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/transpile/resolve/ResolveUtil.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/resolve/ResolveUtil.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/util/AbstractClosedRange.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/util/AbstractClosedRange.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/util/AbstractClosedRange.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/util/AbstractClosedRange.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/util/ClosedRange.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/util/ClosedRange.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/util/ClosedRange.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/util/ClosedRange.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/util/ComparableClosedRange.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/util/ComparableClosedRange.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/util/ComparableClosedRange.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/util/ComparableClosedRange.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/util/ComparatorClosedRange.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/util/ComparatorClosedRange.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/util/ComparatorClosedRange.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/util/ComparatorClosedRange.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/util/EmptyRange.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/util/EmptyRange.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/util/EmptyRange.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/util/EmptyRange.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/util/EmptyTokenRange.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/util/EmptyTokenRange.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/util/EmptyTokenRange.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/util/EmptyTokenRange.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/util/FilteringIterable.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/util/FilteringIterable.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/util/FilteringIterable.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/util/FilteringIterable.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/util/FilteringIterator.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/util/FilteringIterator.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/util/FilteringIterator.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/util/FilteringIterator.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/util/MappingIterable.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/util/MappingIterable.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/util/MappingIterable.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/util/MappingIterable.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/util/MappingIterator.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/util/MappingIterator.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/util/MappingIterator.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/util/MappingIterator.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/util/OpenRange.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/util/OpenRange.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/util/OpenRange.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/util/OpenRange.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/util/Range.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/util/Range.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/util/Range.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/util/Range.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/util/RangeIterator.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/util/RangeIterator.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/util/RangeIterator.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/util/RangeIterator.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/util/SimpleRangeIterator.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/util/SimpleRangeIterator.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/util/SimpleRangeIterator.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/util/SimpleRangeIterator.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/util/SimpleTokenRange.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/util/SimpleTokenRange.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/util/SimpleTokenRange.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/util/SimpleTokenRange.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/util/SourcePosition.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/util/SourcePosition.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/util/SourcePosition.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/util/SourcePosition.java diff --git a/web-view-components/src/main/java/groowt/view/component/web/util/TokenRange.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/util/TokenRange.java similarity index 100% rename from web-view-components/src/main/java/groowt/view/component/web/util/TokenRange.java rename to web-view-components-compiler/src/main/java/groowt/view/component/web/util/TokenRange.java diff --git a/web-view-components-compiler/src/main/resources/META-INF/services/groowt.view.component.web.compiler.WebViewComponentTemplateCompilerFactory b/web-view-components-compiler/src/main/resources/META-INF/services/groowt.view.component.web.compiler.WebViewComponentTemplateCompilerFactory new file mode 100644 index 0000000..4cfb175 --- /dev/null +++ b/web-view-components-compiler/src/main/resources/META-INF/services/groowt.view.component.web.compiler.WebViewComponentTemplateCompilerFactory @@ -0,0 +1 @@ +groowt.view.component.web.compiler.DefaultWebViewComponentTemplateCompilerFactory diff --git a/web-view-components-compiler/src/main/resources/groowt/view/component/web/groovyc/groovycConfigurationScript.groovy b/web-view-components-compiler/src/main/resources/groowt/view/component/web/groovyc/groovycConfigurationScript.groovy new file mode 100644 index 0000000..c57226f --- /dev/null +++ b/web-view-components-compiler/src/main/resources/groowt/view/component/web/groovyc/groovycConfigurationScript.groovy @@ -0,0 +1,5 @@ +package groowt.view.component.web.groovyc + +import org.codehaus.groovy.control.CompilerConfiguration + +(configuration as CompilerConfiguration).pluginFactory = new WvcParserPluginFactory() diff --git a/web-view-components/src/test/ast/complicated.wvc b/web-view-components-compiler/src/test/ast/complicated.wvc similarity index 100% rename from web-view-components/src/test/ast/complicated.wvc rename to web-view-components-compiler/src/test/ast/complicated.wvc diff --git a/web-view-components/src/test/ast/helloTarget.wvc b/web-view-components-compiler/src/test/ast/helloTarget.wvc similarity index 100% rename from web-view-components/src/test/ast/helloTarget.wvc rename to web-view-components-compiler/src/test/ast/helloTarget.wvc diff --git a/web-view-components/src/test/ast/simpleComponentWithBody.wvc b/web-view-components-compiler/src/test/ast/simpleComponentWithBody.wvc similarity index 100% rename from web-view-components/src/test/ast/simpleComponentWithBody.wvc rename to web-view-components-compiler/src/test/ast/simpleComponentWithBody.wvc diff --git a/web-view-components/src/test/ast/trees/complicated_ast.txt b/web-view-components-compiler/src/test/ast/trees/complicated_ast.txt similarity index 100% rename from web-view-components/src/test/ast/trees/complicated_ast.txt rename to web-view-components-compiler/src/test/ast/trees/complicated_ast.txt diff --git a/web-view-components/src/test/ast/trees/helloTarget_ast.txt b/web-view-components-compiler/src/test/ast/trees/helloTarget_ast.txt similarity index 100% rename from web-view-components/src/test/ast/trees/helloTarget_ast.txt rename to web-view-components-compiler/src/test/ast/trees/helloTarget_ast.txt diff --git a/web-view-components/src/test/ast/trees/simpleComponentWithBody_ast.txt b/web-view-components-compiler/src/test/ast/trees/simpleComponentWithBody_ast.txt similarity index 100% rename from web-view-components/src/test/ast/trees/simpleComponentWithBody_ast.txt rename to web-view-components-compiler/src/test/ast/trees/simpleComponentWithBody_ast.txt diff --git a/web-view-components/src/test/groovy/groowt/view/component/web/antlr/WebViewComponentsTokenStreamTests.groovy b/web-view-components-compiler/src/test/groovy/groowt/view/component/web/antlr/WebViewComponentsTokenStreamTests.groovy similarity index 100% rename from web-view-components/src/test/groovy/groowt/view/component/web/antlr/WebViewComponentsTokenStreamTests.groovy rename to web-view-components-compiler/src/test/groovy/groowt/view/component/web/antlr/WebViewComponentsTokenStreamTests.groovy diff --git a/web-view-components/src/test/groovy/groowt/view/component/web/antlr/WebViewComponentsLexerTests.java b/web-view-components-compiler/src/test/java/groowt/view/component/web/antlr/WebViewComponentsLexerTests.java similarity index 100% rename from web-view-components/src/test/groovy/groowt/view/component/web/antlr/WebViewComponentsLexerTests.java rename to web-view-components-compiler/src/test/java/groowt/view/component/web/antlr/WebViewComponentsLexerTests.java diff --git a/web-view-components/src/test/groovy/groowt/view/component/web/antlr/WebViewComponentsParserTests.java b/web-view-components-compiler/src/test/java/groowt/view/component/web/antlr/WebViewComponentsParserTests.java similarity index 100% rename from web-view-components/src/test/groovy/groowt/view/component/web/antlr/WebViewComponentsParserTests.java rename to web-view-components-compiler/src/test/java/groowt/view/component/web/antlr/WebViewComponentsParserTests.java diff --git a/web-view-components/src/test/groovy/groowt/view/component/web/ast/DefaultAstBuilderTests.java b/web-view-components-compiler/src/test/java/groowt/view/component/web/ast/DefaultAstBuilderTests.java similarity index 100% rename from web-view-components/src/test/groovy/groowt/view/component/web/ast/DefaultAstBuilderTests.java rename to web-view-components-compiler/src/test/java/groowt/view/component/web/ast/DefaultAstBuilderTests.java diff --git a/web-view-components/src/test/groovy/groowt/view/component/web/ast/DefaultAstBuilderVisitorTests.groovy b/web-view-components-compiler/src/test/java/groowt/view/component/web/ast/DefaultAstBuilderVisitorTests.groovy similarity index 100% rename from web-view-components/src/test/groovy/groowt/view/component/web/ast/DefaultAstBuilderVisitorTests.groovy rename to web-view-components-compiler/src/test/java/groowt/view/component/web/ast/DefaultAstBuilderVisitorTests.groovy diff --git a/web-view-components/src/test/groovy/groowt/view/component/web/ast/DefaultNodeFactoryTests.java b/web-view-components-compiler/src/test/java/groowt/view/component/web/ast/DefaultNodeFactoryTests.java similarity index 100% rename from web-view-components/src/test/groovy/groowt/view/component/web/ast/DefaultNodeFactoryTests.java rename to web-view-components-compiler/src/test/java/groowt/view/component/web/ast/DefaultNodeFactoryTests.java diff --git a/web-view-components/src/test/groovy/groowt/view/component/web/transpiler/DefaultBodyTranspilerTests.java b/web-view-components-compiler/src/test/java/groowt/view/component/web/transpiler/DefaultBodyTranspilerTests.java similarity index 100% rename from web-view-components/src/test/groovy/groowt/view/component/web/transpiler/DefaultBodyTranspilerTests.java rename to web-view-components-compiler/src/test/java/groowt/view/component/web/transpiler/DefaultBodyTranspilerTests.java diff --git a/web-view-components/src/test/groovy/groowt/view/component/web/transpiler/DefaultGStringTranspilerTests.java b/web-view-components-compiler/src/test/java/groowt/view/component/web/transpiler/DefaultGStringTranspilerTests.java similarity index 100% rename from web-view-components/src/test/groovy/groowt/view/component/web/transpiler/DefaultGStringTranspilerTests.java rename to web-view-components-compiler/src/test/java/groowt/view/component/web/transpiler/DefaultGStringTranspilerTests.java diff --git a/web-view-components/src/test/groovy/groowt/view/component/web/transpiler/DefaultGroovyTranspilerTests.java b/web-view-components-compiler/src/test/java/groowt/view/component/web/transpiler/DefaultGroovyTranspilerTests.java similarity index 100% rename from web-view-components/src/test/groovy/groowt/view/component/web/transpiler/DefaultGroovyTranspilerTests.java rename to web-view-components-compiler/src/test/java/groowt/view/component/web/transpiler/DefaultGroovyTranspilerTests.java diff --git a/web-view-components/src/test/groovy/groowt/view/component/web/transpiler/resolve/ResolveUtilTests.java b/web-view-components-compiler/src/test/java/groowt/view/component/web/transpiler/ResolveUtilTests.java similarity index 91% rename from web-view-components/src/test/groovy/groowt/view/component/web/transpiler/resolve/ResolveUtilTests.java rename to web-view-components-compiler/src/test/java/groowt/view/component/web/transpiler/ResolveUtilTests.java index 391f4c6..5074fc6 100644 --- a/web-view-components/src/test/groovy/groowt/view/component/web/transpiler/resolve/ResolveUtilTests.java +++ b/web-view-components-compiler/src/test/java/groowt/view/component/web/transpiler/ResolveUtilTests.java @@ -1,4 +1,4 @@ -package groowt.view.component.web.transpiler.resolve; +package groowt.view.component.web.transpiler; import org.junit.jupiter.api.Test; diff --git a/web-view-components/src/test/parser/blankPreambleOnly.wvc b/web-view-components-compiler/src/test/parser/blankPreambleOnly.wvc similarity index 100% rename from web-view-components/src/test/parser/blankPreambleOnly.wvc rename to web-view-components-compiler/src/test/parser/blankPreambleOnly.wvc diff --git a/web-view-components/src/test/parser/blankPreambleWithExtraLines.wvc b/web-view-components-compiler/src/test/parser/blankPreambleWithExtraLines.wvc similarity index 100% rename from web-view-components/src/test/parser/blankPreambleWithExtraLines.wvc rename to web-view-components-compiler/src/test/parser/blankPreambleWithExtraLines.wvc diff --git a/web-view-components/src/test/parser/complicated.wvc b/web-view-components-compiler/src/test/parser/complicated.wvc similarity index 100% rename from web-view-components/src/test/parser/complicated.wvc rename to web-view-components-compiler/src/test/parser/complicated.wvc diff --git a/web-view-components/src/test/parser/helloTarget.wvc b/web-view-components-compiler/src/test/parser/helloTarget.wvc similarity index 100% rename from web-view-components/src/test/parser/helloTarget.wvc rename to web-view-components-compiler/src/test/parser/helloTarget.wvc diff --git a/web-view-components/src/test/parser/preambleWithClass.wvc b/web-view-components-compiler/src/test/parser/preambleWithClass.wvc similarity index 100% rename from web-view-components/src/test/parser/preambleWithClass.wvc rename to web-view-components-compiler/src/test/parser/preambleWithClass.wvc diff --git a/web-view-components/src/test/parser/trees/blankPreambleOnly_parseTree.txt b/web-view-components-compiler/src/test/parser/trees/blankPreambleOnly_parseTree.txt similarity index 100% rename from web-view-components/src/test/parser/trees/blankPreambleOnly_parseTree.txt rename to web-view-components-compiler/src/test/parser/trees/blankPreambleOnly_parseTree.txt diff --git a/web-view-components/src/test/parser/trees/blankPreambleWithExtraLines_parseTree.txt b/web-view-components-compiler/src/test/parser/trees/blankPreambleWithExtraLines_parseTree.txt similarity index 100% rename from web-view-components/src/test/parser/trees/blankPreambleWithExtraLines_parseTree.txt rename to web-view-components-compiler/src/test/parser/trees/blankPreambleWithExtraLines_parseTree.txt diff --git a/web-view-components/src/test/parser/trees/complicated_parseTree.txt b/web-view-components-compiler/src/test/parser/trees/complicated_parseTree.txt similarity index 100% rename from web-view-components/src/test/parser/trees/complicated_parseTree.txt rename to web-view-components-compiler/src/test/parser/trees/complicated_parseTree.txt diff --git a/web-view-components/src/test/parser/trees/helloTarget_parseTree.txt b/web-view-components-compiler/src/test/parser/trees/helloTarget_parseTree.txt similarity index 100% rename from web-view-components/src/test/parser/trees/helloTarget_parseTree.txt rename to web-view-components-compiler/src/test/parser/trees/helloTarget_parseTree.txt diff --git a/web-view-components/src/test/parser/trees/preambleWithClass_parseTree.txt b/web-view-components-compiler/src/test/parser/trees/preambleWithClass_parseTree.txt similarity index 100% rename from web-view-components/src/test/parser/trees/preambleWithClass_parseTree.txt rename to web-view-components-compiler/src/test/parser/trees/preambleWithClass_parseTree.txt diff --git a/web-view-components/src/test/resources/groowt/view/component/web/antlr/mergesGroovyTokens.gst b/web-view-components-compiler/src/test/resources/groowt/view/component/web/antlr/mergesGroovyTokens.gst similarity index 100% rename from web-view-components/src/test/resources/groowt/view/component/web/antlr/mergesGroovyTokens.gst rename to web-view-components-compiler/src/test/resources/groowt/view/component/web/antlr/mergesGroovyTokens.gst diff --git a/web-view-components/src/testFixtures/java/groowt/view/component/web/ast/AstBuilderTests.java b/web-view-components-compiler/src/testFixtures/java/groowt/view/component/web/ast/AstBuilderTests.java similarity index 100% rename from web-view-components/src/testFixtures/java/groowt/view/component/web/ast/AstBuilderTests.java rename to web-view-components-compiler/src/testFixtures/java/groowt/view/component/web/ast/AstBuilderTests.java diff --git a/web-view-components/src/testFixtures/java/groowt/view/component/web/ast/NodeFactoryTests.java b/web-view-components-compiler/src/testFixtures/java/groowt/view/component/web/ast/NodeFactoryTests.java similarity index 100% rename from web-view-components/src/testFixtures/java/groowt/view/component/web/ast/NodeFactoryTests.java rename to web-view-components-compiler/src/testFixtures/java/groowt/view/component/web/ast/NodeFactoryTests.java diff --git a/web-view-components/src/testFixtures/java/groowt/view/component/web/transpiler/BodyTranspilerTests.java b/web-view-components-compiler/src/testFixtures/java/groowt/view/component/web/transpiler/BodyTranspilerTests.java similarity index 100% rename from web-view-components/src/testFixtures/java/groowt/view/component/web/transpiler/BodyTranspilerTests.java rename to web-view-components-compiler/src/testFixtures/java/groowt/view/component/web/transpiler/BodyTranspilerTests.java diff --git a/web-view-components/src/testFixtures/java/groowt/view/component/web/transpiler/GStringTranspilerTests.java b/web-view-components-compiler/src/testFixtures/java/groowt/view/component/web/transpiler/GStringTranspilerTests.java similarity index 100% rename from web-view-components/src/testFixtures/java/groowt/view/component/web/transpiler/GStringTranspilerTests.java rename to web-view-components-compiler/src/testFixtures/java/groowt/view/component/web/transpiler/GStringTranspilerTests.java diff --git a/web-view-components/src/testFixtures/java/groowt/view/component/web/transpiler/GroovyTranspilerTests.java b/web-view-components-compiler/src/testFixtures/java/groowt/view/component/web/transpiler/GroovyTranspilerTests.java similarity index 94% rename from web-view-components/src/testFixtures/java/groowt/view/component/web/transpiler/GroovyTranspilerTests.java rename to web-view-components-compiler/src/testFixtures/java/groowt/view/component/web/transpiler/GroovyTranspilerTests.java index 346cf6e..443b4b6 100644 --- a/web-view-components/src/testFixtures/java/groowt/view/component/web/transpiler/GroovyTranspilerTests.java +++ b/web-view-components-compiler/src/testFixtures/java/groowt/view/component/web/transpiler/GroovyTranspilerTests.java @@ -11,7 +11,7 @@ import groowt.view.component.web.ast.DefaultAstBuilder; import groowt.view.component.web.ast.DefaultNodeFactory; import groowt.view.component.web.ast.node.CompilationUnitNode; import groowt.view.component.web.compiler.AnonymousWebViewComponent; -import groowt.view.component.web.compiler.WebViewComponentTemplateCompileUnit; +import groowt.view.component.web.compiler.DefaultWebViewComponentTemplateCompileUnit; import groowt.view.component.web.transpile.GroovyTranspiler; import org.codehaus.groovy.control.CompilationUnit; import org.codehaus.groovy.control.CompilePhase; @@ -43,7 +43,7 @@ public abstract class GroovyTranspilerTests { try { this.transpiler.transpile( new DefaultComponentTemplateCompilerConfiguration(), - new WebViewComponentTemplateCompileUnit( + new DefaultWebViewComponentTemplateCompileUnit( AnonymousWebViewComponent.class, new StringSource(source, null), "groowt.view.component.web.transpiler" diff --git a/web-view-components-compiler/src/tools/binTemplate.gst b/web-view-components-compiler/src/tools/binTemplate.gst new file mode 100644 index 0000000..de59ea7 --- /dev/null +++ b/web-view-components-compiler/src/tools/binTemplate.gst @@ -0,0 +1,3 @@ +#/usr/bin/env bash + +../gradlew toolsJar && java -cp build/libs/web-tools-0.1.0.jar:build/libs/web-views-0.1.0.jar $mainClassName "\$@" diff --git a/web-view-components/src/tools/groovy/groowt/view/component/web/tools/AbstractTreeFileMaker.groovy b/web-view-components-compiler/src/tools/groovy/groowt/view/component/web/tools/AbstractTreeFileMaker.groovy similarity index 100% rename from web-view-components/src/tools/groovy/groowt/view/component/web/tools/AbstractTreeFileMaker.groovy rename to web-view-components-compiler/src/tools/groovy/groowt/view/component/web/tools/AbstractTreeFileMaker.groovy diff --git a/web-view-components/src/tools/groovy/groowt/view/component/web/tools/AstFileMaker.groovy b/web-view-components-compiler/src/tools/groovy/groowt/view/component/web/tools/AstFileMaker.groovy similarity index 89% rename from web-view-components/src/tools/groovy/groowt/view/component/web/tools/AstFileMaker.groovy rename to web-view-components-compiler/src/tools/groovy/groowt/view/component/web/tools/AstFileMaker.groovy index 3d87333..a62793d 100644 --- a/web-view-components/src/tools/groovy/groowt/view/component/web/tools/AstFileMaker.groovy +++ b/web-view-components-compiler/src/tools/groovy/groowt/view/component/web/tools/AstFileMaker.groovy @@ -2,16 +2,17 @@ package groowt.view.component.web.tools import groovy.transform.InheritConstructors import groovy.transform.MapConstructor +import groowt.view.component.web.analysis.MismatchedComponentTypeAnalysis import groowt.view.component.web.antlr.AntlrUtil +import groowt.view.component.web.antlr.ParserUtil import groowt.view.component.web.antlr.TokenList +import groowt.view.component.web.antlr.WebViewComponentsParser import groowt.view.component.web.ast.DefaultAstBuilder import groowt.view.component.web.ast.DefaultNodeFactory import groowt.view.component.web.ast.NodeUtil import groowt.view.component.web.ast.node.Node import org.jetbrains.annotations.Nullable -import static groowt.view.web.antlr.WebViewComponentsParser.CompilationUnitContext - @InheritConstructors final class AstFileMaker extends AbstractTreeFileMaker { @@ -26,7 +27,7 @@ final class AstFileMaker extends AbstractTreeFileMaker { @MapConstructor protected static class BuildFailure implements BuildResult { @Nullable RuntimeException exception - @Nullable CompilationUnitContext compilationUnitContext + @Nullable WebViewComponentsParser.CompilationUnitContext compilationUnitContext @Nullable String message } @@ -78,7 +79,7 @@ final class AstFileMaker extends AbstractTreeFileMaker { private BuildResult build(File sourceFile) { try { - def parseResult = groowt.view.component.web.antlr.ParserUtil.parseCompilationUnit(sourceFile) + def parseResult = ParserUtil.parseCompilationUnit(sourceFile) def cuContext = parseResult.compilationUnitContext @@ -86,7 +87,7 @@ final class AstFileMaker extends AbstractTreeFileMaker { if (!errorCollector.isEmpty()) { def message = 'There were parsing/lexing errors: \n' + errorCollector.all.collect { - groowt.view.component.web.antlr.ParserUtil.formatTree(parseResult.parser, it, true) + '\n' + ParserUtil.formatTree(parseResult.parser, it, true) + '\n' } return new BuildFailure( compilationUnitContext: cuContext, @@ -94,7 +95,7 @@ final class AstFileMaker extends AbstractTreeFileMaker { ) } - def mismatchedTypeErrors = groowt.view.component.web.analysis.MismatchedComponentTypeAnalysis.check(cuContext) + def mismatchedTypeErrors = MismatchedComponentTypeAnalysis.check(cuContext) if (!mismatchedTypeErrors.isEmpty()) { def message = 'There were mismatched type errors: \n' + mismatchedTypeErrors.collect { diff --git a/web-view-components/src/tools/groovy/groowt/view/component/web/tools/AstFileMakerCli.groovy b/web-view-components-compiler/src/tools/groovy/groowt/view/component/web/tools/AstFileMakerCli.groovy similarity index 100% rename from web-view-components/src/tools/groovy/groowt/view/component/web/tools/AstFileMakerCli.groovy rename to web-view-components-compiler/src/tools/groovy/groowt/view/component/web/tools/AstFileMakerCli.groovy diff --git a/web-view-components/src/tools/groovy/groowt/view/component/web/tools/ConvertToGroovy.groovy b/web-view-components-compiler/src/tools/groovy/groowt/view/component/web/tools/ConvertToGroovy.groovy similarity index 95% rename from web-view-components/src/tools/groovy/groowt/view/component/web/tools/ConvertToGroovy.groovy rename to web-view-components-compiler/src/tools/groovy/groowt/view/component/web/tools/ConvertToGroovy.groovy index 69c2cf2..5de2916 100644 --- a/web-view-components/src/tools/groovy/groowt/view/component/web/tools/ConvertToGroovy.groovy +++ b/web-view-components-compiler/src/tools/groovy/groowt/view/component/web/tools/ConvertToGroovy.groovy @@ -5,7 +5,7 @@ import groowt.view.component.compiler.source.ComponentTemplateSource import groowt.view.component.compiler.util.GroovyClassWriter import groowt.view.component.compiler.util.SimpleGroovyClassWriter import groowt.view.component.web.compiler.AnonymousWebViewComponent -import groowt.view.component.web.compiler.WebViewComponentTemplateCompileUnit +import groowt.view.component.web.compiler.DefaultWebViewComponentTemplateCompileUnit import picocli.CommandLine import java.util.concurrent.Callable @@ -61,7 +61,7 @@ class ConvertToGroovy implements Callable { boolean success = this.targets.inject(true) { acc, target -> def name = target.name.takeBefore('.wvc') try { - def compileUnit = new WebViewComponentTemplateCompileUnit( + def compileUnit = new DefaultWebViewComponentTemplateCompileUnit( AnonymousWebViewComponent, ComponentTemplateSource.of(target), AnonymousWebViewComponent.packageName diff --git a/web-view-components/src/tools/groovy/groowt/view/component/web/tools/ParseTreeFileMaker.groovy b/web-view-components-compiler/src/tools/groovy/groowt/view/component/web/tools/ParseTreeFileMaker.groovy similarity index 77% rename from web-view-components/src/tools/groovy/groowt/view/component/web/tools/ParseTreeFileMaker.groovy rename to web-view-components-compiler/src/tools/groovy/groowt/view/component/web/tools/ParseTreeFileMaker.groovy index 96753ee..c0b3be4 100644 --- a/web-view-components/src/tools/groovy/groowt/view/component/web/tools/ParseTreeFileMaker.groovy +++ b/web-view-components-compiler/src/tools/groovy/groowt/view/component/web/tools/ParseTreeFileMaker.groovy @@ -1,19 +1,18 @@ package groowt.view.component.web.tools import groovy.transform.InheritConstructors -import groowt.view.component.web.antlr.AntlrUtil +import groowt.view.component.web.antlr.* import groowt.view.component.web.antlr.AntlrUtil.ParseErrorCollector -import groowt.view.component.web.antlr.ParserUtil -import groowt.view.component.web.antlr.WebViewComponentsLexer -import groowt.view.component.web.antlr.WebViewComponentsTokenStream -import groowt.view.web.antlr.* -import groowt.view.web.antlr.WebViewComponentsParser.CompilationUnitContext import org.antlr.v4.runtime.CharStreams @InheritConstructors final class ParseTreeFileMaker extends AbstractTreeFileMaker { - private void writeFormatted(String name, WebViewComponentsParser parser, CompilationUnitContext cu) { + private void writeFormatted( + String name, + WebViewComponentsParser parser, + WebViewComponentsParser.CompilationUnitContext cu + ) { this.outputDirectory.mkdirs() def formatted = ParserUtil.formatTree(parser, cu, false) def out = new File(this.outputDirectory, name + this.suffix + this.extension) @@ -33,7 +32,11 @@ final class ParseTreeFileMaker extends AbstractTreeFileMaker { /** * @return true if done now, false if not done yet */ - private boolean onSuccess(String name, WebViewComponentsParser parser, CompilationUnitContext cu) { + private boolean onSuccess( + String name, + WebViewComponentsParser parser, + WebViewComponentsParser.CompilationUnitContext cu + ) { if (!this.autoYes) { println 'Please preview the formatted tree:' println ParserUtil.formatTree(parser, cu, true) @@ -49,7 +52,12 @@ final class ParseTreeFileMaker extends AbstractTreeFileMaker { /** * @return true if done now, false if not done yet */ - private boolean onErrors(String name, WebViewComponentsParser parser, CompilationUnitContext cu, ParseErrorCollector errors) { + private boolean onErrors( + String name, + WebViewComponentsParser parser, + WebViewComponentsParser.CompilationUnitContext cu, + ParseErrorCollector errors + ) { def errorCount = errors.errorCount def isOne = errorCount == 1 def formatted = ParserUtil.formatTree(parser, cu, true) @@ -64,7 +72,9 @@ final class ParseTreeFileMaker extends AbstractTreeFileMaker { } } - private Tuple3 parse(File sourceFile) { + private Tuple3 parse( + File sourceFile + ) { def input = CharStreams.fromFileName(sourceFile.toString()) def lexer = new WebViewComponentsLexer(input) def tokenStream = new WebViewComponentsTokenStream(lexer) diff --git a/web-view-components/src/tools/groovy/groowt/view/component/web/tools/ParseTreeFileMakerCli.groovy b/web-view-components-compiler/src/tools/groovy/groowt/view/component/web/tools/ParseTreeFileMakerCli.groovy similarity index 100% rename from web-view-components/src/tools/groovy/groowt/view/component/web/tools/ParseTreeFileMakerCli.groovy rename to web-view-components-compiler/src/tools/groovy/groowt/view/component/web/tools/ParseTreeFileMakerCli.groovy diff --git a/web-view-components/src/tools/groovy/groowt/view/component/web/tools/SourceFileProcessor.groovy b/web-view-components-compiler/src/tools/groovy/groowt/view/component/web/tools/SourceFileProcessor.groovy similarity index 100% rename from web-view-components/src/tools/groovy/groowt/view/component/web/tools/SourceFileProcessor.groovy rename to web-view-components-compiler/src/tools/groovy/groowt/view/component/web/tools/SourceFileProcessor.groovy diff --git a/web-view-components/src/tools/groovy/groowt/view/component/web/tools/SourceFileProcessorSpec.groovy b/web-view-components-compiler/src/tools/groovy/groowt/view/component/web/tools/SourceFileProcessorSpec.groovy similarity index 100% rename from web-view-components/src/tools/groovy/groowt/view/component/web/tools/SourceFileProcessorSpec.groovy rename to web-view-components-compiler/src/tools/groovy/groowt/view/component/web/tools/SourceFileProcessorSpec.groovy diff --git a/web-view-components/src/tools/kotlin/groowt/view/component/web/tools/LexerTool.kt b/web-view-components-compiler/src/tools/kotlin/groowt/view/component/web/tools/LexerTool.kt similarity index 100% rename from web-view-components/src/tools/kotlin/groowt/view/component/web/tools/LexerTool.kt rename to web-view-components-compiler/src/tools/kotlin/groowt/view/component/web/tools/LexerTool.kt diff --git a/web-view-components/src/tools/kotlin/groowt/view/component/web/tools/ParserTool.kt b/web-view-components-compiler/src/tools/kotlin/groowt/view/component/web/tools/ParserTool.kt similarity index 100% rename from web-view-components/src/tools/kotlin/groowt/view/component/web/tools/ParserTool.kt rename to web-view-components-compiler/src/tools/kotlin/groowt/view/component/web/tools/ParserTool.kt diff --git a/web-view-components/src/tools/kotlin/groowt/view/component/web/tools/ToolUtil.kt b/web-view-components-compiler/src/tools/kotlin/groowt/view/component/web/tools/ToolUtil.kt similarity index 100% rename from web-view-components/src/tools/kotlin/groowt/view/component/web/tools/ToolUtil.kt rename to web-view-components-compiler/src/tools/kotlin/groowt/view/component/web/tools/ToolUtil.kt diff --git a/web-view-components-compiler/src/tools/resources/log4j2.xml b/web-view-components-compiler/src/tools/resources/log4j2.xml new file mode 100644 index 0000000..62ffc5c --- /dev/null +++ b/web-view-components-compiler/src/tools/resources/log4j2.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/web-view-components/build.gradle b/web-view-components/build.gradle index 3f65f61..d6b5e92 100644 --- a/web-view-components/build.gradle +++ b/web-view-components/build.gradle @@ -1,5 +1,4 @@ import groovy.transform.NullCheck -import groowt.gradle.antlr.GroowtAntlrExecTask plugins { id 'groowt-conventions' @@ -8,7 +7,6 @@ plugins { id 'groowt-publish' id 'java-library' id 'groovy' - id 'org.jetbrains.kotlin.jvm' id 'java-test-fixtures' } @@ -17,111 +15,44 @@ repositories { } configurations { + groovyConsole testFixturesApi { extendsFrom configurations.testing } - groovyConsole toolsImplementation { extendsFrom(apiElements, runtimeElements) } - sketchingImplementation { - extendsFrom(apiElements, runtimeElements) - } } sourceSets { - sketching { - java { - compileClasspath += sourceSets.main.output - runtimeClasspath += sourceSets.main.output - srcDirs = [file('sketching/java')] - } - groovy { - srcDirs = [file('sketching/groovy')] - } - resources { - srcDirs = [file('sketching/resources')] - } - } tools { java { compileClasspath += sourceSets.main.output runtimeClasspath += sourceSets.main.output - runtimeClasspath += sourceSets.sketching.output } } } dependencies { - api( - libs.groovy, - libs.groovy.templates, - libs.antlr.runtime, - project(':fp'), - project(':view-components'), - project(':views') - ) + api libs.groovy + api project(':view-components') + api project(':views') + compileOnlyApi libs.jetbrains.anotations - implementation( - libs.slf4j.api, - libs.kotlin.stdlib, - libs.log4j.core, - libs.jansi, - libs.asm, - project(':di'), - project(':extensible') - ) - groowtAntlr libs.antlr - runtimeOnly libs.log4j.slf4jBinding - def testLibs = [ - libs.mockito.core, libs.mockito.junit - ] + implementation libs.slf4j.api - testLibs.each { - testApi it - testFixturesApi it - } + testRuntimeOnly project(':web-view-components-compiler') groovyConsole libs.groovy.console - toolsApi libs.picocli - toolsImplementation libs.groovy.console - sketchingImplementation libs.groovy -} - -java { - toolchain { - languageVersion = JavaLanguageVersion.of(21) - } + toolsImplementation libs.picocli } ext { - antlrPackageName = 'groowt.view.component.web.antlr' toolsPackageName = 'groowt.view.component.web.tools' } -groowtAntlr { - packageName = project.ext.get('antlrPackageName') - visitor = true -} - -tasks.named('generateWebViewComponentsLexerBase', GroowtAntlrExecTask) { task -> - doLast { - def pattern = ~/public class WebViewComponentsLexerBase(.*)/ - def lexerSource = task.resolveOutputFile 'WebViewComponentsLexerBase.java' - def outLines = lexerSource.readLines().collect { - def matcher = pattern.matcher(it) - if (matcher.matches()) { - return 'public abstract class WebViewComponentsLexerBase' + matcher.group(1) - } else { - return it - } - } - lexerSource.write(outLines.join('\n')) - } -} - tasks.register('groovyConsole', JavaExec) { group = 'groovy' classpath += sourceSets.main.runtimeClasspath + configurations.groovyConsole @@ -140,17 +71,6 @@ tasks.register('toolsJar', Jar) { dependsOn tasks.named('jar') } -tasks.register('uberJar', Jar) { - group = 'build' - archiveBaseName = 'web-views-uber' - from sourceSets.main.output - from sourceSets.sketching.output - from sourceSets.main.runtimeClasspath.filter(File.&exists).collect { - it.isDirectory() ? it : zipTree(it) - } - duplicatesStrategy = DuplicatesStrategy.EXCLUDE -} - @NullCheck class ToolSpec { @@ -209,18 +129,14 @@ tasks.register('cleanBin', Delete) { delete file('bin') } -test { - jvmArgs '-XX:+EnableDynamicAgentLoading' // for mockito/bytebuddy -} - java { withSourcesJar() } publishing { publications { - create('webViews', MavenPublication) { - artifactId = 'groowt-web-views' + create('webViewComponents', MavenPublication) { + artifactId = 'web-view-components' from components.java } } diff --git a/web-view-components/runGroovyc b/web-view-components/runGroovyc deleted file mode 100755 index b6d0e7c..0000000 --- a/web-view-components/runGroovyc +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env bash - -if [ "$1" == "--debug" ]; then - shift - gradle -q uberJar && \ - java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:8192 \ - -cp build/libs/web-views-uber-0.1.0.jar \ - org.codehaus.groovy.tools.FileSystemCompiler \ - --configscript src/main/resources/groowt/view/web/groovyc/GroovycConfigurationScript.groovy \ - -d groovyc-out \ - "$@" -else - gradle -q uberJar && \ - groovyc -cp build/libs/web-views-uber-0.1.0.jar \ - --configscript src/main/resources/groowt/view/web/groovyc/GroovycConfigurationScript.groovy \ - -d groovyc-out \ - "$@" -fi diff --git a/web-view-components/src/main/groovy/groowt/view/component/web/util/ComponentConfigurator.groovy b/web-view-components/src/main/groovy/groowt/view/component/web/ComponentConfigurator.groovy similarity index 82% rename from web-view-components/src/main/groovy/groowt/view/component/web/util/ComponentConfigurator.groovy rename to web-view-components/src/main/groovy/groowt/view/component/web/ComponentConfigurator.groovy index a921068..5f4b8e4 100644 --- a/web-view-components/src/main/groovy/groowt/view/component/web/util/ComponentConfigurator.groovy +++ b/web-view-components/src/main/groovy/groowt/view/component/web/ComponentConfigurator.groovy @@ -1,9 +1,7 @@ -package groowt.view.component.web.util +package groowt.view.component.web import groovy.transform.stc.ClosureParams import groovy.transform.stc.SimpleType -import groowt.view.component.web.WebViewComponent -import groowt.view.component.web.WebViewComponentContext class ComponentConfigurator { diff --git a/web-view-components/src/main/groovy/groowt/view/component/web/util/ConfigurableComponent.groovy b/web-view-components/src/main/groovy/groowt/view/component/web/ConfigurableComponent.groovy similarity index 85% rename from web-view-components/src/main/groovy/groowt/view/component/web/util/ConfigurableComponent.groovy rename to web-view-components/src/main/groovy/groowt/view/component/web/ConfigurableComponent.groovy index 74097f4..f91f6d3 100644 --- a/web-view-components/src/main/groovy/groowt/view/component/web/util/ConfigurableComponent.groovy +++ b/web-view-components/src/main/groovy/groowt/view/component/web/ConfigurableComponent.groovy @@ -1,9 +1,8 @@ -package groowt.view.component.web.util +package groowt.view.component.web import groovy.transform.SelfType import groovy.transform.stc.ClosureParams import groovy.transform.stc.FromString -import groowt.view.component.web.WebViewComponent @SelfType(WebViewComponent) trait ConfigurableComponent { diff --git a/web-view-components/src/main/groovy/groowt/view/component/web/util/ContextConfigurator.groovy b/web-view-components/src/main/groovy/groowt/view/component/web/ContextConfigurator.groovy similarity index 81% rename from web-view-components/src/main/groovy/groowt/view/component/web/util/ContextConfigurator.groovy rename to web-view-components/src/main/groovy/groowt/view/component/web/ContextConfigurator.groovy index 848376b..945cd02 100644 --- a/web-view-components/src/main/groovy/groowt/view/component/web/util/ContextConfigurator.groovy +++ b/web-view-components/src/main/groovy/groowt/view/component/web/ContextConfigurator.groovy @@ -1,9 +1,7 @@ -package groowt.view.component.web.util +package groowt.view.component.web import groovy.transform.stc.ClosureParams import groovy.transform.stc.SimpleType -import groowt.view.component.web.DefaultWebViewComponentScope -import groowt.view.component.web.WebViewComponentContext class ContextConfigurator { diff --git a/web-view-components/src/main/groovy/groowt/view/component/web/util/WithHtml.groovy b/web-view-components/src/main/groovy/groowt/view/component/web/WithHtml.groovy similarity index 95% rename from web-view-components/src/main/groovy/groowt/view/component/web/util/WithHtml.groovy rename to web-view-components/src/main/groovy/groowt/view/component/web/WithHtml.groovy index 520377e..cbeed58 100644 --- a/web-view-components/src/main/groovy/groowt/view/component/web/util/WithHtml.groovy +++ b/web-view-components/src/main/groovy/groowt/view/component/web/WithHtml.groovy @@ -1,4 +1,4 @@ -package groowt.view.component.web.util +package groowt.view.component.web trait WithHtml { diff --git a/web-view-components/src/main/groovy/groowt/view/component/web/lib/HtmlPage.groovy b/web-view-components/src/main/groovy/groowt/view/component/web/lib/HtmlPage.groovy index 8e08480..90ffe22 100644 --- a/web-view-components/src/main/groovy/groowt/view/component/web/lib/HtmlPage.groovy +++ b/web-view-components/src/main/groovy/groowt/view/component/web/lib/HtmlPage.groovy @@ -1,6 +1,6 @@ package groowt.view.component.web.lib import groowt.view.component.web.BaseWebViewComponent -import groowt.view.component.web.util.ConfigurableComponent +import groowt.view.component.web.ConfigurableComponent class HtmlPage extends BaseWebViewComponent implements ConfigurableComponent {} diff --git a/web-view-components/src/main/groovy/groowt/view/component/web/lib/IntrinsicHtml.groovy b/web-view-components/src/main/groovy/groowt/view/component/web/lib/IntrinsicHtml.groovy index cf7c3fa..ed32cad 100644 --- a/web-view-components/src/main/groovy/groowt/view/component/web/lib/IntrinsicHtml.groovy +++ b/web-view-components/src/main/groovy/groowt/view/component/web/lib/IntrinsicHtml.groovy @@ -5,7 +5,7 @@ import groowt.view.component.ComponentRenderException import groowt.view.component.context.ComponentContext import groowt.view.component.context.ComponentScope.TypeAndFactory import groowt.view.component.factory.ComponentFactory -import groowt.view.component.web.util.WithHtml +import groowt.view.component.web.WithHtml class IntrinsicHtml extends DelegatingWebViewComponent implements WithHtml { diff --git a/web-view-components/src/main/java/groowt/view/component/web/AbstractWebViewComponent.java b/web-view-components/src/main/java/groowt/view/component/web/AbstractWebViewComponent.java index 77b8be5..c37998b 100644 --- a/web-view-components/src/main/java/groowt/view/component/web/AbstractWebViewComponent.java +++ b/web-view-components/src/main/java/groowt/view/component/web/AbstractWebViewComponent.java @@ -7,7 +7,7 @@ import groowt.view.component.compiler.ComponentTemplateCompileUnit; import groowt.view.component.compiler.source.ComponentTemplateSource; import groowt.view.component.runtime.ComponentWriter; import groowt.view.component.runtime.DefaultComponentWriter; -import groowt.view.component.web.compiler.WebViewComponentTemplateCompileUnit; +import groowt.view.component.web.compiler.DefaultWebViewComponentTemplateCompileUnit; import java.io.IOException; import java.io.Writer; @@ -36,7 +36,9 @@ public abstract class AbstractWebViewComponent extends AbstractViewComponent imp } public AbstractWebViewComponent(ComponentTemplateSource source) { - this(selfClass -> new WebViewComponentTemplateCompileUnit(selfClass, source, selfClass.getPackageName())); + this(selfClass -> new DefaultWebViewComponentTemplateCompileUnit( + selfClass, source, selfClass.getPackageName()) + ); } @Override diff --git a/web-view-components/src/main/java/groowt/view/component/web/compiler/DefaultWebViewComponentTemplateCompileUnit.java b/web-view-components/src/main/java/groowt/view/component/web/compiler/DefaultWebViewComponentTemplateCompileUnit.java new file mode 100644 index 0000000..1dd2472 --- /dev/null +++ b/web-view-components/src/main/java/groowt/view/component/web/compiler/DefaultWebViewComponentTemplateCompileUnit.java @@ -0,0 +1,97 @@ +package groowt.view.component.web.compiler; + +import groowt.view.component.ViewComponent; +import groowt.view.component.compiler.AbstractComponentTemplateCompileUnit; +import groowt.view.component.compiler.ComponentTemplateCompileException; +import groowt.view.component.compiler.ComponentTemplateCompileResult; +import groowt.view.component.compiler.ComponentTemplateCompilerConfiguration; +import groowt.view.component.compiler.source.ComponentTemplateSource; +import groowt.view.component.compiler.source.FileSource; +import groowt.view.component.compiler.source.URISource; +import groowt.view.component.compiler.source.URLSource; +import org.codehaus.groovy.control.CompilationUnit; +import org.codehaus.groovy.control.Janitor; +import org.codehaus.groovy.control.io.ReaderSource; +import org.jetbrains.annotations.Nullable; + +import java.io.Reader; +import java.net.URI; + +public class DefaultWebViewComponentTemplateCompileUnit extends AbstractComponentTemplateCompileUnit + implements ReaderSource, WebViewComponentTemplateCompileUnit { + + private final String defaultPackageName; + private final CompilationUnit groovyCompilationUnit = new CompilationUnit(); + + public DefaultWebViewComponentTemplateCompileUnit( + Class forClass, + ComponentTemplateSource source, + String defaultPackageName + ) { + super(forClass, source); + if (!defaultPackageName.isEmpty() && !defaultPackageName.endsWith(".")) { + this.defaultPackageName = defaultPackageName + "."; + } else { + this.defaultPackageName = defaultPackageName; + } + } + + @Override + public String getDefaultPackageName() { + return this.defaultPackageName; + } + + @Override + public CompilationUnit getGroovyCompilationUnit() { + return this.groovyCompilationUnit; + } + + @Override + public ReaderSource getGroovyReaderSource() { + return this; + } + + @Override + public ComponentTemplateCompileResult compile(ComponentTemplateCompilerConfiguration configuration) + throws ComponentTemplateCompileException { + final WebViewComponentTemplateCompiler compiler = WebViewComponentTemplateCompiler.get(); + return compiler.compile(this); + } + + @Override + public Reader getReader() { + try { + return this.getSource().toReader(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + @Override + public boolean canReopenSource() { + return this.getSource().canReopen(); + } + + @Override + public @Nullable String getLine(int lineNumber, Janitor janitor) { + if (lineNumber > -1 && this.getSource().canReopen()) { + return this.getSource().getLines().get(lineNumber); + } else { + return null; + } + } + + @Override + public void cleanup() {} + + @Override + public @Nullable URI getURI() { + return switch (this.getSource()) { + case FileSource fileSource -> fileSource.getURI(); + case URISource uriSource -> uriSource.getURI(); + case URLSource urlSource -> urlSource.getURI(); + default -> null; + }; + } + +} diff --git a/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompileUnit.java b/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompileUnit.java index 5a3eb13..ff444c8 100644 --- a/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompileUnit.java +++ b/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompileUnit.java @@ -1,90 +1,10 @@ package groowt.view.component.web.compiler; -import groowt.view.component.ViewComponent; -import groowt.view.component.compiler.AbstractComponentTemplateCompileUnit; -import groowt.view.component.compiler.ComponentTemplateCompileException; -import groowt.view.component.compiler.ComponentTemplateCompileResult; -import groowt.view.component.compiler.ComponentTemplateCompilerConfiguration; -import groowt.view.component.compiler.source.ComponentTemplateSource; -import groowt.view.component.compiler.source.FileSource; -import groowt.view.component.compiler.source.URISource; -import groowt.view.component.compiler.source.URLSource; +import groowt.view.component.compiler.ComponentTemplateCompileUnit; import org.codehaus.groovy.control.CompilationUnit; -import org.codehaus.groovy.control.Janitor; import org.codehaus.groovy.control.io.ReaderSource; -import org.jetbrains.annotations.Nullable; - -import java.io.Reader; -import java.net.URI; - -public class WebViewComponentTemplateCompileUnit extends AbstractComponentTemplateCompileUnit implements ReaderSource { - - private final String defaultPackageName; - private final CompilationUnit groovyCompilationUnit = new CompilationUnit(); - - public WebViewComponentTemplateCompileUnit( - Class forClass, - ComponentTemplateSource source, - String defaultPackageName - ) { - super(forClass, source); - if (!defaultPackageName.isEmpty() && !defaultPackageName.endsWith(".")) { - this.defaultPackageName = defaultPackageName + "."; - } else { - this.defaultPackageName = defaultPackageName; - } - } - - @Override - public String getDefaultPackageName() { - return this.defaultPackageName; - } - - public CompilationUnit getGroovyCompilationUnit() { - return this.groovyCompilationUnit; - } - - @Override - public ComponentTemplateCompileResult compile(ComponentTemplateCompilerConfiguration configuration) - throws ComponentTemplateCompileException { - final var compiler = new DefaultWebViewComponentTemplateCompiler(configuration); - return compiler.compile(this); - } - - @Override - public Reader getReader() { - try { - return this.getSource().toReader(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - @Override - public boolean canReopenSource() { - return this.getSource().canReopen(); - } - - @Override - public @Nullable String getLine(int lineNumber, Janitor janitor) { - if (lineNumber > -1 && this.getSource().canReopen()) { - return this.getSource().getLines().get(lineNumber); - } else { - return null; - } - } - - @Override - public void cleanup() {} - - @Override - public @Nullable URI getURI() { - return switch (this.getSource()) { - case FileSource fileSource -> fileSource.getURI(); - case URISource uriSource -> uriSource.getURI(); - case URLSource urlSource -> urlSource.getURI(); - default -> null; - }; - } +public interface WebViewComponentTemplateCompileUnit extends ComponentTemplateCompileUnit { + CompilationUnit getGroovyCompilationUnit(); + ReaderSource getGroovyReaderSource(); } diff --git a/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompiler.java b/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompiler.java index f587575..ac72c68 100644 --- a/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompiler.java +++ b/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompiler.java @@ -1,16 +1,31 @@ package groowt.view.component.web.compiler; -import groowt.view.component.compiler.ComponentTemplateCompileException; -import groowt.view.component.compiler.ComponentTemplateCompileResult; -import groowt.view.component.compiler.ComponentTemplateCompiler; +import groowt.view.component.compiler.*; import groowt.view.component.compiler.source.ComponentTemplateSource; +import java.util.ServiceLoader; + public interface WebViewComponentTemplateCompiler extends ComponentTemplateCompiler { + static WebViewComponentTemplateCompiler get() { + return get(new DefaultComponentTemplateCompilerConfiguration()); + } + + static WebViewComponentTemplateCompiler get(ComponentTemplateCompilerConfiguration configuration) { + final ServiceLoader factoryServiceLoader = + ServiceLoader.load(WebViewComponentTemplateCompilerFactory.class); + final var factory = factoryServiceLoader.findFirst() + .orElseThrow(() -> new RuntimeException( + "Could not load a WebViewComponentTemplateCompiler " + + "using the thread's context classLoader." + )); + return factory.create(configuration); + } + default ComponentTemplateCompileResult compileAnonymous(ComponentTemplateSource source, String packageName) throws ComponentTemplateCompileException { - return this.compile(new WebViewComponentTemplateCompileUnit( + return this.compile(new DefaultWebViewComponentTemplateCompileUnit( AnonymousWebViewComponent.class, source, packageName diff --git a/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompilerFactory.java b/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompilerFactory.java new file mode 100644 index 0000000..48e11a2 --- /dev/null +++ b/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompilerFactory.java @@ -0,0 +1,7 @@ +package groowt.view.component.web.compiler; + +import groowt.view.component.compiler.ComponentTemplateCompilerConfiguration; + +public interface WebViewComponentTemplateCompilerFactory { + WebViewComponentTemplateCompiler create(ComponentTemplateCompilerConfiguration configuration); +} diff --git a/web-view-components/src/main/java/groowt/view/component/web/runtime/DefaultSourceMapDeserializer.java b/web-view-components/src/main/java/groowt/view/component/web/runtime/DefaultSourceMapDeserializer.java deleted file mode 100644 index 0f8ee4d..0000000 --- a/web-view-components/src/main/java/groowt/view/component/web/runtime/DefaultSourceMapDeserializer.java +++ /dev/null @@ -1,47 +0,0 @@ -package groowt.view.component.web.runtime; - -import groowt.view.component.web.transpile.DefaultSourceMapSerializer; -import groowt.view.component.web.transpile.SourceMap.SourceMapEntry; -import groowt.view.component.web.transpile.SourceMapDeserializer; -import groowt.view.component.web.util.SourcePosition; - -import java.util.ArrayList; -import java.util.List; - -public final class DefaultSourceMapDeserializer implements SourceMapDeserializer { - - @Override - public List deserialize(String serializedSourceMap) { - final List result = new ArrayList<>(); - int line = -1; - SourcePosition from = null; - StringBuilder numberBuilder = new StringBuilder(); - for (int i = 0; i < serializedSourceMap.length(); i++) { - final char c = serializedSourceMap.charAt(i); - if (c == DefaultSourceMapSerializer.LINE_COL_SEP) { - line = Integer.parseInt(numberBuilder.toString()); - numberBuilder = new StringBuilder(); - } else if (c == DefaultSourceMapSerializer.POS_SEP) { - if (line == -1) { - throw new IllegalStateException(); - } - final int col = Integer.parseInt(numberBuilder.toString()); - from = new SourcePosition(line, col); - numberBuilder = new StringBuilder(); - } else if (c == DefaultSourceMapSerializer.ENTRY_SEP) { - if (from == null) { - throw new IllegalStateException(); - } - final int col = Integer.parseInt(numberBuilder.toString()); - result.add(new SourceMapEntry(from, new SourcePosition(line, col))); - line = -1; - from = null; - numberBuilder = new StringBuilder(); - } else { - numberBuilder.append(c); - } - } - return result; - } - -} diff --git a/web-view-components/src/main/java/groowt/view/component/web/runtime/WebViewComponentRenderContext.java b/web-view-components/src/main/java/groowt/view/component/web/runtime/WebViewComponentRenderContext.java index 5eeb9f9..e731d25 100644 --- a/web-view-components/src/main/java/groowt/view/component/web/runtime/WebViewComponentRenderContext.java +++ b/web-view-components/src/main/java/groowt/view/component/web/runtime/WebViewComponentRenderContext.java @@ -9,7 +9,10 @@ import java.util.Map; public interface WebViewComponentRenderContext extends RenderContext { + @SuppressWarnings("unused") Map EMPTY_ATTR = Map.of(); + + @SuppressWarnings("unused") Object[] EMPTY_CONSTRUCTOR_ARGS = {}; WebViewComponent create( diff --git a/web-view-components/src/test/groovy/groowt/view/component/web/lib/IntrinsicHtmlTests.groovy b/web-view-components/src/test/groovy/groowt/view/component/web/lib/IntrinsicHtmlTests.groovy index 979e7e8..371efbc 100644 --- a/web-view-components/src/test/groovy/groowt/view/component/web/lib/IntrinsicHtmlTests.groovy +++ b/web-view-components/src/test/groovy/groowt/view/component/web/lib/IntrinsicHtmlTests.groovy @@ -1,6 +1,5 @@ package groowt.view.component.web.lib - import org.junit.jupiter.api.Test class IntrinsicHtmlTests extends AbstractWebViewComponentTests { diff --git a/web-view-components/src/testFixtures/groovy/groowt/view/component/web/lib/AbstractWebViewComponentTests.groovy b/web-view-components/src/testFixtures/groovy/groowt/view/component/web/lib/AbstractWebViewComponentTests.groovy index e7874bf..fd6d35a 100644 --- a/web-view-components/src/testFixtures/groovy/groowt/view/component/web/lib/AbstractWebViewComponentTests.groovy +++ b/web-view-components/src/testFixtures/groovy/groowt/view/component/web/lib/AbstractWebViewComponentTests.groovy @@ -1,20 +1,18 @@ package groowt.view.component.web.lib -import groowt.view.component.compiler.DefaultComponentTemplateCompilerConfiguration import groowt.view.component.compiler.SimpleComponentTemplateClassFactory import groowt.view.component.compiler.source.ComponentTemplateSource import groowt.view.component.context.ComponentContext import groowt.view.component.runtime.DefaultComponentWriter -import groowt.view.component.web.compiler.DefaultWebViewComponentTemplateCompiler +import groowt.view.component.web.compiler.WebViewComponentTemplateCompiler import static org.junit.jupiter.api.Assertions.assertEquals abstract class AbstractWebViewComponentTests implements WithContext { protected void doTest(Reader sourceReader, String expected, ComponentContext context) { - def compileResult = new DefaultWebViewComponentTemplateCompiler( - new DefaultComponentTemplateCompilerConfiguration() - ).compileAnonymous(ComponentTemplateSource.of(sourceReader), this.class.packageName) + def compileResult = WebViewComponentTemplateCompiler.get() + .compileAnonymous(ComponentTemplateSource.of(sourceReader), this.class.packageName) def factory = new SimpleComponentTemplateClassFactory() def templateClass = factory.getTemplateClass(compileResult) diff --git a/web-view-components/src/tools/groovy/groowt/view/component/web/tools/RunTemplate.groovy b/web-view-components/src/tools/groovy/groowt/view/component/web/tools/RunTemplate.groovy index 8a17d39..b0b3f50 100644 --- a/web-view-components/src/tools/groovy/groowt/view/component/web/tools/RunTemplate.groovy +++ b/web-view-components/src/tools/groovy/groowt/view/component/web/tools/RunTemplate.groovy @@ -6,7 +6,7 @@ import groowt.view.component.compiler.source.ComponentTemplateSource import groowt.view.component.web.BaseWebViewComponent import groowt.view.component.web.DefaultWebViewComponentContext import groowt.view.component.web.compiler.AnonymousWebViewComponent -import groowt.view.component.web.compiler.WebViewComponentTemplateCompileUnit +import groowt.view.component.web.compiler.DefaultWebViewComponentTemplateCompileUnit import picocli.CommandLine import picocli.CommandLine.Command import picocli.CommandLine.Option @@ -51,7 +51,7 @@ class RunTemplate implements Callable { @Override Integer call() throws Exception { - def compileUnit = new WebViewComponentTemplateCompileUnit( + def compileUnit = new DefaultWebViewComponentTemplateCompileUnit( AnonymousWebViewComponent, ComponentTemplateSource.of(this.template), 'groowt.view.web.tools' diff --git a/web-view-components/src/tools/groovy/groowt/view/component/web/tools/inspectNodes.groovy b/web-view-components/src/tools/groovy/groowt/view/component/web/tools/inspectNodes.groovy deleted file mode 100644 index 745ab22..0000000 --- a/web-view-components/src/tools/groovy/groowt/view/component/web/tools/inspectNodes.groovy +++ /dev/null @@ -1,47 +0,0 @@ -package groowt.view.component.web.tools - -import groowt.view.component.web.transpile.groovy.GroovyUtil -import org.codehaus.groovy.ast.ImportNode - -import static groowt.view.component.web.transpile.groovy.GroovyUtil.formatGroovy - -def src = ''' -import some.Thing -def myVar = 3 -class Helper { } -''' - -def quickConvertResult = GroovyUtil.convert(src, 'MyTemplate') -println formatGroovy(quickConvertResult.blockStatement()) - -quickConvertResult. classNodes().each { println formatGroovy(it) } - -quickConvertResult. moduleNode().with { - println "Module: ${it}" - def indentTimes = 1 - def getIndent = { ' '.repeat(indentTimes) } - it.properties.each { key, value -> - if (key instanceof String && key in ['imports', 'starImports']) { - def importNodes = it[key] as List - if (importNodes.size() > 0) { - println getIndent() + "$key: " - indentTimes++ - importNodes.each { println getIndent() + it.text } - indentTimes-- - return - } - } else if (key instanceof String && key in ['staticImports', 'staticStarImports']) { - def staticImports = it[key] as Map - if (staticImports.size() > 0) { - println getIndent() + "$key: " - indentTimes++ - staticImports.each { alias, importNode -> - println getIndent() + "$alias: $importNode" - } - indentTimes-- - return - } - } - println getIndent() +"$key: $value" - } -}