# -*- mode: perl6 -*- use WebCoso::Maker::TT; use WebCoso::Maker::RST; use WebCoso::Maker::XHTML; use WebCoso::Maker::HTML; class WebCoso::Doc::Base { has $!wc; has $.dir; has $.tt; has $.rst; has $.xhtml; has $.html; method basename() { ... } submethod BUILD(:$!wc,:$!dir) { my $basename = self.basename; $!tt = WebCoso::Maker::TT.new(:$basename,:$!dir,:$!wc); $!rst = WebCoso::Maker::RST.new(:$basename,:$!dir,:$!wc); $!xhtml = WebCoso::Maker::XHTML.new(:$basename,:$!dir,:$!wc); $!html = WebCoso::Maker::HTML.new(:$basename,:$!dir,:$!wc); } method make-by-ext($ext) { say "Doc::Base($.dir/$.basename)::make-by-ext($ext)"; given $ext { when 'rest.txt' { return $.tt.make() } when 'du.xml' { return $.rst.make() } when 'xhtml' { return $.xhtml.make() } when 'html' { return $.html.make() } } } method make() { say "Doc::Base($.dir/$.basename)::make"; $.make-by-ext('html'); } }