POLS ANT file pattern in Ruby

Discussion in 'Ruby' started by Robert Dawson, Oct 18, 2003.

  1. 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--
     
    Robert Dawson, Oct 18, 2003
    #1
    1. Advertising

  2. Robert Dawson

    Rasputin Guest

    * Robert Dawson <> [1008 15:08]:
    > 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!

    --
    I'm going to Boston to see my doctor. He's a very sick man.
    -- Fred Allen
    Rasputin :: Jack of All Trades - Master of Nuns
     
    Rasputin, Oct 18, 2003
    #2
    1. Advertising

  3. Robert Dawson

    Jim Weirich Guest

    Have You Seen Rake?

    On Sat, 2003-10-18 at 10:06, Robert Dawson wrote:
    > 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.

    --
    -- Jim Weirich http://onestepback.org
    -----------------------------------------------------------------
    "Beware of bugs in the above code; I have only proved it correct,
    not tried it." -- Donald Knuth (in a memo to Peter van Emde Boas)
     
    Jim Weirich, Oct 18, 2003
    #3
  4. Re: Have You Seen Rake?

    On Sun, 19 Oct 2003 06:54:31 +0900
    Jim Weirich <> wrote:

    > On Sat, 2003-10-18 at 10:06, Robert Dawson wrote:
    > > 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


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

    Jason Creighton
     
    Jason Creighton, Oct 18, 2003
    #4
  5. Re: Have You Seen Rake?

    Jason Creighton <> wrote:
    > On Sun, 19 Oct 2003 06:54:31 +0900
    > Jim Weirich <> wrote:
    >
    >> On Sat, 2003-10-18 at 10:06, Robert Dawson wrote:
    >> > 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

    >
    > 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
     
    Martin DeMello, Oct 20, 2003
    #5
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    2
    Views:
    1,178
    Alex Hunsley
    Nov 26, 2003
  2. Ara.T.Howard

    POLS - exception comparisons

    Ara.T.Howard, Aug 24, 2004, in forum: Ruby
    Replies:
    12
    Views:
    185
  3. Josef 'Jupp' SCHUGT

    Suggestion: Add definition of "POLS" to FAQ

    Josef 'Jupp' SCHUGT, Jun 2, 2005, in forum: Ruby
    Replies:
    0
    Views:
    123
    Josef 'Jupp' SCHUGT
    Jun 2, 2005
  4. Robert Feldt
    Replies:
    3
    Views:
    125
    Andrew Johnson
    Mar 21, 2006
  5. Saku Ytti
    Replies:
    23
    Views:
    371
    Robert Klemme
    Apr 14, 2008
Loading...

Share This Page