Class: GDstruct::Creator

Inherits:
Object
  • Object
show all
Defined in:
lib/gdstruct.rb

Overview

create a Ruby Hash/Array structure out of possibly several separated GDS definition strings

# file: data.gdstruct
&persons persons, @schema person        /*
    firstname   lastname    yearOfBirth */
  : John      | McArthur  | 1987
  : Berry     | Miller    | 1976

Examples:

require 'gdstruct'

creator = GDstruct::Creator.new

creator.include( <<-EOS )
@schema person( firstname, lastname, yearOfBirth )
EOS

creator.include_file( 'data.gdstruct' )

creator.include( <<-EOS )
all
  mypersons *persons
EOS

res = creator.create

# => res = {:persons=>[{:firstname=>"John", :lastname=>"McArthur", :yearOfBirth=>1987}, {:firstname=>"Berry", :lastname=>"Miller", :yearOfBirth=>1976}],
#           :all=>{:mypersons=>{:persons=>[{:firstname=>"John", :lastname=>"McArthur", :yearOfBirth=>1987}, {:firstname=>"Berry", :lastname=>"Miller", :yearOfBirth=>1976}]}}}

Instance Method Summary collapse

Constructor Details

#initializeCreator

Returns a new instance of Creator.



78
79
80
# File 'lib/gdstruct.rb', line 78

def initialize
  @gdsDefinition = ""
end

Instance Method Details

#create(config = {}) ⇒ Object



94
95
96
# File 'lib/gdstruct.rb', line 94

def create( config = {} )
  LDLgeneratedLanguage::Gds.parse( @gdsDefinition, config )
end

#include(gds_definition) ⇒ Object



86
87
88
# File 'lib/gdstruct.rb', line 86

def include( gds_definition )
  @gdsDefinition << gds_definition << "\n"
end

#include_file(file_name) ⇒ Object



90
91
92
# File 'lib/gdstruct.rb', line 90

def include_file( file_name )
  @gdsDefinition << File.read( file_name ) << "\n"
end

#resetObject



82
83
84
# File 'lib/gdstruct.rb', line 82

def reset
  @gdsDefinition = ""
end