Class: Habdsl::SheetParser
- Inherits:
-
Object
- Object
- Habdsl::SheetParser
- Defined in:
- lib/habdsl/sheet_parser.rb
Overview
Parser for Spreadsheet input
Class Method Summary collapse
Class Method Details
.parse(input_code:, excel_path:) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/habdsl/sheet_parser.rb', line 9 def self.parse(input_code:, excel_path:) raise ArgumentError, "Excel file does not exist: #{excel_path}" unless File.exist?(excel_path) xlsx = Roo::Spreadsheet.open(excel_path.to_s) sheet = xlsx.sheet(0) headers = sheet.row(1).map(&:to_sym) table = [] (2..sheet.last_row).each do |row_num| row = sheet.row(row_num) data = Hash[headers.zip(row)] table << data end raise ArgumentError, "No data rows found in sheet" if table.empty? BaseParser.evaluate_dsl(input_code: input_code, table: table) end |