Class: JekyllPagesApiSearch::SearchIndexBuilder
- Inherits:
-
Object
- Object
- JekyllPagesApiSearch::SearchIndexBuilder
- Defined in:
- lib/jekyll_pages_api_search/search.rb
Constant Summary collapse
- DIRNAME =
File.dirname(__FILE__).freeze
- COMPILE_SCRIPT =
File.join(DIRNAME, 'search.js').freeze
- INDEX_FILE =
'search-index.json'.freeze
Class Method Summary collapse
Class Method Details
.build_index(site) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/jekyll_pages_api_search/search.rb', line 12 def self.build_index(site) corpus_page = find_corpus_page(site.pages) raise 'Pages API corpus not found' if corpus_page == nil search_config = site.config['jekyll_pages_api_search'] index_fields = JSON.generate(search_config['index_fields'] || {}) input = "{\"corpus\": #{corpus_page.output}," \ "\"indexFields\": #{index_fields}}" compile(input, JekyllPagesApi::PageWithoutAFile.new(site, site.source, '', INDEX_FILE)) end |
.compile(input, index_page) ⇒ Object
28 29 30 31 32 33 34 |
# File 'lib/jekyll_pages_api_search/search.rb', line 28 def self.compile(input, index_page) compiler = open("|node #{COMPILE_SCRIPT}", File::RDWR) compiler.puts(input) compiler.close_write index_page.output = compiler.gets index_page end |
.find_corpus_page(pages) ⇒ Object
24 25 26 |
# File 'lib/jekyll_pages_api_search/search.rb', line 24 def self.find_corpus_page(pages) pages.each {|page| return page if page.name == 'pages.json'} end |