Skip to content

Commit b004dbb

Browse files
author
mgeipel
committed
Merge branch 'master' of ssh://[email protected]/culturegraph/metafacture-core.git
2 parents 8e9ac20 + d78aca1 commit b004dbb

File tree

3 files changed

+58
-6
lines changed

3 files changed

+58
-6
lines changed

src/main/java/org/culturegraph/mf/morph/functions/Regexp.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,21 +42,29 @@ public void receive(final String name, final String value, final NamedValueSourc
4242
matcher.reset(value);
4343
if (null == format) {
4444
while (matcher.find()) {
45-
getNamedValueReceiver().receive(name, matcher.group(), source, recordCount, entityCount);
45+
final String group = matcher.group();
46+
if (!group.isEmpty()) {
47+
getNamedValueReceiver().receive(name, group, source, recordCount, entityCount);
48+
}
4649
}
4750
} else {
4851
while (matcher.find()) {
49-
getNamedValueReceiver().receive(name, matchAndFormat(), source, recordCount, entityCount);
52+
populateVars();
53+
if (!tempVars.isEmpty()) {
54+
getNamedValueReceiver().receive(name,
55+
StringUtil.format(format, tempVars), source, recordCount, entityCount);
56+
}
5057
}
5158
}
5259
}
5360

54-
private String matchAndFormat() {
61+
private void populateVars() {
5562
tempVars.clear();
5663
for (int i = 0; i <= matcher.groupCount(); ++i) {
57-
tempVars.put(String.valueOf(i), matcher.group(i));
64+
if (!matcher.group(i).isEmpty()) {
65+
tempVars.put(String.valueOf(i), matcher.group(i));
66+
}
5867
}
59-
return StringUtil.format(format, tempVars);
6068
}
6169

6270
/**

src/test/java/org/culturegraph/mf/morph/functions/FunctionTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,5 @@
2424
* @author Markus Michael Geipel
2525
*/
2626
@RunWith(TestSuite.class)
27-
@TestDefinitions({"Basic.xml","Lookup.xml","Stateful.xml", "Unique.xml", "Misc.xml", "Script.xml"})
27+
@TestDefinitions({"Basic.xml","Lookup.xml","Stateful.xml", "Unique.xml", "Misc.xml", "Script.xml", "Regexp.xml"})
2828
public final class FunctionTest {/*bind to xml test*/}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<metamorph-test version="1.0"
3+
xmlns="http://www.culturegraph.org/metamorph-test" xmlns:cgxml="http://www.culturegraph.org/cgxml"
4+
xmlns:mm="http://www.culturegraph.org/metamorph">
5+
<test-case name="Regexp function">
6+
<input type="text/x-cg+xml">
7+
<cgxml:cgxml version="1.0">
8+
<cgxml:records>
9+
<cgxml:record id="1">
10+
<cgxml:entity name="001">
11+
<cgxml:literal name="" value="184000" />
12+
</cgxml:entity>
13+
</cgxml:record>
14+
</cgxml:records>
15+
</cgxml:cgxml>
16+
</input>
17+
<transformation type="text/x-metamorph+xml">
18+
<mm:metamorph version="1">
19+
<mm:rules>
20+
<mm:data source="001." name="subject">
21+
<mm:regexp match=".*" format="resource:P${0}" />
22+
</mm:data>
23+
<mm:data source="001." name="subject">
24+
<mm:regexp match=".*" format="${1}"/>
25+
</mm:data>
26+
<mm:data source="001." name="subject">
27+
<mm:regexp match=".*" />
28+
</mm:data>
29+
</mm:rules>
30+
</mm:metamorph>
31+
</transformation>
32+
<result type="text/x-cg+xml">
33+
<cgxml:cgxml version="1.0">
34+
<cgxml:records>
35+
<cgxml:record id="1">
36+
<cgxml:literal name="subject" value="resource:P184000" />
37+
<cgxml:literal name="subject" value="" />
38+
<cgxml:literal name="subject" value="184000" />
39+
</cgxml:record>
40+
</cgxml:records>
41+
</cgxml:cgxml>
42+
</result>
43+
</test-case>
44+
</metamorph-test>

0 commit comments

Comments
 (0)