Class: Ace::Support::Nav::Atoms::GemResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/ace/support/nav/atoms/gem_resolver.rb

Overview

Discovers ace-* gems and their handbook paths

Instance Method Summary collapse

Instance Method Details

#find_ace_gemsObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/ace/support/nav/atoms/gem_resolver.rb', line 11

def find_ace_gems
  ace_gems = []

  Gem::Specification.each do |spec|
    next unless spec.name.start_with?("ace-")

    gem_info = {
      name: spec.name,
      version: spec.version.to_s,
      path: spec.gem_dir,
      handbook_path: File.join(spec.gem_dir, "handbook")
    }

    # Check if handbook exists
    gem_info[:has_handbook] = Dir.exist?(gem_info[:handbook_path])

    ace_gems << gem_info
  end

  ace_gems
end

#find_gem_by_name(gem_name) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/ace/support/nav/atoms/gem_resolver.rb', line 33

def find_gem_by_name(gem_name)
  spec = Gem::Specification.find_by_name(gem_name)
  return nil unless spec

  {
    name: spec.name,
    version: spec.version.to_s,
    path: spec.gem_dir,
    handbook_path: File.join(spec.gem_dir, "handbook"),
    has_handbook: Dir.exist?(File.join(spec.gem_dir, "handbook"))
  }
rescue Gem::LoadError
  nil
end

#gem_handbook_path(gem_name) ⇒ Object



48
49
50
51
52
53
54
# File 'lib/ace/support/nav/atoms/gem_resolver.rb', line 48

def gem_handbook_path(gem_name)
  gem_info = find_gem_by_name(gem_name)
  return nil unless gem_info
  return nil unless gem_info[:has_handbook]

  gem_info[:handbook_path]
end