Subversion Repositories wimsdev

Rev

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 `&nbsp;' (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>