Class: StructPacking::Util

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

Overview

internal C-like_structure_declaration

Class Method Summary collapse

Class Method Details

.internal_format_from(text) ⇒ Object

Parse declaration string into internal format. Internal format is ...



137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# File 'lib/struct_packing/util.rb', line 137

def self.internal_format_from(text)
  params = {}
  text.split(/[\n;]/).each do |line|
    line.gsub!(/^\s*/,'')
    line.gsub!(/\s*$/,'')

    idx = line.rindex(' ')
    type = line[0..idx-1]
    name = line[idx+1..line.length]

    if name =~ /(.*)\[\w*(\d+)\w*\]\w*/
      type += "[#{$2}]"
      name = $1
    end
 
    params[name.to_sym] = type
  end
  
  params
end

.pack_template_from(text, mod = nil) ⇒ Object

Parse declaration string into pack template.



130
131
132
133
# File 'lib/struct_packing/util.rb', line 130

def self.pack_template_from(text,mod=nil)
  internal = internal_format_from(text)
  types_to_template(internal.values,mod)
end