class Inspec::Profile

def load_rule(rule, file, controls, groups)

def load_rule(rule, file, controls, groups)
  id = Inspec::Rule.rule_id(rule)
  location = rule.instance_variable_get(:@__source_location)
  controls[id] = {
    title: rule.title,
    desc: rule.desc,
    descriptions: rule.descriptions,
    impact: rule.impact,
    refs: rule.ref,
    tags: rule.tag,
    checks: Inspec::Rule.checks(rule),
    code: Inspec::MethodSource.code_at(location, source_reader),
    source_location: location,
  }
  # try and grab code text from merge locations
  if controls[id][:code].empty? && Inspec::Rule.merge_count(rule) > 0
    Inspec::Rule.merge_changes(rule).each do |merge_location|
      code = Inspec::MethodSource.code_at(merge_location, source_reader)
      unless code.empty?
        controls[id][:code] = code
        break
      end
    end
  end
  groups[file] ||= {
    title: rule.instance_variable_get(:@__group_title),
    controls: [],
  }
  groups[file][:controls].push(id)
end