Заменить совпадения регулярных выражений в файле с динамическим содержимым - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть файл, который выглядит примерно так:

// run script Y
#include ./relativePath/to/script.y

// run script Z
#include ./relativePath/to/script/z.z

// etc.

Я хотел бы, чтобы ANT взял этот файл и заменил все включения фактическим содержимым файлов, на которые указываетпо директиве #include относительно самого файла.Я ищу около replaceregexp, но не получаю много радости.

Может кто-нибудь направить меня в сторону, чтобы посмотреть?

TIA

Ответы [ 2 ]

1 голос
/ 08 февраля 2012

Я не нашел идеального способа сделать это. Однако я нашел решение, соответствующее моим потребностям.

Вместо того, чтобы начинать с одного исходного файла и пытаться выяснить, какие файлы заменить, я перебрал файлы, которые, как я знал, могут быть включены, заменив «включенные» экземпляры их содержимым файла.

Что-то вроде:

<target name="fubar">
    ...

    <foreach target="injectFile" inheritall="true" param="include.file">
        <fileset dir="${src.dir}" casesensitive="yes" />
    </foreach>
</target>

<target name="injectFile">
    ... code that works out relative path of include file here ...

    <loadfile property="include.file.content" srcFile="${include.file}" />

    <replace file  = "${build.file}"
             token = "#include ${include.file.relative.path}"
             value = "${include.file.content}" />
</target>
0 голосов
/ 07 февраля 2012

Ваш синтаксис очень близок к препроцессору Си.Это решение поставить имена файлов в кавычки, например:

#include "./relativePath/to/script.y"

an, чтобы подать ваш файл в cpp:

cpp -o output inputfile 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...