class AccessibleSeedYaml::Table

This class is wrapper of seed.

Functions:
 - Fetch seed data by record unit.
 - Stored original seed string. It can fetch anytime.

Attributes

original_seed[R]

Public Class Methods

new(seed) click to toggle source

@param [String] seed for data source.

# File lib/accessible_seed_yaml/table.rb, line 14
def initialize(seed)
  @original_seed = seed
end

Public Instance Methods

records() click to toggle source

@return [Array of AccessibleSeedYaml::Record] seed data. It split by record unit. @example

<source data>
data1:
  id: 1
  name: "one"
data2:
  id: 2
  name: "two"

<return>
[
 #<AccessibleSeedYaml::Record:0x007f91552770c0
  @original_seed="data1:\n  id: 1\n  name: \"one\"\n",
  @seed_data_by_hash={"data1"=>{"id"=>1, "name"=>"one"}}>,
 #<AccessibleSeedYaml::Record:0x007f915526c238
  @original_seed="data2:\n  id: 2\n  name: \"two\"\n",
  @seed_data_by_hash={"data2"=>{"id"=>2, "name"=>"two"}}>,
]
# File lib/accessible_seed_yaml/table.rb, line 38
def records
  setup_records if @records.nil?
  @records
end
to_s() click to toggle source

@return [String] seed data by yaml string.

# File lib/accessible_seed_yaml/table.rb, line 44
def to_s
  self.original_seed
end

Private Instance Methods

fetch_first_record!(seed) click to toggle source
# File lib/accessible_seed_yaml/table.rb, line 64
def fetch_first_record!(seed)
  record_boader = seed.index(record_boader_regexp)
   
  if record_boader.nil?
    return seed.slice!(0..-1)
  end
   
  seed.slice!(0..record_boader)
end
record_boader_regexp() click to toggle source
# File lib/accessible_seed_yaml/table.rb, line 74
def record_boader_regexp
  /\n[^ ]/
end
setup_records() click to toggle source
# File lib/accessible_seed_yaml/table.rb, line 50
def setup_records
  @records = []
  seed = @original_seed.dup
  
  loop do
    if seed.empty?
      break
    end
    
    record = Record.new(fetch_first_record!(seed))
    @records << record
  end
end