Class: Nodaire::Tablatal
- Inherits:
-
Object
- Object
- Nodaire::Tablatal
- Includes:
- Enumerable
- Defined in:
- lib/nodaire/tablatal/tablatal.rb,
lib/nodaire/tablatal/parser.rb
Overview
Interface for documents in Tablatal format.
Tablatal is a text file format which represents a ‘list-type database’. This format was created by Devine Lu Linvega – see wiki.xxiivv.com/#tablatal for more information.
Defined Under Namespace
Classes: Parser
Instance Attribute Summary collapse
-
#data ⇒ Array<Hash>
readonly
deprecated
Deprecated.
This will be removed in a future release. Use #to_a instead.
-
#errors ⇒ Array<String>
readonly
An array of zero or more error message strings.
-
#keys ⇒ Array
readonly
The keys from the first line of the source.
Class Method Summary collapse
-
.parse(source, symbolize_names: false) ⇒ Tablatal
Parse the document
source
. -
.parse!(source, symbolize_names: false) ⇒ Tablatal
Parse the document
source
, raising an exception if a parser error occurs.
Instance Method Summary collapse
-
#[](index) ⇒ Hash
Returns the data for a given row
index
. -
#each(&block) ⇒ Object
Enumerable.
-
#to_a(*args) ⇒ Array<Hash>
Convert the document to an array of hashes.
-
#to_csv ⇒ String
Convert the document to CSV.
-
#to_json(*args) ⇒ String
Convert the document to JSON.
-
#valid? ⇒ Boolean
Whether the source was parsed without errors.
Instance Attribute Details
#data ⇒ Array<Hash> (readonly)
This will be removed in a future release. Use #to_a instead.
52 53 54 |
# File 'lib/nodaire/tablatal/tablatal.rb', line 52 def data @data end |
#errors ⇒ Array<String> (readonly)
Returns an array of zero or more error message strings.
58 59 60 |
# File 'lib/nodaire/tablatal/tablatal.rb', line 58 def errors @errors end |
#keys ⇒ Array (readonly)
Returns the keys from the first line of the source.
54 55 56 |
# File 'lib/nodaire/tablatal/tablatal.rb', line 54 def keys @keys end |
Class Method Details
.parse(source, symbolize_names: false) ⇒ Tablatal
Parse the document source
.
83 84 85 86 87 |
# File 'lib/nodaire/tablatal/tablatal.rb', line 83 def self.parse(source, symbolize_names: false) parser = Parser.new(source, false, symbolize_names: symbolize_names) new(parser) end |
.parse!(source, symbolize_names: false) ⇒ Tablatal
Parse the document source
, raising an exception if a parser error occurs.
106 107 108 109 110 |
# File 'lib/nodaire/tablatal/tablatal.rb', line 106 def self.parse!(source, symbolize_names: false) parser = Parser.new(source, true, symbolize_names: symbolize_names) new(parser) end |
Instance Method Details
#[](index) ⇒ Hash
Returns the data for a given row index
.
132 133 134 |
# File 'lib/nodaire/tablatal/tablatal.rb', line 132 def [](index) @data[index] end |
#each(&block) ⇒ Object
Enumerable
171 172 173 |
# File 'lib/nodaire/tablatal/tablatal.rb', line 171 def each(&block) @data.each(&block) end |
#to_a(*args) ⇒ Array<Hash>
Convert the document to an array of hashes.
141 142 143 |
# File 'lib/nodaire/tablatal/tablatal.rb', line 141 def to_a(*args) @data.to_a(*args) end |
#to_csv ⇒ String
Convert the document to CSV.
160 161 162 163 164 165 166 167 |
# File 'lib/nodaire/tablatal/tablatal.rb', line 160 def to_csv CSV.generate do |csv| csv << keys data.each do |row| csv << keys.map { |key| row[key] } end end end |
#to_json(*args) ⇒ String
Convert the document to JSON.
151 152 153 |
# File 'lib/nodaire/tablatal/tablatal.rb', line 151 def to_json(*args) @data.to_json(*args) end |
#valid? ⇒ Boolean
Returns whether the source was parsed without errors.
117 118 119 |
# File 'lib/nodaire/tablatal/tablatal.rb', line 117 def valid? @errors.empty? end |