// sample use:
any_f(none('has nodes','has links'),extraLinks(), "Your diagram has problems.")
any('category name', 'rulename') // you can use rule names, or category names
any_f('category name',"good"); // provide feedback "good" if 'category name' matches
all('a','b',true,rule('c')) // true if category a, category b, and rule 'c' are matched.
none_f('a','b','c', 'message') // provide "message" feedback if none of a b c are true.
rule("has a sun"); // check the rule "has a sun" passes.
category("thing"); // true if any rules in "thing" are true.
hasTransformation(); // true if the diagram has transformations
iconsUsedOnce(); // true if the icons used at most one time.
allIconsUsed(); // true if *all* icons were used at least once
extraLinks(); // true if there are links present not defined in rules.
feedback("message"); // Tell the student "message"
dontCount(); // Feedback after this won't count against max submissions.
count(); // Feedback after this will count against max submissions.
// by default the "Feedback if all rules pass: " feedback will be given
// An example rubric:
all_s('transform','storage','source','release', 6);
all_s('transform','storage', 5);
all_s('transform','source', 5);
all_s('transform','release', 5);
all_s('transform',4);
any('source','storage','release',3);
any('link',2);
score(1);
// Other ideas:
any_s('category one', 'rule a', 5); // you can score with rules or categories.
any_s(false,all('a','b'), 4); // score five if a and b. nestable all any.
score(3); // explicitly set a score.
if (rule('rulename')) {...} // explicitly check a rule.
hasTransformation(); // true if the diagram has transformations
iconsUsedOnce(); // true if the icons used at most one time.
allIconsUsed(); // true if *all* icons were used at least once
extraLinks(); // true if there are links present not defined in rules.
// example: ( result is how this rule 'evaluates' in other contexts. )
result = all('rule a', 'rule b', any('rule d','rule e'));
// Other ideas:
all(true,true); // evaluates to true
any(false,true); // evaluates to true
not_any(true,true,false); // evaluates to false
none(true,true,false); // evaluates to false
not_all(flase,true,true); // evaluates to true
if (any('rulename')) {...} // can use JS constructs.