Module: VORuby::STC

Defined in:
lib/voruby/stc/loader.rb,
lib/voruby/stc/stc_v1_20.rb

Defined Under Namespace

Modules: V1_20

Class Method Summary collapse

Class Method Details

.dispatch_from_element_name(ns, override = nil) ⇒ Object



11
12
13
14
15
16
# File 'lib/voruby/stc/loader.rb', line 11

def self.dispatch_from_element_name(ns, override=nil)
  Proc.new{ |xml|
    name = (override)? override.call(xml.name): xml.name
    eval("#{ns}::#{name}.load_from_xml(xml)")
  }
end

.expand_group(sub_groups, group, expanded = []) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/voruby/stc/loader.rb', line 18

def self.expand_group(sub_groups, group, expanded=[])
  group_name = (group.is_a?(String))? group: group.to_s.split('::')[-1]
  return if !sub_groups.has_key?(group_name)
  
  sub_groups[group_name].each do |klass|
    expanded.push(klass)
    
    klass_name = klass.name.split('::')[-1]
    if sub_groups.has_key?(klass_name)
      sub_groups[klass_name].each do |sub_klass|
        expanded.push(sub_klass)
        
        sub_klass_name = sub_klass.name.split('::')[-1]
        expand_group(sub_groups, sub_klass, expanded)
      end
    end   
  end
  
  return expanded
end

.group_member_names(group, sub_groups, nsprefix = nil) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/voruby/stc/loader.rb', line 46

def self.group_member_names(group, sub_groups, nsprefix=nil)
  return STC::group_members(sub_groups, group).collect{ |klass|
    element_name = klass.name.split('::')[-1]
    element_name = "#{nsprefix}:#{element_name}" if nsprefix
    element_name
  }
end

.group_members(sub_groups, group) ⇒ Object



39
40
41
42
43
44
# File 'lib/voruby/stc/loader.rb', line 39

def self.group_members(sub_groups, group)
  group_name = (group.is_a?(String))? group: group.to_s.split('::')[-1]
  raise "Substition group #{group_name} does not exist" if !sub_groups.has_key?(group_name)
  
  return STC::expand_group(sub_groups, group)
end