webgen 0.4.7 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/AUTHORS +5 -0
- data/COPYING +8 -338
- data/GPL +340 -0
- data/Rakefile +188 -445
- data/THANKS +7 -22
- data/VERSION +1 -1
- data/bin/webgen +6 -1
- data/data/webgen/resources.yaml +3 -0
- data/data/webgen/website_skeleton/README +10 -0
- data/data/webgen/website_skeleton/Rakefile +40 -0
- data/data/webgen/website_skeleton/config.yaml +17 -0
- data/data/webgen/website_styles/1024px/{default.css → src/default.css} +0 -0
- data/data/webgen/website_styles/1024px/{default.template → src/default.template} +3 -5
- data/data/webgen/website_styles/1024px/{images → src/images}/background.gif +0 -0
- data/data/webgen/website_styles/andreas00/{default.css → src/default.css} +0 -0
- data/{doc/examples → data/webgen}/website_styles/andreas00/src/default.template +3 -5
- data/data/webgen/website_styles/andreas00/{images → src/images}/bg.gif +0 -0
- data/data/webgen/website_styles/andreas00/{images → src/images}/front.jpg +0 -0
- data/data/webgen/website_styles/andreas00/{images → src/images}/menubg.gif +0 -0
- data/data/webgen/website_styles/andreas00/{images → src/images}/menubg2.gif +0 -0
- data/data/webgen/website_styles/andreas01/{default.css → src/default.css} +0 -0
- data/{doc/examples → data/webgen}/website_styles/andreas01/src/default.template +3 -5
- data/data/webgen/website_styles/andreas01/{images → src/images}/bg.gif +0 -0
- data/data/webgen/website_styles/andreas01/{images → src/images}/front.jpg +0 -0
- data/data/webgen/website_styles/andreas01/{print.css → src/print.css} +0 -0
- data/data/webgen/website_styles/andreas03/{default.css → src/default.css} +0 -0
- data/data/webgen/website_styles/andreas03/{default.template → src/default.template} +2 -4
- data/data/webgen/website_styles/andreas03/{images → src/images}/bodybg.png +0 -0
- data/data/webgen/website_styles/andreas03/{images → src/images}/contbg.png +0 -0
- data/data/webgen/website_styles/andreas03/{images → src/images}/footerbg.png +0 -0
- data/data/webgen/website_styles/andreas03/{images → src/images}/gradient1.png +0 -0
- data/data/webgen/website_styles/andreas03/{images → src/images}/gradient2.png +0 -0
- data/data/webgen/website_styles/andreas04/{default.css → src/default.css} +0 -0
- data/data/webgen/website_styles/andreas04/{default.template → src/default.template} +2 -4
- data/data/webgen/website_styles/andreas04/{images → src/images}/blinkarrow.gif +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/bodybg.png +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/contentbg.png +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/entrybg.png +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/flash.gif +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/flash2.gif +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/globe.gif +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/globebottom.gif +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/linkarrow.gif +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/menuhover.png +0 -0
- data/data/webgen/website_styles/andreas05/{default.css → src/default.css} +0 -0
- data/data/webgen/website_styles/andreas05/{default.template → src/default.template} +2 -4
- data/data/webgen/website_styles/andreas05/{images → src/images}/bodybg.gif +0 -0
- data/data/webgen/website_styles/andreas05/{images → src/images}/front.png +0 -0
- data/data/webgen/website_styles/andreas06/{default.css → src/default.css} +0 -0
- data/{doc/examples → data/webgen}/website_styles/andreas06/src/default.template +4 -6
- data/data/webgen/website_styles/andreas06/{images → src/images}/bodybg.gif +0 -0
- data/data/webgen/website_styles/andreas06/{images → src/images}/boxbg.gif +0 -0
- data/data/webgen/website_styles/andreas06/{images → src/images}/greypx.gif +0 -0
- data/data/webgen/website_styles/andreas06/{images → src/images}/header.jpg +0 -0
- data/data/webgen/website_styles/andreas06/{images → src/images}/innerbg.gif +0 -0
- data/data/webgen/website_styles/andreas06/{images → src/images}/leaves.jpg +0 -0
- data/data/webgen/website_styles/andreas06/{images → src/images}/tabs.gif +0 -0
- data/data/webgen/website_styles/andreas07/{browserfix.css → src/browserfix.css} +0 -0
- data/data/webgen/website_styles/andreas07/{default.css → src/default.css} +0 -0
- data/{doc/examples → data/webgen}/website_styles/andreas07/src/default.template +2 -4
- data/data/webgen/website_styles/andreas07/{images → src/images}/bodybg.gif +0 -0
- data/data/webgen/website_styles/andreas07/{images → src/images}/sidebarbg.gif +0 -0
- data/data/webgen/website_styles/andreas08/{default.css → src/default.css} +0 -0
- data/{doc/examples → data/webgen}/website_styles/andreas08/src/default.template +3 -5
- data/data/webgen/website_styles/andreas09/{default.css → src/default.css} +0 -0
- data/data/webgen/website_styles/andreas09/{default.template → src/default.template} +4 -6
- data/data/webgen/website_styles/andreas09/{images → src/images}/bodybg-black.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/bodybg-green.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/bodybg-orange.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/bodybg-purple.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/bodybg-red.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/bodybg.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/footerbg.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/menuhover-black.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/menuhover-green.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/menuhover-orange.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/menuhover-purple.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/menuhover-red.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/menuhover.jpg +0 -0
- data/data/webgen/website_styles/{default → simple}/README +0 -0
- data/data/webgen/website_styles/{default → simple/src}/default.css +0 -0
- data/{doc/examples/website_styles/default → data/webgen/website_styles/simple}/src/default.template +3 -5
- data/data/webgen/website_templates/default/README +0 -2
- data/data/webgen/website_templates/default/src/index.page +3 -3
- data/data/webgen/website_templates/project/README +0 -4
- data/data/webgen/website_templates/project/src/about.page +5 -5
- data/data/webgen/website_templates/project/src/download.page +3 -3
- data/data/webgen/website_templates/project/src/features.page +3 -3
- data/data/webgen/website_templates/project/src/index.page +4 -4
- data/data/webgen/website_templates/project/src/screenshots.page +5 -5
- data/doc/contentprocessor/erb.page +38 -0
- data/doc/contentprocessor/tags.page +61 -0
- data/doc/extensions.page +11 -0
- data/doc/faq.page +177 -0
- data/doc/getting_started.page +130 -0
- data/doc/index.page +50 -0
- data/doc/manual.page +356 -0
- data/doc/reference_configuration.page +328 -0
- data/doc/reference_metainfo.page +128 -0
- data/doc/sourcehandler/metainfo.page +117 -0
- data/doc/sourcehandler/page.page +32 -0
- data/doc/webgen_page_format.page +126 -0
- data/lib/webgen/blackboard.rb +73 -0
- data/lib/webgen/cache.rb +77 -0
- data/lib/webgen/cli.rb +99 -440
- data/lib/webgen/cli/create_command.rb +64 -0
- data/lib/webgen/cli/run_command.rb +20 -0
- data/lib/webgen/cli/utils.rb +82 -0
- data/lib/webgen/configuration.rb +71 -0
- data/lib/webgen/contentprocessor.rb +89 -0
- data/lib/webgen/contentprocessor/blocks.rb +46 -0
- data/lib/webgen/contentprocessor/context.rb +86 -0
- data/lib/webgen/contentprocessor/maruku.rb +18 -0
- data/lib/webgen/contentprocessor/redcloth.rb +15 -0
- data/lib/webgen/contentprocessor/tags.rb +134 -0
- data/lib/webgen/default_config.rb +128 -0
- data/lib/webgen/languages.rb +508 -40
- data/lib/webgen/loggable.rb +23 -0
- data/lib/webgen/logger.rb +78 -0
- data/lib/webgen/node.rb +275 -237
- data/lib/webgen/output.rb +31 -0
- data/lib/webgen/output/filesystem.rb +61 -0
- data/lib/webgen/page.rb +129 -0
- data/lib/webgen/path.rb +172 -0
- data/lib/webgen/source.rb +24 -0
- data/lib/webgen/source/filesystem.rb +56 -0
- data/lib/webgen/source/resource.rb +33 -0
- data/lib/webgen/source/stacked.rb +53 -0
- data/lib/webgen/sourcehandler.rb +175 -0
- data/lib/webgen/sourcehandler/base.rb +188 -0
- data/lib/webgen/sourcehandler/copy.rb +41 -0
- data/lib/webgen/sourcehandler/directory.rb +31 -0
- data/lib/webgen/sourcehandler/fragment.rb +66 -0
- data/lib/webgen/sourcehandler/metainfo.rb +107 -0
- data/lib/webgen/sourcehandler/page.rb +47 -0
- data/lib/webgen/sourcehandler/template.rb +64 -0
- data/lib/webgen/sourcehandler/virtual.rb +72 -0
- data/lib/webgen/tag.rb +16 -0
- data/lib/webgen/tag/base.rb +162 -0
- data/lib/webgen/tag/menu.rb +187 -0
- data/lib/webgen/tag/metainfo.rb +25 -0
- data/lib/webgen/tag/relocatable.rb +53 -0
- data/lib/webgen/tree.rb +80 -0
- data/lib/webgen/version.rb +6 -0
- data/lib/webgen/webgentask.rb +153 -0
- data/lib/webgen/website.rb +166 -288
- data/lib/webgen/websiteaccess.rb +29 -0
- data/lib/webgen/websitemanager.rb +124 -0
- data/man/man1/webgen.1 +31 -42
- data/misc/default.css +337 -0
- data/misc/default.template +73 -0
- data/misc/htmldoc.metainfo +22 -0
- data/misc/htmldoc.virtual +5 -0
- data/misc/images/arrow.gif +0 -0
- data/misc/images/error.gif +0 -0
- data/misc/images/exclamation.gif +0 -0
- data/misc/images/headerbg.jpg +0 -0
- data/misc/images/information.gif +0 -0
- data/misc/images/quote.gif +0 -0
- data/test/helper.rb +28 -0
- data/test/test_blackboard.rb +58 -0
- data/test/test_cache.rb +57 -0
- data/test/test_configuration.rb +35 -0
- data/test/test_contentprocessor.rb +31 -0
- data/test/test_contentprocessor_blocks.rb +34 -0
- data/test/test_contentprocessor_context.rb +38 -0
- data/test/test_contentprocessor_maruku.rb +24 -0
- data/test/test_contentprocessor_redcloth.rb +12 -0
- data/test/test_contentprocessor_tags.rb +97 -0
- data/test/test_languages.rb +53 -0
- data/test/test_loggable.rb +30 -0
- data/test/test_logger.rb +73 -0
- data/test/test_node.rb +305 -0
- data/test/test_output_filesystem.rb +57 -0
- data/test/test_page.rb +180 -0
- data/test/test_path.rb +112 -0
- data/test/test_source_filesystem.rb +59 -0
- data/test/test_source_resource.rb +21 -0
- data/test/test_source_stacked.rb +34 -0
- data/test/test_sourcehandler_base.rb +78 -0
- data/test/test_sourcehandler_copy.rb +45 -0
- data/test/test_sourcehandler_directory.rb +25 -0
- data/test/test_sourcehandler_fragment.rb +62 -0
- data/test/test_sourcehandler_metainfo.rb +79 -0
- data/test/test_sourcehandler_page.rb +62 -0
- data/test/test_sourcehandler_template.rb +61 -0
- data/test/test_sourcehandler_virtual.rb +46 -0
- data/test/test_tag_base.rb +82 -0
- data/test/test_tag_menu.rb +196 -0
- data/test/test_tag_metainfo.rb +17 -0
- data/test/test_tag_relocatable.rb +57 -0
- data/test/test_tree.rb +69 -0
- data/test/test_website.rb +96 -0
- data/test/test_websiteaccess.rb +23 -0
- data/test/test_websitemanager.rb +68 -0
- metadata +276 -800
- data/ChangeLog +0 -46
- data/README +0 -14
- data/TODO +0 -376
- data/data/webgen/data/ISO-639-2_values_8bits.txt +0 -492
- data/data/webgen/gallery-creator/default.png +0 -0
- data/data/webgen/gallery_styles/default/README +0 -6
- data/data/webgen/gallery_styles/default/gallery_gallery.template +0 -38
- data/data/webgen/gallery_styles/default/gallery_image.template +0 -30
- data/data/webgen/gallery_styles/default/gallery_main.template +0 -18
- data/data/webgen/gallery_styles/slides/README +0 -18
- data/data/webgen/gallery_styles/slides/collage.rb +0 -337
- data/data/webgen/gallery_styles/slides/gallery_gallery.template +0 -62
- data/data/webgen/gallery_styles/slides/gallery_image.template +0 -53
- data/data/webgen/gallery_styles/slides/gallery_main.template +0 -32
- data/data/webgen/icon_mapping.yaml +0 -27
- data/data/webgen/resources/emoticons/bigeyes/angry.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/cool.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/cry.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/drunk.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/lol.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/oops.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/sad.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/sleep.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/smile.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/tongue.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/wink.png +0 -0
- data/data/webgen/resources/emoticons/crystal/angry.png +0 -0
- data/data/webgen/resources/emoticons/crystal/cool.png +0 -0
- data/data/webgen/resources/emoticons/crystal/cry.png +0 -0
- data/data/webgen/resources/emoticons/crystal/drunk.png +0 -0
- data/data/webgen/resources/emoticons/crystal/lol.png +0 -0
- data/data/webgen/resources/emoticons/crystal/oops.png +0 -0
- data/data/webgen/resources/emoticons/crystal/sad.png +0 -0
- data/data/webgen/resources/emoticons/crystal/sleep.png +0 -0
- data/data/webgen/resources/emoticons/crystal/smile.png +0 -0
- data/data/webgen/resources/emoticons/crystal/tongue.png +0 -0
- data/data/webgen/resources/emoticons/crystal/wink.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/angry.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/cool.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/cry.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/drunk.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/lol.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/oops.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/sad.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/sleep.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/smile.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/tongue.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/wink.png +0 -0
- data/data/webgen/resources/emoticons/glass/angry.png +0 -0
- data/data/webgen/resources/emoticons/glass/cool.png +0 -0
- data/data/webgen/resources/emoticons/glass/cry.png +0 -0
- data/data/webgen/resources/emoticons/glass/drunk.png +0 -0
- data/data/webgen/resources/emoticons/glass/lol.png +0 -0
- data/data/webgen/resources/emoticons/glass/oops.png +0 -0
- data/data/webgen/resources/emoticons/glass/sad.png +0 -0
- data/data/webgen/resources/emoticons/glass/sleep.png +0 -0
- data/data/webgen/resources/emoticons/glass/smile.png +0 -0
- data/data/webgen/resources/emoticons/glass/tongue.png +0 -0
- data/data/webgen/resources/emoticons/glass/wink.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/angry.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/cool.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/cry.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/drunk.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/lol.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/oops.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/sad.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/sleep.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/smile.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/tongue.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/wink.png +0 -0
- data/data/webgen/resources/emoticons/matrix/angry.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/cool.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/cry.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/drunk.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/lol.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/oops.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/sad.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/sleep.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/smile.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/tongue.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/wink.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/angry.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/cool.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/cry.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/drunk.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/lol.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/oops.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/sad.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/sleep.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/smile.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/tongue.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/wink.gif +0 -0
- data/data/webgen/resources/icons/compressed.png +0 -0
- data/data/webgen/resources/icons/document.png +0 -0
- data/data/webgen/resources/icons/download.png +0 -0
- data/data/webgen/resources/icons/image.png +0 -0
- data/data/webgen/resources/icons/linux.png +0 -0
- data/data/webgen/resources/icons/mac.png +0 -0
- data/data/webgen/resources/icons/pdf.png +0 -0
- data/data/webgen/resources/icons/penguin.png +0 -0
- data/data/webgen/resources/icons/quicktime.png +0 -0
- data/data/webgen/resources/icons/real.png +0 -0
- data/data/webgen/resources/icons/rpm.png +0 -0
- data/data/webgen/resources/icons/sound.png +0 -0
- data/data/webgen/resources/icons/source.png +0 -0
- data/data/webgen/resources/icons/spreadsheet.png +0 -0
- data/data/webgen/resources/icons/text.png +0 -0
- data/data/webgen/resources/icons/vcard.png +0 -0
- data/data/webgen/resources/icons/video.png +0 -0
- data/data/webgen/resources/icons/win.png +0 -0
- data/data/webgen/resources/images/generated_by_webgen.png +0 -0
- data/data/webgen/resources/images/valid-css.gif +0 -0
- data/data/webgen/resources/images/valid-xhtml11.png +0 -0
- data/data/webgen/resources/images/webgen_logo.png +0 -0
- data/data/webgen/sipttra_styles/default/README +0 -7
- data/data/webgen/sipttra_styles/default/css/sipttra.rcss +0 -71
- data/data/webgen/sipttra_styles/default/js/sipttra.js +0 -7
- data/data/webgen/sipttra_styles/default/sipttra.template +0 -105
- data/data/webgen/website_styles/andreas00/default.template +0 -62
- data/data/webgen/website_styles/andreas01/default.template +0 -63
- data/data/webgen/website_styles/andreas06/default.template +0 -72
- data/data/webgen/website_styles/andreas07/default.template +0 -44
- data/data/webgen/website_styles/andreas08/default.template +0 -53
- data/data/webgen/website_styles/default/default.template +0 -38
- data/data/webgen/website_templates/personal_hp/README +0 -8
- data/data/webgen/website_templates/personal_hp/src/about.page +0 -12
- data/data/webgen/website_templates/personal_hp/src/index.page +0 -9
- data/data/webgen/website_templates/personal_hp/src/links.page +0 -22
- data/data/webgen/website_templates/personal_hp/src/projects.page +0 -20
- data/doc/config.yaml +0 -8
- data/doc/examples/website_styles/1024px/README +0 -9
- data/doc/examples/website_styles/1024px/config.yaml +0 -2
- data/doc/examples/website_styles/1024px/src/about.page +0 -12
- data/doc/examples/website_styles/1024px/src/default.css +0 -188
- data/doc/examples/website_styles/1024px/src/default.template +0 -62
- data/doc/examples/website_styles/1024px/src/download.page +0 -15
- data/doc/examples/website_styles/1024px/src/features.page +0 -8
- data/doc/examples/website_styles/1024px/src/images/background.gif +0 -0
- data/doc/examples/website_styles/1024px/src/index.page +0 -9
- data/doc/examples/website_styles/1024px/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas00/README +0 -9
- data/doc/examples/website_styles/andreas00/config.yaml +0 -2
- data/doc/examples/website_styles/andreas00/src/about.page +0 -12
- data/doc/examples/website_styles/andreas00/src/default.css +0 -290
- data/doc/examples/website_styles/andreas00/src/download.page +0 -15
- data/doc/examples/website_styles/andreas00/src/features.page +0 -8
- data/doc/examples/website_styles/andreas00/src/images/bg.gif +0 -0
- data/doc/examples/website_styles/andreas00/src/images/front.jpg +0 -0
- data/doc/examples/website_styles/andreas00/src/images/menubg.gif +0 -0
- data/doc/examples/website_styles/andreas00/src/images/menubg2.gif +0 -0
- data/doc/examples/website_styles/andreas00/src/index.page +0 -9
- data/doc/examples/website_styles/andreas00/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas01/README +0 -9
- data/doc/examples/website_styles/andreas01/config.yaml +0 -2
- data/doc/examples/website_styles/andreas01/src/about.page +0 -12
- data/doc/examples/website_styles/andreas01/src/default.css +0 -310
- data/doc/examples/website_styles/andreas01/src/download.page +0 -15
- data/doc/examples/website_styles/andreas01/src/features.page +0 -8
- data/doc/examples/website_styles/andreas01/src/images/bg.gif +0 -0
- data/doc/examples/website_styles/andreas01/src/images/front.jpg +0 -0
- data/doc/examples/website_styles/andreas01/src/index.page +0 -9
- data/doc/examples/website_styles/andreas01/src/print.css +0 -35
- data/doc/examples/website_styles/andreas01/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas03/README +0 -9
- data/doc/examples/website_styles/andreas03/config.yaml +0 -2
- data/doc/examples/website_styles/andreas03/src/about.page +0 -12
- data/doc/examples/website_styles/andreas03/src/default.css +0 -223
- data/doc/examples/website_styles/andreas03/src/default.template +0 -60
- data/doc/examples/website_styles/andreas03/src/download.page +0 -15
- data/doc/examples/website_styles/andreas03/src/features.page +0 -8
- data/doc/examples/website_styles/andreas03/src/images/bodybg.png +0 -0
- data/doc/examples/website_styles/andreas03/src/images/contbg.png +0 -0
- data/doc/examples/website_styles/andreas03/src/images/footerbg.png +0 -0
- data/doc/examples/website_styles/andreas03/src/images/gradient1.png +0 -0
- data/doc/examples/website_styles/andreas03/src/images/gradient2.png +0 -0
- data/doc/examples/website_styles/andreas03/src/index.page +0 -9
- data/doc/examples/website_styles/andreas03/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas04/README +0 -9
- data/doc/examples/website_styles/andreas04/config.yaml +0 -2
- data/doc/examples/website_styles/andreas04/src/about.page +0 -12
- data/doc/examples/website_styles/andreas04/src/default.css +0 -290
- data/doc/examples/website_styles/andreas04/src/default.template +0 -83
- data/doc/examples/website_styles/andreas04/src/download.page +0 -15
- data/doc/examples/website_styles/andreas04/src/features.page +0 -8
- data/doc/examples/website_styles/andreas04/src/images/blinkarrow.gif +0 -0
- data/doc/examples/website_styles/andreas04/src/images/bodybg.png +0 -0
- data/doc/examples/website_styles/andreas04/src/images/contentbg.png +0 -0
- data/doc/examples/website_styles/andreas04/src/images/entrybg.png +0 -0
- data/doc/examples/website_styles/andreas04/src/images/flash.gif +0 -0
- data/doc/examples/website_styles/andreas04/src/images/flash2.gif +0 -0
- data/doc/examples/website_styles/andreas04/src/images/globe.gif +0 -0
- data/doc/examples/website_styles/andreas04/src/images/globebottom.gif +0 -0
- data/doc/examples/website_styles/andreas04/src/images/linkarrow.gif +0 -0
- data/doc/examples/website_styles/andreas04/src/images/menuhover.png +0 -0
- data/doc/examples/website_styles/andreas04/src/index.page +0 -9
- data/doc/examples/website_styles/andreas04/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas05/README +0 -9
- data/doc/examples/website_styles/andreas05/config.yaml +0 -2
- data/doc/examples/website_styles/andreas05/src/about.page +0 -12
- data/doc/examples/website_styles/andreas05/src/default.css +0 -33
- data/doc/examples/website_styles/andreas05/src/default.template +0 -42
- data/doc/examples/website_styles/andreas05/src/download.page +0 -15
- data/doc/examples/website_styles/andreas05/src/features.page +0 -8
- data/doc/examples/website_styles/andreas05/src/images/bodybg.gif +0 -0
- data/doc/examples/website_styles/andreas05/src/images/front.png +0 -0
- data/doc/examples/website_styles/andreas05/src/index.page +0 -9
- data/doc/examples/website_styles/andreas05/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas06/README +0 -9
- data/doc/examples/website_styles/andreas06/config.yaml +0 -2
- data/doc/examples/website_styles/andreas06/src/about.page +0 -12
- data/doc/examples/website_styles/andreas06/src/default.css +0 -354
- data/doc/examples/website_styles/andreas06/src/download.page +0 -15
- data/doc/examples/website_styles/andreas06/src/features.page +0 -8
- data/doc/examples/website_styles/andreas06/src/images/bodybg.gif +0 -0
- data/doc/examples/website_styles/andreas06/src/images/boxbg.gif +0 -0
- data/doc/examples/website_styles/andreas06/src/images/greypx.gif +0 -0
- data/doc/examples/website_styles/andreas06/src/images/header.jpg +0 -0
- data/doc/examples/website_styles/andreas06/src/images/innerbg.gif +0 -0
- data/doc/examples/website_styles/andreas06/src/images/leaves.jpg +0 -0
- data/doc/examples/website_styles/andreas06/src/images/tabs.gif +0 -0
- data/doc/examples/website_styles/andreas06/src/index.page +0 -9
- data/doc/examples/website_styles/andreas06/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas07/README +0 -9
- data/doc/examples/website_styles/andreas07/config.yaml +0 -2
- data/doc/examples/website_styles/andreas07/src/about.page +0 -12
- data/doc/examples/website_styles/andreas07/src/browserfix.css +0 -7
- data/doc/examples/website_styles/andreas07/src/default.css +0 -92
- data/doc/examples/website_styles/andreas07/src/download.page +0 -15
- data/doc/examples/website_styles/andreas07/src/features.page +0 -8
- data/doc/examples/website_styles/andreas07/src/images/bodybg.gif +0 -0
- data/doc/examples/website_styles/andreas07/src/images/sidebarbg.gif +0 -0
- data/doc/examples/website_styles/andreas07/src/index.page +0 -9
- data/doc/examples/website_styles/andreas07/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas08/README +0 -9
- data/doc/examples/website_styles/andreas08/config.yaml +0 -2
- data/doc/examples/website_styles/andreas08/src/about.page +0 -12
- data/doc/examples/website_styles/andreas08/src/default.css +0 -224
- data/doc/examples/website_styles/andreas08/src/download.page +0 -15
- data/doc/examples/website_styles/andreas08/src/features.page +0 -8
- data/doc/examples/website_styles/andreas08/src/index.page +0 -9
- data/doc/examples/website_styles/andreas08/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas09/README +0 -9
- data/doc/examples/website_styles/andreas09/config.yaml +0 -2
- data/doc/examples/website_styles/andreas09/src/about.page +0 -12
- data/doc/examples/website_styles/andreas09/src/default.css +0 -308
- data/doc/examples/website_styles/andreas09/src/default.template +0 -70
- data/doc/examples/website_styles/andreas09/src/download.page +0 -15
- data/doc/examples/website_styles/andreas09/src/features.page +0 -8
- data/doc/examples/website_styles/andreas09/src/images/bodybg-black.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/bodybg-green.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/bodybg-orange.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/bodybg-purple.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/bodybg-red.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/bodybg.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/footerbg.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/menuhover-black.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/menuhover-green.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/menuhover-orange.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/menuhover-purple.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/menuhover-red.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/menuhover.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/index.page +0 -9
- data/doc/examples/website_styles/andreas09/src/screenshots.page +0 -18
- data/doc/examples/website_styles/default/README +0 -9
- data/doc/examples/website_styles/default/config.yaml +0 -2
- data/doc/examples/website_styles/default/src/about.page +0 -12
- data/doc/examples/website_styles/default/src/default.css +0 -84
- data/doc/examples/website_styles/default/src/download.page +0 -15
- data/doc/examples/website_styles/default/src/features.page +0 -8
- data/doc/examples/website_styles/default/src/index.page +0 -9
- data/doc/examples/website_styles/default/src/screenshots.page +0 -18
- data/doc/examples/website_templates/default/README +0 -8
- data/doc/examples/website_templates/default/config.yaml +0 -2
- data/doc/examples/website_templates/default/src/default.css +0 -84
- data/doc/examples/website_templates/default/src/default.template +0 -38
- data/doc/examples/website_templates/default/src/index.page +0 -8
- data/doc/examples/website_templates/personal_hp/README +0 -8
- data/doc/examples/website_templates/personal_hp/config.yaml +0 -2
- data/doc/examples/website_templates/personal_hp/src/about.page +0 -12
- data/doc/examples/website_templates/personal_hp/src/default.css +0 -84
- data/doc/examples/website_templates/personal_hp/src/default.template +0 -38
- data/doc/examples/website_templates/personal_hp/src/index.page +0 -9
- data/doc/examples/website_templates/personal_hp/src/links.page +0 -22
- data/doc/examples/website_templates/personal_hp/src/projects.page +0 -20
- data/doc/examples/website_templates/project/README +0 -9
- data/doc/examples/website_templates/project/config.yaml +0 -2
- data/doc/examples/website_templates/project/src/about.page +0 -12
- data/doc/examples/website_templates/project/src/default.css +0 -84
- data/doc/examples/website_templates/project/src/default.template +0 -38
- data/doc/examples/website_templates/project/src/download.page +0 -15
- data/doc/examples/website_templates/project/src/features.page +0 -8
- data/doc/examples/website_templates/project/src/index.page +0 -9
- data/doc/examples/website_templates/project/src/screenshots.page +0 -18
- data/doc/metainfo.yaml +0 -105
- data/doc/plugin/emoticon.rb +0 -27
- data/doc/plugin/extension.rb +0 -163
- data/doc/plugin/gallery/slides/collage.rb +0 -337
- data/doc/plugin/listpluginparameters.rb +0 -37
- data/doc/plugin/resources.rb +0 -28
- data/doc/src/css/sipttra.rcss +0 -71
- data/doc/src/default.css +0 -434
- data/doc/src/default.template +0 -125
- data/doc/src/documentation/basics.page +0 -148
- data/doc/src/documentation/extending_webgen.page +0 -104
- data/doc/src/documentation/howto.page +0 -221
- data/doc/src/documentation/index.page +0 -50
- data/doc/src/documentation/plugins/contentconverter/default.page +0 -16
- data/doc/src/documentation/plugins/contentconverter/haml.page +0 -21
- data/doc/src/documentation/plugins/contentconverter/html.page +0 -10
- data/doc/src/documentation/plugins/contentconverter/markdown.page +0 -21
- data/doc/src/documentation/plugins/contentconverter/maruku.page +0 -23
- data/doc/src/documentation/plugins/contentconverter/rdoc.page +0 -11
- data/doc/src/documentation/plugins/contentconverter/sass.page +0 -36
- data/doc/src/documentation/plugins/contentconverter/textile.page +0 -21
- data/doc/src/documentation/plugins/contentconverter/xmlbuilder.page +0 -61
- data/doc/src/documentation/plugins/core/configuration.page +0 -17
- data/doc/src/documentation/plugins/core/filehandler.page +0 -220
- data/doc/src/documentation/plugins/core/index.page +0 -11
- data/doc/src/documentation/plugins/core/resourcemanager.page +0 -40
- data/doc/src/documentation/plugins/core/tagprocessor.page +0 -17
- data/doc/src/documentation/plugins/file/copyhandler.page +0 -26
- data/doc/src/documentation/plugins/file/defaulthandler.page +0 -16
- data/doc/src/documentation/plugins/file/directoryhandler.page +0 -37
- data/doc/src/documentation/plugins/file/galleryhandler.page +0 -190
- data/doc/src/documentation/plugins/file/pagehandler.page +0 -154
- data/doc/src/documentation/plugins/file/sipttrahandler.page +0 -18
- data/doc/src/documentation/plugins/file/templatehandler.page +0 -51
- data/doc/src/documentation/plugins/file/thumbnailwriter.page +0 -42
- data/doc/src/documentation/plugins/htmlvalidator/default.page +0 -13
- data/doc/src/documentation/plugins/htmlvalidator/xmllint.page +0 -12
- data/doc/src/documentation/plugins/index.page +0 -53
- data/doc/src/documentation/plugins/menustyle/default.page +0 -20
- data/doc/src/documentation/plugins/menustyle/horizontal.page +0 -36
- data/doc/src/documentation/plugins/menustyle/horizontaldropdown.page +0 -48
- data/doc/src/documentation/plugins/menustyle/section.page +0 -34
- data/doc/src/documentation/plugins/menustyle/vertical.page +0 -48
- data/doc/src/documentation/plugins/menustyle/verticaldropdown.page +0 -29
- data/doc/src/documentation/plugins/misc/index.page +0 -9
- data/doc/src/documentation/plugins/misc/smileyreplacer.page +0 -39
- data/doc/src/documentation/plugins/misc/syntaxhighlighter.page +0 -26
- data/doc/src/documentation/plugins/tag/block.page +0 -29
- data/doc/src/documentation/plugins/tag/breadcrumbtrail.page +0 -41
- data/doc/src/documentation/plugins/tag/customvar.page +0 -11
- data/doc/src/documentation/plugins/tag/date.page +0 -34
- data/doc/src/documentation/plugins/tag/default.page +0 -28
- data/doc/src/documentation/plugins/tag/download.page +0 -60
- data/doc/src/documentation/plugins/tag/executecommand.page +0 -29
- data/doc/src/documentation/plugins/tag/htmlmetainfo.page +0 -32
- data/doc/src/documentation/plugins/tag/includefile.page +0 -30
- data/doc/src/documentation/plugins/tag/langbar.de.page +0 -6
- data/doc/src/documentation/plugins/tag/langbar.fr.page +0 -6
- data/doc/src/documentation/plugins/tag/langbar.page +0 -41
- data/doc/src/documentation/plugins/tag/menu.page +0 -78
- data/doc/src/documentation/plugins/tag/meta.page +0 -21
- data/doc/src/documentation/plugins/tag/news.page +0 -48
- data/doc/src/documentation/plugins/tag/relocatable.page +0 -46
- data/doc/src/documentation/plugins/tag/resource.page +0 -35
- data/doc/src/documentation/plugins/tag/sitemap.page +0 -35
- data/doc/src/documentation/plugins/tag/wikilink.page +0 -33
- data/doc/src/documentation/references/index.page +0 -34
- data/doc/src/documentation/references/meta_info_reference.page +0 -136
- data/doc/src/documentation/references/parameter_reference.page +0 -11
- data/doc/src/documentation/references/resource_reference.page +0 -18
- data/doc/src/documentation/references/sipttra_format.page +0 -241
- data/doc/src/documentation/references/webpage_format.page +0 -253
- data/doc/src/documentation/tutorial.page +0 -167
- data/doc/src/download.page +0 -74
- data/doc/src/examples/example_sites/index.page +0 -45
- data/doc/src/examples/example_sites/personal.zip +0 -0
- data/doc/src/examples/example_sites/photo_gallery.zip +0 -0
- data/doc/src/examples/gallery_styles/default/default.gallery +0 -78
- data/doc/src/examples/gallery_styles/default/gallery_gallery.template +0 -38
- data/doc/src/examples/gallery_styles/default/gallery_image.template +0 -30
- data/doc/src/examples/gallery_styles/default/gallery_main.template +0 -18
- data/doc/src/examples/gallery_styles/index.page +0 -22
- data/doc/src/examples/gallery_styles/slides/gallery_gallery.template +0 -62
- data/doc/src/examples/gallery_styles/slides/gallery_image.template +0 -53
- data/doc/src/examples/gallery_styles/slides/gallery_main.template +0 -32
- data/doc/src/examples/gallery_styles/slides/slides.gallery +0 -79
- data/doc/src/examples/images/image01.jpg +0 -0
- data/doc/src/examples/images/image02.jpg +0 -0
- data/doc/src/examples/images/image03.jpg +0 -0
- data/doc/src/examples/images/image04.jpg +0 -0
- data/doc/src/examples/images/image05.jpg +0 -0
- data/doc/src/examples/images/image06.jpg +0 -0
- data/doc/src/examples/images/image07.jpg +0 -0
- data/doc/src/examples/images/image08.jpg +0 -0
- data/doc/src/examples/images/image09.jpg +0 -0
- data/doc/src/examples/images/image10.jpg +0 -0
- data/doc/src/examples/images/image11.jpg +0 -0
- data/doc/src/examples/images/image12.jpg +0 -0
- data/doc/src/examples/images/image13.jpg +0 -0
- data/doc/src/examples/images/image14.jpg +0 -0
- data/doc/src/examples/images/image15.jpg +0 -0
- data/doc/src/examples/images/image16.jpg +0 -0
- data/doc/src/examples/images/image17.jpg +0 -0
- data/doc/src/examples/images/image18.jpg +0 -0
- data/doc/src/examples/index.page +0 -19
- data/doc/src/examples/sipttra_styles/default.page +0 -5
- data/doc/src/examples/sipttra_styles/default/css/sipttra.rcss +0 -71
- data/doc/src/examples/sipttra_styles/default/default.template +0 -16
- data/doc/src/examples/sipttra_styles/default/index.todo +0 -60
- data/doc/src/examples/sipttra_styles/default/js/sipttra.js +0 -7
- data/doc/src/examples/sipttra_styles/default/sipttra.template +0 -105
- data/doc/src/examples/sipttra_styles/index.page +0 -17
- data/doc/src/examples/website_styles/1024px.page +0 -5
- data/doc/src/examples/website_styles/andreas00.page +0 -5
- data/doc/src/examples/website_styles/andreas01.page +0 -5
- data/doc/src/examples/website_styles/andreas03.page +0 -5
- data/doc/src/examples/website_styles/andreas04.page +0 -5
- data/doc/src/examples/website_styles/andreas05.page +0 -5
- data/doc/src/examples/website_styles/andreas06.page +0 -5
- data/doc/src/examples/website_styles/andreas07.page +0 -5
- data/doc/src/examples/website_styles/andreas08.page +0 -5
- data/doc/src/examples/website_styles/andreas09.page +0 -5
- data/doc/src/examples/website_styles/default.page +0 -5
- data/doc/src/examples/website_styles/index.page +0 -76
- data/doc/src/examples/website_templates/default.page +0 -5
- data/doc/src/examples/website_templates/index.page +0 -24
- data/doc/src/examples/website_templates/personal_hp.page +0 -5
- data/doc/src/examples/website_templates/project.page +0 -5
- data/doc/src/features.page +0 -41
- data/doc/src/images/bodybg.jpg +0 -0
- data/doc/src/images/footerbg.jpg +0 -0
- data/doc/src/images/menuhover.jpg +0 -0
- data/doc/src/images/node_diagram.svg +0 -7132
- data/doc/src/images/thumb_example.jpg +0 -0
- data/doc/src/images/thumb_example_cropped.jpg +0 -0
- data/doc/src/images/thumb_example_normal.jpg +0 -0
- data/doc/src/index.page +0 -32
- data/doc/src/js/sipttra.js +0 -7
- data/doc/src/news.page +0 -256
- data/doc/src/plugin.template +0 -10
- data/doc/src/project.todo +0 -144
- data/doc/src/sipttra.template +0 -105
- data/lib/webgen/composite.rb +0 -101
- data/lib/webgen/config.rb +0 -52
- data/lib/webgen/content.rb +0 -172
- data/lib/webgen/extcommand.rb +0 -23
- data/lib/webgen/gui/common.rb +0 -38
- data/lib/webgen/gui/main.rb +0 -219
- data/lib/webgen/gui/new_website_dlg.rb +0 -125
- data/lib/webgen/listener.rb +0 -105
- data/lib/webgen/plugin.rb +0 -578
- data/lib/webgen/plugins/contentconverters/default.rb +0 -40
- data/lib/webgen/plugins/contentconverters/haml.rb +0 -71
- data/lib/webgen/plugins/contentconverters/html.rb +0 -43
- data/lib/webgen/plugins/contentconverters/markdown.rb +0 -54
- data/lib/webgen/plugins/contentconverters/maruku.rb +0 -33
- data/lib/webgen/plugins/contentconverters/rdoc.rb +0 -54
- data/lib/webgen/plugins/contentconverters/textile.rb +0 -54
- data/lib/webgen/plugins/contentconverters/xmlbuilder.rb +0 -58
- data/lib/webgen/plugins/coreplugins/configuration.rb +0 -45
- data/lib/webgen/plugins/coreplugins/resourcemanager.rb +0 -307
- data/lib/webgen/plugins/filehandlers/copy.rb +0 -82
- data/lib/webgen/plugins/filehandlers/directory.rb +0 -126
- data/lib/webgen/plugins/filehandlers/filehandler.rb +0 -486
- data/lib/webgen/plugins/filehandlers/gallery.rb +0 -486
- data/lib/webgen/plugins/filehandlers/page.rb +0 -255
- data/lib/webgen/plugins/filehandlers/sipttra.rb +0 -73
- data/lib/webgen/plugins/filehandlers/template.rb +0 -115
- data/lib/webgen/plugins/htmlvalidators/default.rb +0 -39
- data/lib/webgen/plugins/htmlvalidators/xmllint.rb +0 -54
- data/lib/webgen/plugins/menustyles/default.rb +0 -80
- data/lib/webgen/plugins/menustyles/horizontal.rb +0 -85
- data/lib/webgen/plugins/menustyles/horizontal_dropdown.rb +0 -99
- data/lib/webgen/plugins/menustyles/section.rb +0 -68
- data/lib/webgen/plugins/menustyles/vertical.rb +0 -87
- data/lib/webgen/plugins/menustyles/vertical_dropdown.rb +0 -99
- data/lib/webgen/plugins/miscplugins/rendered_files.rb +0 -75
- data/lib/webgen/plugins/miscplugins/smileyreplacer.rb +0 -87
- data/lib/webgen/plugins/miscplugins/syntax_highlighter.rb +0 -72
- data/lib/webgen/plugins/miscplugins/treewalker.rb +0 -91
- data/lib/webgen/plugins/tags/block.rb +0 -65
- data/lib/webgen/plugins/tags/breadcrumbtrail.rb +0 -75
- data/lib/webgen/plugins/tags/customvar.rb +0 -54
- data/lib/webgen/plugins/tags/date.rb +0 -46
- data/lib/webgen/plugins/tags/download.rb +0 -155
- data/lib/webgen/plugins/tags/executecommand.rb +0 -69
- data/lib/webgen/plugins/tags/htmlmetainfo.rb +0 -27
- data/lib/webgen/plugins/tags/includefile.rb +0 -69
- data/lib/webgen/plugins/tags/langbar.rb +0 -55
- data/lib/webgen/plugins/tags/menu.rb +0 -111
- data/lib/webgen/plugins/tags/meta.rb +0 -53
- data/lib/webgen/plugins/tags/news.rb +0 -151
- data/lib/webgen/plugins/tags/relocatable.rb +0 -94
- data/lib/webgen/plugins/tags/sitemap.rb +0 -82
- data/lib/webgen/plugins/tags/tag_processor.rb +0 -279
- data/lib/webgen/plugins/tags/wikilink.rb +0 -62
- data/lib/webgen/rake/webgentask.rb +0 -161
- data/lib/webgen/sipttra_format.rb +0 -343
- data/lib/webgen/test.rb +0 -202
- data/test/fixtures/sample_site/src/chained.template +0 -3
- data/test/fixtures/sample_site/src/default.template +0 -3
- data/test/fixtures/sample_site/src/dir1/dir11/file111.de.page +0 -3
- data/test/fixtures/sample_site/src/dir1/dir11/file111.page +0 -3
- data/test/fixtures/sample_site/src/dir1/dir11/index.page +0 -3
- data/test/fixtures/sample_site/src/dir1/file11.page +0 -3
- data/test/fixtures/sample_site/src/dir2/file21.page +0 -3
- data/test/fixtures/sample_site/src/embedded.rhtml +0 -1
- data/test/fixtures/sample_site/src/file1.page +0 -8
- data/test/fixtures/sample_site/src/file2.de.page +0 -6
- data/test/fixtures/sample_site/src/index.de.page +0 -5
- data/test/fixtures/sample_site/src/index.en.page +0 -1
- data/test/fixtures/sample_site/src/invalid.template +0 -3
- data/test/fixtures/sample_site/src/test.jpg +0 -1
- data/test/fixtures/sample_site/src/test.template +0 -3
- data/test/fixtures/sample_site/src/test.todo +0 -7
- data/test/fixtures/tc_content/blocks.yaml +0 -40
- data/test/fixtures/tc_content/correct.yaml +0 -65
- data/test/fixtures/tc_content/incorrect.yaml +0 -42
- data/test/fixtures/tc_filehandler_filehandler/backing/metainfo.yaml +0 -9
- data/test/fixtures/tc_filehandler_filehandler/backing_empty/metainfo.yaml +0 -6
- data/test/fixtures/tc_filehandler_filehandler/sample_plugin.rb +0 -49
- data/test/fixtures/tc_filehandler_filehandler/unmodified +0 -0
- data/test/fixtures/tc_filehandler_gallery/test.gallery +0 -2
- data/test/fixtures/tc_filehandler_gallery/test1.gallery +0 -2
- data/test/fixtures/tc_filehandler_gallery/test1.jpg +0 -0
- data/test/fixtures/tc_filehandler_gallery/test2.jpg +0 -0
- data/test/fixtures/tc_filehandler_gallery/test3.jpg +0 -0
- data/test/fixtures/tc_filehandler_gallery/test4.jpg +0 -0
- data/test/fixtures/tc_filehandler_page/testdata.yaml +0 -10
- data/test/fixtures/tc_menustyles_default/menustyle.rb +0 -7
- data/test/fixtures/tc_node/nodes.yaml +0 -64
- data/test/fixtures/tc_plugin/handlerplugin.rb +0 -15
- data/test/fixtures/tc_plugin/plugin1.rb +0 -35
- data/test/fixtures/tc_plugin/plugin2.rb +0 -8
- data/test/fixtures/tc_sipttra_format/test.sipttra +0 -46
- data/test/fixtures/tc_tags_includefile/testfile +0 -1
- data/test/fixtures/tc_tags_tag_processor/test_file1 +0 -1
- data/test/fixtures/tc_tags_tag_processor/testtag.rb +0 -17
- data/test/fixtures/tc_website/correct.yaml +0 -6
- data/test/fixtures/tc_website/incorrect_structure.yaml +0 -2
- data/test/fixtures/tc_website/incorrect_yaml.yaml +0 -5
- data/test/fixtures/tc_website/meta_info_test.yaml +0 -10
- data/test/fixtures/tc_website/testdir/README +0 -1
- data/test/fixtures/tc_website/testdir/falsedir/README +0 -1
- data/test/runtests.rb +0 -2
- data/test/unittests/tc_composite.rb +0 -82
- data/test/unittests/tc_config.rb +0 -18
- data/test/unittests/tc_content.rb +0 -96
- data/test/unittests/tc_contentconverters_default.rb +0 -13
- data/test/unittests/tc_contentconverters_html.rb +0 -16
- data/test/unittests/tc_contentconverters_markdown.rb +0 -22
- data/test/unittests/tc_contentconverters_rdoc.rb +0 -16
- data/test/unittests/tc_contentconverters_textile.rb +0 -22
- data/test/unittests/tc_contentconverters_xmlbuilder.rb +0 -22
- data/test/unittests/tc_filehandler_copy.rb +0 -65
- data/test/unittests/tc_filehandler_directory.rb +0 -134
- data/test/unittests/tc_filehandler_filehandler.rb +0 -294
- data/test/unittests/tc_filehandler_gallery.rb +0 -165
- data/test/unittests/tc_filehandler_page.rb +0 -183
- data/test/unittests/tc_filehandler_sipttra.rb +0 -26
- data/test/unittests/tc_filehandler_template.rb +0 -64
- data/test/unittests/tc_htmlvalidators_default.rb +0 -12
- data/test/unittests/tc_htmlvalidators_xmllint.rb +0 -19
- data/test/unittests/tc_languages.rb +0 -57
- data/test/unittests/tc_listener.rb +0 -72
- data/test/unittests/tc_menustyles_default.rb +0 -51
- data/test/unittests/tc_menustyles_horizontal.rb +0 -64
- data/test/unittests/tc_menustyles_horizontal_dropdown.rb +0 -18
- data/test/unittests/tc_menustyles_section.rb +0 -59
- data/test/unittests/tc_menustyles_vertical.rb +0 -79
- data/test/unittests/tc_menustyles_vertical_dropdown.rb +0 -18
- data/test/unittests/tc_node.rb +0 -205
- data/test/unittests/tc_plugin.rb +0 -221
- data/test/unittests/tc_resourcemanager.rb +0 -42
- data/test/unittests/tc_sipttra_format.rb +0 -58
- data/test/unittests/tc_smileyreplacer.rb +0 -25
- data/test/unittests/tc_syntax_highlighter.rb +0 -30
- data/test/unittests/tc_tags_block.rb +0 -27
- data/test/unittests/tc_tags_breadcrumbtrail.rb +0 -56
- data/test/unittests/tc_tags_customvar.rb +0 -24
- data/test/unittests/tc_tags_date.rb +0 -16
- data/test/unittests/tc_tags_download.rb +0 -32
- data/test/unittests/tc_tags_executecommand.rb +0 -37
- data/test/unittests/tc_tags_includefile.rb +0 -46
- data/test/unittests/tc_tags_langbar.rb +0 -42
- data/test/unittests/tc_tags_menu.rb +0 -50
- data/test/unittests/tc_tags_meta.rb +0 -19
- data/test/unittests/tc_tags_relocatable.rb +0 -66
- data/test/unittests/tc_tags_sitemap.rb +0 -33
- data/test/unittests/tc_tags_tag_processor.rb +0 -107
- data/test/unittests/tc_tags_wikilink.rb +0 -22
- data/test/unittests/tc_treewalker.rb +0 -51
- data/test/unittests/tc_website.rb +0 -188
data/lib/webgen/plugin.rb
DELETED
|
@@ -1,578 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
#--
|
|
3
|
-
#
|
|
4
|
-
# $Id: plugin.rb 611 2007-02-19 15:30:54Z thomas $
|
|
5
|
-
#
|
|
6
|
-
# webgen: template based static website generator
|
|
7
|
-
# Copyright (C) 2004 Thomas Leitner
|
|
8
|
-
#
|
|
9
|
-
# This program is free software; you can redistribute it and/or modify it under the terms of the GNU
|
|
10
|
-
# General Public License as published by the Free Software Foundation; either version 2 of the
|
|
11
|
-
# License, or (at your option) any later version.
|
|
12
|
-
#
|
|
13
|
-
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
|
|
14
|
-
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
15
|
-
# General Public License for more details.
|
|
16
|
-
#
|
|
17
|
-
# You should have received a copy of the GNU General Public License along with this program; if not,
|
|
18
|
-
# write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
19
|
-
#
|
|
20
|
-
#++
|
|
21
|
-
#
|
|
22
|
-
|
|
23
|
-
require 'find'
|
|
24
|
-
require 'yaml'
|
|
25
|
-
require 'ostruct'
|
|
26
|
-
require 'logger'
|
|
27
|
-
require 'tsort'
|
|
28
|
-
require 'webgen/config'
|
|
29
|
-
|
|
30
|
-
class OpenStruct
|
|
31
|
-
public :table #:nodoc:#
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
module Webgen
|
|
36
|
-
|
|
37
|
-
# Base module for all plugins. This module should be included by classes which need to derive from
|
|
38
|
-
# an existing class but also need the power of the plugin system. If a class does not have any
|
|
39
|
-
# base class, it is better to derive it from Webgen::Plugin instead of including this module.
|
|
40
|
-
module PluginDefs
|
|
41
|
-
|
|
42
|
-
# All the methods of this module become class methods in the classes which include the
|
|
43
|
-
# PluginDefs module.
|
|
44
|
-
module ClassMethods
|
|
45
|
-
|
|
46
|
-
# Add subclass to plugin data.
|
|
47
|
-
def inherited( klass )
|
|
48
|
-
ClassMethods.extended( klass )
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
# Called when PluginDefs is included in another class. Add this class to plugin data.
|
|
52
|
-
def self.extended( klass )
|
|
53
|
-
callcc {|cont| throw :plugin_class_found, [cont, klass]}
|
|
54
|
-
klass.init_config
|
|
55
|
-
rescue NameError => e
|
|
56
|
-
raise "Plugin '#{klass}' managed by no PluginLoader"
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
# Initializes the plugin configuration structure.
|
|
60
|
-
def init_config
|
|
61
|
-
@config = OpenStruct.new
|
|
62
|
-
@config.plugin_klass = self
|
|
63
|
-
@config.params = {}
|
|
64
|
-
@config.infos = {}
|
|
65
|
-
@config.infos[:name] = self.name.sub(/^(#<.*?>|Webgen::DEFAULT_WRAPPER_MODULE)::/,'').sub('::','/')
|
|
66
|
-
@config.dependencies = []
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
# Returns the configuration structure for the plugin.
|
|
70
|
-
def config
|
|
71
|
-
@config
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
# Returns the name of the plugin. If not plugin name is set a default value is used.
|
|
75
|
-
def plugin_name
|
|
76
|
-
@config.infos[:name]
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
# Sets general information about the plugin (summary text, description, ...). The parameter
|
|
80
|
-
# has to be a Hash. The following fields are recognized:
|
|
81
|
-
# :name :: The name of the plugin. Should be of the form Namespace/Namespace/name and
|
|
82
|
-
# should contain only alphanumeric characters.
|
|
83
|
-
# :summary :: Summary of what the plugin does
|
|
84
|
-
# :description :: Extended description of the functionality
|
|
85
|
-
# :author :: The author of the plugin
|
|
86
|
-
# :instantiate :: Boolean value defining whether an instance of this plugin should be created
|
|
87
|
-
# :is_base_plugin :: Boolean value defining whether the plugin class is available from a plugin
|
|
88
|
-
# loader/manager after loading
|
|
89
|
-
def infos( param )
|
|
90
|
-
self.config.infos.update( param )
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
# Add a dependency to the plugin, ie. the name of another plugin. Dependencies are
|
|
94
|
-
# instantiated before the plugin gets instantiated. So only add those plugins here that you
|
|
95
|
-
# need to reference/use in the initialize method! The parameters have to be Strings!
|
|
96
|
-
def depends_on( *dep )
|
|
97
|
-
dep.each {|d| self.config.dependencies << d}
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
# Defines a parameter.The parameter can be changed in the configuration file later.
|
|
101
|
-
#
|
|
102
|
-
# Arguments:
|
|
103
|
-
# +name+:: the name of the parameter
|
|
104
|
-
# +default+:: the default value of the parameter
|
|
105
|
-
# +description+:: a small description of the parameter
|
|
106
|
-
def param( name, default, description )
|
|
107
|
-
data = OpenStruct.new( :name => name, :default => default, :description => description )
|
|
108
|
-
self.config.params[name] = data
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
# Returns the ancestor classes for the object's class which are not base plugins.
|
|
112
|
-
def ancestor_classes
|
|
113
|
-
ancestors.delete_if {|c| c.instance_of?( Module ) ||
|
|
114
|
-
(c.respond_to?( :config ) && c.config.infos[:is_base_plugin] == true) }[0..-2]
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
# Appends the methods of this module as object methods to the including class and the methods
|
|
120
|
-
# defined in the module ClassMethods as class methods.
|
|
121
|
-
def self.append_features( klass )
|
|
122
|
-
super
|
|
123
|
-
klass.extend( ClassMethods )
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
# Assigns the PluginManager used for the plugin instance.
|
|
127
|
-
def initialize( plugin_manager )
|
|
128
|
-
@plugin_manager = plugin_manager
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
# Returns the parameter +name+ for the plugin. If +plugin+ is specified, the parameter +name+
|
|
132
|
-
# for the plugin +plugin+ is returned.
|
|
133
|
-
def []( name, plugin = nil)
|
|
134
|
-
@plugin_manager.param_for_plugin( plugin || self.class.plugin_name, name )
|
|
135
|
-
end
|
|
136
|
-
alias param []
|
|
137
|
-
|
|
138
|
-
CALLER_REGEXP = Regexp.new("`.*'")
|
|
139
|
-
|
|
140
|
-
# Logs the the result of +block+ using the severity level +sev_level+.
|
|
141
|
-
def log( sev_level, &block )
|
|
142
|
-
source = self.class.plugin_name + '#' + caller[0][CALLER_REGEXP][1..-2]
|
|
143
|
-
@plugin_manager.log_msg( sev_level, source, &block )
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
class ::Object
|
|
149
|
-
|
|
150
|
-
# This method should be used instead of +require+ when loading a plugin file.
|
|
151
|
-
def load_plugin( file )
|
|
152
|
-
file = file + '.rb' unless /\.rb$/ =~ file
|
|
153
|
-
wrapper, do_load = callcc {|cont| throw :load_plugin_file?, [cont, file]}
|
|
154
|
-
|
|
155
|
-
realfile = file
|
|
156
|
-
if /^(\/|\w:)/ !~ realfile
|
|
157
|
-
$:.each do |path|
|
|
158
|
-
realfile = File.join( path, file )
|
|
159
|
-
break if File.exists?( realfile )
|
|
160
|
-
end
|
|
161
|
-
end
|
|
162
|
-
|
|
163
|
-
wrapper.module_eval( File.read( realfile ), file, 1 ) if do_load
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
# Used to load optional parts. You have to specify a unique +name+ for the optional part and
|
|
167
|
-
# options with some information about it. The following keys can be used:
|
|
168
|
-
# :needed_gems :: an array of Rubygem's gem names that are required for the part
|
|
169
|
-
# :error_msg :: error message that should be displayed if the part can't be loaded
|
|
170
|
-
# :info :: information about what the part does
|
|
171
|
-
def load_optional_part( name, options = {} )
|
|
172
|
-
options[:loaded] = true
|
|
173
|
-
begin
|
|
174
|
-
yield
|
|
175
|
-
rescue LoadError => e
|
|
176
|
-
options[:loaded] = false
|
|
177
|
-
options[:error_msg] ||= e.message
|
|
178
|
-
end
|
|
179
|
-
callcc {|cont| throw :load_optional_part, [cont, name, options]}
|
|
180
|
-
end
|
|
181
|
-
|
|
182
|
-
end
|
|
183
|
-
|
|
184
|
-
# Responsible for loading plugins classes. Each PluginLoader has an array of plugin classes which
|
|
185
|
-
# it loaded. Several methods for loading plugins classes are available.
|
|
186
|
-
class PluginLoader
|
|
187
|
-
|
|
188
|
-
# The plugin classes loaded by this PluginLoader instance.
|
|
189
|
-
attr_reader :plugin_classes
|
|
190
|
-
|
|
191
|
-
# The optional parts managed (loaded or not) by this PluginLoader instance.
|
|
192
|
-
attr_reader :optional_parts
|
|
193
|
-
|
|
194
|
-
# The files loaded by this PluginLoader instance.
|
|
195
|
-
attr_reader :loaded_files
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
# Creates a new PluginLoader instance. The +wrapper_module+ is used when loading the plugins so
|
|
199
|
-
# that they do not pollute the global namespace.
|
|
200
|
-
def initialize( wrapper_module = Module.new )
|
|
201
|
-
@plugin_classes = []
|
|
202
|
-
@loaded_files = []
|
|
203
|
-
@wrapper_module = wrapper_module
|
|
204
|
-
@optional_parts = {}
|
|
205
|
-
end
|
|
206
|
-
|
|
207
|
-
# Loads all plugin classes in the given +dir+ and in its subdirectories. Before +require+ is
|
|
208
|
-
# actually called the path is trimmed: if +trimpath+ matches the beginning of the string,
|
|
209
|
-
# +trimpath+ is deleted from it. The loaded classes are wrapped in the wrapper module and won't
|
|
210
|
-
# pollute the namespace.
|
|
211
|
-
def load_from_dir( dir, trimpath = '')
|
|
212
|
-
Find.find( dir ) do |file|
|
|
213
|
-
trimmedFile = file.gsub(/^#{trimpath}/, '')
|
|
214
|
-
Find.prune unless File.directory?( file ) || (/\.rb$/ =~ file)
|
|
215
|
-
load_from_file( trimmedFile ) if File.file?( file ) && /\.rb$/ =~ file
|
|
216
|
-
end
|
|
217
|
-
end
|
|
218
|
-
|
|
219
|
-
# Loads all plugin classes specified in the +file+.The loaded classes are wrapped in the wrapper
|
|
220
|
-
# module and won't pollute the namespace.
|
|
221
|
-
def load_from_file( file )
|
|
222
|
-
load_from_block do
|
|
223
|
-
cont, file = catch( :load_plugin_file? ) do
|
|
224
|
-
load_plugin( file )
|
|
225
|
-
nil
|
|
226
|
-
end
|
|
227
|
-
do_load_file = !@loaded_files.include?( file ) && !DEFAULT_PLUGIN_LOADER.loaded_files.include?( file ) unless file.nil?
|
|
228
|
-
@loaded_files << file unless file.nil? || @loaded_files.include?( file )
|
|
229
|
-
cont.call( @wrapper_module, do_load_file ) if cont
|
|
230
|
-
end
|
|
231
|
-
end
|
|
232
|
-
|
|
233
|
-
# Loads all plugin classes which get declared in the given block. Be aware that this method does
|
|
234
|
-
# not put the classes into the wrapper module!
|
|
235
|
-
def load_from_block( &block )
|
|
236
|
-
cont, klass = catch( :plugin_class_found ) do
|
|
237
|
-
cont, name, options = catch( :load_optional_part ) { yield }
|
|
238
|
-
if cont
|
|
239
|
-
@optional_parts[name] = options
|
|
240
|
-
cont.call
|
|
241
|
-
end
|
|
242
|
-
nil # return value for catch, means: all classes processed
|
|
243
|
-
end
|
|
244
|
-
add_plugin_class( klass ) unless klass.nil?
|
|
245
|
-
cont.call if cont
|
|
246
|
-
sort_out_base_plugins
|
|
247
|
-
end
|
|
248
|
-
|
|
249
|
-
# Checks if this PluginLoader has loaded a plugin called +name+.
|
|
250
|
-
def has_plugin?( name )
|
|
251
|
-
plugin_class_for_name( name ) != nil
|
|
252
|
-
end
|
|
253
|
-
|
|
254
|
-
# Returns the plugin class called +name+ or +nil+ if it is not found.
|
|
255
|
-
def plugin_class_for_name( name )
|
|
256
|
-
@plugin_classes.find {|p| p.plugin_name == name}
|
|
257
|
-
end
|
|
258
|
-
|
|
259
|
-
#######
|
|
260
|
-
private
|
|
261
|
-
#######
|
|
262
|
-
|
|
263
|
-
def add_plugin_class( klass )
|
|
264
|
-
@plugin_classes << klass
|
|
265
|
-
end
|
|
266
|
-
|
|
267
|
-
def sort_out_base_plugins
|
|
268
|
-
@plugin_classes.delete_if {|klass| klass.config.infos[:is_base_plugin] == true}
|
|
269
|
-
end
|
|
270
|
-
|
|
271
|
-
end
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
# Raised when a plugin which should have been loaded was not loaded.
|
|
275
|
-
class PluginNotFound < RuntimeError
|
|
276
|
-
|
|
277
|
-
attr_reader :name
|
|
278
|
-
attr_reader :needed_by
|
|
279
|
-
|
|
280
|
-
def initialize( name, needed_by )
|
|
281
|
-
@name = name
|
|
282
|
-
@needed_by = needed_by
|
|
283
|
-
end
|
|
284
|
-
|
|
285
|
-
def message
|
|
286
|
-
"Plugin '#{@name}' needed by '#{@needed_by}', but it was not loaded"
|
|
287
|
-
end
|
|
288
|
-
|
|
289
|
-
end
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
# Raised when a parameter for a plugin does not exist.
|
|
293
|
-
class PluginParamNotFound < RuntimeError
|
|
294
|
-
|
|
295
|
-
def initialize( plugin, param )
|
|
296
|
-
@plugin = plugin
|
|
297
|
-
@param = param
|
|
298
|
-
end
|
|
299
|
-
|
|
300
|
-
def message
|
|
301
|
-
"Could not find parameter '#{@param}' for plugin '#{@plugin}'"
|
|
302
|
-
end
|
|
303
|
-
|
|
304
|
-
end
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
# This class should be passed as return value if the value for a parameter could not be found.
|
|
308
|
-
class PluginParamValueNotFound; end
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
# Helper class for calculating plugin dependencies.
|
|
312
|
-
class DependencyHash < Hash
|
|
313
|
-
include TSort
|
|
314
|
-
|
|
315
|
-
alias tsort_each_node each_key
|
|
316
|
-
def tsort_each_child(node, &block)
|
|
317
|
-
fetch(node).each(&block)
|
|
318
|
-
end
|
|
319
|
-
end
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
# Once plugin classes are loaded, they are ready to get used. This class is used for instantiating
|
|
323
|
-
# plugins and their dependencies in the correct order and provide the plugins the facility for
|
|
324
|
-
# retrieving current parameter values.
|
|
325
|
-
class PluginManager
|
|
326
|
-
|
|
327
|
-
# A hash of all instantiated plugins.
|
|
328
|
-
attr_reader :plugins
|
|
329
|
-
|
|
330
|
-
# Used for plugin dependency resolution.
|
|
331
|
-
attr_reader :plugin_loaders
|
|
332
|
-
|
|
333
|
-
# Used for retrieving current plugin parameter values. Should be set before calling #init.
|
|
334
|
-
attr_accessor :plugin_config
|
|
335
|
-
|
|
336
|
-
# The logger used by the instance and the plugin objects.
|
|
337
|
-
attr_accessor :logger
|
|
338
|
-
|
|
339
|
-
# Creates a new PluginManager instance.
|
|
340
|
-
def initialize( plugin_loaders = [], plugin_classes = [] )
|
|
341
|
-
@logger = nil
|
|
342
|
-
@plugins = {}
|
|
343
|
-
@plugin_classes = {}
|
|
344
|
-
@plugin_loaders = plugin_loaders
|
|
345
|
-
@plugin_config = nil
|
|
346
|
-
add_plugin_classes( plugin_classes )
|
|
347
|
-
end
|
|
348
|
-
|
|
349
|
-
# A list of all plugins that should get instantiated.
|
|
350
|
-
def plugin_classes
|
|
351
|
-
@plugin_classes.values
|
|
352
|
-
end
|
|
353
|
-
|
|
354
|
-
# Adds all Plugin classes in the array +plugins+ and their dependencies.
|
|
355
|
-
def add_plugin_classes( plugins )
|
|
356
|
-
deps = dependent_plugins( plugins )
|
|
357
|
-
(plugins + deps).each {|p| @plugin_classes[p.plugin_name] = p }
|
|
358
|
-
end
|
|
359
|
-
|
|
360
|
-
# Instantiates the plugins in the correct order, except the classes which have the plugin info
|
|
361
|
-
# +:instantiate+ set to +false+.
|
|
362
|
-
def init
|
|
363
|
-
@plugins = {}
|
|
364
|
-
#precalculate_param_values! #TODO: maybe activate this feature
|
|
365
|
-
dep = DependencyHash.new
|
|
366
|
-
@plugin_classes.each {|name, plugin| dep[name] = plugin.config.dependencies }
|
|
367
|
-
dep.tsort.each do |plugin_name|
|
|
368
|
-
config = plugin_class_for_name( plugin_name ).config
|
|
369
|
-
unless config.infos.has_key?(:instantiate) && !config.infos[:instantiate]
|
|
370
|
-
log_msg( :debug, 'PluginManager#init') { "Creating instance of plugin #{plugin_name}" }
|
|
371
|
-
@plugins[plugin_name] = config.plugin_klass.new( self )
|
|
372
|
-
end
|
|
373
|
-
end
|
|
374
|
-
end
|
|
375
|
-
|
|
376
|
-
# Returns the plugin instance for the plugin called +plugin_name+.
|
|
377
|
-
def []( plugin_name )
|
|
378
|
-
@plugins[plugin_name]
|
|
379
|
-
end
|
|
380
|
-
|
|
381
|
-
# Returns the parameter +param+ for the plugin called +plugin_name+.
|
|
382
|
-
def param_for_plugin( plugin_name, param )
|
|
383
|
-
plugin = plugin_class_for_name( plugin_name )
|
|
384
|
-
raise PluginParamNotFound.new( plugin_name, param ) if plugin.nil?
|
|
385
|
-
|
|
386
|
-
if @precalculated_param_values
|
|
387
|
-
value = @precalculated_param_values[plugin_name][param]
|
|
388
|
-
else
|
|
389
|
-
value = PluginParamValueNotFound
|
|
390
|
-
plugin.ancestor_classes.each do |plugin_klass|
|
|
391
|
-
value = get_plugin_param_value( plugin_klass.plugin_name, plugin_klass.config, param )
|
|
392
|
-
break unless value == PluginParamValueNotFound
|
|
393
|
-
end
|
|
394
|
-
end
|
|
395
|
-
|
|
396
|
-
if value != PluginParamValueNotFound
|
|
397
|
-
value
|
|
398
|
-
else
|
|
399
|
-
raise PluginParamNotFound.new( plugin.plugin_name, param )
|
|
400
|
-
end
|
|
401
|
-
end
|
|
402
|
-
|
|
403
|
-
# Returns the plugin class for the plugin +plugin_name+.
|
|
404
|
-
def plugin_class_for_name( plugin_name )
|
|
405
|
-
@plugin_classes[plugin_name]
|
|
406
|
-
end
|
|
407
|
-
|
|
408
|
-
# Returns the options hash for the given optional library.
|
|
409
|
-
def optional_part( name )
|
|
410
|
-
@plugin_loaders.each {|pl| return pl.optional_parts[name] if pl.optional_parts.has_key?( name ) }
|
|
411
|
-
end
|
|
412
|
-
|
|
413
|
-
# Logs the result of executing +block+ under the severity level +sev_level+. The parameter
|
|
414
|
-
# +source+ identifies the source of the log message.
|
|
415
|
-
def log_msg( sev_level, source, &block )
|
|
416
|
-
@logger.send( sev_level, source, &block ) if @logger
|
|
417
|
-
nil
|
|
418
|
-
end
|
|
419
|
-
|
|
420
|
-
#######
|
|
421
|
-
private
|
|
422
|
-
#######
|
|
423
|
-
|
|
424
|
-
def precalculate_param_values!
|
|
425
|
-
@precalculated_param_values = nil
|
|
426
|
-
precalc = Hash.new {|h,k| h[k] = Hash.new( PluginParamValueNotFound ) }
|
|
427
|
-
@plugin_classes.each do |name, klass|
|
|
428
|
-
klass.ancestor_classes.each do |a_klass|
|
|
429
|
-
a_klass.config.params.each do |p_name, p_data|
|
|
430
|
-
precalc[name][p_name] = param_for_plugin( name, p_name )
|
|
431
|
-
end
|
|
432
|
-
end
|
|
433
|
-
end
|
|
434
|
-
@precalculated_param_values = precalc
|
|
435
|
-
end
|
|
436
|
-
|
|
437
|
-
def dependent_plugins( classes )
|
|
438
|
-
deps = []
|
|
439
|
-
classes.each do |plugin|
|
|
440
|
-
plugin.config.dependencies.each do |dep|
|
|
441
|
-
p = nil
|
|
442
|
-
@plugin_loaders.each {|loader| p = loader.plugin_class_for_name( dep ); break unless p.nil? }
|
|
443
|
-
if p.nil?
|
|
444
|
-
raise PluginNotFound.new( dep, plugin.plugin_name )
|
|
445
|
-
else
|
|
446
|
-
deps << p unless deps.include?( p )
|
|
447
|
-
end
|
|
448
|
-
end
|
|
449
|
-
end
|
|
450
|
-
deps
|
|
451
|
-
end
|
|
452
|
-
|
|
453
|
-
def get_plugin_param_value( plugin_name, config, param )
|
|
454
|
-
return PluginParamValueNotFound unless config.params.has_key?( param )
|
|
455
|
-
|
|
456
|
-
value = PluginParamValueNotFound
|
|
457
|
-
value = @plugin_config.param_for_plugin( plugin_name, param ) if @plugin_config
|
|
458
|
-
value = config.params[param].default if value == PluginParamValueNotFound
|
|
459
|
-
|
|
460
|
-
value
|
|
461
|
-
end
|
|
462
|
-
|
|
463
|
-
end
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
# Used for logging the messages of plugin instances.
|
|
467
|
-
class Logger < ::Logger
|
|
468
|
-
|
|
469
|
-
def initialize( logdev = STDERR )
|
|
470
|
-
super( logdev, 0, 0 )
|
|
471
|
-
self.level = ::Logger::ERROR
|
|
472
|
-
self.formatter = Proc.new do |severity, timestamp, progname, msg|
|
|
473
|
-
if self.level == ::Logger::DEBUG
|
|
474
|
-
"%5s -- %s: %s\n" % [severity, progname, msg ]
|
|
475
|
-
else
|
|
476
|
-
"%5s -- %s\n" % [severity, msg]
|
|
477
|
-
end
|
|
478
|
-
end
|
|
479
|
-
end
|
|
480
|
-
|
|
481
|
-
end
|
|
482
|
-
|
|
483
|
-
end
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
module Webgen
|
|
488
|
-
|
|
489
|
-
DEFAULT_PLUGIN_LOAD_PROC = proc do
|
|
490
|
-
|
|
491
|
-
# THE base class for all plugins.
|
|
492
|
-
#
|
|
493
|
-
# Information about a plugin can be set via the class method +infos+. If no name for the plugin
|
|
494
|
-
# is set, then the full plugin class name (including the namespace modules) is used, with
|
|
495
|
-
# slashes instead of the double colons.
|
|
496
|
-
class Plugin
|
|
497
|
-
|
|
498
|
-
include PluginDefs
|
|
499
|
-
|
|
500
|
-
infos :is_base_plugin => true
|
|
501
|
-
|
|
502
|
-
end
|
|
503
|
-
|
|
504
|
-
# You can use this class for easily handling similiar things, for example, various markup to
|
|
505
|
-
# HTML converters.
|
|
506
|
-
#
|
|
507
|
-
# To use it, just create a subclass of HandlerPlugin which will be the manager for a class of
|
|
508
|
-
# plugins. This subclass should specify all the methods, specific implementations should
|
|
509
|
-
# provide. The specific implementations should then be derived from this subclass, each using a
|
|
510
|
-
# different name for +register_handler+. Then you can retrieve a specific implementation by
|
|
511
|
-
# using the method registered_handlers[<NAME>] on the manager class.
|
|
512
|
-
class HandlerPlugin < Plugin
|
|
513
|
-
|
|
514
|
-
infos :is_base_plugin => true
|
|
515
|
-
|
|
516
|
-
# Defines the name for the specific handler under which the handler instance can be retrieved.
|
|
517
|
-
def self.register_handler( name )
|
|
518
|
-
self.config.infos[:handler_for] = name
|
|
519
|
-
end
|
|
520
|
-
|
|
521
|
-
# Returns the name of the specific handler.
|
|
522
|
-
def self.registered_handler
|
|
523
|
-
self.config.infos[:handler_for]
|
|
524
|
-
end
|
|
525
|
-
|
|
526
|
-
# Returns all handler instances as a hash. The names defined with
|
|
527
|
-
# HandlerPlugin#register_handler can be used to retrieve a specific handler instance.
|
|
528
|
-
def registered_handlers
|
|
529
|
-
if !defined?( @registered_handlers_cache ) || @cached_plugins_hash != @plugin_manager.plugins.keys.hash
|
|
530
|
-
@registered_handlers_cache = {}
|
|
531
|
-
@plugin_manager.plugins.each do |name, plugin|
|
|
532
|
-
if plugin.kind_of?( self.class ) && plugin.class.registered_handler
|
|
533
|
-
@registered_handlers_cache[plugin.class.registered_handler] = plugin
|
|
534
|
-
end
|
|
535
|
-
end
|
|
536
|
-
@cached_plugins_hash = @plugin_manager.plugins.keys.hash
|
|
537
|
-
end
|
|
538
|
-
@registered_handlers_cache
|
|
539
|
-
end
|
|
540
|
-
|
|
541
|
-
end
|
|
542
|
-
|
|
543
|
-
# This module should be included by classes derived from CommandParser::Command as it
|
|
544
|
-
# automatically adds an object of the class to the main CommandParser object. However, the
|
|
545
|
-
# +super+ call in the +initialize+ method calls the method from PluginDefs, you need to call
|
|
546
|
-
# +superclass_init+ to call the original +initialize+ method from the super class.
|
|
547
|
-
module CommandPlugin
|
|
548
|
-
|
|
549
|
-
def self.append_features( klass )
|
|
550
|
-
klass.instance_eval {alias_method( :superclass_initialize, :initialize )}
|
|
551
|
-
super
|
|
552
|
-
PluginDefs.append_features( klass )
|
|
553
|
-
end
|
|
554
|
-
|
|
555
|
-
end
|
|
556
|
-
|
|
557
|
-
end
|
|
558
|
-
|
|
559
|
-
def self.init_default_plugin_loader( mod = DEFAULT_WRAPPER_MODULE, block = DEFAULT_PLUGIN_LOAD_PROC )
|
|
560
|
-
loader = PluginLoader.new( mod )
|
|
561
|
-
loader.load_from_block( &block )
|
|
562
|
-
loader
|
|
563
|
-
end
|
|
564
|
-
|
|
565
|
-
def self.load_default_plugins( loader = DEFAULT_PLUGIN_LOADER )
|
|
566
|
-
loader.load_from_dir( File.join( File.dirname( __FILE__ ), 'plugins' ),
|
|
567
|
-
File.dirname( __FILE__ ).sub( /webgen$/, '' ) )
|
|
568
|
-
end
|
|
569
|
-
|
|
570
|
-
# Set this constant to +false+ before requiring the file to not load the default plugins.
|
|
571
|
-
LOAD_DEFAULT_PLUGINS = true unless defined?( LOAD_DEFAULT_PLUGINS )
|
|
572
|
-
|
|
573
|
-
# Default PluginLoader instance responsible for loading all plugins shipped with webgen.
|
|
574
|
-
DEFAULT_WRAPPER_MODULE = Module.new
|
|
575
|
-
DEFAULT_PLUGIN_LOADER = init_default_plugin_loader
|
|
576
|
-
load_default_plugins if LOAD_DEFAULT_PLUGINS
|
|
577
|
-
|
|
578
|
-
end
|