Mercurial > public > html2wiki
comparison src/org/nwoca/ssdt/tools/html2wiki/ReplaceTransformer.java @ 11:8f23347884c0
Deal with double dashes surrounded by words. ReplaceTransformer can now replace specific group.
author | smith@nwoca.org |
---|---|
date | Fri, 28 Jan 2011 13:57:25 -0500 |
parents | 22ed6d93442c |
children |
comparison
equal
deleted
inserted
replaced
10:2fb5084b1564 | 11:8f23347884c0 |
---|---|
4 | 4 |
5 class ReplaceTransformer implements Transformer { | 5 class ReplaceTransformer implements Transformer { |
6 | 6 |
7 private Pattern replace; | 7 private Pattern replace; |
8 private String replacement; | 8 private String replacement; |
9 | 9 private int replaceGroup; |
10 | |
11 /** | |
12 * ReplaceTransform to replace the entire regex. | |
13 * | |
14 * @param regex | |
15 * @param replacement | |
16 */ | |
10 public ReplaceTransformer(String regex, String replacement) { | 17 public ReplaceTransformer(String regex, String replacement) { |
18 this(regex,replacement,0); | |
19 } | |
20 /** | |
21 * ReplaceTransform to replace a specific group in the Regex. | |
22 * | |
23 * @param regex | |
24 * @param replacement | |
25 * @param replaceGroup group to replace | |
26 */ | |
27 | |
28 public ReplaceTransformer(String regex, String replacement, int replaceGroup) { | |
11 replace = Pattern.compile(regex); | 29 replace = Pattern.compile(regex); |
12 this.replacement = replacement; | 30 this.replacement = replacement; |
13 | 31 this.replaceGroup = replaceGroup; |
14 } | 32 } |
33 | |
15 public void apply(StringBuffer buffer) { | 34 public void apply(StringBuffer buffer) { |
16 Matcher matcher = replace.matcher(buffer); | 35 Matcher matcher = replace.matcher(buffer); |
17 | 36 |
18 boolean first = true; | 37 int start = 0; |
19 while (matcher.find(first ? 0 : matcher.start() + replacement.length())) { | 38 while (matcher.find(start)) { |
20 buffer.replace(matcher.start(),matcher.end(),replacement); | 39 if (replaceGroup == 0) { |
21 first = false; | 40 buffer.replace(matcher.start(),matcher.end(),replacement); |
41 start = matcher.start() + replacement.length(); | |
42 } else { | |
43 String t = ""; | |
44 for (int i = 1; i < matcher.groupCount() + 1 ; i++) { | |
45 if (i != replaceGroup) { | |
46 t += matcher.group(i); | |
47 } else { | |
48 t += replacement; | |
49 } | |
50 } | |
51 buffer.replace(matcher.start(),matcher.end(),t); | |
52 start = matcher.start() + t.length(); | |
53 } | |
22 } | 54 } |
23 } | 55 } |
24 | 56 |
25 public String toString() { | 57 public String toString() { |
26 return "Replace: " + replace.pattern() + " with " +replacement; | 58 return "Replace: " + replace.pattern() + " with " +replacement; |