Subversion Repositories wimsdev

Rev

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