module Inspec::Utils::CommentParser

Public Instance Methods

parse_comment_line(raw, opts) click to toggle source

Parse a line with a command. For example: `a = b # comment`. Retrieves the actual content.

@param [String] raw the content lines you want to be parsed @param [Hash] opts optional configuration @return [Array] contains the actual line and the position of the line end

# File lib/inspec/utils/parser.rb, line 44
def parse_comment_line(raw, opts)
  idx_nl = raw.index("\n")
  idx_comment = raw.index(opts[:comment_char])
  idx_nl = raw.length if idx_nl.nil?
  idx_comment = idx_nl + 1 if idx_comment.nil?
  line = ""

  # is a comment inside this line
  if idx_comment < idx_nl && idx_comment != 0
    line = raw[0..(idx_comment - 1)]
    # in case we don't allow comments at the end
    # of an assignment/statement, ignore it and fall
    # back to treating this as a regular line
    if opts[:standalone_comments] && !is_empty_line(line)
      line = raw[0..(idx_nl - 1)]
    end
  # if there is no comment in this line
  elsif idx_comment > idx_nl && idx_nl != 0
    line = raw[0..(idx_nl - 1)]
  end
  [line, idx_nl]
end