Sha256: ed32183d6b0a081bceb320826b85c45bc7ee7d0cb61dd14f6efb8bfbe9a712b6

Contents?: true

Size: 877 Bytes

Versions: 1

Compression:

Stored size: 877 Bytes

Contents

require 'mirrors/mirror'
require 'mirrors/package_inference'

module Mirrors
  class PackageMirror < Mirror
    def self.reflect(name)
      new(name)
    end

    def name
      @subject.sub(/.*:/, '')
    end

    def fullname
      @subject
    end

    def children
      names = PackageInference.contents_of_package(@subject)
      classes = (names || [])
        .map { |n| Object.const_get(n) }
        .select { |c| c.is_a?(Module) }
        .sort_by(&:name)
      class_mirrors = mirrors(classes)

      # .map    { |pkg| pkg.sub(/#{Regexp.quote(@subject)}:.*?:.*/) }
      subpackages = PackageInference.qualified_packages
        .select { |pkg| pkg.start_with?("#{@subject}:") }
        .sort

      puts subpackages.inspect

      package_mirrors = subpackages.map { |pkg| PackageMirror.reflect(pkg) }
      package_mirrors.concat(class_mirrors)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mirrors-0.0.3 lib/mirrors/package_mirror.rb