Sha256: c04c54d92aee7f1dc8f144917f08c37773052dfe74543551bdc02d3f97b95da0
Contents?: true
Size: 1.34 KB
Versions: 31
Compression:
Stored size: 1.34 KB
Contents
require 'roo' module Util class ExtractNistMappings def initialize(file) @file = file @full_excel = [] @headers = {} open_excel set_working_sheet map_headers retrieve_mappings end def open_excel @xlsx = Roo::Excelx.new(@file) end def full_excl @full_excel end def set_working_sheet @xlsx.default_sheet = 'VER 6.1 Controls' end def map_headers @xlsx.row(3).each_with_index { |header, i| @headers[header] = i } end def retrieve_mappings nist_ver = 4 cis_ver = @xlsx.row(2)[4].split(' ')[-1] ctrl_count = 1 ((@xlsx.first_row + 3)..@xlsx.last_row).each do |row_value| current_row = {} if @xlsx.row(row_value)[@headers['NIST SP 800-53 Control #']].to_s != '' current_row[:nist] = @xlsx.row(row_value)[@headers['NIST SP 800-53 Control #']].to_s else current_row[:nist] = 'Not Mapped' end current_row[:nist_ver] = nist_ver if @xlsx.row(row_value)[@headers['Control']].to_s == '' current_row[:cis] = ctrl_count.to_s ctrl_count += 1 else current_row[:cis] = @xlsx.row(row_value)[@headers['Control']].to_s end current_row[:cis_ver] = cis_ver @full_excel << current_row end end end end
Version data entries
31 entries across 31 versions & 1 rubygems