W3TPL/tag/let

From Woozle Writes Code
< W3TPL‎ | tag
Jump to navigation Jump to search

About

Action: Assigns a value to a variable.

This tag has many operations in common with <get>; a comparison is here.

Tag Attributes

core

Support for this attribute is required in order for the tag to fulfill its basic purpose.

  • name=: name of variable to receive the calculated value

supported

All get-let common attributes are supported, as well as these:

  • echo (output): display the resulting value (at the tag's location in the page)
  • self (input): takes starting value from same variable, to allow unary operations (e.g. increment, append)

unsupported

These are currently not enabled. Code to support some of them exists, though it may not be working.

  • index=: treats the target variable (specified by <name>) as an array, and specifies the element to use
  • load (should probably be "fetch"): retrieve starting value from the current page's properties
    • opposite of "save"
  • null (input): use NULL as the input
  • oparse is now just "parse"
  • page= (input): name of wiki page to use as input (instead of tag contents)
  • raw: if present, "save" will store the value as an unserialized string
    • The default is to serialize it, preserving variable type.
    • I think this only applied to <save>.
  • save (should probably be "store"): store the result in the properties for the current page
    • opposite of "load"

History

  • 2011-05-31 MainProcess()/DoFromScalar(): added "tag" attribute
  • 2016-09-22 MainProcess()/DoFromScalar(): adapting as method of LET tag object
  • 2017-10-30 MainProcess()/DoFromScalar(): major rewrite of everything
    • changing from static to dynamic
    • using internal properties
  • 2017-11-01 rewrite
    • Removing support for "load" attribute until we have a usage case.
    • It doesn't make sense to load a value you'd have to save anyway.
      • (Different page, perhaps? But when would we need that? Need usage case.)
    • (MainProcess()) copied code from DoFromScalar() to MainProcess(), which will replace it
    • replacing DoFromScalar() with MainProcess()
  • 2018-06-04 This currently saves the property values in RAW format (i.e. not serialized).
    • To change this, replace SaveValueRaw() with SaveValue().
  • 2020-08-17 (MainProcess()) upgrades and fixes
    • Somehow, Var::GetValue_fromExpression() wasn't being called to interpret "val=" expressions. I've reinstated it. Not sure if there are other attributes where it should be applied. If they come up, document them.
  • 2020-09-24 introducing the 'raw' attribute, which saves in non-serialized format
    • Now saving serialized by default.
  • 2022-04-08 Belatedly saving the figured value into the variable. Where was that being done before?
  • 2022-04-09
    • MainProcess() is, uh, no longer being called...
      • STAGE 1 was replaced by GetTagInput() (input is retrieved from somewhere)
      • STAGE 2 now replaced by UseTagInput() (operations are done on the input)
    • removed DoFromScalar()
  • 2022-04-20 moved common attributes into the caTag_Var, so <get> and <let> can share the same processing code.
    • Have not yet updated get to use this, though.