Skip to content

Commit

Permalink
Merge branch 'dev' into 0.2
Browse files Browse the repository at this point in the history
  • Loading branch information
edadma committed May 16, 2018
2 parents 7f11c5b + ba9f340 commit 862a381
Show file tree
Hide file tree
Showing 3 changed files with 104 additions and 16 deletions.
94 changes: 91 additions & 3 deletions src/main/scala/JekyllFilters.scala
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ object JekyllFilters {

override def apply( interp: Interpreter, settings: Map[Symbol, Any], globals: mutable.Map[String, Any], args: List[Any], named: Map[String, Any], locals: Map[String, Any] ) =
args match {
case List( array: List[_], prop: String, v: Any ) =>
case List( array: Seq[_], prop: String, v: Any ) =>
array.filter {
m =>
m.asInstanceOf[Map[String, Any]] get prop match {
Expand All @@ -38,7 +38,7 @@ object JekyllFilters {

override def apply( interp: Interpreter, settings: Map[Symbol, Any], globals: mutable.Map[String, Any], args: List[Any], named: Map[String, Any], locals: Map[String, Any] ) =
args match {
case List( array: List[_], prop: String ) =>
case List( array: Seq[_], prop: String ) =>
(array groupBy (_.asInstanceOf[Map[String, Any]] getOrElse (prop, null)) toList) map {case (k, v) => Map("name" -> k, "items" -> v)}
}
},
Expand All @@ -61,7 +61,95 @@ object JekyllFilters {
case List( path: String ) =>
concatPaths( interp.getVar("url", locals).toString, concatPaths(globals("baseurl").toString, path) )
}
}
},

new Filter( "array_to_sentence_string" ) {
override def parameters = List( List(ArrayType), List(ArrayType, StringType) )

def string( l: Seq[Any], connector: String ) =
l match {
case Nil => ""
case Seq( a ) => a.toString
case Seq( a, b ) => s"$a $connector $b"
case _ => s"${l.init mkString ", "}, $connector ${l.last}"
}

override def apply( interp: Interpreter, settings: Map[Symbol, Any], globals: mutable.Map[String, Any], args: List[Any], named: Map[String, Any], locals: Map[String, Any] ) =
args match {
case List( l: Seq[Any] ) => string( l, "and" )
case List( l: Seq[Any], connector: String ) => string( l, connector )
}
},

new Filter( "sample" ) {
override def parameters = List( List(ArrayType), List(ArrayType, NumberType) )

override def apply( interp: Interpreter, settings: Map[Symbol, Any], globals: mutable.Map[String, Any], args: List[Any], named: Map[String, Any], locals: Map[String, Any] ) =
args match {
case List( l: Seq[Any] ) => l( util.Random.nextInt(l.length) )
case List( l: Seq[Any], n: Number ) => util.Random.shuffle( l ) take n.intValue
}
},

new Filter( "to_integer" ) {
override def parameters = List( List(StringType) )

override def apply( interp: Interpreter, settings: Map[Symbol, Any], globals: mutable.Map[String, Any], args: List[Any], named: Map[String, Any], locals: Map[String, Any] ) =
args match {
case List( n: String ) =>
number( n ) match {
case None => sys.error( s"not a number: $n" )
case Some( d: Double ) => d.toInt
case Some( d: BigDecimal ) => d.toBigInt
case Some( i ) => i
}
}
},

new Filter( "normalize_whitespace" ) {
override def parameters = List( List(StringType) )

override def apply( interp: Interpreter, settings: Map[Symbol, Any], globals: mutable.Map[String, Any], args: List[Any], named: Map[String, Any], locals: Map[String, Any] ) =
args match {
case List( s: String ) => s.replaceAll( """\s+""", " " )
}
},

new Filter( "push" ) {
override def parameters = List( List(ArrayType, AnyType) )

override def apply( interp: Interpreter, settings: Map[Symbol, Any], globals: mutable.Map[String, Any], args: List[Any], named: Map[String, Any], locals: Map[String, Any] ) =
args match {
case List( l: Seq[Any], item: Any ) => l :+ item
}
},

new Filter( "pop" ) {
override def parameters = List( List(ArrayType) )

override def apply( interp: Interpreter, settings: Map[Symbol, Any], globals: mutable.Map[String, Any], args: List[Any], named: Map[String, Any], locals: Map[String, Any] ) =
args match {
case List( l: Seq[Any] ) => l.last
}
},

new Filter( "unshift" ) {
override def parameters = List( List(ArrayType, AnyType) )

override def apply( interp: Interpreter, settings: Map[Symbol, Any], globals: mutable.Map[String, Any], args: List[Any], named: Map[String, Any], locals: Map[String, Any] ) =
args match {
case List( l: Seq[Any], item: Any ) => item +: l
}
},

new Filter( "shift" ) {
override def parameters = List( List(ArrayType) )

override def apply( interp: Interpreter, settings: Map[Symbol, Any], globals: mutable.Map[String, Any], args: List[Any], named: Map[String, Any], locals: Map[String, Any] ) =
args match {
case List( l: Seq[Any] ) => l.head
}
},

) map {f => (f.name, f)} toMap

Expand Down
22 changes: 11 additions & 11 deletions src/main/scala/StandardFilters.scala
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ object StandardFilters {

override def apply( interp: Interpreter, settings: Map[Symbol, Any], globals: mutable.Map[String, Any], args: List[Any], named: Map[String, Any], locals: Map[String, Any] ) =
args match {
case List( l: List[_] ) => l filterNot (_ == nil)
case List( l: Seq[_] ) => l filterNot (_ == nil)
}
},

Expand All @@ -126,7 +126,7 @@ object StandardFilters {

override def apply( interp: Interpreter, settings: Map[Symbol, Any], globals: mutable.Map[String, Any], args: List[Any], named: Map[String, Any], locals: Map[String, Any] ) =
args match {
case List( l: List[_], r: List[_] ) => l ++ r
case List( l: Seq[_], r: Seq[_] ) => l ++ r
}
},

Expand Down Expand Up @@ -226,7 +226,7 @@ object StandardFilters {

override def apply( interp: Interpreter, settings: Map[Symbol, Any], globals: mutable.Map[String, Any], args: List[Any], named: Map[String, Any], locals: Map[String, Any] ) =
args match {
case List( l: List[_] ) => l.asInstanceOf[List[AnyRef]].head
case List( l: Seq[_] ) => l.asInstanceOf[List[AnyRef]].head
}
},

Expand All @@ -251,7 +251,7 @@ object StandardFilters {

override def apply( interp: Interpreter, settings: Map[Symbol, Any], globals: mutable.Map[String, Any], args: List[Any], named: Map[String, Any], locals: Map[String, Any] ) =
args match {
case List( l: List[_], s: String ) => l map display mkString s
case List( l: Seq[_], s: String ) => l map display mkString s
}
},

Expand All @@ -260,7 +260,7 @@ object StandardFilters {

override def apply( interp: Interpreter, settings: Map[Symbol, Any], globals: mutable.Map[String, Any], args: List[Any], named: Map[String, Any], locals: Map[String, Any] ) =
args match {
case List( l: List[_] ) => l.asInstanceOf[List[AnyRef]].last
case List( l: Seq[_] ) => l.asInstanceOf[List[AnyRef]].last
}
},

Expand All @@ -278,7 +278,7 @@ object StandardFilters {

override def apply( interp: Interpreter, settings: Map[Symbol, Any], globals: mutable.Map[String, Any], args: List[Any], named: Map[String, Any], locals: Map[String, Any] ) =
args match {
case List( l: List[_], k: String ) =>
case List( l: Seq[_], k: String ) =>
l map {
case m: collection.Map[_, _] =>
m.asInstanceOf[collection.Map[String, Any]] get k match {
Expand Down Expand Up @@ -376,7 +376,7 @@ object StandardFilters {

override def apply( interp: Interpreter, settings: Map[Symbol, Any], globals: mutable.Map[String, Any], args: List[Any], named: Map[String, Any], locals: Map[String, Any] ) =
args match {
case List( l: List[_] ) => l.asInstanceOf[List[Any]].reverse
case List( l: Seq[_] ) => l.asInstanceOf[Seq[Any]].reverse
}
},

Expand Down Expand Up @@ -406,7 +406,7 @@ object StandardFilters {

override def compute( interp: Interpreter, settings: Map[Symbol, Any], globals: mutable.Map[String, Any], args: List[Any], named: Map[String, Any], locals: Map[String, Any] ) =
args match {
case List( l: List[_] ) => l.length
case List( l: Seq[_] ) => l.length
case List( s: String ) => s.length
}
},
Expand Down Expand Up @@ -441,7 +441,7 @@ object StandardFilters {

override def apply( interp: Interpreter, settings: Map[Symbol, Any], globals: mutable.Map[String, Any], args: List[Any], named: Map[String, Any], locals: Map[String, Any] ) =
args match {
case List( l: List[_] ) => l sortWith lt
case List( l: Seq[_] ) => l sortWith lt
}
},

Expand All @@ -456,7 +456,7 @@ object StandardFilters {

override def apply( interp: Interpreter, settings: Map[Symbol, Any], globals: mutable.Map[String, Any], args: List[Any], named: Map[String, Any], locals: Map[String, Any] ) =
args match {
case List( l: List[_] ) => l sortWith lt
case List( l: Seq[_] ) => l sortWith lt
}
},

Expand Down Expand Up @@ -551,7 +551,7 @@ object StandardFilters {

override def apply( interp: Interpreter, settings: Map[Symbol, Any], globals: mutable.Map[String, Any], args: List[Any], named: Map[String, Any], locals: Map[String, Any] ) =
args match {
case List( l: List[_] ) => l.asInstanceOf[List[Any]].distinct
case List( l: Seq[_] ) => l.asInstanceOf[List[Any]].distinct
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/main/scala/liquescent.scala
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ package object liquescent {
val x = BigInt( a )

if (x.isValidInt)
LiteralExpressionAST( x.toInt )
Some( x.toInt )
else
LiteralExpressionAST( x )
Some( x )
} else
None

Expand Down

0 comments on commit 862a381

Please sign in to comment.