Class: PDoc::Fragment

Inherits:
Object
  • Object
show all
Defined in:
lib/pdoc/parser/fragment.rb

Defined Under Namespace

Classes: InconsistentPrefixError

Constant Summary collapse

PREFIX_REGEXP =
/^\s*\*?\s*/

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(string, line_number) ⇒ Fragment

Returns a new instance of Fragment.



8
9
10
11
# File 'lib/pdoc/parser/fragment.rb', line 8

def initialize(string, line_number)
  @line_number = line_number
  @string = string
end

Instance Attribute Details

#line_numberObject (readonly)

Returns the value of attribute line_number.



7
8
9
# File 'lib/pdoc/parser/fragment.rb', line 7

def line_number
  @line_number
end

Instance Method Details

#linesObject



41
42
43
# File 'lib/pdoc/parser/fragment.rb', line 41

def lines
  @lines ||= @string.split("\n")
end

#normalizeObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/pdoc/parser/fragment.rb', line 13

def normalize
  # Cleans up the text by removing opening and closing comment tags
  # and removing the prefix off of every line.
  # Raises and error if prefix are inconsistent. (Prefix is calculated
  # by looking at line 2 of the comment)
  results = []
  lines.each_with_index do |line, index|
    if index == 0                              # first line
      results << line.sub(/\s*\/\*\*\s*/, '')  # remove opening /**
    elsif index == lines.size - 1              # last line
      results << line.sub(/\s*\*\*?\/\s*/, '') # remove closing **/
    elsif line =~ prefix_regexp                # correctly prefixed lines
      results << line.sub(prefix_regexp, '')   # remove optional prefix
    else
      raise InconsistentPrefixError.new(self, line, index)
    end
  end
  results
end

#prefixObject



33
34
35
# File 'lib/pdoc/parser/fragment.rb', line 33

def prefix
  PREFIX_REGEXP.match(lines[1])[0] if lines.size > 2
end

#prefix_regexpObject



37
38
39
# File 'lib/pdoc/parser/fragment.rb', line 37

def prefix_regexp
  @prefix_regexp ||= Regexp.new('^' << Regexp.escape(prefix))
end