module Jekyll::Algolia::Extractor

def self.run(file)

file - The Jekyll file to process

Public: Extract records from the file
def self.run(file)
  # Getting all nodes from the HTML input
  raw_records = extract_raw_records(file.content)
  # Getting file metadata
  shared_metadata = FileBrowser.metadata(file)
  # If no content, we still index the metadata
  raw_records = [shared_metadata] if raw_records.empty?
  # Building the list of records
  records = []
  raw_records.map do |record|
    # We do not need to pass the HTML node element to the final record
    node = record[:node]
    record.delete(:node)
    # Merging each record info with file info
    record = Utils.compact_empty(record.merge(shared_metadata))
    # Apply custom user-defined hooks
    # Users can return `nil` from the hook to signal we should not index
    # such a record
    record = Hooks.apply_each(record, node, Jekyll::Algolia.site)
    next if record.nil?
    records << record
  end
  records
end