I had a need for something exactly like this...long story but it had to do with javacc :)

Anyway, my open source project Keros (url is in my sig line) has a lot of this type of functionality...

I am enclosing my macrodef to compute a branch:

    <macrodef
        name        = "compute-branch"
description = "Compute the branch based upon a root dir, @{root}, and full path, @{full-path}. The branch represents the full path minus the root dir. Please note: if @{root} does not exist in @{full-path}, @{property} will be set with an empty value."
        uri         = "http://keros.sourceforge.net";>

<attribute name = "root" description = "The root of the path defined in @{full-path}."/> <attribute name = "full-path" description = "The absolute path for which @{root} is the root of the path and the branch computed is this path minus the root."/> <attribute name = "property" description = "The property to set with the branch."/> <attribute name = "description" default = "" description = "Information about this macro call."/>

        <sequential>
            <!--

                Grab data past @{root} in @{full-path}.

            -->
<ant-contrib:propertyregex property = "keros.compute-branch.COMPUTE_BRANCH" override = "true" input = "@{full-path}" regexp = "@{root}(.*)" select = "\1" description = "Parse out the branch from the value contained in @{root}"/>

            <!--

Remove the leading file separator (if it is there). If it is not there,
                simply use the value as is.

            -->
<ant-contrib:propertyregex property = "@{property}" override = "true" input = "${keros.compute-branch.COMPUTE_BRANCH}" regexp = "^[${file.separator}](.*)" replace = "\1" defaultValue = "${keros.compute-branch.COMPUTE_BRANCH}" description = "Remove the leading file separator if its there"/>
        </sequential>
    </macrodef>

I am using Ant Contrib's propertyregex task to do this... Adjust URI's, etc for your needs :)

Let me know if you have any questions...

HTH,

Flossy


On Fri, 16 Jan 2009, Georg-Johann Lay wrote:

Hi,

can anyone assist me in solving this following quite trivial problem?

Given a path A and the current directory B=. derermine B relative to A.
This is needed for prefixes in zipfileset.

In the special case that I am after B is a subdirectory (of some level)
of A. So gettig the relative path B-A means that A and B look like this:

A=<sting1>
B=<sting1><string2>

I wasted hours to figure out how this could be achieved... The regex
stuff is too complicated because dirs may contain special chars like
blanke, ., \, /, -, $ and even *.

How can I easily remove the prexix A from B? I bet it is a one-liner.

Are there low level string utilities like getting substrings, prefixes, etc?

Thanks in advance,

Georg-Johann



---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@ant.apache.org
For additional commands, e-mail: user-h...@ant.apache.org



Scot P. Floess
27 Lake Royale
Louisburg, NC  27549

252-478-8087 (Home)
919-754-4592 (Work)

Chief Architect JPlate   http://sourceforge.net/projects/jplate
Chief Architect JavaPIM  http://sourceforge.net/projects/javapim

Architect Keros          http://sourceforge.net/projects/keros

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@ant.apache.org
For additional commands, e-mail: user-h...@ant.apache.org

Reply via email to