locals {
remainingInstructions = length(var.instructions) == 0 ? [] : slice(var.instructions, 1, length(var.instructions))
currentInstruction = length(var.instructions) == 0 ? null : split(",", var.instructions[0])
amount = local.currentInstruction == null ? null : tonumber(local.currentInstruction[0])
fromStack = local.currentInstruction == null ? null : (tonumber(local.currentInstruction[1]) - 1)
toStack = local.currentInstruction == null ? null : (tonumber(local.currentInstruction[2]) - 1)
setFromBlocks = local.currentInstruction == null ? null : slice(var.stackedBlocks[local.fromStack], local.amount, length(var.stackedBlocks[local.fromStack]))
newToBlocks = local.currentInstruction == null ? null : slice(var.stackedBlocks[local.fromStack], 0, local.amount)
newToBlocksMaybeReversed = var.reverse ? reverse(local.newToBlocks) : local.newToBlocks
setToBlocks = local.currentInstruction == null ? null : concat(local.newToBlocksMaybeReversed, var.stackedBlocks[local.toStack])
finalBlocks = local.currentInstruction == null ? var.stackedBlocks : [for i in range(length(var.stackedBlocks)) : (i == local.fromStack ? local.setFromBlocks : (i == local.toStack ? local.setToBlocks : var.stackedBlocks[i]))]
}
variable "stackedBlocks" {}
variable "instructions" {}
variable "reverse" {}
output "finalBlocks" {
value = local.finalBlocks
}
output "remainingInstructions" {
value = local.remainingInstructions
}