From 6874063845a25f96305f996ed44dc397b9ce6733 Mon Sep 17 00:00:00 2001 From: Nikita Klimenko Date: Tue, 14 May 2024 19:13:08 +0300 Subject: [PATCH] Introduce OtherSamples.kt to generate tables for writerside docs outside Korro --- core/build.gradle.kts | 3 +- .../explainer/PluginCallbackProxy.kt | 29 ++------------- .../explainer/SamplesDisplayConfiguration.kt | 5 --- .../explainer/SamplesRenderingUtils.kt | 36 +++++++++++++++++++ .../dataframe/samples/api/OtherSamples.kt | 25 +++++++++++++ .../explainer/PluginCallbackProxy.kt | 29 ++------------- .../explainer/SamplesDisplayConfiguration.kt | 5 --- .../explainer/SamplesRenderingUtils.kt | 36 +++++++++++++++++++ .../dataframe/samples/api/OtherSamples.kt | 25 +++++++++++++ 9 files changed, 128 insertions(+), 65 deletions(-) delete mode 100644 core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/SamplesDisplayConfiguration.kt create mode 100644 core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/SamplesRenderingUtils.kt create mode 100644 core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/samples/api/OtherSamples.kt delete mode 100644 core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/SamplesDisplayConfiguration.kt create mode 100644 core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/SamplesRenderingUtils.kt create mode 100644 core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/samples/api/OtherSamples.kt diff --git a/core/build.gradle.kts b/core/build.gradle.kts index e7f4e043da..c7699074ff 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -136,7 +136,8 @@ val clearSamplesOutputs by tasks.creating { doFirst { delete { - delete(fileTree(File(projectDir, "../docs/StardustDocs/snippets"))) + val generatedSnippets = fileTree(file("../docs/StardustDocs/snippets")).exclude("**/manual/**") + delete(generatedSnippets) } } } diff --git a/core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/PluginCallbackProxy.kt b/core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/PluginCallbackProxy.kt index cab4aa95bb..2abd1e1f67 100644 --- a/core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/PluginCallbackProxy.kt +++ b/core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/PluginCallbackProxy.kt @@ -75,32 +75,7 @@ object PluginCallbackProxy : PluginCallback { var output: DataFrameHtmlData val manualOutput = this.manualOutput if (manualOutput == null) { - output = DataFrameHtmlData.tableDefinitions() + DataFrameHtmlData( - // copy writerside stlyles - style = """ - body { - font-family: "JetBrains Mono",SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace; - } - - :root { - color: #19191C; - background-color: #fff; - } - - :root[theme="dark"] { - background-color: #19191C; - color: #FFFFFFCC - } - - details details { - margin-left: 20px; - } - - summary { - padding: 6px; - } - """.trimIndent() - ) + output = DataFrameHtmlData.tableDefinitions() + WritersideStyle // make copy to avoid concurrent modification exception val statements = expressionsByStatement.toMap() @@ -243,7 +218,7 @@ object PluginCallbackProxy : PluginCallback { } private fun convertToHTML(dataframeLike: Any): DataFrameHtmlData { - fun DataFrame<*>.toHTML() = toHTML(SamplesDisplayConfiguration, getFooter = { "" }) + fun DataFrame<*>.toHTML() = toHTML(SamplesDisplayConfiguration, getFooter = WritersideFooter) fun FormattedFrame<*>.toHTML1() = toHTML(SamplesDisplayConfiguration) return when (dataframeLike) { diff --git a/core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/SamplesDisplayConfiguration.kt b/core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/SamplesDisplayConfiguration.kt deleted file mode 100644 index fdb722631d..0000000000 --- a/core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/SamplesDisplayConfiguration.kt +++ /dev/null @@ -1,5 +0,0 @@ -package org.jetbrains.kotlinx.dataframe.explainer - -import org.jetbrains.kotlinx.dataframe.io.DisplayConfiguration - -val SamplesDisplayConfiguration = DisplayConfiguration(enableFallbackStaticTables = false) diff --git a/core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/SamplesRenderingUtils.kt b/core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/SamplesRenderingUtils.kt new file mode 100644 index 0000000000..54e337288b --- /dev/null +++ b/core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/SamplesRenderingUtils.kt @@ -0,0 +1,36 @@ +package org.jetbrains.kotlinx.dataframe.explainer + +import org.jetbrains.kotlinx.dataframe.DataFrame +import org.jetbrains.kotlinx.dataframe.io.DataFrameHtmlData +import org.jetbrains.kotlinx.dataframe.io.DisplayConfiguration + +val SamplesDisplayConfiguration = DisplayConfiguration(enableFallbackStaticTables = false) + +val WritersideStyle = DataFrameHtmlData( + // copy writerside stlyles + style = """ + body { + font-family: "JetBrains Mono",SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace; + } + + :root { + color: #19191C; + background-color: #fff; + } + + :root[theme="dark"] { + background-color: #19191C; + color: #FFFFFFCC + } + + details details { + margin-left: 20px; + } + + summary { + padding: 6px; + } + """.trimIndent() +) + +val WritersideFooter: (DataFrame<*>) -> String = { "" } diff --git a/core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/samples/api/OtherSamples.kt b/core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/samples/api/OtherSamples.kt new file mode 100644 index 0000000000..67e6ae038d --- /dev/null +++ b/core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/samples/api/OtherSamples.kt @@ -0,0 +1,25 @@ +package org.jetbrains.kotlinx.dataframe.samples.api + +import org.jetbrains.kotlinx.dataframe.AnyFrame +import org.jetbrains.kotlinx.dataframe.api.dataFrameOf +import org.jetbrains.kotlinx.dataframe.explainer.WritersideFooter +import org.jetbrains.kotlinx.dataframe.explainer.WritersideStyle +import org.jetbrains.kotlinx.dataframe.io.toStandaloneHTML +import org.junit.Test +import java.io.File + +// To display code together with a table, we can use TransformDataFrameExpressions annotation together with korro +// This class provides an ability to save only a table that can be embedded anywhere in the documentation +class OtherSamples { + @Test + fun extensionPropertiesApi1() { + val df = dataFrameOf("example")(123) + writeTable(df, "extensionPropertiesApi1") + } + + private fun writeTable(df: AnyFrame, name: String) { + val dir = File("../docs/StardustDocs/snippets/manual").also { it.mkdirs() } + val html = df.toStandaloneHTML(getFooter = WritersideFooter) + WritersideStyle + html.writeHTML(File(dir, "$name.html")) + } +} diff --git a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/PluginCallbackProxy.kt b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/PluginCallbackProxy.kt index cab4aa95bb..2abd1e1f67 100644 --- a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/PluginCallbackProxy.kt +++ b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/PluginCallbackProxy.kt @@ -75,32 +75,7 @@ object PluginCallbackProxy : PluginCallback { var output: DataFrameHtmlData val manualOutput = this.manualOutput if (manualOutput == null) { - output = DataFrameHtmlData.tableDefinitions() + DataFrameHtmlData( - // copy writerside stlyles - style = """ - body { - font-family: "JetBrains Mono",SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace; - } - - :root { - color: #19191C; - background-color: #fff; - } - - :root[theme="dark"] { - background-color: #19191C; - color: #FFFFFFCC - } - - details details { - margin-left: 20px; - } - - summary { - padding: 6px; - } - """.trimIndent() - ) + output = DataFrameHtmlData.tableDefinitions() + WritersideStyle // make copy to avoid concurrent modification exception val statements = expressionsByStatement.toMap() @@ -243,7 +218,7 @@ object PluginCallbackProxy : PluginCallback { } private fun convertToHTML(dataframeLike: Any): DataFrameHtmlData { - fun DataFrame<*>.toHTML() = toHTML(SamplesDisplayConfiguration, getFooter = { "" }) + fun DataFrame<*>.toHTML() = toHTML(SamplesDisplayConfiguration, getFooter = WritersideFooter) fun FormattedFrame<*>.toHTML1() = toHTML(SamplesDisplayConfiguration) return when (dataframeLike) { diff --git a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/SamplesDisplayConfiguration.kt b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/SamplesDisplayConfiguration.kt deleted file mode 100644 index fdb722631d..0000000000 --- a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/SamplesDisplayConfiguration.kt +++ /dev/null @@ -1,5 +0,0 @@ -package org.jetbrains.kotlinx.dataframe.explainer - -import org.jetbrains.kotlinx.dataframe.io.DisplayConfiguration - -val SamplesDisplayConfiguration = DisplayConfiguration(enableFallbackStaticTables = false) diff --git a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/SamplesRenderingUtils.kt b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/SamplesRenderingUtils.kt new file mode 100644 index 0000000000..54e337288b --- /dev/null +++ b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/explainer/SamplesRenderingUtils.kt @@ -0,0 +1,36 @@ +package org.jetbrains.kotlinx.dataframe.explainer + +import org.jetbrains.kotlinx.dataframe.DataFrame +import org.jetbrains.kotlinx.dataframe.io.DataFrameHtmlData +import org.jetbrains.kotlinx.dataframe.io.DisplayConfiguration + +val SamplesDisplayConfiguration = DisplayConfiguration(enableFallbackStaticTables = false) + +val WritersideStyle = DataFrameHtmlData( + // copy writerside stlyles + style = """ + body { + font-family: "JetBrains Mono",SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace; + } + + :root { + color: #19191C; + background-color: #fff; + } + + :root[theme="dark"] { + background-color: #19191C; + color: #FFFFFFCC + } + + details details { + margin-left: 20px; + } + + summary { + padding: 6px; + } + """.trimIndent() +) + +val WritersideFooter: (DataFrame<*>) -> String = { "" } diff --git a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/samples/api/OtherSamples.kt b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/samples/api/OtherSamples.kt new file mode 100644 index 0000000000..67e6ae038d --- /dev/null +++ b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/samples/api/OtherSamples.kt @@ -0,0 +1,25 @@ +package org.jetbrains.kotlinx.dataframe.samples.api + +import org.jetbrains.kotlinx.dataframe.AnyFrame +import org.jetbrains.kotlinx.dataframe.api.dataFrameOf +import org.jetbrains.kotlinx.dataframe.explainer.WritersideFooter +import org.jetbrains.kotlinx.dataframe.explainer.WritersideStyle +import org.jetbrains.kotlinx.dataframe.io.toStandaloneHTML +import org.junit.Test +import java.io.File + +// To display code together with a table, we can use TransformDataFrameExpressions annotation together with korro +// This class provides an ability to save only a table that can be embedded anywhere in the documentation +class OtherSamples { + @Test + fun extensionPropertiesApi1() { + val df = dataFrameOf("example")(123) + writeTable(df, "extensionPropertiesApi1") + } + + private fun writeTable(df: AnyFrame, name: String) { + val dir = File("../docs/StardustDocs/snippets/manual").also { it.mkdirs() } + val html = df.toStandaloneHTML(getFooter = WritersideFooter) + WritersideStyle + html.writeHTML(File(dir, "$name.html")) + } +}