def compile
if (@name !~ /^[A-Z][_0-9A-Za-z]*$/) then
raise PageError, "invalid page name: #{@name.inspect}"
end
src_name = File.join(@base_dir, @name, @name + '.rb')
map_name = File.join(@base_dir, @name, @name + '.map')
xml_name = File.join(@base_dir, @name, @name + '.xml')
loader = Loader.new(src_name)
context_class = loader.const_get(@name)
unless (context_class < PageContext) then
raise PageError, "not inherited from #{PageContext.inspect}: #{context_class}"
end
@context = context_class.new(self, @option)
@widget_locator = WidgetLocator.new(@context)
assembler = ComponentAssembler.new(@widget_locator, self)
@widget_locator.extend(@xml_assist)
assembler.extend(@xml_assist)
File.open(map_name) {|input|
@widget_locator.read(input)
}
File.open(xml_name) {|input|
assembler.read(input)
}
super
nil
end