lib/omf-web/widget.rb in omf_web-0.9.6 vs lib/omf-web/widget.rb in omf_web-0.9.7

- old
+ new

@@ -3,11 +3,12 @@ module OMF::Web::Widget @@widgets = {} - @@descriptions = {} + @@descriptions = {} + @@type2class = {} def self.register_widget(wdescr) unless id = wdescr[:id] raise "Missing 'id' for widget '#{wdescr.inspect}'" end @@ -20,10 +21,19 @@ def self.registered_widgets() @@descriptions end + def self.register_widget_type(id, widget_class) + id = id.to_sym + if (@@type2class.key? id) + raise "Repeated try to register widget type '#{id}'" + end + @@type2class[id] = widget_class + end + + # Return the number of top level widgets. If 'restrict_to' is an # array, only return those. # def self.toplevel_widgets(restrict_to = nil) if restrict_to @@ -80,9 +90,12 @@ require 'omf-web/widget/text/text_widget' w = OMF::Web::Widget::TextWidget.create_text_widget(type, wdescr) when /^code/ require 'omf-web/widget/code_widget' w = OMF::Web::Widget::CodeWidget.create_code_widget(type, wdescr) + when /^moustache/ + require 'omf-web/widget/mustache_widget' + w = OMF::Web::Widget::MustacheWidget.create_mustache_widget(type, wdescr) else raise "Unknown widget type '#{type}' (#{wdescr.inspect})" end @@widgets[wdescr[:id]] = w end \ No newline at end of file