All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.walkmod.javalang.patchs.Patches Maven / Gradle / Ivy

Go to download

Walkmod plugin to support the Java 8 programming language. It contains helper visitors, a walker and a basic code writer.

There is a newer version: 3.0.6
Show newest version
package org.walkmod.javalang.patchs;

import java.io.File;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

import difflib.DiffUtils;
import difflib.Patch;
import difflib.PatchFailedException;

public class Patches {

   public static String generatePatch(String originalText, String text, String location) {
      List original = Arrays.asList(originalText.split("\n"));
      List revised = Arrays.asList(text.split("\n"));

      Patch patches = DiffUtils.diff(original, revised);
      List unifiedDiffs = DiffUtils.generateUnifiedDiff("a" + File.separator + location,
            "b" + File.separator + location, original, patches, 4);
      Iterator it = unifiedDiffs.iterator();

      StringBuffer sb = new StringBuffer();
      while (it.hasNext()) {
         sb.append(it.next());
         if (it.hasNext()) {
            sb.append('\n');
         }
      }
      return sb.toString();
   }
   
   public static String applyPatch(String text, String patch) throws PatchFailedException{
      List original = Arrays.asList(text.split("\n"));
      List diff = Arrays.asList(patch.split("\n"));
      
      Patch generatedPatch = DiffUtils.parseUnifiedDiff(diff);
      Iterator it = DiffUtils.patch(original, generatedPatch).iterator();
      StringBuffer sb = new StringBuffer();
      while (it.hasNext()) {
         sb.append(it.next());
         if (it.hasNext()) {
            sb.append('\n');
         }
      }
      return sb.toString();
   }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy