⌈⌋ ⎇ branch:  Bitrhythm


Hex Artifact Content

Artifact f66e4a37c38e89aec1f6f95951be968bf39c867b55acdfb138907300741707b1:


0000: 2f 2a 2a 0a 20 2a 20 57 61 6c 6b 20 64 6f 77 6e  /**. * Walk down
0010: 20 72 65 63 75 72 73 69 76 65 6c 79 20 61 6c 6c   recursively all
0020: 20 74 68 65 20 63 68 69 6c 64 72 65 6e 20 74 61   the children ta
0030: 67 73 20 73 74 61 72 74 69 6e 67 20 64 6f 6d 20  gs starting dom 
0040: 6e 6f 64 65 0a 20 2a 20 40 70 61 72 61 6d 20 20  node. * @param  
0050: 20 7b 20 4f 62 6a 65 63 74 20 7d 20 20 20 64 6f   { Object }   do
0060: 6d 20 2d 20 73 74 61 72 74 69 6e 67 20 6e 6f 64  m - starting nod
0070: 65 20 77 68 65 72 65 20 77 65 20 77 69 6c 6c 20  e where we will 
0080: 73 74 61 72 74 20 74 68 65 20 72 65 63 75 72 73  start the recurs
0090: 69 6f 6e 0a 20 2a 20 40 70 61 72 61 6d 20 20 20  ion. * @param   
00a0: 7b 20 46 75 6e 63 74 69 6f 6e 20 7d 20 66 6e 20  { Function } fn 
00b0: 2d 20 63 61 6c 6c 62 61 63 6b 20 74 6f 20 74 72  - callback to tr
00c0: 61 6e 73 66 6f 72 6d 20 74 68 65 20 63 68 69 6c  ansform the chil
00d0: 64 20 6e 6f 64 65 20 6a 75 73 74 20 66 6f 75 6e  d node just foun
00e0: 64 0a 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20  d. * @param   { 
00f0: 4f 62 6a 65 63 74 20 7d 20 20 20 63 6f 6e 74 65  Object }   conte
0100: 78 74 20 2d 20 66 6e 20 63 61 6e 20 6f 70 74 69  xt - fn can opti
0110: 6f 6e 61 6c 6c 79 20 72 65 74 75 72 6e 20 61 6e  onally return an
0120: 20 6f 62 6a 65 63 74 2c 20 77 68 69 63 68 20 69   object, which i
0130: 73 20 70 61 73 73 65 64 20 74 6f 20 63 68 69 6c  s passed to chil
0140: 64 72 65 6e 0a 20 2a 2f 0a 65 78 70 6f 72 74 20  dren. */.export 
0150: 64 65 66 61 75 6c 74 20 66 75 6e 63 74 69 6f 6e  default function
0160: 20 77 61 6c 6b 4e 6f 64 65 73 28 64 6f 6d 2c 20   walkNodes(dom, 
0170: 66 6e 2c 20 63 6f 6e 74 65 78 74 29 20 7b 0a 20  fn, context) {. 
0180: 20 69 66 20 28 64 6f 6d 29 20 7b 0a 20 20 20 20   if (dom) {.    
0190: 63 6f 6e 73 74 20 72 65 73 20 3d 20 66 6e 28 64  const res = fn(d
01a0: 6f 6d 2c 20 63 6f 6e 74 65 78 74 29 0a 20 20 20  om, context).   
01b0: 20 6c 65 74 20 6e 65 78 74 0a 20 20 20 20 2f 2f   let next.    //
01c0: 20 73 74 6f 70 20 74 68 65 20 72 65 63 75 72 73   stop the recurs
01d0: 69 6f 6e 0a 20 20 20 20 69 66 20 28 72 65 73 20  ion.    if (res 
01e0: 3d 3d 3d 20 66 61 6c 73 65 29 20 72 65 74 75 72  === false) retur
01f0: 6e 0a 0a 20 20 20 20 64 6f 6d 20 3d 20 64 6f 6d  n..    dom = dom
0200: 2e 66 69 72 73 74 43 68 69 6c 64 0a 0a 20 20 20  .firstChild..   
0210: 20 77 68 69 6c 65 20 28 64 6f 6d 29 20 7b 0a 20   while (dom) {. 
0220: 20 20 20 20 20 6e 65 78 74 20 3d 20 64 6f 6d 2e       next = dom.
0230: 6e 65 78 74 53 69 62 6c 69 6e 67 0a 20 20 20 20  nextSibling.    
0240: 20 20 77 61 6c 6b 4e 6f 64 65 73 28 64 6f 6d 2c    walkNodes(dom,
0250: 20 66 6e 2c 20 72 65 73 29 0a 20 20 20 20 20 20   fn, res).      
0260: 64 6f 6d 20 3d 20 6e 65 78 74 0a 20 20 20 20 7d  dom = next.    }
0270: 0a 20 20 7d 0a 7d                                .  }.}