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,281 +0,0 @@
|
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
|
2
|
-
|
|
3
|
-
require 'webgen/websiteaccess'
|
|
4
|
-
require 'webgen/loggable'
|
|
5
|
-
require 'webgen/page'
|
|
6
|
-
|
|
7
|
-
module Webgen::SourceHandler
|
|
8
|
-
|
|
9
|
-
# This module should be included in every source handler as it provides the default methods for
|
|
10
|
-
# creating nodes.
|
|
11
|
-
#
|
|
12
|
-
# == Implementing Source Handlers
|
|
13
|
-
#
|
|
14
|
-
# A source handler is a webgen extension that processes source paths to create nodes and that
|
|
15
|
-
# provides the rendered content of these nodes. The nodes are later written to the output
|
|
16
|
-
# location. This can range from simply copying a path from the source to the output location to
|
|
17
|
-
# generating a whole set of nodes from one input path!
|
|
18
|
-
#
|
|
19
|
-
# The paths that are handled by a source handler are specified via path patterns (see
|
|
20
|
-
# below). During a webgen run the #create_node method for each source paths that matches a
|
|
21
|
-
# specified path pattern is called. And when it is time to write out the node, the #content
|
|
22
|
-
# method is called to retrieve the rendered content.
|
|
23
|
-
#
|
|
24
|
-
# A source handler must not take any parameters on initialization and when this module is not
|
|
25
|
-
# mixed in, the methods #create_node and #content need to be defined. Also, a source handler does
|
|
26
|
-
# not need to reside under the Webgen::SourceHandler namespace but all shipped ones do.
|
|
27
|
-
#
|
|
28
|
-
# This base class provides useful default implementations of methods that are used by nearly all
|
|
29
|
-
# source handler classes:
|
|
30
|
-
# * #create_node
|
|
31
|
-
# * #output_path
|
|
32
|
-
# * #node_exists?
|
|
33
|
-
#
|
|
34
|
-
# It also provides other utility methods:
|
|
35
|
-
# * #page_from_path
|
|
36
|
-
# * #content
|
|
37
|
-
# * #parent_node
|
|
38
|
-
#
|
|
39
|
-
# == Nodes Created for Paths
|
|
40
|
-
#
|
|
41
|
-
# The main functions of a source handler class are to create one or more nodes for a source path
|
|
42
|
-
# and to provide the content of these nodes. To achieve this, certain information needs to be set
|
|
43
|
-
# on a created node. If you use the +create_node+ method provided by this base class, you don't
|
|
44
|
-
# need to set them explicitly because this is done by the method:
|
|
45
|
-
#
|
|
46
|
-
# [<tt>node_info[:processor]</tt>] Has to be set to the class name of the source handler. This is
|
|
47
|
-
# used by the Node class: all unknown method calls are forwarded
|
|
48
|
-
# to the node processor.
|
|
49
|
-
# [<tt>node_info[:src]</tt>] Has to be set to the string version of the path that lead to the
|
|
50
|
-
# creation of the node.
|
|
51
|
-
# [<tt>node_info[:creation_path]</tt>] Has to be set to the string version of the path that is
|
|
52
|
-
# used to create the path.
|
|
53
|
-
# [<tt>meta_info['no_output']</tt>] Has to be set to +true+ on nodes that are used during a
|
|
54
|
-
# webgen run but do not produce an output file.
|
|
55
|
-
# [<tt>meta_info['modified_at']</tt>] Has to be set to the current time if not already set
|
|
56
|
-
# correctly (ie. if not a Time object).
|
|
57
|
-
#
|
|
58
|
-
# If <tt>meta_info['draft']</tt> is set on a path, then no node should be created in +create_node+
|
|
59
|
-
# and +nil+ has to be returned.
|
|
60
|
-
#
|
|
61
|
-
# Note: The difference between +:src+ and +:creation_path+ is that a creation path
|
|
62
|
-
# need not have an existing source path representation. For example, fragments created from a page
|
|
63
|
-
# source path have a different +:creation_path+ which includes the fragment part.
|
|
64
|
-
#
|
|
65
|
-
# Additional information that is used only for processing purposes should be stored in the
|
|
66
|
-
# #node_info hash of a node as the #meta_info hash is reserved for real node meta information and
|
|
67
|
-
# should not be changed once the node is created.
|
|
68
|
-
#
|
|
69
|
-
# == Output Path Names
|
|
70
|
-
#
|
|
71
|
-
# The method for creating an output path name for a source path is stored in the meta information
|
|
72
|
-
# +output_path+. If you don't use the provided method +output_path+, have a look at its
|
|
73
|
-
# implementation to see how to an output path gets created. Individual output path creation
|
|
74
|
-
# methods are stored as methods in the OutputPathHelpers module.
|
|
75
|
-
#
|
|
76
|
-
# == Path Patterns and Invocation order
|
|
77
|
-
#
|
|
78
|
-
# Path patterns define which paths are handled by a specific source handler. These patterns are
|
|
79
|
-
# specified in the <tt>sourcehandler.patterns</tt> configuration hash as a mapping from the source
|
|
80
|
-
# handler class name to an array of path patterns. The patterns need to have a format that
|
|
81
|
-
# <tt>Dir.glob</tt> can handle. You can use the configuration helper +patterns+ to set this (is
|
|
82
|
-
# shown in the example below).
|
|
83
|
-
#
|
|
84
|
-
# Specifying a path pattern does not mean that webgen uses the source handler. One also needs to
|
|
85
|
-
# provide an entry in the configuration value <tt>sourcehandler.invoke</tt>. This is a hash that
|
|
86
|
-
# maps the invocation rank (a number) to an array of source handler class names. The lower the
|
|
87
|
-
# invocation rank the earlier the specified source handlers are used.
|
|
88
|
-
#
|
|
89
|
-
# The default invocation ranks are:
|
|
90
|
-
# [1] Early. Normally there is no need to use this rank.
|
|
91
|
-
# [5] Standard. This is the rank the normal source handler should use.
|
|
92
|
-
# [9] Late. This rank should be used by source handlers that operate on/use already created nodes
|
|
93
|
-
# and need to ensure that these nodes are available.
|
|
94
|
-
#
|
|
95
|
-
# == Default Meta Information
|
|
96
|
-
#
|
|
97
|
-
# Each source handler can define default meta information that gets automatically set on the
|
|
98
|
-
# source paths that are passed to the #create_node method.
|
|
99
|
-
#
|
|
100
|
-
# The default meta information is specified in the <tt>sourcehandler.default_meta_info</tt>
|
|
101
|
-
# configuration hash as a mapping from the source handler class name to the meta information
|
|
102
|
-
# hash.
|
|
103
|
-
#
|
|
104
|
-
# == Sample Source Handler Class
|
|
105
|
-
#
|
|
106
|
-
# Following is a simple source handler class example which copies paths from the source to
|
|
107
|
-
# the output location modifying the extension:
|
|
108
|
-
#
|
|
109
|
-
# class SimpleCopy
|
|
110
|
-
#
|
|
111
|
-
# include Webgen::SourceHandler::Base
|
|
112
|
-
# include Webgen::WebsiteAccess
|
|
113
|
-
#
|
|
114
|
-
# def create_node(path)
|
|
115
|
-
# path.ext += '.copied'
|
|
116
|
-
# super(path)
|
|
117
|
-
# end
|
|
118
|
-
#
|
|
119
|
-
# def content(node)
|
|
120
|
-
# website.blackboard.invoke(:source_paths)[node.node_info[:src]].io
|
|
121
|
-
# end
|
|
122
|
-
#
|
|
123
|
-
# end
|
|
124
|
-
#
|
|
125
|
-
# WebsiteAccess.website.config.patterns('SimpleCopy' => ['**/*.jpg', '**/*.png'])
|
|
126
|
-
# WebsiteAccess.website.config.sourcehandler.invoke[5] << 'SimpleCopy'
|
|
127
|
-
#
|
|
128
|
-
module Base
|
|
129
|
-
|
|
130
|
-
# This module is used for defining all methods that can be used for creating output paths.
|
|
131
|
-
#
|
|
132
|
-
# All public methods of this module are considered to be output path creation methods and must
|
|
133
|
-
# have the following parameters:
|
|
134
|
-
#
|
|
135
|
-
# [+parent+] the parent node
|
|
136
|
-
# [+path+] the path for which the output name should be created
|
|
137
|
-
# [+use_lang_part+] controls whether the output path name has to include the language part
|
|
138
|
-
module OutputPathHelpers
|
|
139
|
-
|
|
140
|
-
# Default method for creating an output path for +parent+ and source +path+.
|
|
141
|
-
#
|
|
142
|
-
# The automatically set parameter +style+ (which uses the meta information +output_path_style+
|
|
143
|
-
# from the path's meta information hash) defines how the output name should be built (more
|
|
144
|
-
# information about this in the user documentation).
|
|
145
|
-
def standard_output_path(parent, path, use_lang_part, style = path.meta_info['output_path_style'])
|
|
146
|
-
result = style.collect do |part|
|
|
147
|
-
case part
|
|
148
|
-
when String then part
|
|
149
|
-
when :lang then use_lang_part ? path.meta_info['lang'] : ''
|
|
150
|
-
when :ext then path.ext.empty? ? '' : '.' + path.ext
|
|
151
|
-
when :parent then temp = parent; temp = temp.parent while temp.is_fragment?; temp.path
|
|
152
|
-
when :year, :month, :day
|
|
153
|
-
ctime = path.meta_info['created_at']
|
|
154
|
-
if !ctime.kind_of?(Time)
|
|
155
|
-
raise Webgen::NodeCreationError.new("Invalid meta info 'created_at', needed because of used output path style",
|
|
156
|
-
self.class.name, path)
|
|
157
|
-
end
|
|
158
|
-
ctime.send(part).to_s.rjust(2, '0')
|
|
159
|
-
when Symbol then path.send(part)
|
|
160
|
-
when Array then part.include?(:lang) && !use_lang_part ? '' : standard_output_path(parent, path, use_lang_part, part)
|
|
161
|
-
else ''
|
|
162
|
-
end
|
|
163
|
-
end
|
|
164
|
-
result.join('')
|
|
165
|
-
end
|
|
166
|
-
|
|
167
|
-
end
|
|
168
|
-
|
|
169
|
-
include Webgen::Loggable
|
|
170
|
-
include OutputPathHelpers
|
|
171
|
-
|
|
172
|
-
# Construct the output name for the given +path+ and +parent+. First it is checked if a node
|
|
173
|
-
# with the constructed output name already exists. If it exists, the language part is forced to
|
|
174
|
-
# be in the output name and the resulting output name is returned.
|
|
175
|
-
def output_path(parent, path)
|
|
176
|
-
method = path.meta_info['output_path'] + '_output_path'
|
|
177
|
-
use_lang_part = if path.meta_info['lang'].nil? # unlocalized files never get a lang in the filename!
|
|
178
|
-
false
|
|
179
|
-
else
|
|
180
|
-
Webgen::WebsiteAccess.website.config['sourcehandler.default_lang_in_output_path'] ||
|
|
181
|
-
Webgen::WebsiteAccess.website.config['website.lang'] != path.meta_info['lang']
|
|
182
|
-
end
|
|
183
|
-
if OutputPathHelpers.public_instance_methods(false).map {|c| c.to_s}.include?(method)
|
|
184
|
-
name = send(method, parent, path, use_lang_part)
|
|
185
|
-
name += '/' if path.path =~ /\/$/ && name !~ /\/$/
|
|
186
|
-
if (node = node_exists?(path, name)) && node.lang != path.meta_info['lang']
|
|
187
|
-
name = send(method, parent, path, (path.meta_info['lang'].nil? ? false : true))
|
|
188
|
-
name += '/' if path.path =~ /\/$/ && name !~ /\/$/
|
|
189
|
-
end
|
|
190
|
-
name
|
|
191
|
-
else
|
|
192
|
-
raise Webgen::NodeCreationError.new("Unknown method for creating output path: #{path.meta_info['output_path']}",
|
|
193
|
-
self.class.name, path)
|
|
194
|
-
end
|
|
195
|
-
end
|
|
196
|
-
|
|
197
|
-
# Check if the node alcn and output path which would be created by #create_node exist. The
|
|
198
|
-
# +output_path+ to check for can individually be set.
|
|
199
|
-
def node_exists?(path, output_path = self.output_path(parent_node(path), path))
|
|
200
|
-
Webgen::WebsiteAccess.website.tree[path.alcn] || (!path.meta_info['no_output'] && Webgen::WebsiteAccess.website.tree[output_path, :path])
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
# Create a node from +path+ if it does not already exists or re-initalize an already existing
|
|
204
|
-
# node. The found node or the newly created node is returned afterwards. +nil+ is returned if no
|
|
205
|
-
# node can be created (e.g. when <tt>path.meta_info['draft']</tt> is set).
|
|
206
|
-
#
|
|
207
|
-
# The +options+ parameter can be used for providing the optional parameters:
|
|
208
|
-
#
|
|
209
|
-
# [<tt>:parent</tt>] The parent node under which the new node should be created. If this is not
|
|
210
|
-
# specified (the usual case), the parent node is determined by the
|
|
211
|
-
# #parent_node method.
|
|
212
|
-
#
|
|
213
|
-
# [<tt>:output_path</tt>] The output path that should be used for the node. If this is not
|
|
214
|
-
# specified (the usual case), the output path is determined via the
|
|
215
|
-
# #output_path method.
|
|
216
|
-
#
|
|
217
|
-
# Some additional node information like <tt>:src</tt> and <tt>:processor</tt> is set and the
|
|
218
|
-
# meta information is checked for validness. The created/re-initialized node is yielded if a
|
|
219
|
-
# block is given.
|
|
220
|
-
def create_node(path, options = {})
|
|
221
|
-
return nil if path.meta_info['draft']
|
|
222
|
-
parent = options[:parent] || parent_node(path)
|
|
223
|
-
output_path = options[:output_path] || self.output_path(parent, path)
|
|
224
|
-
node = node_exists?(path, output_path)
|
|
225
|
-
|
|
226
|
-
if node && (node.node_info[:src] != path.source_path || node.node_info[:processor] != self.class.name)
|
|
227
|
-
log(:warn) { "Node already exists: source = #{path.source_path} | path = #{node.path} | alcn = #{node.alcn}"}
|
|
228
|
-
return node #TODO: think! should nil be returned?
|
|
229
|
-
elsif !node
|
|
230
|
-
node = Webgen::Node.new(parent, output_path, path.cn, path.meta_info)
|
|
231
|
-
elsif node.flagged?(:reinit)
|
|
232
|
-
node.reinit(output_path, path.meta_info)
|
|
233
|
-
else
|
|
234
|
-
return node
|
|
235
|
-
end
|
|
236
|
-
|
|
237
|
-
if !node['modified_at'].kind_of?(Time)
|
|
238
|
-
log(:warn) { "Meta information 'modified_at' set to current time in <#{node}> since its value '#{node['modified_at']}' was of type #{node['modified_at'].class}" } unless node['modified_at'].nil?
|
|
239
|
-
node['modified_at'] = Time.now
|
|
240
|
-
end
|
|
241
|
-
node.node_info[:src] = path.source_path
|
|
242
|
-
node.node_info[:creation_path] = path.path
|
|
243
|
-
node.node_info[:processor] = self.class.name
|
|
244
|
-
yield(node) if block_given?
|
|
245
|
-
node
|
|
246
|
-
end
|
|
247
|
-
|
|
248
|
-
# Return the content of the given +node+. If the return value is not +nil+ then the node gets
|
|
249
|
-
# written, otherwise it is ignored.
|
|
250
|
-
#
|
|
251
|
-
# This default +content+ method just returns +nil+.
|
|
252
|
-
def content(node)
|
|
253
|
-
nil
|
|
254
|
-
end
|
|
255
|
-
|
|
256
|
-
# Utility method for creating a Webgen::Page object from the +path+. Also updates
|
|
257
|
-
# <tt>path.meta_info</tt> with the meta info from the page.
|
|
258
|
-
def page_from_path(path)
|
|
259
|
-
begin
|
|
260
|
-
page = Webgen::Page.from_data(path.io.data, path.meta_info)
|
|
261
|
-
rescue Webgen::Page::FormatError => e
|
|
262
|
-
raise Webgen::NodeCreationError.new("Error reading source path: #{e.message}",
|
|
263
|
-
self.class.name, path)
|
|
264
|
-
end
|
|
265
|
-
path.meta_info = page.meta_info
|
|
266
|
-
page
|
|
267
|
-
end
|
|
268
|
-
|
|
269
|
-
# Return the parent node for the given +path+.
|
|
270
|
-
def parent_node(path)
|
|
271
|
-
parent_dir = (path.parent_path == '' ? '' : Webgen::Path.new(path.parent_path).alcn)
|
|
272
|
-
if !(parent = Webgen::WebsiteAccess.website.tree[parent_dir])
|
|
273
|
-
raise Webgen::NodeCreationError.new("The needed parent path <#{parent_dir}> does not exist",
|
|
274
|
-
self.class.name, path)
|
|
275
|
-
end
|
|
276
|
-
parent
|
|
277
|
-
end
|
|
278
|
-
|
|
279
|
-
end
|
|
280
|
-
|
|
281
|
-
end
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
|
2
|
-
|
|
3
|
-
module Webgen::SourceHandler
|
|
4
|
-
|
|
5
|
-
# Simple source handler for copying files from the source tree, either verbatim or by applying a
|
|
6
|
-
# content processor.
|
|
7
|
-
class Copy
|
|
8
|
-
|
|
9
|
-
include Webgen::WebsiteAccess
|
|
10
|
-
include Base
|
|
11
|
-
|
|
12
|
-
# Create the node for +path+. If the +path+ has the name of a content processor as the first
|
|
13
|
-
# part in the extension, it is preprocessed.
|
|
14
|
-
def create_node(path)
|
|
15
|
-
if path.ext.index('.')
|
|
16
|
-
processor, *rest = path.ext.split('.')
|
|
17
|
-
if website.blackboard.invoke(:content_processor_names).include?(processor)
|
|
18
|
-
path.ext = rest.join('.')
|
|
19
|
-
else
|
|
20
|
-
processor = nil
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
super(path) do |node|
|
|
24
|
-
node.node_info[:preprocessor] = processor
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
# Return either the preprocessed content of the +node+ or the IO object for the node's source
|
|
29
|
-
# path depending on the node type.
|
|
30
|
-
def content(node)
|
|
31
|
-
io = website.blackboard.invoke(:source_paths)[node.node_info[:src]].io
|
|
32
|
-
if node.node_info[:preprocessor]
|
|
33
|
-
is_binary = website.blackboard.invoke(:content_processor_binary?, node.node_info[:preprocessor])
|
|
34
|
-
context = Webgen::Context.new(:content => io.data(is_binary ? 'rb' : 'r'), :chain => [node])
|
|
35
|
-
website.blackboard.invoke(:content_processor, node.node_info[:preprocessor]).call(context)
|
|
36
|
-
context.content
|
|
37
|
-
else
|
|
38
|
-
io
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
end
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
|
2
|
-
|
|
3
|
-
module Webgen::SourceHandler
|
|
4
|
-
|
|
5
|
-
# Handles directory source paths.
|
|
6
|
-
class Directory
|
|
7
|
-
|
|
8
|
-
include Base
|
|
9
|
-
include Webgen::WebsiteAccess
|
|
10
|
-
|
|
11
|
-
def initialize # :nodoc:
|
|
12
|
-
website.blackboard.add_service(:create_directories, method(:create_directories))
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
# Recursively create the directories specified in +dirname+ under +parent+ (a leading slash is
|
|
16
|
-
# ignored). The path +path+ is the path that lead to the creation of these directories.
|
|
17
|
-
def create_directories(parent, dirname, path)
|
|
18
|
-
dirname.sub(/^\//, '').split('/').each do |dir|
|
|
19
|
-
dir_path = Webgen::Path.new(File.join(parent.alcn, dir, '/'), path)
|
|
20
|
-
nodes = website.blackboard.invoke(:create_nodes, dir_path, self) do |dir_path|
|
|
21
|
-
node_exists?(dir_path) || create_node(dir_path)
|
|
22
|
-
end
|
|
23
|
-
parent = nodes.first
|
|
24
|
-
end
|
|
25
|
-
parent
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
end
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
|
2
|
-
|
|
3
|
-
module Webgen::SourceHandler
|
|
4
|
-
|
|
5
|
-
# Source handler for creating atom and/or rss feeds.
|
|
6
|
-
class Feed
|
|
7
|
-
|
|
8
|
-
include Webgen::WebsiteAccess
|
|
9
|
-
include Base
|
|
10
|
-
|
|
11
|
-
# The mandatory keys that need to be set in a feed file.
|
|
12
|
-
MANDATORY_INFOS = %W[site_url author entries]
|
|
13
|
-
|
|
14
|
-
def initialize # :nodoc:
|
|
15
|
-
website.blackboard.add_listener(:node_changed?, method(:node_changed?))
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
# Create atom and/or rss feed files from +path+.
|
|
19
|
-
def create_node(path)
|
|
20
|
-
page = page_from_path(path)
|
|
21
|
-
path.meta_info['link'] ||= path.parent_path
|
|
22
|
-
|
|
23
|
-
if MANDATORY_INFOS.any? {|t| path.meta_info[t].nil?}
|
|
24
|
-
raise Webgen::NodeCreationError.new("At least one of #{MANDATORY_INFOS.join('/')} is missing",
|
|
25
|
-
self.class.name, path)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
create_feed_node = lambda do |type|
|
|
29
|
-
path.ext = type
|
|
30
|
-
super(path) do |node|
|
|
31
|
-
node.node_info[:feed] = page
|
|
32
|
-
node.node_info[:feed_type] = type
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
nodes = []
|
|
37
|
-
nodes << create_feed_node['atom'] if path.meta_info['atom']
|
|
38
|
-
nodes << create_feed_node['rss'] if path.meta_info['rss']
|
|
39
|
-
|
|
40
|
-
nodes
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# Return the rendered feed represented by +node+.
|
|
44
|
-
def content(node)
|
|
45
|
-
website.cache[[:sourcehandler_feed, node.node_info[:src]]] = feed_entries(node).map {|n| n.alcn}
|
|
46
|
-
|
|
47
|
-
block_name = node.node_info[:feed_type] + '_template'
|
|
48
|
-
if node.node_info[:feed].blocks.has_key?(block_name)
|
|
49
|
-
node.node_info[:feed].blocks[block_name].render(Webgen::Context.new(:chain => [node])).content
|
|
50
|
-
else
|
|
51
|
-
chain = [node.resolve("/templates/#{node.node_info[:feed_type]}_feed.template"), node]
|
|
52
|
-
node.node_info[:used_nodes] << chain.first.alcn
|
|
53
|
-
chain.first.node_info[:page].blocks['content'].render(Webgen::Context.new(:chain => chain)).content
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
# Return the entries for the feed +node+.
|
|
58
|
-
def feed_entries(node)
|
|
59
|
-
nr_items = (node['number_of_entries'].to_i == 0 ? 10 : node['number_of_entries'].to_i)
|
|
60
|
-
patterns = [node['entries']].flatten.map {|pat| Webgen::Path.make_absolute(node.parent.alcn, pat)}
|
|
61
|
-
|
|
62
|
-
node.tree.node_access[:alcn].values.
|
|
63
|
-
select {|node| patterns.any? {|pat| node =~ pat} && node.node_info[:page]}.
|
|
64
|
-
sort {|a,b| a['modified_at'] <=> b['modified_at']}.reverse[0, nr_items]
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
# Return the feed link URL for the feed +node+.
|
|
68
|
-
def feed_link(node)
|
|
69
|
-
Webgen::Node.url(File.join(node['site_url'], node.tree[node['link']].path), false)
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
# Return the content of an +entry+ of the feed +node+.
|
|
73
|
-
def entry_content(node, entry)
|
|
74
|
-
entry.node_info[:page].blocks[node['content_block_name'] || 'content'].render(Webgen::Context.new(:chain => [entry])).content
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
#######
|
|
78
|
-
private
|
|
79
|
-
#######
|
|
80
|
-
|
|
81
|
-
# Check if the any of the nodes used by this feed +node+ have changed and then mark the node as
|
|
82
|
-
# dirty.
|
|
83
|
-
def node_changed?(node)
|
|
84
|
-
return if node.node_info[:processor] != self.class.name
|
|
85
|
-
entries = node.feed_entries
|
|
86
|
-
node.flag(:dirty) if entries.map {|n| n.alcn } != website.cache[[:sourcehandler_feed, node.node_info[:src]]] ||
|
|
87
|
-
entries.any? {|n| n.changed?}
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
end
|