Fossil

Hex Artifact Content
Login

Artifact 027f2aa0b0c737a0f27d51800802a08f07561beb:


0000: 23 0a 23 20 43 6f 70 79 72 69 67 68 74 20 28 63  #.# Copyright (c
0010: 29 20 32 30 31 33 20 44 2e 20 52 69 63 68 61 72  ) 2013 D. Richar
0020: 64 20 48 69 70 70 0a 23 0a 23 20 54 68 69 73 20  d Hipp.#.# This 
0030: 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20  program is free 
0040: 73 6f 66 74 77 61 72 65 3b 20 79 6f 75 20 63 61  software; you ca
0050: 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69  n redistribute i
0060: 74 20 61 6e 64 2f 6f 72 0a 23 20 6d 6f 64 69 66  t and/or.# modif
0070: 79 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74  y it under the t
0080: 65 72 6d 73 20 6f 66 20 74 68 65 20 53 69 6d 70  erms of the Simp
0090: 6c 69 66 69 65 64 20 42 53 44 20 4c 69 63 65 6e  lified BSD Licen
00a0: 73 65 20 28 61 6c 73 6f 0a 23 20 6b 6e 6f 77 6e  se (also.# known
00b0: 20 61 73 20 74 68 65 20 22 32 2d 43 6c 61 75 73   as the "2-Claus
00c0: 65 20 4c 69 63 65 6e 73 65 22 20 6f 72 20 22 46  e License" or "F
00d0: 72 65 65 42 53 44 20 4c 69 63 65 6e 73 65 22 2e  reeBSD License".
00e0: 29 0a 23 0a 23 20 54 68 69 73 20 70 72 6f 67 72  ).#.# This progr
00f0: 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65  am is distribute
0100: 64 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68  d in the hope th
0110: 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73  at it will be us
0120: 65 66 75 6c 2c 0a 23 20 62 75 74 20 77 69 74 68  eful,.# but with
0130: 6f 75 74 20 61 6e 79 20 77 61 72 72 61 6e 74 79  out any warranty
0140: 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74  ; without even t
0150: 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61  he implied warra
0160: 6e 74 79 20 6f 66 0a 23 20 6d 65 72 63 68 61 6e  nty of.# merchan
0170: 74 61 62 69 6c 69 74 79 20 6f 72 20 66 69 74 6e  tability or fitn
0180: 65 73 73 20 66 6f 72 20 61 20 70 61 72 74 69 63  ess for a partic
0190: 75 6c 61 72 20 70 75 72 70 6f 73 65 2e 0a 23 0a  ular purpose..#.
01a0: 23 20 41 75 74 68 6f 72 20 63 6f 6e 74 61 63 74  # Author contact
01b0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 3a 0a 23 20   information:.# 
01c0: 20 20 64 72 68 40 68 77 61 63 69 2e 63 6f 6d 0a    drh@hwaci.com.
01d0: 23 20 20 20 68 74 74 70 3a 2f 2f 77 77 77 2e 68  #   http://www.h
01e0: 77 61 63 69 2e 63 6f 6d 2f 64 72 68 2f 0a 23 0a  waci.com/drh/.#.
01f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0200: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0210: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0220: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0230: 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 0a 23  ############.#.#
0240: 20 54 65 73 74 20 67 6c 6f 62 20 70 61 74 74 65   Test glob patte
0250: 72 6e 20 70 61 72 73 69 6e 67 0a 23 0a 0a 70 72  rn parsing.#..pr
0260: 6f 63 20 67 6c 6f 62 2d 70 61 72 73 65 20 7b 74  oc glob-parse {t
0270: 65 73 74 6e 61 6d 65 20 61 72 67 73 7d 20 7b 0a  estname args} {.
0280: 20 20 73 65 74 20 69 20 31 0a 20 20 66 6f 72 65    set i 1.  fore
0290: 61 63 68 20 7b 70 61 74 74 65 72 6e 20 73 74 72  ach {pattern str
02a0: 69 6e 67 20 72 65 73 75 6c 74 7d 20 24 61 72 67  ing result} $arg
02b0: 73 20 7b 0a 20 20 20 20 66 6f 73 73 69 6c 20 74  s {.    fossil t
02c0: 65 73 74 2d 67 6c 6f 62 20 24 70 61 74 74 65 72  est-glob $patter
02d0: 6e 20 24 73 74 72 69 6e 67 0a 20 20 20 20 74 65  n $string.    te
02e0: 73 74 20 67 6c 6f 62 2d 70 61 72 73 65 2d 24 74  st glob-parse-$t
02f0: 65 73 74 6e 61 6d 65 2e 24 69 20 7b 24 3a 3a 52  estname.$i {$::R
0300: 45 53 55 4c 54 20 65 71 20 24 72 65 73 75 6c 74  ESULT eq $result
0310: 7d 0a 20 20 20 20 69 6e 63 72 20 69 0a 20 20 7d  }.    incr i.  }
0320: 0a 7d 0a 0a 67 6c 6f 62 2d 70 61 72 73 65 20 31  .}..glob-parse 1
0330: 30 30 20 74 65 73 74 20 74 65 73 74 20 5b 73 74  00 test test [st
0340: 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74 20 5c  ring map [list \
0350: 72 5c 6e 20 5c 6e 5d 20 5c 0a 7b 53 51 4c 20 65  r\n \n] \.{SQL e
0360: 78 70 72 65 73 73 69 6f 6e 3a 20 28 78 20 47 4c  xpression: (x GL
0370: 4f 42 20 27 74 65 73 74 27 29 0a 70 61 74 74 65  OB 'test').patte
0380: 72 6e 5b 30 5d 20 3d 20 5b 74 65 73 74 5d 0a 31  rn[0] = [test].1
0390: 20 74 65 73 74 7d 5d 0a 0a 67 6c 6f 62 2d 70 61   test}]..glob-pa
03a0: 72 73 65 20 31 30 31 20 22 6f 6e 65 20 74 77 6f  rse 101 "one two
03b0: 22 20 6f 6e 65 20 5b 73 74 72 69 6e 67 20 6d 61  " one [string ma
03c0: 70 20 5b 6c 69 73 74 20 5c 72 5c 6e 20 5c 6e 5d  p [list \r\n \n]
03d0: 20 5c 0a 7b 53 51 4c 20 65 78 70 72 65 73 73 69   \.{SQL expressi
03e0: 6f 6e 3a 20 28 78 20 47 4c 4f 42 20 27 6f 6e 65  on: (x GLOB 'one
03f0: 27 20 4f 52 20 78 20 47 4c 4f 42 20 27 74 77 6f  ' OR x GLOB 'two
0400: 27 29 0a 70 61 74 74 65 72 6e 5b 30 5d 20 3d 20  ').pattern[0] = 
0410: 5b 6f 6e 65 5d 0a 70 61 74 74 65 72 6e 5b 31 5d  [one].pattern[1]
0420: 20 3d 20 5b 74 77 6f 5d 0a 31 20 6f 6e 65 7d 5d   = [two].1 one}]
0430: 0a 0a 67 6c 6f 62 2d 70 61 72 73 65 20 31 30 32  ..glob-parse 102
0440: 20 74 2a 20 74 65 73 74 20 5b 73 74 72 69 6e 67   t* test [string
0450: 20 6d 61 70 20 5b 6c 69 73 74 20 5c 72 5c 6e 20   map [list \r\n 
0460: 5c 6e 5d 20 5c 0a 7b 53 51 4c 20 65 78 70 72 65  \n] \.{SQL expre
0470: 73 73 69 6f 6e 3a 20 28 78 20 47 4c 4f 42 20 27  ssion: (x GLOB '
0480: 74 2a 27 29 0a 70 61 74 74 65 72 6e 5b 30 5d 20  t*').pattern[0] 
0490: 3d 20 5b 74 2a 5d 0a 31 20 74 65 73 74 7d 5d 0a  = [t*].1 test}].
04a0: 0a 67 6c 6f 62 2d 70 61 72 73 65 20 31 30 33 20  .glob-parse 103 
04b0: 22 6f 2a 20 74 77 6f 22 20 6f 6e 65 20 5b 73 74  "o* two" one [st
04c0: 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74 20 5c  ring map [list \
04d0: 72 5c 6e 20 5c 6e 5d 20 5c 0a 7b 53 51 4c 20 65  r\n \n] \.{SQL e
04e0: 78 70 72 65 73 73 69 6f 6e 3a 20 28 78 20 47 4c  xpression: (x GL
04f0: 4f 42 20 27 6f 2a 27 20 4f 52 20 78 20 47 4c 4f  OB 'o*' OR x GLO
0500: 42 20 27 74 77 6f 27 29 0a 70 61 74 74 65 72 6e  B 'two').pattern
0510: 5b 30 5d 20 3d 20 5b 6f 2a 5d 0a 70 61 74 74 65  [0] = [o*].patte
0520: 72 6e 5b 31 5d 20 3d 20 5b 74 77 6f 5d 0a 31 20  rn[1] = [two].1 
0530: 6f 6e 65 7d 5d 0a 0a 67 6c 6f 62 2d 70 61 72 73  one}]..glob-pars
0540: 65 20 31 30 34 20 7b 22 6f 2a 20 74 77 6f 22 20  e 104 {"o* two" 
0550: 22 74 68 72 65 65 20 66 6f 75 72 22 7d 20 22 6f  "three four"} "o
0560: 6e 65 20 74 77 6f 22 20 5b 73 74 72 69 6e 67 20  ne two" [string 
0570: 6d 61 70 20 5b 6c 69 73 74 20 5c 72 5c 6e 20 5c  map [list \r\n \
0580: 6e 5d 20 5c 0a 7b 53 51 4c 20 65 78 70 72 65 73  n] \.{SQL expres
0590: 73 69 6f 6e 3a 20 28 78 20 47 4c 4f 42 20 27 6f  sion: (x GLOB 'o
05a0: 2a 20 74 77 6f 27 20 4f 52 20 78 20 47 4c 4f 42  * two' OR x GLOB
05b0: 20 27 74 68 72 65 65 20 66 6f 75 72 27 29 0a 70   'three four').p
05c0: 61 74 74 65 72 6e 5b 30 5d 20 3d 20 5b 6f 2a 20  attern[0] = [o* 
05d0: 74 77 6f 5d 0a 70 61 74 74 65 72 6e 5b 31 5d 20  two].pattern[1] 
05e0: 3d 20 5b 74 68 72 65 65 20 66 6f 75 72 5d 0a 31  = [three four].1
05f0: 20 6f 6e 65 20 74 77 6f 7d 5d 0a 0a 67 6c 6f 62   one two}]..glob
0600: 2d 70 61 72 73 65 20 31 30 35 20 7b 22 6f 2a 20  -parse 105 {"o* 
0610: 74 77 6f 22 20 22 74 68 72 65 65 20 66 6f 75 72  two" "three four
0620: 22 7d 20 22 74 77 6f 20 6f 6e 65 22 20 5b 73 74  "} "two one" [st
0630: 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74 20 5c  ring map [list \
0640: 72 5c 6e 20 5c 6e 5d 20 5c 0a 7b 53 51 4c 20 65  r\n \n] \.{SQL e
0650: 78 70 72 65 73 73 69 6f 6e 3a 20 28 78 20 47 4c  xpression: (x GL
0660: 4f 42 20 27 6f 2a 20 74 77 6f 27 20 4f 52 20 78  OB 'o* two' OR x
0670: 20 47 4c 4f 42 20 27 74 68 72 65 65 20 66 6f 75   GLOB 'three fou
0680: 72 27 29 0a 70 61 74 74 65 72 6e 5b 30 5d 20 3d  r').pattern[0] =
0690: 20 5b 6f 2a 20 74 77 6f 5d 0a 70 61 74 74 65 72   [o* two].patter
06a0: 6e 5b 31 5d 20 3d 20 5b 74 68 72 65 65 20 66 6f  n[1] = [three fo
06b0: 75 72 5d 0a 30 20 74 77 6f 20 6f 6e 65 7d 5d 0a  ur].0 two one}].
06c0: 0a 67 6c 6f 62 2d 70 61 72 73 65 20 31 30 36 20  .glob-parse 106 
06d0: 22 5c 22 6f 2a 5c 6e 74 77 6f 5c 22 20 5c 22 74  "\"o*\ntwo\" \"t
06e0: 68 72 65 65 5c 6e 66 6f 75 72 5c 22 22 20 22 6f  hree\nfour\"" "o
06f0: 6e 65 5c 6e 74 77 6f 22 20 5c 0a 5b 73 74 72 69  ne\ntwo" \.[stri
0700: 6e 67 20 6d 61 70 20 5b 6c 69 73 74 20 5c 72 5c  ng map [list \r\
0710: 6e 20 5c 6e 5d 20 5c 0a 7b 53 51 4c 20 65 78 70  n \n] \.{SQL exp
0720: 72 65 73 73 69 6f 6e 3a 20 28 78 20 47 4c 4f 42  ression: (x GLOB
0730: 20 27 6f 2a 0a 74 77 6f 27 20 4f 52 20 78 20 47   'o*.two' OR x G
0740: 4c 4f 42 20 27 74 68 72 65 65 0a 66 6f 75 72 27  LOB 'three.four'
0750: 29 0a 70 61 74 74 65 72 6e 5b 30 5d 20 3d 20 5b  ).pattern[0] = [
0760: 6f 2a 0a 74 77 6f 5d 0a 70 61 74 74 65 72 6e 5b  o*.two].pattern[
0770: 31 5d 20 3d 20 5b 74 68 72 65 65 0a 66 6f 75 72  1] = [three.four
0780: 5d 0a 31 20 6f 6e 65 0a 74 77 6f 7d 5d 0a 0a 67  ].1 one.two}]..g
0790: 6c 6f 62 2d 70 61 72 73 65 20 31 30 37 20 22 5c  lob-parse 107 "\
07a0: 22 6f 2a 5c 6e 74 77 6f 5c 22 20 5c 22 74 68 72  "o*\ntwo\" \"thr
07b0: 65 65 5c 6e 66 6f 75 72 5c 22 22 20 22 74 77 6f  ee\nfour\"" "two
07c0: 5c 6e 6f 6e 65 22 20 5c 0a 5b 73 74 72 69 6e 67  \none" \.[string
07d0: 20 6d 61 70 20 5b 6c 69 73 74 20 5c 72 5c 6e 20   map [list \r\n 
07e0: 5c 6e 5d 20 5c 0a 7b 53 51 4c 20 65 78 70 72 65  \n] \.{SQL expre
07f0: 73 73 69 6f 6e 3a 20 28 78 20 47 4c 4f 42 20 27  ssion: (x GLOB '
0800: 6f 2a 0a 74 77 6f 27 20 4f 52 20 78 20 47 4c 4f  o*.two' OR x GLO
0810: 42 20 27 74 68 72 65 65 0a 66 6f 75 72 27 29 0a  B 'three.four').
0820: 70 61 74 74 65 72 6e 5b 30 5d 20 3d 20 5b 6f 2a  pattern[0] = [o*
0830: 0a 74 77 6f 5d 0a 70 61 74 74 65 72 6e 5b 31 5d  .two].pattern[1]
0840: 20 3d 20 5b 74 68 72 65 65 0a 66 6f 75 72 5d 0a   = [three.four].
0850: 30 20 74 77 6f 0a 6f 6e 65 7d 5d 0a 0a 67 6c 6f  0 two.one}]..glo
0860: 62 2d 70 61 72 73 65 20 31 30 38 20 22 5c 22 6f  b-parse 108 "\"o
0870: 2a 5c 72 74 77 6f 5c 22 20 5c 22 74 68 72 65 65  *\rtwo\" \"three
0880: 5c 72 66 6f 75 72 5c 22 22 20 22 6f 6e 65 5c 72  \rfour\"" "one\r
0890: 74 77 6f 22 20 5c 0a 5b 73 74 72 69 6e 67 20 6d  two" \.[string m
08a0: 61 70 20 5b 6c 69 73 74 20 5c 72 5c 6e 20 5c 6e  ap [list \r\n \n
08b0: 5d 20 5c 0a 7b 53 51 4c 20 65 78 70 72 65 73 73  ] \.{SQL express
08c0: 69 6f 6e 3a 20 28 78 20 47 4c 4f 42 20 27 6f 2a  ion: (x GLOB 'o*
08d0: 0a 74 77 6f 27 20 4f 52 20 78 20 47 4c 4f 42 20  .two' OR x GLOB 
08e0: 27 74 68 72 65 65 0a 66 6f 75 72 27 29 0a 70 61  'three.four').pa
08f0: 74 74 65 72 6e 5b 30 5d 20 3d 20 5b 6f 2a 0a 74  ttern[0] = [o*.t
0900: 77 6f 5d 0a 70 61 74 74 65 72 6e 5b 31 5d 20 3d  wo].pattern[1] =
0910: 20 5b 74 68 72 65 65 0a 66 6f 75 72 5d 0a 31 20   [three.four].1 
0920: 6f 6e 65 0a 74 77 6f 7d 5d 0a 0a 67 6c 6f 62 2d  one.two}]..glob-
0930: 70 61 72 73 65 20 31 30 39 20 22 5c 22 6f 2a 5c  parse 109 "\"o*\
0940: 72 74 77 6f 5c 22 20 5c 22 74 68 72 65 65 5c 72  rtwo\" \"three\r
0950: 66 6f 75 72 5c 22 22 20 22 74 77 6f 5c 72 6f 6e  four\"" "two\ron
0960: 65 22 20 5c 0a 5b 73 74 72 69 6e 67 20 6d 61 70  e" \.[string map
0970: 20 5b 6c 69 73 74 20 5c 72 5c 6e 20 5c 6e 5d 20   [list \r\n \n] 
0980: 5c 0a 7b 53 51 4c 20 65 78 70 72 65 73 73 69 6f  \.{SQL expressio
0990: 6e 3a 20 28 78 20 47 4c 4f 42 20 27 6f 2a 0a 74  n: (x GLOB 'o*.t
09a0: 77 6f 27 20 4f 52 20 78 20 47 4c 4f 42 20 27 74  wo' OR x GLOB 't
09b0: 68 72 65 65 0a 66 6f 75 72 27 29 0a 70 61 74 74  hree.four').patt
09c0: 65 72 6e 5b 30 5d 20 3d 20 5b 6f 2a 0a 74 77 6f  ern[0] = [o*.two
09d0: 5d 0a 70 61 74 74 65 72 6e 5b 31 5d 20 3d 20 5b  ].pattern[1] = [
09e0: 74 68 72 65 65 0a 66 6f 75 72 5d 0a 30 20 74 77  three.four].0 tw
09f0: 6f 0a 6f 6e 65 7d 5d 0a 0a 67 6c 6f 62 2d 70 61  o.one}]..glob-pa
0a00: 72 73 65 20 31 31 30 20 22 27 6f 2a 5c 6e 74 77  rse 110 "'o*\ntw
0a10: 6f 27 20 27 74 68 72 65 65 5c 6e 66 6f 75 72 27  o' 'three\nfour'
0a20: 22 20 22 6f 6e 65 5c 6e 74 77 6f 22 20 5c 0a 5b  " "one\ntwo" \.[
0a30: 73 74 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74  string map [list
0a40: 20 5c 72 5c 6e 20 5c 6e 5d 20 5c 0a 7b 53 51 4c   \r\n \n] \.{SQL
0a50: 20 65 78 70 72 65 73 73 69 6f 6e 3a 20 28 78 20   expression: (x 
0a60: 47 4c 4f 42 20 27 6f 2a 0a 74 77 6f 27 20 4f 52  GLOB 'o*.two' OR
0a70: 20 78 20 47 4c 4f 42 20 27 74 68 72 65 65 0a 66   x GLOB 'three.f
0a80: 6f 75 72 27 29 0a 70 61 74 74 65 72 6e 5b 30 5d  our').pattern[0]
0a90: 20 3d 20 5b 6f 2a 0a 74 77 6f 5d 0a 70 61 74 74   = [o*.two].patt
0aa0: 65 72 6e 5b 31 5d 20 3d 20 5b 74 68 72 65 65 0a  ern[1] = [three.
0ab0: 66 6f 75 72 5d 0a 31 20 6f 6e 65 0a 74 77 6f 7d  four].1 one.two}
0ac0: 5d 0a 0a 67 6c 6f 62 2d 70 61 72 73 65 20 31 31  ]..glob-parse 11
0ad0: 31 20 22 27 6f 2a 5c 6e 74 77 6f 27 20 27 74 68  1 "'o*\ntwo' 'th
0ae0: 72 65 65 5c 6e 66 6f 75 72 27 22 20 22 74 77 6f  ree\nfour'" "two
0af0: 5c 6e 6f 6e 65 22 20 5c 0a 5b 73 74 72 69 6e 67  \none" \.[string
0b00: 20 6d 61 70 20 5b 6c 69 73 74 20 5c 72 5c 6e 20   map [list \r\n 
0b10: 5c 6e 5d 20 5c 0a 7b 53 51 4c 20 65 78 70 72 65  \n] \.{SQL expre
0b20: 73 73 69 6f 6e 3a 20 28 78 20 47 4c 4f 42 20 27  ssion: (x GLOB '
0b30: 6f 2a 0a 74 77 6f 27 20 4f 52 20 78 20 47 4c 4f  o*.two' OR x GLO
0b40: 42 20 27 74 68 72 65 65 0a 66 6f 75 72 27 29 0a  B 'three.four').
0b50: 70 61 74 74 65 72 6e 5b 30 5d 20 3d 20 5b 6f 2a  pattern[0] = [o*
0b60: 0a 74 77 6f 5d 0a 70 61 74 74 65 72 6e 5b 31 5d  .two].pattern[1]
0b70: 20 3d 20 5b 74 68 72 65 65 0a 66 6f 75 72 5d 0a   = [three.four].
0b80: 30 20 74 77 6f 0a 6f 6e 65 7d 5d 0a 0a 67 6c 6f  0 two.one}]..glo
0b90: 62 2d 70 61 72 73 65 20 31 31 32 20 22 5c 22 27  b-parse 112 "\"'
0ba0: 6f 2a 27 20 27 74 77 6f 27 5c 22 20 5c 22 27 74  o*' 'two'\" \"'t
0bb0: 68 72 65 65 27 20 27 66 6f 75 72 27 5c 22 22 20  hree' 'four'\"" 
0bc0: 22 27 6f 6e 65 27 20 27 74 77 6f 27 22 20 5c 0a  "'one' 'two'" \.
0bd0: 5b 73 74 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73  [string map [lis
0be0: 74 20 5c 72 5c 6e 20 5c 6e 5d 20 5c 0a 7b 53 51  t \r\n \n] \.{SQ
0bf0: 4c 20 65 78 70 72 65 73 73 69 6f 6e 3a 20 28 78  L expression: (x
0c00: 20 47 4c 4f 42 20 27 27 27 6f 2a 27 27 20 27 27   GLOB '''o*'' ''
0c10: 74 77 6f 27 27 27 20 4f 52 20 78 20 47 4c 4f 42  two''' OR x GLOB
0c20: 20 27 27 27 74 68 72 65 65 27 27 20 27 27 66 6f   '''three'' ''fo
0c30: 75 72 27 27 27 29 0a 70 61 74 74 65 72 6e 5b 30  ur''').pattern[0
0c40: 5d 20 3d 20 5b 27 6f 2a 27 20 27 74 77 6f 27 5d  ] = ['o*' 'two']
0c50: 0a 70 61 74 74 65 72 6e 5b 31 5d 20 3d 20 5b 27  .pattern[1] = ['
0c60: 74 68 72 65 65 27 20 27 66 6f 75 72 27 5d 0a 31  three' 'four'].1
0c70: 20 27 6f 6e 65 27 20 27 74 77 6f 27 7d 5d 0a 0a   'one' 'two'}]..
0c80: 67 6c 6f 62 2d 70 61 72 73 65 20 31 31 33 20 22  glob-parse 113 "
0c90: 5c 22 27 6f 2a 27 20 27 74 77 6f 27 5c 22 20 5c  \"'o*' 'two'\" \
0ca0: 22 27 74 68 72 65 65 27 20 27 66 6f 75 72 27 5c  "'three' 'four'\
0cb0: 22 22 20 22 74 77 6f 20 6f 6e 65 22 20 5c 0a 5b  "" "two one" \.[
0cc0: 73 74 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74  string map [list
0cd0: 20 5c 72 5c 6e 20 5c 6e 5d 20 5c 0a 7b 53 51 4c   \r\n \n] \.{SQL
0ce0: 20 65 78 70 72 65 73 73 69 6f 6e 3a 20 28 78 20   expression: (x 
0cf0: 47 4c 4f 42 20 27 27 27 6f 2a 27 27 20 27 27 74  GLOB '''o*'' ''t
0d00: 77 6f 27 27 27 20 4f 52 20 78 20 47 4c 4f 42 20  wo''' OR x GLOB 
0d10: 27 27 27 74 68 72 65 65 27 27 20 27 27 66 6f 75  '''three'' ''fou
0d20: 72 27 27 27 29 0a 70 61 74 74 65 72 6e 5b 30 5d  r''').pattern[0]
0d30: 20 3d 20 5b 27 6f 2a 27 20 27 74 77 6f 27 5d 0a   = ['o*' 'two'].
0d40: 70 61 74 74 65 72 6e 5b 31 5d 20 3d 20 5b 27 74  pattern[1] = ['t
0d50: 68 72 65 65 27 20 27 66 6f 75 72 27 5d 0a 30 20  hree' 'four'].0 
0d60: 74 77 6f 20 6f 6e 65 7d 5d 0a 0a 67 6c 6f 62 2d  two one}]..glob-
0d70: 70 61 72 73 65 20 31 31 34 20 6f 2a 2c 74 77 6f  parse 114 o*,two
0d80: 20 6f 6e 65 20 5b 73 74 72 69 6e 67 20 6d 61 70   one [string map
0d90: 20 5b 6c 69 73 74 20 5c 72 5c 6e 20 5c 6e 5d 20   [list \r\n \n] 
0da0: 5c 0a 7b 53 51 4c 20 65 78 70 72 65 73 73 69 6f  \.{SQL expressio
0db0: 6e 3a 20 28 78 20 47 4c 4f 42 20 27 6f 2a 27 20  n: (x GLOB 'o*' 
0dc0: 4f 52 20 78 20 47 4c 4f 42 20 27 74 77 6f 27 29  OR x GLOB 'two')
0dd0: 0a 70 61 74 74 65 72 6e 5b 30 5d 20 3d 20 5b 6f  .pattern[0] = [o
0de0: 2a 5d 0a 70 61 74 74 65 72 6e 5b 31 5d 20 3d 20  *].pattern[1] = 
0df0: 5b 74 77 6f 5d 0a 31 20 6f 6e 65 7d 5d 0a 0a 67  [two].1 one}]..g
0e00: 6c 6f 62 2d 70 61 72 73 65 20 31 31 35 20 22 6f  lob-parse 115 "o
0e10: 2a 2c 74 77 6f 20 74 68 72 65 65 2c 66 6f 75 72  *,two three,four
0e20: 22 20 22 6f 6e 65 20 74 77 6f 22 20 5b 73 74 72  " "one two" [str
0e30: 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74 20 5c 72  ing map [list \r
0e40: 5c 6e 20 5c 6e 5d 20 5c 0a 7b 53 51 4c 20 65 78  \n \n] \.{SQL ex
0e50: 70 72 65 73 73 69 6f 6e 3a 20 28 78 20 47 4c 4f  pression: (x GLO
0e60: 42 20 27 6f 2a 27 20 4f 52 20 78 20 47 4c 4f 42  B 'o*' OR x GLOB
0e70: 20 27 74 77 6f 27 20 4f 52 20 78 20 47 4c 4f 42   'two' OR x GLOB
0e80: 20 27 74 68 72 65 65 27 20 4f 52 20 78 20 47 4c   'three' OR x GL
0e90: 4f 42 20 27 66 6f 75 72 27 29 0a 70 61 74 74 65  OB 'four').patte
0ea0: 72 6e 5b 30 5d 20 3d 20 5b 6f 2a 5d 0a 70 61 74  rn[0] = [o*].pat
0eb0: 74 65 72 6e 5b 31 5d 20 3d 20 5b 74 77 6f 5d 0a  tern[1] = [two].
0ec0: 70 61 74 74 65 72 6e 5b 32 5d 20 3d 20 5b 74 68  pattern[2] = [th
0ed0: 72 65 65 5d 0a 70 61 74 74 65 72 6e 5b 33 5d 20  ree].pattern[3] 
0ee0: 3d 20 5b 66 6f 75 72 5d 0a 31 20 6f 6e 65 20 74  = [four].1 one t
0ef0: 77 6f 7d 5d 0a 0a 67 6c 6f 62 2d 70 61 72 73 65  wo}]..glob-parse
0f00: 20 31 31 36 20 27 6f 2a 2c 74 77 6f 27 20 6f 6e   116 'o*,two' on
0f10: 65 20 5b 73 74 72 69 6e 67 20 6d 61 70 20 5b 6c  e [string map [l
0f20: 69 73 74 20 5c 72 5c 6e 20 5c 6e 5d 20 5c 0a 7b  ist \r\n \n] \.{
0f30: 53 51 4c 20 65 78 70 72 65 73 73 69 6f 6e 3a 20  SQL expression: 
0f40: 28 78 20 47 4c 4f 42 20 27 6f 2a 2c 74 77 6f 27  (x GLOB 'o*,two'
0f50: 29 0a 70 61 74 74 65 72 6e 5b 30 5d 20 3d 20 5b  ).pattern[0] = [
0f60: 6f 2a 2c 74 77 6f 5d 0a 30 20 6f 6e 65 7d 5d 0a  o*,two].0 one}].
0f70: 0a 67 6c 6f 62 2d 70 61 72 73 65 20 31 31 37 20  .glob-parse 117 
0f80: 27 6f 2a 2c 74 77 6f 27 20 6f 6e 65 2c 74 77 6f  'o*,two' one,two
0f90: 20 5b 73 74 72 69 6e 67 20 6d 61 70 20 5b 6c 69   [string map [li
0fa0: 73 74 20 5c 72 5c 6e 20 5c 6e 5d 20 5c 0a 7b 53  st \r\n \n] \.{S
0fb0: 51 4c 20 65 78 70 72 65 73 73 69 6f 6e 3a 20 28  QL expression: (
0fc0: 78 20 47 4c 4f 42 20 27 6f 2a 2c 74 77 6f 27 29  x GLOB 'o*,two')
0fd0: 0a 70 61 74 74 65 72 6e 5b 30 5d 20 3d 20 5b 6f  .pattern[0] = [o
0fe0: 2a 2c 74 77 6f 5d 0a 31 20 6f 6e 65 2c 74 77 6f  *,two].1 one,two
0ff0: 7d 5d 0a 0a 67 6c 6f 62 2d 70 61 72 73 65 20 31  }]..glob-parse 1
1000: 31 38 20 22 27 6f 2a 2c 74 77 6f 20 74 68 72 65  18 "'o*,two thre
1010: 65 2c 66 6f 75 72 27 22 20 22 6f 6e 65 20 74 77  e,four'" "one tw
1020: 6f 20 74 68 72 65 65 2c 66 6f 75 72 22 20 5c 0a  o three,four" \.
1030: 5b 73 74 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73  [string map [lis
1040: 74 20 5c 72 5c 6e 20 5c 6e 5d 20 5c 0a 7b 53 51  t \r\n \n] \.{SQ
1050: 4c 20 65 78 70 72 65 73 73 69 6f 6e 3a 20 28 78  L expression: (x
1060: 20 47 4c 4f 42 20 27 6f 2a 2c 74 77 6f 20 74 68   GLOB 'o*,two th
1070: 72 65 65 2c 66 6f 75 72 27 29 0a 70 61 74 74 65  ree,four').patte
1080: 72 6e 5b 30 5d 20 3d 20 5b 6f 2a 2c 74 77 6f 20  rn[0] = [o*,two 
1090: 74 68 72 65 65 2c 66 6f 75 72 5d 0a 30 20 6f 6e  three,four].0 on
10a0: 65 20 74 77 6f 20 74 68 72 65 65 2c 66 6f 75 72  e two three,four
10b0: 7d 5d 0a 0a 67 6c 6f 62 2d 70 61 72 73 65 20 31  }]..glob-parse 1
10c0: 31 39 20 22 27 6f 2a 2c 74 77 6f 20 74 68 72 65  19 "'o*,two thre
10d0: 65 2c 66 6f 75 72 27 22 20 22 6f 6e 65 2c 74 77  e,four'" "one,tw
10e0: 6f 20 74 68 72 65 65 2c 66 6f 75 72 22 20 5c 0a  o three,four" \.
10f0: 5b 73 74 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73  [string map [lis
1100: 74 20 5c 72 5c 6e 20 5c 6e 5d 20 5c 0a 7b 53 51  t \r\n \n] \.{SQ
1110: 4c 20 65 78 70 72 65 73 73 69 6f 6e 3a 20 28 78  L expression: (x
1120: 20 47 4c 4f 42 20 27 6f 2a 2c 74 77 6f 20 74 68   GLOB 'o*,two th
1130: 72 65 65 2c 66 6f 75 72 27 29 0a 70 61 74 74 65  ree,four').patte
1140: 72 6e 5b 30 5d 20 3d 20 5b 6f 2a 2c 74 77 6f 20  rn[0] = [o*,two 
1150: 74 68 72 65 65 2c 66 6f 75 72 5d 0a 31 20 6f 6e  three,four].1 on
1160: 65 2c 74 77 6f 20 74 68 72 65 65 2c 66 6f 75 72  e,two three,four
1170: 7d 5d 0a                                         }].