webgen 0.5.17 → 1.0.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- 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,38 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
require 'tempfile'
|
3
|
-
|
4
|
-
module Webgen::ContentProcessor
|
5
|
-
|
6
|
-
# Uses the external +tidy+ program to format the content as valid (X)HTML.
|
7
|
-
class Tidy
|
8
|
-
|
9
|
-
include Webgen::Loggable
|
10
|
-
|
11
|
-
# Process the content of +context+ with the +tidy+ program.
|
12
|
-
def call(context)
|
13
|
-
error_file = Tempfile.new('webgen-tidy')
|
14
|
-
error_file.close
|
15
|
-
|
16
|
-
`tidy -v 2>&1`
|
17
|
-
if $?.exitstatus != 0
|
18
|
-
raise Webgen::CommandNotFoundError.new('tidy', self.class.name, context.dest_node)
|
19
|
-
end
|
20
|
-
|
21
|
-
cmd = "tidy -q -f #{error_file.path} #{context.website.config['contentprocessor.tidy.options']}"
|
22
|
-
result = IO.popen(cmd, 'r+') do |io|
|
23
|
-
io.write(context.content)
|
24
|
-
io.close_write
|
25
|
-
io.read
|
26
|
-
end
|
27
|
-
if $?.exitstatus != 0
|
28
|
-
File.readlines(error_file.path).each do |line|
|
29
|
-
log($?.exitstatus == 1 ? :warn : :error) { "Tidy reported problems for <#{context.dest_node}>: #{line}" }
|
30
|
-
end
|
31
|
-
end
|
32
|
-
context.content = result
|
33
|
-
context
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
require 'tempfile'
|
3
|
-
|
4
|
-
module Webgen::ContentProcessor
|
5
|
-
|
6
|
-
# Uses the external +xmllint+ program to check if the content is valid (X)HTML.
|
7
|
-
class Xmllint
|
8
|
-
|
9
|
-
include Webgen::Loggable
|
10
|
-
|
11
|
-
# Checks the content of +context+ with the +xmllint+ program for validness.
|
12
|
-
def call(context)
|
13
|
-
error_file = Tempfile.new('webgen-xmllint')
|
14
|
-
error_file.close
|
15
|
-
|
16
|
-
`xmllint --version 2>&1`
|
17
|
-
if $?.exitstatus != 0
|
18
|
-
raise Webgen::CommandNotFoundError.new('xmllint', self.class.name, context.dest_node)
|
19
|
-
end
|
20
|
-
|
21
|
-
cmd = "xmllint #{context.website.config['contentprocessor.xmllint.options']} - 2>'#{error_file.path}'"
|
22
|
-
result = IO.popen(cmd, 'r+') do |io|
|
23
|
-
io.write(context.content)
|
24
|
-
io.close_write
|
25
|
-
io.read
|
26
|
-
end
|
27
|
-
if $?.exitstatus != 0
|
28
|
-
File.read(error_file.path).scan(/^-:(\d+):(.*?\n)(.*?\n)/).each do |line, error_msg, line_context|
|
29
|
-
log(:warn) { "xmllint reported problems for <#{context.dest_node}:~#{line}>: #{error_msg.strip} (context: #{line_context.strip})" }
|
30
|
-
end
|
31
|
-
end
|
32
|
-
context
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
module Webgen
|
2
|
-
|
3
|
-
class Context
|
4
|
-
|
5
|
-
# Render the named block and return the result.
|
6
|
-
#
|
7
|
-
# call-seq:
|
8
|
-
# context.render_block(block_name)<br />
|
9
|
-
# context.render_block(:name => block_name, :option => value, ...)
|
10
|
-
#
|
11
|
-
# This method uses the functionality of the content processor +blocks+ for doing the actual
|
12
|
-
# work, so you may also want to look at Webgen::ContentProcessor::Blocks#render_block. You can
|
13
|
-
# call this method in two ways:
|
14
|
-
#
|
15
|
-
# [<tt>#render_block(block_name)</tt>]
|
16
|
-
# Renders the block named +block_name+ of the next node in the current node chain. This is the
|
17
|
-
# version that most want to use since it is equivalent to the use of <tt><webgen:block
|
18
|
-
# name="block_name" /></tt>. It is equivalent to <tt>#render_block(:name =>
|
19
|
-
# block_name)</tt>.
|
20
|
-
#
|
21
|
-
# [<tt>#render_block(opts_hash)</tt>]
|
22
|
-
# This version allows the same level of control over the output as the blocks content
|
23
|
-
# processor. For a list of valid options have a look at the documentation of the
|
24
|
-
# Webgen::ContentProcessor::Blocks#render_block method!
|
25
|
-
def render_block(name_or_hash)
|
26
|
-
name_or_hash = {:name => name_or_hash} if name_or_hash.kind_of?(String)
|
27
|
-
website.cache.instance('Webgen::ContentProcessor::Blocks').render_block(self, name_or_hash)
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
data/lib/webgen/context/tags.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
module Webgen
|
2
|
-
|
3
|
-
class Context
|
4
|
-
|
5
|
-
# Returns the result of evaluating the webgen tag +name+ with the tag parameters +params+ and
|
6
|
-
# the +body+ in the current context.
|
7
|
-
#
|
8
|
-
# Have a look at Webgen::Tag::Base for more information about webgen tags!
|
9
|
-
#
|
10
|
-
# This method is useful when you want to have the functionality of webgen tags available but you
|
11
|
-
# don't want to use the content processor for them. Or, for example, if the used markup language
|
12
|
-
# uses a similar markup as webgen tags do and therefore you can't use the normal webgen tags
|
13
|
-
# content processor.
|
14
|
-
def tag(name, params = {}, body = '')
|
15
|
-
website.cache.instance('Webgen::ContentProcessor::Tags').process_tag(name, params, body, self)
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
data/lib/webgen/coreext.rb
DELETED
@@ -1,240 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
|
-
website = Webgen::WebsiteAccess.website
|
4
|
-
config = website.config
|
5
|
-
|
6
|
-
# General configuration parameters
|
7
|
-
config.website.cache([:file, 'webgen.cache'], :doc => 'The file name (or String) from/to which the cache is read/written')
|
8
|
-
config.website.lang('en', :doc => 'The default language used for the website')
|
9
|
-
config.website.link_to_current_page(false, :doc => 'Specifies whether links to the current page should be used')
|
10
|
-
|
11
|
-
# All things regarding logging
|
12
|
-
config.logger.mask(nil, :doc => 'Only show logging events which match the regexp mask')
|
13
|
-
|
14
|
-
|
15
|
-
# All things regarding resources
|
16
|
-
config.resources({}, :doc => 'A mapping from resource names to source identifiers')
|
17
|
-
|
18
|
-
resources = YAML::load(File.read(File.join(Webgen.data_dir, 'resources.yaml')))
|
19
|
-
resources.each do |res_path_template, res_name|
|
20
|
-
Dir.glob(File.join(Webgen.data_dir, res_path_template), File::FNM_CASEFOLD).each do |res_path|
|
21
|
-
substs = Hash.new {|h,k| h[k] = "$" + k }
|
22
|
-
substs.merge!({
|
23
|
-
'basename' => File.basename(res_path),
|
24
|
-
'basename_no_ext' => File.basename(res_path, '.*'),
|
25
|
-
'extname' => File.extname(res_path)[1..-1],
|
26
|
-
:dirnames => File.dirname(res_path).split(File::SEPARATOR),
|
27
|
-
})
|
28
|
-
name = res_name.to_s.gsub(/\$\w+/) do |m|
|
29
|
-
if m =~ /^\$dir(\d+)$/
|
30
|
-
substs[:dirnames][-($1.to_i)]
|
31
|
-
else
|
32
|
-
substs[m[1..-1]]
|
33
|
-
end
|
34
|
-
end
|
35
|
-
config['resources'][name] = if File.directory?(res_path)
|
36
|
-
["Webgen::Source::FileSystem", res_path]
|
37
|
-
else
|
38
|
-
["Webgen::Source::FileSystem", File.dirname(res_path), File.basename(res_path)]
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
|
44
|
-
# All things regarding sources
|
45
|
-
config.sources [['/', "Webgen::Source::FileSystem", 'src']], :doc => 'One or more sources from which files are read, relative to website directory'
|
46
|
-
config.passive_sources([['/', "Webgen::Source::Resource", "webgen-passive-sources"]], :doc => 'One or more sources for delayed node creation on node resolution')
|
47
|
-
|
48
|
-
# All things regarding source handler
|
49
|
-
config.sourcehandler.patterns({
|
50
|
-
'Webgen::SourceHandler::Copy' => ['**/*.css', '**/*.js', '**/*.html', '**/*.gif', '**/*.jpg', '**/*.png', '**/*.ico'],
|
51
|
-
'Webgen::SourceHandler::Directory' => ['**/'],
|
52
|
-
'Webgen::SourceHandler::Metainfo' => ['**/metainfo', '**/*.metainfo'],
|
53
|
-
'Webgen::SourceHandler::Template' => ['**/*.template'],
|
54
|
-
'Webgen::SourceHandler::Page' => ['**/*.page'],
|
55
|
-
'Webgen::SourceHandler::Virtual' => ['**/virtual', '**/*.virtual'],
|
56
|
-
'Webgen::SourceHandler::Feed' => ['**/*.feed'],
|
57
|
-
'Webgen::SourceHandler::Sitemap' => ['**/*.sitemap']
|
58
|
-
}, :doc => 'Source handler to path pattern map')
|
59
|
-
config.sourcehandler.invoke({
|
60
|
-
1 => ['Webgen::SourceHandler::Directory', 'Webgen::SourceHandler::Metainfo'],
|
61
|
-
5 => ['Webgen::SourceHandler::Copy', 'Webgen::SourceHandler::Template',
|
62
|
-
'Webgen::SourceHandler::Page', 'Webgen::SourceHandler::Feed',
|
63
|
-
'Webgen::SourceHandler::Sitemap'],
|
64
|
-
9 => ['Webgen::SourceHandler::Virtual']
|
65
|
-
}, :doc => 'All source handlers listed here are used by webgen and invoked according to their priority setting')
|
66
|
-
config.sourcehandler.casefold(true, :doc => 'Specifies whether path are considered to be case-sensitive')
|
67
|
-
config.sourcehandler.use_hidden_files(false, :doc => 'Specifies whether hidden files (those starting with a dot) are used')
|
68
|
-
config.sourcehandler.ignore(['**/*~', '**/.svn/**'], :doc => 'Path patterns that should be ignored')
|
69
|
-
config.sourcehandler.default_lang_in_output_path(false, :doc => 'Specifies whether output paths in the default language should have the language in the name')
|
70
|
-
|
71
|
-
config.sourcehandler.default_meta_info({
|
72
|
-
:all => {
|
73
|
-
'output_path' => 'standard',
|
74
|
-
'output_path_style' => [:parent, :basename, ['.', :lang], :ext]
|
75
|
-
},
|
76
|
-
'Webgen::SourceHandler::Copy' => {
|
77
|
-
'kind' => 'asset'
|
78
|
-
},
|
79
|
-
'Webgen::SourceHandler::Directory' => {
|
80
|
-
'index_path' => 'index.html',
|
81
|
-
'kind' => 'directory'
|
82
|
-
},
|
83
|
-
'Webgen::SourceHandler::Page' => {
|
84
|
-
'kind' => 'page',
|
85
|
-
'fragments_in_menu' => true,
|
86
|
-
'blocks' => {'default' => {'pipeline' => 'erb,tags,markdown,blocks,fragments'}}
|
87
|
-
},
|
88
|
-
'Webgen::SourceHandler::Fragment' => {
|
89
|
-
'kind' => 'fragment'
|
90
|
-
},
|
91
|
-
'Webgen::SourceHandler::Template' => {
|
92
|
-
'blocks' => {'default' => {'pipeline' => 'erb,tags,blocks,head'}}
|
93
|
-
},
|
94
|
-
'Webgen::SourceHandler::Metainfo' => {
|
95
|
-
'blocks' => {1 => {'name' => 'paths'}, 2 => {'name' => 'alcn'}}
|
96
|
-
},
|
97
|
-
'Webgen::SourceHandler::Feed' => {
|
98
|
-
'rss' => true,
|
99
|
-
'atom' => true,
|
100
|
-
'blocks' => {'default' => {'pipeline' => 'erb'}}
|
101
|
-
},
|
102
|
-
'Webgen::SourceHandler::Sitemap' => {
|
103
|
-
'default_priority' => 0.5,
|
104
|
-
'default_change_freq' => 'weekly',
|
105
|
-
'common.sitemap.any_lang' => true,
|
106
|
-
'blocks' => {'default' => {'pipeline' => 'erb'}}
|
107
|
-
}
|
108
|
-
}, :doc => "Default meta information for all nodes and for nodes belonging to a specific source handler")
|
109
|
-
|
110
|
-
config.sourcehandler.template.default_template('default.template', :doc => 'The name of the default template file of a directory')
|
111
|
-
|
112
|
-
website.autoload_service(:templates_for_node, 'Webgen::SourceHandler::Template')
|
113
|
-
|
114
|
-
website.autoload_service(:create_fragment_nodes, 'Webgen::SourceHandler::Fragment')
|
115
|
-
website.autoload_service(:parse_html_headers, 'Webgen::SourceHandler::Fragment')
|
116
|
-
|
117
|
-
|
118
|
-
# All things regarding output
|
119
|
-
config.output ["Webgen::Output::FileSystem", 'out'], :doc => 'The class which is used to output the generated paths.'
|
120
|
-
config.output.do_deletion(false, :doc => 'Specifies whether the generated output paths should be deleted once the sources are deleted')
|
121
|
-
|
122
|
-
|
123
|
-
Webgen::WebsiteAccess.website.blackboard.add_service(:output_instance, Webgen::Output.method(:instance))
|
124
|
-
|
125
|
-
|
126
|
-
# All things regarding content processors
|
127
|
-
config.contentprocessor.map({
|
128
|
-
'markdown' => 'Webgen::ContentProcessor::Kramdown',
|
129
|
-
'maruku' => 'Webgen::ContentProcessor::Maruku',
|
130
|
-
'textile' => 'Webgen::ContentProcessor::RedCloth',
|
131
|
-
'redcloth' => 'Webgen::ContentProcessor::RedCloth',
|
132
|
-
'tags' => 'Webgen::ContentProcessor::Tags',
|
133
|
-
'blocks' => 'Webgen::ContentProcessor::Blocks',
|
134
|
-
'erb' => 'Webgen::ContentProcessor::Erb',
|
135
|
-
'haml' => 'Webgen::ContentProcessor::Haml',
|
136
|
-
'sass' => 'Webgen::ContentProcessor::Sass',
|
137
|
-
'scss' => 'Webgen::ContentProcessor::Scss',
|
138
|
-
'rdoc' => 'Webgen::ContentProcessor::RDoc',
|
139
|
-
'builder' => 'Webgen::ContentProcessor::Builder',
|
140
|
-
'erubis' => 'Webgen::ContentProcessor::Erubis',
|
141
|
-
'rdiscount' => 'Webgen::ContentProcessor::RDiscount',
|
142
|
-
'fragments' => 'Webgen::ContentProcessor::Fragments',
|
143
|
-
'head' => 'Webgen::ContentProcessor::Head',
|
144
|
-
'tidy' => 'Webgen::ContentProcessor::Tidy',
|
145
|
-
'xmllint' => 'Webgen::ContentProcessor::Xmllint',
|
146
|
-
'kramdown' => 'Webgen::ContentProcessor::Kramdown',
|
147
|
-
'less' => 'Webgen::ContentProcessor::Less'
|
148
|
-
}, :doc => 'Content processor name to class map')
|
149
|
-
|
150
|
-
Webgen::WebsiteAccess.website.blackboard.add_service(:content_processor_names, Webgen::ContentProcessor.method(:list))
|
151
|
-
Webgen::WebsiteAccess.website.blackboard.add_service(:content_processor, Webgen::ContentProcessor.method(:for_name))
|
152
|
-
Webgen::WebsiteAccess.website.blackboard.add_service(:content_processor_binary?, Webgen::ContentProcessor.method(:is_binary?))
|
153
|
-
|
154
|
-
# All things regarding tags
|
155
|
-
config.contentprocessor.tags.prefix('', :doc => 'The prefix used for tag names to avoid name clashes when another content processor uses similar markup.')
|
156
|
-
config.contentprocessor.tags.map({
|
157
|
-
'relocatable' => 'Webgen::Tag::Relocatable',
|
158
|
-
'menu' => 'Webgen::Tag::Menu',
|
159
|
-
'breadcrumb_trail' => 'Webgen::Tag::BreadcrumbTrail',
|
160
|
-
'langbar' => 'Webgen::Tag::Langbar',
|
161
|
-
'include_file' => 'Webgen::Tag::IncludeFile',
|
162
|
-
'execute_cmd' => 'Webgen::Tag::ExecuteCommand',
|
163
|
-
'coderay' => 'Webgen::Tag::Coderay',
|
164
|
-
'date' => 'Webgen::Tag::Date',
|
165
|
-
'sitemap' => 'Webgen::Tag::Sitemap',
|
166
|
-
'tikz' => 'Webgen::Tag::TikZ',
|
167
|
-
'link' => 'Webgen::Tag::Link',
|
168
|
-
:default => 'Webgen::Tag::Metainfo'
|
169
|
-
}, :doc => 'Tag processor name to class map')
|
170
|
-
|
171
|
-
config.contentprocessor.erubis.use_pi(false, :doc => 'Specifies whether processing instructions should be used')
|
172
|
-
config.contentprocessor.erubis.options({}, :doc => 'A hash of additional options')
|
173
|
-
|
174
|
-
config.contentprocessor.redcloth.hard_breaks(false, :doc => 'Specifies whether new lines are turned into hard breaks')
|
175
|
-
|
176
|
-
config.contentprocessor.tidy.options("-raw", :doc => "The options passed to the tidy command")
|
177
|
-
|
178
|
-
config.contentprocessor.xmllint.options("--catalogs --noout --valid", :doc => 'Options passed to the xmllint command')
|
179
|
-
|
180
|
-
config.contentprocessor.kramdown.options({:auto_ids => true}, :doc => 'The options hash for the kramdown processor')
|
181
|
-
config.contentprocessor.kramdown.handle_links(true, :doc => 'Whether all links in a kramdown document should be handled by webgen')
|
182
|
-
|
183
|
-
|
184
|
-
config.tag.metainfo.escape_html(true, :doc => 'Special HTML characters in the output will be escaped if true')
|
185
|
-
|
186
|
-
config.tag.relocatable.path(nil, :doc => 'The path which should be made relocatable', :mandatory => 'default')
|
187
|
-
|
188
|
-
config.tag.menu.start_level(1, :doc => 'The level at which the menu starts.')
|
189
|
-
config.tag.menu.min_levels(1, :doc => 'The minimum number of menu levels that should always be shown.')
|
190
|
-
config.tag.menu.max_levels(3, :doc => 'The maximum number of menu levels that should be shown.')
|
191
|
-
config.tag.menu.show_current_subtree_only(true, :doc => 'Specifies whether only the current subtree should be shown.')
|
192
|
-
config.tag.menu.used_nodes('all', :doc => 'Specifies the kind of nodes that should be used: all, files, or fragments')
|
193
|
-
config.tag.menu.nested(true, :doc => 'Specifies whether a nested menu list should be generated.')
|
194
|
-
|
195
|
-
config.tag.breadcrumbtrail.separator(' / ', :doc => 'Separates the hierachy entries from each other.')
|
196
|
-
config.tag.breadcrumbtrail.omit_index_path(false, :doc => 'Omits the last path component if it is an index path.')
|
197
|
-
config.tag.breadcrumbtrail.start_level(0, :doc => 'The level at which the breadcrumb trail starts.')
|
198
|
-
config.tag.breadcrumbtrail.end_level(-1, :doc => 'The level at which the breadcrumb trail ends.')
|
199
|
-
|
200
|
-
config.tag.langbar.separator(' | ', :doc => 'Separates the languages from each other.')
|
201
|
-
config.tag.langbar.show_single_lang(true, :doc => 'Should the link be shown although the page is only available in one language?')
|
202
|
-
config.tag.langbar.show_own_lang(true, :doc => 'Should the link to the currently displayed language page be shown?')
|
203
|
-
config.tag.langbar.lang_names({}, :doc => 'A map from language code to language names')
|
204
|
-
config.tag.langbar.process_output(false, :doc => 'The content of the language bar will be scanned for tags if true.')
|
205
|
-
|
206
|
-
config.tag.includefile.filename(nil, :doc => 'The name of the file which should be included (relative to the website).', :mandatory => 'default')
|
207
|
-
config.tag.includefile.process_output(true, :doc => 'The file content will be scanned for tags if true.')
|
208
|
-
config.tag.includefile.escape_html(true, :doc => 'Special HTML characters in the file content will be escaped if true.')
|
209
|
-
|
210
|
-
config.tag.executecommand.command(nil, :doc => 'The command which should be executed', :mandatory => 'default')
|
211
|
-
config.tag.executecommand.process_output(true, :doc => 'The output of the command will be scanned for tags if true')
|
212
|
-
config.tag.executecommand.escape_html(true, :doc => 'Special HTML characters in the output will be escaped if true')
|
213
|
-
|
214
|
-
config.tag.coderay.lang('ruby', :doc => 'The highlighting language', :mandatory => 'default')
|
215
|
-
config.tag.coderay.process_body(true, :doc => 'The tag body will be scanned for tags first if true')
|
216
|
-
config.tag.coderay.wrap(:div, :doc => 'Specifies how the code should be wrapped, either :div or :span')
|
217
|
-
config.tag.coderay.line_numbers(true, :doc => 'Show line numbers')
|
218
|
-
config.tag.coderay.line_number_start(1, :doc => 'Line number of first line')
|
219
|
-
config.tag.coderay.bold_every(10, :doc => 'The interval at which the line number appears bold')
|
220
|
-
config.tag.coderay.tab_width(8, :doc => 'Number of spaces used for a tabulator')
|
221
|
-
config.tag.coderay.css(:style, :doc => 'Specifies how the highlighted code should be styled')
|
222
|
-
|
223
|
-
config.tag.date.format('%Y-%m-%d %H:%M:%S', :doc => 'The format of the date (same options as Ruby\'s Time#strftime)')
|
224
|
-
|
225
|
-
config.tag.tikz.path(nil, :doc => 'The source path of the created image', :mandatory => 'default')
|
226
|
-
config.tag.tikz.libraries(nil, :doc => 'An array of additional TikZ library names')
|
227
|
-
config.tag.tikz.opts(nil, :doc => 'A string with global options for the tikzpicture environment')
|
228
|
-
config.tag.tikz.resolution('72 72', :doc => 'A string specifying the render and output resolutions')
|
229
|
-
config.tag.tikz.transparent(false, :doc => 'Specifies whether the generated image should be transparent (only png)')
|
230
|
-
config.tag.tikz.img_attr({}, :doc => 'A hash of additional HTML attributes for the created img tag')
|
231
|
-
|
232
|
-
config.tag.link.path(nil, :doc => 'The (A)LCN path to which a link should be generated', :mandatory => 'default')
|
233
|
-
config.tag.link.attr({}, :doc => 'A hash of additional HTML attributes that should be set on the link')
|
234
|
-
|
235
|
-
# All things regarding common functionality
|
236
|
-
website.autoload_service(:create_sitemap, 'Webgen::Common::Sitemap')
|
237
|
-
|
238
|
-
config.common.sitemap.honor_in_menu(false, :doc => 'Only include pages that are also in the menu if true')
|
239
|
-
config.common.sitemap.any_lang(false, :doc => 'Use nodes in any language if true')
|
240
|
-
config.common.sitemap.used_kinds(['page'], :doc => 'Array of node kinds that is used for the sitemap')
|
data/lib/webgen/loggable.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
|
-
require 'webgen/websiteaccess'
|
4
|
-
|
5
|
-
module Webgen
|
6
|
-
|
7
|
-
# This module should be included in all classes that need a logging facility.
|
8
|
-
module Loggable
|
9
|
-
|
10
|
-
# Log the result of the +block+ using the log level +log_level+.
|
11
|
-
def log(sev_level, &block)
|
12
|
-
source = (self.kind_of?(Class) ? self.name : self.class.name) + '#' + caller[0][%r"`.*"][1..-2]
|
13
|
-
if WebsiteAccess.website && WebsiteAccess.website.logger && (!WebsiteAccess.website.config['logger.mask'] || source =~ WebsiteAccess.website.config['logger.mask'])
|
14
|
-
WebsiteAccess.website.logger.send(sev_level, source, &block)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
# Shortcut for writing a line to the normal log output.
|
19
|
-
def puts(*args)
|
20
|
-
(args.last == :verbose ? log(:verbose) { args[0..-2].join } : log(:stdout) { args.join })
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
data/lib/webgen/output.rb
DELETED
@@ -1,86 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
|
-
require 'webgen/common'
|
4
|
-
|
5
|
-
module Webgen
|
6
|
-
|
7
|
-
# Namespace for all classes that know how to write out node content.
|
8
|
-
#
|
9
|
-
# == Implementing an output class
|
10
|
-
#
|
11
|
-
# Output classes know how to write rendered node data to an output location.
|
12
|
-
#
|
13
|
-
# An output class must respond to three methods
|
14
|
-
#
|
15
|
-
# [<tt>exists?(path)</tt>]
|
16
|
-
# Return +true+ if the output path exists.
|
17
|
-
# [<tt>delete(path)</tt>]
|
18
|
-
# Delete the given output path.
|
19
|
-
# [<tt>write(path, data, type)</tt>]
|
20
|
-
# Write the +data+ to the given output +path+. The parameter +data+ is either a String with the
|
21
|
-
# content or a Webgen::Path::SourceIO object. The parameter +type+ specifies the type of the to
|
22
|
-
# be written path: <tt>:file</tt> or <tt>:directory</tt>.
|
23
|
-
# [<tt>read(path, mode = 'rb')</tt>]
|
24
|
-
# Return the content of the given path if it exists or raise an error otherwise. The parameter
|
25
|
-
# +mode+ specifies the mode in which the path should be opened and defaults to reading in binary
|
26
|
-
# mode.
|
27
|
-
#
|
28
|
-
# It seems a bit odd that an output instance has to implement reading functionality. However,
|
29
|
-
# consider the case where you want webgen to render a website programmatically and *use* the
|
30
|
-
# output. In this case you need a way to get to content of the written files! This functionality
|
31
|
-
# is used, for example, in the webgui.
|
32
|
-
#
|
33
|
-
# == Sample Output Class
|
34
|
-
#
|
35
|
-
# Following is a simple but actually used (by the webgui) output class which stores the written
|
36
|
-
# nodes in a hash in memory:
|
37
|
-
#
|
38
|
-
# class MemoryOutput
|
39
|
-
# include Webgen::WebsiteAccess
|
40
|
-
#
|
41
|
-
# attr_reader :data
|
42
|
-
#
|
43
|
-
# def initialize
|
44
|
-
# @data = {}
|
45
|
-
# end
|
46
|
-
#
|
47
|
-
# def exists?(path)
|
48
|
-
# @data.has_key?(path)
|
49
|
-
# end
|
50
|
-
#
|
51
|
-
# def delete(path)
|
52
|
-
# @data.delete(path)
|
53
|
-
# end
|
54
|
-
#
|
55
|
-
# def write(path, io, type = :file)
|
56
|
-
# @data[path] = [(io.kind_of?(String) ? io : io.data), type]
|
57
|
-
# end
|
58
|
-
#
|
59
|
-
# def read(path, mode = 'rb')
|
60
|
-
# path = File.join('/', path)
|
61
|
-
# raise "No such file #{path}" unless @data[path] && @data[path].last == :file
|
62
|
-
# @data[path].first
|
63
|
-
# end
|
64
|
-
# end
|
65
|
-
#
|
66
|
-
# WebsiteAccess.website.config.output(['MemoryOutput'])
|
67
|
-
#
|
68
|
-
# The last line is used to tell webgen to use this new output class instead of the default one.
|
69
|
-
#
|
70
|
-
module Output
|
71
|
-
|
72
|
-
autoload :FileSystem, 'webgen/output/filesystem'
|
73
|
-
|
74
|
-
# Returns an instance of the configured output class.
|
75
|
-
def self.instance
|
76
|
-
classes = (WebsiteAccess.website.cache.volatile[:classes] ||= {})
|
77
|
-
unless classes.has_key?(:output_instance)
|
78
|
-
klass, *args = WebsiteAccess.website.config['output']
|
79
|
-
classes[:output_instance] = Common.const_for_name(klass).new(*args)
|
80
|
-
end
|
81
|
-
classes[:output_instance]
|
82
|
-
end
|
83
|
-
|
84
|
-
end
|
85
|
-
|
86
|
-
end
|