document.write('<div class="ruby" style="font-family: monospace;"><span style="color:#9966CC; font-weight:bold;">class</span> DirectoryScanner<br />');
document.write('<br />');
document.write('&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> initialize<br />');
document.write('&nbsp; &nbsp; @fileAction = <span style="color:#0000FF; font-weight:bold;">nil</span><br />');
document.write('&nbsp; &nbsp; @dirAction = <span style="color:#0000FF; font-weight:bold;">nil</span><br />');
document.write('&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />');
document.write('<br />');
document.write('&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> on_file<span style="color:#006600; font-weight:bold;">&#40;</span>&amp;action<span style="color:#006600; font-weight:bold;">&#41;</span><br />');
document.write('&nbsp; &nbsp; @fileAction = action<br />');
document.write('&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />');
document.write('&nbsp; <br />');
document.write('&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> on_dir<span style="color:#006600; font-weight:bold;">&#40;</span>&amp;action<span style="color:#006600; font-weight:bold;">&#41;</span><br />');
document.write('&nbsp; &nbsp; @dirAction = action<br />');
document.write('&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />');
document.write('&nbsp; <br />');
document.write('&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> scan_subtree<span style="color:#006600; font-weight:bold;">&#40;</span>parentPath<span style="color:#006600; font-weight:bold;">&#41;</span><br />');
document.write('&nbsp; &nbsp; Dir.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>parentPath<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> |dir|<br />');
document.write('&nbsp; &nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">for</span> file <span style="color:#9966CC; font-weight:bold;">in</span> dir<br />');
document.write('&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">next</span> <span style="color:#9966CC; font-weight:bold;">if</span> file == \'.\';<br />');
document.write('&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">next</span> <span style="color:#9966CC; font-weight:bold;">if</span> file == \'..\';<br />');
document.write('&nbsp; &nbsp; &nbsp; &nbsp; path = parentPath + File::Separator + file<br />');
document.write('&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">if</span> File.<span style="color:#9900CC;">directory</span>? path<br />');
document.write('&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @dirAction.<span style="color:#9900CC;">call</span><span style="color:#006600; font-weight:bold;">&#40;</span>file, path<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">unless</span> @dirAction.<span style="color:#0000FF; font-weight:bold;">nil</span>?<br />');
document.write('&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scan_subtree<span style="color:#006600; font-weight:bold;">&#40;</span>path<span style="color:#006600; font-weight:bold;">&#41;</span> <br />');
document.write('&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">else</span><br />');
document.write('&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @fileAction.<span style="color:#9900CC;">call</span><span style="color:#006600; font-weight:bold;">&#40;</span>file, path<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">unless</span> @fileAction.<span style="color:#0000FF; font-weight:bold;">nil</span>?<br />');
document.write('&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />');
document.write('&nbsp; &nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />');
document.write('&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><br />');
document.write('&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />');
document.write('<br />');
document.write('<span style="color:#9966CC; font-weight:bold;">end</span></div><div class="ruby" style="font-family: monospace;">scanner = DirectoryScanner.<span style="color:#9900CC;">new</span><br />');
document.write('scanner.<span style="color:#9900CC;">on_file</span> <span style="color:#006600; font-weight:bold;">&#123;</span> |file, path| <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;&nbsp; #{file}&quot;</span> <span style="color:#006600; font-weight:bold;">&#125;</span><br />');
document.write('scanner.<span style="color:#9900CC;">on_dir</span> <span style="color:#006600; font-weight:bold;">&#123;</span> |file, path| <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;#{path}&quot;</span> <span style="color:#006600; font-weight:bold;">&#125;</span><br />');
document.write('scanner.<span style="color:#9900CC;">scan_subtree</span><span style="color:#006600; font-weight:bold;">&#40;</span>\'c:/windows\'<span style="color:#006600; font-weight:bold;">&#41;</span></div>');
document.write('<br />&nbsp;<br /><div style="font-size: 12px">Brought to you by the community at <a href="http://www.bytemycode.com/snippets/snippet/501/1/" target="_blank">byteMyCode</a>.</div>');
