From: Vincent Pit Date: Thu, 26 Feb 2009 15:35:08 +0000 (+0100) Subject: This is 1.03 X-Git-Tag: v1.03^0 X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FRegexp-Wildcards.git;a=commitdiff_plain;h=53943aeb9f826c841ac589a706679f18e2881ac4 This is 1.03 --- diff --git a/Changes b/Changes index 8c41c42..456b402 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,12 @@ Revision history for Regexp-Wildcards +1.03 2009-02-26 15:35 UTC + + Add : Translating both 'jokers' and 'sql' at the same time. + + Doc : Cleanups. + + Fix : The ->type forgot how to really accept $^O since the rewrite. + Reported by Bruce McKenzie in RT #43643. + + Upd : META.yml spec updated to 1.4. + 1.02 2008-08-23 09:15 UTC + Add : The 'anchor' metacharacter class. diff --git a/META.yml b/META.yml index cfa8e61..0aa78b6 100644 --- a/META.yml +++ b/META.yml @@ -1,19 +1,30 @@ --- #YAML:1.0 -name: Regexp-Wildcards -version: 1.02 -abstract: Converts wildcard expressions to Perl regular expressions. -license: perl -author: +name: Regexp-Wildcards +version: 1.03 +abstract: Converts wildcard expressions to Perl regular expressions. +author: - Vincent Pit -generated_by: ExtUtils::MakeMaker version 6.42 -distribution_type: module -requires: - Carp: 0 - Exporter: 0 - Text::Balanced: 0 -meta-spec: - url: http://module-build.sourceforge.net/META-spec-v1.3.html - version: 1.3 +license: perl +distribution_type: module +configure_requires: + ExtUtils::MakeMaker: 0 build_requires: - ExtUtils::MakeMaker: 0 - Test::More: 0 + ExtUtils::MakeMaker: 0 + Test::More: 0 +requires: + Carp: 0 + perl: 5.006 + Text::Balanced: 0 +resources: + bugtracker: http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Regexp-Wildcards + homepage: http://search.cpan.org/dist/Regexp-Wildcards/ + license: http://dev.perl.org/licenses/ + repository: http://git.profvince.com/perl/modules/Regexp-Wildcards.git +no_index: + directory: + - t + - inc +generated_by: ExtUtils::MakeMaker version 6.48 +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: 1.4 diff --git a/README b/README index 19cb5b7..6c12d59 100644 --- a/README +++ b/README @@ -3,7 +3,7 @@ NAME expressions. VERSION - Version 1.02 + Version 1.03 SYNOPSIS use Regexp::Wildcards; @@ -58,38 +58,50 @@ METHODS Specifies the list of metacharacters to convert or to prevent for escaping. They fit into six classes : - * 'jokers' converts "?" to "." and "*" to ".*" ; + * 'jokers' + + Converts "?" to "." and "*" to ".*". 'a**\\*b??\\?c' ==> 'a.*\\*b..\\?c' - * 'sql' converts "_" to "." and "%" to ".*" ; + * 'sql' + + Converts "_" to "." and "%" to ".*". 'a%%\\%b__\\_c' ==> 'a.*\\%b..\\_c' - * 'commas' converts all "," to "|" and puts the complete resulting - regular expression inside "(?: ... )" ; + * 'commas' + + Converts all "," to "|" and puts the complete resulting regular + expression inside "(?: ... )". 'a,b{c,d},e' ==> '(?:a|b\\{c|d\\}|e)' - * 'brackets' converts all matching "{ ... , ... }" brackets to "(?: - ... | ... )" alternations. If some brackets are unbalanced, it tries - to substitute as many of them as possible, and then escape the + * 'brackets' + + Converts all matching "{ ... , ... }" brackets to "(?: ... | ... )" + alternations. If some brackets are unbalanced, it tries to + substitute as many of them as possible, and then escape the remaining unmatched "{" and "}". Commas outside of any - bracket-delimited block are also escaped ; + bracket-delimited block are also escaped. 'a,b{c,d},e' ==> 'a\\,b(?:c|d)\\,e' '{a\\{b,c}d,e}' ==> '(?:a\\{b|c)d\\,e\\}' '{a{b,c\\}d,e}' ==> '\\{a\\{b\\,c\\}d\\,e\\}' - * 'groups' keeps the parenthesis "( ... )" of the original string - without escaping them. Currently, no check is done to ensure that - the parenthesis are matching. + * 'groups' + + Keeps the parenthesis "( ... )" of the original string without + escaping them. Currently, no check is done to ensure that the + parenthesis are matching. 'a(b(c))d\\(\\)' ==> (no change) - * 'anchors' prevents the *beginning-of-line* "^" and *end-of-line* "$" - anchors to be escaped. Since "[...]" character class are currently - escaped, a "^" will always be interpreted as *beginning-of-line*. + * 'anchors' + + Prevents the *beginning-of-line* "^" and *end-of-line* "$" anchors + to be escaped. Since "[...]" character class are currently escaped, + a "^" will always be interpreted as *beginning-of-line*. 'a^b$c' ==> (no change) @@ -116,40 +128,78 @@ METHODS $rw->do(rem => 'jokers'); # Specifying both 'sql' and 'jokers' is useless. $rw->do(); # Translate nothing. + The "do" method returns the Regexp::Wildcards object. + "type $type" Notifies to convert the metacharacters that corresponds to the - predefined type $type. $type can be any of 'jokers', 'sql', 'commas', - 'brackets', 'win32' or 'unix'. An unknown or undefined value defaults to - 'unix', except for 'dos', 'os2', 'MSWin32' and 'cygwin' that default to - 'win32'. This means that you can pass $^O as the $type and get the - corresponding shell behaviour. Returns the object. + predefined type $type. $type can be any of : + + * 'jokers', 'sql', 'commas', 'brackets' + + Singleton types that enable the corresponding "do" classes. + + * 'unix' + + Covers typical Unix shell globbing features (effectively 'jokers' + and 'brackets'). + + * $^O values for common Unix systems + + Wrap to 'unix' (see perlport for the list). + + * "undef" + + Defaults to 'unix'. + + * 'win32' + + Covers typical Windows shell globbing features (effectively 'jokers' + and 'commas'). + + * 'dos', 'os2', 'MSWin32', 'cygwin' + + Wrap to 'win32'. + + In particular, you can usually pass $^O as the $type and get the + corresponding shell behaviour. $rw->type('win32'); # Set type to win32. + $rw->type($^O); # Set type to unix on Unices and win32 on Windows $rw->type(); # Set type to unix. + The "type" method returns the Regexp::Wildcards object. + "capture [ $captures | set => $c1, add => $c2, rem => $c3 ]" Specifies the list of atoms to capture. This method works like "do", except that the classes are different : - * 'single' will capture all unescaped *"exactly one"* metacharacters, - i.e. "?" for wildcards or "_" for SQL ; + * 'single' + + Captures all unescaped *"exactly one"* metacharacters, i.e. "?" for + wildcards or "_" for SQL. 'a???b\\??' ==> 'a(.)(.)(.)b\\?(.)' 'a___b\\__' ==> 'a(.)(.)(.)b\\_(.)' - * 'any' will capture all unescaped *"any"* metacharacters, i.e. "*" - for wildcards or "%" for SQL ; + * 'any' + + Captures all unescaped *"any"* metacharacters, i.e. "*" for + wildcards or "%" for SQL. 'a***b\\**' ==> 'a(.*)b\\*(.*)' 'a%%%b\\%%' ==> 'a(.*)b\\%(.*)' - * 'greedy', when used in conjunction with 'any', will make the 'any' - captures greedy (by default they are not) ; + * 'greedy' + + When used in conjunction with 'any', it makes the 'any' captures + greedy (by default they are not). 'a***b\\**' ==> 'a(.*?)b\\*(.*?)' 'a%%%b\\%%' ==> 'a(.*?)b\\%(.*?)' - * 'brackets' will capture matching "{ ... , ... }" alternations. + * 'brackets' + + Capture matching "{ ... , ... }" alternations. 'a{b\\},\\{c}' ==> 'a(b\\}|\\{c)' @@ -159,12 +209,14 @@ METHODS $rw->capture(rem => 'greedy'); # No more greed please. $rw->capture(); # Capture nothing. + The "capture" method returns the Regexp::Wildcards object. + "convert $wc [ , $type ]" Converts the wildcard expression $wc into a regular expression according to the options stored into the Regexp::Wildcards object, or to $type if it's supplied. It successively escapes all unprotected regexp special characters that doesn't hold any meaning for wildcards, then replace - 'jokers' or 'sql' and 'commas' or 'brackets' (depending on the "do" or + 'jokers', 'sql' and 'commas' or 'brackets' (depending on the "do" or "type" options), all of this by applying the 'capture' rules specified in the constructor or by "capture". @@ -180,11 +232,13 @@ CAVEATS the file extension). For example, Windows XP shell matches *a like ".*a", "*a?" like ".*a.?", "*a??" like ".*a.{0,2}" and so on. +SEE ALSO + Text::Glob. + AUTHOR Vincent Pit, "", . - You can contact me by mail or on #perl @ FreeNode (vincent or - Prof_Vince). + You can contact me by mail or on "irc.perl.org" (vincent). BUGS Please report any bugs or feature requests to "bug-regexp-wildcards at @@ -202,7 +256,7 @@ SUPPORT . COPYRIGHT & LICENSE - Copyright 2007-2008 Vincent Pit, all rights reserved. + Copyright 2007-2009 Vincent Pit, all rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/lib/Regexp/Wildcards.pm b/lib/Regexp/Wildcards.pm index 1fad006..d0f9ab3 100644 --- a/lib/Regexp/Wildcards.pm +++ b/lib/Regexp/Wildcards.pm @@ -12,13 +12,13 @@ Regexp::Wildcards - Converts wildcard expressions to Perl regular expressions. =head1 VERSION -Version 1.02 +Version 1.03 =cut use vars qw/$VERSION/; BEGIN { - $VERSION = '1.02'; + $VERSION = '1.03'; } =head1 SYNOPSIS