Class: JekyllPagesApiSearch::Bundler

Inherits:
Object
  • Object
show all
Defined in:
lib/jekyll_pages_api_search/bundler.rb

Constant Summary collapse

DIRNAME =
File.dirname(__FILE__).freeze
BROWSERIFY_SCRIPT =
File.join(DIRNAME, 'browserify.js').freeze
CONSTANTS_MODULE =
File.join(Assets::JAVASCRIPT_DIR, 'search-constants.js')
.freeze

Class Method Summary collapse

Class Method Details

.baseurl_prefix(site) ⇒ Object

Generates the correct baseurl prefix.



47
48
49
50
51
52
53
54
55
# 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) ⇒ Object



21
22
23
24
25
26
27
28
# 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) ⇒ Object



16
17
18
19
# 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) ⇒ Object

Generates a JavaScript module containing constants based on site values.



31
32
33
34
35
36
37
38
# 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) ⇒ Object

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



58
59
60
61
62
63
64
65
# 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) ⇒ Object



67
68
69
70
71
72
73
74
75
# 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) ⇒ Object

Creates an object of constants based on site values.



41
42
43
44
# 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