Module: Folder

Defined in:
lib/folder/magic.rb,
lib/folder/folder.rb,
lib/folder/magic_list.rb

Defined Under Namespace

Modules: MagicList Classes: Magic

Class Method Summary collapse

Class Method Details

.enter(path = '.', &block) ⇒ Object



5
6
7
8
9
10
11
12
13
# File 'lib/folder/folder.rb', line 5

def self.enter(path = '.', &block) 
  m = Magic.new      
  m.enter path    
  m.relative_to_me    
  if block_given? 
    yield m
  end
  m.exit
end

.enter_here(file, &block) ⇒ Object



15
16
17
18
19
20
21
22
23
24
# File 'lib/folder/folder.rb', line 15

def self.enter_here(file, &block) 
  m = Magic.new      
  path = File.dirname(file)
  m.enter path   
  m.relative_to_me     
  if block_given?
    yield m
  end
  m.exit
end

.here(file) ⇒ Object



124
125
126
127
# File 'lib/folder/folder.rb', line 124

def self.here(file)
  FileUtils.cd File.dirname(file)
  self
end

.rel_base(dir, source, &block) ⇒ Object



26
27
28
# File 'lib/folder/folder.rb', line 26

def self.rel_base(dir, source, &block)  
  enter(relative_path dir, source, &block) 
end

.relative_path(req_file, source, base_dir = nil) ⇒ Object

Folder.require_rel ‘spec/spec_helper’, __FILE__ require /spec/spec_helper.rb relative to current file location



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/folder/folder.rb', line 32

def self.relative_path(req_file, source, base_dir = nil)
  req_file = File.join(base_dir, req_file) if base_dir
  source_dir = File.dirname(source)
  req_dir = req_file.split('/')[0] || req_file 
  # puts "req_dir: #{req_dir}"
  
  req_file = req_file.split('/')[1]  
  folders = source_dir.split req_dir 
       
  folderlist = folders[1] ? folders[1].split('/') : folders[1]
  if folderlist    
    path_nav = folderlist.inject([]){|res, f| res << '..' }.join('/')     
  else
    path_nav = ''
  end
  File.expand_path(source_dir + "#{path_nav}/#{req_file}")  
end

.require_all(*folders) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/folder/folder.rb', line 77

def self.require_all(*folders)
  if folders.empty?           
    magics = Magic.new.all
    return magics.dup.extend(MagicList).do_require
  end
  folders.each do |folder|
    enter folder do |f| 
      fs = f.all        
      fs.dup.extend(MagicList).do_require 
    end
  end
end

.require_all_here(file_name) ⇒ Object



90
91
92
# File 'lib/folder/folder.rb', line 90

def self.require_all_here(file_name) 
  require_all File.dirname(file_name)               
end

.require_all_recursive(*folders) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/folder/folder.rb', line 64

def self.require_all_recursive(*folders)
  if folders.empty?           
    magics = Magic.new.all_recursive
    return magics.dup.extend(MagicList).do_require
  end
  folders.each do |folder|
    enter folder do |f| 
      fs = f.all_recursive
      fs.dup.extend(MagicList).do_require 
    end
  end
end

.require_all_recursive_here(file_name) ⇒ Object



94
95
96
# File 'lib/folder/folder.rb', line 94

def self.require_all_recursive_here(file_name) 
  require_all_recursive File.dirname(file_name)               
end

.require_me(*files) ⇒ Object



134
135
136
137
# File 'lib/folder/folder.rb', line 134

def self.require_me(*files) 
  magics = Magic.new.all(files)    
  return magics.dup.extend(MagicList).do_require     
end

.require_me_recursive(*files) ⇒ Object



129
130
131
132
# File 'lib/folder/folder.rb', line 129

def self.require_me_recursive(*files) 
  magics = Magic.new.all_recursive(files)    
  return magics.dup.extend(MagicList).do_require     
end

.require_rel(req_file, source, base_dir = nil) ⇒ Object

Folder.require_rel ‘spec/spec_helper’, __FILE__ require /spec/spec_helper.rb relative to current file location



52
53
54
# File 'lib/folder/folder.rb', line 52

def self.require_rel(req_file, source, base_dir = nil)
  require relative_path(req_file, source, base_dir)
end

.require_spec(req_file, source) ⇒ Object



56
57
58
# File 'lib/folder/folder.rb', line 56

def self.require_spec(req_file, source)
  require relative_path(req_file, source, 'spec')
end

.require_test(req_file, source) ⇒ Object



60
61
62
# File 'lib/folder/folder.rb', line 60

def self.require_test(req_file, source)
  require relative_path(req_file, source, 'test')
end

.show_require_all(*folders) ⇒ Object



111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/folder/folder.rb', line 111

def self.show_require_all(*folders)  
  if folders.empty?      
    magics = Magic.new.all
    return magics.dup.extend(MagicList).show_require
  end
  folders.each do |folder|
    enter folder do |f| 
      fs = f.all        
      fs.dup.extend(MagicList).show_require 
    end
  end
end

.show_require_all_recursive(*folders) ⇒ Object



98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/folder/folder.rb', line 98

def self.show_require_all_recursive(*folders)  
  if folders.empty?      
    magics = Magic.new.all_recursive
    return magics.dup.extend(MagicList).show_require
  end
  folders.each do |folder|
    enter folder do |f| 
      fs = f.all_recursive
      fs.dup.extend(MagicList).show_require 
    end
  end
end