Class: Perron::Collection
- Inherits:
-
Object
- Object
- Perron::Collection
- Defined in:
- lib/perron/collection.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Instance Method Summary collapse
- #all(resource_class = "Content::#{name.classify}".safe_constantize) ⇒ Object (also: #resources)
- #configuration(resource_class = "Content::#{name.classify}".safe_constantize) ⇒ Object
- #find(slug, resource_class = Resource) ⇒ Object
- #find!(slug, resource_class = Resource) ⇒ Object
- #find_by_file_name(file_name, resource_class = Resource) ⇒ Object
-
#initialize(name) ⇒ Collection
constructor
A new instance of Collection.
- #validate ⇒ Object
Constructor Details
#initialize(name) ⇒ Collection
Returns a new instance of Collection.
7 8 9 10 11 12 |
# File 'lib/perron/collection.rb', line 7 def initialize(name) @name = name.inquiry @collection_path = File.join(Perron.configuration.input, name) raise Errors::CollectionNotFoundError, "No such collection: #{name}" unless File.exist?(@collection_path) && File.directory?(@collection_path) end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
5 6 7 |
# File 'lib/perron/collection.rb', line 5 def name @name end |
Instance Method Details
#all(resource_class = "Content::#{name.classify}".safe_constantize) ⇒ Object Also known as: resources
18 19 20 |
# File 'lib/perron/collection.rb', line 18 def all(resource_class = "Content::#{name.classify}".safe_constantize) Perron::Relation.new(load_resources(resource_class).select(&:published?)) end |
#configuration(resource_class = "Content::#{name.classify}".safe_constantize) ⇒ Object
14 15 16 |
# File 'lib/perron/collection.rb', line 14 def configuration(resource_class = "Content::#{name.classify}".safe_constantize) resource_class&.configuration end |
#find(slug, resource_class = Resource) ⇒ Object
23 24 25 26 27 28 29 30 |
# File 'lib/perron/collection.rb', line 23 def find(slug, resource_class = Resource) Perron.deprecator.deprecation_warning( :find, "Collection#find will return nil instead of raising in the next major version. Use #find! to raise an error." ) find!(slug, resource_class) end |
#find!(slug, resource_class = Resource) ⇒ Object
32 33 34 35 36 37 38 |
# File 'lib/perron/collection.rb', line 32 def find!(slug, resource_class = Resource) resource = load_resources(resource_class).find { it.slug == slug } return resource if resource raise Errors::ResourceNotFoundError, "Resource not found with slug: #{slug}" end |
#find_by_file_name(file_name, resource_class = Resource) ⇒ Object
40 41 42 43 44 |
# File 'lib/perron/collection.rb', line 40 def find_by_file_name(file_name, resource_class = Resource) resource_class.new( Perron.configuration.allowed_extensions.lazy.map { File.join(@collection_path, [file_name, it].join(".")) }.find { File.exist?(it) } ) end |