Class SecSwitch
java.lang.Object
io.github.syst3ms.skriptparser.lang.Statement
io.github.syst3ms.skriptparser.lang.CodeSection
io.github.syst3ms.skriptparser.sections.SecSwitch
- All Implemented Interfaces:
Finishing, SyntaxElement
Basic switch control statement. Only
case sections/effects are allowed within this section.
The given expression will be matched against each case and all matching ones will be run.
Note that unlike in Java, each case is run separately.
switch (2) {
case 1:
print("Hello");
case 2:
print("World!");
break;
default:
print("Nothing");
}
Would result in the following Skript code:
switch 2:
case 1:
print "Hello"
case 1 or 2:
print "World!"
default:
print "Nothing"
Note that the default part is only executed if no match was found.- Since:
- ALPHA
- See Also:
-
Field Summary
Fields inherited from class CodeSection
first, items, last -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidfinish()By convention, this method should be fired in one of the following occasions: The execution of the section is completely done and the (actual) next element is referenced to be walked on. This method is completely stopped by any means whatsoever. An example of this second occasion isEffContinuecontinuing over multiple loops.protected Set<Class<? extends SyntaxElement>> A list of the classes of every syntax that is allowed to be used inside of this CodeSection.getCases()getMatch()booleaninit(Expression<?>[] expressions, int matchedPattern, ParseContext parseContext) Initializes this SyntaxElement before being used.booleanisDone()voidsetDefault(Statement byDefault) voidsetDone(boolean isDone) toString(TriggerContext ctx, boolean debug) walk(TriggerContext ctx) By default, runsStatement.run(TriggerContext); returnsStatement.getNext()if it returns true, ornullotherwise.Methods inherited from class CodeSection
checkFinishing, checkFinishing, checkReturns, getFirst, getItems, getLast, isRestrictingExpressions, loadSection, run, setItems
-
Constructor Details
-
SecSwitch
public SecSwitch()
-
-
Method Details
-
init
Description copied from interface:SyntaxElementInitializes this SyntaxElement before being used. This method is always called before all the others in an extending class, the only exception beingCodeSection.loadSection(FileSection, ParserState, SkriptLogger).- Specified by:
initin interfaceSyntaxElement- Parameters:
expressions- an array of expressions representing all the expressions that are being passed to this syntax element. As opposed to Skript, elements of this array can't benull.matchedPattern- the index of the pattern that was successfully matched. It corresponds to the order of the syntaxes in registrationparseContext- an object containing additional information about the parsing of this syntax element, like regex matches and parse marks- Returns:
trueif the syntax element was initialized successfully,falseotherwise.- See Also:
-
walk
Description copied from class:StatementBy default, runsStatement.run(TriggerContext); returnsStatement.getNext()if it returns true, ornullotherwise. Note that if this method is overridden, then the implementation of Statement.run(TriggerContext) doesn't matter.- Specified by:
walkin classCodeSection- Parameters:
ctx- the event- Returns:
- the next item to be ran, or
nullif this is the last item to be executed
-
finish
public void finish()Description copied from interface:FinishingBy convention, this method should be fired in one of the following occasions:- The execution of the section is completely done and the (actual) next element is referenced to be walked on.
- This method is completely stopped by any means whatsoever.
EffContinuecontinuing over multiple loops. If that effect continues 3 loops in one go, this means that the 2 most inner-loops need to be completely reset, since they have the possibility to be looped over again. EffContinue therefore calls this method on those loops.
Another example isEffExit, which finishes every section that implements this interface, because of the same reasons specified above. -
getAllowedSyntaxes
Description copied from class:CodeSectionA list of the classes of every syntax that is allowed to be used inside of this CodeSection. The default behavior is to return an empty list, which equates to no restrictions. If overridden, this allows the creation of specialized, DSL-like sections in which only select statements and other sections (and potentially, but not necessarily, expressions).- Overrides:
getAllowedSyntaxesin classCodeSection- Returns:
- a list of the classes of each syntax allowed inside this CodeSection
- See Also:
-
toString
- Specified by:
toStringin interfaceSyntaxElement- Parameters:
ctx- the eventdebug- whether to show additional information or not- Returns:
- a
Stringthat should aim to resemble what is written in the script as closely as possible
-
getMatch
-
getCases
-
getDefault
-
setDefault
-
isDone
public boolean isDone() -
setDone
public void setDone(boolean isDone)
-