Sha256: 7c212262df6fbb7da4b64ec601ed77e82ee1d41105d03cd063d9b7b26c5f7cd0

Contents?: true

Size: 1.51 KB

Versions: 3

Compression:

Stored size: 1.51 KB

Contents

require 'middleman-core'
require 'middleman-search/search-index-resource'

module Middleman
  class SearchExtension < Middleman::Extension
    option :resources, [], 'Paths of resources to index'
    option :fields, {}, 'Fields to index, with their options'
    option :before_index, nil, 'Callback to execute before indexing a document'
    option :index_path, 'search.json', 'Index file path'
    option :pipeline, {}, 'Javascript pipeline functions to use in lunr index'
    option :pipeline_remove, {}, 'Default pipeline functions to remove'
    option :tokenizer_separator, nil, 'Replace the default tokizer separator'
    option :cache, false, 'Avoid the cache to be rebuilt on every request in development mode'
    option :language, 'en', 'Language code ("es", "fr") to use when indexing site\'s content'
    option :lunr_dirs, [], 'Directories in which to look for custom lunr.js files'

    def manipulate_resource_list(resources)
      resources.push Middleman::Sitemap::SearchIndexResource.new(@app.sitemap, @options[:index_path], @options)
      resources
    end

    helpers do
      def search_lunr_js_pipeline
        # Thanks http://stackoverflow.com/a/20187415/12791
        extensions[:search].options[:pipeline].map do |name, function|
          "lunr.Pipeline.registerFunction(#{function}, '#{name}');"
        end.join("\n")
      end

      def search_index_path
        (config || app.config)[:http_prefix] + sitemap.find_resource_by_path(extensions[:search].options[:index_path]).destination_path
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
middleman-search-gds-0.11.2 lib/middleman-search/extension.rb
middleman-search-gds-0.11.1 lib/middleman-search/extension.rb
middleman-search-gds-0.11.0a lib/middleman-search/extension.rb