/* * Copyright 2016 Nokia Solutions and Networks * Licensed under the Apache License, Version 2.0, * see license.txt file for details. */ package org.robotframework.ide.eclipse.main.plugin.tableeditor.source; import org.eclipse.jface.text.rules.ICharacterScanner; import com.google.common.base.Joiner; class CharacterScanner implements ICharacterScanner { private final char[] content; private int offset = 0; CharacterScanner(final String... lines) { this.content = Joiner.on('\n').join(lines).toCharArray(); } @Override public char[][] getLegalLineDelimiters() { return new char[][] { new char[] { '\n' } }; } @Override public int getColumn() { int column = 0; for (int i = offset - 1; i >= 0; i--) { if (i < content.length && content[i] == '\n') { return column; } column++; } return column; } public int getOffset() { return offset; } @Override public int read() { if (offset >= content.length) { offset++; return ICharacterScanner.EOF; } return content[offset++]; } @Override public void unread() { offset = Math.max(offset - 1, 0); } }