/******************************************************************************* * Copyright (c) 2011 David Green 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 * * Contributors: * David Green - initial API and implementation *******************************************************************************/ package org.eclipse.mylyn.wikitext.mediawiki.internal.block; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.eclipse.mylyn.wikitext.parser.markup.Block; /** * a block for <a href="http://www.mediawiki.org/wiki/Help:Formatting">comments</a> delmited XML-style * * @author David Green */ public class CommentBlock extends Block { private static final Pattern COMMENT_START_PATTERN = Pattern.compile("\\s*(<!--).*"); //$NON-NLS-1$ private static final Pattern COMMENT_END_PATTERN = Pattern.compile("(-->)"); //$NON-NLS-1$ @Override protected int processLineContent(String line, int offset) { Matcher closeMatcher = COMMENT_END_PATTERN.matcher(line); if (offset > 0) { closeMatcher.region(offset, line.length()); } if (closeMatcher.find()) { int newContentStart = closeMatcher.end(1); setClosed(true); if (newContentStart < line.length()) { return newContentStart; } return -1; } return -1; } @Override public boolean canStart(String line, int lineOffset) { final Matcher matcher = COMMENT_START_PATTERN.matcher(line); if (lineOffset > 0) { matcher.region(lineOffset, line.length()); } if (matcher.matches()) { return true; } return false; } }