class CommonJS::Module

Attributes

exports[RW]
id[R]

Public Class Methods

new(id, env) click to toggle source
# File lib/commonjs/module.rb, line 7
def initialize(id, env)
  @id = id
  @env = env
  @exports = env.new_object
  @segments = id.split('/')
end

Public Instance Methods

require_function() click to toggle source
# File lib/commonjs/module.rb, line 14
def require_function
  @require_function ||= lambda do |*args|
    this, module_id = *args
    module_id ||= this #backwards compatibility with TRR < 0.10
    @env.require(expand(module_id))
  end
end

Private Instance Methods

expand(module_id) click to toggle source
# File lib/commonjs/module.rb, line 24
def expand(module_id)
  return module_id unless module_id =~ /(\.|\..)/
  module_id.split('/').inject(@segments[0..-2]) do |path, element|
    path.tap do
      if element == '.'
        #do nothing
      elsif element == '..'
        path.pop
      else
        path.push element
      end
    end
  end.join('/')
end