webgen 0.3.8 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +2565 -14
- data/README +4 -6
- data/Rakefile +207 -89
- data/TODO +175 -17
- data/VERSION +1 -1
- data/bin/webgen +1 -2
- data/data/webgen/gallery-creator/default.png +0 -0
- data/data/webgen/gallery_styles/default/README +6 -0
- data/data/webgen/gallery_styles/default/gallery_gallery.template +38 -0
- data/data/webgen/gallery_styles/default/gallery_image.template +30 -0
- data/data/webgen/gallery_styles/default/gallery_main.template +18 -0
- data/data/webgen/gallery_styles/slides/README +18 -0
- data/data/webgen/gallery_styles/slides/collage.rb +334 -0
- data/data/webgen/gallery_styles/slides/gallery_gallery.template +62 -0
- data/data/webgen/gallery_styles/slides/gallery_image.template +53 -0
- data/data/webgen/gallery_styles/slides/gallery_main.template +32 -0
- data/data/webgen/resources/images/generated_by_webgen.png +0 -0
- data/data/webgen/resources/images/webgen_logo.png +0 -0
- data/data/webgen/website_styles/1024px/README +10 -0
- data/data/webgen/website_styles/1024px/default.css +188 -0
- data/data/webgen/website_styles/1024px/default.template +62 -0
- data/data/webgen/website_styles/1024px/images/background.gif +0 -0
- data/data/webgen/website_styles/andreas00/README +10 -0
- data/data/webgen/website_styles/andreas00/default.css +290 -0
- data/data/webgen/website_styles/andreas00/default.template +62 -0
- data/data/webgen/website_styles/andreas00/images/bg.gif +0 -0
- data/data/webgen/website_styles/andreas00/images/front.jpg +0 -0
- data/data/webgen/website_styles/andreas00/images/menubg.gif +0 -0
- data/data/webgen/website_styles/andreas00/images/menubg2.gif +0 -0
- data/data/webgen/website_styles/andreas01/README +11 -0
- data/data/webgen/website_styles/andreas01/default.css +310 -0
- data/data/webgen/website_styles/andreas01/default.template +63 -0
- data/data/webgen/website_styles/andreas01/images/bg.gif +0 -0
- data/data/webgen/website_styles/andreas01/images/front.jpg +0 -0
- data/data/webgen/website_styles/andreas01/print.css +35 -0
- data/data/webgen/website_styles/andreas03/README +11 -0
- data/data/webgen/website_styles/andreas03/default.css +223 -0
- data/data/webgen/website_styles/andreas03/default.template +60 -0
- data/data/webgen/website_styles/andreas03/images/bodybg.png +0 -0
- data/data/webgen/website_styles/andreas03/images/contbg.png +0 -0
- data/data/webgen/website_styles/andreas03/images/footerbg.png +0 -0
- data/data/webgen/website_styles/andreas03/images/gradient1.png +0 -0
- data/data/webgen/website_styles/andreas03/images/gradient2.png +0 -0
- data/data/webgen/website_styles/andreas04/README +12 -0
- data/data/webgen/website_styles/andreas04/default.css +290 -0
- data/data/webgen/website_styles/andreas04/default.template +83 -0
- data/data/webgen/website_styles/andreas04/images/blinkarrow.gif +0 -0
- data/data/webgen/website_styles/andreas04/images/bodybg.png +0 -0
- data/data/webgen/website_styles/andreas04/images/contentbg.png +0 -0
- data/data/webgen/website_styles/andreas04/images/entrybg.png +0 -0
- data/data/webgen/website_styles/andreas04/images/flash.gif +0 -0
- data/data/webgen/website_styles/andreas04/images/flash2.gif +0 -0
- data/data/webgen/website_styles/andreas04/images/globe.gif +0 -0
- data/data/webgen/website_styles/andreas04/images/globebottom.gif +0 -0
- data/data/webgen/website_styles/andreas04/images/linkarrow.gif +0 -0
- data/data/webgen/website_styles/andreas04/images/menuhover.png +0 -0
- data/data/webgen/website_styles/andreas05/README +11 -0
- data/data/webgen/website_styles/andreas05/default.css +33 -0
- data/data/webgen/website_styles/andreas05/default.template +42 -0
- data/data/webgen/website_styles/andreas05/images/bodybg.gif +0 -0
- data/data/webgen/website_styles/andreas05/images/front.png +0 -0
- data/data/webgen/website_styles/andreas06/README +11 -0
- data/data/webgen/website_styles/andreas06/default.css +353 -0
- data/data/webgen/website_styles/andreas06/default.template +72 -0
- data/data/webgen/website_styles/andreas06/images/bodybg.gif +0 -0
- data/data/webgen/website_styles/andreas06/images/boxbg.gif +0 -0
- data/data/webgen/website_styles/andreas06/images/greypx.gif +0 -0
- data/data/webgen/website_styles/andreas06/images/header.jpg +0 -0
- data/data/webgen/website_styles/andreas06/images/innerbg.gif +0 -0
- data/data/webgen/website_styles/andreas06/images/leaves.jpg +0 -0
- data/data/webgen/website_styles/andreas06/images/tabs.gif +0 -0
- data/data/webgen/website_styles/andreas07/README +12 -0
- data/data/webgen/website_styles/andreas07/browserfix.css +7 -0
- data/data/webgen/website_styles/andreas07/default.css +92 -0
- data/data/webgen/website_styles/andreas07/default.template +44 -0
- data/data/webgen/website_styles/andreas07/images/bodybg.gif +0 -0
- data/data/webgen/website_styles/andreas07/images/sidebarbg.gif +0 -0
- data/data/webgen/website_styles/andreas08/README +11 -0
- data/data/webgen/website_styles/andreas08/default.css +224 -0
- data/data/webgen/website_styles/andreas08/default.template +53 -0
- data/data/webgen/website_styles/andreas09/README +11 -0
- data/data/webgen/website_styles/andreas09/default.css +308 -0
- data/data/webgen/website_styles/andreas09/default.template +70 -0
- data/data/webgen/website_styles/andreas09/images/bodybg-black.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/bodybg-green.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/bodybg-orange.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/bodybg-purple.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/bodybg-red.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/bodybg.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/footerbg.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/menuhover-black.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/menuhover-green.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/menuhover-orange.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/menuhover-purple.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/menuhover-red.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/menuhover.jpg +0 -0
- data/data/webgen/website_styles/default/README +6 -0
- data/data/webgen/website_styles/default/default.css +1 -1
- data/data/webgen/website_styles/default/default.template +9 -3
- data/data/webgen/website_styles/plain/README +12 -0
- data/data/webgen/website_styles/plain/default.css +244 -0
- data/data/webgen/website_styles/plain/default.template +63 -0
- data/data/webgen/website_styles/plain/images/a_hover.jpg +0 -0
- data/data/webgen/website_styles/plain/images/desc.jpg +0 -0
- data/data/webgen/website_styles/plain/images/li.gif +0 -0
- data/data/webgen/website_styles/plain/images/mainbar.jpg +0 -0
- data/data/webgen/website_styles/plain/images/menu.jpg +0 -0
- data/data/webgen/website_styles/plain/images/submenua.gif +0 -0
- data/data/webgen/website_styles/plain/images/submenua_hover.jpg +0 -0
- data/data/webgen/website_templates/default/README +7 -5
- data/data/webgen/website_templates/personal_hp/README +7 -5
- data/data/webgen/website_templates/project/README +8 -6
- data/doc/config.yaml +2 -2
- data/doc/examples/website_styles/1024px/README +9 -0
- data/doc/examples/website_styles/1024px/config.yaml +2 -0
- data/doc/examples/website_styles/1024px/src/about.page +12 -0
- data/doc/examples/website_styles/1024px/src/default.css +188 -0
- data/doc/examples/website_styles/1024px/src/default.template +62 -0
- data/doc/examples/website_styles/1024px/src/download.page +15 -0
- data/doc/examples/website_styles/1024px/src/features.page +8 -0
- data/doc/examples/website_styles/1024px/src/images/background.gif +0 -0
- data/doc/examples/website_styles/1024px/src/index.page +9 -0
- data/doc/examples/website_styles/1024px/src/screenshots.page +18 -0
- data/doc/examples/website_styles/andreas00/README +9 -0
- data/doc/examples/website_styles/andreas00/config.yaml +2 -0
- data/doc/examples/website_styles/andreas00/src/about.page +12 -0
- data/doc/examples/website_styles/andreas00/src/default.css +290 -0
- data/doc/examples/website_styles/andreas00/src/default.template +62 -0
- data/doc/examples/website_styles/andreas00/src/download.page +15 -0
- data/doc/examples/website_styles/andreas00/src/features.page +8 -0
- 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 +9 -0
- data/doc/examples/website_styles/andreas00/src/screenshots.page +18 -0
- data/doc/examples/website_styles/andreas01/README +9 -0
- data/doc/examples/website_styles/andreas01/config.yaml +2 -0
- data/doc/examples/website_styles/andreas01/src/about.page +12 -0
- data/doc/examples/website_styles/andreas01/src/default.css +310 -0
- data/doc/examples/website_styles/andreas01/src/default.template +63 -0
- data/doc/examples/website_styles/andreas01/src/download.page +15 -0
- data/doc/examples/website_styles/andreas01/src/features.page +8 -0
- 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 +9 -0
- data/doc/examples/website_styles/andreas01/src/print.css +35 -0
- data/doc/examples/website_styles/andreas01/src/screenshots.page +18 -0
- data/doc/examples/website_styles/andreas03/README +9 -0
- data/doc/examples/website_styles/andreas03/config.yaml +2 -0
- data/doc/examples/website_styles/andreas03/src/about.page +12 -0
- data/doc/examples/website_styles/andreas03/src/default.css +223 -0
- data/doc/examples/website_styles/andreas03/src/default.template +60 -0
- data/doc/examples/website_styles/andreas03/src/download.page +15 -0
- data/doc/examples/website_styles/andreas03/src/features.page +8 -0
- 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 +9 -0
- data/doc/examples/website_styles/andreas03/src/screenshots.page +18 -0
- data/doc/examples/website_styles/andreas04/README +9 -0
- data/doc/examples/website_styles/andreas04/config.yaml +2 -0
- data/doc/examples/website_styles/andreas04/src/about.page +12 -0
- data/doc/examples/website_styles/andreas04/src/default.css +290 -0
- data/doc/examples/website_styles/andreas04/src/default.template +83 -0
- data/doc/examples/website_styles/andreas04/src/download.page +15 -0
- data/doc/examples/website_styles/andreas04/src/features.page +8 -0
- 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 +9 -0
- data/doc/examples/website_styles/andreas04/src/screenshots.page +18 -0
- data/doc/examples/website_styles/andreas05/README +9 -0
- data/doc/examples/website_styles/andreas05/config.yaml +2 -0
- data/doc/examples/website_styles/andreas05/src/about.page +12 -0
- data/doc/examples/website_styles/andreas05/src/default.css +33 -0
- data/doc/examples/website_styles/andreas05/src/default.template +42 -0
- data/doc/examples/website_styles/andreas05/src/download.page +15 -0
- data/doc/examples/website_styles/andreas05/src/features.page +8 -0
- 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 +9 -0
- data/doc/examples/website_styles/andreas05/src/screenshots.page +18 -0
- data/doc/examples/website_styles/andreas06/README +9 -0
- data/doc/examples/website_styles/andreas06/config.yaml +2 -0
- data/doc/examples/website_styles/andreas06/src/about.page +12 -0
- data/doc/examples/website_styles/andreas06/src/default.css +353 -0
- data/doc/examples/website_styles/andreas06/src/default.template +72 -0
- data/doc/examples/website_styles/andreas06/src/download.page +15 -0
- data/doc/examples/website_styles/andreas06/src/features.page +8 -0
- 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 +9 -0
- data/doc/examples/website_styles/andreas06/src/screenshots.page +18 -0
- data/doc/examples/website_styles/andreas07/README +9 -0
- data/doc/examples/website_styles/andreas07/config.yaml +2 -0
- data/doc/examples/website_styles/andreas07/src/about.page +12 -0
- data/doc/examples/website_styles/andreas07/src/browserfix.css +7 -0
- data/doc/examples/website_styles/andreas07/src/default.css +92 -0
- data/doc/examples/website_styles/andreas07/src/default.template +44 -0
- data/doc/examples/website_styles/andreas07/src/download.page +15 -0
- data/doc/examples/website_styles/andreas07/src/features.page +8 -0
- 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 +9 -0
- data/doc/examples/website_styles/andreas07/src/screenshots.page +18 -0
- data/doc/examples/website_styles/andreas08/README +9 -0
- data/doc/examples/website_styles/andreas08/config.yaml +2 -0
- data/doc/examples/website_styles/andreas08/src/about.page +12 -0
- data/doc/examples/website_styles/andreas08/src/default.css +224 -0
- data/doc/examples/website_styles/andreas08/src/default.template +53 -0
- data/doc/examples/website_styles/andreas08/src/download.page +15 -0
- data/doc/examples/website_styles/andreas08/src/features.page +8 -0
- data/doc/examples/website_styles/andreas08/src/index.page +9 -0
- data/doc/examples/website_styles/andreas08/src/screenshots.page +18 -0
- data/doc/examples/website_styles/andreas09/README +9 -0
- data/doc/examples/website_styles/andreas09/config.yaml +2 -0
- data/doc/examples/website_styles/andreas09/src/about.page +12 -0
- data/doc/examples/website_styles/andreas09/src/default.css +308 -0
- data/doc/examples/website_styles/andreas09/src/default.template +70 -0
- data/doc/examples/website_styles/andreas09/src/download.page +15 -0
- data/doc/examples/website_styles/andreas09/src/features.page +8 -0
- 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 +9 -0
- data/doc/examples/website_styles/andreas09/src/screenshots.page +18 -0
- data/doc/examples/website_styles/default/README +9 -0
- data/doc/examples/website_styles/default/config.yaml +2 -0
- data/doc/examples/website_styles/default/src/about.page +12 -0
- data/doc/examples/website_styles/default/src/default.css +84 -0
- data/doc/examples/website_styles/default/src/default.template +38 -0
- data/doc/examples/website_styles/default/src/download.page +15 -0
- data/doc/examples/website_styles/default/src/features.page +8 -0
- data/doc/examples/website_styles/default/src/index.page +9 -0
- data/doc/examples/website_styles/default/src/screenshots.page +18 -0
- data/doc/examples/website_styles/plain/README +9 -0
- data/doc/examples/website_styles/plain/config.yaml +2 -0
- data/doc/examples/website_styles/plain/src/about.page +12 -0
- data/doc/examples/website_styles/plain/src/default.css +244 -0
- data/doc/examples/website_styles/plain/src/default.template +63 -0
- data/doc/examples/website_styles/plain/src/download.page +15 -0
- data/doc/examples/website_styles/plain/src/features.page +8 -0
- data/doc/examples/website_styles/plain/src/images/a_hover.jpg +0 -0
- data/doc/examples/website_styles/plain/src/images/desc.jpg +0 -0
- data/doc/examples/website_styles/plain/src/images/li.gif +0 -0
- data/doc/examples/website_styles/plain/src/images/mainbar.jpg +0 -0
- data/doc/examples/website_styles/plain/src/images/menu.jpg +0 -0
- data/doc/examples/website_styles/plain/src/images/submenua.gif +0 -0
- data/doc/examples/website_styles/plain/src/images/submenua_hover.jpg +0 -0
- data/doc/examples/website_styles/plain/src/index.page +9 -0
- data/doc/examples/website_styles/plain/src/screenshots.page +18 -0
- data/doc/examples/website_templates/default/README +8 -0
- data/doc/examples/website_templates/default/config.yaml +2 -0
- data/doc/examples/website_templates/default/src/default.css +84 -0
- data/doc/examples/website_templates/default/src/default.template +38 -0
- data/doc/examples/website_templates/default/src/index.page +8 -0
- data/doc/examples/website_templates/personal_hp/README +8 -0
- data/doc/examples/website_templates/personal_hp/config.yaml +2 -0
- data/doc/examples/website_templates/personal_hp/src/about.page +12 -0
- data/doc/examples/website_templates/personal_hp/src/default.css +84 -0
- data/doc/examples/website_templates/personal_hp/src/default.template +38 -0
- data/doc/examples/website_templates/personal_hp/src/index.page +9 -0
- data/doc/examples/website_templates/personal_hp/src/links.page +22 -0
- data/doc/examples/website_templates/personal_hp/src/projects.page +20 -0
- data/doc/examples/website_templates/project/README +9 -0
- data/doc/examples/website_templates/project/config.yaml +2 -0
- data/doc/examples/website_templates/project/src/about.page +12 -0
- data/doc/examples/website_templates/project/src/default.css +84 -0
- data/doc/examples/website_templates/project/src/default.template +38 -0
- data/doc/examples/website_templates/project/src/download.page +15 -0
- data/doc/examples/website_templates/project/src/features.page +8 -0
- data/doc/examples/website_templates/project/src/index.page +9 -0
- data/doc/examples/website_templates/project/src/screenshots.page +18 -0
- data/doc/metainfo.yaml +85 -0
- data/doc/plugin/emoticon.rb +19 -21
- data/doc/plugin/extension.rb +134 -55
- data/doc/plugin/gallery/slides/collage.rb +334 -0
- data/doc/plugin/listpluginparameters.rb +24 -26
- data/doc/plugin/resources.rb +20 -22
- data/doc/src/default.css +333 -154
- data/doc/src/default.template +92 -39
- data/doc/src/documentation/extending_webgen.page +1 -2
- data/doc/src/documentation/gettingstarted.page +161 -44
- data/doc/src/documentation/index.page +15 -28
- data/doc/src/documentation/plugins/contentconverter/default.page +15 -0
- data/doc/src/documentation/plugins/contentconverter/html.page +10 -0
- data/doc/src/documentation/plugins/contentconverter/markdown.page +21 -0
- data/doc/src/documentation/plugins/contentconverter/rdoc.page +11 -0
- data/doc/src/documentation/plugins/contentconverter/textile.page +21 -0
- data/doc/src/documentation/plugins/contentconverter/xmlbuilder.page +61 -0
- data/doc/src/documentation/plugins/core/configuration.page +11 -0
- data/doc/src/documentation/plugins/core/filehandler.page +214 -0
- data/doc/src/documentation/plugins/core/index.page +11 -0
- data/doc/src/documentation/plugins/core/resourcemanager.page +46 -0
- data/doc/src/documentation/plugins/core/tagprocessor.page +17 -0
- data/doc/src/documentation/plugins/file/copyhandler.page +26 -0
- data/doc/src/documentation/plugins/file/defaulthandler.page +15 -0
- data/doc/src/documentation/plugins/file/directoryhandler.page +37 -0
- data/doc/src/documentation/plugins/file/galleryhandler.page +181 -0
- data/doc/src/documentation/plugins/file/pagehandler.page +154 -0
- data/doc/src/documentation/plugins/file/templatehandler.page +34 -0
- data/doc/src/documentation/plugins/file/thumbnailwriter.page +39 -0
- data/doc/src/documentation/plugins/htmlvalidator/default.page +12 -0
- data/doc/src/documentation/plugins/htmlvalidator/xmllint.page +12 -0
- data/doc/src/documentation/plugins/index.page +32 -11
- data/doc/src/documentation/plugins/menustyle/default.page +19 -0
- data/doc/src/documentation/plugins/menustyle/horizontal.page +32 -0
- data/doc/src/documentation/plugins/{menustyles → menustyle}/horizontaldropdown.page +25 -19
- data/doc/src/documentation/plugins/menustyle/section.page +34 -0
- data/doc/src/documentation/plugins/menustyle/vertical.page +48 -0
- data/doc/src/documentation/plugins/menustyle/verticaldropdown.page +29 -0
- data/doc/src/documentation/plugins/misc/index.page +9 -0
- data/doc/src/documentation/plugins/{miscplugins → misc}/smileyreplacer.page +15 -14
- data/doc/src/documentation/plugins/misc/syntaxhighlighter.page +26 -0
- data/doc/src/documentation/plugins/tag/block.page +29 -0
- data/doc/src/documentation/plugins/tag/breadcrumbtrail.page +29 -0
- data/doc/src/documentation/plugins/tag/date.page +34 -0
- data/doc/src/documentation/plugins/tag/default.page +27 -0
- data/doc/src/documentation/plugins/tag/download.page +60 -0
- data/doc/src/documentation/plugins/tag/executecommand.page +29 -0
- data/doc/src/documentation/plugins/tag/includefile.page +30 -0
- data/doc/src/documentation/plugins/{tags → tag}/langbar.de.page +1 -1
- data/doc/src/documentation/plugins/tag/langbar.fr.page +6 -0
- data/doc/src/documentation/plugins/tag/langbar.page +41 -0
- data/doc/src/documentation/plugins/tag/menu.page +78 -0
- data/doc/src/documentation/plugins/{tags → tag}/meta.page +8 -7
- data/doc/src/documentation/plugins/tag/relocatable.page +46 -0
- data/doc/src/documentation/plugins/tag/resource.page +35 -0
- data/doc/src/documentation/plugins/tag/sitemap.page +35 -0
- data/doc/src/documentation/plugins/tag/wikilink.page +33 -0
- data/doc/src/documentation/references/index.page +0 -1
- data/doc/src/documentation/references/meta_info_reference.page +90 -13
- data/doc/src/documentation/references/parameter_reference.page +0 -1
- data/doc/src/documentation/references/webpage_format.page +249 -0
- data/doc/src/download.page +50 -21
- data/doc/src/examples/gallery_styles/default/default.gallery +78 -0
- data/doc/src/examples/gallery_styles/default/gallery_gallery.template +38 -0
- data/doc/src/examples/gallery_styles/default/gallery_image.template +30 -0
- data/doc/src/examples/gallery_styles/default/gallery_main.template +18 -0
- data/doc/src/examples/gallery_styles/index.page +22 -0
- data/doc/src/examples/gallery_styles/slides/gallery_gallery.template +62 -0
- data/doc/src/examples/gallery_styles/slides/gallery_image.template +53 -0
- data/doc/src/examples/gallery_styles/slides/gallery_main.template +32 -0
- data/doc/src/examples/gallery_styles/slides/slides.gallery +79 -0
- 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 +18 -0
- data/doc/src/examples/website_styles/1024px.page +5 -0
- data/doc/src/examples/website_styles/andreas00.page +5 -0
- data/doc/src/examples/website_styles/andreas01.page +5 -0
- data/doc/src/examples/website_styles/andreas03.page +5 -0
- data/doc/src/examples/website_styles/andreas04.page +5 -0
- data/doc/src/examples/website_styles/andreas05.page +5 -0
- data/doc/src/examples/website_styles/andreas06.page +5 -0
- data/doc/src/examples/website_styles/andreas07.page +5 -0
- data/doc/src/examples/website_styles/andreas08.page +5 -0
- data/doc/src/examples/website_styles/andreas09.page +5 -0
- data/doc/src/examples/website_styles/default.page +5 -0
- data/doc/src/examples/website_styles/index.page +71 -0
- data/doc/src/examples/website_styles/plain.page +5 -0
- data/doc/src/examples/website_templates/default.page +5 -0
- data/doc/src/examples/website_templates/index.page +24 -0
- data/doc/src/examples/website_templates/personal_hp.page +5 -0
- data/doc/src/examples/website_templates/project.page +5 -0
- data/doc/src/features.page +16 -14
- 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 +7132 -0
- 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 +14 -102
- data/doc/src/news.page +154 -0
- data/doc/src/plugin.template +10 -0
- data/lib/webgen/cli.rb +427 -0
- data/lib/webgen/composite.rb +11 -11
- data/lib/webgen/config.rb +52 -0
- data/lib/webgen/content.rb +172 -0
- data/lib/webgen/extcommand.rb +23 -0
- data/lib/webgen/languages.rb +110 -0
- data/lib/webgen/listener.rb +1 -1
- data/lib/webgen/node.rb +196 -124
- data/lib/webgen/plugin.rb +480 -144
- data/lib/webgen/plugins/{contenthandlers → contentconverters}/default.rb +10 -9
- data/lib/webgen/plugins/{contenthandlers → contentconverters}/html.rb +11 -8
- data/lib/webgen/plugins/contentconverters/markdown.rb +54 -0
- data/lib/webgen/plugins/{contenthandlers → contentconverters}/rdoc.rb +16 -12
- data/lib/webgen/plugins/{contenthandlers → contentconverters}/textile.rb +18 -13
- data/lib/webgen/plugins/contentconverters/xmlbuilder.rb +58 -0
- data/lib/webgen/plugins/coreplugins/configuration.rb +11 -102
- data/lib/webgen/plugins/coreplugins/resourcemanager.rb +95 -74
- data/lib/webgen/plugins/filehandlers/copy.rb +41 -19
- data/lib/webgen/plugins/filehandlers/directory.rb +52 -50
- data/lib/webgen/plugins/filehandlers/filehandler.rb +370 -123
- data/lib/webgen/plugins/filehandlers/gallery.rb +368 -117
- data/lib/webgen/plugins/filehandlers/page.rb +160 -146
- data/lib/webgen/plugins/filehandlers/template.rb +65 -52
- data/lib/webgen/plugins/htmlvalidators/default.rb +9 -7
- data/lib/webgen/plugins/htmlvalidators/xmllint.rb +17 -33
- data/lib/webgen/plugins/menustyles/default.rb +27 -25
- data/lib/webgen/plugins/menustyles/horizontal.rb +22 -41
- data/lib/webgen/plugins/menustyles/horizontal_dropdown.rb +25 -39
- data/lib/webgen/plugins/menustyles/section.rb +68 -0
- data/lib/webgen/plugins/menustyles/vertical.rb +36 -56
- data/lib/webgen/plugins/menustyles/vertical_dropdown.rb +24 -32
- data/lib/webgen/plugins/miscplugins/smileyreplacer.rb +20 -17
- data/lib/webgen/plugins/miscplugins/syntax_highlighter.rb +72 -0
- data/lib/webgen/plugins/miscplugins/treewalker.rb +9 -36
- data/lib/webgen/plugins/tags/block.rb +65 -0
- data/lib/webgen/plugins/tags/breadcrumbtrail.rb +15 -11
- data/lib/webgen/plugins/tags/date.rb +11 -7
- data/lib/webgen/plugins/tags/download.rb +38 -38
- data/lib/webgen/plugins/tags/executecommand.rb +30 -15
- data/lib/webgen/plugins/tags/includefile.rb +26 -13
- data/lib/webgen/plugins/tags/langbar.rb +23 -18
- data/lib/webgen/plugins/tags/menu.rb +49 -70
- data/lib/webgen/plugins/tags/meta.rb +12 -9
- data/lib/webgen/plugins/tags/relocatable.rb +41 -13
- data/lib/webgen/plugins/tags/sitemap.rb +32 -28
- data/lib/webgen/plugins/tags/tag_processor.rb +279 -0
- data/lib/webgen/plugins/tags/wikilink.rb +25 -20
- data/lib/webgen/test.rb +202 -0
- data/lib/webgen/website.rb +310 -0
- data/test/fixtures/sample_site/src/chained.template +3 -0
- data/test/fixtures/sample_site/src/default.template +3 -0
- data/test/fixtures/sample_site/src/dir1/dir11/file111.de.page +3 -0
- data/test/fixtures/sample_site/src/dir1/dir11/file111.page +3 -0
- data/test/fixtures/sample_site/src/dir1/dir11/index.page +3 -0
- data/test/fixtures/sample_site/src/dir1/file11.page +3 -0
- data/test/fixtures/sample_site/src/dir2/file21.page +3 -0
- data/test/fixtures/sample_site/src/embedded.rhtml +1 -0
- data/test/fixtures/sample_site/src/file1.page +8 -0
- data/test/fixtures/sample_site/src/file2.de.page +6 -0
- data/test/fixtures/sample_site/src/index.de.page +4 -0
- data/test/fixtures/sample_site/src/index.en.page +1 -0
- data/test/fixtures/sample_site/src/invalid.template +3 -0
- data/test/fixtures/sample_site/src/test.jpg +1 -0
- data/test/fixtures/sample_site/src/test.template +3 -0
- data/test/fixtures/tc_content/blocks.yaml +40 -0
- data/test/fixtures/tc_content/correct.yaml +65 -0
- data/test/fixtures/tc_content/incorrect.yaml +42 -0
- data/test/fixtures/tc_filehandler_filehandler/backing/metainfo.yaml +9 -0
- data/test/fixtures/tc_filehandler_filehandler/backing_empty/metainfo.yaml +6 -0
- data/test/fixtures/tc_filehandler_filehandler/sample_plugin.rb +49 -0
- data/test/fixtures/tc_filehandler_filehandler/unmodified +0 -0
- data/test/fixtures/tc_filehandler_gallery/test.gallery +2 -0
- data/test/fixtures/tc_filehandler_gallery/test1.gallery +2 -0
- 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 +10 -0
- data/test/fixtures/tc_menustyles_default/menustyle.rb +7 -0
- data/test/fixtures/tc_node/nodes.yaml +64 -0
- data/test/fixtures/tc_plugin/handlerplugin.rb +15 -0
- data/test/fixtures/tc_plugin/plugin1.rb +33 -0
- data/test/fixtures/tc_plugin/plugin2.rb +8 -0
- data/test/fixtures/tc_tags_includefile/testfile +1 -0
- data/test/fixtures/tc_tags_tag_processor/test_file1 +1 -0
- data/test/fixtures/tc_tags_tag_processor/testtag.rb +17 -0
- data/test/fixtures/tc_website/correct.yaml +6 -0
- data/test/fixtures/tc_website/incorrect_structure.yaml +2 -0
- data/test/fixtures/tc_website/incorrect_yaml.yaml +5 -0
- data/test/fixtures/tc_website/meta_info_test.yaml +10 -0
- data/test/fixtures/tc_website/testdir/README +1 -0
- data/test/fixtures/tc_website/testdir/falsedir/README +1 -0
- data/test/runtests.rb +2 -0
- data/test/unittests/tc_composite.rb +82 -0
- data/test/unittests/tc_config.rb +18 -0
- data/test/unittests/tc_content.rb +88 -0
- data/test/unittests/tc_contentconverters_default.rb +13 -0
- data/test/unittests/tc_contentconverters_html.rb +16 -0
- data/test/unittests/tc_contentconverters_markdown.rb +22 -0
- data/test/unittests/tc_contentconverters_rdoc.rb +16 -0
- data/test/unittests/tc_contentconverters_textile.rb +22 -0
- data/test/unittests/tc_contentconverters_xmlbuilder.rb +22 -0
- data/test/unittests/tc_filehandler_copy.rb +65 -0
- data/test/unittests/tc_filehandler_directory.rb +134 -0
- data/test/unittests/tc_filehandler_filehandler.rb +294 -0
- data/test/unittests/tc_filehandler_gallery.rb +165 -0
- data/test/unittests/tc_filehandler_page.rb +183 -0
- data/test/unittests/tc_filehandler_template.rb +60 -0
- data/test/unittests/tc_htmlvalidators_default.rb +12 -0
- data/test/unittests/tc_htmlvalidators_xmllint.rb +19 -0
- data/test/unittests/tc_languages.rb +57 -0
- data/test/unittests/tc_listener.rb +72 -0
- data/test/unittests/tc_menustyles_default.rb +51 -0
- data/test/unittests/tc_menustyles_horizontal.rb +18 -0
- data/test/unittests/tc_menustyles_horizontal_dropdown.rb +18 -0
- data/test/unittests/tc_menustyles_section.rb +59 -0
- data/test/unittests/tc_menustyles_vertical.rb +79 -0
- data/test/unittests/tc_menustyles_vertical_dropdown.rb +18 -0
- data/test/unittests/tc_node.rb +202 -0
- data/test/unittests/tc_plugin.rb +214 -0
- data/test/unittests/tc_resourcemanager.rb +42 -0
- data/test/unittests/tc_smileyreplacer.rb +25 -0
- data/test/unittests/tc_syntax_highlighter.rb +30 -0
- data/test/unittests/tc_tags_block.rb +27 -0
- data/test/unittests/tc_tags_breadcrumbtrail.rb +22 -0
- data/test/unittests/tc_tags_date.rb +15 -0
- data/test/unittests/tc_tags_download.rb +32 -0
- data/test/unittests/tc_tags_executecommand.rb +37 -0
- data/test/unittests/tc_tags_includefile.rb +53 -0
- data/test/unittests/tc_tags_langbar.rb +42 -0
- data/test/unittests/tc_tags_menu.rb +50 -0
- data/test/unittests/tc_tags_meta.rb +19 -0
- data/test/unittests/tc_tags_relocatable.rb +66 -0
- data/test/unittests/tc_tags_sitemap.rb +33 -0
- data/test/unittests/tc_tags_tag_processor.rb +107 -0
- data/test/unittests/tc_tags_wikilink.rb +22 -0
- data/test/unittests/tc_treewalker.rb +44 -0
- data/test/unittests/tc_website.rb +188 -0
- metadata +829 -312
- data/bin/webgen-gallery-editor +0 -654
- data/bin/webgen-gui +0 -10
- data/data/webgen/website_templates/default/config.yaml +0 -2
- data/doc/plugin/clidesc.rb +0 -46
- data/doc/plugin/source.rb +0 -21
- data/doc/src/about.page +0 -22
- data/doc/src/documentation/cli.page +0 -12
- data/doc/src/documentation/plugins/contenthandlers/html.page +0 -11
- data/doc/src/documentation/plugins/contenthandlers/index.page +0 -7
- data/doc/src/documentation/plugins/contenthandlers/markdown.page +0 -11
- data/doc/src/documentation/plugins/contenthandlers/rdoc.page +0 -11
- data/doc/src/documentation/plugins/contenthandlers/textile.page +0 -11
- data/doc/src/documentation/plugins/coreplugins/configuration.page +0 -12
- data/doc/src/documentation/plugins/coreplugins/index.page +0 -7
- data/doc/src/documentation/plugins/coreplugins/logging.page +0 -13
- data/doc/src/documentation/plugins/coreplugins/resourcemanager.page +0 -34
- data/doc/src/documentation/plugins/filehandlers/backing.page +0 -46
- data/doc/src/documentation/plugins/filehandlers/copy.page +0 -12
- data/doc/src/documentation/plugins/filehandlers/directoryhandler.page +0 -35
- data/doc/src/documentation/plugins/filehandlers/gallery.page +0 -86
- data/doc/src/documentation/plugins/filehandlers/index.page +0 -34
- data/doc/src/documentation/plugins/filehandlers/page.page +0 -170
- data/doc/src/documentation/plugins/filehandlers/template.page +0 -21
- data/doc/src/documentation/plugins/gallerylayouters/index.page +0 -18
- data/doc/src/documentation/plugins/htmlvalidators/index.page +0 -6
- data/doc/src/documentation/plugins/htmlvalidators/xmllint.page +0 -14
- data/doc/src/documentation/plugins/menustyles/horizontal.page +0 -21
- data/doc/src/documentation/plugins/menustyles/index.page +0 -12
- data/doc/src/documentation/plugins/menustyles/partial.page +0 -27
- data/doc/src/documentation/plugins/menustyles/vertical.page +0 -32
- data/doc/src/documentation/plugins/menustyles/verticaldropdown.page +0 -23
- data/doc/src/documentation/plugins/miscplugins/index.page +0 -7
- data/doc/src/documentation/plugins/tags/breadcrumbtrail.page +0 -20
- data/doc/src/documentation/plugins/tags/date.page +0 -19
- data/doc/src/documentation/plugins/tags/download.page +0 -23
- data/doc/src/documentation/plugins/tags/executecommand.page +0 -18
- data/doc/src/documentation/plugins/tags/includefile.page +0 -15
- data/doc/src/documentation/plugins/tags/index.page +0 -44
- data/doc/src/documentation/plugins/tags/langbar.page +0 -27
- data/doc/src/documentation/plugins/tags/menu.de.page +0 -12
- data/doc/src/documentation/plugins/tags/menu.page +0 -19
- data/doc/src/documentation/plugins/tags/multilang.de.page +0 -4
- data/doc/src/documentation/plugins/tags/multilang.fr.page +0 -4
- data/doc/src/documentation/plugins/tags/multilang.page +0 -4
- data/doc/src/documentation/plugins/tags/relocatable.page +0 -16
- data/doc/src/documentation/plugins/tags/resource.page +0 -22
- data/doc/src/documentation/plugins/tags/sitemap.page +0 -17
- data/doc/src/documentation/plugins/tags/wikilink.page +0 -18
- data/doc/src/documentation/webgen_gallery_editor.page +0 -82
- data/doc/src/images/screenshots/wge-image.png +0 -0
- data/doc/src/images/screenshots/wge-layout-preview.png +0 -0
- data/doc/src/images/screenshots/wge-main-disabled.png +0 -0
- data/doc/src/images/screenshots/wge-main.png +0 -0
- data/doc/src/meta.info +0 -30
- data/doc/src/screenshots.gallery +0 -33
- data/install.rb +0 -19
- data/lib/webgen.rb +0 -277
- data/lib/webgen/plugins/contenthandlers/markdown.rb +0 -50
- data/lib/webgen/plugins/coreplugins/logging.rb +0 -101
- data/lib/webgen/plugins/filehandlers/backing.rb +0 -159
- data/lib/webgen/plugins/gallerylayouters/default.rb +0 -152
- data/lib/webgen/plugins/menustyles/partial.rb +0 -95
- data/lib/webgen/plugins/tags/tags.rb +0 -254
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'webgen/test'
|
2
|
+
|
3
|
+
class HorizontalMenuStyleTest < Webgen::PluginTestCase
|
4
|
+
|
5
|
+
plugin_files [
|
6
|
+
'webgen/plugins/menustyles/horizontal.rb',
|
7
|
+
'webgen/plugins/filehandlers/directory.rb',
|
8
|
+
'webgen/plugins/filehandlers/page.rb'
|
9
|
+
]
|
10
|
+
|
11
|
+
plugin_to_test 'MenuStyle/Horizontal'
|
12
|
+
|
13
|
+
def test_submenu
|
14
|
+
#root = @manager['Core/FileHandler'].instance_eval { build_tree }
|
15
|
+
#flunk
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'webgen/test'
|
2
|
+
|
3
|
+
class HorizontalDropdownMenuStyleTest < Webgen::PluginTestCase
|
4
|
+
|
5
|
+
plugin_files [
|
6
|
+
'webgen/plugins/menustyles/horizontal_dropdown.rb',
|
7
|
+
'webgen/plugins/filehandlers/directory.rb',
|
8
|
+
'webgen/plugins/filehandlers/page.rb'
|
9
|
+
]
|
10
|
+
|
11
|
+
plugin_to_test 'MenuStyle/HorizontalDropdown'
|
12
|
+
|
13
|
+
def test_submenu
|
14
|
+
#root = @manager['Core/FileHandler'].instance_eval { build_tree }
|
15
|
+
#flunk
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'webgen/test'
|
2
|
+
|
3
|
+
class SectionMenuStyleTest < Webgen::PluginTestCase
|
4
|
+
|
5
|
+
plugin_files [
|
6
|
+
'webgen/plugins/menustyles/section.rb',
|
7
|
+
'webgen/plugins/filehandlers/directory.rb',
|
8
|
+
'webgen/plugins/filehandlers/page.rb',
|
9
|
+
'webgen/plugins/coreplugins/resourcemanager.rb'
|
10
|
+
]
|
11
|
+
|
12
|
+
plugin_to_test 'MenuStyle/Section'
|
13
|
+
|
14
|
+
def test_submenu
|
15
|
+
root = @manager['Core/FileHandler'].instance_eval { build_tree }
|
16
|
+
node = root.resolve_node( 'file1.page' )
|
17
|
+
|
18
|
+
output = @plugin.build_menu( node, nil, {'maxLevels'=>3, 'numberSections'=>true} )
|
19
|
+
assert_equal( menu_output( '<ul><li><a href="#test">1. Test 1</a>' +
|
20
|
+
'<ul><li><a href="#test11">1.1. Test - 1</a></li>' +
|
21
|
+
'<li><a href="#test12">1.2. Test - 2</a>' +
|
22
|
+
'<ul><li><a href="#test121">1.2.1. Test - - 1</a></li>' +
|
23
|
+
'<li><a href="#test122">1.2.2. Test - - 2</a></li></ul></li>' +
|
24
|
+
'<li><a href="#test13">1.3. Test - 3</a></li></ul></li>' +
|
25
|
+
'<li><a href="#test2">2. Test 2</a>' +
|
26
|
+
'<ul><li><a href="#test21">2.1. Test - 1</a></li></ul></li></ul>' ), output )
|
27
|
+
|
28
|
+
output = @plugin.build_menu( node, nil, {'maxLevels'=>3, 'numberSections'=>false} )
|
29
|
+
assert_equal( menu_output( '<ul><li><a href="#test">Test 1</a>' +
|
30
|
+
'<ul><li><a href="#test11">Test - 1</a></li>' +
|
31
|
+
'<li><a href="#test12">Test - 2</a>' +
|
32
|
+
'<ul><li><a href="#test121">Test - - 1</a></li>' +
|
33
|
+
'<li><a href="#test122">Test - - 2</a></li></ul></li>' +
|
34
|
+
'<li><a href="#test13">Test - 3</a></li></ul></li>' +
|
35
|
+
'<li><a href="#test2">Test 2</a>' +
|
36
|
+
'<ul><li><a href="#test21">Test - 1</a></li></ul></li></ul>' ), output )
|
37
|
+
|
38
|
+
output = @plugin.build_menu( node, nil, {'maxLevels'=>2, 'numberSections'=>false} )
|
39
|
+
assert_equal( menu_output( '<ul><li><a href="#test">Test 1</a>' +
|
40
|
+
'<ul><li><a href="#test11">Test - 1</a></li>' +
|
41
|
+
'<li><a href="#test12">Test - 2</a></li>' +
|
42
|
+
'<li><a href="#test13">Test - 3</a></li></ul></li>' +
|
43
|
+
'<li><a href="#test2">Test 2</a>' +
|
44
|
+
'<ul><li><a href="#test21">Test - 1</a></li></ul></li></ul>' ), output )
|
45
|
+
|
46
|
+
output = @plugin.build_menu( node, nil, {'maxLevels'=>1, 'numberSections'=>true} )
|
47
|
+
assert_equal( menu_output( '<ul><li><a href="#test">1. Test 1</a></li>' +
|
48
|
+
'<li><a href="#test2">2. Test 2</a></li></ul>' ), output )
|
49
|
+
end
|
50
|
+
|
51
|
+
#######
|
52
|
+
private
|
53
|
+
#######
|
54
|
+
|
55
|
+
def menu_output( menu )
|
56
|
+
'<div class="webgen-menu-section webgen-menu">' + menu + '</div>'
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'webgen/test'
|
2
|
+
|
3
|
+
class VerticalMenuStyleTest < Webgen::PluginTestCase
|
4
|
+
|
5
|
+
plugin_files [
|
6
|
+
'webgen/plugins/menustyles/vertical.rb',
|
7
|
+
'webgen/plugins/filehandlers/directory.rb',
|
8
|
+
'webgen/plugins/filehandlers/page.rb',
|
9
|
+
'webgen/plugins/tags/menu.rb'
|
10
|
+
]
|
11
|
+
|
12
|
+
plugin_to_test 'MenuStyle/Vertical'
|
13
|
+
|
14
|
+
def test_submenu
|
15
|
+
root = @manager['Core/FileHandler'].instance_eval { build_tree }
|
16
|
+
tree_en = @manager['Tag/Menu'].instance_eval { create_menu_tree( root, nil, Webgen::LanguageManager.language_for_code( 'en' ) ) }
|
17
|
+
|
18
|
+
# testing minLevels and maxLevels
|
19
|
+
output = @plugin.build_menu( root.resolve_node('index.en.page'), tree_en, options_hash( 1, 1, 1, true ) )
|
20
|
+
assert_equal( menu_output( '<ul><li class="webgen-menu-submenu"><a href="dir1/">Dir1</a></li>' +
|
21
|
+
'<li class="webgen-menu-submenu"><a href="dir2/">Dir2</a></li></ul>' ), output )
|
22
|
+
output = @plugin.build_menu( root.resolve_node('index.en.page'), tree_en, options_hash( 1, 2, 1, true ) )
|
23
|
+
assert_equal( menu_output( '<ul><li class="webgen-menu-submenu"><a href="dir1/">Dir1</a></li>' +
|
24
|
+
'<li class="webgen-menu-submenu"><a href="dir2/">Dir2</a></li></ul>' ), output )
|
25
|
+
output = @plugin.build_menu( root.resolve_node('index.en.page'), tree_en, options_hash( 1, 2, 2, true ) )
|
26
|
+
assert_equal( menu_output( '<ul><li class="webgen-menu-submenu"><a href="dir1/">Dir1</a>'+
|
27
|
+
'<ul><li class="webgen-menu-submenu"><a href="dir1/dir11/index.html">Dir11</a></li>'+
|
28
|
+
'<li ><a href="dir1/file11.html">File11</a></li></ul></li>' +
|
29
|
+
'<li class="webgen-menu-submenu"><a href="dir2/">Dir2</a>'+
|
30
|
+
'<ul><li ><a href="dir2/file21.html">File21</a></li></ul></li></ul>' ), output )
|
31
|
+
|
32
|
+
# testing showCurrentSubtreeOnly
|
33
|
+
output = @plugin.build_menu( root.resolve_node('dir1/file11.en.page'), tree_en, options_hash( 1, 1, 2, true ) )
|
34
|
+
assert_equal( menu_output( '<ul><li class="webgen-menu-submenu webgen-menu-submenu-inhierarchy"><a href="./">Dir1</a>'+
|
35
|
+
'<ul><li class="webgen-menu-submenu"><a href="dir11/index.html">Dir11</a></li>'+
|
36
|
+
'<li class="webgen-menu-item-selected"><span>File11</span></li></ul></li>' +
|
37
|
+
'<li class="webgen-menu-submenu"><a href="../dir2/">Dir2</a></li></ul>' ), output )
|
38
|
+
output = @plugin.build_menu( root.resolve_node('dir1/file11.en.page'), tree_en, options_hash( 1, 1, 2, false ) )
|
39
|
+
assert_equal( menu_output( '<ul><li class="webgen-menu-submenu webgen-menu-submenu-inhierarchy"><a href="./">Dir1</a>'+
|
40
|
+
'<ul><li class="webgen-menu-submenu"><a href="dir11/index.html">Dir11</a></li>'+
|
41
|
+
'<li class="webgen-menu-item-selected"><span>File11</span></li></ul></li>' +
|
42
|
+
'<li class="webgen-menu-submenu"><a href="../dir2/">Dir2</a>'+
|
43
|
+
'<ul><li ><a href="../dir2/file21.html">File21</a></li></ul></li></ul>' ), output )
|
44
|
+
|
45
|
+
# testing startLevel
|
46
|
+
output = @plugin.build_menu( root.resolve_node('index.en.page'), tree_en, options_hash( 2, 1, 1, true ) )
|
47
|
+
assert_equal( menu_output( '' ), output )
|
48
|
+
output = @plugin.build_menu( root.resolve_node('dir1/file11.en.page'), tree_en, options_hash( 2, 1, 2, true ) )
|
49
|
+
assert_equal( menu_output( '<ul><li class="webgen-menu-submenu"><a href="dir11/index.html">Dir11</a></li>'+
|
50
|
+
'<li class="webgen-menu-item-selected"><span>File11</span></li></ul>' ), output )
|
51
|
+
output = @plugin.build_menu( root.resolve_node('dir1/file11.en.page'), tree_en, options_hash( 2, 1, 2, false ) )
|
52
|
+
assert_equal( menu_output( '<ul><li class="webgen-menu-submenu"><a href="dir11/index.html">Dir11</a></li>'+
|
53
|
+
'<li class="webgen-menu-item-selected"><span>File11</span></li></ul>' ), output )
|
54
|
+
output = @plugin.build_menu( root.resolve_node('dir1/file11.en.page'), tree_en, options_hash( 2, 2, 2, false ) )
|
55
|
+
assert_equal( menu_output( '<ul><li class="webgen-menu-submenu"><a href="dir11/index.html">Dir11</a>' +
|
56
|
+
'<ul><li ><a href="dir11/file111.html">File111</a></li>' +
|
57
|
+
'<li ><a href="dir11/index.html">Index</a></li></ul></li>'+
|
58
|
+
'<li class="webgen-menu-item-selected"><span>File11</span></li></ul>' ), output )
|
59
|
+
output = @plugin.build_menu( root.resolve_node('dir1/dir11/file111.en.page'), tree_en, options_hash( 2, 1, 2, true ) )
|
60
|
+
assert_equal( menu_output( '<ul><li class="webgen-menu-submenu webgen-menu-submenu-inhierarchy">' +
|
61
|
+
'<a href="index.html">Dir11</a>' +
|
62
|
+
'<ul><li class="webgen-menu-item-selected"><span>File111</span></li>'+
|
63
|
+
'<li ><a href="index.html">Index</a></li></ul></li>' +
|
64
|
+
'<li ><a href="../file11.html">File11</a></li></ul>' ), output )
|
65
|
+
end
|
66
|
+
|
67
|
+
#######
|
68
|
+
private
|
69
|
+
#######
|
70
|
+
|
71
|
+
def options_hash( startLevel, minLevels, maxLevels, subtree )
|
72
|
+
{'startLevel'=>startLevel, 'minLevels'=>minLevels, 'maxLevels'=>maxLevels, 'showCurrentSubtreeOnly'=>subtree}
|
73
|
+
end
|
74
|
+
|
75
|
+
def menu_output( menu )
|
76
|
+
'<div class="webgen-menu-vert webgen-menu">' + menu + '</div>'
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'webgen/test'
|
2
|
+
|
3
|
+
class VerticalDropdownMenuStyleTest < Webgen::PluginTestCase
|
4
|
+
|
5
|
+
plugin_files [
|
6
|
+
'webgen/plugins/menustyles/vertical_dropdown.rb',
|
7
|
+
'webgen/plugins/filehandlers/directory.rb',
|
8
|
+
'webgen/plugins/filehandlers/page.rb'
|
9
|
+
]
|
10
|
+
|
11
|
+
plugin_to_test 'MenuStyle/VerticalDropdown'
|
12
|
+
|
13
|
+
def test_submenu
|
14
|
+
#root = @manager['Core/FileHandler'].instance_eval { build_tree }
|
15
|
+
#flunk
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,202 @@
|
|
1
|
+
require 'webgen/test'
|
2
|
+
require 'webgen/node'
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
|
6
|
+
class TestProcessor
|
7
|
+
|
8
|
+
def return( node, str )
|
9
|
+
str + ' ' + node.path
|
10
|
+
end
|
11
|
+
|
12
|
+
def with_block( node, str )
|
13
|
+
yield( node, str )
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
class NodeTest < Webgen::TestCase
|
19
|
+
|
20
|
+
def setup
|
21
|
+
@ni = YAML::load( File.read( fixture_path( 'nodes.yaml' ) ) )
|
22
|
+
@n = {}
|
23
|
+
@ni.each do |info|
|
24
|
+
@n[info['ref'] || info['url']] = Node.new( @n[info['parent']], info['url'] )
|
25
|
+
@n[info['ref'] || info['url']].meta_info.update( info['meta_info'] ) if info['meta_info']
|
26
|
+
@n[info['ref'] || info['url']].node_info.update( info['node_info'] ) if info['node_info']
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
def test_root
|
32
|
+
assert_equal( @n['/'], Node.root( @n['file_aa'] ) )
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_inspect
|
36
|
+
assert_kind_of( String, @n['file_aa'].inspect )
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_parent
|
40
|
+
x = Node.new( nil, 'test' )
|
41
|
+
assert( @n['/'].include?( @n['dir_a/'] ) )
|
42
|
+
@n['dir_a/'].parent = x
|
43
|
+
assert( @n['dir_a/'].parent == x )
|
44
|
+
assert( x.include?( @n['dir_a/'] ) )
|
45
|
+
assert( !@n['/'].include?( @n['dir_a/'] ) )
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_accessors
|
49
|
+
assert_equal( nil, @n['/'].parent )
|
50
|
+
assert_equal( '../out/../dir1/', @n['/'].path )
|
51
|
+
|
52
|
+
|
53
|
+
assert_equal( @n['dir_a/'], @n['file_aa'].parent )
|
54
|
+
|
55
|
+
assert_equal( {'title'=>'file_a'}, @n['file_a'].meta_info )
|
56
|
+
assert_equal( {}, @n['file_a'].node_info )
|
57
|
+
|
58
|
+
assert_equal( 'test', @n['/']['test'] )
|
59
|
+
@n['/']['test'] = 'notest'
|
60
|
+
assert_equal( 'notest', @n['/']['test'] )
|
61
|
+
assert_equal( @n['/'].meta_info['test'], @n['/']['test'] )
|
62
|
+
|
63
|
+
assert( @n['/'].is_directory? )
|
64
|
+
assert( @n['dir_a/'].is_directory? )
|
65
|
+
assert( @n['file_aa'].is_file? )
|
66
|
+
assert( @n['file_aa#'].is_fragment? )
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_level
|
70
|
+
assert_equal( 0, @n['/'].level )
|
71
|
+
assert_equal( 1, @n['dir_a/'].level )
|
72
|
+
assert_equal( 2, @n['file_aa'].level )
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_full_path
|
76
|
+
assert_equal( '../out/../dir1/', @n['/'].full_path )
|
77
|
+
assert_equal( '../out/../dir1/dir_a/file_aa', @n['file_aa'].full_path )
|
78
|
+
assert_equal( 'http://localhost/file_ah#doit', @n['file_ah#'].full_path )
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_absolute_path
|
82
|
+
assert_equal( '/', @n['/'].absolute_path )
|
83
|
+
assert_equal( '/dir_a/file_aa', @n['file_aa'].absolute_path )
|
84
|
+
assert_equal( 'http://localhost/file_ah#doit', @n['file_ah#'].absolute_path )
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_route_to
|
88
|
+
#arg is Node
|
89
|
+
assert_equal( 'file_a', @n['file_a'].route_to( @n['file_a'] ) )
|
90
|
+
assert_equal( 'file_aa', @n['file_aa#'].route_to( @n['file_aa'] ) )
|
91
|
+
assert_equal( 'file_aa#doit', @n['dir_a/'].route_to( @n['file_aa#'] ) )
|
92
|
+
assert_equal( '#doit', @n['file_aa'].route_to( @n['file_aa#'] ) )
|
93
|
+
assert_equal( '../dir_b/file_ba', @n['file_aa#'].route_to( @n['file_ba'] ) )
|
94
|
+
assert_equal( '../dir_b/file_bb', @n['file_aa'].route_to( @n['file_bb'] ) )
|
95
|
+
assert_equal( 'http://localhost/file_ah', @n['dir_a/'].route_to( @n['file_ah'] ) )
|
96
|
+
|
97
|
+
assert_equal( './', @n['file_a'].route_to( @n['/'] ) )
|
98
|
+
assert_equal( '../', @n['dir_a/'].route_to( @n['/'] ) )
|
99
|
+
assert_equal( 'dir_a/', @n['file_a'].route_to( @n['dir_a/'] ) )
|
100
|
+
|
101
|
+
#arg is String
|
102
|
+
assert_equal( 'file_a', @n['file_a'].route_to( 'file_a' ) )
|
103
|
+
assert_equal( '../other', @n['file_aa'].route_to( '/other' ) )
|
104
|
+
assert_equal( '../other', @n['file_aa'].route_to( '../other' ) )
|
105
|
+
assert_equal( 'document/file2', @n['file_aa#'].route_to( 'document/file2' ) )
|
106
|
+
assert_equal( 'ftp://test', @n['dir_a/'].route_to( 'ftp://test' ) )
|
107
|
+
|
108
|
+
assert_equal( './', @n['file_a'].route_to( '/' ) )
|
109
|
+
assert_equal( './', @n['dir_a/'].route_to( '/dir_a' ) )
|
110
|
+
|
111
|
+
assert_equal( '../other', @n['file_aa'].route_to( '/other' ) )
|
112
|
+
|
113
|
+
#test args with '..' and '.': either too many of them or absolute path given
|
114
|
+
assert_equal( '../dir', @n['file_aa'].route_to( '../../../dir/./' ) )
|
115
|
+
assert_equal( '../dir', @n['file_aa'].route_to( '/../../../dir/./' ) )
|
116
|
+
assert_equal( '../file', @n['file_aa'].route_to( '/dir/../file' ) )
|
117
|
+
assert_equal( 'file', @n['file_aa'].route_to( 'dir/../file' ) )
|
118
|
+
|
119
|
+
#arg is something else
|
120
|
+
assert_raise( ArgumentError ) { @n['file_a'].route_to( 5 ) }
|
121
|
+
end
|
122
|
+
|
123
|
+
def test_in_subtree_of
|
124
|
+
assert( @n['file_a'].in_subtree_of?( @n['/'] ) )
|
125
|
+
assert( @n['dir_a/'].in_subtree_of?( @n['/'] ) )
|
126
|
+
|
127
|
+
assert( @n['file_aa'].in_subtree_of?( @n['dir_a/'] ) )
|
128
|
+
|
129
|
+
assert( @n['file_aa#'].in_subtree_of?( @n['/'] ) )
|
130
|
+
assert( @n['file_aa#'].in_subtree_of?( @n['dir_a/'] ) )
|
131
|
+
assert( @n['file_aa#'].in_subtree_of?( @n['file_aa'] ) )
|
132
|
+
|
133
|
+
assert( @n['file_ah#'].in_subtree_of?( @n['file_ah'] ) )
|
134
|
+
assert( @n['file_ah#'].in_subtree_of?( @n['/'] ) )
|
135
|
+
|
136
|
+
assert( !@n['file_ba'].in_subtree_of?( @n['dir_a/'] ) )
|
137
|
+
assert( !@n['file_a'].in_subtree_of?( @n['dir_a/'] ) )
|
138
|
+
assert( !@n['file_a'].in_subtree_of?( @n['file_aa'] ) )
|
139
|
+
assert( !@n['file_aa'].in_subtree_of?( @n['file_ab'] ) )
|
140
|
+
end
|
141
|
+
|
142
|
+
def test_resolve_node
|
143
|
+
assert_equal( @n['file_aa#'], @n['file_aa#'].resolve_node( '' ) )
|
144
|
+
assert_equal( @n['file_aa#'], @n['file_aa#'].resolve_node( 'file_aa#doit' ) )
|
145
|
+
assert_equal( @n['file_aa#'], @n['file_aa#'].resolve_node( '#doit' ) )
|
146
|
+
assert_equal( @n['file_aa#2'], @n['file_aa#'].resolve_node( '#doelse' ) )
|
147
|
+
assert_equal( @n['file_aa'], @n['file_aa#'].resolve_node( 'file_aa' ) )
|
148
|
+
assert_equal( @n['dir_a/'], @n['file_aa#'].resolve_node( '../dir_a/' ) )
|
149
|
+
assert_equal( @n['dir_a/'], @n['file_aa#'].resolve_node( '../dir_a' ) )
|
150
|
+
assert_equal( @n['/'], @n['file_aa#'].resolve_node( '..' ) )
|
151
|
+
assert_equal( @n['file_ba'], @n['file_aa'].resolve_node( '../dir_b/file_ba' ) )
|
152
|
+
assert_equal( @n['file_ba#'], @n['file_aa'].resolve_node( '../dir_b/file_ba#doit' ) )
|
153
|
+
assert_equal( @n['file_zb'], @n['file_aa'].resolve_node( '../dir_z/file_zb' ) )
|
154
|
+
|
155
|
+
assert_equal( @n['file_aa#2'], @n['file_ba'].resolve_node( '/dir_a/file_aa#doelse' ) )
|
156
|
+
assert_equal( @n['file_zb'], @n['file_aa'].resolve_node( '/dir_z/file_zb' ) )
|
157
|
+
|
158
|
+
assert_nil( @n['file_aa'].resolve_node( '../dir_b/file_bb' ) )
|
159
|
+
assert_nil( @n['dir_a/'].resolve_node( 'invalid_file' ) )
|
160
|
+
assert_nil( @n['file_a'].resolve_node( '../invalid' ) )
|
161
|
+
|
162
|
+
assert_raise( ArgumentError ) { @n['file_aa'].resolve_node( 5456 ) }
|
163
|
+
|
164
|
+
assert_equal( @n['file_aa#'], @n['file_aa#'].resolve_node( 'file_aa?tst#doit' ) )
|
165
|
+
assert_equal( nil, @n['file_aa#'].resolve_node( 'file_aa#doit?tst' ) )
|
166
|
+
assert_equal( nil, @n['file_aa#'].resolve_node( 'file_aa#doit_invalid' ) )
|
167
|
+
end
|
168
|
+
|
169
|
+
def test_processor_routing
|
170
|
+
assert_raise( NoMethodError ) { @n['/'].return( 'hello' ) }
|
171
|
+
@n['/'].node_info[:processor] = TestProcessor.new
|
172
|
+
assert_equal( 'hello ../out/../dir1/', @n['/'].return( 'hello' ) )
|
173
|
+
assert_throws( :found ) { @n['/'].with_block( 'hello' ) {|n,s| assert_equal( 'hello', s ); throw :found } }
|
174
|
+
end
|
175
|
+
|
176
|
+
def test_match_operator
|
177
|
+
assert_equal( 'dir_a/', @n['dir_a/'] =~ 'dir_a/' )
|
178
|
+
assert_equal( 'dir_a', @n['dir_a/'] =~ 'dir_a' )
|
179
|
+
assert_equal( 'dir_a/', @n['dir_a/'] =~ 'dir_a/something_else' )
|
180
|
+
assert( !( @n['dir_a/'] =~ 'dir_anot' ) )
|
181
|
+
assert( !( @n['dir_a/'] =~ 'not/dir_a' ) )
|
182
|
+
|
183
|
+
assert_equal( 'file_aa', @n['file_aa'] =~ 'file_aa' )
|
184
|
+
assert_equal( 'file_aa', @n['file_aa'] =~ 'file_aa#doit' )
|
185
|
+
assert( !( @n['file_aa'] =~ 'file_aab' ) )
|
186
|
+
assert( !( @n['file_aa'] =~ 'not_file_aab' ) )
|
187
|
+
|
188
|
+
assert_equal( '#doit', @n['file_aa#'] =~ '#doit' )
|
189
|
+
assert( !( @n['file_aa#'] =~ '#doit?sdf' ) )
|
190
|
+
assert( !( @n['file_aa#'] =~ 'dfs#doit' ) )
|
191
|
+
end
|
192
|
+
|
193
|
+
def test_order_info
|
194
|
+
assert_equal( 0, @n['file_a'].order_info )
|
195
|
+
assert_equal( 0, @n['file_b'].order_info )
|
196
|
+
assert_equal( [@n['file_a'], @n['file_b']], [@n['file_b'], @n['file_a']].sort )
|
197
|
+
assert_equal( 1, @n['file_ab'].order_info )
|
198
|
+
assert_equal( 2, @n['file_aa'].order_info )
|
199
|
+
assert_equal( [@n['file_ab'], @n['file_aa']], [@n['file_aa'], @n['file_ab']].sort )
|
200
|
+
end
|
201
|
+
|
202
|
+
end
|
@@ -0,0 +1,214 @@
|
|
1
|
+
require 'webgen/test'
|
2
|
+
require 'webgen/plugin'
|
3
|
+
|
4
|
+
|
5
|
+
class PluginLoaderTest < Webgen::TestCase
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@wrapper = Module.new
|
9
|
+
@l = Webgen::PluginLoader.new( @wrapper )
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
self.class.remove_const(:TestPlugin) if self.class.const_defined?(:TestPlugin)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_load_from_dir
|
17
|
+
assert_nothing_thrown do
|
18
|
+
@l.load_from_dir( fixture_path, '' )
|
19
|
+
end
|
20
|
+
check_loaded_plugin_class( @l, @wrapper::Testing::BasicPlugin )
|
21
|
+
check_loaded_plugin_class( @l, @wrapper::Testing::PluginWithData )
|
22
|
+
check_loaded_plugin_class( @l, @wrapper::Testing::DerivedPlugin )
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_load_from_file
|
26
|
+
assert_nothing_thrown do
|
27
|
+
@l.load_from_file( fixture_path( 'plugin1') )
|
28
|
+
end
|
29
|
+
check_loaded_plugin_class( @l, @wrapper::Testing::BasicPlugin )
|
30
|
+
check_loaded_plugin_class( @l, @wrapper::Testing::PluginWithData )
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_load_from_block
|
34
|
+
assert_throws( :plugin_class_found ) do
|
35
|
+
Class.new( Webgen::Plugin )
|
36
|
+
end
|
37
|
+
assert_nothing_thrown do
|
38
|
+
@l.load_from_block { self.class.module_eval "class TestPlugin < Webgen::Plugin; end" }
|
39
|
+
end
|
40
|
+
assert_raise( RuntimeError ) do
|
41
|
+
self.class.module_eval "class TestPlugin1 < Webgen::Plugin; end"
|
42
|
+
end
|
43
|
+
check_loaded_plugin_class( @l, TestPlugin )
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_load_optional_part
|
47
|
+
assert_nothing_thrown do
|
48
|
+
@l.load_from_file( fixture_path( 'plugin1') )
|
49
|
+
end
|
50
|
+
assert_not_nil( @l.optional_parts['test'] )
|
51
|
+
assert_equal( ['unknown'], @l.optional_parts['test'][:needed_gems] )
|
52
|
+
assert( !@l.optional_parts['test'][:loaded] )
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_accessors
|
56
|
+
assert_equal( 0, @l.plugin_classes.length )
|
57
|
+
@l.load_from_block { self.class.module_eval "class TestPlugin < Webgen::Plugin; end" }
|
58
|
+
assert_equal( 1, @l.plugin_classes.length )
|
59
|
+
assert_equal( [TestPlugin], @l.plugin_classes )
|
60
|
+
assert_equal( TestPlugin, @l.plugin_class_for_name( 'PluginLoaderTest/TestPlugin' ) )
|
61
|
+
assert( @l.has_plugin?( 'PluginLoaderTest/TestPlugin' ) )
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_default_plugin_loader
|
65
|
+
assert_equal( 0, Webgen::DEFAULT_PLUGIN_LOADER.plugin_classes.length )
|
66
|
+
end
|
67
|
+
|
68
|
+
def check_loaded_plugin_class( loader, plugin )
|
69
|
+
assert( loader.plugin_classes.include?( plugin ), "#{plugin} not loaded" )
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
class PluginTest < Webgen::TestCase
|
76
|
+
|
77
|
+
def setup
|
78
|
+
@wrapper = Module.new
|
79
|
+
@l = Webgen::PluginLoader.new( @wrapper )
|
80
|
+
@l.load_from_dir( fixture_path, '' )
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_plugin_config
|
84
|
+
check_plugin_data( @wrapper::Testing::BasicPlugin, 'Testing/BasicPlugin', {:name => 'Testing/BasicPlugin'}, [], [] )
|
85
|
+
check_plugin_data( @wrapper::Testing::PluginWithData, 'Testing/PluginWithData', @wrapper::Testing::INFOS_HASH,
|
86
|
+
@wrapper::Testing::PARAM_ARRAY, @wrapper::Testing::DEPS_ARRAY )
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_ancestor_classes
|
90
|
+
assert_equal( [@wrapper::Testing::BasicPlugin], @wrapper::Testing::BasicPlugin.ancestor_classes )
|
91
|
+
assert_equal( [@wrapper::Testing::PluginWithData], @wrapper::Testing::PluginWithData.ancestor_classes )
|
92
|
+
assert_equal( [@wrapper::Testing::DerivedPlugin, @wrapper::Testing::PluginWithData], @wrapper::Testing::DerivedPlugin.ancestor_classes )
|
93
|
+
end
|
94
|
+
|
95
|
+
def check_plugin_data( plugin, name, infos, params, deps )
|
96
|
+
assert_kind_of( OpenStruct, plugin.config )
|
97
|
+
assert_equal( plugin, plugin.config.plugin_klass )
|
98
|
+
assert_equal( name, plugin.plugin_name )
|
99
|
+
assert_equal( infos, plugin.config.infos )
|
100
|
+
if params.length > 0
|
101
|
+
assert_equal( params[0], plugin.config.params[params[0]].name )
|
102
|
+
assert_equal( params[1], plugin.config.params[params[0]].default )
|
103
|
+
assert_equal( params[2], plugin.config.params[params[0]].description )
|
104
|
+
end
|
105
|
+
assert_equal( deps, plugin.config.dependencies )
|
106
|
+
plugin.config.dependencies.each {|dep| assert_kind_of( String, dep)}
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
110
|
+
|
111
|
+
|
112
|
+
class HandlerPluginTest < Webgen::TestCase
|
113
|
+
|
114
|
+
def setup
|
115
|
+
@wrapper = Module.new
|
116
|
+
@l = Webgen::PluginLoader.new( @wrapper )
|
117
|
+
@l.load_from_file( fixture_path( 'handlerplugin.rb' ) )
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_registered_handler
|
121
|
+
assert_equal( 3, @l.plugin_classes.length )
|
122
|
+
assert_equal( nil, @wrapper::Testing::BaseHandler.registered_handler )
|
123
|
+
assert_equal( 'handler1', @wrapper::Testing::Handler1.registered_handler )
|
124
|
+
assert_equal( nil, @wrapper::Testing::Handler2.registered_handler )
|
125
|
+
end
|
126
|
+
|
127
|
+
def test_registered_handlers
|
128
|
+
manager = Webgen::PluginManager.new( [@l] )
|
129
|
+
manager.add_plugin_classes( @l.plugin_classes )
|
130
|
+
manager.init
|
131
|
+
|
132
|
+
assert_equal( {'handler1' => manager['Testing/Handler1']}, manager['Testing/BaseHandler'].registered_handlers )
|
133
|
+
end
|
134
|
+
|
135
|
+
end
|
136
|
+
|
137
|
+
|
138
|
+
class DummyConfig
|
139
|
+
|
140
|
+
def initialize
|
141
|
+
@config = {
|
142
|
+
'Testing/BasicPlugin' => { 'param' => 'value' },
|
143
|
+
'Testing/PluginWithData' => { 'test' => [6,7] },
|
144
|
+
'Testing/DerivedPlugin' => { 'test' => [7,8] }
|
145
|
+
}
|
146
|
+
end
|
147
|
+
|
148
|
+
def param_for_plugin( plugin, param )
|
149
|
+
@config[plugin][param] || Webgen::PluginParamValueNotFound
|
150
|
+
end
|
151
|
+
|
152
|
+
end
|
153
|
+
|
154
|
+
|
155
|
+
class PluginManagerTest < Webgen::TestCase
|
156
|
+
|
157
|
+
def test_add_plugin_classes
|
158
|
+
loader = Webgen::PluginLoader.new
|
159
|
+
loader.load_from_file( fixture_path( 'plugin1.rb' ) )
|
160
|
+
manager = Webgen::PluginManager.new( [loader] )
|
161
|
+
|
162
|
+
assert_raise( Webgen::PluginNotFound ) { manager.add_plugin_classes( loader.plugin_classes) }
|
163
|
+
assert_equal( [], manager.plugin_classes )
|
164
|
+
|
165
|
+
loader.load_from_file( fixture_path( 'plugin2.rb' ) )
|
166
|
+
assert_nothing_raised { manager.add_plugin_classes( loader.plugin_classes) }
|
167
|
+
assert_equal( loader.plugin_classes.sort {|a,b| a.plugin_name <=> b.plugin_name },
|
168
|
+
manager.plugin_classes.sort {|a,b| a.plugin_name <=> b.plugin_name } )
|
169
|
+
end
|
170
|
+
|
171
|
+
def test_init
|
172
|
+
loader = Webgen::PluginLoader.new( wrapper = Module.new )
|
173
|
+
loader.load_from_dir( fixture_path, '' )
|
174
|
+
|
175
|
+
manager = Webgen::PluginManager.new( [loader] )
|
176
|
+
manager.add_plugin_classes( loader.plugin_classes )
|
177
|
+
manager.init
|
178
|
+
assert_equal( 5, manager.plugins.length )
|
179
|
+
|
180
|
+
assert_kind_of( wrapper::Testing::BasicPlugin, manager['Testing/BasicPlugin'] )
|
181
|
+
assert_kind_of( wrapper::Testing::DerivedPlugin, manager['Testing/DerivedPlugin'] )
|
182
|
+
assert_nil( manager['Testing/PluginWithData'] )
|
183
|
+
end
|
184
|
+
|
185
|
+
def test_param_for_plugin
|
186
|
+
loader = Webgen::PluginLoader.new( wrapper = Module.new )
|
187
|
+
loader.load_from_dir( fixture_path, '' )
|
188
|
+
manager = Webgen::PluginManager.new( [loader] )
|
189
|
+
|
190
|
+
manager.add_plugin_classes( loader.plugin_classes )
|
191
|
+
manager.init
|
192
|
+
|
193
|
+
other_loader = Webgen::PluginLoader.new
|
194
|
+
other_loader.load_from_block { self.class.module_eval "class FalsePlugin < Webgen::Plugin; end" }
|
195
|
+
|
196
|
+
assert_raise( Webgen::PluginParamNotFound ) { manager.param_for_plugin( 'FalsePlugin', 'param' ) }
|
197
|
+
|
198
|
+
assert_equal( wrapper::Testing::PARAM_ARRAY[1], manager.param_for_plugin( 'Testing/PluginWithData', wrapper::Testing::PARAM_ARRAY[0] ) )
|
199
|
+
assert_equal( wrapper::Testing::PARAM_ARRAY[1], manager['Testing/DerivedPlugin'].param( wrapper::Testing::PARAM_ARRAY[0] ) )
|
200
|
+
assert_equal( manager['Testing/DerivedPlugin'].param( wrapper::Testing::PARAM_ARRAY[0] ),
|
201
|
+
manager.param_for_plugin( 'Testing/PluginWithData', wrapper::Testing::PARAM_ARRAY[0] ) )
|
202
|
+
|
203
|
+
assert_equal( wrapper::Testing::PARAM_ARRAY[1], manager['Testing/BasicPlugin'].param( wrapper::Testing::PARAM_ARRAY[0], 'Testing/PluginWithData' ) )
|
204
|
+
|
205
|
+
manager.plugin_config = DummyConfig.new
|
206
|
+
manager.init #re-precalculate param values, still TODO
|
207
|
+
assert_raise( Webgen::PluginParamNotFound ) { manager.param_for_plugin( 'Testing/BasicPlugin', 'param' ) }
|
208
|
+
assert_equal( [6,7], manager.param_for_plugin( 'Testing/PluginWithData', wrapper::Testing::PARAM_ARRAY[0] ) )
|
209
|
+
assert_equal( [6,7], manager['Testing/DerivedPlugin'].param( wrapper::Testing::PARAM_ARRAY[0] ) )
|
210
|
+
|
211
|
+
assert_equal( 'otherparam', manager.param_for_plugin( 'Testing/PluginWithData', 'otherparam' ) )
|
212
|
+
end
|
213
|
+
|
214
|
+
end
|