module Metanorma

Public Class Methods

all_modules(mod) click to toggle source
# File lib/metanorma/standoc/version.rb, line 9
def all_modules(mod)
  [mod] + mod.constants.map { |c| mod.const_get(c) }
    .select { |c| c.is_a?(Module) && parent_of(c) == mod }
    .flat_map { |m| all_modules(m) }
end
parent_of(mod) click to toggle source

stackoverflow.com/a/53399471

# File lib/metanorma/standoc/version.rb, line 4
def parent_of(mod)
  parent_name = mod.name =~ /::[^:]+\Z/ ? $`.freeze : nil
  Object.const_get(parent_name) if parent_name
end
versioned(mod, flavour) click to toggle source
# File lib/metanorma/standoc/version.rb, line 15
def versioned(mod, flavour)
  all_modules(mod).select { |c| defined? c::VERSION }
    .select { |c| c.name =~ /::#{flavour}$/ }
end