Top Level Namespace

Defined Under Namespace

Modules: Browser, Nokogiri, Titleize Classes: Array, BigDecimal, Element, FalseClass, Hash, HashObject, Method, NilClass, Numeric, Object, Proc, Roda, String, Symbol, TrueClass, Wedge

Instance Method Summary collapse

Instance Method Details

#require(name) ⇒ Object

rewrite require



3
4
5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/wedge/require.rb', line 3

def require(name)
  Kernel.require name

  return unless defined?(Wedge) && Wedge.respond_to?(:config)

  if name[/\Awedge/] || name[Dir.pwd]
    name       = name.sub("#{Dir.pwd}/", '').gsub(/\.rb$/, '').gsub(/\//, '__')
    caller_str = "#{caller[0]}".gsub(/(#{Dir.pwd}\/|.*(?=wedge))/, '').gsub(/:.+$/, '').gsub(/\.rb$/, '').gsub(/\//, '__')

    if !caller_str['.'] && !(Wedge.config.requires[caller_str] ||= []).include?(name)
      Wedge.config.requires[caller_str] << name
    end
  end
end

#require_relative(name) ⇒ Object

rewrite require_relative



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/wedge/require.rb', line 19

def require_relative(name)
  caller_str       = "#{caller[0]}".gsub(/:.+$/, '').gsub(/\.rb$/, '')
  caller_path_name = caller_str.gsub(%r{(#{Dir.pwd}/|.*wedge)}, '').gsub(/:.+$/, '').gsub(/^\//, '')

  path_name = caller_path_name.gsub(/(?<=\/)([^\/]*)$/, "#{name}")
  path_name = File.expand_path(path_name).sub("#{Dir.pwd}/", '') if path_name['..']
  path_name = path_name.gsub(/\//, '__')
  file      = caller_str.gsub(/(?<=\/)([^\/]*)$/, "#{name}")
  caller_path_name = caller_path_name.gsub(/\//, '__')

  if !caller_path_name['.'] && !(Wedge.config.requires[caller_path_name] ||= []).include?(path_name)
    Wedge.config.requires[caller_path_name] << path_name
  end

  Kernel.require file
end