mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2025-07-01 02:46:41 +00:00
Start work on modularising masks and patterns
This commit is contained in:
@ -21,12 +21,14 @@ package com.sk89q.worldedit.internal.registry;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.sk89q.worldedit.WorldEdit;
|
||||
import com.sk89q.worldedit.extension.input.InputParseException;
|
||||
import com.sk89q.worldedit.extension.input.NoMatchException;
|
||||
import com.sk89q.worldedit.extension.input.ParserContext;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -38,7 +40,7 @@ import java.util.List;
|
||||
public abstract class AbstractFactory<E> {
|
||||
|
||||
protected final WorldEdit worldEdit;
|
||||
protected final List<InputParser<E>> parsers = new ArrayList<>();
|
||||
private final List<InputParser<E>> parsers = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* Create a new factory.
|
||||
@ -50,6 +52,17 @@ public abstract class AbstractFactory<E> {
|
||||
this.worldEdit = worldEdit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets an immutable list of parsers.
|
||||
*
|
||||
* To add parsers, use the register method.
|
||||
*
|
||||
* @return the parsers
|
||||
*/
|
||||
public List<InputParser<E>> getParsers() {
|
||||
return Collections.unmodifiableList(parsers);
|
||||
}
|
||||
|
||||
public E parseFromInput(String input, ParserContext context) throws InputParseException {
|
||||
E match;
|
||||
|
||||
@ -64,4 +77,14 @@ public abstract class AbstractFactory<E> {
|
||||
throw new NoMatchException("No match for '" + input + "'");
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers an InputParser to this factory
|
||||
*
|
||||
* @param inputParser The input parser
|
||||
*/
|
||||
public void register(InputParser<E> inputParser) {
|
||||
checkNotNull(inputParser);
|
||||
|
||||
parsers.add(inputParser);
|
||||
}
|
||||
}
|
||||
|
@ -19,10 +19,13 @@
|
||||
|
||||
package com.sk89q.worldedit.internal.registry;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.sk89q.worldedit.WorldEdit;
|
||||
import com.sk89q.worldedit.extension.input.InputParseException;
|
||||
import com.sk89q.worldedit.extension.input.ParserContext;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Input parser interface for {@link AbstractFactory}.
|
||||
*
|
||||
@ -33,10 +36,18 @@ public abstract class InputParser<E> {
|
||||
|
||||
protected final WorldEdit worldEdit;
|
||||
|
||||
protected InputParser(WorldEdit worldEdit) {
|
||||
public InputParser(WorldEdit worldEdit) {
|
||||
this.worldEdit = worldEdit;
|
||||
}
|
||||
|
||||
public abstract E parseFromInput(String input, ParserContext context) throws InputParseException;
|
||||
|
||||
/**
|
||||
* Gets a list of suggestions of input to this parser.
|
||||
*
|
||||
* @return a list of suggestions
|
||||
*/
|
||||
public List<String> getSuggestions() {
|
||||
return Lists.newArrayList();
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,71 @@
|
||||
/*
|
||||
* WorldEdit, a Minecraft world manipulation toolkit
|
||||
* Copyright (C) sk89q <http://www.sk89q.com>
|
||||
* Copyright (C) WorldEdit team and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Lesser General Public License as published by the
|
||||
* Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.sk89q.worldedit.internal.registry;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.sk89q.worldedit.WorldEdit;
|
||||
import com.sk89q.worldedit.extension.input.InputParseException;
|
||||
import com.sk89q.worldedit.extension.input.ParserContext;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* An input parser that only performs a single function from aliases.
|
||||
*
|
||||
* @param <E> the element
|
||||
*/
|
||||
public abstract class SimpleInputParser<E> extends InputParser<E> {
|
||||
|
||||
public SimpleInputParser(WorldEdit worldEdit) {
|
||||
super(worldEdit);
|
||||
}
|
||||
|
||||
/**
|
||||
* The strings this parser matches
|
||||
*
|
||||
* @return the matching aliases
|
||||
*/
|
||||
public abstract List<String> getMatchedAliases();
|
||||
|
||||
@Override
|
||||
public E parseFromInput(String input, ParserContext context) throws InputParseException {
|
||||
if (!getMatchedAliases().contains(input)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return parseFromSimpleInput(input, context);
|
||||
}
|
||||
|
||||
public abstract E parseFromSimpleInput(String input, ParserContext context) throws InputParseException;
|
||||
|
||||
/**
|
||||
* Gets the primary name of this matcher
|
||||
*
|
||||
* @return the primary match
|
||||
*/
|
||||
public String getPrimaryMatcher() {
|
||||
return getMatchedAliases().get(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getSuggestions() {
|
||||
return Lists.newArrayList(getPrimaryMatcher());
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user