1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt-doc.git synced 2025-04-25 12:07:10 -07:00

Code improvement.

This commit is contained in:
Cedric Beust 2015-11-30 19:08:23 -08:00
parent b57d61a50d
commit 34d09120ac

View file

@ -302,14 +302,13 @@ class Info(val publish: Boolean)
</p> </p>
<pre> <pre>
@Directive @Directive
public fun myConfig(init: Info.() -> Unit) : Info { public fun myConfig(init: Info.() -> Unit) = Info().apply {
val info = Info() init()
info.init() this
return info }</pre>
}
</pre>
<p> <p>
The <code>@Directive</code> annotation is not enforced but you should always use it in order to help future tools (e.g. an IDEA plug-in) identify Kobalt directives so they can be treated differently from regular Kotlin functions. The <code>@Directive</code> annotation is not enforced but you should always use it in order to help future tools (e.g. an IDEA plug-in) identify Kobalt directives so they can be treated differently from regular Kotlin functions. The code above defines a <code>myConfig</code> function that accepts a closure as an argument. It creates an <code>Info</code>
object, calls the <code>init()</code> function on it (which runs all the code inside that closure) and then return that <code>Info</code> object.
</p> </p>
<p> <p>
Users can now specify the following in their build file: Users can now specify the following in their build file:
@ -320,8 +319,7 @@ import.com.example.plugin.myConfig
myConfig { myConfig {
publish = true publish = true
} }</pre>
</pre>
<p> <p>
If you need access to the project being built, just declare an additional parameter of type <code>Project</code> to your directive and have the user pass that project: If you need access to the project being built, just declare an additional parameter of type <code>Project</code> to your directive and have the user pass that project:
</p> </p>