Module: Mdlint::Linter::Rules::SourceStyleSupport

Included in:
EmphasisStyle, FencedCodeBlankLines, FencedCodeStyle, ListBlankLines, NoBareUrls, NoHardTabs, NoSpaceInCode, NoSpaceInEmphasis, StrongStyle
Defined in:
lib/mdlint/linter/rules/source_style.rb,
sig/internal.rbs

Constant Summary collapse

FENCE_REGEXP =
/\A {0,3}(`{3,}|~{3,})/
LIST_MARKER_REGEXP =
/\A( {0,3}(?:[-+*]|\d+[.)]))([ \t]+)(\S.*)?\z/

Instance Method Summary collapse

Instance Method Details

#fenced_lines(source) ⇒ Object

Parameters:

  • source (Object)

Returns:

  • (Object)


18
19
20
21
22
23
24
25
# File 'lib/mdlint/linter/rules/source_style.rb', line 18

def fenced_lines(source)
  in_fence = false
  source.each_line.with_index(1).filter_map do |line, line_number|
    marker = line.chomp.match(FENCE_REGEXP)
    in_fence = !in_fence if marker
    [line_number, in_fence, marker]
  end
end

#inline_tokens(tokens) ⇒ Object

Parameters:

  • tokens (Object)

Returns:

  • (Object)


35
36
37
# File 'lib/mdlint/linter/rules/source_style.rb', line 35

def inline_tokens(tokens)
  tokens.select { |token| token.type == :inline }.flat_map(&:children)
end

#line_is_blank?(line) ⇒ Boolean

Parameters:

  • line (Object)

Returns:

  • (Boolean)


31
32
33
# File 'lib/mdlint/linter/rules/source_style.rb', line 31

def line_is_blank?(line)
  line.to_s.match?(/\A\s*\z/)
end

#lines(source) ⇒ Object

Parameters:

  • source (Object)

Returns:

  • (Object)


14
15
16
# File 'lib/mdlint/linter/rules/source_style.rb', line 14

def lines(source)
  source.lines
end

#outside_fence?(fence_state) ⇒ Boolean

Parameters:

  • fence_state (Object)

Returns:

  • (Boolean)


27
28
29
# File 'lib/mdlint/linter/rules/source_style.rb', line 27

def outside_fence?(fence_state)
  !fence_state
end