webgen 0.5.17 → 1.0.0.beta1
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/API.rdoc +143 -0
- data/AUTHORS +0 -1
- data/COPYING +17 -8
- data/ChangeLog +4456 -0
- data/GPL +623 -289
- data/README.md +71 -0
- data/Rakefile +87 -99
- data/VERSION +1 -1
- data/bin/webgen +1 -7
- data/data/webgen/basic_website_template/ext/init.rb +15 -0
- data/data/webgen/basic_website_template/webgen.config +18 -0
- data/data/webgen/bundle_template_files/README.md.erb +24 -0
- data/data/webgen/bundle_template_files/Rakefile.erb +36 -0
- data/data/webgen/bundle_template_files/info.yaml.erb +16 -0
- data/data/webgen/bundle_template_files/init.rb.erb +1 -0
- data/data/webgen/passive_sources/default.metainfo +32 -0
- data/data/webgen/passive_sources/stylesheets/coderay-default.css +109 -118
- data/data/webgen/passive_sources/templates/feed.template +62 -0
- data/data/webgen/passive_sources/templates/sitemap.template +3 -6
- data/data/webgen/passive_sources/templates/tag.template +42 -0
- data/data/webgen/website_bundles/default/README +2 -2
- data/lib/webgen/blackboard.rb +15 -51
- data/lib/webgen/bundle/built-in-show-changes/init.rb +54 -0
- data/lib/webgen/bundle/built-in/init.rb +366 -0
- data/lib/webgen/bundle_loader.rb +126 -0
- data/lib/webgen/cache.rb +9 -18
- data/lib/webgen/cli.rb +131 -58
- data/lib/webgen/cli/bundle_command.rb +30 -0
- data/lib/webgen/cli/create_bundle_command.rb +46 -0
- data/lib/webgen/cli/create_command.rb +48 -60
- data/lib/webgen/cli/generate_command.rb +25 -0
- data/lib/webgen/cli/install_bundle_command.rb +34 -0
- data/lib/webgen/cli/list_bundle_command.rb +108 -0
- data/lib/webgen/cli/logger.rb +45 -0
- data/lib/webgen/cli/show_command.rb +30 -0
- data/lib/webgen/cli/show_config_command.rb +63 -0
- data/lib/webgen/cli/show_dependencies_command.rb +103 -0
- data/lib/webgen/cli/show_extensions_command.rb +74 -0
- data/lib/webgen/cli/utils.rb +68 -95
- data/lib/webgen/configuration.rb +143 -105
- data/lib/webgen/content_processor.rb +160 -0
- data/lib/webgen/content_processor/blocks.rb +96 -0
- data/lib/webgen/content_processor/builder.rb +25 -0
- data/lib/webgen/content_processor/erb.rb +25 -0
- data/lib/webgen/content_processor/erubis.rb +31 -0
- data/lib/webgen/content_processor/fragments.rb +82 -0
- data/lib/webgen/content_processor/haml.rb +25 -0
- data/lib/webgen/content_processor/html_head.rb +157 -0
- data/lib/webgen/content_processor/kramdown.rb +49 -0
- data/lib/webgen/content_processor/maruku.rb +39 -0
- data/lib/webgen/content_processor/r_discount.rb +21 -0
- data/lib/webgen/content_processor/rdoc.rb +22 -0
- data/lib/webgen/content_processor/redcloth.rb +23 -0
- data/lib/webgen/content_processor/ruby.rb +20 -0
- data/lib/webgen/content_processor/sass.rb +145 -0
- data/lib/webgen/content_processor/scss.rb +23 -0
- data/lib/webgen/content_processor/tags.rb +30 -0
- data/lib/webgen/content_processor/tidy.rb +32 -0
- data/lib/webgen/content_processor/tikz.rb +116 -0
- data/lib/webgen/content_processor/xmllint.rb +31 -0
- data/lib/webgen/context.rb +57 -29
- data/lib/webgen/context/html_head.rb +60 -0
- data/lib/webgen/context/nodes.rb +32 -27
- data/lib/webgen/context/rendering.rb +39 -0
- data/lib/webgen/context/webgen_tags.rb +25 -0
- data/lib/webgen/core_ext.rb +25 -0
- data/lib/webgen/destination.rb +151 -0
- data/lib/webgen/destination/file_system.rb +62 -0
- data/lib/webgen/error.rb +59 -49
- data/lib/webgen/extension_manager.rb +121 -0
- data/lib/webgen/item_tracker.rb +237 -0
- data/lib/webgen/item_tracker/file.rb +39 -0
- data/lib/webgen/item_tracker/missing_node.rb +61 -0
- data/lib/webgen/item_tracker/node_content.rb +40 -0
- data/lib/webgen/item_tracker/node_meta_info.rb +53 -0
- data/lib/webgen/item_tracker/nodes.rb +92 -0
- data/lib/webgen/logger.rb +26 -82
- data/lib/webgen/node.rb +122 -367
- data/lib/webgen/node_finder.rb +336 -0
- data/lib/webgen/page.rb +48 -85
- data/lib/webgen/path.rb +218 -156
- data/lib/webgen/path_handler.rb +400 -0
- data/lib/webgen/path_handler/base.rb +220 -0
- data/lib/webgen/path_handler/copy.rb +78 -0
- data/lib/webgen/path_handler/directory.rb +21 -0
- data/lib/webgen/path_handler/feed.rb +82 -0
- data/lib/webgen/path_handler/meta_info.rb +84 -0
- data/lib/webgen/path_handler/page.rb +38 -0
- data/lib/webgen/path_handler/page_utils.rb +79 -0
- data/lib/webgen/path_handler/sitemap.rb +52 -0
- data/lib/webgen/path_handler/template.rb +96 -0
- data/lib/webgen/path_handler/virtual.rb +85 -0
- data/lib/webgen/{webgentask.rb → rake_task.rb} +31 -27
- data/lib/webgen/source.rb +106 -24
- data/lib/webgen/source/file_system.rb +41 -0
- data/lib/webgen/source/stacked.rb +49 -53
- data/lib/webgen/source/tar_archive.rb +59 -0
- data/lib/webgen/tag.rb +250 -19
- data/lib/webgen/tag/breadcrumb_trail.rb +65 -0
- data/lib/webgen/tag/coderay.rb +32 -35
- data/lib/webgen/tag/date.rb +9 -9
- data/lib/webgen/tag/execute_command.rb +31 -0
- data/lib/webgen/tag/include_file.rb +32 -0
- data/lib/webgen/tag/langbar.rb +31 -47
- data/lib/webgen/tag/link.rb +17 -18
- data/lib/webgen/tag/menu.rb +27 -189
- data/lib/webgen/tag/meta_info.rb +31 -0
- data/lib/webgen/tag/relocatable.rb +48 -39
- data/lib/webgen/tag/tikz.rb +24 -100
- data/lib/webgen/task.rb +99 -0
- data/lib/webgen/task/create_bundle.rb +73 -0
- data/lib/webgen/task/create_website.rb +94 -0
- data/lib/webgen/task/generate_website.rb +47 -0
- data/lib/webgen/test_helper.rb +183 -0
- data/lib/webgen/tree.rb +95 -46
- data/lib/webgen/utils.rb +39 -0
- data/lib/webgen/utils/external_command.rb +27 -0
- data/lib/webgen/utils/tag_parser.rb +124 -0
- data/lib/webgen/version.rb +1 -1
- data/lib/webgen/website.rb +134 -296
- data/setup.rb +1 -1
- data/test/test_documentation.rb +43 -0
- data/test/webgen/cli/test_logger.rb +41 -0
- data/test/{test_contentprocessor_blocks.rb → webgen/content_processor/test_blocks.rb} +30 -28
- data/test/webgen/content_processor/test_builder.rb +25 -0
- data/test/webgen/content_processor/test_erb.rb +21 -0
- data/test/webgen/content_processor/test_erubis.rb +33 -0
- data/test/webgen/content_processor/test_fragments.rb +96 -0
- data/test/webgen/content_processor/test_haml.rb +24 -0
- data/test/webgen/content_processor/test_html_head.rb +78 -0
- data/test/webgen/content_processor/test_kramdown.rb +49 -0
- data/test/webgen/content_processor/test_maruku.rb +30 -0
- data/test/webgen/content_processor/test_r_discount.rb +18 -0
- data/test/webgen/content_processor/test_rdoc.rb +18 -0
- data/test/webgen/content_processor/test_redcloth.rb +23 -0
- data/test/webgen/content_processor/test_ruby.rb +24 -0
- data/test/webgen/content_processor/test_sass.rb +44 -0
- data/test/webgen/content_processor/test_scss.rb +23 -0
- data/test/webgen/content_processor/test_tags.rb +44 -0
- data/test/webgen/content_processor/test_tidy.rb +31 -0
- data/test/webgen/content_processor/test_tikz.rb +33 -0
- data/test/webgen/content_processor/test_xmllint.rb +32 -0
- data/test/webgen/destination/test_file_system.rb +54 -0
- data/test/webgen/item_tracker/test_file.rb +31 -0
- data/test/webgen/item_tracker/test_missing_node.rb +70 -0
- data/test/webgen/item_tracker/test_node_content.rb +42 -0
- data/test/webgen/item_tracker/test_node_meta_info.rb +44 -0
- data/test/webgen/item_tracker/test_nodes.rb +61 -0
- data/test/webgen/path_handler/test_base.rb +153 -0
- data/test/webgen/path_handler/test_copy.rb +56 -0
- data/test/webgen/path_handler/test_feed.rb +85 -0
- data/test/webgen/path_handler/test_meta_info.rb +98 -0
- data/test/webgen/path_handler/test_page.rb +25 -0
- data/test/webgen/path_handler/test_page_utils.rb +59 -0
- data/test/webgen/path_handler/test_sitemap.rb +95 -0
- data/test/webgen/path_handler/test_template.rb +64 -0
- data/test/webgen/path_handler/test_virtual.rb +87 -0
- data/test/webgen/source/test_file_system.rb +51 -0
- data/test/webgen/source/test_stacked.rb +35 -0
- data/test/{test_source_tararchive.rb → webgen/source/test_tar_archive.rb} +10 -25
- data/test/webgen/tag/test_breadcrumb_trail.rb +66 -0
- data/test/webgen/tag/test_coderay.rb +34 -0
- data/test/webgen/tag/test_date.rb +18 -0
- data/test/webgen/tag/test_execute_command.rb +36 -0
- data/test/webgen/tag/test_include_file.rb +35 -0
- data/test/webgen/tag/test_langbar.rb +50 -0
- data/test/webgen/tag/test_link.rb +40 -0
- data/test/webgen/tag/test_menu.rb +61 -0
- data/test/webgen/tag/test_meta_info.rb +25 -0
- data/test/webgen/tag/test_relocatable.rb +50 -0
- data/test/webgen/tag/test_tikz.rb +41 -0
- data/test/webgen/task/test_create_website.rb +46 -0
- data/test/webgen/test_blackboard.rb +31 -0
- data/test/webgen/test_bundle_loader.rb +55 -0
- data/test/{test_cache.rb → webgen/test_cache.rb} +3 -15
- data/test/webgen/test_cli.rb +41 -0
- data/test/webgen/test_configuration.rb +131 -0
- data/test/webgen/test_content_processor.rb +86 -0
- data/test/webgen/test_context.rb +73 -0
- data/test/webgen/test_core_ext.rb +20 -0
- data/test/webgen/test_destination.rb +48 -0
- data/test/webgen/test_error.rb +121 -0
- data/test/webgen/test_extension_manager.rb +70 -0
- data/test/webgen/test_item_tracker.rb +106 -0
- data/test/{test_languages.rb → webgen/test_languages.rb} +4 -4
- data/test/webgen/test_logger.rb +46 -0
- data/test/webgen/test_node.rb +178 -0
- data/test/webgen/test_node_finder.rb +127 -0
- data/test/{test_page.rb → webgen/test_page.rb} +44 -48
- data/test/webgen/test_path.rb +271 -0
- data/test/{test_webgentask.rb → webgen/test_rake_task.rb} +4 -4
- data/test/webgen/test_source.rb +59 -0
- data/test/webgen/test_tag.rb +137 -0
- data/test/webgen/test_task.rb +40 -0
- data/test/webgen/test_tree.rb +147 -0
- data/test/webgen/test_utils.rb +16 -0
- data/test/webgen/test_website.rb +45 -0
- data/test/webgen/utils/test_tag_parser.rb +99 -0
- metadata +292 -344
- data/data/webgen/passive_sources/templates/atom_feed.template +0 -39
- data/data/webgen/passive_sources/templates/rss_feed.template +0 -28
- data/data/webgen/resources.yaml +0 -4
- data/data/webgen/webgui/app.rb +0 -11
- data/data/webgen/webgui/controller/main.rb +0 -135
- data/data/webgen/webgui/layout/default.xhtml +0 -40
- data/data/webgen/webgui/overrides/win32console.rb +0 -0
- data/data/webgen/webgui/public/css/jquery.autocomplete.css +0 -50
- data/data/webgen/webgui/public/css/ramaze_error.css +0 -90
- data/data/webgen/webgui/public/css/style.css +0 -55
- data/data/webgen/webgui/public/img/headerbg.jpg +0 -0
- data/data/webgen/webgui/public/img/webgen_logo.png +0 -0
- data/data/webgen/webgui/public/js/jquery.autocomplete.js +0 -15
- data/data/webgen/webgui/public/js/jquery.js +0 -32
- data/data/webgen/webgui/start.rb +0 -9
- data/data/webgen/webgui/view/create_website.xhtml +0 -14
- data/data/webgen/webgui/view/error.xhtml +0 -64
- data/data/webgen/webgui/view/index.xhtml +0 -22
- data/data/webgen/webgui/view/manage_website.xhtml +0 -18
- data/data/webgen/website_skeleton/README +0 -10
- data/data/webgen/website_skeleton/Rakefile +0 -69
- data/data/webgen/website_skeleton/config.yaml +0 -35
- data/data/webgen/website_skeleton/ext/init.rb +0 -10
- data/doc/contentprocessor.template +0 -11
- data/doc/contentprocessor/blocks.page +0 -129
- data/doc/contentprocessor/builder.page +0 -79
- data/doc/contentprocessor/erb.page +0 -60
- data/doc/contentprocessor/erubis.page +0 -46
- data/doc/contentprocessor/fragments.page +0 -26
- data/doc/contentprocessor/haml.page +0 -46
- data/doc/contentprocessor/head.page +0 -31
- data/doc/contentprocessor/kramdown.page +0 -49
- data/doc/contentprocessor/less.page +0 -34
- data/doc/contentprocessor/maruku.page +0 -44
- data/doc/contentprocessor/rdiscount.page +0 -37
- data/doc/contentprocessor/rdoc.page +0 -36
- data/doc/contentprocessor/redcloth.page +0 -41
- data/doc/contentprocessor/sass.page +0 -31
- data/doc/contentprocessor/scss.page +0 -39
- data/doc/contentprocessor/tags.page +0 -73
- data/doc/contentprocessor/tidy.page +0 -14
- data/doc/contentprocessor/xmllint.page +0 -14
- data/doc/extensions.metainfo +0 -29
- data/doc/extensions.page +0 -15
- data/doc/extensions.template +0 -17
- data/doc/faq.page +0 -222
- data/doc/getting_started.page +0 -135
- data/doc/index.page +0 -71
- data/doc/manual.page +0 -727
- data/doc/reference_configuration.page +0 -1254
- data/doc/reference_metainfo.page +0 -265
- data/doc/reference_website_styles.page +0 -32
- data/doc/source/filesystem.page +0 -41
- data/doc/source/tararchive.page +0 -40
- data/doc/sourcehandler.template +0 -23
- data/doc/sourcehandler/copy.page +0 -19
- data/doc/sourcehandler/directory.page +0 -27
- data/doc/sourcehandler/feed.page +0 -102
- data/doc/sourcehandler/metainfo.page +0 -48
- data/doc/sourcehandler/page.page +0 -14
- data/doc/sourcehandler/sitemap.page +0 -46
- data/doc/sourcehandler/template.page +0 -45
- data/doc/sourcehandler/virtual.page +0 -49
- data/doc/tag.template +0 -25
- data/doc/tag/breadcrumbtrail.page +0 -40
- data/doc/tag/coderay.page +0 -53
- data/doc/tag/date.page +0 -31
- data/doc/tag/executecommand.page +0 -26
- data/doc/tag/includefile.page +0 -32
- data/doc/tag/langbar.page +0 -47
- data/doc/tag/link.page +0 -44
- data/doc/tag/menu.page +0 -109
- data/doc/tag/metainfo.page +0 -29
- data/doc/tag/relocatable.page +0 -38
- data/doc/tag/sitemap.page +0 -31
- data/doc/tag/tikz.page +0 -159
- data/doc/upgrading.page +0 -138
- data/doc/webgen_page_format.page +0 -129
- data/doc/website_styles.metainfo +0 -8
- data/lib/webgen/cli/apply_command.rb +0 -66
- data/lib/webgen/cli/run_command.rb +0 -22
- data/lib/webgen/cli/webgui_command.rb +0 -68
- data/lib/webgen/common.rb +0 -27
- data/lib/webgen/common/sitemap.rb +0 -83
- data/lib/webgen/contentprocessor.rb +0 -117
- data/lib/webgen/contentprocessor/blocks.rb +0 -92
- data/lib/webgen/contentprocessor/builder.rb +0 -29
- data/lib/webgen/contentprocessor/erb.rb +0 -26
- data/lib/webgen/contentprocessor/erubis.rb +0 -39
- data/lib/webgen/contentprocessor/fragments.rb +0 -25
- data/lib/webgen/contentprocessor/haml.rb +0 -34
- data/lib/webgen/contentprocessor/head.rb +0 -128
- data/lib/webgen/contentprocessor/kramdown.rb +0 -27
- data/lib/webgen/contentprocessor/kramdown/html.rb +0 -36
- data/lib/webgen/contentprocessor/less.rb +0 -35
- data/lib/webgen/contentprocessor/maruku.rb +0 -36
- data/lib/webgen/contentprocessor/rdiscount.rb +0 -19
- data/lib/webgen/contentprocessor/rdoc.rb +0 -20
- data/lib/webgen/contentprocessor/redcloth.rb +0 -21
- data/lib/webgen/contentprocessor/sass.rb +0 -22
- data/lib/webgen/contentprocessor/scss.rb +0 -22
- data/lib/webgen/contentprocessor/tags.rb +0 -170
- data/lib/webgen/contentprocessor/tidy.rb +0 -38
- data/lib/webgen/contentprocessor/xmllint.rb +0 -37
- data/lib/webgen/context/render.rb +0 -32
- data/lib/webgen/context/tags.rb +0 -20
- data/lib/webgen/coreext.rb +0 -13
- data/lib/webgen/default_config.rb +0 -240
- data/lib/webgen/loggable.rb +0 -25
- data/lib/webgen/output.rb +0 -86
- data/lib/webgen/output/filesystem.rb +0 -69
- data/lib/webgen/source/filesystem.rb +0 -61
- data/lib/webgen/source/resource.rb +0 -45
- data/lib/webgen/source/tararchive.rb +0 -78
- data/lib/webgen/sourcehandler.rb +0 -275
- data/lib/webgen/sourcehandler/base.rb +0 -281
- data/lib/webgen/sourcehandler/copy.rb +0 -44
- data/lib/webgen/sourcehandler/directory.rb +0 -30
- data/lib/webgen/sourcehandler/feed.rb +0 -92
- data/lib/webgen/sourcehandler/fragment.rb +0 -70
- data/lib/webgen/sourcehandler/memory.rb +0 -42
- data/lib/webgen/sourcehandler/metainfo.rb +0 -128
- data/lib/webgen/sourcehandler/page.rb +0 -64
- data/lib/webgen/sourcehandler/sitemap.rb +0 -60
- data/lib/webgen/sourcehandler/template.rb +0 -66
- data/lib/webgen/sourcehandler/virtual.rb +0 -117
- data/lib/webgen/tag/base.rb +0 -170
- data/lib/webgen/tag/breadcrumbtrail.rb +0 -70
- data/lib/webgen/tag/executecommand.rb +0 -31
- data/lib/webgen/tag/includefile.rb +0 -42
- data/lib/webgen/tag/metainfo.rb +0 -27
- data/lib/webgen/tag/sitemap.rb +0 -41
- data/lib/webgen/websiteaccess.rb +0 -31
- data/lib/webgen/websitemanager.rb +0 -125
- data/misc/default.css +0 -403
- data/misc/default.template +0 -76
- data/misc/htmldoc.metainfo +0 -26
- data/misc/htmldoc.virtual +0 -17
- data/misc/images/arrow.gif +0 -0
- data/misc/images/error.png +0 -0
- data/misc/images/headerbg.jpg +0 -0
- data/misc/images/important.png +0 -0
- data/misc/images/information.png +0 -0
- data/misc/images/quote.gif +0 -0
- data/misc/images/warning.png +0 -0
- data/misc/logo.svg +0 -313
- data/misc/style.page +0 -33
- data/test/helper.rb +0 -61
- data/test/test_blackboard.rb +0 -60
- data/test/test_cli.rb +0 -119
- data/test/test_common_sitemap.rb +0 -58
- data/test/test_configuration.rb +0 -68
- data/test/test_contentprocessor.rb +0 -39
- data/test/test_contentprocessor_builder.rb +0 -41
- data/test/test_contentprocessor_erb.rb +0 -33
- data/test/test_contentprocessor_erubis.rb +0 -62
- data/test/test_contentprocessor_fragments.rb +0 -43
- data/test/test_contentprocessor_haml.rb +0 -39
- data/test/test_contentprocessor_head.rb +0 -96
- data/test/test_contentprocessor_kramdown.rb +0 -56
- data/test/test_contentprocessor_less.rb +0 -40
- data/test/test_contentprocessor_maruku.rb +0 -33
- data/test/test_contentprocessor_rdiscount.rb +0 -21
- data/test/test_contentprocessor_rdoc.rb +0 -22
- data/test/test_contentprocessor_redcloth.rb +0 -26
- data/test/test_contentprocessor_sass.rb +0 -28
- data/test/test_contentprocessor_scss.rb +0 -28
- data/test/test_contentprocessor_tags.rb +0 -122
- data/test/test_contentprocessor_tidy.rb +0 -34
- data/test/test_contentprocessor_xmllint.rb +0 -38
- data/test/test_context.rb +0 -81
- data/test/test_error.rb +0 -93
- data/test/test_loggable.rb +0 -32
- data/test/test_logger.rb +0 -94
- data/test/test_node.rb +0 -469
- data/test/test_output_filesystem.rb +0 -60
- data/test/test_path.rb +0 -241
- data/test/test_source_filesystem.rb +0 -76
- data/test/test_source_resource.rb +0 -28
- data/test/test_source_stacked.rb +0 -49
- data/test/test_sourcehandler_base.rb +0 -136
- data/test/test_sourcehandler_copy.rb +0 -47
- data/test/test_sourcehandler_directory.rb +0 -38
- data/test/test_sourcehandler_feed.rb +0 -88
- data/test/test_sourcehandler_fragment.rb +0 -70
- data/test/test_sourcehandler_main.rb +0 -39
- data/test/test_sourcehandler_memory.rb +0 -44
- data/test/test_sourcehandler_metainfo.rb +0 -127
- data/test/test_sourcehandler_page.rb +0 -73
- data/test/test_sourcehandler_sitemap.rb +0 -68
- data/test/test_sourcehandler_template.rb +0 -68
- data/test/test_sourcehandler_virtual.rb +0 -106
- data/test/test_tag_base.rb +0 -62
- data/test/test_tag_breadcrumbtrail.rb +0 -91
- data/test/test_tag_coderay.rb +0 -45
- data/test/test_tag_date.rb +0 -18
- data/test/test_tag_executecommand.rb +0 -41
- data/test/test_tag_includefile.rb +0 -50
- data/test/test_tag_langbar.rb +0 -71
- data/test/test_tag_link.rb +0 -70
- data/test/test_tag_menu.rb +0 -207
- data/test/test_tag_metainfo.rb +0 -26
- data/test/test_tag_relocatable.rb +0 -60
- data/test/test_tag_sitemap.rb +0 -47
- data/test/test_tag_tikz.rb +0 -69
- data/test/test_tree.rb +0 -70
- data/test/test_website.rb +0 -130
- data/test/test_websiteaccess.rb +0 -25
- data/test/test_websitemanager.rb +0 -65
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
description:
|
|
2
|
-
This is the default website bundle. It only contains a sample index page
|
|
3
|
-
after a new website is created.
|
|
2
|
+
This is the default website bundle. It only contains a sample index page so that something is
|
|
3
|
+
shown after a new website is created.
|
|
4
4
|
|
|
5
5
|
author:
|
|
6
6
|
Thomas Leitner
|
data/lib/webgen/blackboard.rb
CHANGED
|
@@ -2,75 +2,39 @@
|
|
|
2
2
|
|
|
3
3
|
module Webgen
|
|
4
4
|
|
|
5
|
-
# A blackboard object provides
|
|
5
|
+
# A blackboard object provides methods for inter-object communication. Objects may register
|
|
6
|
+
# themselves for specific messsage names and get notified when such a message gets dispatched.
|
|
6
7
|
#
|
|
7
|
-
#
|
|
8
|
-
# object by just specifing the service name. Therefore it is easy to change the underlying
|
|
9
|
-
# implementation of the service and there are no hard dependencies on specific class or method
|
|
10
|
-
# names.
|
|
11
|
-
#
|
|
12
|
-
# * *listeners*: Objects may register themselves for specific messsage names and get notified when
|
|
13
|
-
# such a message gets dispatched.
|
|
14
|
-
#
|
|
15
|
-
# For a list of all available services and messages have a look at the main Webgen documentation
|
|
16
|
-
# page.
|
|
8
|
+
# For a list of all available messages have a look at the Webgen documentation page.
|
|
17
9
|
class Blackboard
|
|
18
10
|
|
|
19
11
|
# Create a new Blackboard object.
|
|
20
12
|
def initialize
|
|
21
13
|
@listener = {}
|
|
22
|
-
@services = {}
|
|
23
14
|
end
|
|
24
15
|
|
|
25
|
-
# Add the
|
|
26
|
-
# message
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if !
|
|
30
|
-
|
|
31
|
-
[msg_names].flatten.compact.each {|name| (@listener[name] ||= []) << callable_object}
|
|
16
|
+
# Add the given block as listener for the messages +msg_names+ (one message name or an array of
|
|
17
|
+
# message names). If you want to be able to remove the block from being called by the blackboard
|
|
18
|
+
# later, you have to provide a unique ID object!
|
|
19
|
+
def add_listener(msg_names = nil, id = nil, &block)
|
|
20
|
+
if !block.nil?
|
|
21
|
+
[msg_names].flatten.compact.each {|name| (@listener[name] ||= []) << [id, block]}
|
|
32
22
|
else
|
|
33
|
-
raise ArgumentError, "You have to provide a
|
|
23
|
+
raise ArgumentError, "You have to provide a block"
|
|
34
24
|
end
|
|
35
25
|
end
|
|
36
26
|
|
|
37
|
-
# Remove the given
|
|
38
|
-
#
|
|
39
|
-
def
|
|
40
|
-
[msg_names].flatten.each {|name| @listener[name].
|
|
27
|
+
# Remove the blocks associated with the given ID from the dispatcher queues of the given message
|
|
28
|
+
# names.
|
|
29
|
+
def remove_listener(msg_names, id)
|
|
30
|
+
[msg_names].flatten.each {|name| @listener[name].delete_if {|lid, b| lid == id} if @listener[name]}
|
|
41
31
|
end
|
|
42
32
|
|
|
43
33
|
# Dispatch the message +msg_name+ to all listeners for this message, passing the given
|
|
44
34
|
# arguments.
|
|
45
35
|
def dispatch_msg(msg_name, *args)
|
|
46
36
|
return unless @listener[msg_name]
|
|
47
|
-
@listener[msg_name].each {|obj| obj.call(*args)}
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
# Add a service named +service_name+ provided by the +callable_object+ or a block to the
|
|
51
|
-
# blackboard.
|
|
52
|
-
def add_service(service_name, callable_object = nil, &block)
|
|
53
|
-
callable_object = callable_object || block
|
|
54
|
-
if @services.has_key?(service_name)
|
|
55
|
-
raise "The service name '#{service_name}' is already taken"
|
|
56
|
-
else
|
|
57
|
-
raise ArgumentError, "An object providing a service needs to respond to 'call'" unless callable_object.respond_to?(:call)
|
|
58
|
-
@services[service_name] = callable_object
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
# Delete the service +service_name+.
|
|
63
|
-
def del_service(service_name)
|
|
64
|
-
@services.delete(service_name)
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
# Invoke the service called +service_name+ with the given arguments.
|
|
68
|
-
def invoke(service_name, *args, &block)
|
|
69
|
-
if @services.has_key?(service_name)
|
|
70
|
-
@services[service_name].call(*args, &block)
|
|
71
|
-
else
|
|
72
|
-
raise ArgumentError, "No such service named '#{service_name}' available"
|
|
73
|
-
end
|
|
37
|
+
@listener[msg_name].each {|id, obj| obj.call(*args)}
|
|
74
38
|
end
|
|
75
39
|
|
|
76
40
|
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# This file initializes the show-changes built-in extension.
|
|
4
|
+
|
|
5
|
+
option('destination.show_changes', false,
|
|
6
|
+
'Show changes to destination paths') do |val|
|
|
7
|
+
raise "The value has to be 'true' or 'false'" unless val == true || val == false
|
|
8
|
+
val
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
data = nil
|
|
12
|
+
|
|
13
|
+
website.blackboard.add_listener(:before_node_written) do |node|
|
|
14
|
+
next unless website.config['destination.show_changes'] && node.is_file? && !node['no_output']
|
|
15
|
+
webgen_require('diff/lcs', 'diff-lcs')
|
|
16
|
+
webgen_require('diff/lcs/hunk', 'diff-lcs')
|
|
17
|
+
if website.ext.destination.exists?(node.dest_path)
|
|
18
|
+
data = website.ext.destination.read(node.dest_path)
|
|
19
|
+
else
|
|
20
|
+
data = nil
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
website.blackboard.add_listener(:after_node_written) do |node, content|
|
|
25
|
+
next unless website.config['destination.show_changes'] && node.is_file? && !node['no_output']
|
|
26
|
+
if data.nil?
|
|
27
|
+
website.logger.info { "New destination path <#{node.dest_path}>" }
|
|
28
|
+
next
|
|
29
|
+
end
|
|
30
|
+
new_data = (content.kind_of?(String) ? content : content.data)
|
|
31
|
+
|
|
32
|
+
binary = data[0...4096]["\0"] || new_data[0..4096]["\0"]
|
|
33
|
+
if binary
|
|
34
|
+
if data.force_encoding('BINARY') != new_data.force_encoding('BINARY')
|
|
35
|
+
website.logger.info { "Path <#{node.dest_path}> differs" }
|
|
36
|
+
end
|
|
37
|
+
else
|
|
38
|
+
data = data.split(/\n/).map! {|e| e.chomp }
|
|
39
|
+
new_data = new_data.split(/\n/).map! {|e| e.chomp }
|
|
40
|
+
diffs = Diff::LCS.diff(data, new_data)
|
|
41
|
+
next if diffs.empty?
|
|
42
|
+
|
|
43
|
+
length_diff = 0
|
|
44
|
+
diffs.each do |piece|
|
|
45
|
+
hunk = Diff::LCS::Hunk.new(data, new_data, piece, 0, length_diff)
|
|
46
|
+
length_diff = hunk.file_length_difference
|
|
47
|
+
|
|
48
|
+
hunk.diff(:unified).split(/\n/).each do |line|
|
|
49
|
+
website.logger.info { line }
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# This file initializes all the extensions shipped with webgen.
|
|
4
|
+
|
|
5
|
+
########################################################################
|
|
6
|
+
# Used validators and other objects
|
|
7
|
+
|
|
8
|
+
true_or_false = lambda do |val|
|
|
9
|
+
raise "The value has to be 'true' or 'false'" unless val == true || val == false
|
|
10
|
+
val
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
is_string = lambda do |val|
|
|
14
|
+
raise "The value has to be a string" unless val.kind_of?(String)
|
|
15
|
+
val
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
is_array = lambda do |val|
|
|
19
|
+
raise "The value has to be an array" unless val.kind_of?(Array)
|
|
20
|
+
val
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
is_hash = lambda do |val|
|
|
24
|
+
raise "The value has to be a hash" unless val.kind_of?(Hash)
|
|
25
|
+
val
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
is_integer = lambda do |val|
|
|
29
|
+
raise "The value has to be an integer" unless val.kind_of?(Integer)
|
|
30
|
+
val
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
########################################################################
|
|
34
|
+
# General configuration parameters
|
|
35
|
+
|
|
36
|
+
option('website.tmpdir', 'tmp',
|
|
37
|
+
'Storage location relative to website directory for cache and temporary files created when webgen is run', &is_string)
|
|
38
|
+
option('website.cache', [:file, 'webgen.cache'],
|
|
39
|
+
'The file name relative to website.tmpdir (or a string) from/to which the cache is read/written') do |val|
|
|
40
|
+
raise "The value has to be an array with two values" unless val.kind_of?(Array) && val.length == 2
|
|
41
|
+
raise "The first value has to be :file or :string" unless val[0] == :file || val[0] == :string
|
|
42
|
+
val
|
|
43
|
+
end
|
|
44
|
+
option('website.dry_run', false,
|
|
45
|
+
"Perform a dry run, don't actually write files", &true_or_false)
|
|
46
|
+
|
|
47
|
+
option('website.lang', 'en', 'The default language used for the website') do |val|
|
|
48
|
+
lang = LanguageManager.language_for_code(val)
|
|
49
|
+
raise "Unknown language code '#{val}'" if lang.nil?
|
|
50
|
+
lang
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
########################################################################
|
|
55
|
+
# Everything related to the content processor extension
|
|
56
|
+
require 'webgen/content_processor'
|
|
57
|
+
|
|
58
|
+
website.ext.content_processor = content_processor = Webgen::ContentProcessor.new
|
|
59
|
+
content_processor.register('Blocks')
|
|
60
|
+
content_processor.register('Builder')
|
|
61
|
+
content_processor.register('Erb')
|
|
62
|
+
|
|
63
|
+
content_processor.register('Erubis')
|
|
64
|
+
option('content_processor.erubis.use_pi', false,
|
|
65
|
+
'Specifies whether processing instructions should be used', &true_or_false)
|
|
66
|
+
option('content_processor.erubis.options', {},
|
|
67
|
+
'A hash of additional, erubis specific options')
|
|
68
|
+
|
|
69
|
+
content_processor.register('Fragments')
|
|
70
|
+
content_processor.register('Haml', :ext_map => {'haml' => 'html'})
|
|
71
|
+
content_processor.register('HtmlHead')
|
|
72
|
+
|
|
73
|
+
content_processor.register('Kramdown')
|
|
74
|
+
option('content_processor.kramdown.options', {:auto_ids => true},
|
|
75
|
+
'The options hash for the kramdown processor')
|
|
76
|
+
option('content_processor.kramdown.handle_links', true,
|
|
77
|
+
'Whether all links in a kramdown document should be processed by webgen', &true_or_false)
|
|
78
|
+
option('content_processor.kramdown.ignore_unknown_fragments', false,
|
|
79
|
+
'Specifies whether unknown, non-resolvable fragment parts should be ignored when handling links', &true_or_false)
|
|
80
|
+
|
|
81
|
+
content_processor.register('Maruku')
|
|
82
|
+
content_processor.register('RDiscount', :name => 'rdiscount')
|
|
83
|
+
content_processor.register('RDoc', :name => 'rdoc', :ext_map => {'rdoc' => 'html'})
|
|
84
|
+
|
|
85
|
+
content_processor.register('RedCloth', :name => 'redcloth', :ext_map => {'textile' => 'html'})
|
|
86
|
+
option('content_processor.redcloth.hard_breaks', false,
|
|
87
|
+
'Specifies whether new lines are turned into hard breaks', &true_or_false)
|
|
88
|
+
|
|
89
|
+
content_processor.register('Ruby')
|
|
90
|
+
|
|
91
|
+
content_processor.register('Sass', :ext_map => {'sass' => 'css'})
|
|
92
|
+
content_processor.register('Scss', :ext_map => {'scss' => 'css'})
|
|
93
|
+
option('content_processor.sass.options', {},
|
|
94
|
+
'Additional Sass options (also used by the scss processor)', &is_hash)
|
|
95
|
+
website.ext.sass_load_paths = []
|
|
96
|
+
|
|
97
|
+
content_processor.register('Tags')
|
|
98
|
+
|
|
99
|
+
content_processor.register('Tidy')
|
|
100
|
+
option('content_processor.tidy.options', "-raw",
|
|
101
|
+
"Additional options passed to the tidy command (-q and -f are always used)", &is_string)
|
|
102
|
+
|
|
103
|
+
content_processor.register('Tikz', :ext_map => {'tikz' => 'png'})
|
|
104
|
+
option('content_processor.tikz.libraries', [],
|
|
105
|
+
'An array of additional TikZ library names', &is_array)
|
|
106
|
+
option('content_processor.tikz.opts', '',
|
|
107
|
+
'A string with global options for the tikzpicture environment', &is_string)
|
|
108
|
+
option('content_processor.tikz.resolution', '72 72',
|
|
109
|
+
'A string specifying the render and output resolutions, separated by whitespace') do |val|
|
|
110
|
+
raise "The value has to be a string in the format 'RENDER_RES OUTPUT_RES'" unless val.kind_of?(String) && val =~ /^\d+\s+\d+$/
|
|
111
|
+
val
|
|
112
|
+
end
|
|
113
|
+
option('content_processor.tikz.transparent', false,
|
|
114
|
+
'Specifies whether the generated image should be transparent (only if the extension is png)', &true_or_false)
|
|
115
|
+
|
|
116
|
+
content_processor.register('Xmllint')
|
|
117
|
+
option('content_processor.xmllint.options', "--catalogs --noout --valid",
|
|
118
|
+
'Options passed to the xmllint command', &is_string)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
########################################################################
|
|
122
|
+
# The Context extensions
|
|
123
|
+
website.ext.context_modules = []
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
########################################################################
|
|
127
|
+
# Everything related to the destination extension
|
|
128
|
+
require 'webgen/destination'
|
|
129
|
+
|
|
130
|
+
option('destination', [:file_system, 'out'],
|
|
131
|
+
'The destination extension which is used to output the generated paths.') do |val|
|
|
132
|
+
raise "The value needs to be an array with at least one value (the destination extension name)" unless val.kind_of?(Array) && val.length >=1
|
|
133
|
+
val
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
website.ext.destination = destination = Webgen::Destination.new(website)
|
|
137
|
+
destination.register("FileSystem")
|
|
138
|
+
|
|
139
|
+
# TODO: Do we really need this option?
|
|
140
|
+
#config.output.do_deletion(false, :doc => 'Specifies whether the generated output paths should be deleted once the sources are deleted')
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
########################################################################
|
|
144
|
+
# Everything related to the item tracker extension
|
|
145
|
+
require 'webgen/item_tracker'
|
|
146
|
+
|
|
147
|
+
website.ext.item_tracker = item_tracker = Webgen::ItemTracker.new(website)
|
|
148
|
+
item_tracker.register('NodeContent')
|
|
149
|
+
|
|
150
|
+
item_tracker.register('NodeMetaInfo')
|
|
151
|
+
website.blackboard.add_listener(:after_node_created) do |node|
|
|
152
|
+
item_tracker.add(node, :node_meta_info, node.alcn)
|
|
153
|
+
item_tracker.add(node, :node_meta_info, node.alcn, Webgen::ItemTracker::NodeMetaInfo::CONTENT_MODIFICATION_KEY)
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
item_tracker.register('Nodes')
|
|
157
|
+
item_tracker.register('File')
|
|
158
|
+
item_tracker.register('MissingNode')
|
|
159
|
+
website.blackboard.add_listener(:node_resolution_failed) do |path, lang|
|
|
160
|
+
website.ext.item_tracker.add(website.ext.path_handler.current_dest_node, :missing_node, path, lang)
|
|
161
|
+
website.logger.error do
|
|
162
|
+
["Could not resolve '#{path}' in language '#{lang}' in <#{website.ext.path_handler.current_dest_node}>",
|
|
163
|
+
"webgen will automatically try to resolve this error by rendering this path again later.",
|
|
164
|
+
"If the error persists, the content of the path in question needs to be edited to correct the error."]
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
########################################################################
|
|
169
|
+
# Everything related to the node finder extension
|
|
170
|
+
require 'webgen/node_finder'
|
|
171
|
+
|
|
172
|
+
website.ext.node_finder = Webgen::NodeFinder.new(website)
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
########################################################################
|
|
176
|
+
# Everything related to the path handler extension
|
|
177
|
+
require 'webgen/path_handler'
|
|
178
|
+
|
|
179
|
+
option('path_handler.patterns.case_sensitive', false,
|
|
180
|
+
'Specifies whether patterns are considered to be case sensitive', &true_or_false)
|
|
181
|
+
option('path_handler.patterns.match_leading_dot', false,
|
|
182
|
+
'Specifies whether paths parts starting with a dot are matched', &true_or_false)
|
|
183
|
+
option('path_handler.lang_code_in_dest_path', 'except_default',
|
|
184
|
+
'Specifies whether destination paths should use the language part in their name') do |val|
|
|
185
|
+
if val == true || val == false || val == 'except_default'
|
|
186
|
+
val
|
|
187
|
+
else
|
|
188
|
+
raise "The value has to be 'true', 'false' or 'except_default'"
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
option('path_handler.version_in_dest_path', 'except_default',
|
|
192
|
+
'Specifies whether destination paths should use the version name in their name') do |val|
|
|
193
|
+
if val == true || val == false || val == 'except_default'
|
|
194
|
+
val
|
|
195
|
+
else
|
|
196
|
+
raise "The value has to be 'true', 'false' or 'except_default'"
|
|
197
|
+
end
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
website.ext.path_handler = path_handler = Webgen::PathHandler.new(website)
|
|
201
|
+
|
|
202
|
+
# handlers are registered in invocation order
|
|
203
|
+
|
|
204
|
+
path_handler.register('Directory')
|
|
205
|
+
path_handler.register('MetaInfo', :patterns => ['/**/metainfo', '/**/*.metainfo'])
|
|
206
|
+
|
|
207
|
+
path_handler.register('Template')
|
|
208
|
+
option('path_handler.template.default_template', 'default.template',
|
|
209
|
+
'The name of the default template file')
|
|
210
|
+
|
|
211
|
+
path_handler.register('Page')
|
|
212
|
+
path_handler.register('Copy')
|
|
213
|
+
path_handler.register('Feed')
|
|
214
|
+
path_handler.register('Sitemap')
|
|
215
|
+
path_handler.register('Virtual')
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
########################################################################
|
|
219
|
+
# Everything related to the source extension
|
|
220
|
+
require 'webgen/source'
|
|
221
|
+
|
|
222
|
+
sources_validator = lambda do |val|
|
|
223
|
+
raise "The value has to be an array of arrays" unless val.kind_of?(Array) && val.all? {|item| item.kind_of?(Array)}
|
|
224
|
+
raise "Each sub array needs to specify at least the mount point and source extension name" unless val.all? {|item| item.length >= 2}
|
|
225
|
+
val
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
option('sources', [['/', :file_system, 'src']],
|
|
229
|
+
'One or more sources from which paths are read', &sources_validator)
|
|
230
|
+
option('sources.ignore_paths', ['**/*~', '**/.svn/**'],
|
|
231
|
+
'Patterns for paths that should be ignored') do |val|
|
|
232
|
+
raise "The value has to be an array of patterns" unless val.kind_of?(Array) && val.all? {|item| item.kind_of?(String)}
|
|
233
|
+
val
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
website.ext.source = source = Webgen::Source.new(website)
|
|
237
|
+
source.register("FileSystem")
|
|
238
|
+
source.register("Stacked")
|
|
239
|
+
source.register("TarArchive")
|
|
240
|
+
|
|
241
|
+
source.passive_sources << ['/', :file_system, File.join(Webgen::Utils.data_dir, 'passive_sources')]
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
########################################################################
|
|
245
|
+
# Everything related to the tag extension
|
|
246
|
+
require 'webgen/tag'
|
|
247
|
+
|
|
248
|
+
website.ext.tag = tag = Webgen::Tag.new(website)
|
|
249
|
+
|
|
250
|
+
option('tag.prefix', '',
|
|
251
|
+
'The prefix used for tag names to avoid name clashes when another content processor uses similar markup.',
|
|
252
|
+
&is_string)
|
|
253
|
+
|
|
254
|
+
tag.register('Date')
|
|
255
|
+
option('tag.date.format', '%Y-%m-%d %H:%M:%S',
|
|
256
|
+
'The format of the date (same options as Ruby\'s Time#strftime)', &is_string)
|
|
257
|
+
|
|
258
|
+
tag.register('MetaInfo', :names => :default)
|
|
259
|
+
option('tag.meta_info.escape_html', true,
|
|
260
|
+
'Special HTML characters in the output will be escaped if true', &true_or_false)
|
|
261
|
+
|
|
262
|
+
tag.register('Relocatable', :names => ['relocatable', 'r'], :mandatory => ['path'])
|
|
263
|
+
option('tag.relocatable.path', nil,
|
|
264
|
+
'The path which should be made relocatable', &is_string)
|
|
265
|
+
option('tag.relocatable.ignore_unknown_fragment', false,
|
|
266
|
+
'Specifies whether an unknown, non-resolvable fragment part should be ignored', &true_or_false)
|
|
267
|
+
|
|
268
|
+
tag.register('Link', :mandatory => ['path'])
|
|
269
|
+
option('tag.link.path', nil,
|
|
270
|
+
'The (A)LCN path to which a link should be generated', &is_string)
|
|
271
|
+
option('tag.link.attr', {},
|
|
272
|
+
'A hash of additional HTML attributes that should be set on the link', &is_hash)
|
|
273
|
+
|
|
274
|
+
tag.register('ExecuteCommand', :names => 'execute_cmd', :mandatory => ['command'])
|
|
275
|
+
option('tag.execute_command.command', nil,
|
|
276
|
+
'The command which should be executed', &is_string)
|
|
277
|
+
option('tag.execute_command.process_output', true,
|
|
278
|
+
'The output of the command will be scanned for tags if true', &true_or_false)
|
|
279
|
+
option('tag.execute_command.escape_html', true,
|
|
280
|
+
'Special HTML characters in the output will be escaped if true', &true_or_false)
|
|
281
|
+
|
|
282
|
+
tag.register('IncludeFile', :mandatory => ['filename'])
|
|
283
|
+
option('tag.include_file.filename', nil,
|
|
284
|
+
'The name of the file which should be included (relative to the website).', &is_string)
|
|
285
|
+
option('tag.include_file.process_output', true,
|
|
286
|
+
'The file content will be scanned for tags if true.', &true_or_false)
|
|
287
|
+
option('tag.include_file.escape_html', true,
|
|
288
|
+
'Special HTML characters in the file content will be escaped if true.', &true_or_false)
|
|
289
|
+
|
|
290
|
+
tag.register('Coderay', :mandatory => ['lang'])
|
|
291
|
+
option('tag.coderay.lang', 'ruby',
|
|
292
|
+
'The language used for highlighting')
|
|
293
|
+
option('tag.coderay.process_body', true,
|
|
294
|
+
'The tag body will be scanned for tags before highlighting if true', &true_or_false)
|
|
295
|
+
option('tag.coderay.wrap', :div,
|
|
296
|
+
'Specifies how the code should be wrapped, either "div" or "span"') do |val|
|
|
297
|
+
val = val.to_s.intern
|
|
298
|
+
raise "The value has to be either div or span" unless val == :div || val == :span
|
|
299
|
+
val
|
|
300
|
+
end
|
|
301
|
+
option('tag.coderay.css', 'style',
|
|
302
|
+
'Specifies how the highlighted code should be styled') do |val|
|
|
303
|
+
val = val.to_s
|
|
304
|
+
raise "The value has to be class, style or other" unless %w[class style other].include?(val)
|
|
305
|
+
val
|
|
306
|
+
end
|
|
307
|
+
option('tag.coderay.line_numbers', true,
|
|
308
|
+
'Show line numbers', &true_or_false)
|
|
309
|
+
option('tag.coderay.line_number_start', 1,
|
|
310
|
+
'Line number of first line', &is_integer)
|
|
311
|
+
option('tag.coderay.bold_every', 10,
|
|
312
|
+
'The interval at which the line number appears bold', &is_integer)
|
|
313
|
+
option('tag.coderay.tab_width', 8,
|
|
314
|
+
'Number of spaces used for a tabulator', &is_integer)
|
|
315
|
+
|
|
316
|
+
tag.register('Tikz', :mandatory => ['path'])
|
|
317
|
+
option('tag.tikz.path', nil,
|
|
318
|
+
'The path for the created image', &is_string)
|
|
319
|
+
option('tag.tikz.img_attr', {},
|
|
320
|
+
'A hash of additional HTML attributes for the created img tag', &is_hash)
|
|
321
|
+
|
|
322
|
+
tag.register('Langbar')
|
|
323
|
+
option('tag.langbar.show_single_lang', true,
|
|
324
|
+
'Should the link be shown although the page is only available in one language?', &true_or_false)
|
|
325
|
+
option('tag.langbar.show_own_lang', true,
|
|
326
|
+
'Should the link to the currently displayed language page be shown?', &true_or_false)
|
|
327
|
+
option('tag.langbar.template', '/templates/tag.template',
|
|
328
|
+
'The block \'tag.langbar\' in this template file is used for rendering')
|
|
329
|
+
option('tag.langbar.separator', ' | ',
|
|
330
|
+
'Specifies the string that should be used as separator between the individual language parts.')
|
|
331
|
+
|
|
332
|
+
tag.register('BreadcrumbTrail')
|
|
333
|
+
option('tag.breadcrumb_trail.omit_dir_index', false,
|
|
334
|
+
'Omit the last path component if it is an index path', &true_or_false)
|
|
335
|
+
option('tag.breadcrumb_trail.start_level', 0,
|
|
336
|
+
'The level at which the breadcrumb trail starts (starting at 0)', &is_integer)
|
|
337
|
+
option('tag.breadcrumb_trail.end_level', -1,
|
|
338
|
+
'The level at which the breadcrumb trail ends (starting at 0)', &is_integer)
|
|
339
|
+
option('tag.breadcrumb_trail.separator', ' / ',
|
|
340
|
+
'The separator string which appears between the breadcrumb links', &is_string)
|
|
341
|
+
option('tag.breadcrumb_trail.template', '/templates/tag.template',
|
|
342
|
+
'The block \'tag.breadcrumb_trail\' in this template file is used for rendering')
|
|
343
|
+
|
|
344
|
+
tag.register('Menu')
|
|
345
|
+
option('tag.menu.style', 'nested',
|
|
346
|
+
'The menu rendering style to be used, either nested or flat') do |val|
|
|
347
|
+
raise "The value has to be 'nested' or 'flat'" unless %w[nested flat].include?(val.to_s)
|
|
348
|
+
val.to_s
|
|
349
|
+
end
|
|
350
|
+
option('tag.menu.options', {},
|
|
351
|
+
'Node finder options that specify which nodes the menu should use')
|
|
352
|
+
option('tag.menu.template', '/templates/tag.template',
|
|
353
|
+
'The block \'tag.menu\' in this template file is used for rendering')
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
########################################################################
|
|
357
|
+
# Everything related to the task extension
|
|
358
|
+
require 'webgen/task'
|
|
359
|
+
|
|
360
|
+
website.ext.task = task = Webgen::Task.new(website)
|
|
361
|
+
task.register('GenerateWebsite')
|
|
362
|
+
task.register('CreateWebsite', :data => {:templates => {}})
|
|
363
|
+
task.register('CreateBundle')
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
load("built-in-show-changes")
|