Используйте муравей, чтобы обернуть HTML-код в статический шаблон - PullRequest
3 голосов
/ 20 ноября 2011

У меня есть несколько файлов HTML, расположенных в разных местах (в общем корне), например:

index.html
moduleA/list.html
moduleA/add.html
moduleB/list.html
moduleB/add.html
...

Кроме того, у меня есть один файл с именем _template.html, который содержит HTML-код и заполнитель #CONTENT#. Что мне нужно:

  1. Скопируйте все HTML-файлы в публичный каталог / каталог
  2. Каждый файл HTML в каталоге public / должен также содержать код из _template.html, обернутый вокруг исходного содержимого.

Я использую ANT для копирования файлов, но не могу понять, как обернуть код шаблона вокруг кода ... Мой ANT-скрипт выглядит так:

<project default="build">
    <target name="build">
        <copy todir="${dir.intermediate}/temp">
            <fileset dir="${dir.source}" includes="**/*.html"/>
        </copy>
    </target>
</project>

Пример:

index.html

<div>This is the index-page</div>

_template.html

<html>
    <head><title>Page-Title</title></head>
    <body>
        #CONTENT#
    </body>
</html>

Должен сгенерировать выходной файл:

<html>
    <head><title>Page-Title</title></head>
    <body>
        <div>This is the index-page</div>
    </body>
</html>

Ответы [ 2 ]

2 голосов
/ 21 ноября 2011

Это вполне возможно с чистыми задачами ant:

Сначала используйте loadfile, чтобы загрузить строку «замены» в свойство:

<loadfile property="replacement" srcFile="index.html"/>

Затем, после копирования шаблона, где-то, где последнийфайл будет делать это:

<replaceregexp file="${my.final.file}"
               match="#CONTENT#"
               replace="${replacement}"
/>

Вот и все, теперь ваш файл должен быть желаемым:)

0 голосов
/ 21 ноября 2011

Один из возможных способов обхода, если вы хотите придерживаться встроенных задач ant, - разделить файл шаблона на два файла, раздел «pre», например:

<html>
  <head><title>Page-Title</title></head>
  <body>

и раздел "пост", подобный этому:

  </body>
</html>

Тогда вы можете использовать concatfilter в filterchain внутри вашей задачи copy:

<copy todir="${dir.intermediate}/temp">
  <fileset dir="${dir.source}" includes="**/*.html"/>
  <filterchain>
    <concatfilter prepend="src/_template_pre.html" append="src/_template_post.html" />
  </filterchain>
</copy>

Я не вижу способа сделать это с одним файлом шаблона, не используя что-то вроде ant-contrib или скриптов.

...