Subversion Repositories wimsdev

Rev

Rev 12174 | 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 on positions 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.