module Syskit::GUI::ModelViews
Public Class Methods
render_instance_requirements(page, req, resolve_dependency_injection: false)
click to toggle source
# File lib/syskit/gui/model_views/profile.rb, line 64 def self.render_instance_requirements(page, req, resolve_dependency_injection: false) # First, render the main model component_model = [req.component_model] req_component = req.to_component_model if !component_model.first # This is a service proxy component_model.pop end if req.model.respond_to?(:tag_name) tag_name = req.model.tag_name formatted = ["<a href=\"#tag_definition_#{tag_name}\">#{tag_name}_tag</a>"] else if req_component.model.respond_to?(:proxied_data_services) component_model.concat(req_component.model.proxied_data_services.sort_by(&:name).compact) end formatted = [component_model.map { |m| page.link_to(m) }.join(",")] end if !req.arguments.empty? arguments = req.arguments.map { |key, value| "#{key}: #{value}" } formatted[0] += ".with_arguments(#{MetaRuby::GUI::HTML.escape_html(arguments.join(", "))})" end if resolve_dependency_injection selections = req.resolved_dependency_injection if !selections.empty? formatted_selections = render_instance_requirements_selections(page, selections) formatted[-1] += "." formatted.concat formatted_selections end else pushed_selections = req.send(:pushed_selections) if !pushed_selections.empty? formatted_selections = render_instance_requirements_selections(page, pushed_selections, "use<0>") formatted[-1] += "." formatted.concat formatted_selections use_suffix = "<1>" end selections = req.send(:selections) if !selections.empty? formatted_selections = render_instance_requirements_selections(page, selections, "use#{use_suffix}") formatted[-1] += "." formatted.concat formatted_selections end end formatted end
render_instance_requirements_selections(page, selections, use_method = "use")
click to toggle source
# File lib/syskit/gui/model_views/profile.rb, line 40 def self.render_instance_requirements_selections(page, selections, use_method = "use") defaults = selections.defaults.map do |defsel| render_instance_requirements(page, defsel.to_instance_requirements) end explicit = render_selection_mapping(page, selections.explicit) all = defaults + explicit all = all.each_with_index.map do |block, i| if i == 0 block[0] = " use(" + block.first else block[0] = " " + block.first end block = [block[0]] + block[1..-1].map do |line| line = " " + line end if i == all.size - 1 block[-1] = block.last + ")" else block[-1] = block.last + "," end block end.flatten end
render_mapping(page, key, sel)
click to toggle source
# File lib/syskit/gui/model_views/profile.rb, line 11 def self.render_mapping(page, key, sel) if key.respond_to?(:to_instance_requirements) key = render_instance_requirements(page, key.to_instance_requirements) else key = [key.to_s] end if sel.respond_to?(:to_instance_requirements) sel = render_instance_requirements(page, sel.to_instance_requirements) else sel = [sel.to_s] end longest_key_line = key.max { |l| l.size }.size if key.size < sel.size key += [" " * longest_key_line] * (sel.size - key.size) end key.each_with_index.map do |k, key_index| if v = sel[key_index] k += " " * (longest_key_line - k.size) if key_index == 0 k += ": #{v}" else k += " #{v}" end else k end end end
render_selection_mapping(page, mapping)
click to toggle source
# File lib/syskit/gui/model_views/profile.rb, line 5 def self.render_selection_mapping(page, mapping) mapping.each_with_index.map do |(key, sel), sel_index| render_mapping(page, key, sel) end end