Class: RubyCms::Manifest
- Inherits:
-
Object
- Object
- RubyCms::Manifest
- Defined in:
- lib/ruby_cms/manifest.rb
Defined Under Namespace
Instance Attribute Summary collapse
-
#modules ⇒ Object
readonly
Returns the value of attribute modules.
Class Method Summary collapse
Instance Method Summary collapse
- #[](key) ⇒ Object
- #all_files ⇒ Object
- #base_modules ⇒ Object
-
#initialize ⇒ Manifest
constructor
A new instance of Manifest.
- #module_def(key, base: false, depends_on: [], &block) ⇒ Object
- #optional_modules ⇒ Object
-
#resolve(selected_keys) ⇒ Object
Expand selected optional keys into the full ordered set incl.
Constructor Details
#initialize ⇒ Manifest
Returns a new instance of Manifest.
53 54 55 |
# File 'lib/ruby_cms/manifest.rb', line 53 def initialize @modules = {} end |
Instance Attribute Details
#modules ⇒ Object (readonly)
Returns the value of attribute modules.
51 52 53 |
# File 'lib/ruby_cms/manifest.rb', line 51 def modules @modules end |
Class Method Details
.build ⇒ Object
45 46 47 48 49 |
# File 'lib/ruby_cms/manifest.rb', line 45 def self.build(&) manifest = new manifest.instance_eval(&) manifest end |
Instance Method Details
#[](key) ⇒ Object
65 |
# File 'lib/ruby_cms/manifest.rb', line 65 def [](key) = @modules[key] |
#all_files ⇒ Object
84 85 86 |
# File 'lib/ruby_cms/manifest.rb', line 84 def all_files @modules.values.flat_map(&:files).uniq end |
#base_modules ⇒ Object
66 |
# File 'lib/ruby_cms/manifest.rb', line 66 def base_modules = @modules.values.select(&:base?) |
#module_def(key, base: false, depends_on: [], &block) ⇒ Object
57 58 59 60 61 62 63 |
# File 'lib/ruby_cms/manifest.rb', line 57 def module_def(key, base: false, depends_on: [], &block) raise ArgumentError, "duplicate module #{key}" if @modules.key?(key) builder = Builder.new(key, base, depends_on) builder.instance_eval(&block) if block @modules[key] = builder.to_module end |
#optional_modules ⇒ Object
67 |
# File 'lib/ruby_cms/manifest.rb', line 67 def optional_modules = @modules.values.reject(&:base?) |
#resolve(selected_keys) ⇒ Object
Expand selected optional keys into the full ordered set incl. base + deps.
70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/ruby_cms/manifest.rb', line 70 def resolve(selected_keys) result = base_modules.map(&:key) queue = Array(selected_keys).dup until queue.empty? key = queue.shift next if result.include?(key) mod = @modules.fetch(key) result << key queue.concat(mod.depends_on) end result.uniq.map {|k| @modules.fetch(k) } end |