Class: Glib::Json::Traversal::Visitor

Inherits:
Object
  • Object
show all
Defined in:
app/controllers/concerns/glib/json/traversal.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeVisitor

Returns a new instance of Visitor.



38
39
40
# File 'app/controllers/concerns/glib/json/traversal.rb', line 38

def initialize
  @forms = []
end

Instance Attribute Details

#formsObject (readonly)

Used in test crawler



36
37
38
# File 'app/controllers/concerns/glib/json/traversal.rb', line 36

def forms
  @forms
end

Instance Method Details

#traverse_multiple(views, block) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'app/controllers/concerns/glib/json/traversal.rb', line 42

def traverse_multiple(views, block)
  if views.is_a? Array
    views.each do |view|
      case view['view']
      when 'panels/form-v1'
        @forms << view
        traverse_single view, block
        @forms.pop
      else
        traverse_single view, block
      end
    end
  end
end

#traverse_single(view, block) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'app/controllers/concerns/glib/json/traversal.rb', line 61

def traverse_single(view, block)
  block.call view

  # Generic view children
  traverse_multiple view['childViews'], block

  # Generic menu buttons
  traverse_multiple view['buttons'], block
  traverse_multiple view['childButtons'], block

  # Split panel
  traverse_vertical_content view['left'], block
  traverse_vertical_content view['center'], block
  traverse_vertical_content view['right'], block

  # List template
  traverse_multiple view['editButtons'], block
  traverse_multiple view['leftButtons'], block
  traverse_multiple view['rightButtons'], block

  # TODO: crawl header and footer
  # Table/List
  if (sections = view['sections']).is_a? Array
    sections.each do |section|
      traverse_vertical_content section['header'], block
      traverse_multiple section['rows'], block
      traverse_vertical_content section['footer'], block
    end
  end
end

#traverse_vertical_content(view, block) ⇒ Object



57
58
59
# File 'app/controllers/concerns/glib/json/traversal.rb', line 57

def traverse_vertical_content(view, block)
  traverse_multiple view['childViews'], block if view
end