Skip to content

Commit

Permalink
Merge 8178172 into e65fe09
Browse files Browse the repository at this point in the history
  • Loading branch information
tylersouthwick committed Feb 5, 2016
2 parents e65fe09 + 8178172 commit c7036b7
Showing 1 changed file with 17 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,14 @@ object ResourceRef extends DefaultJsonProtocol {
}
}

sealed trait ConditionFunctionNestable[LogicalReturnType] {
def token : Token[LogicalReturnType]
}

sealed abstract class NestableAmazonFunctionCall[LogicalReturnType](funName : String) extends AmazonFunctionCall[LogicalReturnType](funName) with ConditionFunctionNestable[LogicalReturnType] {
lazy val token = FunctionCallToken(this)
}

case class `Fn::GetAtt`(args: Seq[String])
extends AmazonFunctionCall[String]("Fn::GetAtt"){type CFBackingType = Seq[String] ; val arguments = args}

Expand All @@ -124,19 +132,20 @@ case class `Fn::Base64`(toEncode: Token[String])
extends AmazonFunctionCall[String]("Fn::Base64"){type CFBackingType = Token[String] ; val arguments = toEncode}

case class `Fn::Equals`(a: Token[String], b: Token[String])
extends AmazonFunctionCall[String]("Fn::Equals"){type CFBackingType = (Token[String], Token[String]) ; val arguments = (a, b)}
extends NestableAmazonFunctionCall[String]("Fn::Equals")
{type CFBackingType = (Token[String], Token[String]) ; val arguments = (a, b)}

case class `Fn::Not`(fn: Token[String])
extends AmazonFunctionCall[String]("Fn::Not"){type CFBackingType = (Seq[Token[String]]) ; val arguments = Seq(fn)}
case class `Fn::Not`(fn: ConditionFunctionNestable[String])
extends AmazonFunctionCall[String]("Fn::Not"){type CFBackingType = (Seq[Token[String]]) ; val arguments = Seq(fn).map(_.token)}

case class `Fn::And`(fn: Seq[Token[String]])
extends AmazonFunctionCall[String]("Fn::And"){type CFBackingType = (Seq[Token[String]]) ; val arguments = fn}
case class `Fn::And`(fn: Seq[ConditionFunctionNestable[String]])
extends NestableAmazonFunctionCall[String]("Fn::And"){type CFBackingType = (Seq[Token[String]]) ; val arguments = fn.map(_.token)}

case class `Fn::Or`(fn: Seq[Token[String]])
extends AmazonFunctionCall[String]("Fn::Or"){type CFBackingType = (Seq[Token[String]]) ; val arguments = fn}
case class `Fn::Or`(fn: Seq[ConditionFunctionNestable[String]])
extends NestableAmazonFunctionCall[String]("Fn::Or"){type CFBackingType = (Seq[Token[String]]) ; val arguments = fn.map(_.token)}

case class ConditionFnRef(c: Condition)
extends AmazonFunctionCall[String]("Condition"){type CFBackingType = (Token[String]) ; val arguments = StringToken(c.name)}
extends NestableAmazonFunctionCall[String]("Condition"){type CFBackingType = (Token[String]) ; val arguments = StringToken(c.name)}

case class `Fn::Select`[R: JsonFormat](index: Token[StringBackedInt], listOfObjects: Token[Seq[R]])
extends AmazonFunctionCall[R]("Fn::Select") {
Expand Down

0 comments on commit c7036b7

Please sign in to comment.