package com.baidu.disconf.web.common.comparator; import java.io.IOException; import java.util.ArrayList; import java.util.List; import com.github.knightliao.apollo.utils.common.StringUtil; import difflib.Delta; import difflib.DiffUtils; import difflib.Patch; /** * @author knightliao */ public class StringComparator extends CommonComparator { private final String original; private final String revised; public StringComparator(String original, String revised) { this.original = original; this.revised = revised; } protected List<Delta> getDeltas() throws IOException { final List<String> originalFileLines = StringToLines(original); final List<String> revisedFileLines = StringToLines(revised); final Patch patch = DiffUtils.diff(originalFileLines, revisedFileLines); return patch.getDeltas(); } private List<String> StringToLines(String data) throws IOException { if (data == null || data.isEmpty()) { return new ArrayList<String>(); } List<String> lines = StringUtil.parseStringToStringList(data, "\\r?\\n"); if (lines == null) { lines = new ArrayList<String>(); } return lines; } }