Sha256: f08b873fea1958488c299beaca6fb8b6d66fda5de4d83f14fc19a5f05e60849e

Contents?: true

Size: 1.43 KB

Versions: 25

Compression:

Stored size: 1.43 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/core_ext'
require 'eac_templates/interface_methods'
require 'eac_templates/abstract/not_found_error'

module EacTemplates
  module Modules
    class Ancestor
      class << self
        # @param a_module [Module]
        # @return [Pathname]
        def path_for_search(a_module)
          a_module.name.underscore.to_pathname
        end
      end

      common_constructor :base, :ancestor
      delegate :subpath, :source_set, to: :base
      delegate(*::EacTemplates::InterfaceMethods::ALL, to: :source_object)

      # @return [EacTemplates::Modules::Directory]
      def directory
        @directory ||= ::EacTemplates::Modules::Ancestor::Directory
                         .new(self, nil, nil, source_set: source_set)
      end

      # @return [EacTemplates::Modules::File]
      def file
        @file ||= ::EacTemplates::Modules::Ancestor::File
                    .new(self, nil, nil, source_set: source_set)
      end

      # @return [Pathname]
      def path_for_search
        r = self.class.path_for_search(ancestor)
        subpath.if_present(r) { |v| r.join(v) }
      end

      # @return [EacTemplates::Modules::Ancestor::FsObject]
      def source_object
        return file if file.found?
        return directory if directory.found?

        raise ::EacTemplates::Abstract::NotFoundError, "No template found: #{path_for_search}"
      end

      require_sub __FILE__
    end
  end
end

Version data entries

25 entries across 25 versions & 2 rubygems

Version Path
eac_templates-0.5.1 lib/eac_templates/modules/ancestor.rb
eac_tools-0.76.0 sub/eac_templates/lib/eac_templates/modules/ancestor.rb
eac_tools-0.75.2 sub/eac_templates/lib/eac_templates/modules/ancestor.rb
eac_tools-0.75.1 sub/eac_templates/lib/eac_templates/modules/ancestor.rb
eac_tools-0.75.0 sub/eac_templates/lib/eac_templates/modules/ancestor.rb
eac_tools-0.74.1 sub/eac_templates/lib/eac_templates/modules/ancestor.rb
eac_tools-0.74.0 sub/eac_templates/lib/eac_templates/modules/ancestor.rb
eac_tools-0.73.0 sub/eac_templates/lib/eac_templates/modules/ancestor.rb
eac_tools-0.72.0 sub/eac_templates/lib/eac_templates/modules/ancestor.rb
eac_tools-0.70.1 sub/eac_templates/lib/eac_templates/modules/ancestor.rb
eac_tools-0.70.0 sub/eac_templates/lib/eac_templates/modules/ancestor.rb
eac_tools-0.69.1 sub/eac_templates/lib/eac_templates/modules/ancestor.rb
eac_tools-0.69.0 sub/eac_templates/lib/eac_templates/modules/ancestor.rb
eac_tools-0.68.0 sub/eac_templates/lib/eac_templates/modules/ancestor.rb
eac_tools-0.67.1 sub/eac_templates/lib/eac_templates/modules/ancestor.rb
eac_tools-0.67.0 sub/eac_templates/lib/eac_templates/modules/ancestor.rb
eac_tools-0.66.0 sub/eac_templates/lib/eac_templates/modules/ancestor.rb
eac_tools-0.65.1 sub/eac_templates/lib/eac_templates/modules/ancestor.rb
eac_tools-0.65.0 sub/eac_templates/lib/eac_templates/modules/ancestor.rb
eac_tools-0.64.0 sub/eac_templates/lib/eac_templates/modules/ancestor.rb