Subversion Repositories wimsdev

Rev

Rev 5921 | Rev 11292 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. !! +exec+ +var+ +string+
  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>
  94.