Class: Nanoc::ItemArray

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Enumerable
Defined in:
lib/nanoc/base/source_data/item_array.rb

Overview

Acts as an array, but allows fetching items using identifiers, e.g. @items['/blah/'].

Constant Summary

EXCLUDED_METHODS =
[
  :[], :at, :slice, :class, :singleton_class, :clone, :dup, :initialize_dup, :initialize_clone,
  :freeze, :methods, :singleton_methods, :protected_methods, :private_methods, :public_methods,
  :instance_variables, :instance_variable_get, :instance_variable_set, :instance_variable_defined?,
  :instance_of?, :kind_of?, :is_a?, :tap, :send, :public_send, :respond_to?, :respond_to_missing?,
  :extend, :display, :method, :public_method, :define_singleton_method, :object_id, :equal?,
  :instance_eval, :instance_exec, :__send__, :__id__
]
DELEGATED_METHODS =
(Array.instance_methods + Enumerable.instance_methods).map(&:to_sym) - EXCLUDED_METHODS

Instance Method Summary (collapse)

Constructor Details

- (ItemArray) initialize

Returns a new instance of ItemArray



22
23
24
# File 'lib/nanoc/base/source_data/item_array.rb', line 22

def initialize
  @items = []
end

Instance Method Details

- (Object) [](*args) Also known as: slice



32
33
34
35
36
37
38
39
40
# File 'lib/nanoc/base/source_data/item_array.rb', line 32

def [](*args)
  if 1 == args.size && args.first.is_a?(String)
    item_with_identifier(args.first)
  elsif 1 == args.size && args.first.is_a?(Regexp)
    @items.select { |i| i.identifier =~ args.first }
  else
    @items[*args]
  end
end

- (Object) at(arg)



43
44
45
46
47
48
49
# File 'lib/nanoc/base/source_data/item_array.rb', line 43

def at(arg)
  if arg.is_a?(String)
    item_with_identifier(arg)
  else
    @items[arg]
  end
end

- (Object) freeze



26
27
28
29
30
# File 'lib/nanoc/base/source_data/item_array.rb', line 26

def freeze
  @items.freeze
  build_mapping
  super
end