procmail
[Top] [All Lists]

non-INCLUDERC-ing string-splitter

2005-01-09 20:03:58

  s    = '0000-0001-0002-0003-0004-0005-0006-0007-0008-0009-'  # 50
  Str  = "$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s"            # 1000

  Reps = 25



# Non-INCLUDERC-ing string-splitter.
# Very fast. Uses little memory.
#
# It works as-is up to 255, which is easily enhanced
# to 511, 1023, 2047, etc. (see out-commented code).

  d0 = '.'       d1 = '..'      d2 = '....'    d3 = '$d2$d2'  # 15
  d4 = '$d3$d3'  d5 = '$d4$d4'  d6 = '$d5$d5'  d7 = '$d6$d6'  # 255
# d8 = '$d7$d7'  d9 = '$d8$d8'  dA = '$d9$d9'  dB = '$dA$dA'  # 4095
# dC = '$dB$dB'  dD = '$dC$dC'  dE = '$dD$dD'  dF = '$dE$dE'  # 65535
# dG = '$dF$dF'  etc.

  s  # unset

  :0
  *      1^0
  *$ $Reps^0
  { } sc = "$="

# :0  # 511
# *$  $sc^0
# *  -256^0
# { sc = "$="  s = "$s\$d8" }

  :0  #255
  *$  $sc^0
  *  -128^0
  { sc = "$="  s = "$s\$d7" }

  :0  # 127
  *$  $sc^0
  *   -64^0
  { sc = "$="  s = "$s\$d6" }

  :0  # 63
  *$  $sc^0
  *   -32^0
  { sc = "$="  s = "$s\$d5" }

  :0  # 31
  *$  $sc^0
  *   -16^0
  { sc = "$="  s = "$s\$d4" }

  :0  # 15
  *$  $sc^0
  *    -8^0
  { sc = "$="  s = "$s\$d3" }

  :0  # 7
  *$  $sc^0
  *    -4^0
  { sc = "$="  s = "$s\$d2" }

  :0  # 3
  *$  $sc^0
  *    -2^0
  { sc = "$="  s = "$s\$d1" }

  :0  # 1
  *$  $sc^0
  *    -1^0
  { sc = "$="  s = "$s\$d0" }

  :0
  *$ $ $ $ $ $ $  Str ?? ^^\/$s
  { Str_Left = "$MATCH" }

# :0
# *$ $ $ $ $ $ $  Str ?? ^^$s\/.*
# { Str_Right = "$MATCH" }

-- 
Grtz, Ruud

____________________________________________________________
procmail mailing list   Procmail homepage: http://www.procmail.org/
procmail(_at_)lists(_dot_)RWTH-Aachen(_dot_)DE
http://MailMan.RWTH-Aachen.DE/mailman/listinfo/procmail

<Prev in Thread] Current Thread [Next in Thread>
  • non-INCLUDERC-ing string-splitter, Ruud H.G. van Tol <=