diff --git a/nix/pkgs/subnetplan/render.rb b/nix/pkgs/subnetplan/render.rb index aa74757..68fb9fb 100644 --- a/nix/pkgs/subnetplan/render.rb +++ b/nix/pkgs/subnetplan/render.rb @@ -26,11 +26,12 @@ class Group end class Block - attr_accessor :label, :name + attr_accessor :label, :name, :span def initialize label, name @label = label @name = name + @span = 1 end end @@ -72,25 +73,25 @@ groups = groups.collect do |group, nets| blocks = [] row = [] + x = 0 allnet.subnet(max_prefix).each do |addr| net = nets.select { |net| net.addr.include? addr }[0] label = net ? "#{addr}/#{net.addr.prefix}" : addr.to_s - row << Block.new(label, net ? net.desc : "") - if row.size >= TABLE_WIDTH + name = net ? net.desc : "" + if row.last and name != "" and row.last.name == name + row.last.span += 1 + else + row << Block.new(label, name) + end + x += 1 + if x >= TABLE_WIDTH blocks << row row = [] + x = 0 end end blocks << row if row.size > 0 - blocks.each do |row| - prev_name = nil - row.each_with_index do |block| - block.label = "" if prev_name == block.name - prev_name = block.name - end - end - Group.new(allnet, blocks) end @@ -117,6 +118,11 @@ html = ERB::new <<~EOF Subnetwork Plan + @@ -127,7 +133,7 @@ html = ERB::new <<~EOF <% group.blocks.each do |row| %> <% row.each do |block| %> - + <% end %> <% end %>
<%= block.label %> <%= block.name %><%= block.label %> <%= block.name %>