Module: MasterView::DirectivesInfo

Defined in:
lib/masterview/masterview_info.rb

Overview

:nodoc:

Constant Summary collapse

DEFAULT_RENDERING_OPTIONS =
ConfigInfoHelpers::DEFAULT_RENDERING_OPTIONS.clone

Class Method Summary collapse

Class Method Details

.getHtmlTemplate(element_option_name, params) ⇒ Object



174
175
176
# File 'lib/masterview/masterview_info.rb', line 174

def self.getHtmlTemplate(element_option_name, params)
  ConfigInfoHelpers.getHtmlTemplate( element_option_name, params, DEFAULT_RENDERING_OPTIONS )
end

.to_html(params = {}) ⇒ Object

Answer an html rendering of the Configuration Optionally provide HTML fragment templates and class/style attributes to customize rendering



180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
# File 'lib/masterview/masterview_info.rb', line 180

def self.to_html( params={} )

  default_priority = MasterView::DirectiveMetadata::DirectivePriorities::Default
  default_priority = MasterView::DirectiveMetadata.get_priority_name(default_priority)

  # organize the directives info we want to present
  directive_load_path = MasterView::DirectiveLoadPath.current
  directive_registry = MasterView::DirectiveRegistry.current
  namespaces = directive_registry.loaded_namespaces.sort
  directives = {}
  namespaces.each { | ns_name | directives[ns_name] = {} }
  directive_registry.loaded_classes.each { | directive_class |
    ns_name = directive_class.namespace_name
    attr_name = directive_class.attribute_name
    directives[ns_name][attr_name] = directive_class
  }

  # unpack the supported keyword args
  title_html_template = getHtmlTemplate( :title, params )  #parms: config settings title
  preamble_html_template = getHtmlTemplate( :preamble, params ) #parms: MasterView version
  config_notes_html_template = getHtmlTemplate( :config_notes, params ) #parms: default priority level
  config_settings_html_template = getHtmlTemplate( :container, params ) #parms: section/option entries
  section_entry_html_template = getHtmlTemplate( :section_entry, params ) #parms: :section_attrs, section_name
  option_entry_html_template = getHtmlTemplate( :option_entry, params ) #parms: :option_name_attrs, option_name, :option_value_attrs, option_value
  option_subentry_entry_html_template = getHtmlTemplate( :option_subentry_entry, params ) #parms: value
  postscript_html = getHtmlTemplate( :postscript, params )

  # prepare our templates for convenient use during the generation loop below
  config_settings_html_start, config_settings_html_end = config_settings_html_template.split('%s')

  # and off we go at last
  config = MasterView::ConfigSettings
  html = []
  unless title_html_template == :none  # allow client to suppress
    html << title_html_template % [ 'MasterView Configuration' ]
  end
  unless preamble_html_template == :none  # allow client to suppress
    html << preamble_html_template % [ MasterView::VERSION::STRING ]
  end
  unless config_notes_html_template == :none  # allow client to suppress
    html << config_notes_html_template % [ default_priority ]
  end
  html << config_settings_html_start
  # Loaded directives
  namespaces.each { | ns_name |
    html << section_entry_html_template % "#{ns_name}: Namespace Directives"
    directives_map = directives[ns_name]  ###[attr_name] = directive_class
    directives_map.keys.sort.each { | attr_name |
      directive_class = directives_map[attr_name]
      attr_qname = directive_class.attribute_qname
      priority = MasterView::DirectiveMetadata.get_priority_label(directive_class.priority)
      description = priority  #too verbose: "priority #{priority}"
      html << option_entry_html_template % [ attr_qname, description ]
      description = directive_class.[:description]
      if description
        html << option_subentry_entry_html_template % description
      end
    }
  }
  # load path
  html << section_entry_html_template % 'Directives Load Path'
  directive_load_path.each { | dpe |
      option_name = dpe.dir_path
      option_value = '&nbsp;'  #TODO: dpe.options.inspect
      html << option_entry_html_template % [ option_name, option_value ]
  }
  html << config_settings_html_end
  unless postscript_html == :none  # allow client to suppress
    html << postscript_html
  end
  html.join("\n")

end