Module: HighlightJs
- Defined in:
- lib/highlight_js.rb
Constant Summary collapse
- HIGHLIGHTJS_DIR =
"#{Rails.root}/app/assets/javascripts/discourse/node_modules/@highlightjs/cdn-assets/"
- VERSION =
bump to invalidate caches following core changes
1
Class Method Summary collapse
- .bundle(langs) ⇒ Object
- .cache ⇒ Object
- .languages ⇒ Object
- .path ⇒ Object
- .version(lang_string) ⇒ Object
Class Method Details
.bundle(langs) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/highlight_js.rb', line 14 def self.bundle(langs) lang_js = langs.filter_map do |lang| File.read(HIGHLIGHTJS_DIR + "languages/#{lang}.min.js") rescue Errno::ENOENT # no file, don't care end <<~JS export default function registerLanguages(hljs) { #{lang_js.join("\n")} } JS end |
.cache ⇒ Object
29 30 31 |
# File 'lib/highlight_js.rb', line 29 def self.cache @lang_string_cache ||= {} end |
.languages ⇒ Object
8 9 10 11 12 |
# File 'lib/highlight_js.rb', line 8 def self.languages langs = Dir.glob(HIGHLIGHTJS_DIR + "languages/*.js").map { |path| File.basename(path)[0..-8] } langs.sort end |
.path ⇒ Object
50 51 52 |
# File 'lib/highlight_js.rb', line 50 def self.path "/highlight-js/#{Discourse.current_hostname}/#{version SiteSetting.highlighted_languages}.js" end |
.version(lang_string) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/highlight_js.rb', line 33 def self.version(lang_string) cache_info = cache[RailsMultisite::ConnectionManagement.current_db] return cache_info[:digest] if cache_info&.[](:lang_string) == lang_string cache_info = { lang_string: lang_string, digest: Digest::SHA1.hexdigest( bundle(lang_string.split("|")) + "|#{VERSION}|#{GlobalSetting.asset_url_salt}", ), } cache[RailsMultisite::ConnectionManagement.current_db] = cache_info cache_info[:digest] end |