Rev 12174 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 12174 | Rev 17228 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | !! +exec+ +var+ +string+ |
1 | !! +exec+ +var+ +string+ |
2 | tit:text |
2 | tit:text |
3 | type:$type_both |
3 | type:$type_both |
4 | syntax:!text ``operation'' ``parameter'' |
4 | syntax:!text ``operation'' ``parameter'' |
5 | mean:This is intended to be a very powerful text manipulation tool,\ |
5 | mean:This is intended to be a very powerful text manipulation tool,\ |
6 | allowing very sophisticated processing of long text strings with high speed. <br |
6 | allowing very sophisticated processing of long text strings with high speed. <br>\ |
7 | Many of the ``operations'' accept masks. A mask is a string composed of ``0''s and ``1''s. \ |
7 | Many of the ``operations'' accept masks. A mask is a string composed of ``0''s and ``1''s. \ |
8 | For operations which accept a mask, only characters at positions whose corresponding\ |
8 | For operations which accept a mask, only characters at positions whose corresponding\ |
9 | character in the mask is not a ``0'' are processed. (In this sense positions\ |
9 | character in the mask is not a ``0'' are processed. (In this sense positions\ |
10 | corresponding to ``0''s are ``masked''.) Empty mask is considered\ |
10 | corresponding to ``0''s are ``masked''.) Empty mask is considered\ |
11 | as of being entirely composed of ``1''s. <br |
11 | as of being entirely composed of ``1''s. <br>\ |
12 | A mask which is too short repeats itself, unless it terminates with a ``+'',\ |
12 | A mask which is too short repeats itself, unless it terminates with a ``+'',\ |
13 | in which case it fills the rest with ``1''s, or with a ``-'', in which case\ |
13 | in which case it fills the rest with ``1''s, or with a ``-'', in which case\ |
14 | it fills the rest with ``0''s. <br |
14 | it fills the rest with ``0''s. <br>\ |
15 | For the time being, implemented ``operations'' are as follows.\ |
15 | For the time being, implemented ``operations'' are as follows.\ |
16 | <ul>\ |
16 | <ul>\ |
17 | <li><span class="tt">!text common ``text1'' and ``text2'' [mask ``maskstring'']</span> <br |
17 | <li><span class="tt">!text common ``text1'' and ``text2'' [mask ``maskstring'']</span> <br>\ |
18 | Extracts characters in ``text1'' one by one, for those identical\ |
18 | Extracts characters in ``text1'' one by one, for those identical\ |
19 | to the corresponding characters in ``text2'' and whose\ |
19 | to the corresponding characters in ``text2'' and whose\ |
20 | positions are not masked by ``maskstring''.\ |
20 | positions are not masked by ``maskstring''.\ |
21 | </li><li><span class="tt">!text compare ``text1'' and ``text2''\ |
21 | </li><li><span class="tt">!text compare ``text1'' and ``text2''\ |
22 | </span> <br |
22 | </span> <br>\ |
23 | Compares the strings ``text1'' and ``text2'' character by character, \ |
23 | Compares the strings ``text1'' and ``text2'' character by character, \ |
24 | and returns a mask string with ``0''s on positions where the corresponding characters in ``text1''\ |
24 | and returns a mask string with ``0''s on positions where the corresponding characters in ``text1''\ |
25 | and ``text2'' are equal, and ``1''s otherwise.\ |
25 | and ``text2'' are equal, and ``1''s otherwise.\ |
26 | </li><li><span class="tt">!text copy ``text'' [mask ``maskstring'']</span> <br |
26 | </li><li><span class="tt">!text copy ``text'' [mask ``maskstring'']</span> <br>\ |
27 | Returns non-masked characters in ``text''.\ |
27 | Returns non-masked characters in ``text''.\ |
28 | </li><li><span class="tt">!text count ``charlist'' in ``text'' [mask ``maskstring'']</span> <br |
28 | </li><li><span class="tt">!text count ``charlist'' in ``text'' [mask ``maskstring'']</span> <br>\ |
29 | Returns the number of characters in ``text'' whose positions\ |
29 | Returns the number of characters in ``text'' whose positions\ |
30 | are not masked by ``maskstring'', and who appear in ``charlist''.\ |
30 | are not masked by ``maskstring'', and who appear in ``charlist''.\ |
31 | </li><li><span class="tt">!text diff ``text1'' from ``text2'' [mask ``maskstring'']</span> <br |
31 | </li><li><span class="tt">!text diff ``text1'' from ``text2'' [mask ``maskstring'']</span> <br>\ |
32 | Extracts characters in ``text1'' one by one, for those different to the corresponding \ |
32 | Extracts characters in ``text1'' one by one, for those different to the corresponding \ |
33 | characters in ``text2'' and whose positions are not masked by ``maskstring''. <br |
33 | characters in ``text2'' and whose positions are not masked by ``maskstring''. <br>\ |
34 | (Synonyme of diff: differ).\ |
34 | (Synonyme of diff: differ).\ |
35 | </li><li><span class="tt">!text expand ``text'' using ``maskstring''\ |
35 | </li><li><span class="tt">!text expand ``text'' using ``maskstring''\ |
36 | </span> <br |
36 | </span> <br>\ |
37 | Produces a string, where positions corresponding to ``0''s in\ |
37 | Produces a string, where positions corresponding to ``0''s in\ |
38 | ``maskstring'' are filled by `` '' (the space character),\ |
38 | ``maskstring'' are filled by `` '' (the space character),\ |
39 | and where positions corresponding to ``1''s in ``maskstring'' are filled by characters of \ |
39 | and where positions corresponding to ``1''s in ``maskstring'' are filled by characters of \ |
40 | ``text''. The characters in ``text'' are used one by one, and the\ |
40 | ``text''. The characters in ``text'' are used one by one, and the\ |
41 | resulting string stops when all the characters in ``text'' are exhausted \ |
41 | resulting string stops when all the characters in ``text'' are exhausted \ |
42 | (or when the string reaches the length limit).\ |
42 | (or when the string reaches the length limit).\ |
43 | </li><li><span class="tt">!text insert ``text1'' into ``text2'' [mask ``maskstring'']</span> <br |
43 | </li><li><span class="tt">!text insert ``text1'' into ``text2'' [mask ``maskstring'']</span> <br>\ |
44 | Returns ``text2'' with non-masked characters replaced by characters ``text1''. \ |
44 | Returns ``text2'' with non-masked characters replaced by characters ``text1''. \ |
45 | Characters in ``text1'' are used one by one (without taking into account the masking), and\ |
45 | Characters in ``text1'' are used one by one (without taking into account the masking), and\ |
46 | the replacement stops when there is no character left in ``text1''.\ |
46 | the replacement stops when there is no character left in ``text1''.\ |
47 | </li><li><span class="tt">!text interact ``text1'' and ``text2'' table ``itab'' [mask ``maskstring'']</span> <br |
47 | </li><li><span class="tt">!text interact ``text1'' and ``text2'' table ``itab'' [mask ``maskstring'']</span> <br>\ |
48 | Returns a new text which is result of interactions of characters\ |
48 | Returns a new text which is result of interactions of characters\ |
49 | in corresponding positions in ``text1'' and ``text2''. The rule of the interaction is defined in\ |
49 | in corresponding positions in ``text1'' and ``text2''. The rule of the interaction is defined in\ |
50 | ``itab''. <br |
50 | ``itab''. <br> ``itab'' contains n+1 lines, each of n characters.\ |
51 | The first line defines the characters corresponding to each position\ |
51 | The first line defines the characters corresponding to each position\ |
52 | in the following n lines which defines the multiplication table.\ |
52 | in the following n lines which defines the multiplication table.\ |
53 | <br |
53 | <br>\ |
54 | The multiplication table needs not to be symmetric. In this case, the rows correspond \ |
54 | The multiplication table needs not to be symmetric. In this case, the rows correspond \ |
55 | to characters in ``text1'', and the columns correspond to characters in ``text2''.\ |
55 | to characters in ``text1'', and the columns correspond to characters in ``text2''.\ |
56 | <br |
56 | <br>\ |
57 | If ``text1'' or ``text2'' contains a character not in the first line of ``itab'', \ |
57 | If ``text1'' or ``text2'' contains a character not in the first line of ``itab'', \ |
58 | the interaction at the corresponding position is considered as empty. Also, masked\ |
58 | the interaction at the corresponding position is considered as empty. Also, masked\ |
59 | positions are ignored.<br |
59 | positions are ignored.<br>\ |
60 | If ``text1'' and ``text2'' have different lengths, the longer is cut to fit the shorter.\ |
60 | If ``text1'' and ``text2'' have different lengths, the longer is cut to fit the shorter.\ |
61 | </li><li><span class="tt">!text mark ``charlist'' in ``text''</span> <br |
61 | </li><li><span class="tt">!text mark ``charlist'' in ``text''</span> <br>\ |
62 | Returns a mask string with ``1''s on positions where the corresponding character in ``text'' \ |
62 | Returns a mask string with ``1''s on positions where the corresponding character in ``text'' \ |
63 | appears in ``charlist'', and with ``0''s on other positions.\ |
63 | appears in ``charlist'', and with ``0''s on other positions.\ |
64 | </li><li><span class="tt">!text max ``text1'' and ``text2'' [mask ``maskstring'']</span> <br |
64 | </li><li><span class="tt">!text max ``text1'' and ``text2'' [mask ``maskstring'']</span> <br>\ |
65 | Returns a string which at each position is the character with highest\ |
65 | Returns a string which at each position is the character with highest\ |
66 | ASCII code between corresponding characters in ``text1'' and ``text2''. \ |
66 | ASCII code between corresponding characters in ``text1'' and ``text2''. \ |
67 | The length of the result is that of the longest of the two. Masked positions are skipped.\ |
67 | The length of the result is that of the longest of the two. Masked positions are skipped.\ |
68 | </li><li><span class="tt">!text min ``text1'' and ``text2'' [mask ``maskstring'']</span> <br |
68 | </li><li><span class="tt">!text min ``text1'' and ``text2'' [mask ``maskstring'']</span> <br>\ |
69 | Returns a string which at each position is the character with lowest\ |
69 | Returns a string which at each position is the character with lowest\ |
70 | ASCII code between corresponding characters in ``text1'' and ``text2''. \ |
70 | ASCII code between corresponding characters in ``text1'' and ``text2''. \ |
71 | The length of the result is that of the\ |
71 | The length of the result is that of the\ |
72 | shortest of the two. Masked positions are skipped.\ |
72 | shortest of the two. Masked positions are skipped.\ |
73 | </li><li><span class="tt">!text occur ``charlist'' in ``text'' [mask ``maskstring'']</span> <br |
73 | </li><li><span class="tt">!text occur ``charlist'' in ``text'' [mask ``maskstring'']</span> <br>\ |
74 | Returns characters in ``charlist'' which occur in unmasked positions in ``text''. <br |
74 | Returns characters in ``charlist'' which occur in unmasked positions in ``text''. <br>\ |
75 | (Synonymes of occur: appear, occurrence).\ |
75 | (Synonymes of occur: appear, occurrence).\ |
76 | </li><li><span class="tt">!text remove ``charlist'' in ``text'' [mask ``maskstring'']</span> <br |
76 | </li><li><span class="tt">!text remove ``charlist'' in ``text'' [mask ``maskstring'']</span> <br>\ |
77 | Returns ``text'' in which masked characters and characters\ |
77 | Returns ``text'' in which masked characters and characters\ |
78 | appearing in ``charlist'' are removed. <br |
78 | appearing in ``charlist'' are removed. <br>(Synonymes of remove: drop, delete).\ |
79 | </li><li><span class="tt">!text reorder ``text'' by ``orderlist''</span> <br |
79 | </li><li><span class="tt">!text reorder ``text'' by ``orderlist''</span> <br>\ |
80 | Returns a reordered ``text'' using the order list ``orderlist''. Reordering is cyclic \ |
80 | Returns a reordered ``text'' using the order list ``orderlist''. Reordering is cyclic \ |
81 | if ``orderlist'' is shorter than ``text''. <br |
81 | if ``orderlist'' is shorter than ``text''. <br>\ |
82 | ``orderlist'' must be a list of n positive integers, which\ |
82 | ``orderlist'' must be a list of n positive integers, which\ |
83 | is a permutation of the set {1,...,n}. If ``orderlist'' contains\ |
83 | is a permutation of the set {1,...,n}. If ``orderlist'' contains\ |
84 | items other than integers within the bound, empty string is returned.\ |
84 | items other than integers within the bound, empty string is returned.\ |
85 | However, unicity check is not performed on items of ``orderlist''.\ |
85 | However, unicity check is not performed on items of ``orderlist''.\ |
86 | </li><li><span class="tt">!text repeat ``text'' to ``len''</span> <br |
86 | </li><li><span class="tt">!text repeat ``text'' to ``len''</span> <br>\ |
87 | Repeat the string ``text'' cyclicly, up to length ``len''.\ |
87 | Repeat the string ``text'' cyclicly, up to length ``len''.\ |
88 | </li><li><span class="tt">!text reverse ``text''</span> <br |
88 | </li><li><span class="tt">!text reverse ``text''</span> <br>\ |
89 | Reverse the order of ``text'', with the last character coming first, etc.\ |
89 | Reverse the order of ``text'', with the last character coming first, etc.\ |
90 | </li><li><span class="tt">!text select ``charlist'' in ``text'' [mask ``maskstring'']</span> <br |
90 | </li><li><span class="tt">!text select ``charlist'' in ``text'' [mask ``maskstring'']</span> <br>\ |
91 | Returns ``text'' in which masked characters and characters not appearing in \ |
91 | Returns ``text'' in which masked characters and characters not appearing in \ |
92 | ``charlist'' are removed. <br |
92 | ``charlist'' are removed. <br> (Synonymes of select: pick, pickup).\ |
93 | </li></ul> |
93 | </li></ul> |