Subversion Repositories wimsdev

Rev

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

  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.  
  131.