Content-Length: 298042 | pFad | http://github.com/fluidsonic/fluid-meta

36 GitHub - fluidsonic/fluid-meta: Converts Kotlin metadata into an easily usable data model
Skip to content

fluidsonic/fluid-meta

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 Cannot retrieve latest commit at this time.

History

79 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fluid-meta

Maven Central Kotlin #fluid-libraries Slack Channel

Converts Kotlin metadata into a usable data model. Includes pretty printing for easy inspection, see the output for Kotlin's Standard Library for example :)

Installation

build.gradle.kts:

dependencies {
	implementation("io.fluidsonic.meta:fluid-meta:0.14.0")
}

Example

Let's say you want to inspect the type Hello at runtime or during annotation processing and get additional type information which is specific to Kotlin, e.g. nullability, internal visibility, data class, inline and default parameters.

package hello.world

internal data class Hello(
	private val world: String = "cool!",
	val foo: Int?
) {

	constructor() : this(foo = 3)

	inline fun hey() = println("hey")
}

All you need to do is to use Meta.of(…) to inspect the respective KClass (or Element when processing annotations):

package hello.world

import io.fluidsonic.meta.*

fun main() {
	println(Meta.of(Hello::class))
}

And you'll get well-structured metadata objects like MClass which print output like the following when using .toString():

internal data class hello.world.Hello {

	// *** PROPERTIES ***

	// JVM field = foo:Ljava/lang/Integer;
	val foo: Int?

	// JVM field = world:Ljava/lang/String;
	private val world: String


	// *** CONSTRUCTORS ***

	// JVM method = <init>()V
	/* secondary */ constructor()

	// JVM method = <init>(Ljava/lang/String;Ljava/lang/Integer;)V
	constructor(world: String /* = default */, foo: Int?)


	// *** FUNCTIONS ***

	// JVM method = component1()Ljava/lang/String;
	private /* synthesized */ operator fun component1(): String

	// JVM method = component2()Ljava/lang/Integer;
	/* synthesized */ operator fun component2(): Int?

	// JVM method = copy(Ljava/lang/String;Ljava/lang/Integer;)Lhello/world/Hello;
	/* synthesized */ fun copy(world: String /* = default */, foo: Int? /* = default */): hello.world.Hello

	// JVM method = equals(Ljava/lang/Object;)Z
	/* synthesized */ open operator fun equals(other: Any?): Boolean

	// JVM method = hashCode()I
	/* synthesized */ open fun hashCode(): Int

	// JVM method = hey()V
	inline fun hey()

	// JVM method = toString()Ljava/lang/String;
	/* synthesized */ open fun toString(): String
}

License

Apache 2.0

About

Converts Kotlin metadata into an easily usable data model

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages









ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://github.com/fluidsonic/fluid-meta

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy