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