Sha256: 5567742f7a0a34e8f34f584af6f4eb673dd314126c19104a9bf7cb207c84eabc

Contents?: true

Size: 1.7 KB

Versions: 2

Compression:

Stored size: 1.7 KB

Contents

module Kosmos
  module PackageAttrs
    private

    def self.included(base)
      base.extend(Methods)

      Methods.public_instance_methods.each do |method_name|
        base.send(:define_method, method_name, Proc.new do |*args|
          self.class.send(method_name, *args)
        end)
      end
    end

    module Methods
      def title(title = nil)
        if title
          @title = title
        else
          @title
        end
      end

      def url(url = nil)
        if url
          @url = url
        else
          @url
        end
      end

      def aliases(*aliases)
        @aliases ||= []

        if aliases.any?
          @aliases = aliases
        else
          @aliases
        end
      end

      def names
        [title, aliases].flatten
      end

      def prerequisites(*prerequisites)
        @prerequisites ||= []

        if prerequisites.any?
          @prerequisites = prerequisites
        else
          @prerequisites
        end
      end

      alias_method :prerequiste, :prerequisites
      alias_method :pre_requisite, :prerequisites
      alias_method :pre_requisites, :prerequisites

      def postrequisites(*postrequisites)
        @postrequisites ||= []

        if postrequisites.any?
          @postrequisites = postrequisites
        else
          @postrequisites
        end
      end

      alias_method :postrequiste, :postrequisites
      alias_method :post_requisite, :postrequisites
      alias_method :post_requisites, :postrequisites

      def resolve_prerequisites
        prerequisites.map { |package_name| find(package_name) }
      end

      def resolve_postrequisites
        postrequisites.map { |package_name| find(package_name) }
      end

    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
kosmos-0.0.5 lib/kosmos/package_attrs.rb
kosmos-0.0.4 lib/kosmos/package_attrs.rb