class Qiita::Markdown::Filters::CodeBlock::Metadata
Detects language from code block metadata.
Public Class Methods
new(text)
click to toggle source
@param text [String, nil]
# File lib/qiita/markdown/filters/code_block.rb, line 45 def initialize(text) @text = text end
Public Instance Methods
filename()
click to toggle source
@return [String, nil]
# File lib/qiita/markdown/filters/code_block.rb, line 50 def filename case when empty? nil when has_only_filename? sections[0] else sections[1] end end
language()
click to toggle source
@example
Metadata.new(nil).language #=> nil Metadata.new("ruby").language #=> "ruby" Metadata.new("ruby:foo.rb").language #=> "ruby" Metadata.new("foo.rb").language #=> "ruby"
@return [String, nil]
# File lib/qiita/markdown/filters/code_block.rb, line 67 def language case when empty? nil when !has_only_filename? sections[0] when linguist_language linguist_language.default_alias_name end end
Private Instance Methods
empty?()
click to toggle source
# File lib/qiita/markdown/filters/code_block.rb, line 80 def empty? @text.nil? end
has_only_filename?()
click to toggle source
# File lib/qiita/markdown/filters/code_block.rb, line 84 def has_only_filename? sections[1].nil? && sections[0] && sections[0].include?(".") end
linguist_language()
click to toggle source
# File lib/qiita/markdown/filters/code_block.rb, line 88 def linguist_language @linguist_language ||= Linguist::Language.find_by_extension(filename).first end
sections()
click to toggle source
# File lib/qiita/markdown/filters/code_block.rb, line 92 def sections splited = (@text || "").split(":") @sections ||= splited.length <= 2 ? splited : @text.split(":", 2) end