blob: 60320682e645fcadb395847284e4b7ec8a8bf8fb [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015 David Green.
* 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.internal.wikitext.commonmark.inlines;
import static com.google.common.base.Preconditions.checkNotNull;
import java.util.List;
import com.google.common.collect.ImmutableList;
class InlinesSubstitution {
private final Inline first;
private final Inline last;
private final List<Inline> substitution;
public InlinesSubstitution(Inline first, Inline last, List<Inline> substitution) {
this.first = checkNotNull(first);
this.last = checkNotNull(last);
this.substitution = ImmutableList.copyOf(substitution);
}
public List<Inline> apply(List<Inline> inlines) {
ImmutableList.Builder<Inline> builder = ImmutableList.builder();
boolean inReplacementSegment = false;
for (Inline inline : inlines) {
if (inline == first) {
inReplacementSegment = true;
builder.addAll(substitution);
}
if (!inReplacementSegment) {
builder.add(inline);
}
if (inReplacementSegment && inline == last) {
inReplacementSegment = false;
}
}
return builder.build();
}
}