From 44b2fec726d82b01426e531d15f0c6011b046798 Mon Sep 17 00:00:00 2001 From: James Strachan Date: Wed, 7 Mar 2012 20:09:10 +0000 Subject: [PATCH] added a simple little site generator for the API docs --- libraries/pom.xml | 2 +- libraries/{apidocs => website}/apidocs.iml | 9 ++ libraries/{apidocs => website}/pom.xml | 7 +- .../jetbrains/kotlin/site/SiteGenerator.kt | 45 +++++++ .../templates/apidocs/resources/bkgheader.png | Bin 0 -> 16921 bytes .../apidocs/resources/gradient-sand-white.png | Bin 0 -> 2881 bytes .../src/main/templates/apidocs/stylesheet.css | 118 ++++++++++++++++++ libraries/website/src/main/templates/index.md | 20 +++ .../jetbrains/kotlin/site/GenerateSiteTest.kt | 25 ++++ 9 files changed, 224 insertions(+), 2 deletions(-) rename libraries/{apidocs => website}/apidocs.iml (53%) rename libraries/{apidocs => website}/pom.xml (94%) create mode 100644 libraries/website/src/main/kotlin/org/jetbrains/kotlin/site/SiteGenerator.kt create mode 100644 libraries/website/src/main/templates/apidocs/resources/bkgheader.png create mode 100644 libraries/website/src/main/templates/apidocs/resources/gradient-sand-white.png create mode 100644 libraries/website/src/main/templates/apidocs/stylesheet.css create mode 100644 libraries/website/src/main/templates/index.md create mode 100644 libraries/website/src/test/kotlin/org/jetbrains/kotlin/site/GenerateSiteTest.kt diff --git a/libraries/pom.xml b/libraries/pom.xml index e4912da3dea..b767bc3c687 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -56,7 +56,7 @@ stdlib kunit kdoc - apidocs + website diff --git a/libraries/apidocs/apidocs.iml b/libraries/website/apidocs.iml similarity index 53% rename from libraries/apidocs/apidocs.iml rename to libraries/website/apidocs.iml index 6add695202e..cca07125daf 100644 --- a/libraries/apidocs/apidocs.iml +++ b/libraries/website/apidocs.iml @@ -4,10 +4,19 @@ + + + + + + + + + diff --git a/libraries/apidocs/pom.xml b/libraries/website/pom.xml similarity index 94% rename from libraries/apidocs/pom.xml rename to libraries/website/pom.xml index a86d507f4c4..1ba05f585fe 100644 --- a/libraries/apidocs/pom.xml +++ b/libraries/website/pom.xml @@ -11,9 +11,14 @@ 1.0-SNAPSHOT - apidocs + website + + org.jetbrains.kotlin + stdlib + ${project.version} + org.pegdown pegdown diff --git a/libraries/website/src/main/kotlin/org/jetbrains/kotlin/site/SiteGenerator.kt b/libraries/website/src/main/kotlin/org/jetbrains/kotlin/site/SiteGenerator.kt new file mode 100644 index 00000000000..bb5bc44a4d8 --- /dev/null +++ b/libraries/website/src/main/kotlin/org/jetbrains/kotlin/site/SiteGenerator.kt @@ -0,0 +1,45 @@ +package org.jetbrains.kotlin.site + +import kotlin.io.* + +import java.io.File +import org.pegdown.Extensions +import org.pegdown.PegDownProcessor +import org.pegdown.LinkRenderer + +class SiteGenerator(val sourceDir: File, val outputDir: File) : Runnable { + public var markdownProcessor: PegDownProcessor = PegDownProcessor(Extensions.ALL) + public var linkRendered: LinkRenderer = LinkRenderer() + + override fun run() { + println("Generating the site to $outputDir") + + sourceDir.recurse { + if (it.isFile()) { + var relativePath = sourceDir.relativePath(it) + println("Processing ${relativePath}") + var text = it.readText() + if (it.extension == "md") { + text = markdownProcessor.markdownToHtml(text, linkRendered) ?: "" + relativePath = relativePath.trimTrailing(it.extension) + "html" + } + text = layout(relativePath, it, text) + val outFile = File(outputDir, relativePath) + outFile.directory.mkdirs() + outFile.writeText(text) + } + } + } + + /** + * Applies a layout to the given file + */ + fun layout(uri: String, file: File, text: String): String { + return """ + +$text + + +""" + } +} \ No newline at end of file diff --git a/libraries/website/src/main/templates/apidocs/resources/bkgheader.png b/libraries/website/src/main/templates/apidocs/resources/bkgheader.png new file mode 100644 index 0000000000000000000000000000000000000000..145cc11d2bdd3dabb0e3ecdf770e4259d13b744c GIT binary patch literal 16921 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 literal 0 HcmV?d00001 diff --git a/libraries/website/src/main/templates/apidocs/resources/gradient-sand-white.png b/libraries/website/src/main/templates/apidocs/resources/gradient-sand-white.png new file mode 100644 index 0000000000000000000000000000000000000000..3fca67807c089c981211bfe971dc8fea6967b6a1 GIT binary patch literal 2881 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 literal 0 HcmV?d00001 diff --git a/libraries/website/src/main/templates/apidocs/stylesheet.css b/libraries/website/src/main/templates/apidocs/stylesheet.css new file mode 100644 index 00000000000..48fdeb5a61c --- /dev/null +++ b/libraries/website/src/main/templates/apidocs/stylesheet.css @@ -0,0 +1,118 @@ +/* + * Copyright 2009 Red Hat, Inc. + * + * Red Hat licenses this file to you under the Apache License, version 2.0 + * (the "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +/* Javadoc style sheet */ + +/* Define colors, fonts and other style attributes here to override the defaults */ + +/* Page background color */ +body { + background-color: #FFFFFF; + background-image:url(resources/gradient-sand-white.png); + background-repeat: repeat-x; + margin:0 auto; + font-family:'Lucida Grande', Geneva, Verdana, Arial, sans-serif; + font-size:12px; + padding:0em 1em; + color:#333; + + } + +/* Common elements */ + +font { + font-family: inherit; + font-size: inherit; + color: inherit; + font-weight: inherit; } + +hr { + border-top: 1px solid #A9A89B; + border-bottom: 0 none; +} + +tt, tt *, pre, pre *, code, code * { + font-family: "Liberation Mono", "DejaVu Sans Mono", Consolas, Monaco, "Vera Sans Mono", "Lucida Console", "Courier New", monospace !important; +} +a:link { color:#5d5c50; } +a:visited { color:#5d5c50; } +a:hover { color:#5d5c50; } + + +/* Headings */ +h1 { + font-size: 145%; + border-top:1px dotted #CCCCCC; + line-height:1.2em; + color:#CC333A; + font-size:2em; + padding:1.5em; + margin-top: 0px; + text-align:left; +} + + +/* Default Table elements and colors */ + +th, table { border-collapse:collapse;border-color: #A9A89B; } + + +.TableHeadingColor { + background:#EBE7C4 url(resources/bkgheader.png) no-repeat right top; + color:#CC333A; + font-size:12px; + font-weight:bold; + height:31px; + text-align:left; + padding:1.5em; +} + +.TableHeadingColor th { + padding-left: 10px; +} + + +.TableSubHeadingColor { background-color:#EBE7C4; } +.TableRowColor { background: white; border-color: #A9A89B;} +.TableRowColor td { line-height: 175%; padding-left: 10px;} + +/* Font used in left-hand frame lists */ +.FrameTitleFont { font-size: 125%; font-family: Helvetica, Arial, sans-serif; font-weight: bold; margin-top: 1em; display: block; } +.FrameHeadingFont { font-size: 125%; font-family: 'Lucida Grande', Geneva, Verdana, Arial, sans-serif; font-weight: bold; margin-top: 1em; display: block; } +.FrameItemFont { font-size: 100%; font-family: Helvetica, Arial, sans-serif } + +/* Navigation bar fonts and colors */ + +.NavBarCell1 { + background:#EBE7C4; + line-height:2em; + padding-left:6px; + padding-right:6px; +} + +.NavBarFont1 { + color: #CC333A; +} +.NavBarCell1 a { + color: #CC333A; +} + +.NavBarCell1Rev { background:#EBE7C4; padding-left:6px; padding-right:6px;} +.NavBarFont1 { color:#CC333A;} +.NavBarFont1Rev { color:#243446;} + +.NavBarCell2 { background-color:#FFFFFF;} +.NavBarCell3 { background-color:#FFFFFF;} diff --git a/libraries/website/src/main/templates/index.md b/libraries/website/src/main/templates/index.md new file mode 100644 index 00000000000..44a0d4b7d97 --- /dev/null +++ b/libraries/website/src/main/templates/index.md @@ -0,0 +1,20 @@ +# Kotlin Programming Language + +Welcome to [Kotlin](http://www.jetbrains.com/kotlin)! + +Some handy links + + * [API Docs](apidocs/index.html) + * [Kotlin Blog](http://blog.jetbrains.com/kotlin/) + * [Web Demo](http://kotlin-demo.jetbrains.com/) + * [Issue Tracker](http://youtrack.jetbrains.com/issues/KT) + * [follow Kotlin on twitter](http://twitter.com/#!/project_kotlin) + +## Editing Kotlin + + * [Kotlin IDEA Plugin](http://hadihariri.com/2012/02/17/the-kotlin-journey-part-i-getting-things-set-up/) + * [Kotlin TextMate Bundle](https://github.com/k33g/kotlin-textmate-bundle#readme) + +## Kommitter links + +* [TeamCity CI build](http://teamcity.jetbrains.com/project.html?projectId=project67&tab=projectOverview) \ No newline at end of file diff --git a/libraries/website/src/test/kotlin/org/jetbrains/kotlin/site/GenerateSiteTest.kt b/libraries/website/src/test/kotlin/org/jetbrains/kotlin/site/GenerateSiteTest.kt new file mode 100644 index 00000000000..fbf4e4bce80 --- /dev/null +++ b/libraries/website/src/test/kotlin/org/jetbrains/kotlin/site/GenerateSiteTest.kt @@ -0,0 +1,25 @@ +package org.jetbrains.kotlin.site + +import junit.framework.TestCase +import java.io.File +import kotlin.util.arrayList + +class GenerateSiteTest : TestCase() { + + fun testGenerateSite(): Unit { + val srcDir = findTemplateDir() + val generator = SiteGenerator(srcDir, File(srcDir, "../../../target/site")) + generator.run() + } + + fun findTemplateDir(): File { + val path = "src/main/templates" + for (p in arrayList(".", "apidocs", "library/apidocs")) { + val sourceDir = File(".", path) + if (sourceDir.exists()) { + return sourceDir + } + } + throw IllegalArgumentException("Could not find template directory: $path") + } +} \ No newline at end of file