Skip to content

Instantly share code, notes, and snippets.

@cjbrooks12
Last active March 22, 2019 15:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cjbrooks12/7e2fdaf66899d13acc80a77444f5acdd to your computer and use it in GitHub Desktop.
Save cjbrooks12/7e2fdaf66899d13acc80a77444f5acdd to your computer and use it in GitHub Desktop.
Dynamically Load Orchid Wiki Pages
package com.example
import com.eden.orchid.api.compilers.TemplateFunction
import com.eden.orchid.api.registration.OrchidModule
import com.example.ResourcesFunction
// in Orchid sourceroot: src/orchid/kotlin
class MyModule : OrchidModule() {
override fun configure() {
addToSet(TemplateFunction::class.java, ResourcesFunction::class.java)
}
}
package com.example
import com.eden.orchid.api.OrchidContext
import com.eden.orchid.api.compilers.TemplateFunction
import com.eden.orchid.api.options.annotations.BooleanDefault
import com.eden.orchid.api.options.annotations.Option
import javax.inject.Inject
// in Orchid sourceroot: src/orchid/kotlin
class ResourcesFunction
@Inject
constructor(
private val context: OrchidContext
) : TemplateFunction("resources", false) {
@Option
lateinit var path: String
@Option
lateinit var extensions: Array<String>
@Option
var recursive: Boolean = false
@Option
@BooleanDefault(true)
var local: Boolean = true
override fun parameters(): Array<String> {
return arrayOf("path", "extensions", "recursive")
}
override fun apply(): Any {
val actualExtensions = if (extensions.isEmpty()) null else extensions
val resources = if (local) context.getLocalResourceEntries(path, actualExtensions, recursive) else context.getResourceEntries(path, actualExtensions, recursive)
// return resources.sortedBy { (it.embeddedData.element as JSONObject).getInt("pageOrder") } // to sort these Resources by a property in their Front Matter
return resources
}
}


{% for res in resources('wiki') %}

  • [{{ res.title }}]({{ res.reference.originalFullFilename | replace({'wiki/': ''}) }}) {% endfor %}
title
Page 1

Wiki page 1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment