| Clade Aliases
|
| Alias |
Clade
|
| Base* [ca,i] |
Sys\Events\InputRq
|
| InData* [c,i] |
Sys\Events\InputRq\aux\InRqData
|
| ItemIface |
Sys\Events\InputItem
|
| SelfIface |
Sys\Events\InputRq\Setting
|
|
About
A Setting is an InputRq whose primary (or only) purpose is to change the value of a setting used by any other InputRqs that might need it. The value is saved under the Setting's assigned name (NameOfInput()).
- Purpose: an Actor object that can modify the value/state of an Option object
- The value can be required or optional, depending on the `valreq` attribute.
Pages
- 2025-03-08 Should probably be renamed "Simple", ocelot, since all
InputRqs will now accept a value (by default, anyway).
- 2024-10-29 We might, at some point, want to generalize this so it's not dependent on a *tag*-Option but instead some more generalized Option State interface (to be written, I guess). For now, Get It Working.
Pieces
Input() is the full/raw/unparsed value-string associated with this item in the command
Item() is the XML tag (or, eventually, some generic equivalent) which defines the UI details for this subcommand
OInput() is the InRqData object for interpreting the `Input()` value
History
- 2024-10-28 created (for WUIDL)
- 2024-11-19 renamed/moved from [WF]Sys\Routing\Action -> [WF]Sys\Events\Actor
- 2024-12-14 switched to static pseudoconstructor to make tracing easier
- 2024-12-22 created ValReq
- 2024-12-23 decided that value requirements (quantity, list...) should be in the UI XML instead of being defined by the podling class. This simplifies the code-structure.
- Deleting Option/ValReq (after first creating ValOpt, which is now also deleted).
- 2025-01-21 Renaming this clade from Option -> Settable, for clarity
- 2025-01-23 Made `Item()` public so Settings can access it.
- 2025-03-08
- Moving
FromItemValue() to parent (InputRq).
- Renaming
WithInput() to `ParseInput()`, because now this (setting by actor key) is just one way of parsing.
- 2025-09-01 renamed from "Settable" to "Setting"
Functions
public
internal
function ParseInputString(string $s) : void
function ParseInputArgs(array $arArgs) {} (no code here)
$arArgs = number-based array of additional values (if any) (e.g. for "cmd:stuff:things:more", $arArgs will be [0]=>"things", [1]=>"more)
- By default, these aren't retained since their meaning is action-dependent. Podlings can override this.
Code
as of 2025-11-17 (including some debug code):
interface iSetting extends BaseIface {}
class cSetting extends BaseClass implements SelfIface {
// ++ SETUP: dynamic ++ //
// $s = first input to the subcommand
protected function ParseInputString(string $s) : void {
$sName = $this->NameOfInput();
$this->OAUserInput()->SetIt($sName,$s);
#echo "PARSING INPUT: set [$sName] -> [$s] in id".$this->OAUserInput()->ObjectID().CRLF;
$qs = $this->OAUserInput()->GetItQ($sName);
$this->AmHere("USER INPUT: ".$this->OAUserInput()->Inspect()->Render());
}
// By defalt, Settables don't expect any extra arguments.
protected function ParseInputArgs(array $arArgs) {}
// -- SETUP -- //
// ++ ACTION ++ //
// DOCS: https://wooz.dev/Ferreteria/v0.6/clade/Sys/Events/InputRq/Setting/@fx/Go
public function Go() {
$sName = $this->NameOfInput(); // the internal key for the subcommand we're processing here
$oaUIn = $this->OAUserInput();
$qsVal = $oaUIn->GetItQ($sName);
echo "GO (id".$oaUIn->ObjectID()."): [$sName] is ";
if ($qsVal->HasIt()) {
$sVal = $oaUIn->GetIt($sName);
echo "set to [$sVal]";
} else {
echo "not set";
}
echo " in ".get_called_class().CRLF;
}
// -- ACTION -- //
// ++ OUTPUT ++ //
public function Describe() : string {
$this->AmHere("USER INPUT: ".$this->OAUserInput()->Inspect()->Render());
$sName = $this->NameOfInput(); // the internal key for the subcommand we're processing here
$oItem = $this->Item();
$ftCues = $oItem->RenderUIName();
#$sName = $oItem->SName();
$this->AmHere("CHECKING input [$sName]...");
$qsVal = $this->OAUserInput()->GetItQ($sName);
if ($qsVal->HasIt()) {
$sVal = $qsVal->GetIt();
return "set the $ftCues value to '$sVal'";
} else {
echo "USER INPUT: ".$this->OAUserInput()->Inspect()->Render();
return "set the $ftCues value -- but no value was given!";
}
}
// -- OUTPUT -- //
}