Class: Fairy::VFile
- Inherits:
-
Object
- Object
- Fairy::VFile
- Defined in:
- lib/fairy/share/vfile.rb
Constant Summary collapse
- VFILE_EXT =
".vf"
- VFILE_HEADER =
"#!fairy vfile"
- VFILE_MAGIC =
/^#{Regexp.escape(VFILE_HEADER)}/
Instance Attribute Summary collapse
-
#base_name ⇒ Object
readonly
Returns the value of attribute base_name.
-
#vfile_name ⇒ Object
Returns the value of attribute vfile_name.
Class Method Summary collapse
Instance Method Summary collapse
- #create_vfile ⇒ Object
- #each_real_file_name(&block) ⇒ Object (also: #each)
-
#initialize ⇒ VFile
constructor
A new instance of VFile.
-
#marshal_dump ⇒ Object
Ruby 1.9 mershal 対応 - Ruby 1.9 では mutex を dump できない.
- #marshal_load(ary) ⇒ Object
- #real_file_names ⇒ Object
- #real_file_names=(val) ⇒ Object
-
#set_real_file(no, url) ⇒ Object
base_regexp = /^#Regexp.escape(base)/ fn = nil @real_file_names_mutex.synchronize do ary = @real_file_names.select{|e| base_regexp =~ e}.sort if ary.empty? fn = “#base-000” else fn = ary.last.succ end @real_file_names.push fn end fn end.
- #vfile(path) ⇒ Object
Constructor Details
#initialize ⇒ VFile
Returns a new instance of VFile.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/fairy/share/vfile.rb', line 48 def initialize @vfile_name = nil @real_file_names = [] @real_file_names_mutex = Mutex.new @real_file_names_cv = XThread::ConditionVariable.new @base_name = nil @BASE_NAME_CONVERTER = nil if CONF.VF_BASE_NAME_CONVERTER @BASE_NAME_CONVERTER = eval(CONF.VF_BASE_NAME_CONVERTER) end end |
Instance Attribute Details
#base_name ⇒ Object (readonly)
Returns the value of attribute base_name.
64 65 66 |
# File 'lib/fairy/share/vfile.rb', line 64 def base_name @base_name end |
#vfile_name ⇒ Object
Returns the value of attribute vfile_name.
63 64 65 |
# File 'lib/fairy/share/vfile.rb', line 63 def vfile_name @vfile_name end |
Class Method Details
.real_files(real_files) ⇒ Object
42 43 44 45 46 |
# File 'lib/fairy/share/vfile.rb', line 42 def VFile.real_files(real_files) vfile = new vfile.real_file_names = real_files vfile end |
.vfile(path) ⇒ Object
36 37 38 39 40 |
# File 'lib/fairy/share/vfile.rb', line 36 def VFile.vfile(path) vfile = new vfile.vfile(path) vfile end |
.vfile?(path) ⇒ Boolean
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/fairy/share/vfile.rb', line 18 def VFile.vfile?(path) if File.extname(path) == VFILE_EXT return true end if !File.exist?(path) return false end File.open(path) do |io| l = io.gets begin return VFILE_MAGIC =~ l rescue ArgumentError return false end end end |
Instance Method Details
#create_vfile ⇒ Object
122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/fairy/share/vfile.rb', line 122 def create_vfile File.open(@vfile_name, "w") do |io| io.puts VFILE_HEADER io.puts @real_file_names_mutex.synchronize do @real_file_names.each do |fn| io.puts fn end end end end |
#each_real_file_name(&block) ⇒ Object Also known as: each
117 118 119 |
# File 'lib/fairy/share/vfile.rb', line 117 def each_real_file_name(&block) real_file_names.dup.each &block end |
#marshal_dump ⇒ Object
Ruby 1.9 mershal 対応
- Ruby 1.9
173 174 175 |
# File 'lib/fairy/share/vfile.rb', line 173 def marshal_dump [@vfile_name, @real_file_names] end |
#marshal_load(ary) ⇒ Object
177 178 179 180 181 182 |
# File 'lib/fairy/share/vfile.rb', line 177 def marshal_load(ary) @vfile_name = ary[0] @real_file_names = ary[1] @real_file_names_mutex = Mutex.new @real_file_names_cv = XThread::ConditionVariable.new end |
#real_file_names ⇒ Object
83 84 85 86 87 |
# File 'lib/fairy/share/vfile.rb', line 83 def real_file_names @real_file_names_mutex.synchronize do @real_file_names end end |
#real_file_names=(val) ⇒ Object
90 91 92 93 94 |
# File 'lib/fairy/share/vfile.rb', line 90 def real_file_names=(val) @real_file_names_mutex.synchronize do @real_file_names=val end end |
#set_real_file(no, url) ⇒ Object
base_regexp = /^#Regexp.escape(base)/
fn = nil
@real_file_names_mutex.synchronize do
ary = @real_file_names.select{|e| base_regexp =~ e}.sort if ary.empty? fn = “#base-000” else fn = ary.last.succ end @real_file_names.push fn
end
fn
end
165 166 167 168 169 |
# File 'lib/fairy/share/vfile.rb', line 165 def set_real_file(no, url) @real_file_names_mutex.synchronize do @real_file_names[no] = url end end |
#vfile(path) ⇒ Object
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/fairy/share/vfile.rb', line 96 def vfile(path) File.open(path) do |io| l = io.gets unless VFILE_MAGIC =~ l ERR::Raise NoVFile, path end files = [] for l in io l.chomp! next if l =~ /^\s*$/ next if l =~ /^\s*#.*$/ files.push l end @real_file_names_mutex.synchronize do @real_file_names = files end end end |