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"); } }