class Gem::StubSpecification

def self.default_gemspec_stub(filename, base_dir, gems_dir)

def self.default_gemspec_stub(filename, base_dir, gems_dir)
  new filename, base_dir, gems_dir, true
end

def self.gemspec_stub(filename, base_dir, gems_dir)

def self.gemspec_stub(filename, base_dir, gems_dir)
  new filename, base_dir, gems_dir, false
end

def activated?

def activated?
  @activated ||=
  begin
    loaded = Gem.loaded_specs[name]
    loaded && loaded.version == version
  end
end

def build_extensions # :nodoc:

:nodoc:
def build_extensions # :nodoc:
  return if default_gem?
  return if extensions.empty?
  to_spec.build_extensions
end

def data

def data
  unless @data
    begin
      saved_lineno = $.
      File.open loaded_from, OPEN_MODE do |file|
        begin
          file.readline # discard encoding line
          stubline = file.readline.chomp
          if stubline.start_with?(PREFIX)
            extensions = if /\A#{PREFIX}/ =~ file.readline.chomp
                           $'.split "\0"
                         else
                           StubLine::NO_EXTENSIONS
                         end
            @data = StubLine.new stubline, extensions
          end
        rescue EOFError
        end
      end
    ensure
      $. = saved_lineno
    end
  end
  @data ||= to_spec
end

def default_gem?

def default_gem?
  @default_gem
end

def extensions

def extensions
  data.extensions
end

def full_name

def full_name
  data.full_name
end

def initialize(filename, base_dir, gems_dir, default_gem)

def initialize(filename, base_dir, gems_dir, default_gem)
  super()
  filename.tap(&Gem::UNTAINT)
  self.loaded_from = filename
  @data            = nil
  @name            = nil
  @spec            = nil
  @base_dir        = base_dir
  @gems_dir        = gems_dir
  @default_gem     = default_gem
end

def missing_extensions?

def missing_extensions?
  return false if default_gem?
  return false if extensions.empty?
  return false if File.exist? gem_build_complete_path
  to_spec.missing_extensions?
end

def name

def name
  data.name
end

def platform

def platform
  data.platform
end

def raw_require_paths # :nodoc:

:nodoc:
def raw_require_paths # :nodoc:
  data.require_paths
end

def stubbed?

def stubbed?
  data.is_a? StubLine
end

def to_spec

def to_spec
  @spec ||= if @data
              loaded = Gem.loaded_specs[name]
              loaded if loaded && loaded.version == version
            end
  @spec ||= Gem::Specification.load(loaded_from)
  @spec.ignored = @ignored if @spec
  @spec
end

def valid?

def valid?
  data
end

def version

def version
  data.version
end