Class: JekyllPagesApiSearch::Bundler
- Inherits:
-
Object
- Object
- JekyllPagesApiSearch::Bundler
- 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
-
.baseurl_prefix(site) ⇒ Object
Generates the correct baseurl prefix.
- .create_custom_renderer_bundle(site) ⇒ Object
- .create_search_bundles(site) ⇒ Object
-
.create_search_constants_bundle(site) ⇒ Object
Generates a JavaScript module containing constants based on
sitevalues. -
.create_target_path(site, target_file) ⇒ Object
Creates the target bundle path and its directory if it doesn't exist.
- .execute_browserify(source, target, options) ⇒ Object
-
.generate_constants(site) ⇒ Object
Creates an object of constants based on
sitevalues.
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, ) status = system('node', "#{BROWSERIFY_SCRIPT}", "#{source}", "#{target}", JSON.generate()) 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 |