class JekyllPagesApiSearch::Bundler

Constants

BROWSERIFY_SCRIPT
CONSTANTS_MODULE
DIRNAME

Public Class Methods

baseurl_prefix(site) click to toggle source

Generates the correct baseurl prefix.

# File lib/jekyll_pages_api_search/bundler.rb, line 47
def self.baseurl_prefix(site)
  baseurl = site.baseurl
  if baseurl.nil? || baseurl.empty? then
    return '/'
  elsif baseurl == '/' then
    return baseurl
  end
  return baseurl + '/'
end
create_custom_renderer_bundle(site) click to toggle source
# File lib/jekyll_pages_api_search/bundler.rb, line 21
def self.create_custom_renderer_bundle(site)
  browserify_config = Config.get(site, 'browserify')
  return if browserify_config.nil?
  source = File.join(site.source, browserify_config['source'])
  target = create_target_path(site, browserify_config['target'])
  execute_browserify(source, target,
    { standalone: 'renderJekyllPagesApiSearchResults' })
end
create_search_bundles(site) click to toggle source
# File lib/jekyll_pages_api_search/bundler.rb, line 16
def self.create_search_bundles(site)
  create_custom_renderer_bundle(site)
  create_search_constants_bundle(site)
end
create_search_constants_bundle(site) click to toggle source

Generates a JavaScript module containing constants based on `site` values.

# File lib/jekyll_pages_api_search/bundler.rb, line 31
def self.create_search_constants_bundle(site)
  target = create_target_path(site, CONSTANTS_MODULE)
  constants = generate_constants(site)
  File.open(target, 'w') do |target_file|
    target_file.write(constants)
  end
  Compressor.gzip_in_memory_content({ target => constants })
end
create_target_path(site, target_file) click to toggle source

Creates the target bundle path and its directory if it doesn't exist.

# File lib/jekyll_pages_api_search/bundler.rb, line 58
def self.create_target_path(site, target_file)
  target = File.join(site.dest, target_file)
  target_dir = File.dirname(target)
  if !Dir.exists?(target_dir) then
    FileUtils.mkdir_p(target_dir)
  end
  target
end
execute_browserify(source, target, options) click to toggle source
# File lib/jekyll_pages_api_search/bundler.rb, line 67
def self.execute_browserify(source, target, options)
  status = system('node', "#{BROWSERIFY_SCRIPT}", "#{source}", "#{target}",
    JSON.generate(options))
  if $CHILD_STATUS.exitstatus.nil?
    $stderr.puts('Could not execute browserify script')
    exit 1
  end
  exit $CHILD_STATUS.exitstatus if !status
end
generate_constants(site) click to toggle source

Creates an object of constants based on `site` values.

# File lib/jekyll_pages_api_search/bundler.rb, line 41
def self.generate_constants(site)
  return "var JEKYLL_PAGES_API_SEARCH_INDEX_URL = '" +
    baseurl_prefix(site) + SearchIndexBuilder::INDEX_FILE + "';\n"
end