Class SecFlatMap
java.lang.Object
io.github.syst3ms.skriptparser.lang.Statement
io.github.syst3ms.skriptparser.lang.CodeSection
io.github.syst3ms.skriptparser.lang.lambda.ArgumentSection
io.github.syst3ms.skriptparser.lang.lambda.ReturnSection<Object>
io.github.syst3ms.skriptparser.sections.SecFlatMap
- All Implemented Interfaces:
Finishing, SelfReferencing, SyntaxElement
This section maps the returned value(s) to the values of a given expression, one by one.
This means that this sections loops over each value of the expression and replaces it with the
returned value(s) from the function.
Note that unlike a normal map, the returned expression can contain multiple values. These values
will all be concatenated into one list and will replace the given expression.
Note that the mapped expression will be changed, hence why it can't be a literal list.
- Since:
- ALPHA
-
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.This statement returns itself as the next statement to run ingetNext().Class<?> booleaninit(Expression<?>[] expressions, int matchedPattern, ParseContext parseContext) Initializes this SyntaxElement before being used.booleanisSingle()booleanloadSection(FileSection section, ParserState parserState, SkriptLogger logger) This methods determines the logic of what is being done to the elements inside of this section.Sets the Statement that is placed after this Statement in the file.voidAfter execution has stopped, because a statement has forcefully ended the execution, this consumer is fed with the lastStatementthat has been processed on the next iteration.toString(TriggerContext ctx, boolean debug) walk(TriggerContext ctx) By default, runsStatement.run(TriggerContext); returnsStatement.getNext()if it returns true, ornullotherwise.Methods inherited from class ReturnSection
getReturned, setReturnedMethods inherited from class ArgumentSection
getArguments, setArguments, startMethods inherited from class CodeSection
checkFinishing, checkFinishing, checkReturns, getAllowedSyntaxes, getFirst, getItems, getLast, isRestrictingExpressions, run, setItems
-
Constructor Details
-
SecFlatMap
public SecFlatMap()
-
-
Method Details
-
loadSection
Description copied from class:CodeSectionThis methods determines the logic of what is being done to the elements inside of this section. By default, this simply parses all items inside it, but this can be overridden. In case an extending class just needs to do some additional operations on top of what the default implementation already does, then callsuper.loadSection(section)before any such operations.- Overrides:
loadSectionin classCodeSection- Parameters:
section- theFileSectionrepresenting this CodeSectionlogger- the logger- Returns:
trueif the items inside of the section were loaded properly,falseif there was a problem
-
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
-
step
Description copied from class:ArgumentSectionAfter execution has stopped, because a statement has forcefully ended the execution, this consumer is fed with the lastStatementthat has been processed on the next iteration.
Note that this function only needs to be called for iterative sections, like loops and maps, that need to execute certain actions after each iteration, instead of only when the execution has finished (see ArgumentSection.finish() for that)
By default, does nothing.- Overrides:
stepin classArgumentSection- Parameters:
item- the last statement- See Also:
-
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.- Specified by:
finishin interfaceFinishing- Overrides:
finishin classArgumentSection- See Also:
-
getReturnType
- Specified by:
getReturnTypein classReturnSection<Object>- Returns:
- the Class of the values that should be returned from inside this section
-
isSingle
public boolean isSingle()- Specified by:
isSinglein classReturnSection<Object>- Returns:
- the number of values that should be returned from inside this section
-
setNext
Description copied from class:StatementSets the Statement that is placed after this Statement in the file. You can assume that the Statement.next statement of thenextparameter is known if it has such a statement. -
getActualNext
Description copied from interface:SelfReferencingThis statement returns itself as the next statement to run ingetNext().
This method will return the actual statement that follows this statement. This means, by convention, the next element that is not nested more than this statement.- Specified by:
getActualNextin interfaceSelfReferencing- Returns:
- the element that is actually after this section
-
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
-