class Nexmo::Markdown::CodeLanguage

Attributes

dependencies[RW]
icon[RW]
key[RW]
label[RW]
languages[W]
lexer[W]
linkable[W]
run_command[RW]
type[RW]
unindent[RW]
version[W]
weight[W]

Public Class Methods

all() click to toggle source
# File lib/nexmo_markdown_renderer/models/code_language.rb, line 49
def self.all
  languages + frameworks + terminal_programs + data
end
data() click to toggle source
# File lib/nexmo_markdown_renderer/models/code_language.rb, line 45
def self.data
  where_type('data')
end
exists?(key) click to toggle source
# File lib/nexmo_markdown_renderer/models/code_language.rb, line 53
def self.exists?(key)
  all.detect { |lang| lang.key == key }
end
find(key) click to toggle source
# File lib/nexmo_markdown_renderer/models/code_language.rb, line 57
def self.find(key)
  raise 'Key is missing' unless key
  code_language = all.detect { |lang| lang.key == key }
  raise "Language #{key} does not exist." unless code_language
  code_language
end
frameworks() click to toggle source
# File lib/nexmo_markdown_renderer/models/code_language.rb, line 37
def self.frameworks
  where_type('platforms')
end
languages() click to toggle source
# File lib/nexmo_markdown_renderer/models/code_language.rb, line 33
def self.languages
  where_type('languages')
end
linkable() click to toggle source
# File lib/nexmo_markdown_renderer/models/code_language.rb, line 64
def self.linkable
  all.select(&:linkable?)
end
route_constraint() click to toggle source
# File lib/nexmo_markdown_renderer/models/code_language.rb, line 68
def self.route_constraint
  { code_language: Regexp.new(linkable.map(&:key).compact.join('|')) }
end
terminal_programs() click to toggle source
# File lib/nexmo_markdown_renderer/models/code_language.rb, line 41
def self.terminal_programs
  where_type('terminal_programs')
end

Private Class Methods

config() click to toggle source
# File lib/nexmo_markdown_renderer/models/code_language.rb, line 78
                     def self.config
  @config ||= YAML.load_file("#{Nexmo::Markdown::Config.docs_base_path}/config/code_languages.yml")
end
where_type(type) click to toggle source
# File lib/nexmo_markdown_renderer/models/code_language.rb, line 72
                     def self.where_type(type)
  config[type].map do |key, attributes|
    new(attributes.merge({ key: key, type: type }))
  end
end

Public Instance Methods

languages() click to toggle source
# File lib/nexmo_markdown_renderer/models/code_language.rb, line 26
def languages
  @languages ||= []
  @languages.map do |language|
    self.class.find(language)
  end
end
lexer() click to toggle source
# File lib/nexmo_markdown_renderer/models/code_language.rb, line 21
def lexer
  return Rouge::Lexers::PHP.new({ start_inline: true }) if @lexer == 'php'
  Rouge::Lexer.find(@lexer) || Rouge::Lexer.find('text')
end
linkable?() click to toggle source
# File lib/nexmo_markdown_renderer/models/code_language.rb, line 16
def linkable?
  return true if @linkable.nil?
  @linkable
end
version() click to toggle source
# File lib/nexmo_markdown_renderer/models/code_language.rb, line 8
def version
  @version || nil
end
weight() click to toggle source
# File lib/nexmo_markdown_renderer/models/code_language.rb, line 12
def weight
  @weight || 999
end