Skip to content

Commit 5f101e9

Browse files
add a plugin example project
1 parent d60022c commit 5f101e9

File tree

6 files changed

+189
-0
lines changed

6 files changed

+189
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
plugins {
2+
kotlin("jvm") version "2.2.20-dev-3524"
3+
kotlin("plugin.dataframe") version "2.2.20-dev-3524"
4+
}
5+
6+
group = "org.example"
7+
version = "1.0-SNAPSHOT"
8+
9+
repositories {
10+
maven("https://packages.jetbrains.team/maven/p/kt/dev/")
11+
mavenCentral()
12+
}
13+
14+
15+
dependencies {
16+
implementation("org.jetbrains.kotlinx:dataframe:1.0.0-Beta2")
17+
testImplementation(kotlin("test"))
18+
}
19+
20+
tasks.test {
21+
useJUnitPlatform()
22+
}
23+
kotlin {
24+
jvmToolchain(11)
25+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
kotlin.code.style=official
2+
kotlin.incremental=false
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
pluginManagement {
2+
repositories {
3+
maven("https://packages.jetbrains.team/maven/p/kt/dev/")
4+
mavenCentral()
5+
gradlePluginPortal()
6+
}
7+
}
8+
plugins {
9+
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
10+
}
11+
rootProject.name = "kdf_plugin_example"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package org.jetbrains.kotlinx.dataframe.examples.plugin
2+
3+
import org.jetbrains.kotlinx.dataframe.DataFrame
4+
import org.jetbrains.kotlinx.dataframe.annotations.ColumnName
5+
import org.jetbrains.kotlinx.dataframe.annotations.DataSchema
6+
import org.jetbrains.kotlinx.dataframe.api.*
7+
import org.jetbrains.kotlinx.dataframe.io.readCsv
8+
import org.jetbrains.kotlinx.dataframe.io.writeCsv
9+
import java.net.URL
10+
11+
/*
12+
* Declare data schema for the DataFrame from jetbrains_repositories.csv.
13+
*/
14+
@DataSchema
15+
data class Repositories(
16+
@ColumnName("full_name")
17+
val fullName: String,
18+
@ColumnName("html_url")
19+
val htmlUrl: URL,
20+
@ColumnName("stargazers_count")
21+
val stargazersCount: Int,
22+
val topics: String,
23+
val watchers: Int
24+
)
25+
26+
/*
27+
* Define kinds of repositories:
28+
*/
29+
enum class RepoKind {
30+
Kotlin, IntelliJ, Other
31+
}
32+
33+
/*
34+
* A rule for determining the kind of repository based on its name and topics.
35+
*/
36+
fun getKind(fullName: String, topics: List<String>): RepoKind {
37+
fun checkContains(name: String) = name in topics || fullName.lowercase().contains(name)
38+
39+
return when {
40+
checkContains("kotlin") -> RepoKind.Kotlin
41+
checkContains("idea") || checkContains("intellij") -> RepoKind.IntelliJ
42+
else -> RepoKind.Other
43+
}
44+
}
45+
46+
47+
fun main() {
48+
val repos = DataFrame
49+
// Read DataFrame from the CSV file.
50+
.readCsv("https://raw.githubusercontent.com/Kotlin/dataframe/master/data/jetbrains_repositories.csv")
51+
// And convert it to match the `Repositories` schema.
52+
.convertTo<Repositories>()
53+
54+
// Rename columns to CamelCase
55+
val reposUpdated = repos.renameToCamelCase()
56+
// Convert values in the "topic" column (which were `String` initially)
57+
// to the list of topics.
58+
.convert { topics }.with {
59+
val inner = it.removePrefix("[").removeSuffix("]")
60+
if (inner.isEmpty()) emptyList() else inner.split(',').map(String::trim)
61+
}
62+
// Filter rows, keeping only repos with more than 150 stars.
63+
.filter { it.stargazersCount > 150 }
64+
// Add a new column with the number of topics.
65+
.add("topicCount") { topics.size }
66+
// Add a new column with the kind of repository.
67+
.add("kind") { getKind(fullName, topics) }
68+
69+
// Write an updated DataFrame to a CSV file.
70+
reposUpdated.writeCsv("jetbrains_repositories_new.csv")
71+
72+
// TODO: Add Kandy Plot
73+
/*reposUpdated.groupBy { kind }.max { stargazersCount }.plot {
74+
bars {
75+
x(kind)
76+
y(stargazersCount)
77+
}
78+
}*/
79+
}

jetbrains_repositories_new.csv

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
fullName,htmlUrl,stargazersCount,topics,watchers,topicCount,kind
2+
JetBrains/colorSchemeTool,https://github.com/JetBrains/colorSchemeTool,290,[],290,0,Other
3+
JetBrains/ideavim,https://github.com/JetBrains/ideavim,6120,"[ideavim, intellij, intellij-platform, jb-official, kotlin, vim, vim-emulator]",6120,7,Kotlin
4+
JetBrains/Grammar-Kit,https://github.com/JetBrains/Grammar-Kit,534,[],534,0,Other
5+
JetBrains/la-clojure,https://github.com/JetBrains/la-clojure,218,[],218,0,Other
6+
JetBrains/MPS,https://github.com/JetBrains/MPS,1241,"[domain-specific-language, dsl]",1241,2,Other
7+
JetBrains/intellij-community,https://github.com/JetBrains/intellij-community,12926,"[code-editor, ide, intellij, intellij-community, intellij-platform]",12926,5,IntelliJ
8+
JetBrains/intellij-scala,https://github.com/JetBrains/intellij-scala,1066,"[intellij-idea, intellij-plugin, scala]",1066,3,IntelliJ
9+
JetBrains/kotlin,https://github.com/JetBrains/kotlin,39402,"[compiler, gradle-plugin, intellij-plugin, kotlin, kotlin-library, maven-plugin, programming-language]",39402,7,Kotlin
10+
JetBrains/kotlin-web-demo,https://github.com/JetBrains/kotlin-web-demo,167,[],167,0,Kotlin
11+
JetBrains/youtrack-workflows,https://github.com/JetBrains/youtrack-workflows,164,[],164,0,Other
12+
JetBrains/intellij-plugins,https://github.com/JetBrains/intellij-plugins,1737,[],1737,0,IntelliJ
13+
JetBrains/jediterm,https://github.com/JetBrains/jediterm,483,[],483,0,Other
14+
JetBrains/kotlin-eclipse,https://github.com/JetBrains/kotlin-eclipse,168,[],168,0,Kotlin
15+
JetBrains/resharper-rider-samples,https://github.com/JetBrains/resharper-rider-samples,182,[],182,0,Other
16+
JetBrains/meta-runner-power-pack,https://github.com/JetBrains/meta-runner-power-pack,247,[],247,0,Other
17+
JetBrains/pty4j,https://github.com/JetBrains/pty4j,233,[],233,0,Other
18+
JetBrains/Exposed,https://github.com/JetBrains/Exposed,5688,"[dao, kotlin, orm, sql]",5688,4,Kotlin
19+
JetBrains/kotlin-web-site,https://github.com/JetBrains/kotlin-web-site,1074,[kotlin],1074,1,Kotlin
20+
JetBrains/phpstorm-workshop,https://github.com/JetBrains/phpstorm-workshop,277,"[exercise, php, phpstorm, phpstorm-workshop, workshop-materials]",277,5,Other
21+
JetBrains/xodus,https://github.com/JetBrains/xodus,936,"[database, db, embedded-database, entity-store, java, key-value, kotlin, log-structured, nosql, schema-less, snapshot-isolation, transactional, xodus, youtrack]",936,14,Kotlin
22+
JetBrains/Nitra,https://github.com/JetBrains/Nitra,548,[],548,0,Other
23+
JetBrains/idea-gitignore,https://github.com/JetBrains/idea-gitignore,1181,"[gitignore, ignore-files, intellij, intellij-plugin, java]",1181,5,IntelliJ
24+
JetBrains/swot,https://github.com/JetBrains/swot,1072,[],1072,0,Other
25+
JetBrains/intellij-sdk-docs,https://github.com/JetBrains/intellij-sdk-docs,990,"[docs, intellij, intellij-platform, intellij-plugin, intellijidea-plugin, jetbrains, sdk]",990,7,IntelliJ
26+
JetBrains/markdown,https://github.com/JetBrains/markdown,285,[],285,0,Other
27+
JetBrains/Arend,https://github.com/JetBrains/Arend,562,[arend],562,1,Other
28+
JetBrains/phpstorm-stubs,https://github.com/JetBrains/phpstorm-stubs,1110,[],1110,0,Other
29+
JetBrains/gradle-intellij-plugin,https://github.com/JetBrains/gradle-intellij-plugin,1058,"[gradle, gradle-intellij-plugin, gradle-kotlin-dsl, groovy, intellij, intellij-ides, intellij-platform, intellij-plugin, intellij-sdk, jetbrains-plugin, kotlin, plugin-verifier, publishing-dsl, setup-dsl, teamcity, travis-configuration]",1058,16,Kotlin
30+
JetBrains/svg-sprite-loader,https://github.com/JetBrains/svg-sprite-loader,1815,"[sprite, svg, svg-sprite, svg-stack, webpack, webpack-loader, webpack-plugin, webpack2, webpack3]",1815,9,Other
31+
JetBrains/resharper-unity,https://github.com/JetBrains/resharper-unity,1017,"[hacktoberfest, jetbrains, plugin, resharper, resharper-plugin, rider, unity, unity-editor]",1017,8,Other
32+
JetBrains/jdk8u_jdk,https://github.com/JetBrains/jdk8u_jdk,176,[],176,0,Other
33+
JetBrains/kotlin-native,https://github.com/JetBrains/kotlin-native,7101,"[c, compiler, kotlin, llvm, objective-c]",7101,5,Kotlin
34+
JetBrains/android,https://github.com/JetBrains/android,724,[],724,0,Other
35+
JetBrains/Unity3dRider,https://github.com/JetBrains/Unity3dRider,358,[],358,0,Other
36+
JetBrains/youtrack-mobile,https://github.com/JetBrains/youtrack-mobile,210,"[android, ios, react, react-native, youtrack]",210,5,Other
37+
JetBrains/resharper-fsharp,https://github.com/JetBrains/resharper-fsharp,245,"[fsharp, hacktoberfest, jetbrains, plugin, resharper, rider]",245,6,Other
38+
JetBrains/svg-mixer,https://github.com/JetBrains/svg-mixer,151,[],151,0,Other
39+
JetBrains/kotlin-wrappers,https://github.com/JetBrains/kotlin-wrappers,919,"[css, kotlin, kotlin-js, react, react-router-dom, redux, styled-components]",919,7,Kotlin
40+
JetBrains/create-react-kotlin-app,https://github.com/JetBrains/create-react-kotlin-app,2424,"[create-react-app, jetbrains-ui, kotlin, react, webpack]",2424,5,Kotlin
41+
JetBrains/ideolog,https://github.com/JetBrains/ideolog,186,[],186,0,Other
42+
JetBrains/kotlin-playground,https://github.com/JetBrains/kotlin-playground,251,"[kotlin, kotlin-playground, playground]",251,3,Kotlin
43+
JetBrains/ring-ui,https://github.com/JetBrains/ring-ui,2836,"[components, jetbrains-ui, react]",2836,3,Other
44+
JetBrains/inspection-plugin,https://github.com/JetBrains/inspection-plugin,252,[],252,0,Other
45+
JetBrains/gradle-idea-ext-plugin,https://github.com/JetBrains/gradle-idea-ext-plugin,155,[],155,0,IntelliJ
46+
JetBrains/awesome-pycharm,https://github.com/JetBrains/awesome-pycharm,186,"[awesome, ide, pycharm, python, web-development]",186,5,Other
47+
JetBrains/rd,https://github.com/JetBrains/rd,279,[hacktoberfest],279,1,Other
48+
JetBrains/kotlinconf-app,https://github.com/JetBrains/kotlinconf-app,2628,[],2628,0,Kotlin
49+
JetBrains/java-annotations,https://github.com/JetBrains/java-annotations,226,[],226,0,Other
50+
JetBrains/JetBrainsRuntime,https://github.com/JetBrains/JetBrainsRuntime,370,"[intellij-platform, jdk, openjdk]",370,3,Other
51+
JetBrains/lets-plot-kotlin,https://github.com/JetBrains/lets-plot-kotlin,228,"[data-science, geotools, ggplot, graphics, jupyter, jupyter-notebook, jupyter-notebooks, jvm, kotlin, kotlin-api, kotlin-js, kotlin-kernel, plot, plot-kotlin, plot-library, statistical-data]",228,16,Kotlin
52+
JetBrains/JetBrainsMono,https://github.com/JetBrains/JetBrainsMono,6059,"[coding-font, font, ligatures, monospaced-font, programming-font, programming-ligatures]",6059,6,Other
53+
JetBrains/lets-plot,https://github.com/JetBrains/lets-plot,699,"[data-science, data-visualization, datalore, geo-spatial, ggplot, jupyter, jupyter-notebooks, kotlin, plot, plot-library, pycharm, python, sciview, sciview-plugin, statistical-data]",699,15,Kotlin
54+
JetBrains/kotless,https://github.com/JetBrains/kotless,886,"[devops, faas, gradle-plugin, kotlin, lambda, serverless, web]",886,7,Kotlin
55+
JetBrains/web-types,https://github.com/JetBrains/web-types,169,[],169,0,Other
56+
JetBrains/intellij-platform-plugin-template,https://github.com/JetBrains/intellij-platform-plugin-template,1133,"[intellij, intellij-idea, intellij-idea-plugin, intellij-platform, intellij-plugin, intellij-plugins, jetbrains-plugin]",1133,7,IntelliJ
57+
JetBrains/KotlinDL,https://github.com/JetBrains/KotlinDL,695,"[deeplearning, gpu, kotlin, tensorflow]",695,4,Kotlin
58+
JetBrains/intellij-sdk-code-samples,https://github.com/JetBrains/intellij-sdk-code-samples,412,"[intellij, intellij-idea, intellij-platform, intellij-plugin, intellij-plugins, intellij-sdk, jetbrains, jetbrains-plugin, jetbrains-plugins]",412,9,IntelliJ
59+
JetBrains/skija,https://github.com/JetBrains/skija,2242,"[2d, graphics, java, skia]",2242,4,Other
60+
JetBrains/projector-docker,https://github.com/JetBrains/projector-docker,1853,"[awt, docker, swing]",1853,3,Other
61+
JetBrains/projector-server,https://github.com/JetBrains/projector-server,1025,"[awt, swing]",1025,2,Other
62+
JetBrains/projector-client,https://github.com/JetBrains/projector-client,701,"[awt, swing]",701,2,Other
63+
JetBrains/kotlin-spark-api,https://github.com/JetBrains/kotlin-spark-api,257,"[bigdata, kotlin, nullability, scala, spark]",257,5,Kotlin
64+
JetBrains/php-timeline,https://github.com/JetBrains/php-timeline,207,[],207,0,Other
65+
JetBrains/projector-installer,https://github.com/JetBrains/projector-installer,655,"[awt, swing]",655,2,Other
66+
JetBrains/skiko,https://github.com/JetBrains/skiko,519,[],519,0,Other
67+
JetBrains/compose-jb,https://github.com/JetBrains/compose-jb,6805,"[android, awt, compose, declarative-ui, desktop, gui, javascript, kotlin, multiplatform, reactive, swing, ui]",6805,12,Kotlin
68+
JetBrains/compose-for-web-demos,https://github.com/JetBrains/compose-for-web-demos,175,[],175,0,Other
69+
JetBrains/phpstorm-attributes,https://github.com/JetBrains/phpstorm-attributes,220,"[php8, phpstorm]",220,2,Other
70+
JetBrains/Qodana,https://github.com/JetBrains/Qodana,335,"[ci-cd, code-inspection, qodana]",335,3,Other

settings.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,5 @@ include("dataframe-openapi-generator")
5050
include("dataframe-geo")
5151
include("plugins:public-api-modifier")
5252
include("dataframe-compiler-plugin-core")
53+
54+
includeBuild("examples/kotlin-dataframe-plugin-example")

0 commit comments

Comments
 (0)