module Middleman::CoreExtensions::FrontMatter

def registered(app)

Once registered
def registered(app)
  # Parsing YAML frontmatter
  require "yaml"
  
  # Parsing JSON frontmatter
  require "active_support/json"

  app.send :include, InstanceMethods
  
  app.before_configuration do
    files.changed { |file| frontmatter_manager.clear_data(file) }
    files.deleted { |file| frontmatter_manager.clear_data(file) }
  end
  app.after_configuration do
    ::Middleman::Sitemap::Resource.send :include, ResourceInstanceMethods
    sitemap.register_resource_list_manipulator(
      :frontmatter,
      frontmatter_manager
    )
    
    sitemap.provides_metadata do |path|
      fmdata = frontmatter_manager.data(path).first
  
      data = {}
      %w(layout layout_engine).each do |opt|
        data[opt.to_sym] = fmdata[opt] if fmdata[opt]
      end
    
      { :options => data, :page => fmdata }
    end
  end
end