Class: Rouge::TextAnalyzer

Inherits:
String
  • Object
show all
Defined in:
lib/rouge/text_analyzer.rb

Instance Method Summary collapse

Instance Method Details

#doctypeObject

Return the contents of the doctype tag if present, nil otherwise.


25
26
27
28
29
30
31
32
33
# File 'lib/rouge/text_analyzer.rb', line 25

def doctype
  return @doctype if instance_variable_defined? :@doctype

  self =~ %r(\A\s*
    (?:<\?.*?\?>\s*)? # possible <?xml...?> tag
    <!DOCTYPE\s+(.+?)>
  )xm
  @doctype = $1
end

#doctype?(type = //) ⇒ Boolean

Check if the doctype matches a given regexp or string

Returns:

  • (Boolean)

36
37
38
# File 'lib/rouge/text_analyzer.rb', line 36

def doctype?(type=//)
  type === doctype
end

#lexes_cleanly?(lexer) ⇒ Boolean

Return true if the result of lexing with the given lexer contains no error tokens.

Returns:

  • (Boolean)

42
43
44
45
46
47
48
# File 'lib/rouge/text_analyzer.rb', line 42

def lexes_cleanly?(lexer)
  lexer.lex(self) do |(tok, _)|
    return false if tok.name == 'Error'
  end

  true
end

#shebangObject

Find a shebang. Returns nil if no shebang is present.


7
8
9
10
11
12
# File 'lib/rouge/text_analyzer.rb', line 7

def shebang
  return @shebang if instance_variable_defined? :@shebang

  self =~ /\A\s*#!(.*)$/
  @shebang = $1
end

#shebang?(match) ⇒ Boolean

Check if the given shebang is present.

This normalizes things so that text.shebang?('bash') will detect #!/bash, '#!/bin/bash', '#!/usr/bin/env bash', and '#!/bin/bash -x'

Returns:

  • (Boolean)

18
19
20
21
22
# File 'lib/rouge/text_analyzer.rb', line 18

def shebang?(match)
  return false unless shebang
  match = /\b#{match}(\s|$)/
  match === shebang
end