webgen 0.4.7 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/AUTHORS +5 -0
- data/COPYING +8 -338
- data/GPL +340 -0
- data/Rakefile +188 -445
- data/THANKS +7 -22
- data/VERSION +1 -1
- data/bin/webgen +6 -1
- data/data/webgen/resources.yaml +3 -0
- data/data/webgen/website_skeleton/README +10 -0
- data/data/webgen/website_skeleton/Rakefile +40 -0
- data/data/webgen/website_skeleton/config.yaml +17 -0
- data/data/webgen/website_styles/1024px/{default.css → src/default.css} +0 -0
- data/data/webgen/website_styles/1024px/{default.template → src/default.template} +3 -5
- data/data/webgen/website_styles/1024px/{images → src/images}/background.gif +0 -0
- data/data/webgen/website_styles/andreas00/{default.css → src/default.css} +0 -0
- data/{doc/examples → data/webgen}/website_styles/andreas00/src/default.template +3 -5
- data/data/webgen/website_styles/andreas00/{images → src/images}/bg.gif +0 -0
- data/data/webgen/website_styles/andreas00/{images → src/images}/front.jpg +0 -0
- data/data/webgen/website_styles/andreas00/{images → src/images}/menubg.gif +0 -0
- data/data/webgen/website_styles/andreas00/{images → src/images}/menubg2.gif +0 -0
- data/data/webgen/website_styles/andreas01/{default.css → src/default.css} +0 -0
- data/{doc/examples → data/webgen}/website_styles/andreas01/src/default.template +3 -5
- data/data/webgen/website_styles/andreas01/{images → src/images}/bg.gif +0 -0
- data/data/webgen/website_styles/andreas01/{images → src/images}/front.jpg +0 -0
- data/data/webgen/website_styles/andreas01/{print.css → src/print.css} +0 -0
- data/data/webgen/website_styles/andreas03/{default.css → src/default.css} +0 -0
- data/data/webgen/website_styles/andreas03/{default.template → src/default.template} +2 -4
- data/data/webgen/website_styles/andreas03/{images → src/images}/bodybg.png +0 -0
- data/data/webgen/website_styles/andreas03/{images → src/images}/contbg.png +0 -0
- data/data/webgen/website_styles/andreas03/{images → src/images}/footerbg.png +0 -0
- data/data/webgen/website_styles/andreas03/{images → src/images}/gradient1.png +0 -0
- data/data/webgen/website_styles/andreas03/{images → src/images}/gradient2.png +0 -0
- data/data/webgen/website_styles/andreas04/{default.css → src/default.css} +0 -0
- data/data/webgen/website_styles/andreas04/{default.template → src/default.template} +2 -4
- data/data/webgen/website_styles/andreas04/{images → src/images}/blinkarrow.gif +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/bodybg.png +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/contentbg.png +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/entrybg.png +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/flash.gif +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/flash2.gif +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/globe.gif +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/globebottom.gif +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/linkarrow.gif +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/menuhover.png +0 -0
- data/data/webgen/website_styles/andreas05/{default.css → src/default.css} +0 -0
- data/data/webgen/website_styles/andreas05/{default.template → src/default.template} +2 -4
- data/data/webgen/website_styles/andreas05/{images → src/images}/bodybg.gif +0 -0
- data/data/webgen/website_styles/andreas05/{images → src/images}/front.png +0 -0
- data/data/webgen/website_styles/andreas06/{default.css → src/default.css} +0 -0
- data/{doc/examples → data/webgen}/website_styles/andreas06/src/default.template +4 -6
- data/data/webgen/website_styles/andreas06/{images → src/images}/bodybg.gif +0 -0
- data/data/webgen/website_styles/andreas06/{images → src/images}/boxbg.gif +0 -0
- data/data/webgen/website_styles/andreas06/{images → src/images}/greypx.gif +0 -0
- data/data/webgen/website_styles/andreas06/{images → src/images}/header.jpg +0 -0
- data/data/webgen/website_styles/andreas06/{images → src/images}/innerbg.gif +0 -0
- data/data/webgen/website_styles/andreas06/{images → src/images}/leaves.jpg +0 -0
- data/data/webgen/website_styles/andreas06/{images → src/images}/tabs.gif +0 -0
- data/data/webgen/website_styles/andreas07/{browserfix.css → src/browserfix.css} +0 -0
- data/data/webgen/website_styles/andreas07/{default.css → src/default.css} +0 -0
- data/{doc/examples → data/webgen}/website_styles/andreas07/src/default.template +2 -4
- data/data/webgen/website_styles/andreas07/{images → src/images}/bodybg.gif +0 -0
- data/data/webgen/website_styles/andreas07/{images → src/images}/sidebarbg.gif +0 -0
- data/data/webgen/website_styles/andreas08/{default.css → src/default.css} +0 -0
- data/{doc/examples → data/webgen}/website_styles/andreas08/src/default.template +3 -5
- data/data/webgen/website_styles/andreas09/{default.css → src/default.css} +0 -0
- data/data/webgen/website_styles/andreas09/{default.template → src/default.template} +4 -6
- data/data/webgen/website_styles/andreas09/{images → src/images}/bodybg-black.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/bodybg-green.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/bodybg-orange.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/bodybg-purple.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/bodybg-red.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/bodybg.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/footerbg.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/menuhover-black.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/menuhover-green.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/menuhover-orange.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/menuhover-purple.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/menuhover-red.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/menuhover.jpg +0 -0
- data/data/webgen/website_styles/{default → simple}/README +0 -0
- data/data/webgen/website_styles/{default → simple/src}/default.css +0 -0
- data/{doc/examples/website_styles/default → data/webgen/website_styles/simple}/src/default.template +3 -5
- data/data/webgen/website_templates/default/README +0 -2
- data/data/webgen/website_templates/default/src/index.page +3 -3
- data/data/webgen/website_templates/project/README +0 -4
- data/data/webgen/website_templates/project/src/about.page +5 -5
- data/data/webgen/website_templates/project/src/download.page +3 -3
- data/data/webgen/website_templates/project/src/features.page +3 -3
- data/data/webgen/website_templates/project/src/index.page +4 -4
- data/data/webgen/website_templates/project/src/screenshots.page +5 -5
- data/doc/contentprocessor/erb.page +38 -0
- data/doc/contentprocessor/tags.page +61 -0
- data/doc/extensions.page +11 -0
- data/doc/faq.page +177 -0
- data/doc/getting_started.page +130 -0
- data/doc/index.page +50 -0
- data/doc/manual.page +356 -0
- data/doc/reference_configuration.page +328 -0
- data/doc/reference_metainfo.page +128 -0
- data/doc/sourcehandler/metainfo.page +117 -0
- data/doc/sourcehandler/page.page +32 -0
- data/doc/webgen_page_format.page +126 -0
- data/lib/webgen/blackboard.rb +73 -0
- data/lib/webgen/cache.rb +77 -0
- data/lib/webgen/cli.rb +99 -440
- data/lib/webgen/cli/create_command.rb +64 -0
- data/lib/webgen/cli/run_command.rb +20 -0
- data/lib/webgen/cli/utils.rb +82 -0
- data/lib/webgen/configuration.rb +71 -0
- data/lib/webgen/contentprocessor.rb +89 -0
- data/lib/webgen/contentprocessor/blocks.rb +46 -0
- data/lib/webgen/contentprocessor/context.rb +86 -0
- data/lib/webgen/contentprocessor/maruku.rb +18 -0
- data/lib/webgen/contentprocessor/redcloth.rb +15 -0
- data/lib/webgen/contentprocessor/tags.rb +134 -0
- data/lib/webgen/default_config.rb +128 -0
- data/lib/webgen/languages.rb +508 -40
- data/lib/webgen/loggable.rb +23 -0
- data/lib/webgen/logger.rb +78 -0
- data/lib/webgen/node.rb +275 -237
- data/lib/webgen/output.rb +31 -0
- data/lib/webgen/output/filesystem.rb +61 -0
- data/lib/webgen/page.rb +129 -0
- data/lib/webgen/path.rb +172 -0
- data/lib/webgen/source.rb +24 -0
- data/lib/webgen/source/filesystem.rb +56 -0
- data/lib/webgen/source/resource.rb +33 -0
- data/lib/webgen/source/stacked.rb +53 -0
- data/lib/webgen/sourcehandler.rb +175 -0
- data/lib/webgen/sourcehandler/base.rb +188 -0
- data/lib/webgen/sourcehandler/copy.rb +41 -0
- data/lib/webgen/sourcehandler/directory.rb +31 -0
- data/lib/webgen/sourcehandler/fragment.rb +66 -0
- data/lib/webgen/sourcehandler/metainfo.rb +107 -0
- data/lib/webgen/sourcehandler/page.rb +47 -0
- data/lib/webgen/sourcehandler/template.rb +64 -0
- data/lib/webgen/sourcehandler/virtual.rb +72 -0
- data/lib/webgen/tag.rb +16 -0
- data/lib/webgen/tag/base.rb +162 -0
- data/lib/webgen/tag/menu.rb +187 -0
- data/lib/webgen/tag/metainfo.rb +25 -0
- data/lib/webgen/tag/relocatable.rb +53 -0
- data/lib/webgen/tree.rb +80 -0
- data/lib/webgen/version.rb +6 -0
- data/lib/webgen/webgentask.rb +153 -0
- data/lib/webgen/website.rb +166 -288
- data/lib/webgen/websiteaccess.rb +29 -0
- data/lib/webgen/websitemanager.rb +124 -0
- data/man/man1/webgen.1 +31 -42
- data/misc/default.css +337 -0
- data/misc/default.template +73 -0
- data/misc/htmldoc.metainfo +22 -0
- data/misc/htmldoc.virtual +5 -0
- data/misc/images/arrow.gif +0 -0
- data/misc/images/error.gif +0 -0
- data/misc/images/exclamation.gif +0 -0
- data/misc/images/headerbg.jpg +0 -0
- data/misc/images/information.gif +0 -0
- data/misc/images/quote.gif +0 -0
- data/test/helper.rb +28 -0
- data/test/test_blackboard.rb +58 -0
- data/test/test_cache.rb +57 -0
- data/test/test_configuration.rb +35 -0
- data/test/test_contentprocessor.rb +31 -0
- data/test/test_contentprocessor_blocks.rb +34 -0
- data/test/test_contentprocessor_context.rb +38 -0
- data/test/test_contentprocessor_maruku.rb +24 -0
- data/test/test_contentprocessor_redcloth.rb +12 -0
- data/test/test_contentprocessor_tags.rb +97 -0
- data/test/test_languages.rb +53 -0
- data/test/test_loggable.rb +30 -0
- data/test/test_logger.rb +73 -0
- data/test/test_node.rb +305 -0
- data/test/test_output_filesystem.rb +57 -0
- data/test/test_page.rb +180 -0
- data/test/test_path.rb +112 -0
- data/test/test_source_filesystem.rb +59 -0
- data/test/test_source_resource.rb +21 -0
- data/test/test_source_stacked.rb +34 -0
- data/test/test_sourcehandler_base.rb +78 -0
- data/test/test_sourcehandler_copy.rb +45 -0
- data/test/test_sourcehandler_directory.rb +25 -0
- data/test/test_sourcehandler_fragment.rb +62 -0
- data/test/test_sourcehandler_metainfo.rb +79 -0
- data/test/test_sourcehandler_page.rb +62 -0
- data/test/test_sourcehandler_template.rb +61 -0
- data/test/test_sourcehandler_virtual.rb +46 -0
- data/test/test_tag_base.rb +82 -0
- data/test/test_tag_menu.rb +196 -0
- data/test/test_tag_metainfo.rb +17 -0
- data/test/test_tag_relocatable.rb +57 -0
- data/test/test_tree.rb +69 -0
- data/test/test_website.rb +96 -0
- data/test/test_websiteaccess.rb +23 -0
- data/test/test_websitemanager.rb +68 -0
- metadata +276 -800
- data/ChangeLog +0 -46
- data/README +0 -14
- data/TODO +0 -376
- data/data/webgen/data/ISO-639-2_values_8bits.txt +0 -492
- data/data/webgen/gallery-creator/default.png +0 -0
- data/data/webgen/gallery_styles/default/README +0 -6
- data/data/webgen/gallery_styles/default/gallery_gallery.template +0 -38
- data/data/webgen/gallery_styles/default/gallery_image.template +0 -30
- data/data/webgen/gallery_styles/default/gallery_main.template +0 -18
- data/data/webgen/gallery_styles/slides/README +0 -18
- data/data/webgen/gallery_styles/slides/collage.rb +0 -337
- data/data/webgen/gallery_styles/slides/gallery_gallery.template +0 -62
- data/data/webgen/gallery_styles/slides/gallery_image.template +0 -53
- data/data/webgen/gallery_styles/slides/gallery_main.template +0 -32
- data/data/webgen/icon_mapping.yaml +0 -27
- data/data/webgen/resources/emoticons/bigeyes/angry.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/cool.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/cry.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/drunk.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/lol.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/oops.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/sad.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/sleep.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/smile.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/tongue.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/wink.png +0 -0
- data/data/webgen/resources/emoticons/crystal/angry.png +0 -0
- data/data/webgen/resources/emoticons/crystal/cool.png +0 -0
- data/data/webgen/resources/emoticons/crystal/cry.png +0 -0
- data/data/webgen/resources/emoticons/crystal/drunk.png +0 -0
- data/data/webgen/resources/emoticons/crystal/lol.png +0 -0
- data/data/webgen/resources/emoticons/crystal/oops.png +0 -0
- data/data/webgen/resources/emoticons/crystal/sad.png +0 -0
- data/data/webgen/resources/emoticons/crystal/sleep.png +0 -0
- data/data/webgen/resources/emoticons/crystal/smile.png +0 -0
- data/data/webgen/resources/emoticons/crystal/tongue.png +0 -0
- data/data/webgen/resources/emoticons/crystal/wink.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/angry.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/cool.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/cry.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/drunk.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/lol.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/oops.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/sad.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/sleep.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/smile.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/tongue.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/wink.png +0 -0
- data/data/webgen/resources/emoticons/glass/angry.png +0 -0
- data/data/webgen/resources/emoticons/glass/cool.png +0 -0
- data/data/webgen/resources/emoticons/glass/cry.png +0 -0
- data/data/webgen/resources/emoticons/glass/drunk.png +0 -0
- data/data/webgen/resources/emoticons/glass/lol.png +0 -0
- data/data/webgen/resources/emoticons/glass/oops.png +0 -0
- data/data/webgen/resources/emoticons/glass/sad.png +0 -0
- data/data/webgen/resources/emoticons/glass/sleep.png +0 -0
- data/data/webgen/resources/emoticons/glass/smile.png +0 -0
- data/data/webgen/resources/emoticons/glass/tongue.png +0 -0
- data/data/webgen/resources/emoticons/glass/wink.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/angry.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/cool.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/cry.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/drunk.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/lol.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/oops.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/sad.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/sleep.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/smile.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/tongue.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/wink.png +0 -0
- data/data/webgen/resources/emoticons/matrix/angry.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/cool.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/cry.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/drunk.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/lol.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/oops.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/sad.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/sleep.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/smile.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/tongue.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/wink.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/angry.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/cool.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/cry.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/drunk.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/lol.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/oops.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/sad.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/sleep.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/smile.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/tongue.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/wink.gif +0 -0
- data/data/webgen/resources/icons/compressed.png +0 -0
- data/data/webgen/resources/icons/document.png +0 -0
- data/data/webgen/resources/icons/download.png +0 -0
- data/data/webgen/resources/icons/image.png +0 -0
- data/data/webgen/resources/icons/linux.png +0 -0
- data/data/webgen/resources/icons/mac.png +0 -0
- data/data/webgen/resources/icons/pdf.png +0 -0
- data/data/webgen/resources/icons/penguin.png +0 -0
- data/data/webgen/resources/icons/quicktime.png +0 -0
- data/data/webgen/resources/icons/real.png +0 -0
- data/data/webgen/resources/icons/rpm.png +0 -0
- data/data/webgen/resources/icons/sound.png +0 -0
- data/data/webgen/resources/icons/source.png +0 -0
- data/data/webgen/resources/icons/spreadsheet.png +0 -0
- data/data/webgen/resources/icons/text.png +0 -0
- data/data/webgen/resources/icons/vcard.png +0 -0
- data/data/webgen/resources/icons/video.png +0 -0
- data/data/webgen/resources/icons/win.png +0 -0
- data/data/webgen/resources/images/generated_by_webgen.png +0 -0
- data/data/webgen/resources/images/valid-css.gif +0 -0
- data/data/webgen/resources/images/valid-xhtml11.png +0 -0
- data/data/webgen/resources/images/webgen_logo.png +0 -0
- data/data/webgen/sipttra_styles/default/README +0 -7
- data/data/webgen/sipttra_styles/default/css/sipttra.rcss +0 -71
- data/data/webgen/sipttra_styles/default/js/sipttra.js +0 -7
- data/data/webgen/sipttra_styles/default/sipttra.template +0 -105
- data/data/webgen/website_styles/andreas00/default.template +0 -62
- data/data/webgen/website_styles/andreas01/default.template +0 -63
- data/data/webgen/website_styles/andreas06/default.template +0 -72
- data/data/webgen/website_styles/andreas07/default.template +0 -44
- data/data/webgen/website_styles/andreas08/default.template +0 -53
- data/data/webgen/website_styles/default/default.template +0 -38
- data/data/webgen/website_templates/personal_hp/README +0 -8
- data/data/webgen/website_templates/personal_hp/src/about.page +0 -12
- data/data/webgen/website_templates/personal_hp/src/index.page +0 -9
- data/data/webgen/website_templates/personal_hp/src/links.page +0 -22
- data/data/webgen/website_templates/personal_hp/src/projects.page +0 -20
- data/doc/config.yaml +0 -8
- data/doc/examples/website_styles/1024px/README +0 -9
- data/doc/examples/website_styles/1024px/config.yaml +0 -2
- data/doc/examples/website_styles/1024px/src/about.page +0 -12
- data/doc/examples/website_styles/1024px/src/default.css +0 -188
- data/doc/examples/website_styles/1024px/src/default.template +0 -62
- data/doc/examples/website_styles/1024px/src/download.page +0 -15
- data/doc/examples/website_styles/1024px/src/features.page +0 -8
- data/doc/examples/website_styles/1024px/src/images/background.gif +0 -0
- data/doc/examples/website_styles/1024px/src/index.page +0 -9
- data/doc/examples/website_styles/1024px/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas00/README +0 -9
- data/doc/examples/website_styles/andreas00/config.yaml +0 -2
- data/doc/examples/website_styles/andreas00/src/about.page +0 -12
- data/doc/examples/website_styles/andreas00/src/default.css +0 -290
- data/doc/examples/website_styles/andreas00/src/download.page +0 -15
- data/doc/examples/website_styles/andreas00/src/features.page +0 -8
- data/doc/examples/website_styles/andreas00/src/images/bg.gif +0 -0
- data/doc/examples/website_styles/andreas00/src/images/front.jpg +0 -0
- data/doc/examples/website_styles/andreas00/src/images/menubg.gif +0 -0
- data/doc/examples/website_styles/andreas00/src/images/menubg2.gif +0 -0
- data/doc/examples/website_styles/andreas00/src/index.page +0 -9
- data/doc/examples/website_styles/andreas00/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas01/README +0 -9
- data/doc/examples/website_styles/andreas01/config.yaml +0 -2
- data/doc/examples/website_styles/andreas01/src/about.page +0 -12
- data/doc/examples/website_styles/andreas01/src/default.css +0 -310
- data/doc/examples/website_styles/andreas01/src/download.page +0 -15
- data/doc/examples/website_styles/andreas01/src/features.page +0 -8
- data/doc/examples/website_styles/andreas01/src/images/bg.gif +0 -0
- data/doc/examples/website_styles/andreas01/src/images/front.jpg +0 -0
- data/doc/examples/website_styles/andreas01/src/index.page +0 -9
- data/doc/examples/website_styles/andreas01/src/print.css +0 -35
- data/doc/examples/website_styles/andreas01/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas03/README +0 -9
- data/doc/examples/website_styles/andreas03/config.yaml +0 -2
- data/doc/examples/website_styles/andreas03/src/about.page +0 -12
- data/doc/examples/website_styles/andreas03/src/default.css +0 -223
- data/doc/examples/website_styles/andreas03/src/default.template +0 -60
- data/doc/examples/website_styles/andreas03/src/download.page +0 -15
- data/doc/examples/website_styles/andreas03/src/features.page +0 -8
- data/doc/examples/website_styles/andreas03/src/images/bodybg.png +0 -0
- data/doc/examples/website_styles/andreas03/src/images/contbg.png +0 -0
- data/doc/examples/website_styles/andreas03/src/images/footerbg.png +0 -0
- data/doc/examples/website_styles/andreas03/src/images/gradient1.png +0 -0
- data/doc/examples/website_styles/andreas03/src/images/gradient2.png +0 -0
- data/doc/examples/website_styles/andreas03/src/index.page +0 -9
- data/doc/examples/website_styles/andreas03/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas04/README +0 -9
- data/doc/examples/website_styles/andreas04/config.yaml +0 -2
- data/doc/examples/website_styles/andreas04/src/about.page +0 -12
- data/doc/examples/website_styles/andreas04/src/default.css +0 -290
- data/doc/examples/website_styles/andreas04/src/default.template +0 -83
- data/doc/examples/website_styles/andreas04/src/download.page +0 -15
- data/doc/examples/website_styles/andreas04/src/features.page +0 -8
- data/doc/examples/website_styles/andreas04/src/images/blinkarrow.gif +0 -0
- data/doc/examples/website_styles/andreas04/src/images/bodybg.png +0 -0
- data/doc/examples/website_styles/andreas04/src/images/contentbg.png +0 -0
- data/doc/examples/website_styles/andreas04/src/images/entrybg.png +0 -0
- data/doc/examples/website_styles/andreas04/src/images/flash.gif +0 -0
- data/doc/examples/website_styles/andreas04/src/images/flash2.gif +0 -0
- data/doc/examples/website_styles/andreas04/src/images/globe.gif +0 -0
- data/doc/examples/website_styles/andreas04/src/images/globebottom.gif +0 -0
- data/doc/examples/website_styles/andreas04/src/images/linkarrow.gif +0 -0
- data/doc/examples/website_styles/andreas04/src/images/menuhover.png +0 -0
- data/doc/examples/website_styles/andreas04/src/index.page +0 -9
- data/doc/examples/website_styles/andreas04/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas05/README +0 -9
- data/doc/examples/website_styles/andreas05/config.yaml +0 -2
- data/doc/examples/website_styles/andreas05/src/about.page +0 -12
- data/doc/examples/website_styles/andreas05/src/default.css +0 -33
- data/doc/examples/website_styles/andreas05/src/default.template +0 -42
- data/doc/examples/website_styles/andreas05/src/download.page +0 -15
- data/doc/examples/website_styles/andreas05/src/features.page +0 -8
- data/doc/examples/website_styles/andreas05/src/images/bodybg.gif +0 -0
- data/doc/examples/website_styles/andreas05/src/images/front.png +0 -0
- data/doc/examples/website_styles/andreas05/src/index.page +0 -9
- data/doc/examples/website_styles/andreas05/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas06/README +0 -9
- data/doc/examples/website_styles/andreas06/config.yaml +0 -2
- data/doc/examples/website_styles/andreas06/src/about.page +0 -12
- data/doc/examples/website_styles/andreas06/src/default.css +0 -354
- data/doc/examples/website_styles/andreas06/src/download.page +0 -15
- data/doc/examples/website_styles/andreas06/src/features.page +0 -8
- data/doc/examples/website_styles/andreas06/src/images/bodybg.gif +0 -0
- data/doc/examples/website_styles/andreas06/src/images/boxbg.gif +0 -0
- data/doc/examples/website_styles/andreas06/src/images/greypx.gif +0 -0
- data/doc/examples/website_styles/andreas06/src/images/header.jpg +0 -0
- data/doc/examples/website_styles/andreas06/src/images/innerbg.gif +0 -0
- data/doc/examples/website_styles/andreas06/src/images/leaves.jpg +0 -0
- data/doc/examples/website_styles/andreas06/src/images/tabs.gif +0 -0
- data/doc/examples/website_styles/andreas06/src/index.page +0 -9
- data/doc/examples/website_styles/andreas06/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas07/README +0 -9
- data/doc/examples/website_styles/andreas07/config.yaml +0 -2
- data/doc/examples/website_styles/andreas07/src/about.page +0 -12
- data/doc/examples/website_styles/andreas07/src/browserfix.css +0 -7
- data/doc/examples/website_styles/andreas07/src/default.css +0 -92
- data/doc/examples/website_styles/andreas07/src/download.page +0 -15
- data/doc/examples/website_styles/andreas07/src/features.page +0 -8
- data/doc/examples/website_styles/andreas07/src/images/bodybg.gif +0 -0
- data/doc/examples/website_styles/andreas07/src/images/sidebarbg.gif +0 -0
- data/doc/examples/website_styles/andreas07/src/index.page +0 -9
- data/doc/examples/website_styles/andreas07/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas08/README +0 -9
- data/doc/examples/website_styles/andreas08/config.yaml +0 -2
- data/doc/examples/website_styles/andreas08/src/about.page +0 -12
- data/doc/examples/website_styles/andreas08/src/default.css +0 -224
- data/doc/examples/website_styles/andreas08/src/download.page +0 -15
- data/doc/examples/website_styles/andreas08/src/features.page +0 -8
- data/doc/examples/website_styles/andreas08/src/index.page +0 -9
- data/doc/examples/website_styles/andreas08/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas09/README +0 -9
- data/doc/examples/website_styles/andreas09/config.yaml +0 -2
- data/doc/examples/website_styles/andreas09/src/about.page +0 -12
- data/doc/examples/website_styles/andreas09/src/default.css +0 -308
- data/doc/examples/website_styles/andreas09/src/default.template +0 -70
- data/doc/examples/website_styles/andreas09/src/download.page +0 -15
- data/doc/examples/website_styles/andreas09/src/features.page +0 -8
- data/doc/examples/website_styles/andreas09/src/images/bodybg-black.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/bodybg-green.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/bodybg-orange.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/bodybg-purple.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/bodybg-red.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/bodybg.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/footerbg.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/menuhover-black.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/menuhover-green.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/menuhover-orange.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/menuhover-purple.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/menuhover-red.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/menuhover.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/index.page +0 -9
- data/doc/examples/website_styles/andreas09/src/screenshots.page +0 -18
- data/doc/examples/website_styles/default/README +0 -9
- data/doc/examples/website_styles/default/config.yaml +0 -2
- data/doc/examples/website_styles/default/src/about.page +0 -12
- data/doc/examples/website_styles/default/src/default.css +0 -84
- data/doc/examples/website_styles/default/src/download.page +0 -15
- data/doc/examples/website_styles/default/src/features.page +0 -8
- data/doc/examples/website_styles/default/src/index.page +0 -9
- data/doc/examples/website_styles/default/src/screenshots.page +0 -18
- data/doc/examples/website_templates/default/README +0 -8
- data/doc/examples/website_templates/default/config.yaml +0 -2
- data/doc/examples/website_templates/default/src/default.css +0 -84
- data/doc/examples/website_templates/default/src/default.template +0 -38
- data/doc/examples/website_templates/default/src/index.page +0 -8
- data/doc/examples/website_templates/personal_hp/README +0 -8
- data/doc/examples/website_templates/personal_hp/config.yaml +0 -2
- data/doc/examples/website_templates/personal_hp/src/about.page +0 -12
- data/doc/examples/website_templates/personal_hp/src/default.css +0 -84
- data/doc/examples/website_templates/personal_hp/src/default.template +0 -38
- data/doc/examples/website_templates/personal_hp/src/index.page +0 -9
- data/doc/examples/website_templates/personal_hp/src/links.page +0 -22
- data/doc/examples/website_templates/personal_hp/src/projects.page +0 -20
- data/doc/examples/website_templates/project/README +0 -9
- data/doc/examples/website_templates/project/config.yaml +0 -2
- data/doc/examples/website_templates/project/src/about.page +0 -12
- data/doc/examples/website_templates/project/src/default.css +0 -84
- data/doc/examples/website_templates/project/src/default.template +0 -38
- data/doc/examples/website_templates/project/src/download.page +0 -15
- data/doc/examples/website_templates/project/src/features.page +0 -8
- data/doc/examples/website_templates/project/src/index.page +0 -9
- data/doc/examples/website_templates/project/src/screenshots.page +0 -18
- data/doc/metainfo.yaml +0 -105
- data/doc/plugin/emoticon.rb +0 -27
- data/doc/plugin/extension.rb +0 -163
- data/doc/plugin/gallery/slides/collage.rb +0 -337
- data/doc/plugin/listpluginparameters.rb +0 -37
- data/doc/plugin/resources.rb +0 -28
- data/doc/src/css/sipttra.rcss +0 -71
- data/doc/src/default.css +0 -434
- data/doc/src/default.template +0 -125
- data/doc/src/documentation/basics.page +0 -148
- data/doc/src/documentation/extending_webgen.page +0 -104
- data/doc/src/documentation/howto.page +0 -221
- data/doc/src/documentation/index.page +0 -50
- data/doc/src/documentation/plugins/contentconverter/default.page +0 -16
- data/doc/src/documentation/plugins/contentconverter/haml.page +0 -21
- data/doc/src/documentation/plugins/contentconverter/html.page +0 -10
- data/doc/src/documentation/plugins/contentconverter/markdown.page +0 -21
- data/doc/src/documentation/plugins/contentconverter/maruku.page +0 -23
- data/doc/src/documentation/plugins/contentconverter/rdoc.page +0 -11
- data/doc/src/documentation/plugins/contentconverter/sass.page +0 -36
- data/doc/src/documentation/plugins/contentconverter/textile.page +0 -21
- data/doc/src/documentation/plugins/contentconverter/xmlbuilder.page +0 -61
- data/doc/src/documentation/plugins/core/configuration.page +0 -17
- data/doc/src/documentation/plugins/core/filehandler.page +0 -220
- data/doc/src/documentation/plugins/core/index.page +0 -11
- data/doc/src/documentation/plugins/core/resourcemanager.page +0 -40
- data/doc/src/documentation/plugins/core/tagprocessor.page +0 -17
- data/doc/src/documentation/plugins/file/copyhandler.page +0 -26
- data/doc/src/documentation/plugins/file/defaulthandler.page +0 -16
- data/doc/src/documentation/plugins/file/directoryhandler.page +0 -37
- data/doc/src/documentation/plugins/file/galleryhandler.page +0 -190
- data/doc/src/documentation/plugins/file/pagehandler.page +0 -154
- data/doc/src/documentation/plugins/file/sipttrahandler.page +0 -18
- data/doc/src/documentation/plugins/file/templatehandler.page +0 -51
- data/doc/src/documentation/plugins/file/thumbnailwriter.page +0 -42
- data/doc/src/documentation/plugins/htmlvalidator/default.page +0 -13
- data/doc/src/documentation/plugins/htmlvalidator/xmllint.page +0 -12
- data/doc/src/documentation/plugins/index.page +0 -53
- data/doc/src/documentation/plugins/menustyle/default.page +0 -20
- data/doc/src/documentation/plugins/menustyle/horizontal.page +0 -36
- data/doc/src/documentation/plugins/menustyle/horizontaldropdown.page +0 -48
- data/doc/src/documentation/plugins/menustyle/section.page +0 -34
- data/doc/src/documentation/plugins/menustyle/vertical.page +0 -48
- data/doc/src/documentation/plugins/menustyle/verticaldropdown.page +0 -29
- data/doc/src/documentation/plugins/misc/index.page +0 -9
- data/doc/src/documentation/plugins/misc/smileyreplacer.page +0 -39
- data/doc/src/documentation/plugins/misc/syntaxhighlighter.page +0 -26
- data/doc/src/documentation/plugins/tag/block.page +0 -29
- data/doc/src/documentation/plugins/tag/breadcrumbtrail.page +0 -41
- data/doc/src/documentation/plugins/tag/customvar.page +0 -11
- data/doc/src/documentation/plugins/tag/date.page +0 -34
- data/doc/src/documentation/plugins/tag/default.page +0 -28
- data/doc/src/documentation/plugins/tag/download.page +0 -60
- data/doc/src/documentation/plugins/tag/executecommand.page +0 -29
- data/doc/src/documentation/plugins/tag/htmlmetainfo.page +0 -32
- data/doc/src/documentation/plugins/tag/includefile.page +0 -30
- data/doc/src/documentation/plugins/tag/langbar.de.page +0 -6
- data/doc/src/documentation/plugins/tag/langbar.fr.page +0 -6
- data/doc/src/documentation/plugins/tag/langbar.page +0 -41
- data/doc/src/documentation/plugins/tag/menu.page +0 -78
- data/doc/src/documentation/plugins/tag/meta.page +0 -21
- data/doc/src/documentation/plugins/tag/news.page +0 -48
- data/doc/src/documentation/plugins/tag/relocatable.page +0 -46
- data/doc/src/documentation/plugins/tag/resource.page +0 -35
- data/doc/src/documentation/plugins/tag/sitemap.page +0 -35
- data/doc/src/documentation/plugins/tag/wikilink.page +0 -33
- data/doc/src/documentation/references/index.page +0 -34
- data/doc/src/documentation/references/meta_info_reference.page +0 -136
- data/doc/src/documentation/references/parameter_reference.page +0 -11
- data/doc/src/documentation/references/resource_reference.page +0 -18
- data/doc/src/documentation/references/sipttra_format.page +0 -241
- data/doc/src/documentation/references/webpage_format.page +0 -253
- data/doc/src/documentation/tutorial.page +0 -167
- data/doc/src/download.page +0 -74
- data/doc/src/examples/example_sites/index.page +0 -45
- data/doc/src/examples/example_sites/personal.zip +0 -0
- data/doc/src/examples/example_sites/photo_gallery.zip +0 -0
- data/doc/src/examples/gallery_styles/default/default.gallery +0 -78
- data/doc/src/examples/gallery_styles/default/gallery_gallery.template +0 -38
- data/doc/src/examples/gallery_styles/default/gallery_image.template +0 -30
- data/doc/src/examples/gallery_styles/default/gallery_main.template +0 -18
- data/doc/src/examples/gallery_styles/index.page +0 -22
- data/doc/src/examples/gallery_styles/slides/gallery_gallery.template +0 -62
- data/doc/src/examples/gallery_styles/slides/gallery_image.template +0 -53
- data/doc/src/examples/gallery_styles/slides/gallery_main.template +0 -32
- data/doc/src/examples/gallery_styles/slides/slides.gallery +0 -79
- data/doc/src/examples/images/image01.jpg +0 -0
- data/doc/src/examples/images/image02.jpg +0 -0
- data/doc/src/examples/images/image03.jpg +0 -0
- data/doc/src/examples/images/image04.jpg +0 -0
- data/doc/src/examples/images/image05.jpg +0 -0
- data/doc/src/examples/images/image06.jpg +0 -0
- data/doc/src/examples/images/image07.jpg +0 -0
- data/doc/src/examples/images/image08.jpg +0 -0
- data/doc/src/examples/images/image09.jpg +0 -0
- data/doc/src/examples/images/image10.jpg +0 -0
- data/doc/src/examples/images/image11.jpg +0 -0
- data/doc/src/examples/images/image12.jpg +0 -0
- data/doc/src/examples/images/image13.jpg +0 -0
- data/doc/src/examples/images/image14.jpg +0 -0
- data/doc/src/examples/images/image15.jpg +0 -0
- data/doc/src/examples/images/image16.jpg +0 -0
- data/doc/src/examples/images/image17.jpg +0 -0
- data/doc/src/examples/images/image18.jpg +0 -0
- data/doc/src/examples/index.page +0 -19
- data/doc/src/examples/sipttra_styles/default.page +0 -5
- data/doc/src/examples/sipttra_styles/default/css/sipttra.rcss +0 -71
- data/doc/src/examples/sipttra_styles/default/default.template +0 -16
- data/doc/src/examples/sipttra_styles/default/index.todo +0 -60
- data/doc/src/examples/sipttra_styles/default/js/sipttra.js +0 -7
- data/doc/src/examples/sipttra_styles/default/sipttra.template +0 -105
- data/doc/src/examples/sipttra_styles/index.page +0 -17
- data/doc/src/examples/website_styles/1024px.page +0 -5
- data/doc/src/examples/website_styles/andreas00.page +0 -5
- data/doc/src/examples/website_styles/andreas01.page +0 -5
- data/doc/src/examples/website_styles/andreas03.page +0 -5
- data/doc/src/examples/website_styles/andreas04.page +0 -5
- data/doc/src/examples/website_styles/andreas05.page +0 -5
- data/doc/src/examples/website_styles/andreas06.page +0 -5
- data/doc/src/examples/website_styles/andreas07.page +0 -5
- data/doc/src/examples/website_styles/andreas08.page +0 -5
- data/doc/src/examples/website_styles/andreas09.page +0 -5
- data/doc/src/examples/website_styles/default.page +0 -5
- data/doc/src/examples/website_styles/index.page +0 -76
- data/doc/src/examples/website_templates/default.page +0 -5
- data/doc/src/examples/website_templates/index.page +0 -24
- data/doc/src/examples/website_templates/personal_hp.page +0 -5
- data/doc/src/examples/website_templates/project.page +0 -5
- data/doc/src/features.page +0 -41
- data/doc/src/images/bodybg.jpg +0 -0
- data/doc/src/images/footerbg.jpg +0 -0
- data/doc/src/images/menuhover.jpg +0 -0
- data/doc/src/images/node_diagram.svg +0 -7132
- data/doc/src/images/thumb_example.jpg +0 -0
- data/doc/src/images/thumb_example_cropped.jpg +0 -0
- data/doc/src/images/thumb_example_normal.jpg +0 -0
- data/doc/src/index.page +0 -32
- data/doc/src/js/sipttra.js +0 -7
- data/doc/src/news.page +0 -256
- data/doc/src/plugin.template +0 -10
- data/doc/src/project.todo +0 -144
- data/doc/src/sipttra.template +0 -105
- data/lib/webgen/composite.rb +0 -101
- data/lib/webgen/config.rb +0 -52
- data/lib/webgen/content.rb +0 -172
- data/lib/webgen/extcommand.rb +0 -23
- data/lib/webgen/gui/common.rb +0 -38
- data/lib/webgen/gui/main.rb +0 -219
- data/lib/webgen/gui/new_website_dlg.rb +0 -125
- data/lib/webgen/listener.rb +0 -105
- data/lib/webgen/plugin.rb +0 -578
- data/lib/webgen/plugins/contentconverters/default.rb +0 -40
- data/lib/webgen/plugins/contentconverters/haml.rb +0 -71
- data/lib/webgen/plugins/contentconverters/html.rb +0 -43
- data/lib/webgen/plugins/contentconverters/markdown.rb +0 -54
- data/lib/webgen/plugins/contentconverters/maruku.rb +0 -33
- data/lib/webgen/plugins/contentconverters/rdoc.rb +0 -54
- data/lib/webgen/plugins/contentconverters/textile.rb +0 -54
- data/lib/webgen/plugins/contentconverters/xmlbuilder.rb +0 -58
- data/lib/webgen/plugins/coreplugins/configuration.rb +0 -45
- data/lib/webgen/plugins/coreplugins/resourcemanager.rb +0 -307
- data/lib/webgen/plugins/filehandlers/copy.rb +0 -82
- data/lib/webgen/plugins/filehandlers/directory.rb +0 -126
- data/lib/webgen/plugins/filehandlers/filehandler.rb +0 -486
- data/lib/webgen/plugins/filehandlers/gallery.rb +0 -486
- data/lib/webgen/plugins/filehandlers/page.rb +0 -255
- data/lib/webgen/plugins/filehandlers/sipttra.rb +0 -73
- data/lib/webgen/plugins/filehandlers/template.rb +0 -115
- data/lib/webgen/plugins/htmlvalidators/default.rb +0 -39
- data/lib/webgen/plugins/htmlvalidators/xmllint.rb +0 -54
- data/lib/webgen/plugins/menustyles/default.rb +0 -80
- data/lib/webgen/plugins/menustyles/horizontal.rb +0 -85
- data/lib/webgen/plugins/menustyles/horizontal_dropdown.rb +0 -99
- data/lib/webgen/plugins/menustyles/section.rb +0 -68
- data/lib/webgen/plugins/menustyles/vertical.rb +0 -87
- data/lib/webgen/plugins/menustyles/vertical_dropdown.rb +0 -99
- data/lib/webgen/plugins/miscplugins/rendered_files.rb +0 -75
- data/lib/webgen/plugins/miscplugins/smileyreplacer.rb +0 -87
- data/lib/webgen/plugins/miscplugins/syntax_highlighter.rb +0 -72
- data/lib/webgen/plugins/miscplugins/treewalker.rb +0 -91
- data/lib/webgen/plugins/tags/block.rb +0 -65
- data/lib/webgen/plugins/tags/breadcrumbtrail.rb +0 -75
- data/lib/webgen/plugins/tags/customvar.rb +0 -54
- data/lib/webgen/plugins/tags/date.rb +0 -46
- data/lib/webgen/plugins/tags/download.rb +0 -155
- data/lib/webgen/plugins/tags/executecommand.rb +0 -69
- data/lib/webgen/plugins/tags/htmlmetainfo.rb +0 -27
- data/lib/webgen/plugins/tags/includefile.rb +0 -69
- data/lib/webgen/plugins/tags/langbar.rb +0 -55
- data/lib/webgen/plugins/tags/menu.rb +0 -111
- data/lib/webgen/plugins/tags/meta.rb +0 -53
- data/lib/webgen/plugins/tags/news.rb +0 -151
- data/lib/webgen/plugins/tags/relocatable.rb +0 -94
- data/lib/webgen/plugins/tags/sitemap.rb +0 -82
- data/lib/webgen/plugins/tags/tag_processor.rb +0 -279
- data/lib/webgen/plugins/tags/wikilink.rb +0 -62
- data/lib/webgen/rake/webgentask.rb +0 -161
- data/lib/webgen/sipttra_format.rb +0 -343
- data/lib/webgen/test.rb +0 -202
- data/test/fixtures/sample_site/src/chained.template +0 -3
- data/test/fixtures/sample_site/src/default.template +0 -3
- data/test/fixtures/sample_site/src/dir1/dir11/file111.de.page +0 -3
- data/test/fixtures/sample_site/src/dir1/dir11/file111.page +0 -3
- data/test/fixtures/sample_site/src/dir1/dir11/index.page +0 -3
- data/test/fixtures/sample_site/src/dir1/file11.page +0 -3
- data/test/fixtures/sample_site/src/dir2/file21.page +0 -3
- data/test/fixtures/sample_site/src/embedded.rhtml +0 -1
- data/test/fixtures/sample_site/src/file1.page +0 -8
- data/test/fixtures/sample_site/src/file2.de.page +0 -6
- data/test/fixtures/sample_site/src/index.de.page +0 -5
- data/test/fixtures/sample_site/src/index.en.page +0 -1
- data/test/fixtures/sample_site/src/invalid.template +0 -3
- data/test/fixtures/sample_site/src/test.jpg +0 -1
- data/test/fixtures/sample_site/src/test.template +0 -3
- data/test/fixtures/sample_site/src/test.todo +0 -7
- data/test/fixtures/tc_content/blocks.yaml +0 -40
- data/test/fixtures/tc_content/correct.yaml +0 -65
- data/test/fixtures/tc_content/incorrect.yaml +0 -42
- data/test/fixtures/tc_filehandler_filehandler/backing/metainfo.yaml +0 -9
- data/test/fixtures/tc_filehandler_filehandler/backing_empty/metainfo.yaml +0 -6
- data/test/fixtures/tc_filehandler_filehandler/sample_plugin.rb +0 -49
- data/test/fixtures/tc_filehandler_filehandler/unmodified +0 -0
- data/test/fixtures/tc_filehandler_gallery/test.gallery +0 -2
- data/test/fixtures/tc_filehandler_gallery/test1.gallery +0 -2
- data/test/fixtures/tc_filehandler_gallery/test1.jpg +0 -0
- data/test/fixtures/tc_filehandler_gallery/test2.jpg +0 -0
- data/test/fixtures/tc_filehandler_gallery/test3.jpg +0 -0
- data/test/fixtures/tc_filehandler_gallery/test4.jpg +0 -0
- data/test/fixtures/tc_filehandler_page/testdata.yaml +0 -10
- data/test/fixtures/tc_menustyles_default/menustyle.rb +0 -7
- data/test/fixtures/tc_node/nodes.yaml +0 -64
- data/test/fixtures/tc_plugin/handlerplugin.rb +0 -15
- data/test/fixtures/tc_plugin/plugin1.rb +0 -35
- data/test/fixtures/tc_plugin/plugin2.rb +0 -8
- data/test/fixtures/tc_sipttra_format/test.sipttra +0 -46
- data/test/fixtures/tc_tags_includefile/testfile +0 -1
- data/test/fixtures/tc_tags_tag_processor/test_file1 +0 -1
- data/test/fixtures/tc_tags_tag_processor/testtag.rb +0 -17
- data/test/fixtures/tc_website/correct.yaml +0 -6
- data/test/fixtures/tc_website/incorrect_structure.yaml +0 -2
- data/test/fixtures/tc_website/incorrect_yaml.yaml +0 -5
- data/test/fixtures/tc_website/meta_info_test.yaml +0 -10
- data/test/fixtures/tc_website/testdir/README +0 -1
- data/test/fixtures/tc_website/testdir/falsedir/README +0 -1
- data/test/runtests.rb +0 -2
- data/test/unittests/tc_composite.rb +0 -82
- data/test/unittests/tc_config.rb +0 -18
- data/test/unittests/tc_content.rb +0 -96
- data/test/unittests/tc_contentconverters_default.rb +0 -13
- data/test/unittests/tc_contentconverters_html.rb +0 -16
- data/test/unittests/tc_contentconverters_markdown.rb +0 -22
- data/test/unittests/tc_contentconverters_rdoc.rb +0 -16
- data/test/unittests/tc_contentconverters_textile.rb +0 -22
- data/test/unittests/tc_contentconverters_xmlbuilder.rb +0 -22
- data/test/unittests/tc_filehandler_copy.rb +0 -65
- data/test/unittests/tc_filehandler_directory.rb +0 -134
- data/test/unittests/tc_filehandler_filehandler.rb +0 -294
- data/test/unittests/tc_filehandler_gallery.rb +0 -165
- data/test/unittests/tc_filehandler_page.rb +0 -183
- data/test/unittests/tc_filehandler_sipttra.rb +0 -26
- data/test/unittests/tc_filehandler_template.rb +0 -64
- data/test/unittests/tc_htmlvalidators_default.rb +0 -12
- data/test/unittests/tc_htmlvalidators_xmllint.rb +0 -19
- data/test/unittests/tc_languages.rb +0 -57
- data/test/unittests/tc_listener.rb +0 -72
- data/test/unittests/tc_menustyles_default.rb +0 -51
- data/test/unittests/tc_menustyles_horizontal.rb +0 -64
- data/test/unittests/tc_menustyles_horizontal_dropdown.rb +0 -18
- data/test/unittests/tc_menustyles_section.rb +0 -59
- data/test/unittests/tc_menustyles_vertical.rb +0 -79
- data/test/unittests/tc_menustyles_vertical_dropdown.rb +0 -18
- data/test/unittests/tc_node.rb +0 -205
- data/test/unittests/tc_plugin.rb +0 -221
- data/test/unittests/tc_resourcemanager.rb +0 -42
- data/test/unittests/tc_sipttra_format.rb +0 -58
- data/test/unittests/tc_smileyreplacer.rb +0 -25
- data/test/unittests/tc_syntax_highlighter.rb +0 -30
- data/test/unittests/tc_tags_block.rb +0 -27
- data/test/unittests/tc_tags_breadcrumbtrail.rb +0 -56
- data/test/unittests/tc_tags_customvar.rb +0 -24
- data/test/unittests/tc_tags_date.rb +0 -16
- data/test/unittests/tc_tags_download.rb +0 -32
- data/test/unittests/tc_tags_executecommand.rb +0 -37
- data/test/unittests/tc_tags_includefile.rb +0 -46
- data/test/unittests/tc_tags_langbar.rb +0 -42
- data/test/unittests/tc_tags_menu.rb +0 -50
- data/test/unittests/tc_tags_meta.rb +0 -19
- data/test/unittests/tc_tags_relocatable.rb +0 -66
- data/test/unittests/tc_tags_sitemap.rb +0 -33
- data/test/unittests/tc_tags_tag_processor.rb +0 -107
- data/test/unittests/tc_tags_wikilink.rb +0 -22
- data/test/unittests/tc_treewalker.rb +0 -51
- data/test/unittests/tc_website.rb +0 -188
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'webgen/websiteaccess'
|
|
2
|
+
|
|
3
|
+
module Webgen
|
|
4
|
+
|
|
5
|
+
# This module should be included in all classes that need a logging facility.
|
|
6
|
+
module Loggable
|
|
7
|
+
|
|
8
|
+
# Log the result of the +block+ using the log level +log_level+.
|
|
9
|
+
def log(sev_level, &block)
|
|
10
|
+
source = (self.kind_of?(Class) ? self.name : self.class.name) + '#' + caller[0][%r"`.*"][1..-2]
|
|
11
|
+
if WebsiteAccess.website && WebsiteAccess.website.logger && (!WebsiteAccess.website.config['logger.mask'] || source =~ WebsiteAccess.website.config['logger.mask'])
|
|
12
|
+
WebsiteAccess.website.logger.send(sev_level, source, &block)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Shortcut for writing a line to the normal log output.
|
|
17
|
+
def puts(*args)
|
|
18
|
+
(args.last == :verbose ? log(:verbose) { args[0..-2].join } : log(:stdout) { args.join })
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
require 'stringio'
|
|
2
|
+
require 'logger'
|
|
3
|
+
|
|
4
|
+
module Webgen
|
|
5
|
+
|
|
6
|
+
# The class used by a Website to do the logging and the normal output.
|
|
7
|
+
class Logger
|
|
8
|
+
|
|
9
|
+
# Specifies whether log output should be synchronous with normal output.
|
|
10
|
+
attr_reader :sync
|
|
11
|
+
|
|
12
|
+
# Normal output verbosity (:normal, :verbose, :quiet).
|
|
13
|
+
attr_accessor :verbosity
|
|
14
|
+
|
|
15
|
+
# Create a new Logger object which uses +outdev+ as output device. If +sync+ is set to +true+,
|
|
16
|
+
# log messages are interspersed with normal output.
|
|
17
|
+
def initialize(outdev=$stdout, sync=false)
|
|
18
|
+
@sync = sync
|
|
19
|
+
@outdev = outdev
|
|
20
|
+
@logger = (@sync ? ::Logger.new(@outdev) : ::Logger.new(@logio = StringIO.new))
|
|
21
|
+
@logger.formatter = Proc.new do |severity, timestamp, progname, msg|
|
|
22
|
+
if self.level == ::Logger::DEBUG
|
|
23
|
+
"%5s -- %s: %s\n" % [severity, progname, msg ]
|
|
24
|
+
else
|
|
25
|
+
"%5s -- %s\n" % [severity, msg]
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
self.level = ::Logger::WARN
|
|
29
|
+
self.verbosity = :normal
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Returns the output of the logger when #sync is +false+. Otherwise an empty string is returned.
|
|
33
|
+
def log_output
|
|
34
|
+
@sync ? '' : @logio.string
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# The severity threshold level.
|
|
38
|
+
def level
|
|
39
|
+
@logger.level
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Set the severity threshold to +value+ which can be one of the stdlib Logger severity levels.
|
|
43
|
+
def level=(value)
|
|
44
|
+
@logger.level = value
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Log a message of +sev_level+ from +source+. The mandatory block has to return the message.
|
|
48
|
+
def log(sev_level, source='', &block)
|
|
49
|
+
if sev_level == :stdout
|
|
50
|
+
@outdev.write(block.call + "\n") if @verbosity == :normal || @verbosity == :verbose
|
|
51
|
+
elsif sev_level == :verbose
|
|
52
|
+
@outdev.write(block.call + "\n") if @verbosity == :verbose
|
|
53
|
+
else
|
|
54
|
+
@logger.send(sev_level, source, &block)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Utiltity method for logging an error message.
|
|
59
|
+
def error(source='', &block); log(:error, source, &block); end
|
|
60
|
+
|
|
61
|
+
# Utiltity method for logging a warning message.
|
|
62
|
+
def warn(source='', &block); log(:warn, source, &block); end
|
|
63
|
+
|
|
64
|
+
# Utiltity method for logging an informational message.
|
|
65
|
+
def info(source='', &block); log(:info, source, &block); end
|
|
66
|
+
|
|
67
|
+
# Utiltity method for logging a debug message.
|
|
68
|
+
def debug(source='', &block); log(:debug, source, &block); end
|
|
69
|
+
|
|
70
|
+
# Utiltity method for writing a normal output message.
|
|
71
|
+
def stdout(source='', &block); log(:stdout, source, &block); end
|
|
72
|
+
|
|
73
|
+
# Utiltity method for writing a verbose output message.
|
|
74
|
+
def verbose(source='', &block); log(:verbose, source, &block); end
|
|
75
|
+
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
end
|
data/lib/webgen/node.rb
CHANGED
|
@@ -1,273 +1,311 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
# $Id: node.rb 585 2007-01-10 15:48:08Z thomas $
|
|
5
|
-
#
|
|
6
|
-
# webgen: template based static website generator
|
|
7
|
-
# Copyright (C) 2004 Thomas Leitner
|
|
8
|
-
#
|
|
9
|
-
# This program is free software; you can redistribute it and/or modify it under the terms of the GNU
|
|
10
|
-
# General Public License as published by the Free Software Foundation; either version 2 of the
|
|
11
|
-
# License, or (at your option) any later version.
|
|
12
|
-
#
|
|
13
|
-
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
|
|
14
|
-
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
15
|
-
# General Public License for more details.
|
|
16
|
-
#
|
|
17
|
-
# You should have received a copy of the GNU General Public License along with this program; if not,
|
|
18
|
-
# write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
19
|
-
#
|
|
20
|
-
#++
|
|
21
|
-
#
|
|
22
|
-
|
|
1
|
+
require 'webgen/websiteaccess'
|
|
2
|
+
require 'webgen/loggable'
|
|
3
|
+
require 'webgen/path'
|
|
23
4
|
require 'uri'
|
|
5
|
+
require 'set'
|
|
24
6
|
require 'pathname'
|
|
25
|
-
require 'webgen/composite'
|
|
26
|
-
|
|
27
|
-
# The Node class is used for building the internal data structure which represents the output tree.
|
|
28
|
-
class Node
|
|
29
|
-
|
|
30
|
-
include Composite
|
|
31
|
-
|
|
32
|
-
# The parent node.
|
|
33
|
-
attr_reader :parent
|
|
34
|
-
|
|
35
|
-
# The path of this node.
|
|
36
|
-
attr_reader :path
|
|
37
|
-
|
|
38
|
-
# Information used for processing the node.
|
|
39
|
-
attr_accessor :node_info
|
|
40
|
-
|
|
41
|
-
# Meta information associated with the node.
|
|
42
|
-
attr_accessor :meta_info
|
|
43
|
-
|
|
44
|
-
# Initializes a new Node instance.
|
|
45
|
-
#
|
|
46
|
-
# +parent+::
|
|
47
|
-
# if this parameter is +nil+, then the new node acts as root. Otherwise, +parent+ has to
|
|
48
|
-
# be a valid node instance.
|
|
49
|
-
# +path+::
|
|
50
|
-
# The path for this node. If this node is a directory, the path must have a trailing
|
|
51
|
-
# slash ('dir/'). If it is a fragment, the hash sign must be the first character of the
|
|
52
|
-
# path ('#fragment'). A compound path like 'dir/file#fragment' is also allowed as are
|
|
53
|
-
# absolute paths like 'http://myhost.com/'.
|
|
54
|
-
#
|
|
55
|
-
# Note: a compound path like 'dir/file' is invalid if the parent node already has a child
|
|
56
|
-
# with path 'dir/'!!! (solution: just create a node with path 'file' and node 'dir/' as parent!)
|
|
57
|
-
def initialize( parent, path )
|
|
58
|
-
@parent = nil
|
|
59
|
-
@path = path
|
|
60
|
-
self.parent = parent
|
|
61
|
-
@node_info = Hash.new
|
|
62
|
-
@meta_info = Hash.new
|
|
63
|
-
end
|
|
64
7
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
8
|
+
module Webgen
|
|
9
|
+
|
|
10
|
+
# Represents a file, a directory or a fragment. A node always belongs to a Tree.
|
|
11
|
+
class Node
|
|
12
|
+
|
|
13
|
+
include WebsiteAccess
|
|
14
|
+
include Loggable
|
|
15
|
+
|
|
16
|
+
# The parent node.
|
|
17
|
+
attr_reader :parent
|
|
18
|
+
|
|
19
|
+
# The children of this node.
|
|
20
|
+
attr_reader :children
|
|
21
|
+
|
|
22
|
+
# The full output path of this node.
|
|
23
|
+
attr_reader :path
|
|
24
|
+
|
|
25
|
+
# The tree to which this node belongs.
|
|
26
|
+
attr_reader :tree
|
|
27
|
+
|
|
28
|
+
# The canonical name of this node.
|
|
29
|
+
attr_reader :cn
|
|
30
|
+
|
|
31
|
+
# The absolute canonical name of this node.
|
|
32
|
+
attr_reader :absolute_cn
|
|
33
|
+
|
|
34
|
+
# The localized canonical name of this node.
|
|
35
|
+
attr_reader :lcn
|
|
36
|
+
|
|
37
|
+
# The absolute localized canonical name of this node.
|
|
38
|
+
attr_reader :absolute_lcn
|
|
39
|
+
|
|
40
|
+
# The level of the node. The level specifies how deep the node is in the hierarchy.
|
|
41
|
+
attr_reader :level
|
|
42
|
+
|
|
43
|
+
# The language of this node.
|
|
44
|
+
attr_reader :lang
|
|
45
|
+
|
|
46
|
+
# Meta information associated with the node.
|
|
47
|
+
attr_reader :meta_info
|
|
48
|
+
|
|
49
|
+
# Set by other objects to +true+ if they think the object has changed since the last run. Must
|
|
50
|
+
# not be set to +false+ once it is +true+!
|
|
51
|
+
attr_accessor :dirty
|
|
52
|
+
|
|
53
|
+
# Has the node been created or has it been read from the cache?
|
|
54
|
+
attr_accessor :created
|
|
55
|
+
|
|
56
|
+
# Create a new Node instance.
|
|
57
|
+
#
|
|
58
|
+
# +parent+ (immutable)::
|
|
59
|
+
# The parent node under which this nodes should be created.
|
|
60
|
+
# +path+ (immutable)::
|
|
61
|
+
# The full output path for this node. If this node is a directory, the path must have a
|
|
62
|
+
# trailing slash (<tt>dir/</tt>). If it is a fragment, the hash sign must be the first
|
|
63
|
+
# character of the path (<tt>#fragment</tt>). This can also be an absolute path like
|
|
64
|
+
# <tt>http://myhost.com/</tt>.
|
|
65
|
+
# +cn+ (immutable)::
|
|
66
|
+
# The canonical name for this node. Needs to be of the form <tt>basename.ext</tt> or
|
|
67
|
+
# <tt>basename</tt> where +basename+ does not contain any dots. Also, the +basename+ must not
|
|
68
|
+
# include a language part!
|
|
69
|
+
# +meta_info+::
|
|
70
|
+
# A hash with meta information for the new node.
|
|
71
|
+
#
|
|
72
|
+
# The language of a node is taken from the meta information +lang+ and the entry is deleted from
|
|
73
|
+
# the meta information hash. The language cannot be changed afterwards! If no +lang+ key is
|
|
74
|
+
# found, the node is language neutral.
|
|
75
|
+
def initialize(parent, path, cn, meta_info = {})
|
|
76
|
+
@parent = parent
|
|
77
|
+
@path = path.freeze
|
|
78
|
+
@cn = cn.chomp('/').freeze
|
|
79
|
+
@lang = meta_info.delete('lang').freeze
|
|
80
|
+
@lang = nil unless is_file?
|
|
81
|
+
@meta_info = meta_info
|
|
82
|
+
@children = []
|
|
83
|
+
@dirty = true
|
|
84
|
+
@created = true
|
|
85
|
+
init_rest
|
|
86
|
+
end
|
|
70
87
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
@parent.add_child( self ) unless @parent.nil?
|
|
76
|
-
precalc_with_children!
|
|
77
|
-
end
|
|
88
|
+
# Return the meta information item for +key+.
|
|
89
|
+
def [](key)
|
|
90
|
+
@meta_info[key]
|
|
91
|
+
end
|
|
78
92
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
end
|
|
93
|
+
# Assign +value+ to the meta information item for +key+.
|
|
94
|
+
def []=(key, value)
|
|
95
|
+
@meta_info[key] = value
|
|
96
|
+
end
|
|
84
97
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
98
|
+
# Return the node information hash which contains information for processing the node.
|
|
99
|
+
def node_info
|
|
100
|
+
tree.node_info[@absolute_lcn] ||= {}
|
|
101
|
+
end
|
|
89
102
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
@meta_info[name] = value
|
|
93
|
-
end
|
|
103
|
+
# Check if the node is a directory.
|
|
104
|
+
def is_directory?; @path[-1] == ?/; end
|
|
94
105
|
|
|
95
|
-
|
|
96
|
-
|
|
106
|
+
# Check if the node is a file.
|
|
107
|
+
def is_file?; !is_directory? && !is_fragment?; end
|
|
97
108
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
return @precalc[:full_path] if @precalc
|
|
109
|
+
# Check if the node is a fragment.
|
|
110
|
+
def is_fragment?; @cn[0] == ?# end
|
|
101
111
|
|
|
102
|
-
if
|
|
103
|
-
|
|
104
|
-
else
|
|
105
|
-
(@parent.nil? ? @path : @parent.full_path + @path)
|
|
106
|
-
end
|
|
107
|
-
end
|
|
112
|
+
# Check if the node is the root node.
|
|
113
|
+
def is_root?; self == tree.root; end
|
|
108
114
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
# node = Node.new( dir, 'testfile' )
|
|
116
|
-
# node.full_path # => '../output/testdir/testfile'
|
|
117
|
-
# node.absolute_path # => '/testdir/testfile'
|
|
118
|
-
def absolute_path
|
|
119
|
-
return @precalc[:absolute_path] if @precalc
|
|
120
|
-
|
|
121
|
-
if @parent.nil?
|
|
122
|
-
'/'
|
|
123
|
-
elsif @path =~ ABSOLUTE_URL
|
|
124
|
-
@path
|
|
125
|
-
else
|
|
126
|
-
full_path.sub( /^#{Regexp.escape(Node.root( self ).path)}/, '/' )
|
|
115
|
+
# Return +true+ if the node has changed since the last webgen run. If it has changed, +dirty+ is
|
|
116
|
+
# set to +true+.
|
|
117
|
+
def changed?
|
|
118
|
+
@dirty = node_info[:used_nodes].any? {|n| n != @absolute_lcn && (!tree[n] || tree[n].changed?)} unless @dirty
|
|
119
|
+
website.blackboard.dispatch_msg(:node_changed?, self) unless @dirty
|
|
120
|
+
@dirty
|
|
127
121
|
end
|
|
128
|
-
end
|
|
129
122
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
# Checks if the node is a directory.
|
|
136
|
-
def is_directory?
|
|
137
|
-
@path[-1] == ?/
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
# Checks if the node is a file.
|
|
141
|
-
def is_file?
|
|
142
|
-
!is_directory? && !is_fragment?
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
# Checks if the node is a fragment.
|
|
146
|
-
def is_fragment?
|
|
147
|
-
@path[0] == ?#
|
|
148
|
-
end
|
|
123
|
+
# Return an informative representation of the node.
|
|
124
|
+
def inspect
|
|
125
|
+
"<##{self.class.name}: alcn=#{@absolute_lcn}>"
|
|
126
|
+
end
|
|
149
127
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
/^#{Regexp.escape(@path.chomp('/'))}(\/|$)/ =~ path #' #emacs hack
|
|
155
|
-
elsif is_fragment?
|
|
156
|
-
/^#{Regexp.escape(@path)}$/ =~ path
|
|
157
|
-
else
|
|
158
|
-
/^#{Regexp.escape(@path)}(?=#|$)/ =~ path
|
|
159
|
-
end
|
|
160
|
-
if md then $& end
|
|
161
|
-
end
|
|
128
|
+
# Return +true+ if the alcn matches the pattern. See File.fnmatch for useable patterns.
|
|
129
|
+
def =~(pattern)
|
|
130
|
+
File.fnmatch(pattern, @absolute_lcn, File::FNM_DOTMATCH|File::FNM_CASEFOLD|File::FNM_PATHNAME)
|
|
131
|
+
end
|
|
162
132
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
133
|
+
# Sort nodes by using the meta info +sort_info+ (or +title+ if +sort_info+ is not set) of both
|
|
134
|
+
# involved nodes.
|
|
135
|
+
def <=>(other)
|
|
136
|
+
self_so = (self['sort_info'] && self['sort_info'].to_s) || self['title'] || ''
|
|
137
|
+
other_so = (other['sort_info'] && other['sort_info'].to_s) || other['title'] || ''
|
|
138
|
+
if self_so !~ /\D/ && other_so !~ /\D/
|
|
139
|
+
self_so = self_so.to_i
|
|
140
|
+
other_so = other_so.to_i
|
|
141
|
+
end
|
|
142
|
+
self_so <=> other_so
|
|
143
|
+
end
|
|
167
144
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
145
|
+
# Construct the absolute (localized) canonical name by using the +parent+ node and +name+ (which
|
|
146
|
+
# can be a cn or an lcn). The +type+ can be either +:alcn+ or +:acn+.
|
|
147
|
+
def self.absolute_name(parent, name, type)
|
|
148
|
+
if parent.kind_of?(Tree)
|
|
149
|
+
''
|
|
150
|
+
else
|
|
151
|
+
parent = parent.parent while parent.is_fragment? # Handle fragment nodes specially in case they are nested
|
|
152
|
+
parent_name = (type == :alcn ? parent.absolute_lcn : parent.absolute_cn)
|
|
153
|
+
parent_name + (parent_name !~ /\/$/ && (parent.is_directory? || parent == parent.tree.dummy_root) ? '/' : '') + name
|
|
154
|
+
end
|
|
155
|
+
end
|
|
175
156
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
when Node then other.to_url
|
|
182
|
-
else raise ArgumentError
|
|
183
|
-
end
|
|
184
|
-
# resolve any '.' and '..' paths in the target url
|
|
185
|
-
if other_url.path =~ /\/\.\.?\// && other_url.scheme == 'webgen'
|
|
186
|
-
other_url.path = Pathname.new( other_url.path ).cleanpath.to_s
|
|
157
|
+
# Construct an internal URL for the given +name+ which can be a acn/alcn/path.
|
|
158
|
+
def self.url(name)
|
|
159
|
+
url = URI::parse(name)
|
|
160
|
+
url = URI::parse('webgen://webgen.localhost/') + url unless url.absolute?
|
|
161
|
+
url
|
|
187
162
|
end
|
|
188
|
-
route = my_url.route_to( other_url ).to_s
|
|
189
|
-
(route == '' ? ( self.is_fragment? ? self.parent.path : self.path ) : route )
|
|
190
|
-
end
|
|
191
163
|
|
|
192
|
-
# Checks if the current node is in the subtree which is spanned by the supplied node. The check is
|
|
193
|
-
# performed using only the +parent+ information of the involved nodes, NOT the actual path values!
|
|
194
|
-
def in_subtree_of?( node )
|
|
195
|
-
temp = self
|
|
196
|
-
temp = temp.parent while !temp.nil? && temp != node
|
|
197
|
-
!temp.nil?
|
|
198
|
-
end
|
|
199
164
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
165
|
+
# Check if the this node is in the subtree which is spanned by +node+. The check is performed
|
|
166
|
+
# using only the +parent+ information of the involved nodes, NOT the actual path/alcn values!
|
|
167
|
+
def in_subtree_of?(node)
|
|
168
|
+
temp = self
|
|
169
|
+
temp = temp.parent while temp != tree.dummy_root && temp != node
|
|
170
|
+
temp != tree.dummy_root
|
|
171
|
+
end
|
|
205
172
|
|
|
206
|
-
|
|
207
|
-
|
|
173
|
+
# Return the node with the same canonical name but in language +lang+ or, if no such node
|
|
174
|
+
# exists, an unlocalized version of the node. If no such node is found either, +nil+ is
|
|
175
|
+
# returned.
|
|
176
|
+
def in_lang(lang)
|
|
177
|
+
avail = @tree.node_access[:acn][@absolute_cn]
|
|
178
|
+
avail.find do |n|
|
|
179
|
+
n = n.parent while n.is_fragment?
|
|
180
|
+
n.lang == lang
|
|
181
|
+
end || avail.find do |n|
|
|
182
|
+
n = n.parent while n.is_fragment?
|
|
183
|
+
n.lang.nil?
|
|
184
|
+
end
|
|
185
|
+
end
|
|
208
186
|
|
|
209
|
-
node
|
|
187
|
+
# Return the node representing the given +path+ which can be an acn/alcn. The path can be
|
|
188
|
+
# absolute (i.e. starting with a slash) or relative to the current node. If no node exists for
|
|
189
|
+
# the given path or if the path is invalid, +nil+ is returned.
|
|
190
|
+
#
|
|
191
|
+
# If the +path+ is an alcn and a node is found, it is returned. If the +path+ is an acn, the
|
|
192
|
+
# correct localized node according to +lang+ is returned or if no such node exists but an
|
|
193
|
+
# unlocalized version does, the unlocalized node is returned.
|
|
194
|
+
def resolve(path, lang = nil)
|
|
195
|
+
url = self.class.url(self.is_directory? ? File.join(@absolute_lcn, '/') : @absolute_lcn) + path
|
|
196
|
+
|
|
197
|
+
path = url.path + (url.fragment.nil? ? '' : '#' + url.fragment)
|
|
198
|
+
path.chomp!('/') unless path == '/'
|
|
199
|
+
return nil if path =~ /^\/\.\./
|
|
200
|
+
|
|
201
|
+
node = @tree[path, :alcn]
|
|
202
|
+
if node && node.absolute_cn != path
|
|
203
|
+
node
|
|
204
|
+
else
|
|
205
|
+
(node = @tree[path, :acn]) && node.in_lang(lang)
|
|
206
|
+
end
|
|
207
|
+
end
|
|
210
208
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
209
|
+
# Return the relative path to the given path +other+. The parameter +other+ can be a Node or a
|
|
210
|
+
# String.
|
|
211
|
+
def route_to(other)
|
|
212
|
+
my_url = self.class.url(@path)
|
|
213
|
+
other_url = if other.kind_of?(Node)
|
|
214
|
+
self.class.url(other.routing_node(@lang).path)
|
|
215
|
+
elsif other.kind_of?(String)
|
|
216
|
+
my_url + other
|
|
217
|
+
else
|
|
218
|
+
raise ArgumentError, "improper class for argument"
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
# resolve any '.' and '..' paths in the target url
|
|
222
|
+
if other_url.path =~ /\/\.\.?\// && other_url.scheme == 'webgen'
|
|
223
|
+
other_url.path = Pathname.new(other_url.path).cleanpath.to_s
|
|
224
|
+
end
|
|
225
|
+
route = my_url.route_to(other_url).to_s
|
|
226
|
+
(route == '' ? File.basename(self.path) : route)
|
|
216
227
|
end
|
|
217
228
|
|
|
218
|
-
node
|
|
219
|
-
|
|
229
|
+
# Return the routing node in language +lang+ which is the node that is used when routing to this
|
|
230
|
+
# node. The returned node can differ from the node itself in case of a directory where the
|
|
231
|
+
# routing node is the directory index node.
|
|
232
|
+
def routing_node(lang)
|
|
233
|
+
if !is_directory?
|
|
234
|
+
self
|
|
235
|
+
else
|
|
236
|
+
key = [absolute_lcn, :index_node, lang]
|
|
237
|
+
vcache = website.cache.volatile
|
|
238
|
+
return vcache[key] if vcache.has_key?(key)
|
|
239
|
+
|
|
240
|
+
index_path = self.meta_info['index_path']
|
|
241
|
+
if index_path.nil?
|
|
242
|
+
vcache[key] = self
|
|
243
|
+
else
|
|
244
|
+
index_node = resolve(index_path, lang)
|
|
245
|
+
if index_node
|
|
246
|
+
vcache[key] = index_node
|
|
247
|
+
log(:info) { "Directory index path for <#{absolute_lcn}> => <#{index_node.absolute_lcn}>" }
|
|
248
|
+
else
|
|
249
|
+
vcache[key] = self
|
|
250
|
+
log(:warn) { "No directory index path found for directory <#{absolute_lcn}>" }
|
|
251
|
+
end
|
|
252
|
+
end
|
|
253
|
+
vcache[key]
|
|
254
|
+
end
|
|
255
|
+
end
|
|
220
256
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
257
|
+
# Return a HTML link from this node to the +node+ or, if this node and +node+ are the same and
|
|
258
|
+
# the parameter <tt>website.link_to_current_page</tt> is +false+, a +span+ element with the link
|
|
259
|
+
# text.
|
|
260
|
+
#
|
|
261
|
+
# You can optionally specify additional attributes for the HTML element in the +attr+ Hash.
|
|
262
|
+
# Also, the meta information +link_attrs+ of the given +node+ is used, if available, to set
|
|
263
|
+
# attributes. However, the +attr+ parameter takes precedence over the +link_attrs+ meta
|
|
264
|
+
# information. If the special value <tt>:link_text</tt> is present in the attributes, it will be
|
|
265
|
+
# used as the link text; otherwise the title of the +node+ will be used. Be aware that all
|
|
266
|
+
# key-value pairs with Symbol keys are removed before the attributes are written. Therefore you
|
|
267
|
+
# always need to specify general attributes with Strings!
|
|
268
|
+
def link_to(node, attr = {})
|
|
269
|
+
attr = node['link_attrs'].merge(attr) if node['link_attrs'].kind_of?(Hash)
|
|
270
|
+
link_text = attr[:link_text] || node.routing_node(@lang)['routed_title'] || node['title']
|
|
271
|
+
attr.delete_if {|k,v| k.kind_of?(Symbol)}
|
|
272
|
+
|
|
273
|
+
use_link = (node != self || website.config['website.link_to_current_page'])
|
|
274
|
+
attr['href'] = self.route_to(node) if use_link
|
|
275
|
+
attrs = attr.collect {|name,value| "#{name.to_s}=\"#{value}\"" }.sort.unshift('').join(' ')
|
|
276
|
+
(use_link ? "<a#{attrs}>#{link_text}</a>" : "<span#{attrs}>#{link_text}</span>")
|
|
277
|
+
end
|
|
226
278
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
end
|
|
279
|
+
#######
|
|
280
|
+
private
|
|
281
|
+
#######
|
|
231
282
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
283
|
+
# Do the rest of the initialization.
|
|
284
|
+
def init_rest
|
|
285
|
+
@lcn = Path.lcn(@cn, @lang)
|
|
286
|
+
@absolute_cn = self.class.absolute_name(@parent, @cn, :acn)
|
|
287
|
+
@absolute_lcn = self.class.absolute_name(@parent, @lcn, :alcn)
|
|
236
288
|
|
|
237
|
-
|
|
289
|
+
@level = -1
|
|
290
|
+
@tree = @parent
|
|
291
|
+
(@level += 1; @tree = @tree.parent) while !@tree.kind_of?(Tree)
|
|
238
292
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
#######
|
|
293
|
+
@tree.register_node(self)
|
|
294
|
+
@parent.children << self unless @parent == @tree
|
|
242
295
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
@precalc = {
|
|
246
|
-
:full_path => full_path,
|
|
247
|
-
:absolute_path => absolute_path,
|
|
248
|
-
:to_url => to_url
|
|
249
|
-
}
|
|
250
|
-
end
|
|
296
|
+
self.node_info[:used_nodes] = Set.new
|
|
297
|
+
end
|
|
251
298
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
def method_missing( name, *args, &block )
|
|
261
|
-
if @node_info[:processor]
|
|
262
|
-
@node_info[:processor].send( name, *([self] + args), &block )
|
|
263
|
-
else
|
|
264
|
-
super
|
|
299
|
+
# Delegate missing methods to a processor. The current node is placed into the argument array as
|
|
300
|
+
# the first argument before the method +name+ is invoked on the processor.
|
|
301
|
+
def method_missing(name, *args, &block)
|
|
302
|
+
if node_info[:processor]
|
|
303
|
+
website.cache.instance(node_info[:processor]).send(name, *([self] + args), &block)
|
|
304
|
+
else
|
|
305
|
+
super
|
|
306
|
+
end
|
|
265
307
|
end
|
|
266
|
-
end
|
|
267
308
|
|
|
268
|
-
|
|
269
|
-
TODO:
|
|
270
|
-
- stable sort which does not switch items that have the same order_info
|
|
271
|
-
=end
|
|
309
|
+
end
|
|
272
310
|
|
|
273
311
|
end
|