package jetbrains.mps.vcs.core.mergedriver;
/*Generated by MPS */
import org.jetbrains.annotations.Nullable;
import jetbrains.mps.baseLanguage.tuples.runtime.Tuples;
import jetbrains.mps.baseLanguage.tuples.runtime.MultiTuple;
import jetbrains.mps.util.FileUtil;
/*package*/ class SimpleMerger extends AbstractContentMerger {
/*package*/ SimpleMerger() {
}
@Nullable
@Override
public Tuples._2<Integer, byte[]> mergeContents(FileContent baseContent, FileContent localContent, FileContent latestContent) {
String baseAsString = contentAsString(baseContent);
String localAsString = contentAsString(localContent);
String latestAsString = contentAsString(latestContent);
if (baseAsString.equals(localAsString)) {
return MultiTuple.<Integer,byte[]>from(MERGED, latestContent.getData());
}
if (baseAsString.equals(latestAsString) || localAsString.equals(latestAsString)) {
return MultiTuple.<Integer,byte[]>from(MERGED, localContent.getData());
}
return MultiTuple.<Integer,byte[]>from(CONFLICTS, localContent.getData());
}
private static String contentAsString(FileContent content) {
return new String(content.getData(), FileUtil.DEFAULT_CHARSET).replace("\r\n", "\n");
}
}