Sha256: 049f53108f4e2665a7df7239868929eee4c858361c27932c6876b93874bf22f8

Contents?: true

Size: 1.37 KB

Versions: 25

Compression:

Stored size: 1.37 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/core_ext'
require 'eac_templates/interface_methods'
require 'eac_templates/abstract/fs_object'
require 'eac_templates/variables/directory'

module EacTemplates
  module Abstract
    class Directory < ::EacTemplates::Abstract::FsObject
      enable_abstract_methods
      delegate(*::EacTemplates::InterfaceMethods::DIRECTORY - %i[child chidren], to: :applier)

      # @param basename [Pathname]
      # @return [EacTemplates::Abstract::FsObject
      def build_child(child_basename, child_type)
        child_basename = child_basename.to_pathname
        child_type = type_list.value_validate!(child_type)
        category_module.const_get(child_type.to_s.camelize)
          .new(owner, self, child_basename, options)
      end

      # @param basename [Pathname]
      # @return [EacTemplates::Abstract::FsObject]
      def child(basename)
        basename = basename.to_pathname
        children.find { |c| c.basename == basename } ||
          raise_not_found("No child found with basename \"#{basename}\"")
      end

      # @return [Enumerable<EacTemplates::Abstract::FsObject>]
      def children
        children_basenames.map { |c_basename, c_type| build_child(c_basename, c_type) }
      end

      # @return [Hash<Pathname, Symbol>]
      def children_basenames
        raise_abstract_method __method__
      end
    end
  end
end

Version data entries

25 entries across 25 versions & 2 rubygems

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