Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rickbusarow/statik
https://github.com/rickbusarow/statik
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/rickbusarow/statik
- Owner: rickbusarow
- License: apache-2.0
- Created: 2024-02-28T05:13:12.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-05-22T18:43:30.000Z (8 months ago)
- Last Synced: 2024-05-22T19:19:49.499Z (8 months ago)
- Language: Kotlin
- Size: 521 KB
- Stars: 9
- Watchers: 1
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
[![Maven Central](https://img.shields.io/maven-central/v/com.rickbusarow.statik/statik-api?style=flat-square)](https://search.maven.org/search?q=com.rickbusarow.statik)
[![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/com.rickbusarow.statik/statik-api?label=snapshots&server=https%3A%2F%2Foss.sonatype.org&style=flat-square)](https://oss.sonatype.org/#nexus-search;quick~com.rickbusarow.statik)
[![License](https://img.shields.io/badge/license-apache2.0-blue?style=flat-square.svg)](https://opensource.org/licenses/Apache-2.0)> [!IMPORTANT]
> Moving soonish to https://github.com/square/statik.Statik is a high-level [Abstract Syntax Tree] or [Abstract Semantic Graph] with three goals:
1. Provide high-level information as members directly in node elements, so that most parsing can be
done intuitively using semantics.```kotlin
interface StatikKotlinFunction : StatikFunction /* ... */ {// semantic information about the function
override val annotations: LazySet>
override val visibility: StatikKotlinVisibility
override val typeParameters: LazySet>
override val valueParameters: LazySet>
override val returnType: LazyDeferred// syntactic information about the function
override val modifierList: ModifierList
override val typeParameterList: TypeParameterList?
override val valueParameterList: ValueParameterList?
// ...// standard AST features
override val text: String
override val containingFile: StatikKotlinFile
override val parent: PARENT
override val children: LazySet
override val node: KtFunction
}
```2. Make Statik's published artifacts work with multiple versions of the Kotlin compiler, so that a
Statik update does not require a simultaneous Kotlin update. This is accomplished using
Gradle's [Feature Variants], so that Gradle automatically selects the right Statik .jar based
upon the Kotlin version in use.
3. Resolve non-Kotlin as well, including references to Java and Android resources generated from xml.## License
```text
Copyright (C) 2023 Rick Busarow
Licensed 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
https://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.
```[Abstract Syntax Tree]: https://en.wikipedia.org/wiki/Abstract_syntax_tree
[Abstract Semantic Graph]: https://en.wikipedia.org/wiki/Abstract_semantic_graph
[Feature Variants]: https://docs.gradle.org/current/userguide/feature_variants.html