Sha256: cbc9c6c3376e0d4c712a44b719b9f3dcabadb2cc7836f36e8a34ce3e97a9f214

Contents?: true

Size: 628 Bytes

Versions: 1

Compression:

Stored size: 628 Bytes

Contents

module Metanorma
  class << self
    # https://stackoverflow.com/a/53399471
    def parent_of(mod)
      parent_name = mod.name =~ /::[^:]+\Z/ ? $`.freeze : nil
      Object.const_get(parent_name) if parent_name
    end

    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

    def versioned(mod, flavour)
      all_modules(mod).select { |c| defined? c::VERSION }
        .select { |c| c.name =~ /::#{flavour}$/ }
    end
  end

  module Standoc
    VERSION = "1.10.4".freeze
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
metanorma-standoc-1.10.4 lib/metanorma/standoc/version.rb