2011-08-01 72 views
1

我有一個CSS文件用於測試。它@imports我所有的樣式表:使用Ant RegEx查找引用的CSS文件,然後將該列表用作FileSet

@import "css/structure.css" 
@import "css/typography.css" 
@import "css/forms.css" 

這讓我試造型和變化,但你從來沒有想活的方式。當我「建立」這個項目時,我想找到所有這些引用(RegEx css /(.* ?. css)),然後使用該列表作爲FileSet進行合併和壓縮。

合併和壓縮奇怪的是最簡單的部分。我完全喪失瞭如何使用RegEx來構建我的FileSet。

如果我必須去一個.properties文件,我會的,但我希望有一些可以更自動化的東西。

欣賞任何想法...

-Nate

回答

0

是標準的文件通配符不工作?您是否嘗試過:

<fileset dir="${resource.dir}" casesensitive="yes"> 
    <include name="**/*.css"/> 
</fileset> 

查看FileSet Type documentation瞭解更多信息。

+0

這對於我正在做的很多事情都很好,但對於CSS和JS文件,它們需要按照一定的順序加載。我見過的所有例子都列在一個屬性文件中,這很好,這只是雙重工作。我們已經列出了它們,爲了保證這些數據,我希望能夠抓住這些數據。 – nathanziarek

0

我遠遠地不是一個偉大的RegEx'er,但我想我找到了我的解決方案:

我創造了我的加載主文件styles.css的目標,從它和地方刮的各個文件這一切在一個逗號分隔的屬性:

<!-- Get CSS Filelist --> 
<target name="get.css"> 
    <loadfile property="list-temp.css" srcFile="${source_dev}/css/styles.css"/> 
    <propertyregex property="list-temp2.css" input="${list-temp.css}" regexp='[\s|.]*[email protected] url\("(.*?)"\);\s' replace="\1," casesensitive="false" global="true" /> 
    <propertyregex property="list-temp3.css" input="${list-temp2.css}" regexp=',$' replace="" casesensitive="false" global="true" /> 
    <propertyregex property="list.css" input="${list-temp3.css}" regexp='/\*.*?\*/' replace="" casesensitive="false" global="true" /> 
    <echo>${list.css}</echo> 
</target> 

導致$ {list.css} = 「one.css,two.css,structure.css,etc.css」 我可以那麼作爲使用文件列表/文件集。

這不是很漂亮,但它的工作原理。我希望我可以將RegEx重寫爲更強大的內容(現在,您忘記了分號或使用單引號並且它已被破壞)......但是乞丐無法成爲選擇器!

感謝您的幫助hoipolloi!

nz

相關問題