POLS ANT file pattern in Ruby

R

Robert Dawson

This is a multi-part message in MIME format.

------=_NextPart_000_094E_01C39585.7A570C60
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hi,

I am returning to a bit of Ruby hacking after spending a couple of years =
away from it. I met someone who is newer to Ruby and caught some of =
their excitement for it (Hi Dan).=20

My day job has me writing Java code. As many of you will know the =
default build tool for Java projects is ANT. ANT is a step forward from =
the pre-ANT world, but has problems -- one of the big ones is that it is =
XML based, and thus verbose. XML as good as YAML for data, and not as =
good as Ruby for programming :). =20

Dan and I were talking about building a Ruby replacement for ANT. One =
week-end we both decided to start writing it, and came up with =
test-cases.. Dan came up with a name (BOB), and there is now a piece of =
vapourware.

My test cases are to do with ANT FileSetish behavour.

Ant has some interesting globbing functionality that works very similar =
to File::fnmatch, but slightly different.

I like the ant way, but don't want to suprise Ruby people.

Here is the test cases that talk about the behaviour I want.

File.fnmatch would provide similar functionality (with =
File::FNM_PATHNAME it comes really close), except I don't see that the =
last test could past easily.

Before I make the last test pass, I want to know if Ruby people would =
find the behaviour described to be suprising?

matcher =3D FilePatternMatcher.new
assert(matcher.match("test.txt", "test.txt"))
assert(matcher.match("test.txt", "*"))
assert(matcher.match("second.txt", "*"))
assert(matcher.match("test.txt", "*.txt"), "*.txt should match =
test.txt")
matcher =3D FilePatternMatcher.new
assert(matcher.match("test.txt", "test.*"), "test.* should match =
test.txt")
assert(!matcher.match("somedirectory/test.txt", "*.txt"), "*.txt =
should not match somedirectory/test.txt")
assert(!matcher.match("test.txt", "*.doc"))
assert(matcher.match("first/second/test.txt", "**/test.txt"))
=
assert(!matcher.match("first/second/third/fourth/fifth/test.txt", =
"**/third/*/test.txt"))


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.522 / Virus Database: 320 - Release Date: 30/09/2003
------=_NextPart_000_094E_01C39585.7A570C60
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2800.1264" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Hi,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>I am returning to a bit of Ruby hacking =
after=20
spending a couple of years away from it.&nbsp; I met someone who is =
newer to=20
Ruby and caught some of their excitement for it (Hi Dan). </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>My day job has me writing Java =
code.&nbsp; As many=20
of you will know the default build tool for Java projects is ANT.&nbsp; =
ANT is a=20
step forward from the pre-ANT world, but has problems -- one of the big =
ones is=20
that it is XML based, and thus verbose.&nbsp; XML as good as YAML for =
data, and=20
not as good as Ruby for programming :).&nbsp; </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Dan and I were talking about building a =
Ruby=20
replacement for ANT.&nbsp; One week-end we both decided to start writing =
it, and=20
came up with test-cases.. Dan came up with a name (BOB), and there is =
now a=20
piece of vapourware.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>My test cases are to do with ANT =
FileSetish=20
behavour.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Ant has some interesting globbing =
functionality=20
that works very similar to File::fnmatch, but slightly =
different.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>I like the ant way, but don't want to =
suprise Ruby=20
people.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Here is the test cases that talk about =
the=20
behaviour I want.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>File.fnmatch would provide similar =
functionality=20
(with File::FNM_PATHNAME it comes really close), except I don't see that =
the=20
last test could past easily.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Before I make the last test pass, I =
want to know if=20
Ruby people would find the behaviour described to be =
suprising?</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial =
size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; matcher=20
=3D FilePatternMatcher.new<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =

assert(matcher.match("test.txt",=20
"test.txt"))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
assert(matcher.match("test.txt",=20
"*"))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
assert(matcher.match("second.txt", "*"))<BR></FONT><FONT face=3DArial=20
size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
assert(matcher.match("test.txt", "*.txt"),&nbsp; "*.txt should match=20
test.txt")<BR></FONT><FONT face=3DArial=20
size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; matcher =3D=20
FilePatternMatcher.new<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
assert(matcher.match("test.txt", "test.*"), "test.* should match=20
test.txt")<BR></FONT><FONT face=3DArial=20
size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
assert(!matcher.match("somedirectory/test.txt", "*.txt"),&nbsp;"*.txt =
should not=20
match somedirectory/test.txt")<BR></FONT><FONT face=3DArial=20
size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
assert(!matcher.match("test.txt", "*.doc"))<BR></FONT><FONT face=3DArial =

size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
assert(matcher.match("first/second/test.txt", =
"**/test.txt"))<BR></FONT><FONT=20
face=3DArial size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
assert(!matcher.match("first/second/third/fourth/fifth/test.txt",=20
"**/third/*/test.txt"))</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><BR>---<BR>Outgoing mail is certified =
Virus=20
Free.<BR>Checked by AVG anti-virus system (<A=20
href=3D"http://www.grisoft.com">http://www.grisoft.com</A>).<BR>Version: =
6.0.522 /=20
Virus Database: 320 - Release Date: =
30/09/2003</FONT></DIV></BODY></HTML>

------=_NextPart_000_094E_01C39585.7A570C60--
 
R

Rasputin

* Robert Dawson said:
Hi,

I am returning to a bit of Ruby hacking after spending a couple of years away from it. I met someone who is newer to Ruby and caught some of their excitement for it (Hi Dan).
My day job has me writing Java code. As many of you will know the default build tool for Java projects is ANT. ANT is a step forward from the pre-ANT world, but has problems -- one of the big ones is that it is XML based, and thus verbose. XML as good as YAML for data, and not as good as Ruby for programming :).


Good luck with this - I was talking only yesterday about
how easy life could be with a tool with the power of ant
tasks and the simplicity of Ruby and YAML - I'm never using
XML again if I can help it, since I got RSI.

Let us know if something turns up on RubyForge!
 
J

Jim Weirich

Dan and I were talking about building a Ruby replacement for ANT. One week-end
we both decided to start writing it, and came up with test-cases.. Dan
came up with a name (BOB), and there is now a piece of vapourware.

You might want to take a look at Rake
(http://onestepback.org/software/rake for now, I'm in the process of
moving to RubyForge).

Rake was based on Make rather than Ant, but once you throw away Make's
weird tab syntax and Ant's XML syntax, the underlying functionality
would probably be pretty close.

Let me know if you are interested in colaborating.
 
J

Jason Creighton

You might want to take a look at Rake

I second this. Rake is very cool. (I thought you might want an opinion
from someone other than the author. :) )

Jason Creighton
 
M

Martin DeMello

Jason Creighton said:
I second this. Rake is very cool. (I thought you might want an opinion
from someone other than the author. :) )

Has anyone ported a complicated makefile over to rake? That would make
the basis of a good article, I think.

martin
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top