<?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Class: FileList</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" /> <script type="text/javascript"> // <![CDATA[ function popupCode( url ) { window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400") } function toggleCode( id ) { if ( document.getElementById ) elem = document.getElementById( id ); else if ( document.all ) elem = eval( "document.all." + id ); else return false; elemStyle = elem.style; if ( elemStyle.display != "block" ) { elemStyle.display = "block" } else { elemStyle.display = "none" } return true; } // Make codeblocks hidden by default document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" ) // ]]> </script> </head> <body> <div id="classHeader"> <table class="header-table"> <tr class="top-aligned-row"> <td><strong>Class</strong></td> <td class="class-name-in-header">FileList</td> </tr> <tr class="top-aligned-row"> <td><strong>In:</strong></td> <td> <a href="../files/lib/carat/filelist_rb.html"> lib/carat/filelist.rb </a> <br /> </td> </tr> <tr class="top-aligned-row"> <td><strong>Parent:</strong></td> <td> <a href="Array.html"> Array </a> </td> </tr> </table> </div> <!-- banner header --> <div id="bodyContent"> <div id="contextContent"> <div id="description"> <h1><a href="FileList.html">FileList</a></h1> <p> A <a href="FileList.html">FileList</a> is essentially an array with a few helper methods defined to make file manipulation a bit easier. It works in a fashion similar to Dir.glob. </p> <h2>Synopsis</h2> <pre> require 'trix/filelist' fl = FileList.new fl.include('./**/*') fl.exclude('./*~') </pre> <h2>Legal</h2> <p> Ported from Rake Copyright (C) 2002 Jim Welch </p> <p> You may distribute this software under the same terms as Ruby (see the file COPYING that was distributed with this library). </p> <h2>History</h2> <pre> $id: filelist.rb 2004/11/27 10:00:01 transami Exp $ </pre> </div> </div> <div id="method-list"> <h3 class="section-bar">Methods</h3> <div class="name-list"> <a href="#M000345">[]</a> <a href="#M000330">add</a> <a href="#M000343">add_matching</a> <a href="#M000334">calculate_exclude_regexp</a> <a href="#M000332">clear_exclude</a> <a href="#M000347">clear_ignore_patterns</a> <a href="#M000331">exclude</a> <a href="#M000344">exclude?</a> <a href="#M000338">gsub</a> <a href="#M000340">gsub!</a> <a href="#M000329">include</a> <a href="#M000328">new</a> <a href="#M000333">resolve</a> <a href="#M000335">resolve_add</a> <a href="#M000336">resolve_exclude</a> <a href="#M000346">select_default_ignore_patterns</a> <a href="#M000337">sub</a> <a href="#M000339">sub!</a> <a href="#M000341">to_s</a> <a href="#M000342">to_str</a> </div> </div> </div> <!-- if includes --> <div id="section"> <div id="constants-list"> <h3 class="section-bar">Constants</h3> <div class="name-list"> <table summary="Constants"> <tr class="top-aligned-row context-row"> <td class="context-item-name">DEFAULT_IGNORE_PATTERNS</td> <td>=</td> <td class="context-item-value">[ /(^|[\/\\])CVS([\/\\]|$)/, /\.bak$/, /~$/, /(^|[\/\\])core$/</td> </tr> </table> </div> </div> <!-- if method_list --> <div id="methods"> <h3 class="section-bar">Public Class methods</h3> <div id="method-M000345" class="method-detail"> <a name="M000345"></a> <div class="method-heading"> <a href="#M000345" class="method-signature"> <span class="method-name">[]</span><span class="method-args">(*args)</span> </a> </div> <div class="method-description"> <p> Create a new file list including the files listed. Similar to: </p> <pre> FileList.new(*args) </pre> <p><a class="source-toggle" href="#" onclick="toggleCode('M000345-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000345-source"> <pre> <span class="ruby-comment cmt"># File lib/carat/filelist.rb, line 253</span> <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>) <span class="ruby-identifier">new</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>) <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000347" class="method-detail"> <a name="M000347"></a> <div class="method-heading"> <a href="#M000347" class="method-signature"> <span class="method-name">clear_ignore_patterns</span><span class="method-args">()</span> </a> </div> <div class="method-description"> <p> Clear the ignore patterns. </p> <p><a class="source-toggle" href="#" onclick="toggleCode('M000347-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000347-source"> <pre> <span class="ruby-comment cmt"># File lib/carat/filelist.rb, line 272</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clear_ignore_patterns</span> <span class="ruby-ivar">@exclude_patterns</span> = [ <span class="ruby-regexp re">/^$/</span> ] <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000328" class="method-detail"> <a name="M000328"></a> <div class="method-heading"> <a href="#M000328" class="method-signature"> <span class="method-name">new</span><span class="method-args">(*patterns) {|self if block_given?| ...}</span> </a> </div> <div class="method-description"> <p> Create a file list from the globbable patterns given. If you wish to perform multiple includes or excludes at object build time, use the "yield self" pattern. </p> <p> Example: </p> <pre> file_list = FileList.new['lib/**/*.rb', 'test/test*.rb'] pkg_files = FileList.new['lib/**/*'] do |fl| fl.exclude(/\bCVS\b/) end </pre> <p><a class="source-toggle" href="#" onclick="toggleCode('M000328-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000328-source"> <pre> <span class="ruby-comment cmt"># File lib/carat/filelist.rb, line 58</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">patterns</span>) <span class="ruby-ivar">@pending_add</span> = [] <span class="ruby-ivar">@pending</span> = <span class="ruby-keyword kw">false</span> <span class="ruby-ivar">@exclude_patterns</span> = <span class="ruby-constant">DEFAULT_IGNORE_PATTERNS</span>.<span class="ruby-identifier">dup</span> <span class="ruby-ivar">@exclude_re</span> = <span class="ruby-keyword kw">nil</span> <span class="ruby-comment cmt"># @extent_only = false</span> <span class="ruby-identifier">patterns</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">pattern</span><span class="ruby-operator">|</span> <span class="ruby-identifier">include</span>(<span class="ruby-identifier">pattern</span>) } <span class="ruby-keyword kw">yield</span> <span class="ruby-keyword kw">self</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000346" class="method-detail"> <a name="M000346"></a> <div class="method-heading"> <a href="#M000346" class="method-signature"> <span class="method-name">select_default_ignore_patterns</span><span class="method-args">()</span> </a> </div> <div class="method-description"> <p> Set the ignore patterns back to the default value. The default patterns will ignore files </p> <ul> <li>containing "CVS" in the file path </li> <li>ending with ".bak" </li> <li>ending with "~" </li> <li>named "core" </li> </ul> <p> Note that file names beginning with "." are automatically ignored by Ruby’s glob patterns and are not specifically listed in the ignore patterns. </p> <p><a class="source-toggle" href="#" onclick="toggleCode('M000346-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000346-source"> <pre> <span class="ruby-comment cmt"># File lib/carat/filelist.rb, line 267</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">select_default_ignore_patterns</span> <span class="ruby-ivar">@exclude_patterns</span> = <span class="ruby-constant">DEFAULT_IGNORE_PATTERNS</span>.<span class="ruby-identifier">dup</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <h3 class="section-bar">Public Instance methods</h3> <div id="method-M000330" class="method-detail"> <a name="M000330"></a> <div class="method-heading"> <span class="method-name">add</span><span class="method-args">(*filenames)</span> </div> <div class="method-description"> <p> Alias for <a href="FileList.html#M000329">include</a> </p> </div> </div> <div id="method-M000334" class="method-detail"> <a name="M000334"></a> <div class="method-heading"> <a href="#M000334" class="method-signature"> <span class="method-name">calculate_exclude_regexp</span><span class="method-args">()</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000334-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000334-source"> <pre> <span class="ruby-comment cmt"># File lib/carat/filelist.rb, line 135</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">calculate_exclude_regexp</span> <span class="ruby-identifier">ignores</span> = [] <span class="ruby-ivar">@exclude_patterns</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pat</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">pat</span> <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Regexp</span> <span class="ruby-identifier">ignores</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">pat</span> <span class="ruby-keyword kw">when</span> <span class="ruby-regexp re">/[*.]/</span> <span class="ruby-constant">Dir</span>[<span class="ruby-identifier">pat</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">ignores</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">p</span> <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">else</span> <span class="ruby-identifier">ignores</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">quote</span>(<span class="ruby-identifier">pat</span>) <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ignores</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-ivar">@exclude_re</span> = <span class="ruby-regexp re">/^$/</span> <span class="ruby-keyword kw">else</span> <span class="ruby-identifier">re_str</span> = <span class="ruby-identifier">ignores</span>.<span class="ruby-identifier">collect</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-value str">"("</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-value str">")"</span> }.<span class="ruby-identifier">join</span>(<span class="ruby-value str">"|"</span>) <span class="ruby-ivar">@exclude_re</span> = <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">re_str</span>) <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000332" class="method-detail"> <a name="M000332"></a> <div class="method-heading"> <a href="#M000332" class="method-signature"> <span class="method-name">clear_exclude</span><span class="method-args">()</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000332-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000332-source"> <pre> <span class="ruby-comment cmt"># File lib/carat/filelist.rb, line 121</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clear_exclude</span> <span class="ruby-ivar">@exclude_patterns</span> = [] <span class="ruby-identifier">calculate_exclude_regexp</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span> <span class="ruby-ivar">@pending</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000331" class="method-detail"> <a name="M000331"></a> <div class="method-heading"> <a href="#M000331" class="method-signature"> <span class="method-name">exclude</span><span class="method-args">(*patterns)</span> </a> </div> <div class="method-description"> <p> Register a list of file name patterns that should be excluded from the list. Patterns may be regular expressions, glob patterns or regular strings. </p> <p> Note that glob patterns are expanded against the file system. If a file is explicitly added to a file list, but does not exist in the file system, then an glob pattern in the exclude list will not exclude the file. </p> <p> Examples: </p> <pre> FileList['a.c', 'b.c'].exclude("a.c") => ['b.c'] FileList['a.c', 'b.c'].exclude(/^a/) => ['b.c'] </pre> <p> If "a.c" is a file, then … </p> <pre> FileList['a.c', 'b.c'].exclude("a.*") => ['b.c'] </pre> <p> If "a.c" is not a file, then … </p> <pre> FileList['a.c', 'b.c'].exclude("a.*") => ['a.c', 'b.c'] </pre> <p><a class="source-toggle" href="#" onclick="toggleCode('M000331-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000331-source"> <pre> <span class="ruby-comment cmt"># File lib/carat/filelist.rb, line 111</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">exclude</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">patterns</span>) <span class="ruby-comment cmt"># TODO: check for pending</span> <span class="ruby-identifier">patterns</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pat</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@exclude_patterns</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">pat</span> <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span> <span class="ruby-ivar">@pending</span> <span class="ruby-identifier">calculate_exclude_regexp</span> <span class="ruby-identifier">reject!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">fn</span><span class="ruby-operator">|</span> <span class="ruby-identifier">fn</span> <span class="ruby-operator">=~</span> <span class="ruby-ivar">@exclude_re</span> } <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000344" class="method-detail"> <a name="M000344"></a> <div class="method-heading"> <a href="#M000344" class="method-signature"> <span class="method-name">exclude?</span><span class="method-args">(fn)</span> </a> </div> <div class="method-description"> <p> Should the given file name be excluded? </p> <p><a class="source-toggle" href="#" onclick="toggleCode('M000344-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000344-source"> <pre> <span class="ruby-comment cmt"># File lib/carat/filelist.rb, line 236</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">exclude?</span>(<span class="ruby-identifier">fn</span>) <span class="ruby-identifier">calculate_exclude_regexp</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@exclude_re</span> <span class="ruby-identifier">fn</span> <span class="ruby-operator">=~</span> <span class="ruby-ivar">@exclude_re</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000338" class="method-detail"> <a name="M000338"></a> <div class="method-heading"> <a href="#M000338" class="method-signature"> <span class="method-name">gsub</span><span class="method-args">(pat, rep)</span> </a> </div> <div class="method-description"> <p> Return a new <a href="FileList.html">FileList</a> with the results of running <tt>gsub</tt> against each element of the original list. </p> <p> Example: </p> <pre> FileList['lib/test/file', 'x/y'].gsub(/\//, "\\") => ['lib\\test\\file', 'x\\y'] </pre> <p><a class="source-toggle" href="#" onclick="toggleCode('M000338-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000338-source"> <pre> <span class="ruby-comment cmt"># File lib/carat/filelist.rb, line 200</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">gsub</span>(<span class="ruby-identifier">pat</span>, <span class="ruby-identifier">rep</span>) <span class="ruby-identifier">inject</span>(<span class="ruby-constant">FileList</span>.<span class="ruby-identifier">new</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">res</span>, <span class="ruby-identifier">fn</span><span class="ruby-operator">|</span> <span class="ruby-identifier">res</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">fn</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-identifier">pat</span>,<span class="ruby-identifier">rep</span>) } <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000340" class="method-detail"> <a name="M000340"></a> <div class="method-heading"> <a href="#M000340" class="method-signature"> <span class="method-name">gsub!</span><span class="method-args">(pat, rep)</span> </a> </div> <div class="method-description"> <p> Same as <tt>gsub</tt> except that the original file list is modified. </p> <p><a class="source-toggle" href="#" onclick="toggleCode('M000340-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000340-source"> <pre> <span class="ruby-comment cmt"># File lib/carat/filelist.rb, line 211</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">gsub!</span>(<span class="ruby-identifier">pat</span>, <span class="ruby-identifier">rep</span>) <span class="ruby-identifier">each_with_index</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">fn</span>, <span class="ruby-identifier">i</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">i</span>] = <span class="ruby-identifier">fn</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-identifier">pat</span>,<span class="ruby-identifier">rep</span>) } <span class="ruby-keyword kw">self</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000329" class="method-detail"> <a name="M000329"></a> <div class="method-heading"> <a href="#M000329" class="method-signature"> <span class="method-name">include</span><span class="method-args">(*filenames)</span> </a> </div> <div class="method-description"> <p> Add file names defined by glob patterns to the file list. If an array is given, add each element of the array. </p> <p> Example: </p> <pre> file_list.include("*.java", "*.cfg") file_list.include %w( math.c lib.h *.o ) </pre> <p><a class="source-toggle" href="#" onclick="toggleCode('M000329-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000329-source"> <pre> <span class="ruby-comment cmt"># File lib/carat/filelist.rb, line 75</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">include</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">filenames</span>) <span class="ruby-comment cmt"># TODO: check for pending</span> <span class="ruby-identifier">filenames</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">fn</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@pending_add</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">fn</span> <span class="ruby-keyword kw">end</span> <span class="ruby-ivar">@pending</span> = <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">self</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000333" class="method-detail"> <a name="M000333"></a> <div class="method-heading"> <a href="#M000333" class="method-signature"> <span class="method-name">resolve</span><span class="method-args">()</span> </a> </div> <div class="method-description"> <p> Resolve all the pending adds now. </p> <p><a class="source-toggle" href="#" onclick="toggleCode('M000333-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000333-source"> <pre> <span class="ruby-comment cmt"># File lib/carat/filelist.rb, line 127</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resolve</span> <span class="ruby-ivar">@pending</span> = <span class="ruby-keyword kw">false</span> <span class="ruby-ivar">@pending_add</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">fn</span><span class="ruby-operator">|</span> <span class="ruby-identifier">resolve_add</span>(<span class="ruby-identifier">fn</span>) <span class="ruby-keyword kw">end</span> <span class="ruby-ivar">@pending_add</span> = [] <span class="ruby-identifier">resolve_exclude</span> <span class="ruby-keyword kw">self</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000335" class="method-detail"> <a name="M000335"></a> <div class="method-heading"> <a href="#M000335" class="method-signature"> <span class="method-name">resolve_add</span><span class="method-args">(fn)</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000335-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000335-source"> <pre> <span class="ruby-comment cmt"># File lib/carat/filelist.rb, line 155</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resolve_add</span>(<span class="ruby-identifier">fn</span>) <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">fn</span> <span class="ruby-keyword kw">when</span> <span class="ruby-constant">NilClass</span> <span class="ruby-comment cmt"># ignore</span> <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Array</span> <span class="ruby-identifier">fn</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">resolve_add</span>(<span class="ruby-identifier">f</span>) } <span class="ruby-keyword kw">when</span> <span class="ruby-regexp re">%r{[*?]}</span> <span class="ruby-identifier">add_matching</span>(<span class="ruby-identifier">fn</span>) <span class="ruby-keyword kw">else</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">fn</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">FileTest</span>.<span class="ruby-identifier">exists?</span>( <span class="ruby-identifier">fn</span> ) <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000336" class="method-detail"> <a name="M000336"></a> <div class="method-heading"> <a href="#M000336" class="method-signature"> <span class="method-name">resolve_exclude</span><span class="method-args">()</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000336-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000336-source"> <pre> <span class="ruby-comment cmt"># File lib/carat/filelist.rb, line 168</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resolve_exclude</span> <span class="ruby-ivar">@exclude_patterns</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pat</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">pat</span> <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Regexp</span> <span class="ruby-identifier">reject!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">fn</span><span class="ruby-operator">|</span> <span class="ruby-identifier">fn</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">pat</span> } <span class="ruby-keyword kw">when</span> <span class="ruby-regexp re">/[*.]/</span> <span class="ruby-identifier">reject_list</span> = <span class="ruby-constant">Dir</span>[<span class="ruby-identifier">pat</span>] <span class="ruby-identifier">reject!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">fn</span><span class="ruby-operator">|</span> <span class="ruby-identifier">reject_list</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">fn</span>) } <span class="ruby-keyword kw">else</span> <span class="ruby-identifier">reject!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">fn</span><span class="ruby-operator">|</span> <span class="ruby-identifier">fn</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">pat</span> } <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">self</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000337" class="method-detail"> <a name="M000337"></a> <div class="method-heading"> <a href="#M000337" class="method-signature"> <span class="method-name">sub</span><span class="method-args">(pat, rep)</span> </a> </div> <div class="method-description"> <p> Return a new <a href="FileList.html">FileList</a> with the results of running <tt>sub</tt> against each element of the oringal list. </p> <p> Example: </p> <pre> FileList['a.c', 'b.c'].sub(/\.c$/, '.o') => ['a.o', 'b.o'] </pre> <p><a class="source-toggle" href="#" onclick="toggleCode('M000337-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000337-source"> <pre> <span class="ruby-comment cmt"># File lib/carat/filelist.rb, line 189</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sub</span>(<span class="ruby-identifier">pat</span>, <span class="ruby-identifier">rep</span>) <span class="ruby-identifier">inject</span>(<span class="ruby-constant">FileList</span>.<span class="ruby-identifier">new</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">res</span>, <span class="ruby-identifier">fn</span><span class="ruby-operator">|</span> <span class="ruby-identifier">res</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">fn</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-identifier">pat</span>,<span class="ruby-identifier">rep</span>) } <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000339" class="method-detail"> <a name="M000339"></a> <div class="method-heading"> <a href="#M000339" class="method-signature"> <span class="method-name">sub!</span><span class="method-args">(pat, rep)</span> </a> </div> <div class="method-description"> <p> Same as <tt>sub</tt> except that the oringal file list is modified. </p> <p><a class="source-toggle" href="#" onclick="toggleCode('M000339-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000339-source"> <pre> <span class="ruby-comment cmt"># File lib/carat/filelist.rb, line 205</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sub!</span>(<span class="ruby-identifier">pat</span>, <span class="ruby-identifier">rep</span>) <span class="ruby-identifier">each_with_index</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">fn</span>, <span class="ruby-identifier">i</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">i</span>] = <span class="ruby-identifier">fn</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-identifier">pat</span>,<span class="ruby-identifier">rep</span>) } <span class="ruby-keyword kw">self</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000341" class="method-detail"> <a name="M000341"></a> <div class="method-heading"> <a href="#M000341" class="method-signature"> <span class="method-name">to_s</span><span class="method-args">()</span> </a> </div> <div class="method-description"> <p> Convert a <a href="FileList.html">FileList</a> to a string by joining all elements with a space. </p> <p><a class="source-toggle" href="#" onclick="toggleCode('M000341-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000341-source"> <pre> <span class="ruby-comment cmt"># File lib/carat/filelist.rb, line 217</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span> <span class="ruby-identifier">resolve</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">' '</span>) <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000342" class="method-detail"> <a name="M000342"></a> <div class="method-heading"> <a href="#M000342" class="method-signature"> <span class="method-name">to_str</span><span class="method-args">()</span> </a> </div> <div class="method-description"> <p> Convert a <a href="FileList.html">FileList</a> to a string prior to resolving. </p> <p><a class="source-toggle" href="#" onclick="toggleCode('M000342-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000342-source"> <pre> <span class="ruby-comment cmt"># File lib/carat/filelist.rb, line 223</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_str</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">' '</span>) <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <h3 class="section-bar">Private Instance methods</h3> <div id="method-M000343" class="method-detail"> <a name="M000343"></a> <div class="method-heading"> <a href="#M000343" class="method-signature"> <span class="method-name">add_matching</span><span class="method-args">(pattern)</span> </a> </div> <div class="method-description"> <p> Add matching glob patterns. </p> <p><a class="source-toggle" href="#" onclick="toggleCode('M000343-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000343-source"> <pre> <span class="ruby-comment cmt"># File lib/carat/filelist.rb, line 228</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_matching</span>(<span class="ruby-identifier">pattern</span>) <span class="ruby-constant">Dir</span>[<span class="ruby-identifier">pattern</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">fn</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">fn</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">exclude?</span>(<span class="ruby-identifier">fn</span>) <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> </div> </div> <div id="validator-badges"> <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p> </div> </body> </html>