Merge pull request #25 from G-e-n-e-v-e-n-s-i-S/get-card-stylesheet

Add get_card_stylesheet script function
This commit is contained in:
GenevensiS
2024-10-04 23:13:47 +02:00
committed by GitHub
4 changed files with 32 additions and 1 deletions
+17
View File
@@ -0,0 +1,17 @@
Function: get_card_stylesheet
--Usage--
> get_card_stylesheet(card, set: set)
Get the stylesheet of a [[type:card]].
This is for use in exporter scripts. In card scripts, use the "stylesheet" predefined variable instead.
--Parameters--
! Parameter Type Description
| @input@ [[type:card]] The card you want to retrieve the stylesheet from.
| @set@ [[type:set]] The set the card belongs to. In an exporter script, this can be ommited since "set" is a predefined variable.
--Examples--
> # Retrieve the card regions from the card's stylesheet
> card_regions := get_card_stylesheet(card).card_regions
+1
View File
@@ -99,6 +99,7 @@ These functions are built into the program, other [[type:function]]s can be defi
! Cards <<<
| [[fun:new_card]] Construct a new [[type:card]] object.
| [[fun:get_card_styling]] Get the styling data of a [[type:card]].
| [[fun:get_card_styesheet]] Get the stylesheet of a [[type:card]].
! HTML export <<<
| [[fun:to_html]] Convert [[type:tagged text]] to html.
+12
View File
@@ -680,6 +680,17 @@ SCRIPT_FUNCTION(get_card_styling) {
throw ScriptError(_("invalid set or card argument"));
}
SCRIPT_FUNCTION(get_card_stylesheet) {
SCRIPT_PARAM_C(ScriptValueP, input);
SCRIPT_PARAM_C(ScriptValueP, set);
ScriptObject<CardP>* c = dynamic_cast<ScriptObject<CardP>*>(input.get());
ScriptObject<Set*>* s = dynamic_cast<ScriptObject<Set*>*>(set.get());
if (s && c) {
return to_script(&s->getValue()->stylesheetFor(c->getValue()));
}
throw ScriptError(_("invalid set or card argument"));
}
// ----------------------------------------------------------------------------- : Keywords
@@ -768,6 +779,7 @@ void init_script_basic_functions(Context& ctx) {
ctx.setVariable(_("to_code"), script_to_code);
ctx.setVariable(_("type_name"), script_type_name);
ctx.setVariable(_("get_card_styling"), script_get_card_styling);
ctx.setVariable(_("get_card_stylesheet"), script_get_card_stylesheet);
// math
ctx.setVariable(_("abs"), script_abs);
ctx.setVariable(_("random_real"), script_random_real);
@@ -49,7 +49,8 @@ $built_in_functions = array(
'random_shuffle' =>'',
'random_select' =>'',
'random_select_many' =>'',
'get_card_styling' =>'',
'get_card_styling' =>'',
'get_card_stylesheet' =>'',
// keywords
'expand_keywords' =>'', 'expand_keywords_rule'=>'expand_keywords',
'keyword_usage' =>'',