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