Class: Middleman::CoreExtensions::Data
- Defined in:
- lib/middleman-core/core_extensions/data.rb
Overview
The data extension parses YAML and JSON files in the data/
directory
and makes them available to config.rb
, templates and extensions
Defined Under Namespace
Classes: DataStore
Constant Summary collapse
- DATA_FILE_MATCHER =
The regex which tells Middleman which files are for data
/^(.*?)[\w-]+\.(yml|yaml|json|toml)$/
Constants included from Contracts
Instance Attribute Summary collapse
-
#data_store ⇒ Object
readonly
Returns the value of attribute data_store.
Attributes inherited from Extension
Instance Method Summary collapse
- #after_configuration ⇒ Object
-
#initialize(app, config = {}, &block) ⇒ Data
constructor
A new instance of Data.
- #start_watching(dir) ⇒ Object
Methods inherited from Extension
activated_extension, #add_exposed_to_context, #after_build, after_extension_activated, #after_extension_activated, #before_build, #before_configuration, clear_after_extension_callbacks, config, define_setting, expose_to_application, expose_to_config, expose_to_template, global_config, helpers, #manipulate_resource_list, option, #ready, resources
Methods included from Contracts
Constructor Details
#initialize(app, config = {}, &block) ⇒ Data
Returns a new instance of Data.
22 23 24 25 26 27 28 |
# File 'lib/middleman-core/core_extensions/data.rb', line 22 def initialize(app, config={}, &block) super @data_store = DataStore.new(app, DATA_FILE_MATCHER) start_watching(app.config[:data_dir]) end |
Instance Attribute Details
#data_store ⇒ Object (readonly)
Returns the value of attribute data_store.
9 10 11 |
# File 'lib/middleman-core/core_extensions/data.rb', line 9 def data_store @data_store end |
Instance Method Details
#after_configuration ⇒ Object
43 44 45 46 47 |
# File 'lib/middleman-core/core_extensions/data.rb', line 43 def after_configuration return unless @original_data_dir != app.config[:data_dir] @watcher.update_path(app.config[:data_dir]) end |
#start_watching(dir) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/middleman-core/core_extensions/data.rb', line 30 def start_watching(dir) @original_data_dir = dir # Tell the file watcher to observe the :data_dir @watcher = app.files.watch :data, path: File.join(app.root, dir), only: DATA_FILE_MATCHER # Setup data files before anything else so they are available when # parsing config.rb app.files.on_change(:data, &@data_store.method(:update_files)) end |