/******************************************************************************* * Copyright (c) 2015-2016 Open Analytics NV and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ package org.eclipse.linuxtools.internal.docker.editor.scanner; import java.io.IOException; import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.text.rules.IToken; import org.eclipse.jface.text.rules.IWordDetector; import org.eclipse.jface.text.rules.Token; import org.eclipse.jface.text.rules.WordRule; import org.eclipse.linuxtools.internal.docker.editor.Activator; import org.eclipse.linuxtools.internal.docker.editor.util.AssetLoader; public class InstructionWordRule extends WordRule { public static final String[] INSTRUCTIONS; private static final String INSTRUCTION_FILE_PATH = "assets/instructions.txt"; // Load instructions from the text file. static { String[] loadedInstructions = new String[0]; try { String contentsString = AssetLoader.loadAsset(INSTRUCTION_FILE_PATH); String lineSeparator = (contentsString.contains("\r\n")) ? "\r\n" : "\n"; loadedInstructions = contentsString.split(lineSeparator); } catch (IOException e) { Activator.log(IStatus.WARNING, "No content assist available: error while reading instruction file: " + INSTRUCTION_FILE_PATH, e); } INSTRUCTIONS = loadedInstructions; } public InstructionWordRule(IToken instructionToken) { super(new InstructionWordDetector(), Token.UNDEFINED, true); setColumnConstraint(0); for (String instruction : INSTRUCTIONS) addWord(instruction, instructionToken); } private static class InstructionWordDetector implements IWordDetector { @Override public boolean isWordStart(char c) { return Character.isJavaIdentifierStart(c); } @Override public boolean isWordPart(char c) { return Character.isJavaIdentifierPart(c); } } }