class Qiita::Markdown::Filters::CodeBlock::Metadata
Detects language from code block metadata.
Public Class Methods
Source
# File lib/qiita/markdown/filters/code_block.rb, line 45 def initialize(text) @text = text end
@param text [String, nil]
Public Instance Methods
Source
# 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
@return [String, nil]
Source
# 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
@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]
Private Instance Methods
Source
# File lib/qiita/markdown/filters/code_block.rb, line 84 def has_only_filename? sections[1].nil? && sections[0]&.include?(".") end
Source
# File lib/qiita/markdown/filters/code_block.rb, line 88 def linguist_language @linguist_language ||= Linguist::Language.find_by_extension(filename).first end
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