aboutsummaryrefslogtreecommitdiff
path: root/doc-tool
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2017-01-23 11:12:56 +0100
committerFelix Mulder <felix.mulder@gmail.com>2017-01-31 14:32:40 +0100
commitfda992e84db55c4f769cd7e4407e863c76a44b06 (patch)
tree4c6d639f89908c5fbfd2398fd19236c37f71b5a3 /doc-tool
parent3e9451d79b3e6845c4b1c0906401108a609eddf8 (diff)
downloaddotty-fda992e84db55c4f769cd7e4407e863c76a44b06.tar.gz
dotty-fda992e84db55c4f769cd7e4407e863c76a44b06.tar.bz2
dotty-fda992e84db55c4f769cd7e4407e863c76a44b06.zip
Add `first` filter for to allow for first in both array and string
Diffstat (limited to 'doc-tool')
-rw-r--r--doc-tool/src/dotty/tools/dottydoc/staticsite/LiquidTemplate.scala1
-rw-r--r--doc-tool/src/dotty/tools/dottydoc/staticsite/filters.scala16
2 files changed, 17 insertions, 0 deletions
diff --git a/doc-tool/src/dotty/tools/dottydoc/staticsite/LiquidTemplate.scala b/doc-tool/src/dotty/tools/dottydoc/staticsite/LiquidTemplate.scala
index a86a5bb54..87209b47a 100644
--- a/doc-tool/src/dotty/tools/dottydoc/staticsite/LiquidTemplate.scala
+++ b/doc-tool/src/dotty/tools/dottydoc/staticsite/LiquidTemplate.scala
@@ -15,6 +15,7 @@ case class LiquidTemplate(contents: String) extends ResourceFinder {
/** Register filters to static container */
Filter.registerFilter(new Reverse)
+ Filter.registerFilter(new First)
// For some reason, liqp rejects a straight conversion using `.asJava`
private def toJavaMap(map: Map[String, AnyRef]): HashMap[String, Object] =
diff --git a/doc-tool/src/dotty/tools/dottydoc/staticsite/filters.scala b/doc-tool/src/dotty/tools/dottydoc/staticsite/filters.scala
index 2239f5a50..1569d3873 100644
--- a/doc-tool/src/dotty/tools/dottydoc/staticsite/filters.scala
+++ b/doc-tool/src/dotty/tools/dottydoc/staticsite/filters.scala
@@ -23,4 +23,20 @@ object filters {
else array.reverse
}
}
+
+ /** Used to get the first element of arrays and strings:
+ *
+ * ```html
+ * {% assign array = "1,2,3,4,5" | split: "," %}
+ * {{ array | first }}
+ * ```
+ * The above snippet will render "1"
+ */
+ final class First extends Filter("first") {
+ override def apply(value: Any, params: AnyRef*): AnyRef = value match {
+ case str: String if str.nonEmpty => str.charAt(0).toString
+ case xs: Array[String] if xs.nonEmpty => xs.head
+ case _ => null
+ }
+ }
}