Sha256: 5d6527b75314990b44a5293180514609723bafb4eb8b01f14ce636f3924a6835

Contents?: true

Size: 1.44 KB

Versions: 151

Compression:

Stored size: 1.44 KB

Contents

module ActiveScaffold::DataStructures
  class Set
    include Enumerable
    include ActiveScaffold::Configurable

    attr_writer :label
    def label
      as_(@label)
    end

    def initialize(*args)
      @set = []
      self.add *args
    end

    # the way to add items to the set.
    def add(*args)
      args.flatten! # allow [] as a param
      args.each { |arg|
        arg = arg.to_sym if arg.is_a? String
        @set << arg unless @set.include? arg # avoid duplicates
      }
    end
    alias_method :<<, :add

    # the way to remove items from the set.
    def exclude(*args)
      args.flatten! # allow [] as a param
      args.collect! { |a| a.to_sym } # symbolize the args
      # check respond_to? :to_sym, ActionColumns doesn't respond to to_sym
      @set.reject! { |c| c.respond_to? :to_sym and args.include? c.to_sym } # reject all items specified
    end
    alias_method :remove, :exclude

    # returns an array of items with the provided names
    def find_by_names(*names)
      @set.find_all { |item| names.include? item }
    end

    # returns the item of the given name.
    def find_by_name(name)
      # this works because of `def item.=='
      item = @set.find { |c| c == name }
      item
    end
    alias_method :[], :find_by_name

    def each
      @set.each {|i| yield i }
    end

    # returns the number of items in the set
    def length
      @set.length
    end
    
    def empty?
      @set.empty?
    end

  end
end

Version data entries

151 entries across 151 versions & 6 rubygems

Version Path
active_scaffold_vho-3.2.8 lib/active_scaffold/data_structures/set.rb
active_scaffold_vho-3.2.7 lib/active_scaffold/data_structures/set.rb
active_scaffold_vho-3.2.6 lib/active_scaffold/data_structures/set.rb
active_scaffold_vho-3.2.5 lib/active_scaffold/data_structures/set.rb
active_scaffold_vho-3.2.4 lib/active_scaffold/data_structures/set.rb
active_scaffold_vho-3.2.3 lib/active_scaffold/data_structures/set.rb
active_scaffold_vho-3.2.2 lib/active_scaffold/data_structures/set.rb
active_scaffold_vho-3.2.1 lib/active_scaffold/data_structures/set.rb
active_scaffold_vho-3.2.0 lib/active_scaffold/data_structures/set.rb
active_scaffold_vho-3.0.31 lib/active_scaffold/data_structures/set.rb
active_scaffold_vho-3.1.8 lib/active_scaffold/data_structures/set.rb
active_scaffold_vho-3.0.30 lib/active_scaffold/data_structures/set.rb
active_scaffold_vho-3.0.29 lib/active_scaffold/data_structures/set.rb
active_scaffold_vho-3.1.6 lib/active_scaffold/data_structures/set.rb
active_scaffold_vho-3.0.28 lib/active_scaffold/data_structures/set.rb
active_scaffold_vho-3.1.5 lib/active_scaffold/data_structures/set.rb
active_scaffold_vho-3.0.27 lib/active_scaffold/data_structures/set.rb
active_scaffold_vho-3.1.4 lib/active_scaffold/data_structures/set.rb
active_scaffold_vho-3.0.26 lib/active_scaffold/data_structures/set.rb
six-updater-web-0.24.15 lib/six-updater-web/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/set.rb