webgen 0.4.7 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -0,0 +1,162 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'webgen/loggable'
|
3
|
+
require 'webgen/websiteaccess'
|
4
|
+
|
5
|
+
# This module should be mixed into any class that wants to serve as a webgen tag class. Have a look
|
6
|
+
# a the example below to see how a basic tag class looks like.
|
7
|
+
#
|
8
|
+
# = Tag classes
|
9
|
+
#
|
10
|
+
# A tag class is a webgen extension that handles specific webgen tags. webgen tags are used to add
|
11
|
+
# dynamic content to page and template files and are made for ease of use.
|
12
|
+
#
|
13
|
+
# A tag class can handle multiple different tags. Just add a (tag name)-(class name) pair to the
|
14
|
+
# <tt>contentprocessor.tags.map</tt> configuration entry for each tag name you want to associate
|
15
|
+
# with the tag class. The special name <tt>:default</tt> is used for the default tag class which is
|
16
|
+
# called if a tag with an unknown tag name is encountered.
|
17
|
+
#
|
18
|
+
# The only method needed to be written is +call+ which is called by the tags content processor to
|
19
|
+
# the actual processing. And the +initialize+ method must not take any parameters!
|
20
|
+
#
|
21
|
+
# Tag classes *can* also choose to not use this module. If they don't use it they have to provide
|
22
|
+
# the following methods: +set_params+, +create_tag_params+, +call+.
|
23
|
+
#
|
24
|
+
# = Tag parameters
|
25
|
+
#
|
26
|
+
# webgen tags allow the specification of parameters in the tag definition. The method
|
27
|
+
# +tag_params_list+ returns all configuration entries that can be set this way. And the method
|
28
|
+
# +tag_config_base+ is used to resolve partially stated configuration entries. An additional
|
29
|
+
# configuration entry option is also used: <tt>:mandatory</tt>. If this key is set to +true+ for a
|
30
|
+
# configuration entry, the entry counts as mandatory and needs to be set in the tag definition. If
|
31
|
+
# this key is set to +default+, this means that this entry should be the default mandatory parameter
|
32
|
+
# (used when only a string is provided in the tag definition). There *should* be only one default
|
33
|
+
# mandatory parameter.
|
34
|
+
#
|
35
|
+
# = Sample Tag Class
|
36
|
+
#
|
37
|
+
# Following is a simple tag class example which just reverses the body text and adds some
|
38
|
+
# information about the context to the result. Note that the class does not reside in the
|
39
|
+
# Webgen::Tag namespace and that the configuration entry is therefore also not under the
|
40
|
+
# <tt>tag.</tt> namespace.
|
41
|
+
#
|
42
|
+
# class Reverser
|
43
|
+
#
|
44
|
+
# include Webgen::Tag::Base
|
45
|
+
#
|
46
|
+
# def call(tag, body, context)
|
47
|
+
# result = param('do_reverse') ? body.reverse : body
|
48
|
+
# result += "Node: " + context.content_node.absolute_lcn + " (" + context.content_node['title'] + ")"
|
49
|
+
# result += "Reference node: " + context.ref_node.absolute_lcn
|
50
|
+
# result
|
51
|
+
# end
|
52
|
+
#
|
53
|
+
# end
|
54
|
+
#
|
55
|
+
# WebsiteAccess.website.config.reverser.do_reverse nil, :mandatory => default
|
56
|
+
# WebsiteAccess.website.config['contentprocessor.tags.map']['reverse'] = 'Reverser'
|
57
|
+
#
|
58
|
+
module Webgen::Tag::Base
|
59
|
+
|
60
|
+
include Webgen::Loggable
|
61
|
+
include Webgen::WebsiteAccess
|
62
|
+
|
63
|
+
# Return a hash with parameter values extracted from the string +tag_config+.
|
64
|
+
def create_tag_params(tag_config, ref_node)
|
65
|
+
begin
|
66
|
+
config = YAML::load("--- #{tag_config}")
|
67
|
+
rescue ArgumentError => e
|
68
|
+
log(:error) { "Could not parse the tag params '#{tag_config}' in <#{ref_node.absolute_lcn}>: #{e.message}" }
|
69
|
+
config = {}
|
70
|
+
end
|
71
|
+
create_params_hash(config, ref_node)
|
72
|
+
end
|
73
|
+
|
74
|
+
# Set the current parameter configuration to +params+.
|
75
|
+
def set_params(params)
|
76
|
+
@params = params
|
77
|
+
end
|
78
|
+
|
79
|
+
# Retrieve the parameter value for +name+. The value is taken from the current parameter
|
80
|
+
# configuration if the parameter is specified there or from the website configuration otherwise.
|
81
|
+
def param(name)
|
82
|
+
(@params && @params.has_key?(name) ? @params[name] : website.config[name])
|
83
|
+
end
|
84
|
+
|
85
|
+
# Default implementation for processing a tag. The parameter +tag+ specifies the name of the tag
|
86
|
+
# which should be processed (useful for tag classes which process different tags).
|
87
|
+
#
|
88
|
+
# The parameter +body+ holds the optional body value for the tag.
|
89
|
+
#
|
90
|
+
# The +context+ parameter holds all relevant information for processing. Have a look at the
|
91
|
+
# Webgen::ContentProcessor::Context class to see what is available.
|
92
|
+
#
|
93
|
+
# The method has to return the result of the tag processing and, optionally, a boolean value
|
94
|
+
# specifying if the result should further be processed (ie. webgen tags replaced).
|
95
|
+
#
|
96
|
+
# Needs to be redefined by classes that mixin this module!
|
97
|
+
def call(tag, body, context)
|
98
|
+
raise NotImplementedError
|
99
|
+
end
|
100
|
+
|
101
|
+
#######
|
102
|
+
private
|
103
|
+
#######
|
104
|
+
|
105
|
+
# The base part of the configuration name. This is normally the class name without the Webgen
|
106
|
+
# module downcased and all "::" substituted with "." (e.g. Webgen::Tag::Menu -> tag.menu).
|
107
|
+
def tag_config_base
|
108
|
+
self.class.name.gsub('::', '.').gsub(/^Webgen\./, '').downcase
|
109
|
+
end
|
110
|
+
|
111
|
+
# Return the list of all parameters for the tag class.
|
112
|
+
def tag_params_list
|
113
|
+
regexp = /^#{tag_config_base}/
|
114
|
+
website.config.data.keys.select {|key| key =~ regexp}
|
115
|
+
end
|
116
|
+
|
117
|
+
# Create the parameter hash from +config+ which needs to be a Hash, a String or +nil+.
|
118
|
+
def create_params_hash(config, node)
|
119
|
+
params = tag_params_list
|
120
|
+
result = case config
|
121
|
+
when Hash then create_from_hash(config, params, node)
|
122
|
+
when String then create_from_string(config, params, node)
|
123
|
+
when NilClass then {}
|
124
|
+
else
|
125
|
+
log(:error) { "Invalid parameter type (#{config.class}) for tag '#{self.class.name}' in <#{node.absolute_lcn}>" }
|
126
|
+
{}
|
127
|
+
end
|
128
|
+
|
129
|
+
unless params.all? {|k| !website.config.meta_info[k][:mandatory] || result.has_key?(k)}
|
130
|
+
log(:error) { "Not all mandatory parameters for tag '#{self.class.name}' in <#{node.absolute_lcn}> set" }
|
131
|
+
end
|
132
|
+
|
133
|
+
result
|
134
|
+
end
|
135
|
+
|
136
|
+
# Return a valid parameter hash taking values from +config+ which has to be a Hash.
|
137
|
+
def create_from_hash(config, params, node)
|
138
|
+
result = {}
|
139
|
+
config.each do |key, value|
|
140
|
+
if params.include?(key)
|
141
|
+
result[key] = value
|
142
|
+
elsif params.include?(tag_config_base + '.' + key)
|
143
|
+
result[tag_config_base + '.' + key] = value
|
144
|
+
else
|
145
|
+
log(:warn) { "Invalid parameter '#{key}' for tag '#{self.class.name}' in <#{node.absolute_lcn}>" }
|
146
|
+
end
|
147
|
+
end
|
148
|
+
result
|
149
|
+
end
|
150
|
+
|
151
|
+
# Return a valid parameter hash by setting +value+ to the default mandatory parameter.
|
152
|
+
def create_from_string(value, params, node)
|
153
|
+
param_name = params.find {|k| website.config.meta_info[k][:mandatory] == 'default'}
|
154
|
+
if param_name.nil?
|
155
|
+
log(:error) { "No default mandatory parameter specified for tag '#{self.class.name}' but set in <#{node.absolute_lcn}>"}
|
156
|
+
{}
|
157
|
+
else
|
158
|
+
{param_name => value}
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
end
|
@@ -0,0 +1,187 @@
|
|
1
|
+
require 'webgen/websiteaccess'
|
2
|
+
require 'webgen/tag'
|
3
|
+
|
4
|
+
module Webgen::Tag
|
5
|
+
|
6
|
+
# Generates a menu that can be configured extensively.
|
7
|
+
class Menu
|
8
|
+
|
9
|
+
include Webgen::WebsiteAccess
|
10
|
+
include Base
|
11
|
+
|
12
|
+
# Special menu node class. It encapsulates the original node for later access.
|
13
|
+
class MenuNode
|
14
|
+
|
15
|
+
# Array of the child nodes.
|
16
|
+
attr_reader :children
|
17
|
+
|
18
|
+
# The parent node.
|
19
|
+
attr_reader :parent
|
20
|
+
|
21
|
+
# The encapsulated node.
|
22
|
+
attr_reader :node
|
23
|
+
|
24
|
+
# Create a new menu node under +parent+ for the real node +node+.
|
25
|
+
def initialize(parent, node)
|
26
|
+
@parent = parent
|
27
|
+
@node = node
|
28
|
+
@children = []
|
29
|
+
end
|
30
|
+
|
31
|
+
# Sort recursively all children of the node using the wrapped nodes.
|
32
|
+
def sort!
|
33
|
+
self.children.sort! {|a,b| a.node <=> b.node}
|
34
|
+
self.children.each {|child| child.sort!}
|
35
|
+
self
|
36
|
+
end
|
37
|
+
|
38
|
+
# Return the menu tree under the node as nested list of alcn values.
|
39
|
+
def to_lcn_list
|
40
|
+
self.children.inject([]) {|temp, n| temp << n.node.absolute_lcn; temp += ((t = n.to_lcn_list).empty? ? [] : [t]) }
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
def initialize #:nodoc:
|
46
|
+
website.blackboard.add_listener(:node_changed?, method(:node_changed?))
|
47
|
+
end
|
48
|
+
|
49
|
+
# Generate the menu.
|
50
|
+
def call(tag, body, context)
|
51
|
+
tree = specific_menu_tree_for(context.content_node)
|
52
|
+
|
53
|
+
(context.dest_node.node_info[:tag_menu_menus] ||= []) << [@params, context.content_node.absolute_lcn, (tree ? tree.to_lcn_list : nil)]
|
54
|
+
if tree && !tree.children.empty?
|
55
|
+
"<div class=\"webgen-menu\">#{create_output(context, tree)}</div>"
|
56
|
+
else
|
57
|
+
""
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
#########
|
62
|
+
protected
|
63
|
+
#########
|
64
|
+
|
65
|
+
# Check if the menus for +node+ have changed.
|
66
|
+
def node_changed?(node)
|
67
|
+
return if !node.node_info[:tag_menu_menus] || @inside_node_changed
|
68
|
+
|
69
|
+
@inside_node_changed = true #TODO: better solution for this race condition?
|
70
|
+
node.node_info[:tag_menu_menus].each do |params, cn_alcn, cached_tree|
|
71
|
+
cn = node.tree[cn_alcn]
|
72
|
+
menu_tree = menu_tree_for_lang(cn.lang, cn.tree.root)
|
73
|
+
|
74
|
+
set_params(params)
|
75
|
+
tree = build_specific_menu_tree(cn, menu_tree)
|
76
|
+
tree_list = tree.to_lcn_list if tree
|
77
|
+
set_params({})
|
78
|
+
|
79
|
+
if (tree.nil? && !cached_tree.nil?) || (tree_list && tree_list != cached_tree) ||
|
80
|
+
(tree_list && tree_list.flatten.any? {|alcn| (n = node.tree[alcn]) && (r = n.routing_node(cn.lang)) && r != node && r.changed?})
|
81
|
+
node.dirty = true
|
82
|
+
break
|
83
|
+
end
|
84
|
+
end
|
85
|
+
@inside_node_changed = false
|
86
|
+
end
|
87
|
+
|
88
|
+
# Wrapper method for returning the specific menu tree for +content_node+.
|
89
|
+
def specific_menu_tree_for(content_node)
|
90
|
+
tree = menu_tree_for_lang(content_node.lang, content_node.tree.root)
|
91
|
+
if param('tag.menu.used_nodes') == 'fragments'
|
92
|
+
@params['tag.menu.start_level'] = param('tag.menu.start_level') + content_node.level
|
93
|
+
end
|
94
|
+
build_specific_menu_tree(content_node, tree)
|
95
|
+
end
|
96
|
+
|
97
|
+
# Build a menu tree for +content_node+ from the tree +menu_node+.
|
98
|
+
def build_specific_menu_tree(content_node, menu_node, level = 1)
|
99
|
+
if menu_node.nil? \
|
100
|
+
|| level > param('tag.menu.max_levels') + param('tag.menu.start_level') - 1 \
|
101
|
+
|| ((level > param('tag.menu.min_levels') + param('tag.menu.start_level') - 1) \
|
102
|
+
&& (menu_node.node.level >= content_node.level \
|
103
|
+
|| (param('tag.menu.show_current_subtree_only') && !content_node.in_subtree_of?(menu_node.node))
|
104
|
+
)
|
105
|
+
) \
|
106
|
+
|| (level == param('tag.menu.start_level') && !content_node.in_subtree_of?(menu_node.node))
|
107
|
+
return nil
|
108
|
+
end
|
109
|
+
|
110
|
+
sub_menu_tree = MenuNode.new(nil, menu_node.node)
|
111
|
+
menu_tree = MenuNode.new(nil, menu_node.node)
|
112
|
+
menu_node.children.each do |child|
|
113
|
+
next if param('tag.menu.used_nodes') == 'files' && !is_in_menu_tree_of_files?(child)
|
114
|
+
menu_tree.children << (this_node = MenuNode.new(menu_tree, child.node))
|
115
|
+
sub_node = child.children.length > 0 ? build_specific_menu_tree(content_node, child, level + 1) : nil
|
116
|
+
sub_node.children.each {|n| this_node.children << n; sub_menu_tree.children << n} if sub_node
|
117
|
+
end
|
118
|
+
|
119
|
+
if level < param('tag.menu.start_level')
|
120
|
+
sub_menu_tree
|
121
|
+
else
|
122
|
+
menu_tree
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
# Return +true+ if +menu_node+ is in the menu tree without fragment nodes.
|
127
|
+
def is_in_menu_tree_of_files?(menu_node)
|
128
|
+
(!menu_node.node.is_fragment? && menu_node.node['in_menu']) || menu_node.children.any? {|c| is_in_menu_tree_of_files?(c)}
|
129
|
+
end
|
130
|
+
|
131
|
+
# Create the HTML menu of the +tree+ using the provided +context+.
|
132
|
+
def create_output(context, tree)
|
133
|
+
out = "<ul>"
|
134
|
+
tree.children.each do |child|
|
135
|
+
menu = child.children.length > 0 ? create_output(context, child) : ''
|
136
|
+
style, link = menu_item_details(context.dest_node, child.node, context.content_node.lang)
|
137
|
+
|
138
|
+
out << "<li #{style}>#{link}"
|
139
|
+
out << menu
|
140
|
+
out << "</li>"
|
141
|
+
end
|
142
|
+
out << "</ul>"
|
143
|
+
out
|
144
|
+
end
|
145
|
+
|
146
|
+
# Return style information (node is selected, ...) and a link from +dest_node+ to +node+.
|
147
|
+
def menu_item_details(dest_node, node, lang)
|
148
|
+
styles = []
|
149
|
+
styles << 'webgen-menu-submenu' if node.is_directory? || (node.is_fragment? && node.children.length > 0)
|
150
|
+
styles << 'webgen-menu-submenu-inhierarchy' if (node.is_directory? || (node.is_fragment? && node.children.length > 0)) &&
|
151
|
+
dest_node.in_subtree_of?(node)
|
152
|
+
styles << 'webgen-menu-item-selected' if node == dest_node
|
153
|
+
style = "class=\"#{styles.join(' ')}\"" if styles.length > 0
|
154
|
+
|
155
|
+
link = dest_node.link_to(node)
|
156
|
+
|
157
|
+
[style, link]
|
158
|
+
end
|
159
|
+
|
160
|
+
# Return the menu tree for the language +lang+.
|
161
|
+
def menu_tree_for_lang(lang, root)
|
162
|
+
menus = (website.cache.volatile[:menutrees] ||= {})
|
163
|
+
unless menus[lang]
|
164
|
+
menus[lang] = create_menu_tree(root, nil, lang)
|
165
|
+
menus[lang].sort! if menus[lang]
|
166
|
+
end
|
167
|
+
menus[lang]
|
168
|
+
end
|
169
|
+
|
170
|
+
# Create and return a menu tree if at least one node is in the menu or +nil+ otherwise.
|
171
|
+
def create_menu_tree(node, parent, lang)
|
172
|
+
menu_node = MenuNode.new(parent, node)
|
173
|
+
|
174
|
+
node.children.select do |child|
|
175
|
+
child.lang == lang || child.lang.nil? || child.is_directory?
|
176
|
+
end.each do |child|
|
177
|
+
sub_node = create_menu_tree(child, menu_node, lang)
|
178
|
+
menu_node.children << sub_node unless sub_node.nil?
|
179
|
+
end
|
180
|
+
|
181
|
+
menu_node.children.empty? ? (node['in_menu'] ? menu_node : nil) : menu_node
|
182
|
+
end
|
183
|
+
|
184
|
+
|
185
|
+
end
|
186
|
+
|
187
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'webgen/tag'
|
2
|
+
|
3
|
+
module Webgen::Tag
|
4
|
+
|
5
|
+
# Provides easy access to the meta information of a node.
|
6
|
+
class Metainfo
|
7
|
+
|
8
|
+
include Base
|
9
|
+
|
10
|
+
# Return the meta information key specified in +tag+ of the content node.
|
11
|
+
def call(tag, body, context)
|
12
|
+
output = ''
|
13
|
+
if tag == 'lang'
|
14
|
+
output = context.content_node.lang
|
15
|
+
elsif context.content_node[tag]
|
16
|
+
output = context.content_node[tag].to_s
|
17
|
+
else
|
18
|
+
log(:warn) { "No value for tag '#{tag}' in <#{context.ref_node.absolute_lcn}> found in <#{context.content_node.absolute_lcn}>" }
|
19
|
+
end
|
20
|
+
output
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'webgen/tag'
|
2
|
+
require 'uri'
|
3
|
+
|
4
|
+
module Webgen::Tag
|
5
|
+
|
6
|
+
# Makes a path relative. This is very useful for templates. For example, you normally include a
|
7
|
+
# stylesheet in a template. If you specify the filename of the stylesheet directly, the reference
|
8
|
+
# to the stylesheet in the output file of a page file that is not in the same directory as the
|
9
|
+
# template would be invalid.
|
10
|
+
#
|
11
|
+
# By using the +relocatable+ tag you ensure that the path stays valid.
|
12
|
+
class Relocatable
|
13
|
+
|
14
|
+
include Webgen::Tag::Base
|
15
|
+
|
16
|
+
# Return the relativized path for the path provided in the tag definition.
|
17
|
+
def call(tag, body, context)
|
18
|
+
uri_string = param('tag.relocatable.path')
|
19
|
+
result = ''
|
20
|
+
unless uri_string.nil?
|
21
|
+
begin
|
22
|
+
uri = URI.parse(uri_string)
|
23
|
+
if uri.absolute?
|
24
|
+
result = uri_string
|
25
|
+
else
|
26
|
+
result = resolve_path(uri_string, context)
|
27
|
+
end
|
28
|
+
if result.empty?
|
29
|
+
log(:error) { "Could not resolve path '#{uri_string}' in <#{context.ref_node.absolute_lcn}>" }
|
30
|
+
context.dest_node.dirty = true
|
31
|
+
end
|
32
|
+
rescue URI::InvalidURIError => e
|
33
|
+
log(:error) { "Error while parsing path for tag relocatable in <#{context.ref_node.absolute_lcn}>: #{e.message}" }
|
34
|
+
context.dest_node.dirty = true
|
35
|
+
end
|
36
|
+
end
|
37
|
+
result
|
38
|
+
end
|
39
|
+
|
40
|
+
#######
|
41
|
+
private
|
42
|
+
#######
|
43
|
+
|
44
|
+
# Resolve the path +uri+ using the reference node and return the correct relative path from the
|
45
|
+
# destination node.
|
46
|
+
def resolve_path(uri, context)
|
47
|
+
dest_node = context.ref_node.resolve(uri, context.dest_node.lang)
|
48
|
+
(dest_node ? context.dest_node.route_to(dest_node) : '')
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
data/lib/webgen/tree.rb
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
require 'webgen/websiteaccess'
|
2
|
+
require 'webgen/node'
|
3
|
+
|
4
|
+
module Webgen
|
5
|
+
|
6
|
+
# Represents a tree of nodes.
|
7
|
+
class Tree
|
8
|
+
|
9
|
+
include WebsiteAccess
|
10
|
+
|
11
|
+
# The dummy root. This is the default node that gets created when the Tree is created sothat the
|
12
|
+
# real root node can be treated like any other node. It has only one child, namely the real root
|
13
|
+
# node of the tree.
|
14
|
+
attr_reader :dummy_root
|
15
|
+
|
16
|
+
# Direct access to the hashes for node resolving. Only use this for reading purposes! If you
|
17
|
+
# just want to get a specific node for an alcn/acn/output path, use #node instead.
|
18
|
+
attr_reader :node_access
|
19
|
+
|
20
|
+
# The hash containing processing information for each node. This is normally not accessed
|
21
|
+
# directly but via the Node#node_info method.
|
22
|
+
attr_reader :node_info
|
23
|
+
|
24
|
+
# Create a new Tree object.
|
25
|
+
def initialize
|
26
|
+
@node_access = {:alcn => {}, :acn => {}, :path => {}}
|
27
|
+
@node_info = {}
|
28
|
+
@dummy_root = Node.new(self, '', '')
|
29
|
+
end
|
30
|
+
|
31
|
+
# The real root node of the tree.
|
32
|
+
def root
|
33
|
+
@dummy_root.children.first
|
34
|
+
end
|
35
|
+
|
36
|
+
# Access a node via a +path+ of a specific +type+. If type is +alcn+ then +path+ has to be an
|
37
|
+
# absolute localized canonical name, if type is +acn+ then +path+ has to be an absolute
|
38
|
+
# canonical name and if type is +path+ then +path+ needs to be an output path.
|
39
|
+
#
|
40
|
+
# Returns the requested Node or +nil+ if such a node does not exist.
|
41
|
+
def node(path, type = :alcn)
|
42
|
+
(type == :acn ? @node_access[type][path] && @node_access[type][path].first : @node_access[type][path])
|
43
|
+
end
|
44
|
+
alias_method :[], :node
|
45
|
+
|
46
|
+
# A utility method called by Node#initialize. This method should not be used directly!
|
47
|
+
def register_node(node)
|
48
|
+
if @node_access[:alcn].has_key?(node.absolute_lcn)
|
49
|
+
raise "Can't have two nodes with same absolute lcn: #{node.absolute_lcn}"
|
50
|
+
else
|
51
|
+
@node_access[:alcn][node.absolute_lcn] = node
|
52
|
+
end
|
53
|
+
(@node_access[:acn][node.absolute_cn] ||= []) << node
|
54
|
+
if @node_access[:path].has_key?(node.path)
|
55
|
+
raise "Can't have two nodes with same output path: #{node.path}" unless node['no_output']
|
56
|
+
else
|
57
|
+
@node_access[:path][node.path] = node
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# Delete the node identified by +node_or_alcn+ and all of its children from the
|
62
|
+
# tree. Directories are only deleted if +delete_dir+ is +true+.
|
63
|
+
def delete_node(node_or_alcn, delete_dir = false)
|
64
|
+
n = node_or_alcn.kind_of?(Node) ? node_or_alcn : @node_access[:alcn][node_or_alcn]
|
65
|
+
return if n.nil? || n == @dummy_root || (n.is_directory? && !delete_dir)
|
66
|
+
|
67
|
+
n.children.dup.each {|child| delete_node(child, true)}
|
68
|
+
|
69
|
+
website.blackboard.dispatch_msg(:before_node_deleted, n)
|
70
|
+
n.parent.children.delete(n)
|
71
|
+
@node_access[:alcn].delete(n.absolute_lcn)
|
72
|
+
@node_access[:acn][n.absolute_cn].delete(n)
|
73
|
+
@node_access[:path].delete(n.path)
|
74
|
+
|
75
|
+
node_info.delete(n.absolute_lcn)
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|