Rev 5921 | Rev 11292 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
32 | reyssat | 1 | !! +exec+ +var+ +string+ |
11210 | bpr | 2 | tit:text |
3 | type:$type_both |
||
4 | syntax:!text `operation' `parameter' |
||
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/>\ |
||
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\ |
||
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\ |
||
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 `operations' are as follows.\ |
||
16 | <ul>\ |
||
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\ |
||
19 | to the corresponding characters in `text2' and whose\ |
||
20 | positions are not masked by `maskstring'.\ |
||
21 | </li><li><span class="tt">!text compare `text1' and `text2'\ |
||
22 | </span> <br/>\ |
||
23 | Compares the strings `text1' and `text2' character by character, \ |
||
24 | and returns a mask string with `0's onpositions where the corresponding characters in `text1'\ |
||
25 | and `text2' are equal, and `1's otherwise.\ |
||
26 | </li><li><span class="tt">!text copy `text' [mask `maskstring']</span> <br/>\ |
||
27 | Returns non-masked characters in `text'.\ |
||
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\ |
||
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/>\ |
||
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/>\ |
||
34 | (Synonyme of diff: differ).\ |
||
35 | </li><li><span class="tt">!text expand `text' using `maskstring'\ |
||
36 | </span> <br/>\ |
||
37 | Produces a string, where positions corresponding to `0's in\ |
||
38 | `maskstring' are filled by ` ' (the space character),\ |
||
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\ |
||
41 | resulting string stops when all the characters in `text' are exhausted \ |
||
42 | (or when the string reaches the length limit).\ |
||
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'. \ |
||
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'.\ |
||
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\ |
||
49 | in corresponding positions in `text1' and `text2'. The rule of the interaction is defined in\ |
||
50 | `itab'. <br/> `itab' contains n+1 lines, each of n characters.\ |
||
51 | The first line defines the characters corresponding to each position\ |
||
52 | in the following n lines which defines the multiplication table.\ |
||
53 | <br/>\ |
||
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'.\ |
||
56 | <br/>\ |
||
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\ |
||
59 | positions are ignored.<br/>\ |
||
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/>\ |
||
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.\ |
||
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\ |
||
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.\ |
||
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\ |
||
70 | ASCII code between corresponding characters in `text1' and `text2'. \ |
||
71 | The length of the result is that of the\ |
||
72 | shortest of the two. Masked positions are skipped.\ |
||
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/>\ |
||
75 | (Synonymes of occur: appear, occurrence).\ |
||
76 | </li><li><span class="tt">!text remove `charlist' in `text' [mask `maskstring']</span> <br/>\ |
||
77 | Returns `text' in which masked characters and characters\ |
||
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/>\ |
||
80 | Returns a reordered `text' using the order list `orderlist'. Reordering is cyclic \ |
||
81 | if `orderlist' is shorter than `text'. <br/>\ |
||
82 | `orderlist' must be a list of n positive integers, which\ |
||
83 | is a permutation of the set {1,...,n}. If `orderlist' contains\ |
||
84 | items other than integers within the bound, empty string is returned.\ |
||
85 | However, unicity check is not performed on items of `orderlist'.\ |
||
86 | </li><li><span class="tt">!text repeat `text' to `len'</span> <br/>\ |
||
87 | Repeat the string `text' cyclicly, up to length `len'.\ |
||
88 | </li><li><span class="tt">!text reverse `text'</span> <br/>\ |
||
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/>\ |
||
91 | Returns `text' in which masked characters and characters not appearing in \ |
||
92 | `charlist' are removed. <br/> (Synonymes of select: pick, pickup).\ |
||
93 | </li></ul> |