class Rake::FileList

aliases: FileList

要約

このクラスは Array と基本的には同じです。

ファイルの操作をほんの少しだけ、簡単にするためのヘルパーメソッドがいくつか定義されています。

Rake::FileList は与えられた glob のパターンを使ってすぐにファイルを検索せずに、後で評価するためにそれを保存しておきます。

このことは、多くのファイルにマッチする多くの Rake::FileList を使用できることを意味します。実際に使用されると Rake::FileList が保持するパターンが評価されます。

目次

特異メソッド
インスタンスメソッド
定数

継承しているメソッド

Rake::Cloneableから継承しているメソッド

特異メソッド

self[*args] -> Rake::FileList[permalink][rdoc]

与えられたパターンをもとにして自身を初期化します。

[PARAM] args:
パターンを指定します。

require 'rake'

file_list1 = FileList.new('lib/**/*.rb', 'test/test*.rb')
file_list2 = FileList['lib/**/*.rb', 'test/test*.rb']

file_list1 == file_list2 # => true
new(*patterns) {|self| ... }[permalink][rdoc]

与えられたパターンをもとにして自身を初期化します。

ブロックが与えられている場合は、自身をブロックパラメータとしてブロックを評価します。

[PARAM] patterns:
パターンを指定します。

例:

file_list = FileList.new('lib/**/*.rb', 'test/test*.rb')

pkg_files = FileList.new('lib/**/*') do |fl|
  fl.exclude(/\bCVS\b/)
end

インスタンスメソッド

self * other -> Array | String[permalink][rdoc]

Array#* と動作を合わせるために再定義しています。

[SEE_ALSO] Array#*

self == array -> bool[permalink][rdoc]

自身を配列に変換してから与えられた配列と比較します。

[PARAM] array:
比較対象の配列を指定します。

# Rakefile での記載例とする

task default: :test_rake_app
task :test_rake_app do
  file_list = FileList.new('lib/**/*.rb', 'test/test*.rb')
  file_list == file_list.to_a # => true
end
clear_exclude -> self[permalink][rdoc]

登録されている除外リストをクリアします。


# Rakefile での記載例とする

task default: :test_rake_app
task :test_rake_app do
  file_list = FileList.new("test.rb", "test.bak")
  file_list.exclude("test.rb")
  # DEFAULT_IGNORE_PATTERNS と "test.rb" の双方の除外がクリアされる
  file_list.clear_exclude
  file_list # => ["test.rb", "test.bak"]
end
egrep(pattern) {|filename, count, line| ... }[permalink][rdoc]

与えられたパターンをファイルリストから grep のように検索します。

ブロックが与えられた場合は、マッチした行の情報 (ファイル名、行番号、マッチした行) がブロックに渡されてブロックが評価されます。ブロックが与えられなかった場合は、標準出力に、ファイル名:行番号:マッチした行を出力します。

[PARAM] pattern:
正規表現を指定します。

# Rakefile での記載例とする

IO.write("sample1", "line1\nline2\nline3\n")
IO.write("sample2", "line1\nline2\nline3\nline4\n")

task default: :test_rake_app
task :test_rake_app do

  file_list = FileList.new('sample*')
  file_list.egrep(/line/) # => 7

  file_list.egrep(/.*/) do |filename, count, line|
    "filename = #{filename}, count = #{count}, line = #{line}"
  end
end

# => "filename = sample1, count = 1, line = line1\n"
# => "filename = sample1, count = 2, line = line2\n"
# => "filename = sample1, count = 3, line = line3\n"
# => "filename = sample2, count = 1, line = line1\n"
# => "filename = sample2, count = 2, line = line2\n"
# => "filename = sample2, count = 3, line = line3\n"
# => "filename = sample2, count = 4, line = line4\n"
exclude(*patterns) {|entry| ... } -> self[permalink][rdoc]

自身から取り除くべきファイル名のパターンを自身の除外リストに登録します。

パターンとして正規表現、グロブパターン、文字列が使用可能です。さらにブロックが与えられた場合は、ブロックを評価して真になったエントリを削除します。

グロブパターンはファイルシステムに対して展開されます。もし、ファイルシステムに存在しないファイルを明示的にリストへ追加した場合、グロブパターンではそのファイルをリストから削除しません。

例:

FileList['a.c', 'b.c'].exclude("a.c") # => ['b.c']
FileList['a.c', 'b.c'].exclude(/^a/)  # => ['b.c']

# If "a.c" is a file, then ...
FileList['a.c', 'b.c'].exclude("a.*") # => ['b.c']

# If "a.c" is not a file, then ...
FileList['a.c', 'b.c'].exclude("a.*") # => ['a.c', 'b.c']
excluded_from_list?(file_name) -> bool[permalink][rdoc]

与えられたファイル名が除外される場合は、真を返します。そうでない場合は偽を返します。

[PARAM] file_name:
ファイル名を指定します。

# Rakefile での記載例とする

IO.write("test1.rb", "test")
IO.write("test2.rb", "test")

task default: :test_rake_app
task :test_rake_app do
  file_list = FileList.new("test1.rb", "test2.rb")
  file_list.exclude("test1.rb")
  file_list.excluded_from_list?("test1.rb") # => true
  file_list.excluded_from_list?("test2.rb") # => false
end
existing -> Rake::FileList[permalink][rdoc]

自身に含まれるファイルのうちファイルシステムに存在するファイルのみを含む Rake::FileList を返します。


# Rakefile での記載例とする

IO.write("test1.rb", "test")
IO.write("test2.rb", "test")

task default: :test_rake_app
task :test_rake_app do
  file_list = FileList.new("test1.rb", "test2.rb", "test3.rb")
  file_list.existing # => ["test1.rb", "test2.rb"]
end
existing! -> self[permalink][rdoc]

自身に含まれるファイルのうちファイルシステムに存在するファイルのみを含むように自身を変更して返します。


# Rakefile での記載例とする

IO.write("test1.rb", "test")
IO.write("test2.rb", "test")

task default: :test_rake_app
task :test_rake_app do
  file_list = FileList.new("test1.rb", "test2.rb", "test3.rb")
  file_list.existing! # => ["test1.rb", "test2.rb"]
  file_list           # => ["test1.rb", "test2.rb"]
end
ext(newext = '') -> Rake::FileList[permalink][rdoc]

各要素に String#ext を適用した新しい Rake::FileList を返します。


# Rakefile での記載例とする

IO.write("test1.rb", "test")
IO.write("test2.rb", "test")

task default: :test_rake_app
task :test_rake_app do
  file_list = FileList.new("test1.rb", "test2.rb", "test3.rb")
  file_list.ext(".erb") # => ["test1.erb", "test2.erb", "test3.erb"]
end

[SEE_ALSO] String#ext

gsub(pattern, replace) -> Rake::FileList[permalink][rdoc]

自身に含まれるファイルリストのそれぞれのエントリに対して String#gsub を実行し、結果を新しい Rake::FileList として返します。

例:

FileList['lib/test/file', 'x/y'].gsub(/\//, "\\") # => ['lib\\test\\file', 'x\\y']
gsub!(pattern, replace) -> self[permalink][rdoc]

自身に含まれるファイルリストのそれぞれのエントリに対して String#gsub を実行します。自身を破壊的に変更します。


# Rakefile での記載例とする

IO.write("test1.rb", "test")
IO.write("test2.rb", "test")

task default: :test_rake_app
task :test_rake_app do
  file_list = FileList.new("test1.rb", "test2.rb", "test3.rb")
  file_list.gsub!(/\.rb/, ".erb") # => ["test1.erb", "test2.erb", "test3.erb"]
  file_list                       # => ["test1.erb", "test2.erb", "test3.erb"]
end
import(array) -> self[permalink][rdoc]

与えられた配列を自身にインポートします。

[PARAM] array:
ファイル名のリストを指定します。

# Rakefile での記載例とする

IO.write("test1.rb", "test")
IO.write("test2.rb", "test")

task default: :test_rake_app
task :test_rake_app do
  file_list = FileList.new("test1.rb", "test2.rb", "test3.rb")
  file_list.import(["test4.rb", "test5.rb"]) # => ["test4.rb", "test5.rb", "test1.rb", "test2.rb", "test3.rb"]
  file_list                                  # => ["test4.rb", "test5.rb", "test1.rb", "test2.rb", "test3.rb"]
end
include(*filenames) -> self[permalink][rdoc]

ファイル名のパターンを追加リストに登録します。配列が与えられた場合、配列の各要素が追加されます。

[PARAM] filenames:
追加するファイル名のパターンを指定します。

例:

file_list.include("*.java", "*.cfg")
file_list.include %w( math.c lib.h *.o )
is_a?(klass) -> bool[permalink][rdoc]
kind_of?(klass) -> bool

自身に Array のフリをさせます。


# Rakefile での記載例とする

task default: :test_rake_app
task :test_rake_app do
  file_list = FileList.new("test1.rb", "test2.rb", "test3.rb")
  file_list.is_a?(Array)  # => true
  file_list.is_a?(String) # => false
end
pathmap(spec = nil) -> Rake::FileList[permalink][rdoc]

各要素に String#pathmap を適用した新しい Rake::FileList を返します。


# Rakefile での記載例とする

task default: :test_rake_app
task :test_rake_app do
  file_list = FileList.new("test1.rb", "test2.rb", "test3.rb")
  file_list.pathmap("%n") # => ["test1", "test2", "test3"]
end

[SEE_ALSO] String#pathmap

resolve -> self[permalink][rdoc]

追加リストと除外リストを評価します。


# Rakefile での記載例とする

IO.write("test.rb", "test")
IO.write("test.java", "test")
IO.write("test.js", "test")

task default: :test_rake_app
task :test_rake_app do
  file_list  = FileList.new("*.rb")
  file_list.include("*.java")
  file_list.exclude("*.js")
  file_list.resolve # => ["test.rb", "test.java"]
end
sub(pattern, replace) -> Rake::FileList[permalink][rdoc]

自身に含まれるファイルリストのそれぞれのエントリに対して String#sub を実行し、結果を新しい Rake::FileList として返します。

例:

FileList['a.c', 'b.c'].sub(/\.c$/, '.o')  => ['a.o', 'b.o']
sub!(pattern, replace) -> self[permalink][rdoc]

自身に含まれるファイルリストのそれぞれのエントリに対して String#sub を実行します。自身を破壊的に変更します。


# Rakefile での記載例とする

task default: :test_rake_app
task :test_rake_app do
  file_list = FileList['a.c', 'b.c']
  file_list.sub!(/\.c$/, '.o') # => ['a.o', 'b.o']
  file_list                    # => ['a.o', 'b.o']
end
to_a -> Array[permalink][rdoc]
to_ary -> Array

内部的な配列を返します。


# Rakefile での記載例とする

task default: :test_rake_app
task :test_rake_app do
  file_list = FileList['a.c', 'b.c']
  file_list.to_a # => ["a.c", "b.c"]
end
to_s -> String[permalink][rdoc]

全ての要素をスペースで連結した文字列を返します。


# Rakefile での記載例とする

task default: :test_rake_app
task :test_rake_app do
  file_list = FileList['a.c', 'b.c']
  file_list.to_s # => "a.c b.c"
end

定数

ARRAY_METHODS -> Array[permalink][rdoc]

Array に定義されているメソッドのリストです。

DEFAULT_IGNORE_PATTERNS -> Array[permalink][rdoc]

デフォルトで除外するパターンのリストです。

DEFAULT_IGNORE_PROCS[permalink][rdoc]

デフォルトで除外する手続きです。

DELEGATING_METHODS -> Array[permalink][rdoc]

委譲するメソッドのリストです。

MUST_DEFINE -> Array[permalink][rdoc]

必ず委譲しなければならない付加的なメソッドのリストです。

MUST_NOT_DEFINE -> Array[permalink][rdoc]

委譲してはいけないメソッドのリストです。

このリストに含まれているメソッドはこのクラスで定義しています。

SPECIAL_RETURN -> Array[permalink][rdoc]

Array のインスタンスを返すので委譲した後にラップする必要があるメソッドのリストです。