Renamed functions.

This commit is contained in:
Adrian Kuta 2020-01-19 22:55:18 +01:00
parent 8dbbd3b2f8
commit 3f166aced0
5 changed files with 43 additions and 22 deletions

View File

@ -7,6 +7,7 @@ Simple implementation to store object in tree structure. Method `toString()` is
## Usage
**Kotlin**
```kotlin
val root = TreeNode("World")
val northA = TreeNode("North America")
@ -24,20 +25,39 @@ europe.addChild(france)
println(root)
```
Or in more Kotlin like style:
**Pretty Kotlin**
```kotlin
val root = treeNode("World") {
treeNode("North America") {
treeNode("USA")
val root =
tree("World") {
child("North America") {
child("USA")
}
treeNode("Europe") {
treeNode("Poland")
treeNode("Germany")
child("Europe") {
child("Poland")
child("Germany")
}
}
```
**Java**
```java
TreeNode<String> root = new TreeNode<>("World");
TreeNode<String> northA = new TreeNode<>("North America");
TreeNode<String> europe = new TreeNode<>("Europe");
root.addChild(northA);
root.addChild(europe);
TreeNode<String> usa = new TreeNode<>("USA");
northA.addChild(usa);
TreeNode<String> poland = new TreeNode<>("Poland");
TreeNode<String> france = new TreeNode<>("France");
europe.addChild(poland);
europe.addChild(france);
System.out.println(root);
```
*Output:*
```

View File

@ -15,7 +15,7 @@ android {
minSdkVersion 15
targetSdkVersion 29
versionCode 1
versionName "1.1.0"
versionName "1.2.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles 'consumer-rules.pro'

View File

@ -5,17 +5,17 @@ interface ChildDeclarationInterface<T> {
/**
* This method is used to easily create child in node.
* ```
* val root = treeNode("World") {
* treeNode("North America") {
* treeNode("USA")
* val root = tree("World") {
* child("North America") {
* child("USA")
* }
* treeNode("Europe") {
* treeNode("Poland")
* treeNode("Germany")
* child("Europe") {
* child("Poland")
* child("Germany")
* }
* }
* ```
*/
@JvmSynthetic
fun treeNode(value: T, childDeclaration: ChildDeclaration<T>? = null)
fun child(value: T, childDeclaration: ChildDeclaration<T>? = null)
}

View File

@ -27,7 +27,7 @@ open class TreeNode<T>(val value: T) : Iterable<TreeNode<T>>, ChildDeclarationIn
}
@JvmSynthetic
override fun treeNode(value: T, childDeclaration: ChildDeclaration<T>?) {
override fun child(child: T, childDeclaration: ChildDeclaration<T>?) {
val newChild = TreeNode(value)
if(childDeclaration != null)
newChild.childDeclaration()

View File

@ -5,13 +5,14 @@ typealias ChildDeclaration<T> = ChildDeclarationInterface<T>.() -> Unit
/**
* This method can be used to initialize new tree.
* ```
* val root = treeNode("World") { ... }
* val root = tree("World") { ... }
* ```
* @see [ChildDeclarationInterface.treeNode]
* @param root Root element of new tree.
* @see [ChildDeclarationInterface.child]
*/
@JvmSynthetic
inline fun<reified T> treeNode(value: T, childDeclaration: ChildDeclaration<T>): TreeNode<T> {
val treeNode = TreeNode(value)
inline fun<reified T> tree(root: T, childDeclaration: ChildDeclaration<T>): TreeNode<T> {
val treeNode = TreeNode(root)
treeNode.childDeclaration()
return treeNode
}