package org.goko.core.gcode.rs274ngcv3.instruction.builder;
import java.util.List;
import org.goko.core.common.exception.GkException;
import org.goko.core.gcode.element.GCodeWord;
import org.goko.core.gcode.rs274ngcv3.context.GCodeContext;
import org.goko.core.gcode.rs274ngcv3.element.InstructionType;
import org.goko.core.gcode.rs274ngcv3.instruction.SelectToolInstruction;
import org.goko.core.gcode.rs274ngcv3.utils.GCodeWordUtils;
public class SelectToolBuilder extends AbstractInstructionBuilder<SelectToolInstruction> {
/** Constructor */
public SelectToolBuilder() {
super(InstructionType.SELECT_TOOL);
}
/** (inheritDoc)
* @see org.goko.core.gcode.rs274ngcv3.instruction.IInstructionBuilder#match(java.util.List)
*/
@Override
public boolean match(GCodeContext context, List<GCodeWord> words) throws GkException {
return GCodeWordUtils.findWordByLetter("T", words) != null;
}
/** (inheritDoc)
* @see org.goko.core.gcode.rs274ngcv3.instruction.IInstructionBuilder#toInstruction(java.util.List)
*/
@Override
protected SelectToolInstruction getInstruction(GCodeContext context, List<GCodeWord> words) throws GkException {
GCodeWord word = GCodeWordUtils.getAndRemoveWordByLetter("T", words);
Integer toolNumber = GCodeWordUtils.intValue(word);
return new SelectToolInstruction(toolNumber);
}
}