Source code for bTagScript.block.var_block

from typing import Optional

from ..adapter import StringAdapter
from ..interface import verb_required_block
from ..interpreter import Context


[docs]class VarBlock(verb_required_block(False, parameter=True)): """ Variables are useful for choosing a value and referencing it later in a tag. Variables can be referenced using brackets as any other block. Note that if the variable's name is being "used" by any other block the variable will be ignored. **Usage:** ``{=(<name>):<value>}`` **Aliases:** ``let, var, =`` **Payload:** ``value`` **Parameter:** ``name`` **Examples:** .. tagscript:: {=(prefix):!} The prefix here is `{prefix}`. The prefix here is `!`. {let(day):Monday} {if({day}==Wednesday):It's Wednesday my dudes!|The day is {day}.} The day is Monday. Variables can also be created like so {$<name>:<value>} {$day:Monday} == {=(day):Monday} """ ACCEPTED_NAMES = ("=", "let", "var")
[docs] def process(self, ctx: Context) -> Optional[str]: """ Process the block and assign the variable. """ if not ctx.verb.parameter: return None elif ctx.verb.parameter in ctx.interpreter._blocknames: # pylint: disable=protected-access return None ctx.response.variables[ctx.verb.parameter] = StringAdapter(str(ctx.verb.payload)) return ""