Module: CSVDecision

Defined in:
lib/csv_decision.rb,
lib/csv_decision/data.rb,
lib/csv_decision/load.rb,
lib/csv_decision/scan.rb,
lib/csv_decision/index.rb,
lib/csv_decision/input.rb,
lib/csv_decision/parse.rb,
lib/csv_decision/paths.rb,
lib/csv_decision/table.rb,
lib/csv_decision/header.rb,
lib/csv_decision/result.rb,
lib/csv_decision/columns.rb,
lib/csv_decision/options.rb,
lib/csv_decision/decision.rb,
lib/csv_decision/defaults.rb,
lib/csv_decision/matchers.rb,
lib/csv_decision/scan_row.rb,
lib/csv_decision/validate.rb,
lib/csv_decision/dictionary.rb,
lib/csv_decision/matchers/guard.rb,
lib/csv_decision/matchers/range.rb,
lib/csv_decision/matchers/symbol.rb,
lib/csv_decision/matchers/numeric.rb,
lib/csv_decision/matchers/pattern.rb,
lib/csv_decision/matchers/constant.rb,
lib/csv_decision/matchers/function.rb

Overview

CSV Decision: CSV based Ruby decision tables. Created December 2017. See LICENSE and README.md for details.

Author:

Defined Under Namespace

Modules: Data, Defaults, Dictionary, Header, Input, Load, Options, Parse, Validate Classes: CellValidationError, Columns, Decision, Error, FileError, Index, Matchers, Paths, Result, Scan, ScanRow, Table, TableValidationError

Class Method Summary collapse

Class Method Details

.load(path, options = {}) ⇒ Hash{Symbol=><CSVDecision::Table>}

Load all the CSV files located in the designated folder path.

Parameters:

  • path (Pathname)

    Directory containing CSV decision table files.

  • options (Hash{Symbol=>Object}) (defaults to: {})

    Options hash controlling how the table is parsed and interpreted.

Returns:

  • (Hash{Symbol=><CSVDecision::Table>})

    Hash of decision tables keyed by the CSV file’s symbolized base name.

Raises:

  • (ArgumentError)

    Invalid path name or folder.



15
16
17
# File 'lib/csv_decision/load.rb', line 15

def self.load(path, options = {})
  Load.path(path: path, options: options)
end

.parse(data, options = {}) ⇒ CSVDecision::Table

Builds a decision table from the input data - which may either be a file, CSV string or an array of arrays.

Examples:

Simple Example

If you have cloned the gem's git repo, then you can run:
table = CSVDecision.parse(Pathname('spec/data/valid/simple_example.csv'))
  #=> CSVDecision::Table
table.decide(topic: 'finance', region: 'Europe') #=> team_member: 'Donald'

Parameters:

  • data (Pathname, File, Array<Array<String>>, String)

    input data given as a CSV file, array of arrays or CSV string.

  • options (Hash{Symbol=>Object}) (defaults to: {})

    Options hash controlling how the table is parsed and interpreted.

Options Hash (options):

  • :first_match (Boolean)

    Stop scanning after finding the first row match.

  • :regexp_implicit (Boolean)

    Make regular expressions implicit rather than requiring the comparator =~. (Use with care.)

  • :text_only (Boolean)

    All cells treated as simple strings by turning off all special matchers.

  • :matchers (Array<Matchers::Matcher>)

    May be used to control the inclusion and ordering of special matchers. (Advanced feature, use with care.)

Returns:

Raises:



47
48
49
# File 'lib/csv_decision/parse.rb', line 47

def self.parse(data, options = {})
  Parse.table(data: data, options: Options.normalize(options))
end

.rootString

Returns gem project’s root directory.

Returns:

  • (String)

    gem project’s root directory



12
13
14
# File 'lib/csv_decision.rb', line 12

def self.root
  File.dirname __dir__
end