[Dive4elements-commits] [PATCH 2 of 3] Add dc:replace function for datacage

Wald Commits scm-commit at wald.intevation.org
Thu Apr 4 16:08:14 CEST 2013


# HG changeset patch
# User Andre Heinecke <aheinecke at intevation.de>
# Date 1365084444 -7200
# Node ID f8a4ee86d2765bd03dcde9ff061671f0065b723a
# Parent  ccda0a49a97f199b04e7ef76a1fb5365360e6758
Add dc:replace function for datacage

diff -r ccda0a49a97f -r f8a4ee86d276 flys-artifacts/src/main/java/de/intevation/flys/artifacts/datacage/templating/FunctionResolver.java
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/datacage/templating/FunctionResolver.java	Thu Apr 04 16:07:02 2013 +0200
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/datacage/templating/FunctionResolver.java	Thu Apr 04 16:07:24 2013 +0200
@@ -75,6 +75,13 @@
             }
         });
 
+        addFunction("replace", 3, new XPathFunction() {
+            @Override
+            public Object evaluate(List args) throws XPathFunctionException {
+                return replace(args);
+            }
+        });
+
         addFunction("has-result", 0, new XPathFunction() {
             @Override
             public Object evaluate(List args) throws XPathFunctionException {
@@ -251,5 +258,23 @@
             return 99999d;
         }
     }
+
+    /** Implementation for doing a string replace
+     *  dc:replace
+     */
+    public Object replace(List args) throws XPathFunctionException {
+        Object haystack    = args.get(0);
+        Object needle      = args.get(1);
+        Object replacement = args.get(2);
+
+        if (needle instanceof String &&
+            haystack instanceof String &&
+            replacement instanceof String) {
+            return ((String)haystack).replace(
+                    (String)needle, (String)replacement);
+        } else {
+            return haystack;
+        }
+    }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :


More information about the Dive4elements-commits mailing list