Mercurial > hg > octave-nkf
annotate scripts/strings/regexptranslate.m @ 12744:343eca0298d0 stable
maint: fix version number for stable branch
* configure.ac (AC_INIT): Correct stable branch version number.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 15 Jun 2011 09:39:23 -0400 |
parents | 0ee8d7d60c82 |
children | 8a124aeb7ded |
rev | line source |
---|---|
11523 | 1 ## Copyright (C) 2008-2011 David Bateman |
7629
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
2 ## |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
3 ## This file is part of Octave. |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
4 ## |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
5 ## Octave is free software; you can redistribute it and/or modify it |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
6 ## under the terms of the GNU General Public License as published by |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
7 ## the Free Software Foundation; either version 3 of the License, or (at |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
8 ## your option) any later version. |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
9 ## |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
10 ## Octave is distributed in the hope that it will be useful, but |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
13 ## General Public License for more details. |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
14 ## |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
15 ## You should have received a copy of the GNU General Public License |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
16 ## along with Octave; see the file COPYING. If not, see |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
17 ## <http://www.gnu.org/licenses/>. |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
18 |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
19 ## -*- texinfo -*- |
7983 | 20 ## @deftypefn {Function File} {} regexptranslate (@var{op}, @var{s}) |
9036
58604c45ca74
Cleanup of data types related documentation
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
21 ## Translate a string for use in a regular expression. This might |
7983 | 22 ## include either wildcard replacement or special character escaping. |
23 ## The behavior can be controlled by the @var{op} that can have the | |
24 ## values | |
25 ## | |
26 ## @table @asis | |
27 ## @item "wildcard" | |
28 ## The wildcard characters @code{.}, @code{*} and @code{?} are replaced | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
29 ## with wildcards that are appropriate for a regular expression. |
9036
58604c45ca74
Cleanup of data types related documentation
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
30 ## For example: |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
31 ## |
8442
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7983
diff
changeset
|
32 ## @example |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7983
diff
changeset
|
33 ## @group |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7983
diff
changeset
|
34 ## regexptranslate ("wildcard", "*.m") |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7983
diff
changeset
|
35 ## @result{} ".*\.m" |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7983
diff
changeset
|
36 ## @end group |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7983
diff
changeset
|
37 ## @end example |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
38 ## |
7983 | 39 ## @item "escape" |
40 ## The characters @code{$.?[]}, that have special meaning for regular | |
9036
58604c45ca74
Cleanup of data types related documentation
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
41 ## expressions are escaped so that they are treated literally. For example: |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
42 ## |
8442
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7983
diff
changeset
|
43 ## @example |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7983
diff
changeset
|
44 ## @group |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7983
diff
changeset
|
45 ## regexptranslate ("escape", "12.5") |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7983
diff
changeset
|
46 ## @result{} "12\.5" |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7983
diff
changeset
|
47 ## @end group |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7983
diff
changeset
|
48 ## @end example |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
49 ## |
7983 | 50 ## @end table |
8442
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7983
diff
changeset
|
51 ## @seealso{regexp, regexpi, regexprep} |
7629
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
52 ## @end deftypefn |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
53 |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
54 function y = regexptranslate (op, s) |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
55 |
8442
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7983
diff
changeset
|
56 if nargin != 2 |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7983
diff
changeset
|
57 print_usage (); |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
58 endif |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
59 |
7629
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
60 if (ischar (op)) |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
61 op = tolower (op); |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
62 if (strcmp ("wildcard", op)) |
12469
0ee8d7d60c82
Use single quotes around regexp patterns.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
63 y = regexprep (regexprep (regexprep (s, '\.', '\.'), '\*', |
0ee8d7d60c82
Use single quotes around regexp patterns.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
64 '.*'), '\?', '.'); |
7629
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
65 elseif (strcmp ("escape", op)) |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
66 ch = {'\$', '\.', '\?', '\[', '\]'}; |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
67 y = s; |
7629
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
68 for i = 1 : length (ch) |
10549 | 69 y = regexprep (y, ch{i}, ch{i}); |
7629
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
70 endfor |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
71 else |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
72 error ("regexptranslate: unexpected operation"); |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
73 endif |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
74 else |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
75 error ("regexptranslate: expecting operation to be a string"); |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
76 endif |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
77 endfunction |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
78 |
8442
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7983
diff
changeset
|
79 %!error <Invalid call to regexptranslate> regexptranslate (); |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7983
diff
changeset
|
80 %!error <Invalid call to regexptranslate> regexptranslate ("wildcard"); |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7983
diff
changeset
|
81 %!error <Invalid call to regexptranslate> regexptranslate ("a", "b", "c"); |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7983
diff
changeset
|
82 %!error <unexpected operation> regexptranslate ("foo", "abc"); |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7983
diff
changeset
|
83 %!error <expecting operation to be a string> regexptranslate (10, "abc"); |
7629
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
84 %!assert (regexptranslate ("wildcard", "/a*b?c."), "/a.*b.c\\.") |
cc31c5002c96
Add the regexptranslate function
David Bateman <dbateman@free.fr>
parents:
diff
changeset
|
85 %!assert (regexptranslate ("escape", '$.?[]'), '\$\.\?\[\]') |