Module: HighlightJs

Defined in:
lib/highlight_js.rb

Constant Summary collapse

BUNDLED_LANGS =
%w[
  bash
  c
  cpp
  csharp
  css
  diff
  go
  graphql
  ini
  java
  javascript
  json
  kotlin
  less
  lua
  makefile
  xml
  markdown
  objectivec
  perl
  php
  php-template
  plaintext
  python
  python-repl
  r
  ruby
  rust
  scss
  shell
  sql
  swift
  typescript
  vbnet
  wasm
  yaml
]

Class Method Summary collapse

Class Method Details

.bundle(langs) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/highlight_js.rb', line 50

def self.bundle(langs)
  result = File.read(HIGHLIGHTJS_DIR + "highlight.min.js")
  (langs - BUNDLED_LANGS).each do |lang|
    begin
      result << "\n" << File.read(HIGHLIGHTJS_DIR + "languages/#{lang}.min.js")
    rescue Errno::ENOENT
      # no file, don't care
    end
  end

  result
end

.languagesObject



44
45
46
47
48
# File 'lib/highlight_js.rb', line 44

def self.languages
  langs = Dir.glob(HIGHLIGHTJS_DIR + "languages/*.js").map { |path| File.basename(path)[0..-8] }

  langs.sort
end

.pathObject



69
70
71
# File 'lib/highlight_js.rb', line 69

def self.path
  "/highlight-js/#{Discourse.current_hostname}/#{version SiteSetting.highlighted_languages}.js"
end

.version(lang_string) ⇒ Object



63
64
65
66
67
# File 'lib/highlight_js.rb', line 63

def self.version(lang_string)
  (@lang_string_cache ||= {})[lang_string] ||= Digest::SHA1.hexdigest(
    bundle lang_string.split("|")
  )
end