From 45d325d8d9c65f76571c8cbd0a082d0f751b2a02 Mon Sep 17 00:00:00 2001 From: LightGuard Date: Thu, 24 Jan 2013 20:02:09 -0700 Subject: [PATCH] Much closer, should have been more commits Tests pass, but one shouldn't, looking into it. --- pom.xml | 54 +- .../org/asciidoc/maven/AsciidoctorMojo.java | 34 +- src/main/resources/bin/asciidoctor | 19 + src/main/resources/bin/tilt | 19 + .../resources/cache/asciidoctor-0.0.9.gem | Bin 0 -> 103936 bytes src/main/resources/cache/tilt-1.3.3.gem | Bin 0 -> 36352 bytes .../asciidoctor-0.0.9/rdoc/Asciidoctor.html | 714 +++++ .../rdoc/Asciidoctor/AbstractBlock.html | 965 ++++++ .../rdoc/Asciidoctor/AbstractNode.html | 946 ++++++ .../rdoc/Asciidoctor/AttributeList.html | 896 ++++++ .../rdoc/Asciidoctor/BaseTemplate.html | 936 ++++++ .../rdoc/Asciidoctor/Block.html | 610 ++++ .../rdoc/Asciidoctor/Callouts.html | 701 ++++ .../rdoc/Asciidoctor/DocBook45.html | 339 ++ .../DocBook45/BlockAdmonitionTemplate.html | 336 ++ .../DocBook45/BlockColistTemplate.html | 336 ++ .../DocBook45/BlockDlistTemplate.html | 336 ++ .../DocBook45/BlockExampleTemplate.html | 336 ++ .../DocBook45/BlockImageTemplate.html | 336 ++ .../DocBook45/BlockListingTemplate.html | 336 ++ .../DocBook45/BlockLiteralTemplate.html | 336 ++ .../DocBook45/BlockOlistTemplate.html | 336 ++ .../DocBook45/BlockOpenTemplate.html | 336 ++ .../DocBook45/BlockParagraphTemplate.html | 336 ++ .../DocBook45/BlockPassTemplate.html | 336 ++ .../DocBook45/BlockPreambleTemplate.html | 336 ++ .../DocBook45/BlockQuoteTemplate.html | 336 ++ .../DocBook45/BlockRulerTemplate.html | 336 ++ .../DocBook45/BlockSidebarTemplate.html | 336 ++ .../DocBook45/BlockTableTemplate.html | 336 ++ .../DocBook45/BlockUlistTemplate.html | 336 ++ .../DocBook45/BlockVerseTemplate.html | 336 ++ .../DocBook45/DocumentTemplate.html | 371 +++ .../DocBook45/EmbeddedTemplate.html | 336 ++ .../DocBook45/InlineAnchorTemplate.html | 336 ++ .../DocBook45/InlineBreakTemplate.html | 336 ++ .../DocBook45/InlineCalloutTemplate.html | 336 ++ .../DocBook45/InlineImageTemplate.html | 336 ++ .../DocBook45/InlineQuotedTemplate.html | 349 ++ .../DocBook45/SectionTemplate.html | 336 ++ .../rdoc/Asciidoctor/Document.html | 1305 ++++++++ .../rdoc/Asciidoctor/HTML5.html | 339 ++ .../HTML5/BlockAdmonitionTemplate.html | 336 ++ .../HTML5/BlockColistTemplate.html | 336 ++ .../Asciidoctor/HTML5/BlockDlistTemplate.html | 336 ++ .../HTML5/BlockExampleTemplate.html | 336 ++ .../Asciidoctor/HTML5/BlockImageTemplate.html | 336 ++ .../HTML5/BlockListingTemplate.html | 336 ++ .../HTML5/BlockLiteralTemplate.html | 336 ++ .../Asciidoctor/HTML5/BlockOlistTemplate.html | 336 ++ .../Asciidoctor/HTML5/BlockOpenTemplate.html | 336 ++ .../HTML5/BlockParagraphTemplate.html | 336 ++ .../Asciidoctor/HTML5/BlockPassTemplate.html | 336 ++ .../HTML5/BlockPreambleTemplate.html | 336 ++ .../Asciidoctor/HTML5/BlockQuoteTemplate.html | 336 ++ .../Asciidoctor/HTML5/BlockRulerTemplate.html | 336 ++ .../HTML5/BlockSidebarTemplate.html | 336 ++ .../Asciidoctor/HTML5/BlockTableTemplate.html | 336 ++ .../Asciidoctor/HTML5/BlockUlistTemplate.html | 336 ++ .../Asciidoctor/HTML5/BlockVerseTemplate.html | 336 ++ .../Asciidoctor/HTML5/DocumentTemplate.html | 425 +++ .../Asciidoctor/HTML5/EmbeddedTemplate.html | 336 ++ .../HTML5/InlineAnchorTemplate.html | 336 ++ .../HTML5/InlineBreakTemplate.html | 336 ++ .../HTML5/InlineCalloutTemplate.html | 336 ++ .../HTML5/InlineImageTemplate.html | 337 ++ .../HTML5/InlineQuotedTemplate.html | 349 ++ .../Asciidoctor/HTML5/SectionTemplate.html | 336 ++ .../rdoc/Asciidoctor/Inline.html | 442 +++ .../rdoc/Asciidoctor/Lexer.html | 2843 +++++++++++++++++ .../rdoc/Asciidoctor/ListItem.html | 624 ++++ .../rdoc/Asciidoctor/ProjectError.html | 287 ++ .../rdoc/Asciidoctor/Reader.html | 1329 ++++++++ .../rdoc/Asciidoctor/Renderer.html | 691 ++++ .../rdoc/Asciidoctor/SafeMode.html | 314 ++ .../rdoc/Asciidoctor/Section.html | 671 ++++ .../rdoc/Asciidoctor/Substituters.html | 1364 ++++++++ .../rdoc/Asciidoctor/Table.html | 629 ++++ .../rdoc/Asciidoctor/Table/Cell.html | 537 ++++ .../rdoc/Asciidoctor/Table/Column.html | 400 +++ .../rdoc/Asciidoctor/Table/ParserContext.html | 1230 +++++++ .../doc/asciidoctor-0.0.9/rdoc/LICENSE.html | 254 ++ .../doc/asciidoctor-0.0.9/rdoc/created.rid | 23 + .../asciidoctor-0.0.9/rdoc/images/brick.png | Bin 0 -> 452 bytes .../rdoc/images/brick_link.png | Bin 0 -> 764 bytes .../doc/asciidoctor-0.0.9/rdoc/images/bug.png | Bin 0 -> 774 bytes .../rdoc/images/bullet_black.png | Bin 0 -> 211 bytes .../rdoc/images/bullet_toggle_minus.png | Bin 0 -> 207 bytes .../rdoc/images/bullet_toggle_plus.png | Bin 0 -> 209 bytes .../asciidoctor-0.0.9/rdoc/images/date.png | Bin 0 -> 626 bytes .../asciidoctor-0.0.9/rdoc/images/find.png | Bin 0 -> 659 bytes .../rdoc/images/loadingAnimation.gif | Bin 0 -> 5886 bytes .../rdoc/images/macFFBgHack.png | Bin 0 -> 207 bytes .../asciidoctor-0.0.9/rdoc/images/package.png | Bin 0 -> 853 bytes .../rdoc/images/page_green.png | Bin 0 -> 621 bytes .../rdoc/images/page_white_text.png | Bin 0 -> 342 bytes .../rdoc/images/page_white_width.png | Bin 0 -> 309 bytes .../asciidoctor-0.0.9/rdoc/images/plugin.png | Bin 0 -> 591 bytes .../asciidoctor-0.0.9/rdoc/images/ruby.png | Bin 0 -> 592 bytes .../rdoc/images/tag_green.png | Bin 0 -> 613 bytes .../asciidoctor-0.0.9/rdoc/images/wrench.png | Bin 0 -> 610 bytes .../rdoc/images/wrench_orange.png | Bin 0 -> 584 bytes .../asciidoctor-0.0.9/rdoc/images/zoom.png | Bin 0 -> 692 bytes .../doc/asciidoctor-0.0.9/rdoc/index.html | 722 +++++ .../doc/asciidoctor-0.0.9/rdoc/js/darkfish.js | 116 + .../doc/asciidoctor-0.0.9/rdoc/js/jquery.js | 32 + .../asciidoctor-0.0.9/rdoc/js/quicksearch.js | 114 + .../rdoc/js/thickbox-compressed.js | 10 + .../lib/asciidoctor/abstract_block_rb.html | 52 + .../lib/asciidoctor/abstract_node_rb.html | 56 + .../lib/asciidoctor/attribute_list_rb.html | 74 + .../backends/base_template_rb.html | 60 + .../asciidoctor/backends/docbook45_rb.html | 52 + .../lib/asciidoctor/backends/html5_rb.html | 52 + .../rdoc/lib/asciidoctor/block_rb.html | 60 + .../rdoc/lib/asciidoctor/callouts_rb.html | 54 + .../rdoc/lib/asciidoctor/debug_rb.html | 52 + .../rdoc/lib/asciidoctor/document_rb.html | 71 + .../rdoc/lib/asciidoctor/errors_rb.html | 54 + .../rdoc/lib/asciidoctor/inline_rb.html | 54 + .../rdoc/lib/asciidoctor/lexer_rb.html | 75 + .../rdoc/lib/asciidoctor/list_item_rb.html | 54 + .../rdoc/lib/asciidoctor/reader_rb.html | 54 + .../rdoc/lib/asciidoctor/renderer_rb.html | 57 + .../rdoc/lib/asciidoctor/section_rb.html | 72 + .../rdoc/lib/asciidoctor/substituters_rb.html | 56 + .../rdoc/lib/asciidoctor/table_rb.html | 52 + .../rdoc/lib/asciidoctor/version_rb.html | 52 + .../rdoc/lib/asciidoctor_rb.html | 92 + .../doc/asciidoctor-0.0.9/rdoc/rdoc.css | 763 +++++ .../ri/Asciidoctor/AbstractBlock/%3c%3c-i.ri | Bin 0 -> 638 bytes .../ri/Asciidoctor/AbstractBlock/%5b%5d-i.ri | Bin 0 -> 494 bytes .../AbstractBlock/assign_index-i.ri | Bin 0 -> 459 bytes .../Asciidoctor/AbstractBlock/blocks%3f-i.ri | Bin 0 -> 369 bytes .../ri/Asciidoctor/AbstractBlock/blocks-i.ri | 2 + .../AbstractBlock/cdesc-AbstractBlock.ri | Bin 0 -> 613 bytes .../AbstractBlock/clear_blocks-i.ri | Bin 0 -> 527 bytes .../Asciidoctor/AbstractBlock/delete_at-i.ri | Bin 0 -> 635 bytes .../ri/Asciidoctor/AbstractBlock/insert-i.ri | Bin 0 -> 638 bytes .../ri/Asciidoctor/AbstractBlock/level-i.ri | 3 + .../ri/Asciidoctor/AbstractBlock/new-c.ri | Bin 0 -> 194 bytes .../AbstractBlock/reindex_sections-i.ri | Bin 0 -> 515 bytes .../Asciidoctor/AbstractBlock/sections-i.ri | Bin 0 -> 713 bytes .../ri/Asciidoctor/AbstractBlock/size-i.ri | Bin 0 -> 510 bytes .../Asciidoctor/AbstractBlock/title%3f-i.ri | Bin 0 -> 331 bytes .../ri/Asciidoctor/AbstractBlock/title-i.ri | 3 + .../ri/Asciidoctor/AbstractNode/attr%3f-i.ri | Bin 0 -> 184 bytes .../ri/Asciidoctor/AbstractNode/attr-i.ri | Bin 0 -> 197 bytes .../Asciidoctor/AbstractNode/attributes-i.ri | 2 + .../AbstractNode/cdesc-AbstractNode.ri | Bin 0 -> 938 bytes .../ri/Asciidoctor/AbstractNode/context-i.ri | 2 + .../ri/Asciidoctor/AbstractNode/document-i.ri | 2 + .../AbstractNode/generate_data_uri-i.ri | Bin 0 -> 1053 bytes .../Asciidoctor/AbstractNode/get_binding-i.ri | Bin 0 -> 1128 bytes .../ri/Asciidoctor/AbstractNode/icon_uri-i.ri | Bin 0 -> 1105 bytes .../ri/Asciidoctor/AbstractNode/id-i.ri | 2 + .../Asciidoctor/AbstractNode/image_uri-i.ri | Bin 0 -> 1195 bytes .../ri/Asciidoctor/AbstractNode/new-c.ri | Bin 0 -> 192 bytes .../AbstractNode/normalize_asset_path-i.ri | Bin 0 -> 1992 bytes .../ri/Asciidoctor/AbstractNode/parent-i.ri | 2 + .../ri/Asciidoctor/AbstractNode/renderer-i.ri | Bin 0 -> 344 bytes .../AbstractNode/update_attributes-i.ri | Bin 0 -> 582 bytes .../AttributeList/cdesc-AttributeList.ri | Bin 0 -> 2143 bytes .../ri/Asciidoctor/AttributeList/new-c.ri | Bin 0 -> 257 bytes .../ri/Asciidoctor/AttributeList/parse-i.ri | Bin 0 -> 195 bytes .../AttributeList/parse_attribute-i.ri | Bin 0 -> 227 bytes .../AttributeList/parse_attribute_value-i.ri | Bin 0 -> 219 bytes .../Asciidoctor/AttributeList/parse_into-i.ri | Bin 0 -> 217 bytes .../ri/Asciidoctor/AttributeList/rekey-c.ri | Bin 0 -> 204 bytes .../ri/Asciidoctor/AttributeList/rekey-i.ri | Bin 0 -> 190 bytes .../Asciidoctor/AttributeList/scan_name-i.ri | Bin 0 -> 190 bytes .../AttributeList/scan_to_delimiter-i.ri | Bin 0 -> 206 bytes .../AttributeList/scan_to_quote-i.ri | Bin 0 -> 203 bytes .../Asciidoctor/AttributeList/skip_blank-i.ri | Bin 0 -> 192 bytes .../AttributeList/skip_delimiter-i.ri | Bin 0 -> 200 bytes .../Asciidoctor/BaseTemplate/attribute-i.ri | Bin 0 -> 317 bytes .../Asciidoctor/BaseTemplate/attrvalue-i.ri | Bin 0 -> 328 bytes .../BaseTemplate/cdesc-BaseTemplate.ri | Bin 0 -> 1129 bytes .../ri/Asciidoctor/BaseTemplate/compact-i.ri | Bin 0 -> 574 bytes .../ri/Asciidoctor/BaseTemplate/eruby-i.ri | Bin 0 -> 179 bytes .../ri/Asciidoctor/BaseTemplate/id-i.ri | Bin 0 -> 293 bytes .../Asciidoctor/BaseTemplate/inherited-c.ri | Bin 0 -> 203 bytes .../ri/Asciidoctor/BaseTemplate/new-c.ri | Bin 0 -> 197 bytes .../BaseTemplate/preserve_endlines-i.ri | Bin 0 -> 629 bytes .../ri/Asciidoctor/BaseTemplate/render-i.ri | Bin 0 -> 1116 bytes .../ri/Asciidoctor/BaseTemplate/role-i.ri | Bin 0 -> 183 bytes .../Asciidoctor/BaseTemplate/style_class-i.ri | Bin 0 -> 314 bytes .../ri/Asciidoctor/BaseTemplate/tag-i.ri | Bin 0 -> 190 bytes .../ri/Asciidoctor/BaseTemplate/template-i.ri | Bin 0 -> 195 bytes .../BaseTemplate/template_classes-c.ri | Bin 0 -> 212 bytes .../ri/Asciidoctor/BaseTemplate/title-i.ri | Bin 0 -> 185 bytes .../ri/Asciidoctor/BaseTemplate/view-i.ri | Bin 0 -> 177 bytes .../Asciidoctor/BaseTemplate/xreflabel-i.ri | Bin 0 -> 193 bytes .../ri/Asciidoctor/Block/buffer-i.ri | 2 + .../ri/Asciidoctor/Block/caption-i.ri | 2 + .../ri/Asciidoctor/Block/cdesc-Block.ri | Bin 0 -> 762 bytes .../ri/Asciidoctor/Block/content-i.ri | Bin 0 -> 732 bytes .../ri/Asciidoctor/Block/new-c.ri | Bin 0 -> 485 bytes .../ri/Asciidoctor/Block/render-i.ri | Bin 0 -> 439 bytes .../ri/Asciidoctor/Block/splain-i.ri | Bin 0 -> 183 bytes .../ri/Asciidoctor/Block/to_s-i.ri | Bin 0 -> 163 bytes .../ri/Asciidoctor/Callouts/callout_ids-i.ri | Bin 0 -> 583 bytes .../ri/Asciidoctor/Callouts/cdesc-Callouts.ri | Bin 0 -> 576 bytes .../ri/Asciidoctor/Callouts/current_list-i.ri | Bin 0 -> 399 bytes .../Callouts/generate_callout_id-i.ri | Bin 0 -> 605 bytes .../Callouts/generate_next_callout_id-i.ri | Bin 0 -> 408 bytes .../ri/Asciidoctor/Callouts/new-c.ri | Bin 0 -> 168 bytes .../ri/Asciidoctor/Callouts/next_list-i.ri | Bin 0 -> 330 bytes .../ri/Asciidoctor/Callouts/read_next_id-i.ri | Bin 0 -> 590 bytes .../ri/Asciidoctor/Callouts/register-i.ri | Bin 0 -> 923 bytes .../ri/Asciidoctor/Callouts/rewind-i.ri | Bin 0 -> 384 bytes .../cdesc-BlockAdmonitionTemplate.ri | Bin 0 -> 349 bytes .../BlockAdmonitionTemplate/template-i.ri | Bin 0 -> 213 bytes .../cdesc-BlockColistTemplate.ri | Bin 0 -> 341 bytes .../BlockColistTemplate/template-i.ri | Bin 0 -> 209 bytes .../cdesc-BlockDlistTemplate.ri | Bin 0 -> 339 bytes .../BlockDlistTemplate/template-i.ri | Bin 0 -> 208 bytes .../cdesc-BlockExampleTemplate.ri | Bin 0 -> 343 bytes .../BlockExampleTemplate/template-i.ri | Bin 0 -> 210 bytes .../cdesc-BlockImageTemplate.ri | Bin 0 -> 339 bytes .../BlockImageTemplate/template-i.ri | Bin 0 -> 208 bytes .../cdesc-BlockListingTemplate.ri | Bin 0 -> 343 bytes .../BlockListingTemplate/template-i.ri | Bin 0 -> 210 bytes .../cdesc-BlockLiteralTemplate.ri | Bin 0 -> 343 bytes .../BlockLiteralTemplate/template-i.ri | Bin 0 -> 210 bytes .../cdesc-BlockOlistTemplate.ri | Bin 0 -> 339 bytes .../BlockOlistTemplate/template-i.ri | Bin 0 -> 208 bytes .../cdesc-BlockOpenTemplate.ri | Bin 0 -> 337 bytes .../DocBook45/BlockOpenTemplate/template-i.ri | Bin 0 -> 207 bytes .../cdesc-BlockParagraphTemplate.ri | Bin 0 -> 347 bytes .../BlockParagraphTemplate/template-i.ri | Bin 0 -> 212 bytes .../cdesc-BlockPassTemplate.ri | Bin 0 -> 337 bytes .../DocBook45/BlockPassTemplate/template-i.ri | Bin 0 -> 207 bytes .../cdesc-BlockPreambleTemplate.ri | Bin 0 -> 345 bytes .../BlockPreambleTemplate/template-i.ri | Bin 0 -> 211 bytes .../cdesc-BlockQuoteTemplate.ri | Bin 0 -> 339 bytes .../BlockQuoteTemplate/template-i.ri | Bin 0 -> 208 bytes .../cdesc-BlockRulerTemplate.ri | Bin 0 -> 339 bytes .../BlockRulerTemplate/template-i.ri | Bin 0 -> 208 bytes .../cdesc-BlockSidebarTemplate.ri | Bin 0 -> 343 bytes .../BlockSidebarTemplate/template-i.ri | Bin 0 -> 210 bytes .../cdesc-BlockTableTemplate.ri | Bin 0 -> 339 bytes .../BlockTableTemplate/template-i.ri | Bin 0 -> 208 bytes .../cdesc-BlockUlistTemplate.ri | Bin 0 -> 339 bytes .../BlockUlistTemplate/template-i.ri | Bin 0 -> 208 bytes .../cdesc-BlockVerseTemplate.ri | Bin 0 -> 339 bytes .../BlockVerseTemplate/template-i.ri | Bin 0 -> 208 bytes .../cdesc-DocumentTemplate.ri | Bin 0 -> 353 bytes .../DocBook45/DocumentTemplate/docinfo-i.ri | Bin 0 -> 204 bytes .../DocBook45/DocumentTemplate/template-i.ri | Bin 0 -> 206 bytes .../cdesc-EmbeddedTemplate.ri | Bin 0 -> 335 bytes .../DocBook45/EmbeddedTemplate/template-i.ri | Bin 0 -> 206 bytes .../cdesc-InlineAnchorTemplate.ri | Bin 0 -> 343 bytes .../InlineAnchorTemplate/template-i.ri | Bin 0 -> 210 bytes .../cdesc-InlineBreakTemplate.ri | Bin 0 -> 341 bytes .../InlineBreakTemplate/template-i.ri | Bin 0 -> 209 bytes .../cdesc-InlineCalloutTemplate.ri | Bin 0 -> 345 bytes .../InlineCalloutTemplate/template-i.ri | Bin 0 -> 211 bytes .../cdesc-InlineImageTemplate.ri | Bin 0 -> 341 bytes .../InlineImageTemplate/template-i.ri | Bin 0 -> 209 bytes .../cdesc-InlineQuotedTemplate.ri | Bin 0 -> 376 bytes .../InlineQuotedTemplate/template-i.ri | Bin 0 -> 210 bytes .../SectionTemplate/cdesc-SectionTemplate.ri | Bin 0 -> 333 bytes .../DocBook45/SectionTemplate/template-i.ri | Bin 0 -> 205 bytes .../Asciidoctor/DocBook45/cdesc-DocBook45.ri | Bin 0 -> 219 bytes .../ri/Asciidoctor/Document/base_dir-i.ri | 2 + .../ri/Asciidoctor/Document/callouts-i.ri | 2 + .../ri/Asciidoctor/Document/cdesc-Document.ri | Bin 0 -> 1761 bytes .../ri/Asciidoctor/Document/content-i.ri | Bin 0 -> 175 bytes .../ri/Asciidoctor/Document/doctitle-i.ri | Bin 0 -> 293 bytes .../ri/Asciidoctor/Document/doctype-i.ri | Bin 0 -> 175 bytes .../Asciidoctor/Document/first_section-i.ri | Bin 0 -> 256 bytes .../Asciidoctor/Document/has_header%3f-i.ri | Bin 0 -> 183 bytes .../ri/Asciidoctor/Document/header-i.ri | 2 + .../ri/Asciidoctor/Document/name-i.ri | Bin 0 -> 169 bytes .../ri/Asciidoctor/Document/nested%3f-i.ri | Bin 0 -> 175 bytes .../ri/Asciidoctor/Document/new-c.ri | Bin 0 -> 906 bytes .../ri/Asciidoctor/Document/noheader-i.ri | Bin 0 -> 177 bytes .../ri/Asciidoctor/Document/notitle-i.ri | Bin 0 -> 175 bytes .../Asciidoctor/Document/parent_document-i.ri | 2 + .../ri/Asciidoctor/Document/references-i.ri | 2 + .../ri/Asciidoctor/Document/register-i.ri | Bin 0 -> 188 bytes .../ri/Asciidoctor/Document/render-i.ri | Bin 0 -> 449 bytes .../ri/Asciidoctor/Document/renderer-i.ri | Bin 0 -> 186 bytes .../ri/Asciidoctor/Document/safe-i.ri | Bin 0 -> 1748 bytes .../ri/Asciidoctor/Document/source-i.ri | Bin 0 -> 258 bytes .../ri/Asciidoctor/Document/splain-i.ri | Bin 0 -> 173 bytes .../ri/Asciidoctor/Document/title%3d-i.ri | Bin 0 -> 178 bytes .../ri/Asciidoctor/Document/title-i.ri | Bin 0 -> 264 bytes .../ri/Asciidoctor/Document/to_s-i.ri | Bin 0 -> 169 bytes .../Document/update_backend_attributes-i.ri | Bin 0 -> 330 bytes .../cdesc-BlockAdmonitionTemplate.ri | Bin 0 -> 341 bytes .../BlockAdmonitionTemplate/template-i.ri | Bin 0 -> 205 bytes .../cdesc-BlockColistTemplate.ri | Bin 0 -> 333 bytes .../HTML5/BlockColistTemplate/template-i.ri | Bin 0 -> 201 bytes .../cdesc-BlockDlistTemplate.ri | Bin 0 -> 331 bytes .../HTML5/BlockDlistTemplate/template-i.ri | Bin 0 -> 200 bytes .../cdesc-BlockExampleTemplate.ri | Bin 0 -> 335 bytes .../HTML5/BlockExampleTemplate/template-i.ri | Bin 0 -> 202 bytes .../cdesc-BlockImageTemplate.ri | Bin 0 -> 331 bytes .../HTML5/BlockImageTemplate/template-i.ri | Bin 0 -> 200 bytes .../cdesc-BlockListingTemplate.ri | Bin 0 -> 335 bytes .../HTML5/BlockListingTemplate/template-i.ri | Bin 0 -> 202 bytes .../cdesc-BlockLiteralTemplate.ri | Bin 0 -> 335 bytes .../HTML5/BlockLiteralTemplate/template-i.ri | Bin 0 -> 202 bytes .../cdesc-BlockOlistTemplate.ri | Bin 0 -> 331 bytes .../HTML5/BlockOlistTemplate/template-i.ri | Bin 0 -> 200 bytes .../cdesc-BlockOpenTemplate.ri | Bin 0 -> 329 bytes .../HTML5/BlockOpenTemplate/template-i.ri | Bin 0 -> 199 bytes .../cdesc-BlockParagraphTemplate.ri | Bin 0 -> 339 bytes .../BlockParagraphTemplate/template-i.ri | Bin 0 -> 204 bytes .../cdesc-BlockPassTemplate.ri | Bin 0 -> 329 bytes .../HTML5/BlockPassTemplate/template-i.ri | Bin 0 -> 199 bytes .../cdesc-BlockPreambleTemplate.ri | Bin 0 -> 337 bytes .../HTML5/BlockPreambleTemplate/template-i.ri | Bin 0 -> 203 bytes .../cdesc-BlockQuoteTemplate.ri | Bin 0 -> 331 bytes .../HTML5/BlockQuoteTemplate/template-i.ri | Bin 0 -> 200 bytes .../cdesc-BlockRulerTemplate.ri | Bin 0 -> 331 bytes .../HTML5/BlockRulerTemplate/template-i.ri | Bin 0 -> 200 bytes .../cdesc-BlockSidebarTemplate.ri | Bin 0 -> 335 bytes .../HTML5/BlockSidebarTemplate/template-i.ri | Bin 0 -> 202 bytes .../cdesc-BlockTableTemplate.ri | Bin 0 -> 331 bytes .../HTML5/BlockTableTemplate/template-i.ri | Bin 0 -> 200 bytes .../cdesc-BlockUlistTemplate.ri | Bin 0 -> 331 bytes .../HTML5/BlockUlistTemplate/template-i.ri | Bin 0 -> 200 bytes .../cdesc-BlockVerseTemplate.ri | Bin 0 -> 331 bytes .../HTML5/BlockVerseTemplate/template-i.ri | Bin 0 -> 200 bytes .../cdesc-DocumentTemplate.ri | Bin 0 -> 389 bytes .../default_coderay_stylesheet-i.ri | Bin 0 -> 417 bytes .../DocumentTemplate/render_outline-i.ri | Bin 0 -> 228 bytes .../HTML5/DocumentTemplate/template-i.ri | Bin 0 -> 198 bytes .../cdesc-EmbeddedTemplate.ri | Bin 0 -> 327 bytes .../HTML5/EmbeddedTemplate/template-i.ri | Bin 0 -> 198 bytes .../cdesc-InlineAnchorTemplate.ri | Bin 0 -> 335 bytes .../HTML5/InlineAnchorTemplate/template-i.ri | Bin 0 -> 202 bytes .../cdesc-InlineBreakTemplate.ri | Bin 0 -> 333 bytes .../HTML5/InlineBreakTemplate/template-i.ri | Bin 0 -> 201 bytes .../cdesc-InlineCalloutTemplate.ri | Bin 0 -> 337 bytes .../HTML5/InlineCalloutTemplate/template-i.ri | Bin 0 -> 203 bytes .../cdesc-InlineImageTemplate.ri | Bin 0 -> 333 bytes .../HTML5/InlineImageTemplate/template-i.ri | Bin 0 -> 201 bytes .../cdesc-InlineQuotedTemplate.ri | Bin 0 -> 368 bytes .../HTML5/InlineQuotedTemplate/template-i.ri | Bin 0 -> 202 bytes .../SectionTemplate/cdesc-SectionTemplate.ri | Bin 0 -> 325 bytes .../HTML5/SectionTemplate/template-i.ri | Bin 0 -> 197 bytes .../ri/Asciidoctor/HTML5/cdesc-HTML5.ri | Bin 0 -> 211 bytes .../ri/Asciidoctor/Inline/cdesc-Inline.ri | Bin 0 -> 497 bytes .../ri/Asciidoctor/Inline/new-c.ri | Bin 0 -> 202 bytes .../ri/Asciidoctor/Inline/render-i.ri | Bin 0 -> 169 bytes .../ri/Asciidoctor/Inline/target-i.ri | 2 + .../ri/Asciidoctor/Inline/text-i.ri | 2 + .../ri/Asciidoctor/Inline/type-i.ri | 2 + .../Asciidoctor/Lexer/catalog_callouts-c.ri | Bin 0 -> 516 bytes .../Lexer/catalog_inline_anchors-c.ri | Bin 0 -> 539 bytes .../ri/Asciidoctor/Lexer/cdesc-Lexer.ri | Bin 0 -> 2325 bytes .../Asciidoctor/Lexer/delimited_block%3f-c.ri | Bin 0 -> 440 bytes .../Lexer/grab_lines_for_list_item-c.ri | Bin 0 -> 1247 bytes .../Asciidoctor/Lexer/initialize_section-c.ri | Bin 0 -> 683 bytes .../Lexer/is_next_line_section%3f-c.ri | Bin 0 -> 606 bytes .../Lexer/is_section_title%3f-c.ri | Bin 0 -> 528 bytes .../Lexer/is_sibling_list_item%3f-c.ri | Bin 0 -> 761 bytes .../is_single_line_section_title%3f-c.ri | Bin 0 -> 219 bytes .../Lexer/is_two_line_section_title%3f-c.ri | Bin 0 -> 220 bytes .../ri/Asciidoctor/Lexer/new-c.ri | Bin 0 -> 352 bytes .../ri/Asciidoctor/Lexer/next_block-c.ri | Bin 0 -> 1016 bytes .../Asciidoctor/Lexer/next_labeled_list-c.ri | Bin 0 -> 664 bytes .../ri/Asciidoctor/Lexer/next_list_item-c.ri | Bin 0 -> 1398 bytes .../Asciidoctor/Lexer/next_outline_list-c.ri | Bin 0 -> 710 bytes .../ri/Asciidoctor/Lexer/next_section-c.ri | Bin 0 -> 1860 bytes .../ri/Asciidoctor/Lexer/next_table-c.ri | Bin 0 -> 636 bytes .../ri/Asciidoctor/Lexer/parse-c.ri | Bin 0 -> 803 bytes .../Lexer/parse_block_metadata_line-c.ri | Bin 0 -> 1346 bytes .../Lexer/parse_block_metadata_lines-c.ri | Bin 0 -> 1019 bytes .../ri/Asciidoctor/Lexer/parse_cell_spec-c.ri | Bin 0 -> 564 bytes .../ri/Asciidoctor/Lexer/parse_col_specs-c.ri | Bin 0 -> 705 bytes .../Lexer/parse_header_metadata-c.ri | Bin 0 -> 1091 bytes .../Lexer/parse_section_title-c.ri | Bin 0 -> 1264 bytes .../Lexer/resolve_list_marker-c.ri | Bin 0 -> 995 bytes .../Lexer/resolve_ordered_list_marker-c.ri | Bin 0 -> 1203 bytes .../Lexer/roman_numeral_to_int-c.ri | Bin 0 -> 438 bytes .../ri/Asciidoctor/Lexer/section_level-c.ri | Bin 0 -> 434 bytes .../Lexer/single_line_section_level-c.ri | Bin 0 -> 210 bytes .../ri/Asciidoctor/ListItem/cdesc-ListItem.ri | Bin 0 -> 550 bytes .../ri/Asciidoctor/ListItem/content-i.ri | Bin 0 -> 176 bytes .../ri/Asciidoctor/ListItem/fold_first-i.ri | Bin 0 -> 871 bytes .../ri/Asciidoctor/ListItem/marker-i.ri | 2 + .../ri/Asciidoctor/ListItem/new-c.ri | Bin 0 -> 410 bytes .../ri/Asciidoctor/ListItem/splain-i.ri | Bin 0 -> 190 bytes .../ri/Asciidoctor/ListItem/text%3f-i.ri | Bin 0 -> 172 bytes .../ri/Asciidoctor/ListItem/text-i.ri | Bin 0 -> 170 bytes .../ri/Asciidoctor/ListItem/to_s-i.ri | Bin 0 -> 170 bytes .../ProjectError/cdesc-ProjectError.ri | Bin 0 -> 243 bytes .../Reader/apply_attribute_value_subs-i.ri | Bin 0 -> 699 bytes .../Reader/attribute_overridden%3f-i.ri | Bin 0 -> 477 bytes .../ri/Asciidoctor/Reader/cdesc-Reader.ri | Bin 0 -> 891 bytes .../ri/Asciidoctor/Reader/chomp_last%21-i.ri | Bin 0 -> 389 bytes .../Asciidoctor/Reader/consume_comments-i.ri | Bin 0 -> 693 bytes .../Reader/consume_line_comments-i.ri | Bin 0 -> 596 bytes .../ri/Asciidoctor/Reader/empty%3f-i.ri | Bin 0 -> 366 bytes .../ri/Asciidoctor/Reader/get_line-i.ri | Bin 0 -> 578 bytes .../Asciidoctor/Reader/grab_lines_until-i.ri | Bin 0 -> 1590 bytes .../ri/Asciidoctor/Reader/has_lines%3f-i.ri | Bin 0 -> 371 bytes .../ri/Asciidoctor/Reader/lines-i.ri | 3 + .../ri/Asciidoctor/Reader/new-c.ri | Bin 0 -> 1063 bytes .../ri/Asciidoctor/Reader/next_line-i.ri | Bin 0 -> 307 bytes .../ri/Asciidoctor/Reader/peek_line-i.ri | Bin 0 -> 452 bytes .../ri/Asciidoctor/Reader/process-i.ri | Bin 0 -> 288 bytes .../Reader/sanitize_attribute_name-i.ri | Bin 0 -> 705 bytes .../ri/Asciidoctor/Reader/skip_blank-i.ri | Bin 0 -> 746 bytes .../Asciidoctor/Reader/skip_blank_lines-i.ri | Bin 0 -> 348 bytes .../Reader/skip_list_continuation-i.ri | Bin 0 -> 348 bytes .../ri/Asciidoctor/Reader/source-i.ri | 2 + .../ri/Asciidoctor/Reader/unshift-i.ri | Bin 0 -> 379 bytes .../Renderer/camelcase_to_underscore-c.ri | Bin 0 -> 651 bytes .../ri/Asciidoctor/Renderer/cdesc-Renderer.ri | Bin 0 -> 571 bytes .../ri/Asciidoctor/Renderer/compact-i.ri | Bin 0 -> 165 bytes .../Renderer/extract_view_mapping-c.ri | Bin 0 -> 1300 bytes .../ri/Asciidoctor/Renderer/load_eruby-i.ri | Bin 0 -> 426 bytes .../ri/Asciidoctor/Renderer/new-c.ri | Bin 0 -> 267 bytes .../ri/Asciidoctor/Renderer/render-i.ri | Bin 0 -> 543 bytes .../ri/Asciidoctor/Renderer/views-i.ri | Bin 0 -> 171 bytes .../ri/Asciidoctor/SafeMode/cdesc-SafeMode.ri | Bin 0 -> 1330 bytes .../ri/Asciidoctor/Section/cdesc-Section.ri | Bin 0 -> 990 bytes .../ri/Asciidoctor/Section/content-i.ri | Bin 0 -> 632 bytes .../ri/Asciidoctor/Section/generate_id-i.ri | Bin 0 -> 943 bytes .../ri/Asciidoctor/Section/index-i.ri | 3 + .../ri/Asciidoctor/Section/new-c.ri | Bin 0 -> 357 bytes .../ri/Asciidoctor/Section/render-i.ri | Bin 0 -> 297 bytes .../ri/Asciidoctor/Section/sectnum-i.ri | Bin 0 -> 1511 bytes .../ri/Asciidoctor/Section/to_s-i.ri | Bin 0 -> 167 bytes .../Substituters/apply_header_subs-i.ri | Bin 0 -> 475 bytes .../Substituters/apply_literal_subs-i.ri | Bin 0 -> 471 bytes .../Substituters/apply_normal_subs-i.ri | Bin 0 -> 467 bytes .../Substituters/apply_passthrough_subs-i.ri | Bin 0 -> 488 bytes .../Asciidoctor/Substituters/apply_subs-i.ri | Bin 0 -> 663 bytes .../Substituters/apply_title_subs-i.ri | Bin 0 -> 431 bytes .../Substituters/cdesc-Substituters.ri | Bin 0 -> 882 bytes .../Substituters/extract_passthroughs-i.ri | Bin 0 -> 538 bytes .../Substituters/highlight_source-i.ri | Bin 0 -> 602 bytes .../Substituters/parse_attributes-i.ri | Bin 0 -> 601 bytes .../Substituters/passthroughs-i.ri | 2 + .../Substituters/resolve_subs-i.ri | Bin 0 -> 496 bytes .../Substituters/restore_passthroughs-i.ri | Bin 0 -> 517 bytes .../Substituters/sub_attributes-i.ri | Bin 0 -> 609 bytes .../Substituters/sub_callouts-i.ri | Bin 0 -> 447 bytes .../Asciidoctor/Substituters/sub_macros-i.ri | Bin 0 -> 551 bytes .../Substituters/sub_post_replacements-i.ri | Bin 0 -> 463 bytes .../Asciidoctor/Substituters/sub_quotes-i.ri | Bin 0 -> 475 bytes .../Substituters/sub_replacements-i.ri | Bin 0 -> 477 bytes .../Substituters/sub_specialcharacters-i.ri | Bin 0 -> 553 bytes .../Substituters/transform_quoted_text-i.ri | Bin 0 -> 631 bytes .../ri/Asciidoctor/Table/Cell/cdesc-Cell.ri | Bin 0 -> 531 bytes .../ri/Asciidoctor/Table/Cell/colspan-i.ri | 2 + .../ri/Asciidoctor/Table/Cell/content-i.ri | Bin 0 -> 307 bytes .../Table/Cell/inner_document-i.ri | 2 + .../ri/Asciidoctor/Table/Cell/new-c.ri | Bin 0 -> 197 bytes .../ri/Asciidoctor/Table/Cell/rowspan-i.ri | 2 + .../ri/Asciidoctor/Table/Cell/text-i.ri | Bin 0 -> 308 bytes .../ri/Asciidoctor/Table/Cell/to_s-i.ri | Bin 0 -> 169 bytes .../Table/Column/assign_width-i.ri | Bin 0 -> 467 bytes .../Asciidoctor/Table/Column/cdesc-Column.ri | Bin 0 -> 468 bytes .../ri/Asciidoctor/Table/Column/new-c.ri | Bin 0 -> 199 bytes .../Table/ParserContext/activate_rowspan-i.ri | Bin 0 -> 444 bytes .../Table/ParserContext/buffer-i.ri | 2 + .../buffer_has_unclosed_quotes%3f-i.ri | Bin 0 -> 491 bytes .../Table/ParserContext/buffer_quoted%3f-i.ri | Bin 0 -> 466 bytes .../ParserContext/cdesc-ParserContext.ri | Bin 0 -> 1465 bytes .../Table/ParserContext/cell_closed%3f-i.ri | Bin 0 -> 400 bytes .../Table/ParserContext/cell_open%3f-i.ri | Bin 0 -> 382 bytes .../Table/ParserContext/close_cell-i.ri | Bin 0 -> 504 bytes .../Table/ParserContext/close_open_cell-i.ri | Bin 0 -> 482 bytes .../Table/ParserContext/close_row-i.ri | Bin 0 -> 387 bytes .../Table/ParserContext/col_count-i.ri | Bin 0 -> 460 bytes .../Table/ParserContext/delimiter-i.ri | 2 + .../Table/ParserContext/delimiter_re-i.ri | 2 + .../ParserContext/effective_col_visits-i.ri | Bin 0 -> 364 bytes .../Table/ParserContext/end_of_row%3f-i.ri | Bin 0 -> 314 bytes .../Table/ParserContext/format-i.ri | 2 + .../Table/ParserContext/keep_cell_open-i.ri | Bin 0 -> 430 bytes .../Table/ParserContext/mark_cell_closed-i.ri | Bin 0 -> 426 bytes .../Table/ParserContext/match_delimiter-i.ri | Bin 0 -> 447 bytes .../Asciidoctor/Table/ParserContext/new-c.ri | Bin 0 -> 199 bytes .../Table/ParserContext/next_line-i.ri | Bin 0 -> 370 bytes .../Table/ParserContext/push_cell_spec-i.ri | Bin 0 -> 447 bytes .../ParserContext/skip_matched_delimiter-i.ri | Bin 0 -> 484 bytes .../starts_with_delimiter%3f-i.ri | Bin 0 -> 462 bytes .../Table/ParserContext/table-i.ri | 3 + .../Table/ParserContext/take_cell_spec-i.ri | Bin 0 -> 547 bytes .../ri/Asciidoctor/Table/caption-i.ri | 2 + .../ri/Asciidoctor/Table/cdesc-Table.ri | Bin 0 -> 1470 bytes .../ri/Asciidoctor/Table/columns-i.ri | 2 + .../ri/Asciidoctor/Table/create_columns-i.ri | Bin 0 -> 344 bytes .../ri/Asciidoctor/Table/new-c.ri | Bin 0 -> 180 bytes .../Table/partition_header_footer-i.ri | Bin 0 -> 411 bytes .../ri/Asciidoctor/Table/render-i.ri | Bin 0 -> 439 bytes .../ri/Asciidoctor/Table/rows-i.ri | 2 + .../ri/Asciidoctor/cdesc-Asciidoctor.ri | Bin 0 -> 3442 bytes .../ri/Asciidoctor/debug-c.ri | Bin 0 -> 165 bytes .../ri/Asciidoctor/puts_indented-c.ri | Bin 0 -> 187 bytes .../ri/Asciidoctor/require_library-c.ri | Bin 0 -> 467 bytes .../ri/Asciidoctor/set_debug-c.ri | Bin 0 -> 172 bytes .../ri/Asciidoctor/show_debug_output%3f-c.ri | Bin 0 -> 185 bytes .../doc/asciidoctor-0.0.9/ri/cache.ri | 21 + .../doc/asciidoctor-0.0.9/ri/created.rid | 23 + .../resources/doc/tilt-1.3.3/rdoc/Tilt.html | 633 ++++ .../rdoc/Tilt/BlueClothTemplate.html | 350 ++ .../tilt-1.3.3/rdoc/Tilt/BuilderTemplate.html | 456 +++ .../doc/tilt-1.3.3/rdoc/Tilt/Cache.html | 322 ++ .../rdoc/Tilt/CoffeeScriptTemplate.html | 493 +++ .../doc/tilt-1.3.3/rdoc/Tilt/CompileSite.html | 180 ++ .../tilt-1.3.3/rdoc/Tilt/CreoleTemplate.html | 354 ++ .../doc/tilt-1.3.3/rdoc/Tilt/ERBTemplate.html | 528 +++ .../tilt-1.3.3/rdoc/Tilt/ErubisTemplate.html | 434 +++ .../tilt-1.3.3/rdoc/Tilt/HamlTemplate.html | 466 +++ .../rdoc/Tilt/KramdownTemplate.html | 364 +++ .../tilt-1.3.3/rdoc/Tilt/LessTemplate.html | 356 +++ .../tilt-1.3.3/rdoc/Tilt/LiquidTemplate.html | 368 +++ .../tilt-1.3.3/rdoc/Tilt/MarkabyTemplate.html | 441 +++ .../tilt-1.3.3/rdoc/Tilt/MarukuTemplate.html | 350 ++ .../rdoc/Tilt/NokogiriTemplate.html | 459 +++ .../rdoc/Tilt/RDiscountTemplate.html | 407 +++ .../tilt-1.3.3/rdoc/Tilt/RDocTemplate.html | 355 ++ .../tilt-1.3.3/rdoc/Tilt/RadiusTemplate.html | 480 +++ .../rdoc/Tilt/RedClothTemplate.html | 350 ++ .../rdoc/Tilt/RedcarpetTemplate.html | 364 +++ .../Tilt/RedcarpetTemplate/Redcarpet1.html | 279 ++ .../Tilt/RedcarpetTemplate/Redcarpet2.html | 382 +++ .../tilt-1.3.3/rdoc/Tilt/SassTemplate.html | 351 ++ .../tilt-1.3.3/rdoc/Tilt/ScssTemplate.html | 188 ++ .../tilt-1.3.3/rdoc/Tilt/StringTemplate.html | 310 ++ .../doc/tilt-1.3.3/rdoc/Tilt/Template.html | 1006 ++++++ .../rdoc/Tilt/WikiClothTemplate.html | 351 ++ .../tilt-1.3.3/rdoc/Tilt/YajlTemplate.html | 536 ++++ .../resources/doc/tilt-1.3.3/rdoc/created.rid | 18 + .../doc/tilt-1.3.3/rdoc/images/brick.png | Bin 0 -> 452 bytes .../doc/tilt-1.3.3/rdoc/images/brick_link.png | Bin 0 -> 764 bytes .../doc/tilt-1.3.3/rdoc/images/bug.png | Bin 0 -> 774 bytes .../tilt-1.3.3/rdoc/images/bullet_black.png | Bin 0 -> 211 bytes .../rdoc/images/bullet_toggle_minus.png | Bin 0 -> 207 bytes .../rdoc/images/bullet_toggle_plus.png | Bin 0 -> 209 bytes .../doc/tilt-1.3.3/rdoc/images/date.png | Bin 0 -> 626 bytes .../doc/tilt-1.3.3/rdoc/images/find.png | Bin 0 -> 659 bytes .../rdoc/images/loadingAnimation.gif | Bin 0 -> 5886 bytes .../tilt-1.3.3/rdoc/images/macFFBgHack.png | Bin 0 -> 207 bytes .../doc/tilt-1.3.3/rdoc/images/package.png | Bin 0 -> 853 bytes .../doc/tilt-1.3.3/rdoc/images/page_green.png | Bin 0 -> 621 bytes .../rdoc/images/page_white_text.png | Bin 0 -> 342 bytes .../rdoc/images/page_white_width.png | Bin 0 -> 309 bytes .../doc/tilt-1.3.3/rdoc/images/plugin.png | Bin 0 -> 591 bytes .../doc/tilt-1.3.3/rdoc/images/ruby.png | Bin 0 -> 592 bytes .../doc/tilt-1.3.3/rdoc/images/tag_green.png | Bin 0 -> 613 bytes .../doc/tilt-1.3.3/rdoc/images/wrench.png | Bin 0 -> 610 bytes .../tilt-1.3.3/rdoc/images/wrench_orange.png | Bin 0 -> 584 bytes .../doc/tilt-1.3.3/rdoc/images/zoom.png | Bin 0 -> 692 bytes .../resources/doc/tilt-1.3.3/rdoc/index.html | 403 +++ .../doc/tilt-1.3.3/rdoc/js/darkfish.js | 116 + .../doc/tilt-1.3.3/rdoc/js/jquery.js | 32 + .../doc/tilt-1.3.3/rdoc/js/quicksearch.js | 114 + .../tilt-1.3.3/rdoc/js/thickbox-compressed.js | 10 + .../tilt-1.3.3/rdoc/lib/tilt/builder_rb.html | 54 + .../tilt-1.3.3/rdoc/lib/tilt/coffee_rb.html | 54 + .../doc/tilt-1.3.3/rdoc/lib/tilt/css_rb.html | 54 + .../doc/tilt-1.3.3/rdoc/lib/tilt/erb_rb.html | 54 + .../doc/tilt-1.3.3/rdoc/lib/tilt/haml_rb.html | 54 + .../tilt-1.3.3/rdoc/lib/tilt/liquid_rb.html | 54 + .../tilt-1.3.3/rdoc/lib/tilt/markaby_rb.html | 54 + .../tilt-1.3.3/rdoc/lib/tilt/markdown_rb.html | 54 + .../tilt-1.3.3/rdoc/lib/tilt/nokogiri_rb.html | 54 + .../tilt-1.3.3/rdoc/lib/tilt/radius_rb.html | 54 + .../doc/tilt-1.3.3/rdoc/lib/tilt/rdoc_rb.html | 54 + .../tilt-1.3.3/rdoc/lib/tilt/string_rb.html | 54 + .../tilt-1.3.3/rdoc/lib/tilt/template_rb.html | 52 + .../tilt-1.3.3/rdoc/lib/tilt/textile_rb.html | 54 + .../doc/tilt-1.3.3/rdoc/lib/tilt/wiki_rb.html | 54 + .../doc/tilt-1.3.3/rdoc/lib/tilt/yajl_rb.html | 54 + .../doc/tilt-1.3.3/rdoc/lib/tilt_rb.html | 82 + .../resources/doc/tilt-1.3.3/rdoc/rdoc.css | 763 +++++ .../doc/tilt-1.3.3/ri/Tilt/%5b%5d-c.ri | Bin 0 -> 290 bytes .../cdesc-BlueClothTemplate.ri | Bin 0 -> 496 bytes .../engine_initialized%3f-c.ri | Bin 0 -> 195 bytes .../ri/Tilt/BlueClothTemplate/evaluate-i.ri | Bin 0 -> 193 bytes .../BlueClothTemplate/initialize_engine-i.ri | Bin 0 -> 190 bytes .../ri/Tilt/BlueClothTemplate/prepare-i.ri | Bin 0 -> 170 bytes .../BuilderTemplate/cdesc-BuilderTemplate.ri | Bin 0 -> 573 bytes .../engine_initialized%3f-c.ri | Bin 0 -> 192 bytes .../ri/Tilt/BuilderTemplate/evaluate-i.ri | Bin 0 -> 190 bytes .../BuilderTemplate/initialize_engine-i.ri | Bin 0 -> 187 bytes .../precompiled_postamble-i.ri | Bin 0 -> 201 bytes .../BuilderTemplate/precompiled_preamble-i.ri | Bin 0 -> 199 bytes .../BuilderTemplate/precompiled_template-i.ri | Bin 0 -> 199 bytes .../ri/Tilt/BuilderTemplate/prepare-i.ri | Bin 0 -> 167 bytes .../tilt-1.3.3/ri/Tilt/Cache/cdesc-Cache.ri | Bin 0 -> 731 bytes .../doc/tilt-1.3.3/ri/Tilt/Cache/clear-i.ri | Bin 0 -> 145 bytes .../doc/tilt-1.3.3/ri/Tilt/Cache/fetch-i.ri | Bin 0 -> 155 bytes .../doc/tilt-1.3.3/ri/Tilt/Cache/new-c.ri | Bin 0 -> 142 bytes .../cdesc-CoffeeScriptTemplate.ri | Bin 0 -> 706 bytes .../CoffeeScriptTemplate/default_bare%3d-c.ri | Bin 0 -> 189 bytes .../CoffeeScriptTemplate/default_bare-c.ri | Bin 0 -> 182 bytes .../default_no_wrap%3d-c.ri | Bin 0 -> 243 bytes .../CoffeeScriptTemplate/default_no_wrap-c.ri | Bin 0 -> 236 bytes .../engine_initialized%3f-c.ri | Bin 0 -> 196 bytes .../Tilt/CoffeeScriptTemplate/evaluate-i.ri | Bin 0 -> 194 bytes .../initialize_engine-i.ri | Bin 0 -> 191 bytes .../ri/Tilt/CoffeeScriptTemplate/prepare-i.ri | Bin 0 -> 171 bytes .../ri/Tilt/CompileSite/cdesc-CompileSite.ri | Bin 0 -> 300 bytes .../CreoleTemplate/cdesc-CreoleTemplate.ri | Bin 0 -> 461 bytes .../CreoleTemplate/engine_initialized%3f-c.ri | Bin 0 -> 188 bytes .../ri/Tilt/CreoleTemplate/evaluate-i.ri | Bin 0 -> 186 bytes .../CreoleTemplate/initialize_engine-i.ri | Bin 0 -> 183 bytes .../ri/Tilt/CreoleTemplate/prepare-i.ri | Bin 0 -> 163 bytes .../ri/Tilt/ERBTemplate/cdesc-ERBTemplate.ri | Bin 0 -> 669 bytes .../default_output_variable%3d-c.ri | Bin 0 -> 198 bytes .../ERBTemplate/default_output_variable-c.ri | Bin 0 -> 192 bytes .../ERBTemplate/engine_initialized%3f-c.ri | Bin 0 -> 184 bytes .../Tilt/ERBTemplate/initialize_engine-i.ri | Bin 0 -> 179 bytes .../ri/Tilt/ERBTemplate/precompiled-i.ri | Bin 0 -> 173 bytes .../ERBTemplate/precompiled_postamble-i.ri | Bin 0 -> 193 bytes .../ERBTemplate/precompiled_preamble-i.ri | Bin 0 -> 191 bytes .../ERBTemplate/precompiled_template-i.ri | Bin 0 -> 191 bytes .../ri/Tilt/ERBTemplate/prepare-i.ri | Bin 0 -> 159 bytes .../ErubisTemplate/cdesc-ErubisTemplate.ri | Bin 0 -> 1120 bytes .../ErubisTemplate/engine_initialized%3f-c.ri | Bin 0 -> 187 bytes .../ErubisTemplate/initialize_engine-i.ri | Bin 0 -> 182 bytes .../ri/Tilt/ErubisTemplate/precompiled-i.ri | Bin 0 -> 176 bytes .../ErubisTemplate/precompiled_postamble-i.ri | Bin 0 -> 196 bytes .../ErubisTemplate/precompiled_preamble-i.ri | Bin 0 -> 194 bytes .../ri/Tilt/ErubisTemplate/prepare-i.ri | Bin 0 -> 162 bytes .../Tilt/HamlTemplate/cdesc-HamlTemplate.ri | Bin 0 -> 562 bytes .../HamlTemplate/engine_initialized%3f-c.ri | Bin 0 -> 186 bytes .../ri/Tilt/HamlTemplate/evaluate-i.ri | Bin 0 -> 184 bytes .../Tilt/HamlTemplate/initialize_engine-i.ri | Bin 0 -> 181 bytes .../HamlTemplate/precompiled_postamble-i.ri | Bin 0 -> 195 bytes .../HamlTemplate/precompiled_preamble-i.ri | Bin 0 -> 193 bytes .../HamlTemplate/precompiled_template-i.ri | Bin 0 -> 408 bytes .../ri/Tilt/HamlTemplate/prepare-i.ri | Bin 0 -> 161 bytes .../cdesc-KramdownTemplate.ri | Bin 0 -> 517 bytes .../engine_initialized%3f-c.ri | Bin 0 -> 194 bytes .../ri/Tilt/KramdownTemplate/evaluate-i.ri | Bin 0 -> 192 bytes .../KramdownTemplate/initialize_engine-i.ri | Bin 0 -> 189 bytes .../ri/Tilt/KramdownTemplate/prepare-i.ri | Bin 0 -> 169 bytes .../Tilt/LessTemplate/cdesc-LessTemplate.ri | Bin 0 -> 570 bytes .../LessTemplate/engine_initialized%3f-c.ri | Bin 0 -> 185 bytes .../ri/Tilt/LessTemplate/evaluate-i.ri | Bin 0 -> 183 bytes .../Tilt/LessTemplate/initialize_engine-i.ri | Bin 0 -> 180 bytes .../ri/Tilt/LessTemplate/prepare-i.ri | Bin 0 -> 160 bytes .../LiquidTemplate/cdesc-LiquidTemplate.ri | Bin 0 -> 1007 bytes .../LiquidTemplate/engine_initialized%3f-c.ri | Bin 0 -> 190 bytes .../ri/Tilt/LiquidTemplate/evaluate-i.ri | Bin 0 -> 194 bytes .../LiquidTemplate/initialize_engine-i.ri | Bin 0 -> 185 bytes .../ri/Tilt/LiquidTemplate/prepare-i.ri | Bin 0 -> 165 bytes .../__capture_markaby_tilt__-i.ri | Bin 0 -> 207 bytes .../Tilt/MarkabyTemplate/builder_class-c.ri | Bin 0 -> 180 bytes .../MarkabyTemplate/cdesc-MarkabyTemplate.ri | Bin 0 -> 518 bytes .../engine_initialized%3f-c.ri | Bin 0 -> 192 bytes .../ri/Tilt/MarkabyTemplate/evaluate-i.ri | Bin 0 -> 190 bytes .../MarkabyTemplate/initialize_engine-i.ri | Bin 0 -> 187 bytes .../ri/Tilt/MarkabyTemplate/prepare-i.ri | Bin 0 -> 167 bytes .../MarukuTemplate/cdesc-MarukuTemplate.ri | Bin 0 -> 476 bytes .../MarukuTemplate/engine_initialized%3f-c.ri | Bin 0 -> 192 bytes .../ri/Tilt/MarukuTemplate/evaluate-i.ri | Bin 0 -> 190 bytes .../MarukuTemplate/initialize_engine-i.ri | Bin 0 -> 187 bytes .../ri/Tilt/MarukuTemplate/prepare-i.ri | Bin 0 -> 167 bytes .../cdesc-NokogiriTemplate.ri | Bin 0 -> 574 bytes .../engine_initialized%3f-c.ri | Bin 0 -> 194 bytes .../ri/Tilt/NokogiriTemplate/evaluate-i.ri | Bin 0 -> 198 bytes .../NokogiriTemplate/initialize_engine-i.ri | Bin 0 -> 189 bytes .../precompiled_postamble-i.ri | Bin 0 -> 203 bytes .../precompiled_preamble-i.ri | Bin 0 -> 201 bytes .../precompiled_template-i.ri | Bin 0 -> 201 bytes .../ri/Tilt/NokogiriTemplate/prepare-i.ri | Bin 0 -> 169 bytes .../cdesc-RDiscountTemplate.ri | Bin 0 -> 805 bytes .../engine_initialized%3f-c.ri | Bin 0 -> 195 bytes .../ri/Tilt/RDiscountTemplate/evaluate-i.ri | Bin 0 -> 193 bytes .../ri/Tilt/RDiscountTemplate/flags-i.ri | Bin 0 -> 166 bytes .../RDiscountTemplate/initialize_engine-i.ri | Bin 0 -> 190 bytes .../ri/Tilt/RDiscountTemplate/prepare-i.ri | Bin 0 -> 170 bytes .../Tilt/RDocTemplate/cdesc-RDocTemplate.ri | Bin 0 -> 629 bytes .../RDocTemplate/engine_initialized%3f-c.ri | Bin 0 -> 186 bytes .../ri/Tilt/RDocTemplate/evaluate-i.ri | Bin 0 -> 184 bytes .../Tilt/RDocTemplate/initialize_engine-i.ri | Bin 0 -> 181 bytes .../ri/Tilt/RDocTemplate/prepare-i.ri | Bin 0 -> 161 bytes .../RadiusTemplate/cdesc-RadiusTemplate.ri | Bin 0 -> 522 bytes .../ri/Tilt/RadiusTemplate/context_class-c.ri | Bin 0 -> 178 bytes .../ri/Tilt/RadiusTemplate/dup-i.ri | Bin 0 -> 157 bytes .../RadiusTemplate/engine_initialized%3f-c.ri | Bin 0 -> 190 bytes .../ri/Tilt/RadiusTemplate/evaluate-i.ri | Bin 0 -> 188 bytes .../RadiusTemplate/initialize_engine-i.ri | Bin 0 -> 185 bytes .../ri/Tilt/RadiusTemplate/prepare-i.ri | Bin 0 -> 165 bytes .../ri/Tilt/RadiusTemplate/tag_missing-i.ri | Bin 0 -> 189 bytes .../cdesc-RedClothTemplate.ri | Bin 0 -> 464 bytes .../engine_initialized%3f-c.ri | Bin 0 -> 193 bytes .../ri/Tilt/RedClothTemplate/evaluate-i.ri | Bin 0 -> 191 bytes .../RedClothTemplate/initialize_engine-i.ri | Bin 0 -> 188 bytes .../ri/Tilt/RedClothTemplate/prepare-i.ri | Bin 0 -> 168 bytes .../Redcarpet1/cdesc-Redcarpet1.ri | Bin 0 -> 420 bytes .../Redcarpet1/engine_initialized%3f-c.ri | Bin 0 -> 207 bytes .../RedcarpetTemplate/Redcarpet1/prepare-i.ri | Bin 0 -> 182 bytes .../Redcarpet2/cdesc-Redcarpet2.ri | Bin 0 -> 522 bytes .../Redcarpet2/engine_initialized%3f-c.ri | Bin 0 -> 207 bytes .../Redcarpet2/evaluate-i.ri | Bin 0 -> 205 bytes .../Redcarpet2/generate_renderer-i.ri | Bin 0 -> 202 bytes .../RedcarpetTemplate/Redcarpet2/prepare-i.ri | Bin 0 -> 182 bytes .../cdesc-RedcarpetTemplate.ri | Bin 0 -> 567 bytes .../engine_initialized%3f-c.ri | Bin 0 -> 195 bytes .../ri/Tilt/RedcarpetTemplate/evaluate-i.ri | Bin 0 -> 193 bytes .../RedcarpetTemplate/initialize_engine-i.ri | Bin 0 -> 190 bytes .../ri/Tilt/RedcarpetTemplate/prepare-i.ri | Bin 0 -> 170 bytes .../Tilt/SassTemplate/cdesc-SassTemplate.ri | Bin 0 -> 577 bytes .../SassTemplate/engine_initialized%3f-c.ri | Bin 0 -> 185 bytes .../ri/Tilt/SassTemplate/evaluate-i.ri | Bin 0 -> 183 bytes .../Tilt/SassTemplate/initialize_engine-i.ri | Bin 0 -> 180 bytes .../ri/Tilt/SassTemplate/prepare-i.ri | Bin 0 -> 160 bytes .../Tilt/ScssTemplate/cdesc-ScssTemplate.ri | Bin 0 -> 357 bytes .../StringTemplate/cdesc-StringTemplate.ri | Bin 0 -> 505 bytes .../ri/Tilt/StringTemplate/precompiled-i.ri | Bin 0 -> 179 bytes .../StringTemplate/precompiled_template-i.ri | Bin 0 -> 197 bytes .../ri/Tilt/StringTemplate/prepare-i.ri | Bin 0 -> 165 bytes .../tilt-1.3.3/ri/Tilt/Template/basename-i.ri | Bin 0 -> 244 bytes .../ri/Tilt/Template/cached_evaluate-c.ri | Bin 0 -> 296 bytes .../ri/Tilt/Template/cached_evaluate-i.ri | Bin 0 -> 677 bytes .../ri/Tilt/Template/cdesc-Template.ri | Bin 0 -> 1062 bytes .../ri/Tilt/Template/compiled_method-i.ri | Bin 0 -> 278 bytes .../doc/tilt-1.3.3/ri/Tilt/Template/data-i.ri | 2 + .../ri/Tilt/Template/default_mime_type-c.ri | Bin 0 -> 173 bytes .../Tilt/Template/engine_initialized%3f-c.ri | Bin 0 -> 177 bytes .../ri/Tilt/Template/engine_initialized-c.ri | Bin 0 -> 175 bytes .../ri/Tilt/Template/eval_file-i.ri | Bin 0 -> 260 bytes .../tilt-1.3.3/ri/Tilt/Template/evaluate-i.ri | Bin 0 -> 187 bytes .../doc/tilt-1.3.3/ri/Tilt/Template/file-i.ri | 2 + .../ri/Tilt/Template/initialize_engine-i.ri | Bin 0 -> 430 bytes .../doc/tilt-1.3.3/ri/Tilt/Template/line-i.ri | 2 + .../doc/tilt-1.3.3/ri/Tilt/Template/name-i.ri | Bin 0 -> 254 bytes .../doc/tilt-1.3.3/ri/Tilt/Template/new-c.ri | Bin 0 -> 544 bytes .../tilt-1.3.3/ri/Tilt/Template/options-i.ri | 2 + .../ri/Tilt/Template/precompiled-i.ri | Bin 0 -> 809 bytes .../Tilt/Template/precompiled_postamble-i.ri | Bin 0 -> 394 bytes .../Tilt/Template/precompiled_preamble-i.ri | Bin 0 -> 579 bytes .../Tilt/Template/precompiled_template-i.ri | Bin 0 -> 611 bytes .../tilt-1.3.3/ri/Tilt/Template/prepare-i.ri | Bin 0 -> 518 bytes .../tilt-1.3.3/ri/Tilt/Template/render-i.ri | Bin 0 -> 389 bytes .../Template/require_template_library-i.ri | Bin 0 -> 354 bytes .../cdesc-WikiClothTemplate.ri | Bin 0 -> 464 bytes .../engine_initialized%3f-c.ri | Bin 0 -> 191 bytes .../ri/Tilt/WikiClothTemplate/evaluate-i.ri | Bin 0 -> 189 bytes .../WikiClothTemplate/initialize_engine-i.ri | Bin 0 -> 186 bytes .../ri/Tilt/WikiClothTemplate/prepare-i.ri | Bin 0 -> 166 bytes .../Tilt/YajlTemplate/cdesc-YajlTemplate.ri | Bin 0 -> 1907 bytes .../ri/Tilt/YajlTemplate/decorate-i.ri | Bin 0 -> 446 bytes .../YajlTemplate/engine_initialized%3f-c.ri | Bin 0 -> 186 bytes .../ri/Tilt/YajlTemplate/evaluate-i.ri | Bin 0 -> 184 bytes .../Tilt/YajlTemplate/initialize_engine-i.ri | Bin 0 -> 181 bytes .../YajlTemplate/precompiled_postamble-i.ri | Bin 0 -> 195 bytes .../YajlTemplate/precompiled_preamble-i.ri | Bin 0 -> 193 bytes .../YajlTemplate/precompiled_template-i.ri | Bin 0 -> 193 bytes .../ri/Tilt/YajlTemplate/prepare-i.ri | Bin 0 -> 161 bytes .../doc/tilt-1.3.3/ri/Tilt/cdesc-Tilt.ri | Bin 0 -> 412 bytes .../doc/tilt-1.3.3/ri/Tilt/mappings-c.ri | Bin 0 -> 255 bytes .../resources/doc/tilt-1.3.3/ri/Tilt/new-c.ri | Bin 0 -> 319 bytes .../doc/tilt-1.3.3/ri/Tilt/normalize-c.ri | Bin 0 -> 150 bytes .../doc/tilt-1.3.3/ri/Tilt/prefer-c.ri | Bin 0 -> 658 bytes .../doc/tilt-1.3.3/ri/Tilt/register-c.ri | Bin 0 -> 263 bytes .../doc/tilt-1.3.3/ri/Tilt/registered%3f-c.ri | Bin 0 -> 276 bytes src/main/resources/doc/tilt-1.3.3/ri/cache.ri | 9 + .../resources/doc/tilt-1.3.3/ri/created.rid | 18 + src/main/resources/execute_asciidoctor.rb | 11 + .../resources/gems/asciidoctor-0.0.9/Gemfile | 2 + .../resources/gems/asciidoctor-0.0.9/LICENSE | 21 + .../gems/asciidoctor-0.0.9/README.asciidoc | 165 + .../resources/gems/asciidoctor-0.0.9/Rakefile | 153 + .../asciidoctor-0.0.9/asciidoctor.gemspec | 120 + .../gems/asciidoctor-0.0.9/bin/asciidoctor | 8 + .../gems/asciidoctor-0.0.9/lib/asciidoctor.rb | 520 +++ .../lib/asciidoctor/abstract_block.rb | 218 ++ .../lib/asciidoctor/abstract_node.rb | 249 ++ .../lib/asciidoctor/attribute_list.rb | 211 ++ .../lib/asciidoctor/backends/base_template.rb | 99 + .../lib/asciidoctor/backends/docbook45.rb | 510 +++ .../lib/asciidoctor/backends/html5.rb | 585 ++++ .../lib/asciidoctor/block.rb | 121 + .../lib/asciidoctor/callouts.rb | 117 + .../lib/asciidoctor/debug.rb | 24 + .../lib/asciidoctor/document.rb | 317 ++ .../lib/asciidoctor/errors.rb | 5 + .../lib/asciidoctor/inline.rb | 29 + .../lib/asciidoctor/lexer.rb | 1600 ++++++++++ .../lib/asciidoctor/list_item.rb | 81 + .../lib/asciidoctor/reader.rb | 416 +++ .../lib/asciidoctor/renderer.rb | 178 ++ .../lib/asciidoctor/section.rb | 161 + .../lib/asciidoctor/substituters.rb | 468 +++ .../lib/asciidoctor/table.rb | 499 +++ .../lib/asciidoctor/version.rb | 3 + .../resources/gems/asciidoctor-0.0.9/noof.rb | 16 + .../asciidoctor-0.0.9/test/attributes_test.rb | 356 +++ .../asciidoctor-0.0.9/test/blocks_test.rb | 568 ++++ .../asciidoctor-0.0.9/test/document_test.rb | 233 ++ .../test/fixtures/asciidoc.txt | 105 + .../test/fixtures/asciidoc_index.txt | 507 +++ .../test/fixtures/ascshort.txt | 32 + .../asciidoctor-0.0.9/test/fixtures/dot.gif | Bin 0 -> 35 bytes .../test/fixtures/encoding.asciidoc | 1 + .../test/fixtures/include-file.asciidoc | 1 + .../test/fixtures/list_elements.asciidoc | 10 + .../asciidoctor-0.0.9/test/fixtures/tip.gif | Bin 0 -> 35 bytes .../asciidoctor-0.0.9/test/headers_test.rb | 482 +++ .../gems/asciidoctor-0.0.9/test/lexer_test.rb | 286 ++ .../gems/asciidoctor-0.0.9/test/links_test.rb | 150 + .../gems/asciidoctor-0.0.9/test/lists_test.rb | 2584 +++++++++++++++ .../asciidoctor-0.0.9/test/paragraphs_test.rb | 144 + .../asciidoctor-0.0.9/test/preamble_test.rb | 112 + .../asciidoctor-0.0.9/test/reader_test.rb | 292 ++ .../asciidoctor-0.0.9/test/renderer_test.rb | 22 + .../test/substitutions_test.rb | 414 +++ .../asciidoctor-0.0.9/test/tables_test.rb | 484 +++ .../asciidoctor-0.0.9/test/test_helper.rb | 213 ++ .../gems/asciidoctor-0.0.9/test/text_test.rb | 122 + src/main/resources/gems/tilt-1.3.3/COPYING | 18 + src/main/resources/gems/tilt-1.3.3/Gemfile | 2 + src/main/resources/gems/tilt-1.3.3/README.md | 208 ++ src/main/resources/gems/tilt-1.3.3/Rakefile | 80 + .../resources/gems/tilt-1.3.3/TEMPLATES.md | 516 +++ src/main/resources/gems/tilt-1.3.3/bin/tilt | 110 + .../resources/gems/tilt-1.3.3/lib/tilt.rb | 190 ++ .../gems/tilt-1.3.3/lib/tilt/builder.rb | 40 + .../gems/tilt-1.3.3/lib/tilt/coffee.rb | 50 + .../resources/gems/tilt-1.3.3/lib/tilt/css.rb | 72 + .../resources/gems/tilt-1.3.3/lib/tilt/erb.rb | 110 + .../gems/tilt-1.3.3/lib/tilt/haml.rb | 64 + .../gems/tilt-1.3.3/lib/tilt/liquid.rb | 41 + .../gems/tilt-1.3.3/lib/tilt/markaby.rb | 52 + .../gems/tilt-1.3.3/lib/tilt/markdown.rb | 190 ++ .../gems/tilt-1.3.3/lib/tilt/nokogiri.rb | 43 + .../gems/tilt-1.3.3/lib/tilt/radius.rb | 51 + .../gems/tilt-1.3.3/lib/tilt/rdoc.rb | 32 + .../gems/tilt-1.3.3/lib/tilt/string.rb | 21 + .../gems/tilt-1.3.3/lib/tilt/template.rb | 285 ++ .../gems/tilt-1.3.3/lib/tilt/textile.rb | 25 + .../gems/tilt-1.3.3/lib/tilt/wiki.rb | 50 + .../gems/tilt-1.3.3/lib/tilt/yajl.rb | 94 + .../resources/gems/tilt-1.3.3/test/contest.rb | 68 + .../gems/tilt-1.3.3/test/markaby/locals.mab | 1 + .../gems/tilt-1.3.3/test/markaby/markaby.mab | 1 + .../test/markaby/markaby_other_static.mab | 1 + .../tilt-1.3.3/test/markaby/render_twice.mab | 1 + .../gems/tilt-1.3.3/test/markaby/scope.mab | 1 + .../gems/tilt-1.3.3/test/markaby/yielding.mab | 2 + .../test/tilt_blueclothtemplate_test.rb | 45 + .../test/tilt_buildertemplate_test.rb | 59 + .../gems/tilt-1.3.3/test/tilt_cache_test.rb | 32 + .../test/tilt_coffeescripttemplate_test.rb | 61 + .../tilt-1.3.3/test/tilt_compilesite_test.rb | 51 + .../test/tilt_creoletemplate_test.rb | 28 + .../tilt-1.3.3/test/tilt_erbtemplate_test.rb | 234 ++ .../test/tilt_erubistemplate_test.rb | 151 + .../tilt-1.3.3/test/tilt_fallback_test.rb | 122 + .../tilt-1.3.3/test/tilt_hamltemplate_test.rb | 144 + .../tilt-1.3.3/test/tilt_kramdown_test.rb | 42 + .../tilt-1.3.3/test/tilt_lesstemplate_test.rb | 26 + .../test/tilt_liquidtemplate_test.rb | 78 + .../gems/tilt-1.3.3/test/tilt_markaby_test.rb | 88 + .../tilt-1.3.3/test/tilt_markdown_test.rb | 161 + .../test/tilt_marukutemplate_test.rb | 48 + .../test/tilt_nokogiritemplate_test.rb | 87 + .../test/tilt_radiustemplate_test.rb | 75 + .../test/tilt_rdiscounttemplate_test.rb | 55 + .../tilt-1.3.3/test/tilt_rdoctemplate_test.rb | 24 + .../test/tilt_redcarpettemplate_test.rb | 59 + .../test/tilt_redclothtemplate_test.rb | 24 + .../tilt-1.3.3/test/tilt_sasstemplate_test.rb | 41 + .../test/tilt_stringtemplate_test.rb | 170 + .../tilt-1.3.3/test/tilt_template_test.rb | 154 + .../gems/tilt-1.3.3/test/tilt_test.rb | 65 + .../test/tilt_wikiclothtemplate_test.rb | 32 + .../tilt-1.3.3/test/tilt_yajltemplate_test.rb | 92 + .../resources/gems/tilt-1.3.3/tilt.gemspec | 109 + .../specifications/asciidoctor-0.0.9.gemspec | 54 + .../specifications/tilt-1.3.3.gemspec | 97 + .../maven/test/AsciidoctorMojoTest.groovy | 47 + .../resources/src/asciidoc/sample.asciidoc | 26 + 879 files changed, 73615 insertions(+), 25 deletions(-) create mode 100755 src/main/resources/bin/asciidoctor create mode 100755 src/main/resources/bin/tilt create mode 100644 src/main/resources/cache/asciidoctor-0.0.9.gem create mode 100644 src/main/resources/cache/tilt-1.3.3.gem create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/AbstractBlock.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/AbstractNode.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/AttributeList.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/BaseTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Block.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Callouts.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockAdmonitionTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockColistTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockDlistTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockExampleTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockImageTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockListingTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockLiteralTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockOlistTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockOpenTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockParagraphTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockPassTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockPreambleTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockQuoteTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockRulerTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockSidebarTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockTableTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockUlistTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockVerseTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/DocumentTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/EmbeddedTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/InlineAnchorTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/InlineBreakTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/InlineCalloutTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/InlineImageTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/InlineQuotedTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/SectionTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Document.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockAdmonitionTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockColistTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockDlistTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockExampleTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockImageTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockListingTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockLiteralTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockOlistTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockOpenTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockParagraphTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockPassTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockPreambleTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockQuoteTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockRulerTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockSidebarTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockTableTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockUlistTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockVerseTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/DocumentTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/EmbeddedTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/InlineAnchorTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/InlineBreakTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/InlineCalloutTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/InlineImageTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/InlineQuotedTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/SectionTemplate.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Inline.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Lexer.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/ListItem.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/ProjectError.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Reader.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Renderer.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/SafeMode.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Section.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Substituters.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Table.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Table/Cell.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Table/Column.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Table/ParserContext.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/LICENSE.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/created.rid create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/brick.png create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/brick_link.png create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/bug.png create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/bullet_black.png create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/bullet_toggle_minus.png create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/bullet_toggle_plus.png create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/date.png create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/find.png create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/loadingAnimation.gif create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/macFFBgHack.png create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/package.png create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/page_green.png create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/page_white_text.png create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/page_white_width.png create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/plugin.png create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/ruby.png create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/tag_green.png create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/wrench.png create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/wrench_orange.png create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/zoom.png create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/index.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/js/darkfish.js create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/js/jquery.js create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/js/quicksearch.js create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/js/thickbox-compressed.js create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/abstract_block_rb.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/abstract_node_rb.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/attribute_list_rb.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/backends/base_template_rb.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/backends/docbook45_rb.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/backends/html5_rb.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/block_rb.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/callouts_rb.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/debug_rb.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/document_rb.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/errors_rb.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/inline_rb.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/lexer_rb.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/list_item_rb.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/reader_rb.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/renderer_rb.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/section_rb.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/substituters_rb.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/table_rb.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/version_rb.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor_rb.html create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/rdoc/rdoc.css create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/%3c%3c-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/%5b%5d-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/assign_index-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/blocks%3f-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/blocks-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/cdesc-AbstractBlock.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/clear_blocks-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/delete_at-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/insert-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/level-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/new-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/reindex_sections-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/sections-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/size-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/title%3f-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/title-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/attr%3f-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/attr-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/attributes-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/cdesc-AbstractNode.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/context-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/document-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/generate_data_uri-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/get_binding-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/icon_uri-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/id-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/image_uri-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/new-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/normalize_asset_path-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/parent-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/renderer-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/update_attributes-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/cdesc-AttributeList.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/new-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/parse-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/parse_attribute-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/parse_attribute_value-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/parse_into-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/rekey-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/rekey-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/scan_name-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/scan_to_delimiter-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/scan_to_quote-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/skip_blank-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/skip_delimiter-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/attribute-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/attrvalue-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/cdesc-BaseTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/compact-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/eruby-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/id-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/inherited-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/new-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/preserve_endlines-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/render-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/role-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/style_class-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/tag-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/template_classes-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/title-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/view-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/xreflabel-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Block/buffer-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Block/caption-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Block/cdesc-Block.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Block/content-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Block/new-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Block/render-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Block/splain-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Block/to_s-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/callout_ids-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/cdesc-Callouts.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/current_list-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/generate_callout_id-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/generate_next_callout_id-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/new-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/next_list-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/read_next_id-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/register-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/rewind-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockAdmonitionTemplate/cdesc-BlockAdmonitionTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockAdmonitionTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockColistTemplate/cdesc-BlockColistTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockColistTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockDlistTemplate/cdesc-BlockDlistTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockDlistTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockExampleTemplate/cdesc-BlockExampleTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockExampleTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockImageTemplate/cdesc-BlockImageTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockImageTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockListingTemplate/cdesc-BlockListingTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockListingTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockLiteralTemplate/cdesc-BlockLiteralTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockLiteralTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockOlistTemplate/cdesc-BlockOlistTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockOlistTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockOpenTemplate/cdesc-BlockOpenTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockOpenTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockParagraphTemplate/cdesc-BlockParagraphTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockParagraphTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockPassTemplate/cdesc-BlockPassTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockPassTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockPreambleTemplate/cdesc-BlockPreambleTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockPreambleTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockQuoteTemplate/cdesc-BlockQuoteTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockQuoteTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockRulerTemplate/cdesc-BlockRulerTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockRulerTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockSidebarTemplate/cdesc-BlockSidebarTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockSidebarTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockTableTemplate/cdesc-BlockTableTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockTableTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockUlistTemplate/cdesc-BlockUlistTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockUlistTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockVerseTemplate/cdesc-BlockVerseTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockVerseTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/DocumentTemplate/cdesc-DocumentTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/DocumentTemplate/docinfo-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/DocumentTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/EmbeddedTemplate/cdesc-EmbeddedTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/EmbeddedTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/InlineAnchorTemplate/cdesc-InlineAnchorTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/InlineAnchorTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/InlineBreakTemplate/cdesc-InlineBreakTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/InlineBreakTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/InlineCalloutTemplate/cdesc-InlineCalloutTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/InlineCalloutTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/InlineImageTemplate/cdesc-InlineImageTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/InlineImageTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/InlineQuotedTemplate/cdesc-InlineQuotedTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/InlineQuotedTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/SectionTemplate/cdesc-SectionTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/SectionTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/cdesc-DocBook45.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/base_dir-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/callouts-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/cdesc-Document.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/content-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/doctitle-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/doctype-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/first_section-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/has_header%3f-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/header-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/name-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/nested%3f-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/new-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/noheader-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/notitle-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/parent_document-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/references-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/register-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/render-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/renderer-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/safe-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/source-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/splain-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/title%3d-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/title-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/to_s-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/update_backend_attributes-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockAdmonitionTemplate/cdesc-BlockAdmonitionTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockAdmonitionTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockColistTemplate/cdesc-BlockColistTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockColistTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockDlistTemplate/cdesc-BlockDlistTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockDlistTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockExampleTemplate/cdesc-BlockExampleTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockExampleTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockImageTemplate/cdesc-BlockImageTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockImageTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockListingTemplate/cdesc-BlockListingTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockListingTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockLiteralTemplate/cdesc-BlockLiteralTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockLiteralTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockOlistTemplate/cdesc-BlockOlistTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockOlistTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockOpenTemplate/cdesc-BlockOpenTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockOpenTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockParagraphTemplate/cdesc-BlockParagraphTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockParagraphTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockPassTemplate/cdesc-BlockPassTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockPassTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockPreambleTemplate/cdesc-BlockPreambleTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockPreambleTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockQuoteTemplate/cdesc-BlockQuoteTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockQuoteTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockRulerTemplate/cdesc-BlockRulerTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockRulerTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockSidebarTemplate/cdesc-BlockSidebarTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockSidebarTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockTableTemplate/cdesc-BlockTableTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockTableTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockUlistTemplate/cdesc-BlockUlistTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockUlistTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockVerseTemplate/cdesc-BlockVerseTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockVerseTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/DocumentTemplate/cdesc-DocumentTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/DocumentTemplate/default_coderay_stylesheet-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/DocumentTemplate/render_outline-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/DocumentTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/EmbeddedTemplate/cdesc-EmbeddedTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/EmbeddedTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineAnchorTemplate/cdesc-InlineAnchorTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineAnchorTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineBreakTemplate/cdesc-InlineBreakTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineBreakTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineCalloutTemplate/cdesc-InlineCalloutTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineCalloutTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineImageTemplate/cdesc-InlineImageTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineImageTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineQuotedTemplate/cdesc-InlineQuotedTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineQuotedTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/SectionTemplate/cdesc-SectionTemplate.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/SectionTemplate/template-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/cdesc-HTML5.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Inline/cdesc-Inline.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Inline/new-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Inline/render-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Inline/target-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Inline/text-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Inline/type-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/catalog_callouts-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/catalog_inline_anchors-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/cdesc-Lexer.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/delimited_block%3f-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/grab_lines_for_list_item-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/initialize_section-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/is_next_line_section%3f-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/is_section_title%3f-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/is_sibling_list_item%3f-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/is_single_line_section_title%3f-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/is_two_line_section_title%3f-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/new-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/next_block-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/next_labeled_list-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/next_list_item-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/next_outline_list-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/next_section-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/next_table-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/parse-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/parse_block_metadata_line-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/parse_block_metadata_lines-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/parse_cell_spec-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/parse_col_specs-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/parse_header_metadata-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/parse_section_title-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/resolve_list_marker-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/resolve_ordered_list_marker-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/roman_numeral_to_int-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/section_level-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/single_line_section_level-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/ListItem/cdesc-ListItem.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/ListItem/content-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/ListItem/fold_first-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/ListItem/marker-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/ListItem/new-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/ListItem/splain-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/ListItem/text%3f-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/ListItem/text-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/ListItem/to_s-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/ProjectError/cdesc-ProjectError.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/apply_attribute_value_subs-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/attribute_overridden%3f-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/cdesc-Reader.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/chomp_last%21-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/consume_comments-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/consume_line_comments-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/empty%3f-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/get_line-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/grab_lines_until-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/has_lines%3f-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/lines-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/new-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/next_line-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/peek_line-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/process-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/sanitize_attribute_name-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/skip_blank-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/skip_blank_lines-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/skip_list_continuation-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/source-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/unshift-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Renderer/camelcase_to_underscore-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Renderer/cdesc-Renderer.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Renderer/compact-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Renderer/extract_view_mapping-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Renderer/load_eruby-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Renderer/new-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Renderer/render-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Renderer/views-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/SafeMode/cdesc-SafeMode.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/cdesc-Section.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/content-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/generate_id-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/index-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/new-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/render-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/sectnum-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/to_s-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/apply_header_subs-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/apply_literal_subs-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/apply_normal_subs-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/apply_passthrough_subs-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/apply_subs-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/apply_title_subs-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/cdesc-Substituters.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/extract_passthroughs-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/highlight_source-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/parse_attributes-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/passthroughs-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/resolve_subs-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/restore_passthroughs-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/sub_attributes-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/sub_callouts-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/sub_macros-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/sub_post_replacements-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/sub_quotes-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/sub_replacements-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/sub_specialcharacters-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/transform_quoted_text-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/Cell/cdesc-Cell.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/Cell/colspan-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/Cell/content-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/Cell/inner_document-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/Cell/new-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/Cell/rowspan-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/Cell/text-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/Cell/to_s-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/Column/assign_width-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/Column/cdesc-Column.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/Column/new-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/activate_rowspan-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/buffer-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/buffer_has_unclosed_quotes%3f-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/buffer_quoted%3f-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/cdesc-ParserContext.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/cell_closed%3f-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/cell_open%3f-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/close_cell-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/close_open_cell-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/close_row-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/col_count-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/delimiter-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/delimiter_re-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/effective_col_visits-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/end_of_row%3f-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/format-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/keep_cell_open-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/mark_cell_closed-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/match_delimiter-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/new-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/next_line-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/push_cell_spec-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/skip_matched_delimiter-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/starts_with_delimiter%3f-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/table-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/take_cell_spec-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/caption-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/cdesc-Table.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/columns-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/create_columns-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/new-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/partition_header_footer-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/render-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/rows-i.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/cdesc-Asciidoctor.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/debug-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/puts_indented-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/require_library-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/set_debug-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/show_debug_output%3f-c.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/cache.ri create mode 100644 src/main/resources/doc/asciidoctor-0.0.9/ri/created.rid create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/BlueClothTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/BuilderTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/Cache.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/CoffeeScriptTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/CompileSite.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/CreoleTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/ERBTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/ErubisTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/HamlTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/KramdownTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/LessTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/LiquidTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/MarkabyTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/MarukuTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/NokogiriTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RDiscountTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RDocTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RadiusTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RedClothTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RedcarpetTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RedcarpetTemplate/Redcarpet1.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RedcarpetTemplate/Redcarpet2.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/SassTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/ScssTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/StringTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/Template.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/WikiClothTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/YajlTemplate.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/created.rid create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/images/brick.png create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/images/brick_link.png create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/images/bug.png create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/images/bullet_black.png create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/images/bullet_toggle_minus.png create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/images/bullet_toggle_plus.png create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/images/date.png create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/images/find.png create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/images/loadingAnimation.gif create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/images/macFFBgHack.png create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/images/package.png create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/images/page_green.png create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/images/page_white_text.png create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/images/page_white_width.png create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/images/plugin.png create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/images/ruby.png create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/images/tag_green.png create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/images/wrench.png create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/images/wrench_orange.png create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/images/zoom.png create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/index.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/js/darkfish.js create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/js/jquery.js create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/js/quicksearch.js create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/js/thickbox-compressed.js create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/builder_rb.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/coffee_rb.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/css_rb.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/erb_rb.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/haml_rb.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/liquid_rb.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/markaby_rb.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/markdown_rb.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/nokogiri_rb.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/radius_rb.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/rdoc_rb.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/string_rb.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/template_rb.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/textile_rb.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/wiki_rb.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/yajl_rb.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt_rb.html create mode 100644 src/main/resources/doc/tilt-1.3.3/rdoc/rdoc.css create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/%5b%5d-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/BlueClothTemplate/cdesc-BlueClothTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/BlueClothTemplate/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/BlueClothTemplate/evaluate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/BlueClothTemplate/initialize_engine-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/BlueClothTemplate/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/BuilderTemplate/cdesc-BuilderTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/BuilderTemplate/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/BuilderTemplate/evaluate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/BuilderTemplate/initialize_engine-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/BuilderTemplate/precompiled_postamble-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/BuilderTemplate/precompiled_preamble-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/BuilderTemplate/precompiled_template-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/BuilderTemplate/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Cache/cdesc-Cache.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Cache/clear-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Cache/fetch-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Cache/new-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/cdesc-CoffeeScriptTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/default_bare%3d-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/default_bare-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/default_no_wrap%3d-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/default_no_wrap-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/evaluate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/initialize_engine-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/CompileSite/cdesc-CompileSite.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/CreoleTemplate/cdesc-CreoleTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/CreoleTemplate/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/CreoleTemplate/evaluate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/CreoleTemplate/initialize_engine-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/CreoleTemplate/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/cdesc-ERBTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/default_output_variable%3d-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/default_output_variable-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/initialize_engine-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/precompiled-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/precompiled_postamble-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/precompiled_preamble-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/precompiled_template-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/ErubisTemplate/cdesc-ErubisTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/ErubisTemplate/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/ErubisTemplate/initialize_engine-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/ErubisTemplate/precompiled-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/ErubisTemplate/precompiled_postamble-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/ErubisTemplate/precompiled_preamble-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/ErubisTemplate/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/HamlTemplate/cdesc-HamlTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/HamlTemplate/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/HamlTemplate/evaluate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/HamlTemplate/initialize_engine-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/HamlTemplate/precompiled_postamble-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/HamlTemplate/precompiled_preamble-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/HamlTemplate/precompiled_template-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/HamlTemplate/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/KramdownTemplate/cdesc-KramdownTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/KramdownTemplate/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/KramdownTemplate/evaluate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/KramdownTemplate/initialize_engine-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/KramdownTemplate/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/LessTemplate/cdesc-LessTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/LessTemplate/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/LessTemplate/evaluate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/LessTemplate/initialize_engine-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/LessTemplate/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/LiquidTemplate/cdesc-LiquidTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/LiquidTemplate/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/LiquidTemplate/evaluate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/LiquidTemplate/initialize_engine-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/LiquidTemplate/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarkabyTemplate/__capture_markaby_tilt__-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarkabyTemplate/builder_class-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarkabyTemplate/cdesc-MarkabyTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarkabyTemplate/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarkabyTemplate/evaluate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarkabyTemplate/initialize_engine-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarkabyTemplate/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarukuTemplate/cdesc-MarukuTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarukuTemplate/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarukuTemplate/evaluate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarukuTemplate/initialize_engine-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarukuTemplate/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/NokogiriTemplate/cdesc-NokogiriTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/NokogiriTemplate/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/NokogiriTemplate/evaluate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/NokogiriTemplate/initialize_engine-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/NokogiriTemplate/precompiled_postamble-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/NokogiriTemplate/precompiled_preamble-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/NokogiriTemplate/precompiled_template-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/NokogiriTemplate/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDiscountTemplate/cdesc-RDiscountTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDiscountTemplate/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDiscountTemplate/evaluate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDiscountTemplate/flags-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDiscountTemplate/initialize_engine-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDiscountTemplate/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDocTemplate/cdesc-RDocTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDocTemplate/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDocTemplate/evaluate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDocTemplate/initialize_engine-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDocTemplate/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RadiusTemplate/cdesc-RadiusTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RadiusTemplate/context_class-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RadiusTemplate/dup-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RadiusTemplate/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RadiusTemplate/evaluate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RadiusTemplate/initialize_engine-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RadiusTemplate/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RadiusTemplate/tag_missing-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedClothTemplate/cdesc-RedClothTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedClothTemplate/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedClothTemplate/evaluate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedClothTemplate/initialize_engine-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedClothTemplate/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/Redcarpet1/cdesc-Redcarpet1.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/Redcarpet1/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/Redcarpet1/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/Redcarpet2/cdesc-Redcarpet2.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/Redcarpet2/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/Redcarpet2/evaluate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/Redcarpet2/generate_renderer-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/Redcarpet2/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/cdesc-RedcarpetTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/evaluate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/initialize_engine-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/SassTemplate/cdesc-SassTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/SassTemplate/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/SassTemplate/evaluate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/SassTemplate/initialize_engine-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/SassTemplate/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/ScssTemplate/cdesc-ScssTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/StringTemplate/cdesc-StringTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/StringTemplate/precompiled-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/StringTemplate/precompiled_template-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/StringTemplate/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/basename-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/cached_evaluate-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/cached_evaluate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/cdesc-Template.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/compiled_method-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/data-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/default_mime_type-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/engine_initialized-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/eval_file-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/evaluate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/file-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/initialize_engine-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/line-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/name-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/new-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/options-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/precompiled-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/precompiled_postamble-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/precompiled_preamble-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/precompiled_template-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/render-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/require_template_library-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/WikiClothTemplate/cdesc-WikiClothTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/WikiClothTemplate/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/WikiClothTemplate/evaluate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/WikiClothTemplate/initialize_engine-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/WikiClothTemplate/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/YajlTemplate/cdesc-YajlTemplate.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/YajlTemplate/decorate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/YajlTemplate/engine_initialized%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/YajlTemplate/evaluate-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/YajlTemplate/initialize_engine-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/YajlTemplate/precompiled_postamble-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/YajlTemplate/precompiled_preamble-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/YajlTemplate/precompiled_template-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/YajlTemplate/prepare-i.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/cdesc-Tilt.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/mappings-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/new-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/normalize-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/prefer-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/register-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/Tilt/registered%3f-c.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/cache.ri create mode 100644 src/main/resources/doc/tilt-1.3.3/ri/created.rid create mode 100644 src/main/resources/execute_asciidoctor.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/Gemfile create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/LICENSE create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/README.asciidoc create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/Rakefile create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/asciidoctor.gemspec create mode 100755 src/main/resources/gems/asciidoctor-0.0.9/bin/asciidoctor create mode 100755 src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/abstract_block.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/abstract_node.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/attribute_list.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/backends/base_template.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/backends/docbook45.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/backends/html5.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/block.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/callouts.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/debug.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/document.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/errors.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/inline.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/lexer.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/list_item.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/reader.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/renderer.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/section.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/substituters.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/table.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/version.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/noof.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/attributes_test.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/blocks_test.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/document_test.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/asciidoc.txt create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/asciidoc_index.txt create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/ascshort.txt create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/dot.gif create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/encoding.asciidoc create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/include-file.asciidoc create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/list_elements.asciidoc create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/tip.gif create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/headers_test.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/lexer_test.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/links_test.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/lists_test.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/paragraphs_test.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/preamble_test.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/reader_test.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/renderer_test.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/substitutions_test.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/tables_test.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/test_helper.rb create mode 100644 src/main/resources/gems/asciidoctor-0.0.9/test/text_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/COPYING create mode 100644 src/main/resources/gems/tilt-1.3.3/Gemfile create mode 100644 src/main/resources/gems/tilt-1.3.3/README.md create mode 100644 src/main/resources/gems/tilt-1.3.3/Rakefile create mode 100644 src/main/resources/gems/tilt-1.3.3/TEMPLATES.md create mode 100755 src/main/resources/gems/tilt-1.3.3/bin/tilt create mode 100644 src/main/resources/gems/tilt-1.3.3/lib/tilt.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/lib/tilt/builder.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/lib/tilt/coffee.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/lib/tilt/css.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/lib/tilt/erb.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/lib/tilt/haml.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/lib/tilt/liquid.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/lib/tilt/markaby.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/lib/tilt/markdown.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/lib/tilt/nokogiri.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/lib/tilt/radius.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/lib/tilt/rdoc.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/lib/tilt/string.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/lib/tilt/template.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/lib/tilt/textile.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/lib/tilt/wiki.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/lib/tilt/yajl.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/contest.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/markaby/locals.mab create mode 100644 src/main/resources/gems/tilt-1.3.3/test/markaby/markaby.mab create mode 100644 src/main/resources/gems/tilt-1.3.3/test/markaby/markaby_other_static.mab create mode 100644 src/main/resources/gems/tilt-1.3.3/test/markaby/render_twice.mab create mode 100644 src/main/resources/gems/tilt-1.3.3/test/markaby/scope.mab create mode 100644 src/main/resources/gems/tilt-1.3.3/test/markaby/yielding.mab create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_blueclothtemplate_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_buildertemplate_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_cache_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_coffeescripttemplate_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_compilesite_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_creoletemplate_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_erbtemplate_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_erubistemplate_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_fallback_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_hamltemplate_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_kramdown_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_lesstemplate_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_liquidtemplate_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_markaby_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_markdown_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_marukutemplate_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_nokogiritemplate_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_radiustemplate_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_rdiscounttemplate_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_rdoctemplate_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_redcarpettemplate_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_redclothtemplate_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_sasstemplate_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_stringtemplate_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_template_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_wikiclothtemplate_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/test/tilt_yajltemplate_test.rb create mode 100644 src/main/resources/gems/tilt-1.3.3/tilt.gemspec create mode 100644 src/main/resources/specifications/asciidoctor-0.0.9.gemspec create mode 100644 src/main/resources/specifications/tilt-1.3.3.gemspec create mode 100644 src/test/groovy/org/asciidoc/maven/test/AsciidoctorMojoTest.groovy create mode 100644 src/test/resources/src/asciidoc/sample.asciidoc diff --git a/pom.xml b/pom.xml index 321f18b0..9246915f 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.asciidoc - maven-asciidoctor-plugin + asciidoctor-maven-plugin 1.0-SNAPSHOT maven-plugin @@ -75,9 +75,9 @@ org.jruby - jruby + jruby-complete ${jruby.version} - compile + runtime org.spockframework @@ -85,11 +85,11 @@ ${spock.version} test - - org.apache.maven.plugins - maven-site-plugin - 3.1 - + + + + + @@ -99,7 +99,7 @@ maven-plugin-plugin 3.1 - maven-asciidoctor-plugin + asciidoctor true @@ -109,25 +109,41 @@ descriptor - - help-goal - - helpmojo - - - org.spockframework - spock-maven - ${spock.version} + org.codehaus.gmaven + gmaven-plugin + 1.4 + + 2.0 + - find-specs + compile + testCompile + + + org.codehaus.gmaven.runtime + gmaven-runtime-2.0 + 1.4 + + + org.codehaus.groovy + groovy-all + + + + + org.codehaus.groovy + groovy-all + 2.0.5 + + diff --git a/src/main/java/org/asciidoc/maven/AsciidoctorMojo.java b/src/main/java/org/asciidoc/maven/AsciidoctorMojo.java index ea83bf1c..090f8857 100644 --- a/src/main/java/org/asciidoc/maven/AsciidoctorMojo.java +++ b/src/main/java/org/asciidoc/maven/AsciidoctorMojo.java @@ -13,6 +13,14 @@ package org.asciidoc.maven; import java.io.File; +import java.io.InputStream; +import java.io.InputStreamReader; + +import javax.script.Bindings; +import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; +import javax.script.ScriptException; +import javax.script.SimpleBindings; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; @@ -26,7 +34,7 @@ @Mojo(name = "process-asciidoc") public class AsciidoctorMojo extends AbstractMojo { @Parameter(property = "sourceDir", defaultValue = "${basedir}/src/asciidoc", required = true) - protected File siteDirectory; + protected File sourceDirectory; @Parameter(property = "outputDir", defaultValue = "${project.build.directory}", required = true) protected File outputDirectory; @@ -36,15 +44,29 @@ public class AsciidoctorMojo extends AbstractMojo { @Override public void execute() throws MojoExecutionException, MojoFailureException { - //To change body of implemented methods use File | Settings | File Templates. + final ScriptEngineManager engineManager = new ScriptEngineManager(); + final ScriptEngine rubyEngine = engineManager.getEngineByName("jruby"); + final Bindings bindings = new SimpleBindings(); + + bindings.put("srcDir", sourceDirectory.getAbsolutePath()); + bindings.put("outputDir", outputDirectory.getAbsolutePath()); + bindings.put("backend", backend); + + try { + final InputStream script = AbstractMojo.class.getClassLoader().getResourceAsStream("execute_asciidoctor.rb"); + final InputStreamReader streamReader = new InputStreamReader(script); + rubyEngine.eval(streamReader, bindings); + } catch (ScriptException e) { + getLog().error("Error running ruby script", e); + } } - public File getSiteDirectory() { - return siteDirectory; + public File getSourceDirectory() { + return sourceDirectory; } - public void setSiteDirectory(File siteDirectory) { - this.siteDirectory = siteDirectory; + public void setSourceDirectory(File sourceDirectory) { + this.sourceDirectory = sourceDirectory; } public File getOutputDirectory() { diff --git a/src/main/resources/bin/asciidoctor b/src/main/resources/bin/asciidoctor new file mode 100755 index 00000000..e3986fc9 --- /dev/null +++ b/src/main/resources/bin/asciidoctor @@ -0,0 +1,19 @@ +#!/usr/bin/env ruby_noexec_wrapper +# +# This file was generated by RubyGems. +# +# The application 'asciidoctor' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0" + +if ARGV.first =~ /^_(.*)_$/ and Gem::Version.correct? $1 then + version = $1 + ARGV.shift +end + +gem 'asciidoctor', version +load Gem.bin_path('asciidoctor', 'asciidoctor', version) diff --git a/src/main/resources/bin/tilt b/src/main/resources/bin/tilt new file mode 100755 index 00000000..22cdc7f3 --- /dev/null +++ b/src/main/resources/bin/tilt @@ -0,0 +1,19 @@ +#!/usr/bin/env ruby_noexec_wrapper +# +# This file was generated by RubyGems. +# +# The application 'tilt' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0" + +if ARGV.first =~ /^_(.*)_$/ and Gem::Version.correct? $1 then + version = $1 + ARGV.shift +end + +gem 'tilt', version +load Gem.bin_path('tilt', 'tilt', version) diff --git a/src/main/resources/cache/asciidoctor-0.0.9.gem b/src/main/resources/cache/asciidoctor-0.0.9.gem new file mode 100644 index 0000000000000000000000000000000000000000..8465a65706f5aa9017bd5aaf2b9efb19fcffe940 GIT binary patch literal 103936 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Ⓢ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 QBJdM|p9uU!;BQ9Y-_X+{{Qv*} literal 0 HcmV?d00001 diff --git a/src/main/resources/cache/tilt-1.3.3.gem b/src/main/resources/cache/tilt-1.3.3.gem new file mode 100644 index 0000000000000000000000000000000000000000..2754964375dd8f06d200d704287ac3e54e2f0e24 GIT binary patch literal 36352 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 + + + + + + Module: Asciidoctor + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ + + + + +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor

+ +
+ +

Public: Methods to perform substitutions on lines of AsciiDoc text. This +module is intented to be mixed-in to Section and Block to provide operations for +performing the necessary substitutions.

+
+ +

Base project exception

+
+ +

Public: Methods for parsing Asciidoc input files and rendering documents +using eRuby templates.

+ +

Asciidoc documents comprise a header followed by zero or more sections. +Sections are composed of blocks of content. For example:

+ +
Doc Title
+=========
+
+SECTION 1
+---------
+
+This is a paragraph block in the first section.
+
+SECTION 2
+
+This section has a paragraph block and an olist block.
+
+1. Item 1
+2. Item 2
+ +

Examples:

+ +

Use built-in templates:

+ +
lines = File.readlines("your_file.asc")
+doc = Asciidoctor::Document.new(lines)
+html = doc.render
+File.open("your_file.html", "w+") do |file|
+  file.puts html
+end
+ +

Use custom (Tilt-supported) templates:

+ +
lines = File.readlines("your_file.asc")
+doc = Asciidoctor::Document.new(lines, :template_dir => 'templates')
+html = doc.render
+File.open("your_file.html", "w+") do |file|
+  file.puts html
+end
+ +
+ + + + +
+ + + + + + +
+

Constants

+
+ +
ADMONITION_STYLES
+ +
+ + +
BLANK_LINES_PATTERN
+ +
+ + +
DEFAULT_BACKEND
+ +

Backend determines the format of the rendered output, default to html5

+ + +
DEFAULT_DOCTYPE
+ +

The default document type Can influence markup generated by render +templates

+ + +
DEFAULT_PAGE_WIDTHS
+ +

Default page widths for calculating absolute widths

+ + +
INTRINSICS
+ +
+ + +
LINE_FEED_ENTITY
+ +
+ + +
LIST_CONTEXTS
+ +
+ + +
LIST_CONTINUATION
+ +
+ + +
NESTABLE_LIST_CONTEXTS
+ +
+ + +
ORDERED_LIST_MARKER_PATTERNS
+ +
+ + +
ORDERED_LIST_STYLES
+ +
+ + +
QUOTE_SUBS
+ +
+ +

unconstrained quotes

+

can appear anywhere

+

constrained quotes

+

must be bordered by non-word characters

+
+ +

NOTE these substituions are processed in the order they appear here and the +order in which they are replaced is important

+ + +
REGEXP
+ +
+ + +
REPLACEMENTS
+ +

NOTE in Ruby 1.8.7, [^\] does not match start of line, so we need to match +it explicitly order is significant

+ + +
Rows
+ +
+ + +
SPECIAL_CHARS
+ +
+ + +
SPECIAL_CHARS_PATTERN
+ +
+ + +
VERSION
+ +
+ + +
+
+ + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ debug() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/debug.rb, line 4
+def self.debug
+  puts yield if self.show_debug_output?
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ puts_indented(level, *args) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/debug.rb, line 16
+def self.puts_indented(level, *args)
+  indentation = " " * level * 2
+
+  args.each do |arg|
+    self.debug { "#{indentation}#{arg}" }
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ require_library(name) + click to toggle source +
+ + +
+ +

Internal: Prior to invoking Kernel#require, issues a warning urging a +manual require if running in a threaded environment.

+ +

name - the String name of the library to require.

+ +

returns nothing

+ + + +
+
+# File lib/asciidoctor.rb, line 482
+def self.require_library(name)
+  if Thread.list.size > 1
+    main_script = "#{name}.rb"
+    main_script_path_segment = "/#{name}.rb"
+    if !$LOADED_FEATURES.detect {|p| p == main_script || p.end_with?(main_script_path_segment) }.nil?
+      return
+    else
+      warn "WARN: asciidoctor is autoloading '#{name}' in threaded environment. " +
+         "The use of an explicit require '#{name}' statement is recommended."
+    end
+  end
+  require name
+  nil
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ set_debug(value) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/debug.rb, line 8
+def self.set_debug(value)
+  @show_debug = value
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ show_debug_output?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/debug.rb, line 12
+def self.show_debug_output?
+  @show_debug || (ENV['DEBUG'] == 'true' && ENV['SUPPRESS_DEBUG'] != 'true')
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/AbstractBlock.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/AbstractBlock.html new file mode 100644 index 00000000..5e76835f --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/AbstractBlock.html @@ -0,0 +1,965 @@ + + + + + + + Class: Asciidoctor::AbstractBlock + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::AbstractBlock

+ +
+ +
+ + + + +
+ + + + + + + + +
+

Attributes

+ + +
+ + +
+ blocks[R] +
+ +
+ +

Public: Get the Array of Asciidoctor::AbstractBlock sub-blocks for +this block

+ +
+
+ +
+ + + + +
+ level[RW] +
+ +
+ +

Public: Set the Integer level of this Section or +the Section level in which this Block resides

+ +
+
+ +
+ + + + +
+ title[W] +
+ +
+ +

Public: Set the String block title.

+ +
+
+ +
+ + + + +
+

Public Class Methods

+ + +
+ + + +
+ new(parent, context) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/abstract_block.rb, line 11
+def initialize(parent, context)
+  super(parent, context)
+  @blocks = []
+  @id = nil
+  @title = nil
+  if context == :document
+    @level = 0
+  elsif !parent.nil? && !self.is_a?(Asciidoctor::Section)
+    @level = parent.level
+  else
+    @level = nil
+  end
+  @next_section_index = 0 
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ <<(block) + click to toggle source +
+ + +
+ +

Public: Append a content block to this block’s list of blocks.

+ +

block - The new child block.

+ +

Examples

+ +
block = Block.new(parent, :preamble)
+
+block << Block.new(block, :paragraph, 'p1')
+block << Block.new(block, :paragraph, 'p2')
+block.blocks
+# => ["p1", "p2"]
+ +

Returns nothing.

+ + + +
+
+# File lib/asciidoctor/abstract_block.rb, line 96
+def <<(block)
+  if block.is_a?(Asciidoctor::Section)
+    assign_index(block)
+  end
+  @blocks << block
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ [](i) + click to toggle source +
+ + +
+ +

Public: Get the element at i in the array of blocks.

+ +

i - The Integer array index number.

+ +
section = Section.new
+
+section << 'foo'
+section << 'bar'
+section[1]
+=> "bar"
+ + + +
+
+# File lib/asciidoctor/abstract_block.rb, line 78
+def [](i)
+  @blocks[i]
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ assign_index(section) + click to toggle source +
+ + +
+ +

Internal: Assign the next index (0-based) to this section

+ +

Assign the next index of this section within the parent Block (in document order)

+ +

returns nothing

+ + + +
+
+# File lib/asciidoctor/abstract_block.rb, line 197
+def assign_index(section)
+  section.index = @next_section_index
+  @next_section_index += 1
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ blocks?() + click to toggle source +
+ + +
+ +

Public: Determine whether this Block contains +block content

+ +

returns Whether this Block has block content

+ + + +
+
+# File lib/asciidoctor/abstract_block.rb, line 64
+def blocks?
+  !blocks.empty?
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ clear_blocks() + click to toggle source +
+ + +
+ +

Public: Clear this Block’s list of blocks.

+ +
section = Section.new
+
+section << 'foo'
+section << 'bar'
+section.blocks
+=> ["foo", "bar"]
+section.clear_blocks
+section.blocks
+=> []
+ + + +
+
+# File lib/asciidoctor/abstract_block.rb, line 149
+def clear_blocks
+  @blocks = []
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ delete_at(i) + click to toggle source +
+ + +
+ +

Public: Delete the element at i in the array of section blocks, returning +that element or nil if i is out of range.

+ +

i - The Integer array index number.

+ +
section = Section.new
+
+section << 'foo'
+section << 'bar'
+section.delete_at(1)
+=> "bar"
+
+section.blocks
+=> ["foo"]
+ + + +
+
+# File lib/asciidoctor/abstract_block.rb, line 134
+def delete_at(i)
+  @blocks.delete_at(i)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ insert(i, block) + click to toggle source +
+ + +
+ +

Public: Insert a content block at the specified index in this block’s list +of blocks.

+ +

i - The Integer array index number. val = The content block to insert.

+ +
section = Section.new
+
+section << 'foo'
+section << 'baz'
+section.insert(1, 'bar')
+section.blocks
+["foo", "bar", "baz"]
+ + + +
+
+# File lib/asciidoctor/abstract_block.rb, line 116
+def insert(i, block)
+  @blocks.insert(i, block)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ reindex_sections() + click to toggle source +
+ + +
+ +

Internal: Reassign the section indexes

+ +

Walk the descendents of the current Document or +Section and reassign the section 0-based index +value to each Section as it appears in document +order.

+ +

returns nothing

+ + + +
+
+# File lib/asciidoctor/abstract_block.rb, line 209
+def reindex_sections
+  @next_section_index = 0
+  @blocks.each {|block|
+    if block.is_a?(Asciidoctor::Section)
+      assign_index(block)
+      block.reindex_sections
+    end
+  }
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ sections() + click to toggle source +
+ + +
+ +

Public: Get the Array of child Section objects

+ +

Only applies to Document and Section instances

+ +

Examples

+ +
section = Section.new(parent)
+section << Block.new(section, :paragraph, 'paragraph 1')
+section << Section.new(parent)
+section << Block.new(section, :paragraph, 'paragraph 2')
+section.sections.size
+# => 1
+ +

returns an Array of Section objects

+ + + +
+
+# File lib/asciidoctor/abstract_block.rb, line 184
+def sections
+  @blocks.inject([]) {|collector, block|
+    collector << block if block.is_a?(Asciidoctor::Section)
+    collector
+  }
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ size() + click to toggle source +
+ + +
+ +

Public: Get the Integer number of blocks in this block

+ +

Examples

+ +
section = Section.new
+
+section.size
+=> 0
+
+section << 'foo'
+section << 'bar'
+section.size
+=> 2
+ + + +
+
+# File lib/asciidoctor/abstract_block.rb, line 166
+def size
+  @blocks.size
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ title() + click to toggle source +
+ + +
+ +

Public: Get the String title of this Block with +title substitions applied

+ +

The following substitutions are applied to block and section titles:

+ +

:specialcharacters, :quotes, :replacements, :macros, :attributes and +:post_replacements

+ +

Examples

+ +
block.title = "Foo 3^ # {two-colons} Bar(1)"
+block.title
+=> "Foo 3^ # :: Bar(1)"
+ +

Returns the String title of this Block

+ + + +
+
+# File lib/asciidoctor/abstract_block.rb, line 45
+def title
+  # prevent substitutions from being applied multiple times
+  if defined?(@subbed_title)
+    @subbed_title
+  elsif @title
+    @subbed_title = apply_title_subs(@title)
+  else
+    @title
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ title?() + click to toggle source +
+ + +
+ +

Public: A convenience method that indicates whether the title instance +variable is blank (nil or empty)

+ + + +
+
+# File lib/asciidoctor/abstract_block.rb, line 28
+def title?
+  !@title.to_s.empty?
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/AbstractNode.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/AbstractNode.html new file mode 100644 index 00000000..f5e7d4ce --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/AbstractNode.html @@ -0,0 +1,946 @@ + + + + + + + Class: Asciidoctor::AbstractNode + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + + + + + + +
+

Included Modules

+ +
+ +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::AbstractNode

+ +
+ +

Public: An abstract base class that provides state and methods for managing +a node of AsciiDoc content. The state and methods on this class are comment +to all content segments in an AsciiDoc document.

+ +
+ + + + +
+ + + + + + + + +
+

Attributes

+ + +
+ + +
+ attributes[R] +
+ +
+ +

Public: Get the Hash of attributes for this node

+ +
+
+ +
+ + +
+ context[R] +
+ +
+ +

Public: Get the Symbol context for this node

+ +
+
+ +
+ + +
+ document[R] +
+ +
+ +

Public: Get the Asciidoctor::Document to which +this node belongs

+ +
+
+ +
+ + + + +
+ id[RW] +
+ +
+ +

Public: Get the id of this node

+ +
+
+ +
+ + +
+ parent[R] +
+ +
+ +

Public: Get the element which is the parent of this node

+ +
+
+ +
+ + + + +
+

Public Class Methods

+ + +
+ + + +
+ new(parent, context) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/abstract_node.rb, line 23
+def initialize(parent, context)
+  @parent = (context != :document ? parent : nil)
+
+  if !parent.nil?
+    @document = parent.is_a?(Asciidoctor::Document) ? parent : parent.document
+  else
+    @document = nil
+  end
+  
+  @context = context
+  @attributes = {}
+  @passthroughs = []
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ attr(name, default = nil) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/abstract_node.rb, line 37
+def attr(name, default = nil)
+  if self == @document
+    default.nil? ? @attributes[name.to_s] : @attributes.fetch(name.to_s, default)
+  else
+    default.nil? ? @attributes.fetch(name.to_s, @document.attr(name)) :
+        @attributes.fetch(name.to_s, @document.attr(name, default))
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ attr?(name) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/abstract_node.rb, line 46
+def attr?(name)
+  if self == @document
+    @attributes.has_key? name.to_s
+  else
+    @attributes.has_key?(name.to_s) || @document.attr?(name)
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ generate_data_uri(target_image, asset_dir_key = nil) + click to toggle source +
+ + +
+ +

Public: Generate a data URI that can be used to embed an image in the +output document

+ +

First, and foremost, the target image path is cleaned if the document safe +mode level is set to at least SafeMode::SAFE (a condition which is true by +default) to prevent access to ancestor paths in the filesystem. The image +data is then read and converted to Base64. Finally, a data URI is built +which can be used in an image tag.

+ +

target_image - A String path to the target image asset_dir_key - The String +attribute key used to lookup the directory where

+ +
the image is located (default: nil)
+ +

Returns A String data URI containing the content of the target image

+ + + +
+
+# File lib/asciidoctor/abstract_node.rb, line 159
+def generate_data_uri(target_image, asset_dir_key = nil)
+  Asciidoctor.require_library 'base64'
+
+  mimetype = 'image/' + File.extname(target_image)[1..-1]
+  if asset_dir_key
+    image_path = File.join(normalize_asset_path(@document.attr(asset_dir_key, '.'), asset_dir_key), target_image)
+  else
+    image_path = normalize_asset_path(target_image)
+  end
+
+  'data:' + mimetype + ';base64,' + Base64.encode64(IO.read(image_path)).delete("\n")
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ get_binding(template) + click to toggle source +
+ + +
+ +

Public: Get the execution context of this object (via Kernel#binding).

+ +

This method is used to set the ‘self’ reference as well as local variables +that map to this method’s arguments during the evaluation of a backend +template.

+ +

Each object in Ruby has a binding context that can be used to set the +‘self’ reference in an evaluation context. Any arguments passed to this +method are also available in the execution environment.

+ +

template - The BaseTemplate instance in +which this binding will be active.

+ +
Bound to the local variable of the same name, template.
+ +

returns the execution context for this object so it can be be transferred +to the backend template and binds the method arguments as local variables +in that same environment.

+ + + +
+
+# File lib/asciidoctor/abstract_node.rb, line 70
+def get_binding template
+  binding
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ icon_uri(name) + click to toggle source +
+ + +
+ +

Public: Construct a reference or data URI to an icon image for the +specified icon name.

+ +

If the ‘icon’ attribute is set on this block, the name is ignored and the +value of this attribute is used as the target image path. Otherwise, +construct a target image path by concatenating the value of the ‘iconsdir’ +attribute, the icon name and the value of the ‘iconstype’ attribute +(defaulting to ‘png’).

+ +

The target image path is then passed through the image_uri() method. If the +‘data-uri’ attribute is set on the document, the image will be safely +converted to a data URI.

+ +

The return value of this method can be safely used in an image tag.

+ +

name - The String name of the icon

+ +

Returns A String reference or data URI for an icon image

+ + + +
+
+# File lib/asciidoctor/abstract_node.rb, line 112
+def icon_uri(name)
+  if attr? 'icon'
+    image_uri(attr('icon'), nil)
+  else
+    image_uri(name + '.' + @document.attr('iconstype', 'png'), 'iconsdir')
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ image_uri(target_image, asset_dir_key = 'imagesdir') + click to toggle source +
+ + +
+ +

Public: Construct a reference or data URI to the target image.

+ +

The target image is resolved relative to the directory retrieved from the +specified attribute key, if provided.

+ +

If the ‘data-uri’ attribute is set on the document, and the safe mode level +is less than SafeMode::SECURE, the image will be safely converted to a data +URI by reading it from the same directory. If neither of these conditions +are satisfied, a relative path (i.e., URL) will be returned.

+ +

The return value of this method can be safely used in an image tag.

+ +

target_image - A String path to the target image asset_dir_key - The String +attribute key used to lookup the directory where

+ +
the image is located (default: 'imagesdir')
+ +

Returns A String reference or data URI for the target image

+ + + +
+
+# File lib/asciidoctor/abstract_node.rb, line 137
+def image_uri(target_image, asset_dir_key = 'imagesdir')
+  if @document.safe < Asciidoctor::SafeMode::SECURE && @document.attr?('data-uri')
+    generate_data_uri(target_image, asset_dir_key)
+  elsif asset_dir_key && attr?(asset_dir_key)
+    File.join(@document.attr(asset_dir_key), target_image)
+  else
+    target_image
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ normalize_asset_path(asset_ref, asset_name = 'path') + click to toggle source +
+ + +
+ +

Public: Normalize the asset file or directory to a concrete and rinsed path

+ +

The most important functionality in this method is to prevent the asset +reference from resolving to a directory outside of the chroot directory +(which defaults to the directory of the source file, stored in the ‘docdir’ +attribute) if the document safe level is set to SafeMode::SAFE or greater +(a condition which is true by default).

+ +

asset_ref - the String asset file or directory referenced in the +document

+ +
or configuration attribute
+ +

asset_name - the String name of the file or directory being resolved (for +use in

+ +
the warning message) (default: 'path')
+ +

Examples

+ +
# given these fixtures
+document.attr('docdir')
+# => "/path/to/docdir"
+document.safe >= Asciidoctor::SafeMode::SAFE
+# => true
+
+# then
+normalize_asset_path('images')
+# => "/path/to/docdir/images"
+normalize_asset_path('/etc/images')
+# => "/path/to/docdir/images"
+normalize_asset_path('../images')
+# => "/path/to/docdir/images"
+
+# given these fixtures
+document.attr('docdir')
+# => "/path/to/docdir"
+document.safe >= Asciidoctor::SafeMode::SAFE
+# => false
+
+# then
+normalize_asset_path('images')
+# => "/path/to/docdir/images"
+normalize_asset_path('/etc/images')
+# => "/etc/images"
+normalize_asset_path('../images')
+# => "/path/to/images"
+ +

Returns The normalized asset file or directory as a String path

+ + + +
+
+# File lib/asciidoctor/abstract_node.rb, line 220
+def normalize_asset_path(asset_ref, asset_name = 'path')
+  # TODO we may use pathname enough to make it a top-level require
+  Asciidoctor.require_library 'pathname'
+
+  input_path = File.expand_path(@document.attr('docdir'))
+  asset_path = Pathname.new(asset_ref)
+  
+  if asset_path.relative?
+    asset_path = File.expand_path(File.join(input_path, asset_ref))
+  else
+    asset_path = asset_path.cleanpath.to_s
+  end
+
+  if @document.safe >= Asciidoctor::SafeMode::SAFE
+    relative_asset_path = Pathname.new(asset_path).relative_path_from(Pathname.new(input_path)).to_s
+    if relative_asset_path.start_with?('..')
+      puts 'asciidoctor: WARNING: ' + asset_name + ' has illegal reference to ancestor of base directory'
+      relative_asset_path.sub!(/^(?:\.\.\/)*/, '')
+      # just to be absolutely sure ;)
+      if relative_asset_path[0..0] == '.'
+        raise 'Substitution of parent path references failed for ' + relative_asset_path
+      end
+      asset_path = File.expand_path(File.join(input_path, relative_asset_path))
+    end
+  end
+
+  asset_path
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ renderer() + click to toggle source +
+ + +
+ +

Public: Get the Asciidoctor::Renderer instance +being used for the Asciidoctor::Document to +which this node belongs

+ + + +
+
+# File lib/asciidoctor/abstract_node.rb, line 90
+def renderer
+  @document.renderer
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ update_attributes(attributes) + click to toggle source +
+ + +
+ +

Public: Update the attributes of this node with the new values in the +attributes argument.

+ +

If an attribute already exists with the same key, it’s value will be +overridden.

+ +

attributes - A Hash of attributes to assign to this node.

+ +

returns nothing

+ + + +
+
+# File lib/asciidoctor/abstract_node.rb, line 83
+def update_attributes(attributes)
+  @attributes.update(attributes)
+  nil
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/AttributeList.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/AttributeList.html new file mode 100644 index 00000000..c415126d --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/AttributeList.html @@ -0,0 +1,896 @@ + + + + + + + Class: Asciidoctor::AttributeList + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + + + + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::AttributeList

+ +
+ +

Public: Handles parsing AsciiDoc attribute lists into a Hash of key/value +pairs. By default, attributes must each be separated by a comma and quotes +may be used around the value. If a key is not detected, the value is +assigned to a 1-based positional key, The positional attributes can be +“rekeyed” when given a posattrs array either during parsing or after the +fact.

+ +

Examples

+ +
attrlist = Asciidoctor::AttributeList.new('astyle')
+
+attrlist.parse
+=> {0 => 'astyle'} 
+
+attrlist.rekey(['style'])
+=> {'style' => 'astyle'}
+
+attrlist = Asciidoctor::AttributeList.new('quote, Famous Person, Famous Book (2001)')
+
+attrlist.parse(['style', 'attribution', 'citetitle'])
+=> {'style' => 'quote', 'attribution' => 'Famous Person', 'citetitle' => 'Famous Book (2001)'}
+ +
+ + + + +
+ + + + + + +
+

Constants

+
+ +
BOUNDARY_PATTERNS
+ +

Public: Regular expressions for detecting the boundary of a value

+ + +
CSV_SPLIT_PATTERN
+ +

Public: A regular expression for splitting a comma-separated string

+ + +
NAME_PATTERN
+ +

Public: A regular expression for an attribute name TODO named attributes +cannot contain dash characters

+ + +
SKIP_PATTERNS
+ +

Public: Regular expressions for skipping blanks and delimiters

+ + +
UNESCAPE_PATTERNS
+ +

Public: Regular expressions for unescaping quoted characters

+ + +
+
+ + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ new(source, block = nil, quotes = ['\'', '"'], delimiter = ',', escape_char = '\\') + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/attribute_list.rb, line 50
+def initialize(source, block = nil, quotes = ['\', '"'], delimiter = ',', escape_char = '\')
+  @scanner = ::StringScanner.new source
+  @block = block
+  @quotes = quotes
+  @escape_char = escape_char
+  @delimiter = delimiter
+  @attributes = nil
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ rekey(attributes, pos_attrs) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/attribute_list.rb, line 84
+def self.rekey(attributes, pos_attrs)
+  pos_attrs.each_with_index do |key, index|
+    pos = index + 1
+    unless (val = attributes[pos]).nil?
+      attributes[key] = val
+      #QUESTION should we delete the positional key?
+      #attributes.delete pos
+    end
+  end
+
+  attributes
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ parse(posattrs = []) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/attribute_list.rb, line 63
+def parse(posattrs = [])
+  return @attributes unless @attributes.nil?
+
+  @attributes = {}
+  # not sure if I want this assignment or not
+  #attributes[0] = @scanner.string
+  index = 0
+
+  while parse_attribute(index, posattrs)
+    break if @scanner.eos?
+    skip_delimiter
+    index += 1
+  end
+
+  @attributes
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ parse_attribute(index = 0, pos_attrs = []) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/attribute_list.rb, line 97
+def parse_attribute(index = 0, pos_attrs = [])
+  single_quoted_value = false
+  skip_blank
+  first = @scanner.peek(1)
+  # example: "quote" || 'quote'
+  if @quotes.include? first
+    value = nil
+    name = parse_attribute_value @scanner.get_byte
+    if first == '\'
+      single_quoted_value = true
+    end
+  else
+    name = scan_name
+
+    skipped = 0
+    c = nil
+    if @scanner.eos?
+      if name.nil?
+        return false
+      end
+    else
+      skipped = skip_blank || 0
+      c = @scanner.get_byte
+    end
+
+    # example: quote
+    if c.nil? || c == @delimiter
+      value = nil
+    # example: Sherlock Holmes || =foo=
+    elsif c != '=' || name.nil?
+      remainder = scan_to_delimiter
+      name = '' if name.nil?
+      name += ' ' * skipped + c
+      name += remainder unless remainder.nil?
+      value = nil
+    else
+      skip_blank
+      # example: foo=,
+      if @scanner.peek(1) == @delimiter
+        value = nil
+      else
+        c = @scanner.get_byte
+
+        # example: foo="bar" || foo='bar' || foo="ba\"zaar" || foo='ba\'zaar' || foo='ba"zaar' (all spaces ignored)
+        if @quotes.include? c
+          value = parse_attribute_value c
+          if c == '\'
+            single_quoted_value = true
+          end
+        # example: foo=bar (all spaces ignored)
+        elsif !c.nil?
+          value = c + scan_to_delimiter
+        end
+      end
+    end
+  end
+
+  if value.nil?
+    resolved_name = single_quoted_value && !@block.nil? ? @block.apply_normal_subs(name) : name
+    if !(pos_name = pos_attrs[index]).nil?
+      @attributes[pos_name] = resolved_name
+    else
+      #@attributes[index + 1] = resolved_name
+    end
+    # not sure if we want to always assign the positional key
+    @attributes[index + 1] = resolved_name
+    # not sure if I want this assignment or not
+    #@attributes[resolved_name] = nil
+  else
+    resolved_value = value
+    # example: options="opt1,opt2,opt3"
+    if name == 'options'
+      resolved_value.split(CSV_SPLIT_PATTERN).each do |o|
+        @attributes[o + '-option'] = nil
+      end
+    elsif single_quoted_value && !@block.nil?
+      resolved_value = @block.apply_normal_subs(value)
+    end
+    @attributes[name] = resolved_value
+  end
+
+  true
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ parse_attribute_value(quote) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/attribute_list.rb, line 181
+def parse_attribute_value(quote)
+  value = scan_to_quote quote
+  if value.nil?
+    quote + scan_to_delimiter
+  else
+    @scanner.get_byte
+    value.gsub(UNESCAPE_PATTERNS[@escape_char + quote], quote)
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ parse_into(attributes, posattrs = []) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/attribute_list.rb, line 59
+def parse_into(attributes, posattrs = [])
+  attributes.update(parse(posattrs))
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ rekey(posattrs) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/attribute_list.rb, line 80
+def rekey(posattrs)
+  AttributeList.rekey(@attributes, posattrs)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ scan_name() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/attribute_list.rb, line 199
+def scan_name
+  @scanner.scan NAME_PATTERN
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ scan_to_delimiter() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/attribute_list.rb, line 203
+def scan_to_delimiter
+  @scanner.scan BOUNDARY_PATTERNS[@delimiter]
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ scan_to_quote(quote) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/attribute_list.rb, line 207
+def scan_to_quote(quote)
+  @scanner.scan BOUNDARY_PATTERNS[quote]
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ skip_blank() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/attribute_list.rb, line 191
+def skip_blank
+  @scanner.skip SKIP_PATTERNS[:blank]
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ skip_delimiter() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/attribute_list.rb, line 195
+def skip_delimiter
+  @scanner.skip SKIP_PATTERNS[@delimiter]
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/BaseTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/BaseTemplate.html new file mode 100644 index 00000000..9cc398ad --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/BaseTemplate.html @@ -0,0 +1,936 @@ + + + + + + + Class: Asciidoctor::BaseTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ + + +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::BaseTemplate

+ +
+ +

An abstract base class that provides methods for definining and rendering +the backend templates. Concrete subclasses must implement the template +method.

+ +

NOTE we must use double quotes for attribute values in the HTML/XML output +to prevent quote processing. This requirement seems hackish, but AsciiDoc +has this same issue.

+ +
+ + + + +
+ + + + + + + + +
+

Attributes

+ + +
+ + +
+ eruby[R] +
+ +
+ + + +
+
+ +
+ + +
+ view[R] +
+ +
+ + + +
+
+ +
+ + + + +
+

Public Class Methods

+ + +
+ + + +
+ inherited(klass) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/base_template.rb, line 17
+def self.inherited(klass)
+  @template_classes ||= []
+  @template_classes << klass
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ new(view, eruby) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/base_template.rb, line 12
+def initialize(view, eruby)
+  @view = view
+  @eruby = eruby
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ template_classes() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/base_template.rb, line 22
+def self.template_classes
+  @template_classes
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ attribute(name, key) + click to toggle source +
+ + +
+ +

create template matter to insert an attribute if the variable has a value

+ + + +
+
+# File lib/asciidoctor/backends/base_template.rb, line 76
+def attribute(name, key)
+  type = key.is_a?(Symbol) ? :attr : :var
+  key = key.to_s
+  if type == :attr
+    # example: <% if attr? 'foo' %> bar="<%= attr 'foo' %>"<% end %>
+    '<% if attr? \' + key + '\ %> ' + name + '="<%= attr \' + key.to_s + '\ %>"<% end %>'
+  else
+    # example: <% if foo %> bar="<%= foo %>"<% end %>
+    '<% if ' + key + ' %> ' + name + '="<%= ' + key + ' %>"<% end %>'
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ attrvalue(key, sibling = true) + click to toggle source +
+ + +
+ +

create template matter to insert a style class if the variable has a value

+ + + +
+
+# File lib/asciidoctor/backends/base_template.rb, line 89
+def attrvalue(key, sibling = true)
+  delimiter = sibling ? ' ' : ''
+  # example: <% if attr? 'foo' %><%= attr 'foo' %><% end %>
+  '<% if attr? \' + key.to_s + '\ %>' + delimiter + '<%= attr \' + key.to_s + '\ %><% end %>'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ compact(str) + click to toggle source +
+ + +
+ +

Public: Compact blank lines in the provided text. This method also restores +every HTML line feed entity found with an endline character.

+ +

text - the String to process

+ +

returns the text with blank lines removed and HTML line feed entities +converted to an endline character.

+ + + +
+
+# File lib/asciidoctor/backends/base_template.rb, line 56
+def compact(str)
+  str.gsub(Asciidoctor::BLANK_LINES_PATTERN, '').gsub(Asciidoctor::LINE_FEED_ENTITY, "\n")
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ id() + click to toggle source +
+ + +
+ +

create template matter to insert an id if one is specified for the block

+ + + +
+
+# File lib/asciidoctor/backends/base_template.rb, line 96
+def id
+  attribute('id', '@id')
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ preserve_endlines(str, node) + click to toggle source +
+ + +
+ +

Public: Preserve endlines by replacing them with the HTML line feed entity.

+ +

If the compact flag on the document’s renderer is true, perform the +replacement. Otherwise, return the text unprocessed.

+ +

text - the String to process node - the concrete instance of Asciidoctor::AbstractNode being rendered

+ + + +
+
+# File lib/asciidoctor/backends/base_template.rb, line 67
+def preserve_endlines(str, node)
+  node.renderer.compact ? str.gsub("\n", Asciidoctor::LINE_FEED_ENTITY) : str
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ render(node = Object.new, locals = {}) + click to toggle source +
+ + +
+ +

Public: Render this template in the execution context of the supplied +concrete instance of Asciidoctor::AbstractNode.

+ +

This method invokes the template method on this instance to retrieve the +template data and then evaluates that template in the context of the +supplied concrete instance of Asciidoctor::AbstractNode. This instance is +accessible to the template data via the local variable named ‘template’.

+ +

If the compact flag on the document’s renderer is true and the view context +is document or embedded, then blank lines in the output are compacted. +Otherwise, the rendered output is returned unprocessed.

+ +

node - The concrete instance of AsciiDoctor::AbstractNode to render +locals - A Hash of additional variables. Not currently in use.

+ + + +
+
+# File lib/asciidoctor/backends/base_template.rb, line 40
+def render(node = Object.new, locals = {})
+  # this is hot code, so we inline both calls rather than capture output to a local variable
+  if node.renderer.compact && (@view == 'document' || @view == 'embedded')
+    compact(template.result(node.get_binding(self)))
+  else
+    template.result(node.get_binding(self))
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ role() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 2
+def role
+  attribute('role', :role)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ style_class() + click to toggle source +
+ + +
+ +

create template matter to insert a style class from the role attribute if +specified

+ + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 4
+def style_class
+  attrvalue(:role)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ tag(name, key) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 14
+def tag(name, key)
+  type = key.is_a?(Symbol) ? :attr : :var
+  key = key.to_s
+  if type == :attr
+    # example: <% if attr? 'foo' %><bar><%= attr 'foo' %></bar><% end %>
+    '<% if attr? \' + key + '\ %><' + name + '><%= attr \' + key + '\ %></' + name + '><% end %>'
+  else
+    # example: <% unless foo.to_s.empty? %><bar><%= foo %></bar><% end %>
+    '<% unless ' + key + '.to_s.empty? %><' + name + '><%= ' + key + ' %></' + name + '><% end %>'
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/base_template.rb, line 71
+def template
+  raise "You chilluns need to make your own template"
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ title() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 10
+def title
+  tag('title', 'title')
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ xreflabel() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 6
+def xreflabel
+  attribute('xreflabel', :reftext)
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Block.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Block.html new file mode 100644 index 00000000..8503214e --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Block.html @@ -0,0 +1,610 @@ + + + + + + + Class: Asciidoctor::Block + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::Block

+ +
+ +

Public: Methods for managing blocks of Asciidoc content in a section.

+ +

Examples

+ +
block = Asciidoctor::Block.new(document, :paragraph, ["`This` is a <test>"])
+block.content
+=> ["<em>This</em> is a &lt;test&gt;"]
+ +
+ + + + +
+ + + + + + + + +
+

Attributes

+ + +
+ + + + +
+ buffer[RW] +
+ +
+ +

Public: Get/Set the original Array content for this section block.

+ +
+
+ +
+ + + + +
+ caption[RW] +
+ +
+ +

Public: Get/Set the caption for this block

+ +
+
+ +
+ + + + +
+

Public Class Methods

+ + +
+ + + +
+ new(parent, context, buffer = nil) + click to toggle source +
+ + +
+ +

Public: Initialize an Asciidoctor::Block object.

+ +

parent - The parent Asciidoc Object. context - The Symbol context name for +the type of content. buffer - The Array buffer of source data (default: +nil).

+ + + +
+
+# File lib/asciidoctor/block.rb, line 25
+def initialize(parent, context, buffer = nil)
+  super(parent, context)
+  @buffer = buffer
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ content() + click to toggle source +
+ + +
+ +

Public: Get an HTML-ified version of the source buffer, with special +Asciidoc characters and entities converted to their HTML equivalents.

+ +

Examples

+ +
doc = Asciidoctor::Document.new
+block = Asciidoctor::Block.new(doc, :paragraph,
+          ['`This` is what happens when you <meet> a stranger in the <alps>!'])
+block.content
+=> ["<em>This</em> is what happens when you &lt;meet&gt; a stranger in the &lt;alps&gt;!"]
+ + + +
+
+# File lib/asciidoctor/block.rb, line 94
+def content
+
+  case @context
+  when :preamble, :open, :example, :sidebar
+    @blocks.map {|b| b.render }.join
+  # lists get iterated in the template (for now)
+  # list items recurse into this block when their text and content methods are called
+  when :ulist, :olist, :dlist, :colist
+    @buffer
+  when :listing, :literal
+    apply_literal_subs(@buffer)
+  when :pass
+    apply_passthrough_subs(@buffer)
+  when :quote, :verse, :admonition
+    if !@buffer.nil?
+      apply_normal_subs(@buffer)
+    else
+      @blocks.map {|b| b.render }.join
+    end
+  else
+    apply_normal_subs(@buffer)
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ render() + click to toggle source +
+ + +
+ +

Public: Get the rendered String content for this Block. If the block has child blocks, the content +method should cause them to be rendered and returned as content that can be +included in the parent block’s template.

+ + + +
+
+# File lib/asciidoctor/block.rb, line 34
+def render
+  Asciidoctor.debug { "Now rendering #{@context} block for #{self}" }
+  out = renderer.render("block_#{@context}", self)
+  @document.callouts.next_list if @context == :colist
+  out
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ splain(parent_level = 0) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/block.rb, line 41
+def splain(parent_level = 0)
+  parent_level += 1
+  Asciidoctor.puts_indented(parent_level, "Block id: #{id}") unless self.id.nil?
+  Asciidoctor.puts_indented(parent_level, "Block title: #{title}") unless self.title.nil?
+  Asciidoctor.puts_indented(parent_level, "Block caption: #{caption}") unless self.caption.nil?
+  Asciidoctor.puts_indented(parent_level, "Block level: #{level}") unless self.level.nil?
+  Asciidoctor.puts_indented(parent_level, "Block context: #{context}") unless self.context.nil?
+
+  Asciidoctor.puts_indented(parent_level, "Blocks: #{@blocks.count}")
+
+  if buffer.is_a? Enumerable
+    buffer.each_with_index do |buf, i|
+      Asciidoctor.puts_indented(parent_level, "v" * (60 - parent_level*2))
+      Asciidoctor.puts_indented(parent_level, "Buffer ##{i} is a #{buf.class}")
+      Asciidoctor.puts_indented(parent_level, "Name is #{buf.title rescue 'n/a'}")
+
+      if buf.respond_to? :splain
+        buf.splain(parent_level)
+      else
+        Asciidoctor.puts_indented(parent_level, "Buffer: #{buf}")
+      end
+      Asciidoctor.puts_indented(parent_level, "^" * (60 - parent_level*2))
+    end
+  else
+    if buffer.respond_to? :splain
+      buffer.splain(parent_level)
+    else
+      Asciidoctor.puts_indented(parent_level, "Buffer: #{@buffer}")
+    end
+  end
+
+  @blocks.each_with_index do |block, i|
+    Asciidoctor.puts_indented(parent_level, "v" * (60 - parent_level*2))
+    Asciidoctor.puts_indented(parent_level, "Block ##{i} is a #{block.class}")
+    Asciidoctor.puts_indented(parent_level, "Name is #{block.title rescue 'n/a'}")
+
+    block.splain(parent_level) if block.respond_to? :splain
+    Asciidoctor.puts_indented(parent_level, "^" * (60 - parent_level*2))
+  end
+  
+  nil
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ to_s() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/block.rb, line 118
+def to_s
+  "#{super.to_s} - #@context [blocks:#{(@blocks || []).size}]"
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Callouts.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Callouts.html new file mode 100644 index 00000000..f5414a70 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Callouts.html @@ -0,0 +1,701 @@ + + + + + + + Class: Asciidoctor::Callouts + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + + + + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::Callouts

+ +
+ +

Public: Maintains a catalog of callouts and their associations.

+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ new() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/callouts.rb, line 3
+def initialize
+  @lists = []
+  @list_index = 0
+  next_list
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ callout_ids(li_ordinal) + click to toggle source +
+ + +
+ +

Public: Get a space-separated list of callout ids for the specified list +item

+ +

li_ordinal - the Integer ordinal (1-based) of the list item for which to

+ +
retrieve the callouts
+ +

Returns A space-separated String of callout ids associated with the +specified list item

+ + + +
+
+# File lib/asciidoctor/callouts.rb, line 61
+def callout_ids(li_ordinal)
+  current_list.inject([]) {|collector, element|
+    collector << element[:id] if element[:ordinal] == li_ordinal
+    collector
+  } * ' '
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ current_list() + click to toggle source +
+ + +
+ +

Public: The current list for which callouts are being collected

+ +

Returns The Array of callouts at the position of the list index pointer

+ + + +
+
+# File lib/asciidoctor/callouts.rb, line 71
+def current_list
+  @lists[@list_index - 1]
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ generate_callout_id(list_index, co_index) + click to toggle source +
+ + +
+ +

Internal: Generate a unique id for the callout at the specified position

+ +

list_index - The 1-based Integer index of the callout list within the +document co_index - The 1-based Integer index of the callout since the +end of the last callout list

+ +

Returns A unique String id for a callout

+ + + +
+
+# File lib/asciidoctor/callouts.rb, line 114
+def generate_callout_id(list_index, co_index)
+  "CO#{list_index}-#{co_index}"
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ generate_next_callout_id() + click to toggle source +
+ + +
+ +

Internal: Generate a unique id for the callout based on the internal +indexes

+ +

Returns A unique String id for this callout

+ + + +
+
+# File lib/asciidoctor/callouts.rb, line 104
+def generate_next_callout_id
+  generate_callout_id(@list_index, @co_index)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ next_list() + click to toggle source +
+ + +
+ +

Public: Advance to the next callout list in the document

+ +

Returns nothing

+ + + +
+
+# File lib/asciidoctor/callouts.rb, line 78
+def next_list
+  @list_index += 1
+
+  if @lists.size < @list_index
+    @lists << []
+  end
+
+  @co_index = 1
+
+  nil
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ read_next_id() + click to toggle source +
+ + +
+ +

Public: Get the next callout index in the document

+ +

Reads the next callout index in the document and advances the pointer. This +method is used during rendering to retrieve the unique id of the callout +that was generated during lexing.

+ +

Returns The unique String id of the next callout in the document

+ + + +
+
+# File lib/asciidoctor/callouts.rb, line 42
+def read_next_id
+  id = nil
+  list = current_list
+
+  if @co_index <= list.size
+    id = list[@co_index - 1][:id]
+  end
+
+  @co_index += 1
+
+  id
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ register(li_ordinal) + click to toggle source +
+ + +
+ +

Public: Register a new callout for the given list item ordinal.

+ +

Generates a unique id for this callout based on the index of the next +callout list in the document and the index of this callout since the end of +the last callout list.

+ +

li_ordinal - the Integer ordinal (1-based) of the list item to which this

+ +
callout is to be associated
+ +

Examples

+ +
callouts = Asciidoctor::Callouts.new
+callouts.register(1)
+# => "CO1-1"
+callouts.next_list
+callouts.register(2)
+# => "CO2-1"
+ +

Returns The unique String id of this callout

+ + + +
+
+# File lib/asciidoctor/callouts.rb, line 28
+def register(li_ordinal)
+  current_list << {:ordinal => li_ordinal.to_i, :id => (id = generate_next_callout_id)}
+  @co_index += 1
+
+  id
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ rewind() + click to toggle source +
+ + +
+ +

Public: Rewind the list index pointer, intended to be used when switching +from the parsing to rendering phase.

+ +

Returns nothing

+ + + +
+
+# File lib/asciidoctor/callouts.rb, line 94
+def rewind
+  @list_index = 1
+  @co_index = 1
+  
+  nil
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45.html new file mode 100644 index 00000000..8510607a --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45.html @@ -0,0 +1,339 @@ + + + + + + + Module: Asciidoctor::DocBook45 + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ + + +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockAdmonitionTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockAdmonitionTemplate.html new file mode 100644 index 00000000..b1106332 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockAdmonitionTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::BlockAdmonitionTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::BlockAdmonitionTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 141
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><<%= attr :name %>#{id}#{role}#{xreflabel}>  #{title}  <% if blocks? %><%= content %>  <% else %>  <simpara><%= content.chomp %></simpara>  <% end %></<%= attr :name %>>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockColistTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockColistTemplate.html new file mode 100644 index 00000000..4f2fa68b --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockColistTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::BlockColistTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::BlockColistTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 195
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><calloutlist#{id}#{role}#{xreflabel}>  #{title}  <% content.each do |li| %>    <callout arearefs="<%= li.attr :coids %>">      <para><%= li.text %></para>      <% if li.blocks? %><%= li.content %>      <% end %>    </callout>  <% end %></calloutlist>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockDlistTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockDlistTemplate.html new file mode 100644 index 00000000..299c8279 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockDlistTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::BlockDlistTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::BlockDlistTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 214
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><variablelist#{id}#{role}#{xreflabel}>  #{title}  <% content.each do |dt, dd| %>  <varlistentry>    <term>      <%= dt.text %>    </term>    <% unless dd.nil? %>    <listitem>      <% if dd.text? %>      <simpara><%= dd.text %></simpara>      <% end %>      <% if dd.blocks? %><%= dd.content %>      <% end %>    </listitem>    <% end %>  </varlistentry>  <% end %></variablelist>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockExampleTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockExampleTemplate.html new file mode 100644 index 00000000..88fa7957 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockExampleTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::BlockExampleTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::BlockExampleTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 295
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><example#{id}#{role}#{xreflabel}>  #{title}<%= content %></example>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockImageTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockImageTemplate.html new file mode 100644 index 00000000..0fec61f5 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockImageTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::BlockImageTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::BlockImageTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 416
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><figure#{id}#{role}#{xreflabel}>  #{title}  <mediaobject>    <imageobject>      <imagedata fileref="<%= image_uri(attr :target) %>"#{attribute('contentwidth', :width)}#{attribute('contentdepth', :height)}/>    </imageobject>    <textobject><phrase><%= attr :alt %></phrase></textobject>  </mediaobject></figure>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockListingTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockListingTemplate.html new file mode 100644 index 00000000..b8ae05a6 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockListingTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::BlockListingTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::BlockListingTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 251
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><% if !title? %><% if (attr :style) == 'source' %><programlisting#{id}#{role}#{xreflabel}#{attribute('language', :language)} linenumbering="<%= (attr? :linenums) ? 'numbered' : 'unnumbered' %>"><%= template.preserve_endlines(content, self) %></programlisting><% else %><screen#{id}#{role}#{xreflabel}><%= template.preserve_endlines(content, self) %></screen><% end %><% else %><formalpara#{id}#{role}#{xreflabel}>  <title><%= title %></title>  <para>    <% if (attr :style) == 'source' %>    <programlisting language="<%= attr :language %>" linenumbering="<%= (attr? :linenums) ? 'numbered' : 'unnumbered' %>"><%= template.preserve_endlines(content, self) %></programlisting>    <% else %>    <screen><%= template.preserve_endlines(content, self) %></screen>    <% end %>  </para></formalpara><% end %>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockLiteralTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockLiteralTemplate.html new file mode 100644 index 00000000..5c9f208d --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockLiteralTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::BlockLiteralTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::BlockLiteralTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 277
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><% if !title? %><literallayout#{id}#{role}#{xreflabel} class="monospaced"><%= template.preserve_endlines(content, self) %></literallayout><% else %><formalpara#{id}#{role}#{xreflabel}>  <title><%= title %></title>  <para>    <literallayout class="monospaced"><%= template.preserve_endlines(content, self) %></literallayout>  </para></formalpara><% end %>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockOlistTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockOlistTemplate.html new file mode 100644 index 00000000..6a8a4665 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockOlistTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::BlockOlistTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::BlockOlistTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 176
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><orderedlist#{id}#{role}#{xreflabel}#{attribute('numeration', :style)}>  #{title}  <% content.each do |li| %>    <listitem>      <simpara><%= li.text %></simpara>      <% if li.blocks? %><%= li.content %>      <% end %>    </listitem>  <% end %></orderedlist>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockOpenTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockOpenTemplate.html new file mode 100644 index 00000000..dac5cade --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockOpenTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::BlockOpenTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::BlockOpenTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 242
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><%= content %>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockParagraphTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockParagraphTemplate.html new file mode 100644 index 00000000..3655b5ed --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockParagraphTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::BlockParagraphTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::BlockParagraphTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 125
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><% if !title? %><simpara#{id}#{role}#{xreflabel}><%= content %></simpara><% else %><formalpara#{id}#{role}#{xreflabel}>  <title><%= title %></title>  <para><%= content %></para></formalpara><% end %>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockPassTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockPassTemplate.html new file mode 100644 index 00000000..453961bf --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockPassTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::BlockPassTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::BlockPassTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 363
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><%= content %>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockPreambleTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockPreambleTemplate.html new file mode 100644 index 00000000..39c6ae5b --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockPreambleTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::BlockPreambleTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::BlockPreambleTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 97
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><% if document.doctype == 'book' %><preface#{id}#{role}#{xreflabel}>  <title><%= title %></title><%= content %></preface><% else %><%= content %><% end %>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockQuoteTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockQuoteTemplate.html new file mode 100644 index 00000000..6563b551 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockQuoteTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::BlockQuoteTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::BlockQuoteTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 319
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><blockquote#{id}#{role}#{xreflabel}>  #{title}  <% if (attr? :attribution) || (attr? :citetitle) %>  <attribution>    <% if attr? :attribution %>    <%= attr(:attribution) %>    <% end %>    #{tag 'citetitle', :citetitle}  </attribution>  <% end %><% if !buffer.nil? %><simpara><%= content %></simpara><% else %><%= content %><% end %></blockquote>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockRulerTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockRulerTemplate.html new file mode 100644 index 00000000..f8e53d3c --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockRulerTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::BlockRulerTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::BlockRulerTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 433
+def template
+  @template ||= @eruby.new <simpara><?asciidoc-hr?></simpara>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockSidebarTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockSidebarTemplate.html new file mode 100644 index 00000000..4822cca1 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockSidebarTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::BlockSidebarTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::BlockSidebarTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 307
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><sidebar#{id}#{role}#{xreflabel}>  #{title}<%= content %></sidebar>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockTableTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockTableTemplate.html new file mode 100644 index 00000000..60ddfb52 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockTableTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::BlockTableTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::BlockTableTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 372
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><<%= title? ? 'table' : 'informaltable'%>#{id}#{role}#{xreflabel} frame="<%= attr :frame, 'all'%>"    rowsep="<%= ['none', 'cols'].include?(attr :grid) ? 0 : 1 %>" colsep="<%= ['none', 'rows'].include?(attr :grid) ? 0 : 1 %>">  #{title}  <% if attr? :width %>  <?dbhtml table-width="<%= attr :width %>"?>  <?dbfo table-width="<%= attr :width %>"?>  <?dblatex table-width="<%= attr :width %>"?>  <% end %>  <tgroup cols="<%= attr :colcount %>">    <% @columns.each do |col| %>    <colspec colname="col_<%= col.attr :colnumber %>" colwidth="<%= col.attr((attr? :width) ? :colabswidth : :colpcwidth) %>*"/>    <% end %>    <% [:head, :foot, :body].select {|tsec| !rows[tsec].empty? }.each do |tsec| %>    <t<%= tsec %>>      <% @rows[tsec].each do |row| %>      <row>        <% row.each do |cell| %>        <entry#{attribute('align', 'cell.attr :halign')}#{attribute('valign', 'cell.attr :valign')}<%        if cell.colspan %> namest="col_<%= cell.column.attr :colnumber %>" nameend="col_<%= (cell.column.attr :colnumber) + cell.colspan - 1 %>"<%        end %><% if cell.rowspan %> morerows="<%= cell.rowspan - 1 %>"<% end %>><%        if tsec == :head %><%= cell.text %><%        else %><%        case cell.attr(:style)          when :asciidoc %><%= cell.content %><%          when :verse %><literallayout><%= template.preserve_endlines(cell.text, self) %></literallayout><%          when :literal %><literallayout class="monospaced"><%= template.preserve_endlines(cell.text, self) %></literallayout><%          when :header %><% cell.content.each do |text| %><simpara><emphasis role="strong"><%= text %></emphasis></simpara><% end %><%          else %><% cell.content.each do |text| %><simpara><%= text %></simpara><% end %><%        %><% end %><% end %></entry>        <% end %>      </row>      <% end %>    </t<%= tsec %>>    <% end %>  </tgroup></<%= title? ? 'table' : 'informaltable'%>>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockUlistTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockUlistTemplate.html new file mode 100644 index 00000000..c678c12b --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockUlistTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::BlockUlistTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::BlockUlistTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 157
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><itemizedlist#{id}#{role}#{xreflabel}>  #{title}  <% content.each do |li| %>    <listitem>      <simpara><%= li.text %></simpara>      <% if li.blocks? %><%= li.content %>      <% end %>    </listitem>  <% end %></itemizedlist>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockVerseTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockVerseTemplate.html new file mode 100644 index 00000000..a701a21f --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/BlockVerseTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::BlockVerseTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::BlockVerseTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 343
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><blockquote#{id}#{role}#{xreflabel}>  #{title}  <% if (attr? :attribution) || (attr? :citetitle) %>  <attribution>    <% if attr? :attribution %>    <%= attr(:attribution) %>    <% end %>    #{tag 'citetitle', :citetitle}  </attribution>  <% end %>  <literallayout><%= content %></literallayout></blockquote>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/DocumentTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/DocumentTemplate.html new file mode 100644 index 00000000..692e5f20 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/DocumentTemplate.html @@ -0,0 +1,371 @@ + + + + + + + Class: Asciidoctor::DocBook45::DocumentTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::DocumentTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ docinfo() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 29
+def docinfo
+      <% if has_header? && !notitle %>    #{tag 'title', '@header.name'}    <% end %>    <% if attr? :revdate %>    <date><%= attr :revdate %></date>    <% else %>    <date><%= attr :docdate %></date>    <% end %>    <% if has_header? %>    <% if attr? :author %>    <author>      #{tag 'firstname', :firstname}      #{tag 'othername', :middlename}      #{tag 'surname', :lastname}      #{tag 'email', :email}    </author>    #{tag 'authorinitials', :authorinitials}    <% end %>    <% if (attr? :revnumber) || (attr? :revremark) %>    <revhistory>      #{tag 'revision', :revnumber}      #{tag 'date', :revdate}      #{tag 'authorinitials', :authorinitials}      #{tag 'revremark', :revremark}    </revhistory>    <% end %>    <% end %>
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 61
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><?xml version="1.0" encoding="UTF-8"?><!DOCTYPE <%= doctype %> PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"><% if attr? :toc %><?asciidoc-toc?><% end %><% if attr? :numbered %><?asciidoc-numbered?><% end %><% if doctype == 'book' %><book lang="en">  <bookinfo>#{docinfo}  </bookinfo><%= content %></book><% else %><article lang="en">  <articleinfo>#{docinfo}  </articleinfo><%= content %></article><% end %>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/EmbeddedTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/EmbeddedTemplate.html new file mode 100644 index 00000000..f82680aa --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/EmbeddedTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::EmbeddedTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::EmbeddedTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 88
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><%= content %>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/InlineAnchorTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/InlineAnchorTemplate.html new file mode 100644 index 00000000..045426cd --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/InlineAnchorTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::InlineAnchorTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::InlineAnchorTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 472
+def template
+  @template ||= @eruby.new <% if @type == :xref%><%  if @text.nil?%><xref linkend="<%= @target %>"/><%  else%><link linkend="<%= @target %>"><%= @text %></link><%  end %><%elsif @type == :ref%><anchor id="<%= @target %>" xreflabel="<%= @text %>"/><%else%><ulink url="<%= @target %>"><%= @text %></ulink><%end %>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/InlineBreakTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/InlineBreakTemplate.html new file mode 100644 index 00000000..a64bc353 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/InlineBreakTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::InlineBreakTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::InlineBreakTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 441
+def template
+  @template ||= @eruby.new <%= text %><?asciidoc-br?>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/InlineCalloutTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/InlineCalloutTemplate.html new file mode 100644 index 00000000..d8cac880 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/InlineCalloutTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::InlineCalloutTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::InlineCalloutTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 504
+def template
+  @template ||= @eruby.new <co#{id}/>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/InlineImageTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/InlineImageTemplate.html new file mode 100644 index 00000000..e09909c1 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/InlineImageTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::InlineImageTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::InlineImageTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 491
+def template
+  @template ||= @eruby.new <inlinemediaobject>  <imageobject>    <imagedata fileref="<%= image_uri(@target) %>"#{attribute('width', :width)}#{attribute('depth', :height)}/>  </imageobject>  <textobject><phrase><%= attr :alt %></phrase></textobject></inlinemediaobject>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/InlineQuotedTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/InlineQuotedTemplate.html new file mode 100644 index 00000000..80286617 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/InlineQuotedTemplate.html @@ -0,0 +1,349 @@ + + + + + + + Class: Asciidoctor::DocBook45::InlineQuotedTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::InlineQuotedTemplate

+ +
+ +
+ + + + +
+ + + + + + +
+

Constants

+
+ +
QUOTED_TAGS
+ +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 460
+def template
+  @template ||= @eruby.new <% tags = template.class::QUOTED_TAGS[@type] %><%= tags.first %><%if attr? :role %><phrase#{role}><%end %><%= @text %><%if attr? :role %></phrase><%end %><%= tags.last %>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/SectionTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/SectionTemplate.html new file mode 100644 index 00000000..b2ca6a43 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/DocBook45/SectionTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::DocBook45::SectionTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::DocBook45::SectionTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/docbook45.rb, line 113
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><<%= document.doctype == 'book' && level <= 1 ? 'chapter' : 'section' %>#{id}#{role}#{xreflabel}>  #{title}<%= content %></<%= document.doctype == 'book' && level <= 1 ? 'chapter' : 'section' %>>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Document.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Document.html new file mode 100644 index 00000000..a8475992 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Document.html @@ -0,0 +1,1305 @@ + + + + + + + Class: Asciidoctor::Document + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + + +
+

Included Modules

+ +
+ +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::Document

+ +
+ +

Public: Methods for parsing Asciidoc documents and rendering them using erb +templates.

+ +

There are several strategies for getting the title of the document:

+ +

doctitle - value of title attribute, if assigned and non-empty,

+ +
otherwise title of first section in document, if present
+otherwise nil
+ +

name - an alias of doctitle title - value of the title attribute, or nil if +not present first_section.title - title of first section in document, if +present header.title - title of section level 0

+ +

Keep in mind that you’ll want to honor these document settings:

+ +

notitle - The h1 heading should not be shown noheader - The header block +(h1 heading, author, revision info) should not be shown

+ +
+ + + + +
+ + + + + + + + +
+

Attributes

+ + +
+ + +
+ base_dir[R] +
+ +
+ +

Public: Base directory for rendering this document

+ +
+
+ +
+ + +
+ callouts[R] +
+ +
+ +

Public: Get the Hash of callouts

+ +
+
+ +
+ + +
+ header[R] +
+ +
+ +

Public: The section level 0 block

+ +
+
+ +
+ + +
+ parent_document[R] +
+ +
+ +

Public: A reference to the parent document of this nested document.

+ +
+
+ +
+ + +
+ references[R] +
+ +
+ +

Public: Get the Hash of document references

+ +
+
+ +
+ + +
+ safe[R] +
+ +
+ +

Public A read-only integer value indicating the level of security that +should be enforced while processing this document. The value must be set in +the Document constructor using the :safe +option.

+ +

A value of 0 (UNSAFE) disables any of the security features enforced by Asciidoctor (Ruby is still subject to its +own restrictions).

+ +

A value of 1 (SAFE) closely parallels safe mode in AsciiDoc. In particular, +it prevents access to files which reside outside of the parent directory of +the source file and disables any macro other than the include macro.

+ +

A value of 10 (SECURE) disallows the document from attempting to read files +from the file system and including the contents of them into the document. +In particular, it disallows use of the include::[] macro and the embedding +of binary content (data uri), stylesheets and JavaScripts referenced by the +document. (Asciidoctor and trusted +extensions may still be allowed to embed trusted content into the +document). Since Asciidoctor is aiming +for wide adoption, this value is the default and is recommended for +server-side deployments.

+ +

A value of 100 (PARANOID) is planned to disallow the use of passthrough +macros and prevents the document from setting any known attributes in +addition to all the security features of SafeMode::SECURE. Please note that +this level is not currently implemented (and therefore not enforced)!

+ +
+
+ +
+ + + + +
+

Public Class Methods

+ + +
+ + + +
+ new(data = [], options = {}, &block) + click to toggle source +
+ + +
+ +

Public: Initialize an Asciidoc object.

+ +

data - The Array of Strings holding the Asciidoc source document. +(default: []) options - A Hash of options to control processing, such as +setting the safe mode (:safe),

+ +
suppressing the header/footer (:header_footer) and attribute overrides (:attributes)
+(default: {})
+ +

block - A block that can be used to retrieve external Asciidoc

+ +
data to include in this document.
+ +

Examples

+ +
data = File.readlines(filename)
+doc  = Asciidoctor::Document.new(data)
+puts doc.render
+ + + +
+
+# File lib/asciidoctor/document.rb, line 77
+def initialize(data = [], options = {}, &block)
+  super(self, :document)
+  @renderer = nil
+
+  if options[:parent]
+    @parent_document = options.delete(:parent)
+    # should we dup here?
+    options[:attributes] = @parent_document.attributes
+    @renderer = @parent_document.renderer
+  else
+    @parent_document = nil
+  end
+
+  @header = nil
+  @references = {
+    :ids => {},
+    :links => [],
+    :images => []
+  }
+  @callouts = Callouts.new
+  @options = options
+  @safe = @options.fetch(:safe, SafeMode::SECURE).to_i
+  @options[:header_footer] = @options.fetch(:header_footer, true)
+
+  @attributes['asciidoctor'] = true
+  @attributes['asciidoctor-version'] = VERSION
+  @attributes['sectids'] = true
+  @attributes['encoding'] = 'UTF-8'
+
+  attribute_overrides = options[:attributes] || {}
+
+  # the only way to set the include-depth attribute is via the document options
+  # 10 is the AsciiDoc default, though currently Asciidoctor only supports 1 level
+  attribute_overrides['include-depth'] ||= 10
+
+  # TODO we should go with one or the other, this is confusing
+  # for now, base_dir takes precedence if set
+  if options.has_key? :base_dir
+    @base_dir = attribute_overrides['docdir'] = options[:base_dir]
+  else
+    attribute_overrides['docdir'] ||= Dir.pwd
+    @base_dir = attribute_overrides['docdir']
+  end
+
+  # restrict document from setting source-highlighter in SECURE safe mode
+  # it can only be set via the constructor
+  if @safe >= SafeMode::SECURE
+    attribute_overrides['source-highlighter'] ||= nil
+  end
+  
+  attribute_overrides.each {|key, val|
+    # a nil or negative key undefines the attribute 
+    if (val.nil? || key[-1..-1] == '!')
+      @attributes.delete(key.chomp '!')
+    # otherwise it's an attribute assignment
+    else
+      @attributes[key] = val
+    end
+  }
+
+  @attributes['backend'] ||= DEFAULT_BACKEND
+  update_backend_attributes
+
+  if nested?
+    # don't need to do the extra processing within our own document
+    @reader = Reader.new(data)
+  else
+    @reader = Reader.new(data, self, attribute_overrides, &block)
+  end
+
+  # dynamic intrinstic attribute values
+  @attributes['doctype'] ||= DEFAULT_DOCTYPE
+
+  now = Time.new
+  @attributes['localdate'] ||= now.strftime('%Y-%m-%d')
+  @attributes['localtime'] ||= now.strftime('%H:%m:%S %Z')
+  @attributes['localdatetime'] ||= [@attributes['localdate'], @attributes['localtime']].join(' ')
+  
+  # docdate and doctime should default to localdate and localtime if not otherwise set
+  @attributes['docdate'] ||= @attributes['localdate']
+  @attributes['doctime'] ||= @attributes['localtime']
+  
+  @attributes['iconsdir'] ||= File.join(@attributes.fetch('imagesdir', 'images'), 'icons')
+
+  # Now parse the lines in the reader into blocks
+  Lexer.parse(@reader, self) 
+  # or we could make it...
+  #self << *Lexer.parse(@reader, self)
+
+  @callouts.rewind
+
+  Asciidoctor.debug {
+    msg = []
+    msg << "Found #{@blocks.size} blocks in this document:"
+    @blocks.each {|b|
+      msg << b
+    }
+    msg * "\n"
+  }
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ content() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/document.rb, line 307
+def content
+  # per AsciiDoc-spec, remove the title after rendering the header
+  @attributes.delete('title')
+  @blocks.map {|b| b.render }.join
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ doctitle() + click to toggle source +
+ + +
+ +

We need to be able to return some semblance of a title

+ + + +
+
+# File lib/asciidoctor/document.rb, line 214
+def doctitle
+  if !(title = @attributes.fetch('title', '')).empty?
+    title
+  elsif !(sect = first_section).nil? && sect.title?
+    sect.title
+  else
+    nil
+  end
+end
+
+ +
+ + +
+ Also aliased as: name +
+ + + +
+ + +
+ + + +
+ doctype() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/document.rb, line 199
+def doctype
+  @attributes['doctype']
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ first_section() + click to toggle source +
+ + +
+ +

QUESTION move to AbstractBlock?

+ + + +
+
+# File lib/asciidoctor/document.rb, line 234
+def first_section
+  has_header? ? @header : (@blocks || []).detect{|e| e.is_a? Section}
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ has_header?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/document.rb, line 238
+def has_header?
+  !@header.nil?
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ name() + click to toggle source +
+ + +
+ + + + + +
+ + + + +
+ Alias for: doctitle +
+ +
+ + +
+ + + +
+ nested?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/document.rb, line 190
+def nested?
+  !@parent_document.nil?
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ noheader() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/document.rb, line 229
+def noheader
+  @attributes.has_key? 'noheader'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ notitle() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/document.rb, line 225
+def notitle
+  @attributes.has_key? 'notitle'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ register(type, value) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/document.rb, line 178
+def register(type, value)
+  if type == :ids
+    if value.is_a?(Array)
+      @references[:ids][value[0]] = (value[1] || '[' + value[0] + ']')
+    else
+      @references[:ids][value] = '[' + value + ']'
+    end
+  elsif @options[:catalog_assets]
+    @references[type] << value
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ render(opts = {}) + click to toggle source +
+ + +
+ +

Public: Render the Asciidoc document using the templates loaded by Renderer. If a :template_dir is not specified, or +a template is missing, the renderer will fall back to using the appropriate +built-in template.

+ + + +
+
+# File lib/asciidoctor/document.rb, line 302
+def render(opts = {})
+  r = renderer(opts)
+  @options.merge(opts)[:header_footer] ? r.render('document', self) : r.render('embedded', self)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ renderer(opts = {}) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/document.rb, line 278
+def renderer(opts = {})
+  return @renderer if @renderer
+  
+  render_options = {}
+
+  # Load up relevant Document @options
+  if @options[:template_dir]
+    render_options[:template_dir] = @options[:template_dir]
+  end
+  
+  render_options[:backend] = @attributes.fetch('backend', 'html5')
+  render_options[:eruby] = @options.fetch(:eruby, 'erb')
+  render_options[:compact] = @options.fetch(:compact, false)
+  
+  # Override Document @option settings with options passed in
+  render_options.merge! opts
+
+  @renderer = Renderer.new(render_options)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ source() + click to toggle source +
+ + +
+ +

Make the raw source for the Document available.

+ + + +
+
+# File lib/asciidoctor/document.rb, line 195
+def source
+  @reader.source if @reader
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ splain() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/document.rb, line 257
+def splain
+  Asciidoctor.debug {
+    msg = ''
+    if @header
+      msg = "Header is #{@header}"
+    else
+      msg = "No header"
+    end
+
+    msg += "I have #{@blocks.count} blocks"
+    @blocks.each_with_index do |block, i|
+      msg += "v" * 60
+      msg += "Block ##{i} is a #{block.class}"
+      msg += "Name is #{block.title rescue 'n/a'}"
+      block.splain(0) if block.respond_to? :splain
+      msg += "^" * 60
+    end
+  }
+  nil
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ title() + click to toggle source +
+ + +
+ +

The title explicitly defined in the document attributes

+ + + +
+
+# File lib/asciidoctor/document.rb, line 204
+def title
+  @attributes['title']
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ title=(title) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/document.rb, line 208
+def title=(title)
+  @header = Section.new self
+  @header.title = title
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ to_s() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/document.rb, line 313
+def to_s
+  %[#{super.to_s} - #{doctitle}]  
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ update_backend_attributes() + click to toggle source +
+ + +
+ +

Public: Update the backend attributes to reflect a change in the selected +backend

+ + + +
+
+# File lib/asciidoctor/document.rb, line 243
+def update_backend_attributes()
+  backend = @attributes['backend']
+  basebackend = backend.sub(/[[:digit:]]+$/, '')
+  page_width = DEFAULT_PAGE_WIDTHS[basebackend]
+  if page_width
+    @attributes['pagewidth'] = page_width
+  else
+    @attributes.delete('pagewidth')
+  end
+  @attributes['backend-' + backend] = 1
+  @attributes['basebackend'] = basebackend
+  @attributes['basebackend-' + basebackend] = 1
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5.html new file mode 100644 index 00000000..20d445db --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5.html @@ -0,0 +1,339 @@ + + + + + + + Module: Asciidoctor::HTML5 + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ + + +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockAdmonitionTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockAdmonitionTemplate.html new file mode 100644 index 00000000..2900afc2 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockAdmonitionTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::BlockAdmonitionTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::BlockAdmonitionTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 226
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><div#{id} class="admonitionblock#{style_class}">  <table>    <tr>      <td class="icon">        <% if attr? :icons %>        <img src="<%= icon_uri(attr :name) %>" alt="<%= attr :caption %>">        <% else %>        <div class="title"><%= attr :caption %></div>        <% end %>      </td>      <td class="content">        <% unless title.nil? %>        <div class="title"><%= title %></div>        <% end %>        <%= content %>      </td>    </tr>  </table></div>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockColistTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockColistTemplate.html new file mode 100644 index 00000000..66587211 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockColistTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::BlockColistTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::BlockColistTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 422
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><div#{id} class="colist <%= attr :style %>#{style_class}">  <% unless title.nil? %>  <div class="title"><%= title %></div>  <% end %>  <ol>  <% content.each do |li| %>    <li>      <p><%= li.text %></p>    </li>  <% end %>  </ol></div>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockDlistTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockDlistTemplate.html new file mode 100644 index 00000000..f4ee5a7b --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockDlistTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::BlockDlistTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::BlockDlistTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 160
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><div#{id} class="dlist#{style_class}">  <% if title %>  <div class="title"><%= title %></div>  <% end %>  <dl>    <% content.each do |dt, dd| %>    <dt class="hdlist1">      <%= dt.text %>    </dt>    <% unless dd.nil? %>    <dd>      <% if dd.text? %>      <p><%= dd.text %></p>      <% end %>      <% if dd.blocks? %><%= dd.content %>      <% end %>    </dd>    <% end %>    <% end %>  </dl></div>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockExampleTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockExampleTemplate.html new file mode 100644 index 00000000..8415280d --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockExampleTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::BlockExampleTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::BlockExampleTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 283
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><div#{id} class="exampleblock#{style_class}">  <div class="content">    <% unless title.nil? %>    <div class="title"><%= title %></div>    <% end %><%= content %>  </div></div>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockImageTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockImageTemplate.html new file mode 100644 index 00000000..f0067f8d --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockImageTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::BlockImageTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::BlockImageTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 489
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><div#{id} class="imageblock#{style_class}">  <div class="content">    <% if attr :link %>    <a class="image" href="<%= attr :link %>"><img src="<%= image_uri(attr :target) %>" alt="<%= attr :alt %>"#{attribute('width', :width)}#{attribute('height', :height)}></a>    <% else %>    <img src="<%= image_uri(attr :target) %>" alt="<%= attr :alt %>"#{attribute('width', :width)}#{attribute('height', :height)}>    <% end %>  </div>  <% if title %>  <div class="title"><%= title %></div>  <% end %></div>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockListingTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockListingTemplate.html new file mode 100644 index 00000000..a1e3e928 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockListingTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::BlockListingTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::BlockListingTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 190
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><div#{id} class="listingblock#{style_class}">  <% if title %>  <div class="title"><%= title %></div>  <% end %>  <div class="content monospaced">    <% if (attr :style) == 'source' %>    <pre class="highlight<% if attr('source-highlighter') == 'coderay' %> CodeRay<% end %>"><code#{attribute('class', :language)}><%= template.preserve_endlines(content, self) %></code></pre>    <% else %>    <pre><%= template.preserve_endlines(content, self) %></pre>    <% end %>  </div></div>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockLiteralTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockLiteralTemplate.html new file mode 100644 index 00000000..e1208b05 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockLiteralTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::BlockLiteralTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::BlockLiteralTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 210
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><div#{id} class="literalblock#{style_class}">  <% if title %>  <div class="title"><%= title %></div>  <% end %>  <div class="content monospaced">    <pre><%= template.preserve_endlines(content, self) %></pre>  </div></div>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockOlistTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockOlistTemplate.html new file mode 100644 index 00000000..51b02fd5 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockOlistTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::BlockOlistTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::BlockOlistTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 399
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><div#{id} class="olist <%= attr :style %>#{style_class}">  <% unless title.nil? %>  <div class="title"><%= title %></div>  <% end %>  <ol class="<%= attr :style %>"#{attribute('start', :start)}>  <% content.each do |li| %>    <li>      <p><%= li.text %></p>      <% if li.blocks? %><%= li.content %>      <% end %>    </li>  <% end %>  </ol></div>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockOpenTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockOpenTemplate.html new file mode 100644 index 00000000..3694feee --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockOpenTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::BlockOpenTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::BlockOpenTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 299
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><div#{id} class="openblock#{style_class}">  <% unless title.nil? %>  <div class="title"><%= title %></div>  <% end %>  <div class="content"><%= content %>  </div></div>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockParagraphTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockParagraphTemplate.html new file mode 100644 index 00000000..0c44536b --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockParagraphTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::BlockParagraphTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::BlockParagraphTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 253
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><div#{id} class="paragraph#{style_class}">  <% unless title.nil? %>  <div class="title"><%= title %></div>  <% end %>  <p><%= content %></p></div>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockPassTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockPassTemplate.html new file mode 100644 index 00000000..fe3fb74e --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockPassTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::BlockPassTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::BlockPassTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 315
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><%= content %>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockPreambleTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockPreambleTemplate.html new file mode 100644 index 00000000..d24db34e --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockPreambleTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::BlockPreambleTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::BlockPreambleTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 124
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><div id="preamble">  <div class="sectionbody"><%= content %>  </div></div>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockQuoteTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockQuoteTemplate.html new file mode 100644 index 00000000..7fba0813 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockQuoteTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::BlockQuoteTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::BlockQuoteTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 324
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><div#{id} class="quoteblock#{style_class}">  <% unless title.nil? %>  <div class="title"><%= title %></div>  <% end %>  <div class="content"><%= content %>  </div>  <div class="attribution">    <% if attr? :citetitle %>    <em><%= attr :citetitle %></em>    <% end %>    <% if attr? :attribution %>    <% if attr? :citetitle %>    <br/>    <% end %>    <%= '&#8212; ' + attr(:attribution) %>    <% end %>  </div></div>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockRulerTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockRulerTemplate.html new file mode 100644 index 00000000..93121722 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockRulerTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::BlockRulerTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::BlockRulerTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 509
+def template
+  @template ||= @eruby.new <hr>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockSidebarTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockSidebarTemplate.html new file mode 100644 index 00000000..b4412036 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockSidebarTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::BlockSidebarTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::BlockSidebarTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 267
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><div#{id} class="sidebarblock#{style_class}">  <div class="content">    <% unless title.nil? %>    <div class="title"><%= title %></div>    <% end %><%= content %>  </div></div>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockTableTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockTableTemplate.html new file mode 100644 index 00000000..ce9ea097 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockTableTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::BlockTableTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::BlockTableTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 442
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><table#{id} class="tableblock frame-<%= attr :frame, 'all' %> grid-<%= attr :grid, 'all'%>#{style_class}" style="<%if !(attr? 'autowidth-option') %>width: <%= attr :tablepcwidth %>%; <% end %><%if attr? :float %>float: <%= attr :float %>; <% end %>">  <% if title? %>  <caption class="title"><%= title %></caption>  <% end %>  <% if (attr :rowcount) >= 0 %>   <colgroup>    <% if attr? 'autowidth-option' %>    <% @columns.each do |col| %>    <col>    <% end %>    <% else %>    <% @columns.each do |col| %>    <col style="width: <%= col.attr :colpcwidth %>%;">    <% end %>    <% end %>  </colgroup>  <% [:head, :foot, :body].select {|tsec| !rows[tsec].empty? }.each do |tsec| %>  <t<%= tsec %>>    <% @rows[tsec].each do |row| %>    <tr>      <% row.each do |cell| %>      <<%= tsec == :head ? 'th' : 'td' %> class="tableblock halign-<%= cell.attr :halign %> valign-<%= cell.attr :valign %>"#{attribute('colspan', 'cell.colspan')}#{attribute('rowspan', 'cell.rowspan')}><%      if tsec == :head %><%= cell.text %><% else %><%      case cell.attr(:style)        when :asciidoc %><div><%= cell.content %></div><%        when :verse %><div class="verse"><%= template.preserve_endlines(cell.text, self) %></div><%        when :literal %><div class="literal monospaced"><pre><%= template.preserve_endlines(cell.text, self) %></pre></div><%        when :header %><% cell.content.each do |text| %><p class="tableblock header"><%= text %></p><% end %><%        else %><% cell.content.each do |text| %><p class="tableblock"><%= text %></p><% end %><%      end %><% end %></<%= tsec == :head ? 'th' : 'td' %>>      <% end %>    </tr>    <% end %>  </t<%= tsec %>>  <% end %>  <% end %></table>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockUlistTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockUlistTemplate.html new file mode 100644 index 00000000..f32216ad --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockUlistTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::BlockUlistTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::BlockUlistTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 376
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><div#{id} class="ulist#{attrvalue(:style)}#{style_class}">  <% unless title.nil? %>  <div class="title"><%= title %></div>  <% end %>  <ul>  <% content.each do |li| %>    <li>      <p><%= li.text %></p>      <% if li.blocks? %><%= li.content %>      <% end %>    </li>  <% end %>  </ul></div>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockVerseTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockVerseTemplate.html new file mode 100644 index 00000000..b8a459ea --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/BlockVerseTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::BlockVerseTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::BlockVerseTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 351
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><div#{id} class="verseblock#{style_class}">  <% unless title.nil? %>  <div class="title"><%= title %></div>  <% end %>  <pre class="content"><%= template.preserve_endlines(content, self) %></pre>  <div class="attribution">    <% if attr? :citetitle %>    <em><%= attr :citetitle %></em>    <% end %>    <% if attr? :attribution %>    <% if attr? :citetitle %>    <br/>    <% end %>    <%= '&#8212; ' + attr(:attribution) %>    <% end %>  </div></div>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/DocumentTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/DocumentTemplate.html new file mode 100644 index 00000000..4446754a --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/DocumentTemplate.html @@ -0,0 +1,425 @@ + + + + + + + Class: Asciidoctor::HTML5::DocumentTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::DocumentTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ default_coderay_stylesheet() + click to toggle source +
+ + +
+ +

Internal: Generate the default stylesheet for CodeRay

+ +

returns the default CodeRay stylesheet as a String

+ + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 34
+def default_coderay_stylesheet
+  Asciidoctor.require_library 'coderay'
+  ::CodeRay::Encoders[:html]::CSS.new(:default).stylesheet
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ render_outline(node, to_depth = 2) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 11
+def render_outline(node, to_depth = 2)
+  toc_level = nil
+  sections = node.sections
+  unless sections.empty?
+    toc_level, indent = ''
+    unless node.is_a?(::Asciidoctor::Document)
+      indent = '    ' * (node.document.doctype == 'book' ? node.level + 1 : node.level)
+    end
+    toc_level << "#{indent}<ol>\n"
+    sections.each do |section|
+      toc_level << "#{indent}  <li><a href=\"##{section.id}\">#{section.sectnum} #{section.title}</a></li>\n"
+      if section.level < to_depth && (child_toc_level = render_outline(section, to_depth))
+        toc_level << "#{indent}  <li>\n#{child_toc_level}\n#{indent}  </li>\n"
+      end
+    end
+    toc_level << "#{indent}</ol>"
+  end
+  toc_level
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 39
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><!DOCTYPE html><html lang="en">  <head>    <meta http-equiv="Content-Type" content="text/html; charset=<%= attr :encoding %>">    <meta name="generator" content="Asciidoctor <%= attr 'asciidoctor-version' %>">    <% if attr? :description %><meta name="description" content="<%= attr :description %>"><% end %>    <% if attr? :keywords %><meta name="keywords" content="<%= attr :keywords %>"><% end %>    <title><%= doctitle %></title>    <% if attr? :toc %>    <style>#toc > ol { padding-left: 0; }#toc ol { list-style-type: none; }    </style>    <% end %>    <% unless attr(:stylesheet, '').empty? %>    <link rel="stylesheet" href="<%= File.join((attr :stylesdir, '.'), (attr :stylesheet)) %>">    <% end %>    <%    case attr 'source-highlighter' %><%    when 'coderay' %>    <style>pre.highlight { border: none; background-color: #F8F8F8; }pre.highlight code, pre.highlight pre { color: #333; }pre.highlight span.line-numbers { display: inline-block; margin-right: 4px; padding: 1px 4px; }pre.highlight .line-numbers { background-color: #D5F6F6; color: gray; }pre.highlight .line-numbers pre { color: gray; }<% if (attr 'coderay-css', 'class') == 'class' %><%= template.default_coderay_stylesheet %><% end %>    </style><%    when 'highlightjs' %>    <link rel="stylesheet" href="<%= (attr :highlightjsdir, 'http://cdnjs.cloudflare.com/ajax/libs/highlight.js/7.3') %>/styles/<%= (attr 'highlightjs-theme', 'default') %>.min.css">    <style>pre code { background-color: #F8F8F8; padding: 0; }    </style>    <script src="<%= (attr :highlightjsdir, 'http://cdnjs.cloudflare.com/ajax/libs/highlight.js/7.3') %>/highlight.min.js"></script>    <script>hljs.initHighlightingOnLoad();</script>    <% end %>  </head>  <body#{attribute('id', :'css-signature')} class="<%= doctype %>"<% if attr? 'max-width' %> style="max-width: <%= attr 'max-width' %>;"<% end %>>    <% unless noheader %>    <div id="header">      <% if has_header? %>      <% unless notitle %>      <h1><%= header.title %></h1>      <% end %>      <% if attr? :author %><span id="author"><%= attr :author %></span><br><% end %>      <% if attr? :email %><span id="email" class="monospaced">&lt;<%= attr :email %>&gt;</span><br><% end %>      <% if attr? :revnumber %><span id="revnumber">version <%= attr :revnumber %><%= attr?(:revdate) ? ',' : '' %></span><% end %>      <% if attr? :revdate %><span id="revdate"><%= attr :revdate %></span><% end %>      <% if attr? :revremark %><br><span id="revremark"><%= attr :revremark %></span><% end %>      <% end %>      <% if attr? :toc %>      <div id="toc">        <div id="toctitle"><%= attr 'toc-title', 'Table of Contents' %></div><%= template.render_outline(self, (attr :toclevels, 2).to_i) %>      </div>      <% end %>    </div>    <% end %>    <div id="content"><%= content %>    </div>    <div id="footer">      <div id="footer-text">        Last updated <%= attr :localdatetime %>      </div>    </div>  </body></html>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/EmbeddedTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/EmbeddedTemplate.html new file mode 100644 index 00000000..5c42d323 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/EmbeddedTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::EmbeddedTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::EmbeddedTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 115
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><%= content %>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/InlineAnchorTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/InlineAnchorTemplate.html new file mode 100644 index 00000000..a36d15ed --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/InlineAnchorTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::InlineAnchorTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::InlineAnchorTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 556
+def template
+  @template ||= @eruby.new <%if type == :xref%><a href="#<%= @target %>"><%= @text || @document.references[:ids].fetch(@target, '[' + @target + ']') %></a><%elsif @type == :ref%><a id="<%= @target %>"></a><%else%><a href="<%= @target %>"><%= @text %></a><%end%>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/InlineBreakTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/InlineBreakTemplate.html new file mode 100644 index 00000000..172e6544 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/InlineBreakTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::InlineBreakTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::InlineBreakTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 517
+def template
+  @template ||= @eruby.new <%= text %><br>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/InlineCalloutTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/InlineCalloutTemplate.html new file mode 100644 index 00000000..d31a02e7 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/InlineCalloutTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::InlineCalloutTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::InlineCalloutTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 525
+def template
+  @template ||= @eruby.new <b><%= text %></b>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/InlineImageTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/InlineImageTemplate.html new file mode 100644 index 00000000..5e29cb05 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/InlineImageTemplate.html @@ -0,0 +1,337 @@ + + + + + + + Class: Asciidoctor::HTML5::InlineImageTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::InlineImageTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 572
+def template
+  # care is taken here to avoid a space inside the optional <a> tag
+  @template ||= @eruby.new <span class="image#{style_class}">  <%  if attr :link %><a class="image" href="<%= attr :link %>"><%  end %><img src="<%= image_uri(target) %>" alt="<%= attr :alt %>"#{attribute('width', :width)}#{attribute('height', :height)}#{attribute('title', :title)}><%  if attr :link%></a><% end  %></span>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/InlineQuotedTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/InlineQuotedTemplate.html new file mode 100644 index 00000000..041a7132 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/InlineQuotedTemplate.html @@ -0,0 +1,349 @@ + + + + + + + Class: Asciidoctor::HTML5::InlineQuotedTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::InlineQuotedTemplate

+ +
+ +
+ + + + +
+ + + + + + +
+

Constants

+
+ +
QUOTED_TAGS
+ +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 544
+def template
+  @template ||= @eruby.new <% tags = template.class::QUOTED_TAGS[@type] %><%= tags.first %><%if attr? :role %><span#{attribute('class', :role)}><%end %><%= @text %><%if attr? :role %></span><%end %><%= tags.last %>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/SectionTemplate.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/SectionTemplate.html new file mode 100644 index 00000000..3e993f48 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/HTML5/SectionTemplate.html @@ -0,0 +1,336 @@ + + + + + + + Class: Asciidoctor::HTML5::SectionTemplate + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::HTML5::SectionTemplate

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ template() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/backends/html5.rb, line 137
+def template
+  @template ||= @eruby.new <%#encoding:UTF-8%><% if level == 0 %><h1#{id}><%= title %></h1><%= content %><% else %><div class="sect<%= @level %>#{style_class}">  <h<%= @level + 1 %>#{id}><% if attr? :numbered %><%= sectnum %> <% end %><%= title %></h<%= @level + 1 %>>  <% if @level == 1 %>  <div class="sectionbody"><%= content %>  </div>  <% else %><%= content %>  <% end %></div><% end %>
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Inline.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Inline.html new file mode 100644 index 00000000..7b042927 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Inline.html @@ -0,0 +1,442 @@ + + + + + + + Class: Asciidoctor::Inline + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::Inline

+ +
+ +

Public: Methods for managing inline elements in AsciiDoc block

+ +
+ + + + +
+ + + + + + + + +
+

Attributes

+ + +
+ + + + +
+ target[RW] +
+ +
+ +

Public: Get/Set the target (e.g., uri) of this inline element

+ +
+
+ +
+ + +
+ text[R] +
+ +
+ +

Public: Get the text of this inline element

+ +
+
+ +
+ + +
+ type[R] +
+ +
+ +

Public: Get the type (qualifier) of this inline element

+ +
+
+ +
+ + + + +
+

Public Class Methods

+ + +
+ + + +
+ new(parent, context, text = nil, opts = {}) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/inline.rb, line 12
+def initialize(parent, context, text = nil, opts = {})
+  super(parent, context)
+
+  @text = text 
+  @id = opts[:id] if opts.has_key?(:id)
+  @type = opts[:type] if opts.has_key?(:type)
+  @target = opts[:target] if opts.has_key?(:target)
+  
+  if opts.has_key?(:attributes) && (attributes = opts[:attributes]).is_a?(Hash)
+    update_attributes(opts[:attributes]) unless attributes.empty?
+  end
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ render() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/inline.rb, line 25
+def render
+  renderer.render("inline_#{@context}", self).chomp
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Lexer.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Lexer.html new file mode 100644 index 00000000..de22edb0 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Lexer.html @@ -0,0 +1,2843 @@ + + + + + + + Class: Asciidoctor::Lexer + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ + + +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::Lexer

+ +
+ +

Public: Methods to parse lines of AsciiDoc into an object hierarchy +representing the structure of the document. All methods are class methods +and should be invoked from the Lexer class. The +main entry point is ::next_block. No Lexer instances shall be discovered running around. +(Any attempt to instantiate a Lexer will be +futile).

+ +

The object hierarchy created by the Lexer consists +of zero or more Section and Block objects. Section +objects may be nested and a Section object +contains zero or more Block objects. Block objects may be nested, but may only contain +other Block objects. Block objects which represent lists may contain zero +or more ListItem objects.

+ +

Examples

+ +
# Create a Reader for the AsciiDoc lines and retrieve the next block from it.
+# Lexer::next_block requires a parent, so we begin by instantiating an empty Document.
+
+doc = Document.new
+reader = Reader.new lines
+block = Lexer.next_block(reader, doc)
+block.class
+# => Asciidoctor::Block
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ catalog_callouts(text, document) + click to toggle source +
+ + +
+ +

Internal: Catalog any callouts found in the text, but don’t process them

+ +

text - The String of text in which to look for callouts document - The +current document on which the callouts are stored

+ +

Returns nothing

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 629
+def self.catalog_callouts(text, document)
+  text.scan(REGEXP[:callout_scan]) {
+    # alias match for Ruby 1.8.7 compat
+    m = $~
+    next if m[0].start_with? '\'
+    document.callouts.register(m[1])
+  }
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ catalog_inline_anchors(text, document) + click to toggle source +
+ + +
+ +

Internal: Catalog any inline anchors found in the text, but don’t process +them

+ +

text - The String text in which to look for inline anchors document - +The current document on which the references are stored

+ +

Returns nothing

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 644
+def self.catalog_inline_anchors(text, document)
+  text.scan(REGEXP[:anchor_macro]) {
+    # alias match for Ruby 1.8.7 compat
+    m = $~
+    next if m[0].start_with? '\'
+    id, reftext = m[1].split(',')
+    id.sub!(/^("|)(.*)\11$$/, '\2')
+    if !reftext.nil?
+      reftext.sub!(/^("|)(.*)\11$$/, '\2')
+    end
+    document.register(:ids, [id, reftext])
+  }
+  nil
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ delimited_block?(line) + click to toggle source +
+ + +
+ +

Public: Determines whether this line is the start of any of the delimited +blocks

+ +

returns the match data if this line is the first line of a delimited block +or nil if not

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 550
+def self.delimited_block?(line)
+  # naive match
+  #line.match(REGEXP[:any_blk])
+
+  # attempt at better performance
+  if line.length > 0
+    # NOTE accessing the first element before calling ord is first Ruby 1.8.7 compat
+    REGEXP[:any_blk_ord].include?(line[0..0][0].ord) ? line.match(REGEXP[:any_blk]) : nil
+  else
+    nil
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ grab_lines_for_list_item(reader, list_type, sibling_trait = nil, has_text = true) + click to toggle source +
+ + +
+ +

Internal: Collect the lines belonging to the current list item, navigating +through all the rules that determine what comprises a list item.

+ +

Grab lines until a sibling list item is found, or the block is broken by a +terminator (such as a line comment). Definition lists are more greedy if +they don’t have optional inline item text…they want that text

+ +

reader - The Reader from which to +retrieve the lines. list_type - The Symbol context of the list +(:ulist, :olist, :colist or :dlist) sibling_trait - A Regexp that matches +a sibling of this list item or String list marker

+ +
of the items in this list (default: nil)
+ +

has_text - Whether the list item has text defined inline (always +true except for labeled lists)

+ +

Returns an Array of lines belonging to the current list item.

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 767
+def self.grab_lines_for_list_item(reader, list_type, sibling_trait = nil, has_text = true)
+  buffer = []
+
+  # three states for continuation: :inactive, :active & :frozen
+  # :frozen signifies we've detected sequential continuation lines &
+  # continuation is not permitted until reset 
+  continuation = :inactive
+
+  # if we are within a nested list, we don't throw away the list
+  # continuation marks because they will be processed when grabbing
+  # the lines for those nested lists
+  within_nested_list = false
+
+  # a detached continuation is a list continuation that follows a blank line
+  # it gets associated with the outermost block
+  detached_continuation = nil
+
+  while reader.has_lines?
+    this_line = reader.get_line
+
+    # if we've arrived at a sibling item in this list, we've captured
+    # the complete list item and can begin processing it
+    # the remainder of the method determines whether we've reached
+    # the termination of the list
+    break if is_sibling_list_item?(this_line, list_type, sibling_trait)
+
+    prev_line = buffer.empty? ? nil : buffer.last.chomp
+
+    if prev_line == LIST_CONTINUATION
+      if continuation == :inactive
+        continuation = :active
+        has_text = true
+        buffer[buffer.size - 1] = "\n" unless within_nested_list
+      end
+
+      # dealing with adjacent list continuations (which is really a syntax error)
+      if this_line.chomp == LIST_CONTINUATION
+        if continuation != :frozen
+          continuation = :frozen
+          buffer << this_line
+        end
+        this_line = nil
+        next
+      end
+    end
+
+    # a delimited block immediately breaks the list unless preceded
+    # by a list continuation (they are harsh like that ;0)
+    if (match = delimited_block?(this_line)) ||
+      # technically attr_line only breaks if ensuing line is not a list item
+      # which really means attr_line only breaks if it's acting as a block delimiter
+      (list_type == :dlist && match = this_line.match(REGEXP[:attr_line]))
+      terminator = match[0]
+      if continuation == :active
+        buffer << this_line
+        # grab all the lines in the block, leaving the delimiters in place
+        # we're being more strict here about the terminator, but I think that's a good thing
+        buffer.concat reader.grab_lines_until(:terminator => terminator, :grab_last_line => true)
+        continuation = :inactive
+      else
+        break
+      end
+    else
+      if continuation == :active && !this_line.strip.empty?
+        # literal paragraphs have special considerations (and this is one of 
+        # two entry points into one)
+        # if we don't process it as a whole, then a line in it that looks like a
+        # list item will throw off the exit from it
+        if this_line.match(REGEXP[:lit_par])
+          reader.unshift this_line
+          buffer.concat reader.grab_lines_until(
+            :preserve_last_line => true,
+            :break_on_blank_lines => true,
+            :break_on_list_continuation => true)
+        else
+          if nested_list_type = (within_nested_list ? [:dlist] : NESTABLE_LIST_CONTEXTS).detect {|ctx| this_line.match(REGEXP[ctx]) }
+            within_nested_list = true
+            if nested_list_type == :dlist && $~[3].to_s.empty?
+              # get greedy again
+              has_text = false
+            end
+          end
+          buffer << this_line
+        end
+        continuation = :inactive
+      elsif !prev_line.nil? && prev_line.strip.empty?
+        # advance to the next line of content
+        if this_line.strip.empty?
+          reader.skip_blank
+          this_line = reader.get_line 
+          # if we hit eof or a sibling, stop reading
+          break if this_line.nil? || is_sibling_list_item?(this_line, list_type, sibling_trait)
+        end
+
+        if this_line.chomp == LIST_CONTINUATION
+          detached_continuation = buffer.size
+          buffer << this_line
+        else
+          # has_text is only relevant for dlist, which is more greedy until it has text for an item
+          # for all other lists, has_text is always true
+          # in this block, we have to see whether we stay in the list
+          if has_text
+            # slurp up any literal paragraph offset by blank lines
+            if this_line.match(REGEXP[:lit_par])
+              reader.unshift this_line
+              buffer.concat reader.grab_lines_until(
+                :preserve_last_line => true,
+                :break_on_blank_lines => true,
+                :break_on_list_continuation => true)
+            # TODO any way to combine this with the check after skipping blank lines?
+            elsif is_sibling_list_item?(this_line, list_type, sibling_trait)
+              #buffer.pop unless within_nested_list
+              break
+            elsif nested_list_type = NESTABLE_LIST_CONTEXTS.detect {|ctx| this_line.match(REGEXP[ctx]) }
+              #buffer.pop unless within_nested_list
+              buffer << this_line
+              within_nested_list = true
+              if nested_list_type == :dlist && $~[3].to_s.empty?
+                # get greedy again
+                has_text = false
+              end
+            else
+              break
+            end
+          else # only dlist in need of item text, so slurp it up!
+            # pop the blank line so it's not interpretted as a list continuation
+            buffer.pop unless within_nested_list
+            buffer << this_line
+            has_text = true
+          end
+        end
+      else
+        has_text = true if !this_line.strip.empty?
+        if nested_list_type = (within_nested_list ? [:dlist] : NESTABLE_LIST_CONTEXTS).detect {|ctx| this_line.match(REGEXP[ctx]) }
+          within_nested_list = true
+          if nested_list_type == :dlist && $~[3].to_s.empty?
+            # get greedy again
+            has_text = false
+          end
+        end
+        buffer << this_line
+      end
+    end
+    this_line = nil
+  end
+
+  reader.unshift this_line if !this_line.nil?
+
+  if detached_continuation
+    buffer.delete_at detached_continuation
+  end
+
+  # QUESTION should we strip these trailing endlines?
+  #buffer.pop while buffer.last == "\n"
+
+  # We do need to replace the optional trailing continuation
+  # a blank line would have served the same purpose in the document
+  if !buffer.empty? && buffer.last.chomp == LIST_CONTINUATION
+    buffer.pop
+  end
+  #puts "BUFFER>#{buffer.join}<BUFFER"
+  #puts "BUFFER>#{buffer}<BUFFER"
+
+  buffer
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ initialize_section(reader, parent, attributes = {}) + click to toggle source +
+ + +
+ +

Internal: Initialize a new Section object and +assign any attributes provided

+ +

The information for this section is retrieved by parsing the lines at the +current position of the reader.

+ +

reader - the source reader parent - the parent Section or Document of +this Section attributes - a Hash of attributes +to assign to this section (default: {})

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 941
+def self.initialize_section(reader, parent, attributes = {})
+  section = Section.new parent
+  section.id, section.title, section.level, _ = parse_section_title(reader)
+  if section.id.nil? && attributes.has_key?('id')
+    section.id = attributes['id']
+  else
+    # generate an id if one was not *embedded* in the heading line
+    # or as an anchor above the section
+    section.id ||= section.generate_id
+  end
+
+  section.update_attributes(attributes)
+  reader.skip_blank
+
+  section
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ is_next_line_section?(reader) + click to toggle source +
+ + +
+ +

Internal: Checks if the next line on the Reader +is a section title

+ +

This is a more efficient version of is_section_title? and should eventually +replace its usage.

+ +

reader - the source Reader

+ +

returns the section level if the Reader is +positioned at a section title, false otherwise

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 988
+def self.is_next_line_section?(reader)
+  if reader.has_lines?
+    line1 = reader.get_line
+    line2 = reader.peek_line
+    reader.unshift line1
+  else
+    return false
+  end
+
+  is_section_title?(line1, line2)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ is_section_title?(line1, line2 = nil) + click to toggle source +
+ + +
+ +

Public: Checks if these lines are a section title

+ +

line1 - the first line as a String line2 - the second line as a String +(default: nil)

+ +

returns the section level if these lines are a section title, false +otherwise

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 1007
+def self.is_section_title?(line1, line2 = nil)
+  if (level = is_single_line_section_title?(line1))
+    level
+  elsif (level = is_two_line_section_title?(line1, line2))
+    level
+  else
+    false
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ is_sibling_list_item?(line, list_type, sibling_trait) + click to toggle source +
+ + +
+ +

Internal: Determine whether the this line is a sibling list item according +to the list type and trait (marker) provided.

+ +

line - The String line to check list_type - The context of the +list (:olist, :ulist, :colist, :dlist) sibling_trait - The String marker +for the list or the Regexp to match a sibling

+ +

Returns a Boolean indicating whether this line is a sibling list item given +the criteria provided

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 1352
+def self.is_sibling_list_item?(line, list_type, sibling_trait)
+  if sibling_trait.is_a?(Regexp)
+    matcher = sibling_trait
+    expected_marker = false
+  else
+    matcher = REGEXP[list_type]
+    expected_marker = sibling_trait
+  end
+
+  if m = line.match(matcher)
+    if expected_marker
+      expected_marker == resolve_list_marker(list_type, m[1])
+    else
+      true
+    end
+  else
+    false
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ is_single_line_section_title?(line1) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/lexer.rb, line 1017
+def self.is_single_line_section_title?(line1)
+  if !line1.nil? && (match = line1.match(REGEXP[:section_title]))
+    single_line_section_level match[1]
+  else
+    false
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ is_two_line_section_title?(line1, line2) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/lexer.rb, line 1025
+def self.is_two_line_section_title?(line1, line2)
+  if !line1.nil? && !line2.nil? && line1.match(REGEXP[:section_name]) &&
+      line2.match(REGEXP[:section_underline]) &&
+      # chomp so that a (non-visible) endline does not impact calculation
+      (line1.chomp.size - line2.chomp.size).abs <= 1
+    section_level line2
+  else
+    false
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ new() + click to toggle source +
+ + +
+ +

Public: Make sure the Lexer object doesn’t get +initialized.

+ +

Raises RuntimeError if this constructor is invoked.

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 30
+def initialize
+  raise 'Au contraire, mon frere. No lexer instances will be running around.'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ next_block(reader, parent, attributes = {}, options = {}) + click to toggle source +
+ + +
+ +

Public: Return the next Section or Block object from the Reader.

+ +

Begins by skipping over blank lines to find the start of the next Section or Block. +Processes each line of the reader in sequence until a Section or Block is found +or the reader has no more lines.

+ +

Uses regular expressions from the Asciidoctor module to match Section and Block +delimiters. The ensuing lines are then processed according to the type of +content.

+ +

reader - The Reader from which to retrieve the +next block parent - The Document, Section or Block to which +the next block belongs

+ +

Returns a Section or Block object holding the parsed content of the +processed lines

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 210
+def self.next_block(reader, parent, attributes = {}, options = {})
+  # Skip ahead to the block content
+  skipped = reader.skip_blank
+
+  # bail if we've reached the end of the section content
+  return nil unless reader.has_lines?
+
+  if options[:text] && skipped > 0
+    options.delete(:text)
+  end
+
+  Asciidoctor.debug {
+    msg = []
+    msg << '/' * 64
+    msg << 'next_block() - First two lines are:'
+    msg << reader.peek_line
+    tmp_line = reader.get_line
+    msg << reader.peek_line
+    reader.unshift tmp_line
+    msg << '/' * 64
+    msg * "\n"
+  }
+  
+  parse_metadata = options[:parse_metadata] || true
+  parse_sections = options[:parse_sections] || false
+
+  document = parent.document
+  context = parent.is_a?(Block) ? parent.context : nil
+  block = nil
+  title = nil
+  caption = nil
+
+  while reader.has_lines? && block.nil?
+    if parse_metadata && parse_block_metadata_line(reader, document, attributes, options)
+      reader.next_line
+      next
+    elsif parse_sections && context.nil? && is_next_line_section?(reader)
+      block, attributes = next_section(reader, parent, attributes)
+      break
+    end
+
+    this_line = reader.get_line
+
+    delimited_blk = delimited_block? this_line
+
+    # NOTE I've haven't decided whether I want this check here or in
+    # parse_block_metadata (where it is currently)
+    #if this_line.match(REGEXP[:comment_blk])
+    #  reader.grab_lines_until {|line| line.match( REGEXP[:comment_blk] ) }
+    #  reader.skip_blank
+    #  # NOTE we should break here because we have found a block, it
+    #  # just happens to be nil...if we keep going we potentially overrun
+    #  # a section heading which is not processed in this anymore
+    #  break
+
+    # NOTE we're letting ruler have attributes
+    if !options[:text] && this_line.match(REGEXP[:ruler])
+      block = Block.new(parent, :ruler)
+      reader.skip_blank
+
+    elsif !options[:text] && (match = this_line.match(REGEXP[:image_blk]))
+      block = Block.new(parent, :image)
+      AttributeList.new(document.sub_attributes(match[2])).parse_into(attributes, ['alt', 'width', 'height'])
+      target = block.sub_attributes(match[1])
+      if !target.to_s.empty?
+        attributes['target'] = target
+        document.register(:images, target)
+        attributes['alt'] ||= File.basename(target, File.extname(target))
+      else
+        # drop the line if target resolves to nothing
+        block = nil
+      end
+      reader.skip_blank
+
+    elsif delimited_blk && (match = this_line.match(REGEXP[:open_blk]))
+      # an open block is surrounded by '--' lines and has zero or more blocks inside
+      terminator = match[0]
+      buffer = Reader.new reader.grab_lines_until(:terminator => terminator)
+
+      # Strip lines off end of block - not implemented yet
+      # while buffer.has_lines? && buffer.last.strip.empty?
+      #   buffer.pop
+      # end
+
+      block = Block.new(parent, :open)
+      while buffer.has_lines?
+        new_block = next_block(buffer, block)
+        block.blocks << new_block unless new_block.nil?
+      end
+
+    # needs to come before list detection
+    elsif delimited_blk && (match = this_line.match(REGEXP[:sidebar_blk]))
+      # sidebar is surrounded by '****' (4 or more '*' chars) lines
+      terminator = match[0]
+      # FIXME violates DRY because it's a duplication of quote parsing
+      block = Block.new(parent, :sidebar)
+      buffer = Reader.new reader.grab_lines_until(:terminator => terminator)
+
+      while buffer.has_lines?
+        new_block = next_block(buffer, block)
+        block.blocks << new_block unless new_block.nil?
+      end
+
+    elsif match = this_line.match(REGEXP[:colist])
+      block = Block.new(parent, :colist)
+      attributes['style'] = 'arabic'
+      items = []
+      block.buffer = items
+      reader.unshift this_line
+      expected_index = 1
+      begin
+        # might want to move this check to a validate method
+        if match[1].to_i != expected_index
+          puts "asciidoctor: WARNING: callout list item index: expected #{expected_index} got #{match[1]}"
+        end
+        list_item = next_list_item(reader, block, match)
+        expected_index += 1
+        if !list_item.nil?
+          items << list_item
+          coids = document.callouts.callout_ids(items.size)
+          if !coids.empty?
+            list_item.attributes['coids'] = coids
+          else
+            puts 'asciidoctor: WARNING: no callouts refer to list item ' + items.size.to_s
+          end
+        end
+      end while reader.has_lines? && match = reader.peek_line.match(REGEXP[:colist])
+
+      document.callouts.next_list
+
+    elsif match = this_line.match(REGEXP[:ulist])
+      AttributeList.rekey(attributes, ['style'])
+      reader.unshift(this_line)
+      block = next_outline_list(reader, :ulist, parent)
+
+    elsif match = this_line.match(REGEXP[:olist])
+      AttributeList.rekey(attributes, ['style'])
+      reader.unshift(this_line)
+      block = next_outline_list(reader, :olist, parent)
+      # QUESTION move this logic to next_outline_list?
+      if !(attributes.has_key? 'style') && !(block.attributes.has_key? 'style')
+        marker = block.buffer.first.marker
+        if marker.start_with? '.'
+          # first one makes more sense, but second on is AsciiDoc-compliant
+          #attributes['style'] = (ORDERED_LIST_STYLES[block.level - 1] || ORDERED_LIST_STYLES.first).to_s
+          attributes['style'] = (ORDERED_LIST_STYLES[marker.length - 1] || ORDERED_LIST_STYLES.first).to_s
+        else
+          style = ORDERED_LIST_STYLES.detect{|s| marker.match(ORDERED_LIST_MARKER_PATTERNS[s]) }
+          attributes['style'] = (style || ORDERED_LIST_STYLES.first).to_s
+        end
+      end
+
+    elsif match = this_line.match(REGEXP[:dlist])
+      reader.unshift this_line
+      block = next_labeled_list(reader, match, parent)
+
+    elsif delimited_blk && (match = this_line.match(document.nested? ? REGEXP[:table_nested] : REGEXP[:table]))
+      # table is surrounded by lines starting with a | followed by 3 or more '=' chars
+      terminator = match[0]
+      AttributeList.rekey(attributes, ['style'])
+      table_reader = Reader.new reader.grab_lines_until(:terminator => terminator, :skip_line_comments => true)
+      block = next_table(table_reader, parent, attributes)
+  
+    # FIXME violates DRY because it's a duplication of other block parsing
+    elsif delimited_blk && (match = this_line.match(REGEXP[:example]))
+      # example is surrounded by lines with 4 or more '=' chars
+      terminator = match[0]
+      AttributeList.rekey(attributes, ['style'])
+      if admonition_style = ADMONITION_STYLES.detect {|s| attributes['style'] == s}
+        block = Block.new(parent, :admonition)
+        attributes['name'] = admonition_style.downcase
+        attributes['caption'] ||= admonition_style.capitalize
+      else
+        block = Block.new(parent, :example)
+      end
+      buffer = Reader.new reader.grab_lines_until(:terminator => terminator)
+
+      while buffer.has_lines?
+        new_block = next_block(buffer, block)
+        block.blocks << new_block unless new_block.nil?
+      end
+
+    # FIXME violates DRY w/ non-delimited block listing
+    elsif delimited_blk && (match = this_line.match(REGEXP[:listing]))
+      terminator = match[0]
+      AttributeList.rekey(attributes, ['style', 'language', 'linenums'])
+      buffer = reader.grab_lines_until(:terminator => terminator)
+      buffer.last.chomp! unless buffer.empty?
+      block = Block.new(parent, :listing, buffer)
+
+    elsif delimited_blk && (match = this_line.match(REGEXP[:quote]))
+      # multi-line verse or quote is surrounded by a block delimiter
+      terminator = match[0]
+      AttributeList.rekey(attributes, ['style', 'attribution', 'citetitle'])
+      quote_context = (attributes['style'] == 'verse' ? :verse : :quote)
+      block_reader = Reader.new reader.grab_lines_until(:terminator => terminator)
+
+      # only quote can have other section elements (as as section block)
+      section_body = (quote_context == :quote)
+
+      if section_body
+        block = Block.new(parent, quote_context)
+        while block_reader.has_lines?
+          new_block = next_block(block_reader, block)
+          block.blocks << new_block unless new_block.nil?
+        end
+      else
+        block_reader.chomp_last!
+        block = Block.new(parent, quote_context, block_reader.lines)
+      end
+
+    elsif delimited_blk && (blk_ctx = [:literal, :pass].detect{|t| this_line.match(REGEXP[t])})
+      # literal is surrounded by '....' (4 or more '.' chars) lines
+      # pass is surrounded by '++++' (4 or more '+' chars) lines
+      terminator = $~[0]
+      buffer = reader.grab_lines_until(:terminator => terminator)
+      buffer.last.chomp! unless buffer.empty?
+      # a literal can masquerade as a listing
+      if attributes[1] == 'listing'
+        blk_ctx = :listing
+      end
+      block = Block.new(parent, blk_ctx, buffer)
+
+    elsif this_line.match(REGEXP[:lit_par])
+      # literal paragraph is contiguous lines starting with
+      # one or more space or tab characters
+
+      # So we need to actually include this one in the grab_lines group
+      reader.unshift this_line
+      buffer = reader.grab_lines_until(:preserve_last_line => true, :break_on_blank_lines => true) {|line|
+        # labeled list terms can be indented, but a preceding blank indicates
+        # we are in a list continuation and therefore literals should be strictly literal
+        (context == :dlist && skipped == 0 && line.match(REGEXP[:dlist])) ||
+        delimited_block?(line)
+      }
+
+      # trim off the indentation equivalent to the size of the least indented line
+      if !buffer.empty?
+        offset = buffer.map {|line| line.match(REGEXP[:leading_blanks])[1].length }.min
+        if offset > 0
+          buffer = buffer.map {|l| l.sub(/^\s{1,#{offset}}/, '') }
+        end
+        buffer.last.chomp!
+      end
+
+      block = Block.new(parent, :literal, buffer)
+      # a literal gets special meaning inside of a definition list
+      if LIST_CONTEXTS.include?(context)
+        attributes['options'] ||= []
+        # TODO this feels hacky, better way to distinguish from explicit literal block?
+        attributes['options'] << 'listparagraph'
+      end
+
+    ## these switches based on style need to come immediately before the else ##
+
+    elsif attributes[1] == 'source'
+      AttributeList.rekey(attributes, ['style', 'language', 'linenums'])
+      reader.unshift(this_line)
+      buffer = reader.grab_lines_until(:break_on_blank_lines => true)
+      buffer.last.chomp! unless buffer.empty?
+      block = Block.new(parent, :listing, buffer)
+
+    elsif admonition_style = ADMONITION_STYLES.detect{|s| attributes[1] == s}
+      # an admonition preceded by [<TYPE>] and lasts until a blank line
+      reader.unshift(this_line)
+      buffer = reader.grab_lines_until(:break_on_blank_lines => true)
+      buffer.last.chomp! unless buffer.empty?
+      block = Block.new(parent, :admonition, buffer)
+      attributes['style'] = admonition_style
+      attributes['name'] = admonition_style.downcase
+      attributes['caption'] ||= admonition_style.capitalize
+
+    elsif quote_context = [:quote, :verse].detect{|s| attributes[1] == s.to_s}
+      # single-paragraph verse or quote is preceded by [verse] or [quote], respectively, and lasts until a blank line
+      AttributeList.rekey(attributes, ['style', 'attribution', 'citetitle'])
+      reader.unshift(this_line)
+      buffer = reader.grab_lines_until(:break_on_blank_lines => true)
+      buffer.last.chomp! unless buffer.empty?
+      block = Block.new(parent, quote_context, buffer)
+
+    else # paragraph, contiguous nonblank/noncontinuation lines
+      reader.unshift this_line
+      buffer = reader.grab_lines_until(:break_on_blank_lines => true, :preserve_last_line => true, :skip_line_comments => true) {|line|
+        delimited_block?(line) || line.match(REGEXP[:attr_line]) ||
+        # next list item can be directly adjacent to paragraph of previous list item
+        context == :dlist && line.match(REGEXP[:dlist])
+        # not sure if there are any cases when we need this check for other list types
+        #LIST_CONTEXTS.include?(context) && line.match(REGEXP[context])
+      }
+
+      # NOTE we need this logic because the reader is processing line
+      # comments and that might leave us w/ an empty buffer
+      if buffer.empty?
+        reader.get_line
+        break
+      end
+
+      catalog_inline_anchors(buffer.join, document)
+
+      if !options[:text] && (admonition = buffer.first.match(Regexp.new('^(' + ADMONITION_STYLES.join('|') + '):\s+')))
+        buffer[0] = admonition.post_match
+        block = Block.new(parent, :admonition, buffer)
+        attributes['style'] = admonition[1]
+        attributes['name'] = admonition[1].downcase
+        attributes['caption'] ||= admonition[1].capitalize
+      else
+        buffer.last.chomp!
+        block = Block.new(parent, :paragraph, buffer)
+      end
+    end
+  end
+
+  # when looking for nested content, one or more line comments, comment
+  # blocks or trailing attribute lists could leave us without a block,
+  # so handle accordingly
+  if !block.nil?
+    block.id        = attributes['id'] if attributes.has_key?('id')
+    block.title   ||= (attributes['title'] || title)
+    block.caption ||= caption unless block.is_a?(Section)
+    # AsciiDoc always use [id] as the reftext in HTML output,
+    # but I'd like to do better in Asciidoctor
+    if block.id && block.title? && !attributes.has_key?('reftext')
+      document.register(:ids, [block.id, block.title])
+    end
+    block.update_attributes(attributes)
+
+    if block.context == :listing || block.context == :literal
+      catalog_callouts(block.buffer.join, document)
+    end
+  end
+
+  block
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ next_labeled_list(reader, match, parent) + click to toggle source +
+ + +
+ +

Internal: Parse and construct a labeled (e.g., definition) list Block from the current position of the Reader

+ +

reader - The Reader from which to retrieve the +labeled list match - The Regexp match for the head of the list parent +- The parent Block to which this labeled list +belongs

+ +

Returns the Block encapsulating the parsed labeled +list

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 666
+def self.next_labeled_list(reader, match, parent)
+  pairs = []
+  block = Block.new(parent, :dlist)
+  block.buffer = pairs
+  # allows us to capture until we find a labeled item
+  # that uses the same delimiter (::, :::, :::: or ;;)
+  sibling_pattern = REGEXP[:dlist_siblings][match[2]]
+
+  begin
+    pairs << next_list_item(reader, block, match, sibling_pattern)
+  end while reader.has_lines? && match = reader.peek_line.match(sibling_pattern)
+
+  block
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ next_list_item(reader, list_block, match, sibling_trait = nil) + click to toggle source +
+ + +
+ +

Internal: Parse and construct the next ListItem +for the current bulleted (unordered or ordered) list Block, callout lists included, or the next term ListItem and definition ListItem pair for the labeled list Block.

+ +

First collect and process all the lines that constitute the next list item +for the parent list (according to its type). Next, parse those lines into +blocks and associate them with the ListItem (in +the case of a labeled list, the definition ListItem). Finally, fold the first block into the +item’s text attribute according to rules described in ListItem.

+ +

reader - The Reader from which to retrieve +the next list item list_block - The parent list Block of this ListItem. +Also provides access to the list type. match - The match Array +which contains the marker and text (first-line) of the ListItem sibling_trait - The list marker or the +Regexp to match a sibling item

+ +

Returns the next ListItem or ListItem pair (depending on the list type) for the +parent list Block.

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 698
+def self.next_list_item(reader, list_block, match, sibling_trait = nil)
+  list_type = list_block.context
+
+  if list_type == :dlist
+    list_term = ListItem.new(list_block, match[1])
+    list_item = ListItem.new(list_block, match[3])
+    has_text = !match[3].to_s.empty?
+  else
+    # Create list item using first line as the text of the list item
+    list_item = ListItem.new(list_block, match[2])
+
+    if !sibling_trait
+      sibling_trait = resolve_list_marker(list_type, match[1], list_block.buffer.size, true)
+    end
+    list_item.marker = sibling_trait
+    has_text = true
+  end
+
+  # first skip the line with the marker / term
+  reader.get_line
+  list_item_reader = Reader.new grab_lines_for_list_item(reader, list_type, sibling_trait, has_text)
+  if list_item_reader.has_lines?
+    comment_lines = list_item_reader.consume_line_comments
+    subsequent_line = list_item_reader.peek_line
+    list_item_reader.unshift(*comment_lines) unless comment_lines.empty? 
+
+    if !subsequent_line.nil?
+      continuation_connects_first_block = (subsequent_line == "\n")
+      content_adjacent = !subsequent_line.strip.empty?
+    else
+      continuation_connects_first_block = false
+      content_adjacent = false
+    end
+
+    # only relevant for :dlist
+    options = {:text => !has_text}
+
+    while list_item_reader.has_lines?
+      new_block = next_block(list_item_reader, list_block, {}, options)
+      list_item.blocks << new_block unless new_block.nil?
+    end
+
+    list_item.fold_first(continuation_connects_first_block, content_adjacent)
+  end
+
+  if list_type == :dlist
+    unless list_item.text? || list_item.blocks?
+      list_item = nil
+    end
+    [list_term, list_item]
+  else
+    list_item
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ next_outline_list(reader, list_type, parent) + click to toggle source +
+ + +
+ +

Internal: Parse and construct an outline list Block from the current position of the Reader

+ +

reader - The Reader from which to retrieve the +outline list list_type - A Symbol representing the list type (:olist for +ordered, :ulist for unordered) parent - The parent Block to which this outline list belongs

+ +

Returns the Block encapsulating the parsed outline +(unordered or ordered) list

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 570
+def self.next_outline_list(reader, list_type, parent)
+  list_block = Block.new(parent, list_type)
+  items = []
+  list_block.buffer = items
+  if parent.context == list_type
+    list_block.level = parent.level + 1
+  else
+    list_block.level = 1
+  end
+  Asciidoctor.debug { "Created #{list_type} block: #{list_block}" }
+
+  while reader.has_lines? && (match = reader.peek_line.match(REGEXP[list_type]))
+
+    marker = resolve_list_marker(list_type, match[1])
+
+    # if we are moving to the next item, and the marker is different
+    # determine if we are moving up or down in nesting
+    if items.size > 0 && marker != items.first.marker
+      # assume list is nested by default, but then check to see if we are
+      # popping out of a nested list by matching an ancestor's list marker
+      this_item_level = list_block.level + 1
+      p = parent
+      while p.context == list_type
+        if marker == p.buffer.first.marker
+          this_item_level = p.level
+          break
+        end
+        p = p.parent
+      end
+    else
+      this_item_level = list_block.level
+    end
+
+    if items.size == 0 || this_item_level == list_block.level
+      list_item = next_list_item(reader, list_block, match)
+    elsif this_item_level < list_block.level
+      # leave this block
+      break
+    elsif this_item_level > list_block.level
+      # If this next list level is down one from the
+      # current Block's, append it to content of the current list item
+      items.last.blocks << next_block(reader, list_block)
+    end
+
+    items << list_item unless list_item.nil?
+    list_item = nil
+
+    reader.skip_blank
+  end
+
+  list_block
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ next_section(reader, parent, attributes = {}) + click to toggle source +
+ + +
+ +

Public: Return the next section from the Reader.

+ +

This method process block metadata, content and subsections for this +section and returns the Section object and any +orphaned attributes.

+ +

If the parent is a Document and has a header +(document title), then this method will put any non-section blocks at the +start of document into a preamble Block. If there +are no such blocks, the preamble is dropped.

+ +

Since we are reading line-by-line, there’s a chance that metadata that +should be associated with the following block gets consumed. To deal with +this case, the method returns a running Hash of “orphaned” attributes that +get passed to the next Section or Block.

+ +

reader - the source Reader parent - the +parent Section or Document of this new section attributes - a Hash +of metadata that was left orphaned from the

+ +
previous Section.
+ +

Examples

+ +
source
+# => "Greetings\n---------\nThis is my doc.\n\nSalutations\n-----------\nIt is awesome."
+
+reader = Reader.new source.lines.entries
+# create empty document to parent the section
+# and hold attributes extracted from header
+doc = Document.new
+
+Lexer.next_section(reader, doc).first.title
+# => "Greetings"
+
+Lexer.next_section(reader, doc).first.title
+# => "Salutations"
+ +

returns a two-element Array containing the Section and Hash of orphaned attributes

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 103
+def self.next_section(reader, parent, attributes = {})
+  preamble = false
+
+  # check if we are at the start of processing the document
+  # NOTE we could drop a hint in the attributes to indicate
+  # that we are at a section title (so we don't have to check)
+  if parent.is_a?(Document) && parent.blocks.empty? &&
+      (parent.has_header? || !is_next_line_section?(reader))
+
+    if parent.has_header?
+      preamble = Block.new(parent, :preamble)
+      parent << preamble
+    end
+    section = parent
+
+    current_level = 0
+    if parent.attributes.has_key? 'fragment'
+      expected_next_levels = nil
+    # small tweak to allow subsequent level-0 sections for book doctype
+    elsif parent.doctype == 'book'
+      expected_next_levels = [0, 1]
+    else
+      expected_next_levels = [1]
+    end
+  else
+    section = initialize_section(reader, parent, attributes)
+    # clear attributes, except for title which carries over
+    # section title to next block of content
+    attributes = attributes.delete_if {|k, v| k != 'title'}
+    current_level = section.level
+    expected_next_levels = [current_level + 1]
+  end
+
+  reader.skip_blank_lines
+
+  # Parse lines belonging to this section and its subsections until we
+  # reach the end of this section level
+  #
+  # 1. first look for metadata thingies (anchor, attribute list, block title line, etc)
+  # 2. then look for a section, recurse if found
+  # 3. then process blocks
+  #
+  # We have to parse all the metadata lines before continuing with the loop,
+  # otherwise subsequent metadata lines get interpreted as block content
+  while reader.has_lines?
+    parse_block_metadata_lines(reader, section, attributes)
+
+    next_level = is_next_line_section?(reader)
+    if next_level
+      doctype = parent.document.doctype
+      if next_level == 0 && doctype != 'book'
+        puts "asciidoctor: ERROR: only book doctypes can contain level 0 sections"
+      end
+      if next_level > current_level || (section.is_a?(Document) && next_level == 0)
+        unless expected_next_levels.nil? || expected_next_levels.include?(next_level)
+          puts "asciidoctor: WARNING: section title out of sequence: " +
+              "expected #{expected_next_levels.size > 1 ? 'levels' : 'level'} #{expected_next_levels * ' or '}, " +
+              "got level #{next_level}"
+        end
+        # the attributes returned are those that are orphaned
+        new_section, attributes = next_section(reader, section, attributes)
+        section << new_section
+      else
+        # close this section (and break out of the nesting) to begin a new one
+        break
+      end
+    else
+      # just take one block or else we run the risk of overrunning section boundaries
+      new_block = next_block(reader, section, attributes, :parse_metadata => false)
+      if !new_block.nil?
+        (preamble || section) << new_block
+        attributes = {}
+      else
+        # don't clear attributes if we don't find a block because they may
+        # be trailing attributes that didn't get associated with a block
+      end
+    end
+
+    reader.skip_blank_lines
+  end
+
+  # prune the preamble if it has no content
+  if preamble && preamble.blocks.empty?
+    section.delete_at(0)
+  end
+
+  # The attributes returned here are orphaned attributes that fall at the end
+  # of a section that need to get transfered to the next section
+  # see "trailing block attributes transfer to the following section" in
+  # test/attributes_test.rb for an example
+  [section != parent ? section : nil, attributes.dup]
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ next_table(table_reader, parent, attributes) + click to toggle source +
+ + +
+ +

Internal: Parse the table contained in the provided Reader

+ +

table_reader - a Reader containing the source +lines of an AsciiDoc table parent - the parent Block of this Asciidoctor::Table attributes - attributes captured +from above this Block

+ +

returns an instance of Asciidoctor::Table parsed +from the provided reader

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 1379
+def self.next_table(table_reader, parent, attributes)
+  table = Table.new(parent, attributes)
+
+  if attributes.has_key? 'cols'
+    table.create_columns(parse_col_specs(attributes['cols']))
+    explicit_col_specs = true
+  else
+    explicit_col_specs = false
+  end
+
+  table_reader.skip_blank_lines
+
+  parser_ctx = Asciidoctor::Table::ParserContext.new(table, attributes)
+  while table_reader.has_lines?
+    line = table_reader.get_line
+
+    if parser_ctx.format == 'psv'
+      if parser_ctx.starts_with_delimiter? line
+        line = line[1..-1]
+        # push an empty cell spec if boundary at start of line
+        parser_ctx.close_open_cell
+      else
+        next_cell_spec, line = parse_cell_spec(line, :start)
+        # if the cell spec is not null, then we're at a cell boundary
+        if !next_cell_spec.nil?
+          parser_ctx.close_open_cell next_cell_spec
+        else
+          # QUESTION do we not advance to next line? if so, when
+          # will we if we came into this block?
+        end
+      end
+    end
+
+    while !line.empty?
+      if m = parser_ctx.match_delimiter(line)
+        if parser_ctx.format == 'csv'
+          if parser_ctx.buffer_has_unclosed_quotes?(m.pre_match)
+            # throw it back, it's too small
+            line = parser_ctx.skip_matched_delimiter(m)
+            next
+          end
+        else
+          if m.pre_match.end_with? '\'
+            line = parser_ctx.skip_matched_delimiter(m, true)
+            next
+          end
+        end
+
+        if parser_ctx.format == 'psv'
+          next_cell_spec, cell_text = parse_cell_spec(m.pre_match, :end)
+          parser_ctx.push_cell_spec next_cell_spec
+          parser_ctx.buffer << cell_text
+        else
+          parser_ctx.buffer << m.pre_match
+        end
+
+        line = m.post_match
+        parser_ctx.close_cell
+      else
+        # no other delimiters to see here
+        # suck up this line into the buffer and move on
+        parser_ctx.buffer << line
+        # QUESTION make this an option? (unwrap-option?)
+        if parser_ctx.format == 'csv'
+          parser_ctx.buffer.rstrip!.concat(' ')
+        end
+        line = ''
+        if parser_ctx.format == 'psv' || (parser_ctx.format == 'csv' &&
+            parser_ctx.buffer_has_unclosed_quotes?)
+          parser_ctx.keep_cell_open
+        else
+          parser_ctx.close_cell true
+        end
+      end
+    end
+
+    table_reader.skip_blank_lines unless parser_ctx.cell_open?
+
+    if !table_reader.has_lines?
+      parser_ctx.close_cell true
+    end
+  end
+
+  table.attributes['colcount'] ||= parser_ctx.col_count
+
+  if !explicit_col_specs
+    # TODO further encapsulate this logic (into table perhaps?)
+    even_width = (100.0 / parser_ctx.col_count).floor
+    table.columns.each {|c| c.assign_width(0, even_width) }
+  end
+
+  table.partition_header_footer attributes
+
+  table
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ parse(reader, document) + click to toggle source +
+ + +
+ +

Public: Parses AsciiDoc source read from the Reader into the Document

+ +

This method is the main entry-point into the Lexer +when parsing a full document. It first looks for and, if found, processes +the document title. It then proceeds to iterate through the lines in the Reader, parsing the document into nested Sections +and Blocks.

+ +

reader - the Reader holding the source lines of +the document document - the empty Document into +which the lines will be parsed

+ +

returns the Document object

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 45
+def self.parse(reader, document)
+  # process and plow away any attribute lines that proceed the first block so
+  # we can get at the document title, if present, then begin parsing blocks
+  attributes = parse_block_metadata_lines(reader, document)
+
+  # by processing the header here, we enforce its position at head of the document  
+  next_level = is_next_line_section? reader
+  if next_level == 0
+    title_info = parse_section_title(reader) 
+    document.title = title_info[1]
+    parse_header_metadata(reader, document)
+  end
+
+  while reader.has_lines?
+    new_section, attributes = next_section(reader, document, attributes)
+    document << new_section unless new_section.nil?
+  end
+
+  document
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ parse_block_metadata_line(reader, parent, attributes, options = {}) + click to toggle source +
+ + +
+ +

Internal: Parse the next line if it contains metadata for the following +block

+ +

This method handles lines with the following content:

+
  • +

    line or block comment

    +
  • +

    anchor

    +
  • +

    attribute list

    +
  • +

    block title

    +
+ +

Any attributes found will be inserted into the attributes argument. If the +line contains block metadata, the method returns true, otherwise false.

+ +

reader - the source reader parent - the parent of the current line +attributes - a Hash of attributes in which any metadata found will be +stored options - a Hash of options to control processing: (default: {})

+ +
*  :text indicates that lexer is only looking for text content
+     and thus the block title should not be captured
+ +

returns true if the line contains metadata, otherwise false

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 1217
+def self.parse_block_metadata_line(reader, parent, attributes, options = {})
+  return false if !reader.has_lines?
+  next_line = reader.peek_line
+  if next_line.match(REGEXP[:comment])
+    # do nothing, we'll skip it
+  # QUESTION should we parse block comments here instead of next_block?
+  # disable until we can agree what the current line is coming in
+  elsif match = next_line.match(REGEXP[:comment_blk])
+    terminator = match[0]
+    reader.grab_lines_until(:skip_first_line => true, :preserve_last_line => true, :terminator => terminator)
+  elsif match = next_line.match(REGEXP[:anchor])
+    id, reftext = match[1].split(',')
+    attributes['id'] = id
+    # AsciiDoc always use [id] as the reftext in HTML output,
+    # but I'd like to do better in Asciidoctor
+    #parent.document.register(:ids, id)
+    if reftext
+      attributes['reftext'] = reftext
+      parent.document.register(:ids, [id, reftext])
+    end
+  elsif match = next_line.match(REGEXP[:blk_attr_list])
+    AttributeList.new(parent.document.sub_attributes(match[1]), parent.document).parse_into(attributes)
+  # NOTE title doesn't apply to section, but we need to stash it for the first block
+  # TODO need test for this getting passed on to first block after section if found above section
+  # TODO should issue an error if this is found above the document title
+  elsif !options[:text] && (match = next_line.match(REGEXP[:blk_title]))
+    attributes['title'] = match[1]
+  else
+    return false
+  end
+
+  true
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ parse_block_metadata_lines(reader, parent, attributes = {}, options = {}) + click to toggle source +
+ + +
+ +

Internal: Parse lines of metadata until a line of metadata is not found.

+ +

This method processes sequential lines containing block metadata, ignoring +blank lines and comments.

+ +

reader - the source reader parent - the parent to which the lines +belong attributes - a Hash of attributes in which any metadata found will +be stored (default: {}) options - a Hash of options to control +processing: (default: {})

+ +
*  :text indicates that lexer is only looking for text content
+     and thus the block title should not be captured
+ +

returns the Hash of attributes including any metadata found

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 1189
+def self.parse_block_metadata_lines(reader, parent, attributes = {}, options = {})
+  while parse_block_metadata_line(reader, parent, attributes, options)
+    reader.next_line
+    reader.skip_blank_lines
+  end
+  attributes
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ parse_cell_spec(line, pos = :start) + click to toggle source +
+ + +
+ +

Internal: Parse the cell specs for the current cell.

+ +

The cell specs dictate the cell’s alignments, styles or filters, colspan, +rowspan and/or repeating content.

+ +

returns the Hash of attributes that indicate how to layout and style this +cell in the table.

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 1537
+def self.parse_cell_spec(line, pos = :start)
+  # the default for the end pos it {} since we
+  # know we're at a delimiter; when the pos
+  # is start, we *may* be at a delimiter and
+  # nil indicates we're not
+  spec = (pos == :end ? {} : nil)
+  rest = line
+
+  if m = line.match(REGEXP[:table_cellspec][pos]) 
+    spec = {}
+    return [spec, line] if m[0].strip.empty?
+    rest = (pos == :start ? m.post_match : m.pre_match)
+    if m[1]
+      colspec, rowspec = m[1].split '.'
+      colspec = colspec.to_s.empty? ? 1 : colspec.to_i
+      rowspec = rowspec.to_s.empty? ? 1 : rowspec.to_i
+      if m[2] == '+'
+        spec['colspan'] = colspec unless colspec == 1
+        spec['rowspan'] = rowspec unless rowspec == 1
+      elsif m[2] == '*'
+        spec['repeatcol'] = colspec unless colspec == 1
+      end
+    end
+    
+    if m[3]
+      colspec, rowspec = m[3].split '.'
+      if !colspec.to_s.empty? && Table::ALIGNMENTS[:h].has_key?(colspec)
+        spec['halign'] = Table::ALIGNMENTS[:h][colspec]
+      end
+      if !rowspec.to_s.empty? && Table::ALIGNMENTS[:v].has_key?(rowspec)
+        spec['valign'] = Table::ALIGNMENTS[:v][rowspec]
+      end
+    end
+
+    if m[4] && Table::TEXT_STYLES.has_key?(m[4])
+      spec['style'] = Table::TEXT_STYLES[m[4]]
+    end
+  end 
+
+  [spec, rest]
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ parse_col_specs(records) + click to toggle source +
+ + +
+ +

Internal: Parse the column specs for this table.

+ +

The column specs dictate the number of columns, relative width of columns, +default alignments for cells in each column, and/or default styles or +filters applied to the cells in the column.

+ +

Every column spec is guaranteed to have a width

+ +

returns a Hash of attributes that specify how to format and layout the +cells in the table.

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 1486
+def self.parse_col_specs(records)
+  specs = []
+
+  # check for deprecated syntax
+  if m = records.match(REGEXP[:digits])
+    1.upto(m[0].to_i) {
+      specs << {'width' => 1}
+    }
+    return specs
+  end
+
+  records.split(',').each {|record|
+    # TODO might want to use scan rather than this mega-regexp
+    if m = record.match(REGEXP[:table_colspec])
+      spec = {}
+      if m[2]
+        # make this an operation
+        colspec, rowspec = m[2].split '.'
+        if !colspec.to_s.empty? && Table::ALIGNMENTS[:h].has_key?(colspec)
+          spec['halign'] = Table::ALIGNMENTS[:h][colspec]
+        end
+        if !rowspec.to_s.empty? && Table::ALIGNMENTS[:v].has_key?(rowspec)
+          spec['valign'] = Table::ALIGNMENTS[:v][rowspec]
+        end
+      end
+
+      # TODO support percentage width
+      spec['width'] = !m[3].nil? ? m[3].to_i : 1
+
+      # make this an operation
+      if m[4] && Table::TEXT_STYLES.has_key?(m[4])
+        spec['style'] = Table::TEXT_STYLES[m[4]]
+      end
+
+      repeat = !m[1].nil? ? m[1].to_i : 1
+
+      1.upto(repeat) {
+        specs << spec.dup
+      }
+    end
+  }
+  specs
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ parse_header_metadata(reader, document = nil) + click to toggle source +
+ + +
+ +

Public: Consume and parse the two header lines (line 1 = author info, line +2 = revision info).

+ +

Returns the Hash of header metadata. If a Document object is supplied, the metadata is +applied directly to the attributes of the Document.

+ +

reader - the Reader holding the source lines of +the document document - the Document we are +building (default: nil)

+ +

Examples

+ +
parse_header_metadata(Reader.new ["Author Name <author@example.org>\n", "v1.0, 2012-12-21: Coincide w/ end of world.\n"])
+# => {'author' => 'Author Name', 'firstname' => 'Author', 'lastname' => 'Name', 'email' => 'author@example.org',
+#       'revnumber' => '1.0', 'revdate' => '2012-12-21', 'revremark' => 'Coincide w/ end of world.'}
+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 1122
+def self.parse_header_metadata(reader, document = nil)
+  # capture consecutive comment lines so we can reinsert them after the header
+  comment_lines = reader.consume_comments
+
+  metadata = !document.nil? ? document.attributes : {}
+  author_initials = metadata['authorinitials']
+  if reader.has_lines? && !reader.peek_line.strip.empty?
+    author_line = reader.get_line
+    match = author_line.match(REGEXP[:author_info])
+    if match
+      metadata['firstname'] = fname = match[1].tr('_', ' ')
+      metadata['author'] = fname
+      metadata['authorinitials'] = fname[0, 1]
+      if !match[2].nil? && !match[3].nil?
+        metadata['middlename'] = mname = match[2].tr('_', ' ')
+        metadata['lastname'] = lname = match[3].tr('_', ' ')
+        metadata['author'] = [fname, mname, lname].join ' '
+        metadata['authorinitials'] = [fname[0, 1], mname[0, 1], lname[0, 1]].join
+      elsif !match[2].nil?
+        metadata['lastname'] = lname = match[2].tr('_', ' ')
+        metadata['author'] = [fname, lname].join ' '
+        metadata['authorinitials'] = [fname[0, 1], lname[0, 1]].join
+      end
+      metadata['email'] = match[4] unless match[4].nil?
+    else
+      metadata['author'] = metadata['firstname'] = author_line.strip.squeeze(' ')
+      metadata['authorinitials'] = metadata['firstname'][0, 1]
+    end
+
+    # hack because of incorrect order of attribute processing
+    metadata['authorinitials'] = author_initials unless author_initials.nil?
+
+    # capture consecutive comment lines so we can reinsert them after the header
+    comment_lines += reader.consume_comments
+
+    if reader.has_lines? && !reader.peek_line.strip.empty?
+      rev_line = reader.get_line 
+      match = rev_line.match(REGEXP[:revision_info])
+      if match
+        metadata['revdate'] = match[2]
+        metadata['revnumber'] = match[1] unless match[1].nil?
+        metadata['revremark'] = match[3] unless match[3].nil?
+      else
+        metadata['revdate'] = rev_line.strip
+      end
+    end
+
+    reader.skip_blank
+  end
+
+  reader.unshift(*comment_lines)
+  metadata
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ parse_section_title(reader) + click to toggle source +
+ + +
+ +

Internal: Parse the section title from the current position of the reader

+ +

Parse a single or double-line section title. After this method is called, +the Reader will be positioned at the line after +the section title.

+ +

reader - the source reader, positioned at a section title

+ +

Examples

+ +
reader.lines
+# => ["Foo\n", "~~~\n"]
+
+title, level, id, single = parse_section_title(reader)
+
+title
+# => "Foo"
+level
+# => 2
+id
+# => nil
+single
+# => false
+
+line1
+# => "==== Foo\n"
+
+title, level, id, single = parse_section_title(reader)
+
+title
+# => "Foo"
+level
+# => 3
+id
+# => nil
+single
+# => true
+ +

returns an Array of [String, Integer, String, Boolean], representing the +id, title, level and line count of the Section, +or nil.

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 1078
+def self.parse_section_title(reader)
+  line1 = reader.get_line
+  sect_id = nil
+  sect_title = nil
+  sect_level = 0
+  single_line = true
+
+  if match = line1.match(REGEXP[:section_title])
+    sect_id = match[3]
+    sect_title = match[2]
+    sect_level = single_line_section_level match[1]
+  else
+    line2 = reader.peek_line
+    if !line2.nil? && (name_match = line1.match(REGEXP[:section_name])) &&
+      line2.match(REGEXP[:section_underline]) &&
+      # chomp so that a (non-visible) endline does not impact calculation
+      (line1.chomp.size - line2.chomp.size).abs <= 1
+      if anchor_match = name_match[1].match(REGEXP[:anchor_embedded]) 
+        sect_id = anchor_match[2]
+        sect_title = anchor_match[1]
+      else
+        sect_title = name_match[1]
+      end
+      sect_level = section_level line2
+      single_line = false
+      reader.get_line
+    end
+  end
+  return [sect_id, sect_title, sect_level, single_line]
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ resolve_list_marker(list_type, marker, ordinal = 0, validate = false) + click to toggle source +
+ + +
+ +

Internal: Resolve the 0-index marker for this list item

+ +

For ordered lists, match the marker used for this list item against the +known list markers and determine which marker is the first (0-index) marker +in its number series.

+ +

For callout lists, return <1>.

+ +

For bulleted lists, return the marker as passed to this method.

+ +

list_type - The Symbol context of the list marker - The String marker +for this list item ordinal - The position of this list item in the list +validate - Whether to validate the value of the marker

+ +

Returns the String 0-index marker for this list item

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 1267
+def self.resolve_list_marker(list_type, marker, ordinal = 0, validate = false)
+  if list_type == :olist && !marker.start_with?('.')
+    resolve_ordered_list_marker(marker, ordinal, validate)
+  elsif list_type == :colist
+    '<1>'
+  else
+    marker
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ resolve_ordered_list_marker(marker, ordinal = 0, validate = false) + click to toggle source +
+ + +
+ +

Internal: Resolve the 0-index marker for this ordered list item

+ +

Match the marker used for this ordered list item against the known ordered +list markers and determine which marker is the first (0-index) marker in +its number series.

+ +

The purpose of this method is to normalize the implicit numbered markers so +that they can be compared against other list items.

+ +

marker - The marker used for this list item ordinal - The 0-based index +of the list item (default: 0) validate - Perform validation that the marker +provided is the proper

+ +
marker in the sequence (default: false)
+ +

Examples

+ +
marker = 'B.'
+Lexer::resolve_ordered_list_marker(marker, 1, true)
+# => 'A.'
+ +

Returns the String of the first marker in this number series

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 1298
+def self.resolve_ordered_list_marker(marker, ordinal = 0, validate = false)
+  number_style = ORDERED_LIST_STYLES.detect {|s| marker.match(ORDERED_LIST_MARKER_PATTERNS[s]) }
+  expected = actual = nil
+  case number_style
+    when :arabic
+      if validate
+        expected = ordinal + 1
+        actual = marker.to_i
+      end
+      marker = '1.'
+    when :loweralpha
+      if validate
+        expected = ('a'[0].ord + ordinal).chr
+        actual = marker.chomp('.')
+      end
+      marker = 'a.'
+    when :upperalpha
+      if validate
+        expected = ('A'[0].ord + ordinal).chr
+        actual = marker.chomp('.')
+      end
+      marker = 'A.'
+    when :lowerroman
+      if validate
+        # TODO report this in roman numerals; see https://github.com/jamesshipton/roman-numeral/blob/master/lib/roman_numeral.rb
+        expected = ordinal + 1
+        actual = roman_numeral_to_int(marker.chomp(')'))
+      end
+      marker = 'i)'
+    when :upperroman
+      if validate
+        # TODO report this in roman numerals; see https://github.com/jamesshipton/roman-numeral/blob/master/lib/roman_numeral.rb
+        expected = ordinal + 1
+        actual = roman_numeral_to_int(marker.chomp(')'))
+      end
+      marker = 'I)'
+  end
+
+  if validate && expected != actual
+    puts "asciidoctor: WARNING: list item index: expected #{expected}, got #{actual}"
+  end
+
+  marker
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ roman_numeral_to_int(value) + click to toggle source +
+ + +
+ +

Internal: Converts a Roman numeral to an integer value.

+ +

value - The String Roman numeral to convert

+ +

Returns the Integer for this Roman numeral

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 1584
+def self.roman_numeral_to_int(value)
+  value = value.downcase
+  digits = { 'i' => 1, 'v' => 5, 'x' => 10 }
+  result = 0
+  
+  (0..value.length - 1).each {|i|
+    digit = digits[value[i..i]]
+    if i + 1 < value.length && digits[value[i+1..i+1]] > digit
+      result -= digit
+    else
+      result += digit
+    end
+  }
+
+  result
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ section_level(line) + click to toggle source +
+ + +
+ +

Private: Get the Integer section level based on the characters used in the +ASCII line under the section title.

+ +

line - the String line from under the section title.

+ + + +
+
+# File lib/asciidoctor/lexer.rb, line 962
+def self.section_level(line)
+  char = line.strip.chars.to_a.uniq
+  case char
+  when ['=']; 0
+  when ['-']; 1
+  when ['~']; 2
+  when ['^']; 3
+  when ['+']; 4
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ single_line_section_level(line) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/lexer.rb, line 975
+def self.single_line_section_level(line)
+  [line.length - 1, 0].max
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/ListItem.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/ListItem.html new file mode 100644 index 00000000..cc36af86 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/ListItem.html @@ -0,0 +1,624 @@ + + + + + + + Class: Asciidoctor::ListItem + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::ListItem

+ +
+ +

Public: Methods for managing items for AsciiDoc olists, ulist, and dlists.

+ +
+ + + + +
+ + + + + + + + +
+

Attributes

+ + +
+ + + + +
+ marker[RW] +
+ +
+ +

Public: Get/Set the String used to mark this list item

+ +
+
+ +
+ + + + +
+

Public Class Methods

+ + +
+ + + +
+ new(parent, text = nil) + click to toggle source +
+ + +
+ +

Public: Initialize an Asciidoctor::ListItem +object.

+ +

parent - The parent list block for this list item text - the String text +(default nil)

+ + + +
+
+# File lib/asciidoctor/list_item.rb, line 11
+def initialize(parent, text = nil)
+  super(parent, :list_item)
+  @text = text
+  @level = parent.level
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ content() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/list_item.rb, line 26
+def content
+  blocks? ? blocks.map {|b| b.render }.join : nil
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ fold_first(continuation_connects_first_block = false, content_adjacent = false) + click to toggle source +
+ + +
+ +

Public: Fold the first paragraph block into the text

+ +

Here are the rules for when a folding occurs:

+ +

Given: this list item has at least one block When: the first block is a +paragraph that’s not connected by a list continuation Or: the first block +is an indented paragraph that’s adjacent (wrapped line) Or: the first block +is an indented paragraph that’s not connected by a list continuation Then: +then drop the first block and fold it’s content (buffer) into the list text

+ +

Returns nothing

+ + + +
+
+# File lib/asciidoctor/list_item.rb, line 41
+def fold_first(continuation_connects_first_block = false, content_adjacent = false)
+  if !blocks.empty? && blocks.first.is_a?(Asciidoctor::Block) &&
+      ((blocks.first.context == :paragraph && !continuation_connects_first_block) ||
+      ((content_adjacent || !continuation_connects_first_block) && blocks.first.context == :literal &&
+          blocks.first.attr('options', []).include?('listparagraph')))
+
+    block = blocks.shift
+    unless @text.to_s.empty?
+      block.buffer.unshift(@text)
+    end
+
+    @text = block.buffer.join("\n")
+  end
+  nil
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ splain(parent_level = 0) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/list_item.rb, line 57
+def splain(parent_level = 0)
+  parent_level += 1
+  Asciidoctor.puts_indented(parent_level, "List Item anchor: #{@anchor}") unless @anchor.nil?
+  Asciidoctor.puts_indented(parent_level, "Text: #{@text}") unless @text.nil?
+
+  Asciidoctor.puts_indented(parent_level, "Blocks: #{@blocks.count}")
+
+  if @blocks.any?
+    Asciidoctor.puts_indented(parent_level, "Blocks content (#{@blocks.count}):")
+    @blocks.each_with_index do |block, i|
+      Asciidoctor.puts_indented(parent_level, "v" * (60 - parent_level*2))
+      Asciidoctor.puts_indented(parent_level, "Block ##{i} is a #{block.class}")
+      Asciidoctor.puts_indented(parent_level, "Name is #{block.title rescue 'n/a'}")
+      Asciidoctor.puts_indented(parent_level, "=" * 40)
+      block.splain(parent_level) if block.respond_to? :splain
+      Asciidoctor.puts_indented(parent_level, "^" * (60 - parent_level*2))
+    end
+  end
+  nil
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ text() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/list_item.rb, line 21
+def text
+  # this will allow the text to be processed
+  ::Asciidoctor::Block.new(self, nil, [@text]).content
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ text?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/list_item.rb, line 17
+def text?
+  !@text.to_s.empty?
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ to_s() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/list_item.rb, line 78
+def to_s
+  "#{super.to_s} - #@context [text:#@text, blocks:#{(@blocks || []).size}]"
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/ProjectError.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/ProjectError.html new file mode 100644 index 00000000..3115206b --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/ProjectError.html @@ -0,0 +1,287 @@ + + + + + + + Class: Asciidoctor::ProjectError + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::ProjectError

+ +
+ +
+ + + + +
+ + + + + + + + + + +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Reader.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Reader.html new file mode 100644 index 00000000..d151de10 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Reader.html @@ -0,0 +1,1329 @@ + + + + + + + Class: Asciidoctor::Reader + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + + + + + + +
+

Included Modules

+ +
+ +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::Reader

+ +
+ +

Public: Methods for retrieving lines from Asciidoc documents

+ +
+ + + + +
+ + + + + + + + +
+

Attributes

+ + +
+ + +
+ lines[R] +
+ +
+ +

Public: Get the String Array of lines parsed from the source

+ +
+
+ +
+ + +
+ source[R] +
+ +
+ +

Public: Get the String document source.

+ +
+
+ +
+ + + + +
+

Public Class Methods

+ + +
+ + + +
+ new(data = [], document = nil, overrides = nil, &block) + click to toggle source +
+ + +
+ +

Public: Initialize the Reader object.

+ +

data - The Array of Strings holding the Asciidoc source document. The

+ +
original instance of this Array is not modified
+ +

document - The document with which this reader is associated. Used to +access

+ +
document attributes
+ +

overrides - A Hash of attributes that were passed to the Document and should

+ +
prevent attribute assignments or removals of matching keys found in
+the document
+ +

block - A block that can be used to retrieve external Asciidoc

+ +
data to include in this document.
+ +

Examples

+ +
data   = File.readlines(filename)
+reader = Asciidoctor::Reader.new data
+ + + +
+
+# File lib/asciidoctor/reader.rb, line 28
+def initialize(data = [], document = nil, overrides = nil, &block)
+  # if document is nil, we assume this is a preprocessed string
+  if document.nil?
+    @lines = data.is_a?(String) ? data.lines.entries : data.dup
+  elsif !data.empty?
+    @overrides = overrides || {}
+    @document = document
+    process(data.is_a?(String) ? data.lines.entries : data, &block)
+  else
+    @lines = []
+  end
+
+  # just in case we got some nils floating at the end of our lines after reading a funky document
+  @lines.pop until @lines.empty? || !@lines.last.nil?
+
+  @source = @lines.join
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ apply_attribute_value_subs(value) + click to toggle source +
+ + +
+ +

Internal: Apply substitutions to the attribute value

+ +

If the value is an inline passthrough macro (e.g., pass:), then apply the substitutions defined on the +macro to the text. Otherwise, apply the verbatim substitutions to the +value.

+ +

value - The String attribute value on which to perform substitutions

+ +

Returns The String value with substitutions performed.

+ + + +
+
+# File lib/asciidoctor/reader.rb, line 399
+def apply_attribute_value_subs(value)
+  if value.match(REGEXP[:pass_macro_basic])
+    # copy match for Ruby 1.8.7 compat
+    m = $~
+    subs = []
+    if !m[1].empty?
+      subs = @document.resolve_subs(m[1])
+    end
+    if !subs.empty?
+      @document.apply_subs(m[2], subs)
+    else
+      m[2]
+    end
+  else
+    @document.apply_header_subs(value)
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ attribute_overridden?(key) + click to toggle source +
+ + +
+ +

Internal: Determine if the attribute has been overridden in the document +options

+ +

key - The attribute key to check

+ +

Returns true if the attribute has been overridden, false otherwise

+ + + +
+
+# File lib/asciidoctor/reader.rb, line 386
+def attribute_overridden?(key)
+  @overrides.has_key?(key) || @overrides.has_key?(key + '!')
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ chomp_last!() + click to toggle source +
+ + +
+ +

Public: Chomp the String on the last line if this reader contains at least +one line

+ +

Delegates to chomp!

+ +

Returns nil

+ + + +
+
+# File lib/asciidoctor/reader.rb, line 189
+def chomp_last!
+  @lines.last.chomp! unless @lines.empty?
+  nil
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ consume_comments(opts = {}) + click to toggle source +
+ + +
+ +

Public: Consume consecutive lines containing line- or block-level comments.

+ +

Returns the Array of lines that were consumed

+ +

Examples

+ +
@lines
+=> ["// foo\n", "////\n", "foo bar\n", "////\n", "actual text\n"]
+
+comment_lines = consume_comments
+=> ["// foo\n", "////\n", "foo bar\n", "////\n"]
+
+@lines
+=> ["actual text\n"]
+ + + +
+
+# File lib/asciidoctor/reader.rb, line 100
+def consume_comments(opts = {})
+  comment_lines = []
+  while !@lines.empty?
+    next_line = peek_line
+    if opts[:include_blanks] && next_line.strip.empty?
+      comment_lines << get_line
+    elsif match = next_line.match(REGEXP[:comment_blk])
+      comment_lines << get_line
+      comment_lines.push(*(grab_lines_until(:terminator => match[0], :preserve_last_line => true)))
+      comment_lines << get_line
+    elsif next_line.match(REGEXP[:comment])
+      comment_lines << get_line
+    else
+      break
+    end
+  end
+
+  comment_lines
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ consume_line_comments() + click to toggle source +
+ + +
+ +

Public: Consume consecutive lines containing line comments.

+ +

Returns the Array of lines that were consumed

+ +

Examples

+ +
@lines
+=> ["// foo\n", "bar\n"]
+
+comment_lines = consume_comments
+=> ["// foo\n"]
+
+@lines
+=> ["bar\n"]
+ + + +
+
+# File lib/asciidoctor/reader.rb, line 133
+def consume_line_comments
+  comment_lines = []
+  while !@lines.empty?
+    if peek_line.match(REGEXP[:comment])
+      comment_lines << get_line
+    else
+      break
+    end
+  end
+
+  comment_lines
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ empty?() + click to toggle source +
+ + +
+ +

Public: Check whether this reader is empty (contains no lines)

+ +

Returns true if @lines.empty? is true, otherwise false.

+ + + +
+
+# File lib/asciidoctor/reader.rb, line 56
+def empty?
+  @lines.empty?
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ get_line() + click to toggle source +
+ + +
+ +

Public: Get the next line of source data. Consumes the line returned.

+ +

Returns the String of the next line of the source data if data is present. +Returns nil if there is no more data.

+ + + +
+
+# File lib/asciidoctor/reader.rb, line 161
+def get_line
+  @lines.shift
+end
+
+ +
+ + +
+ Also aliased as: next_line +
+ + + +
+ + +
+ + + +
+ grab_lines_until(options = {}, &block) + click to toggle source +
+ + +
+ +

Public: Return all the lines from `@lines` until we (1) run out them,

+ +
(2) find a blank line with :break_on_blank_lines => true, or (3) find
+a line for which the given block evals to true.
+ +

options - an optional Hash of processing options:

+ +
* :break_on_blank_lines may be used to specify to break on
+    blank lines
+* :skip_first_line may be used to tell the reader to advance
+    beyond the first line before beginning the scan
+* :preserve_last_line may be used to specify that the String
+    causing the method to stop processing lines should be
+    pushed back onto the `lines` Array.
+* :grab_last_line may be used to specify that the String
+    causing the method to stop processing lines should be
+    included in the lines being returned
+ +

Returns the Array of lines forming the next segment.

+ +

Examples

+ +
reader = Reader.new ["First paragraph\n", "Second paragraph\n",
+                     "Open block\n", "\n", "Can have blank lines\n",
+                     "--\n", "\n", "In a different segment\n"]
+
+reader.grab_lines_until
+=> ["First paragraph\n", "Second paragraph\n", "Open block\n"]
+ + + +
+
+# File lib/asciidoctor/reader.rb, line 220
+def grab_lines_until(options = {}, &block)
+  buffer = []
+
+  finis = false
+  get_line if options[:skip_first_line]
+  # save options to locals for minor optimization
+  terminator = options[:terminator]
+  terminator.chomp! if terminator
+  break_on_blank_lines = options[:break_on_blank_lines]
+  break_on_list_continuation = options[:break_on_list_continuation]
+  while (this_line = self.get_line)
+    Asciidoctor.debug { "Reader processing line: '#{this_line}'" }
+    finis = true if terminator && this_line.chomp == terminator
+    finis = true if !finis && break_on_blank_lines && this_line.strip.empty?
+    finis = true if !finis && break_on_list_continuation && this_line.chomp == LIST_CONTINUATION
+    finis = true if !finis && block && yield(this_line)
+    if finis
+      self.unshift(this_line) if options[:preserve_last_line]
+      buffer << this_line if options[:grab_last_line]
+      break
+    end
+
+    if options[:skip_line_comments] && this_line.match(REGEXP[:comment])
+      # skip it
+    else
+      buffer << this_line
+    end
+  end
+
+  buffer
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ has_lines?() + click to toggle source +
+ + +
+ +

Public: Check whether there are any lines left to read.

+ +

Returns true if !@lines.empty? is true, or false otherwise.

+ + + +
+
+# File lib/asciidoctor/reader.rb, line 49
+def has_lines?
+  !@lines.empty?
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ next_line() + click to toggle source +
+ + +
+ +

QUESTION what about advance? Create an alias of get_line named next_line for readability

+ + + +
+ + + + +
+ Alias for: get_line +
+ +
+ + +
+ + + +
+ peek_line() + click to toggle source +
+ + +
+ +

Public: Get the next line of source data. Does not consume the line +returned.

+ +

Returns a String dup of the next line of the source data if data is +present. Returns nil if there is no more data.

+ + + +
+
+# File lib/asciidoctor/reader.rb, line 172
+def peek_line
+  @lines.first.dup if @lines.first
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ process(data, &block) + click to toggle source +
+ + +
+ +

Private: Process raw input, used for the outermost reader.

+ + + +
+
+# File lib/asciidoctor/reader.rb, line 273
+def process(data, &block)
+  raw_source = []
+  include_depth = @document.attr('include-depth', 0).to_i
+
+  data.each do |line|
+    if inc = line.match(REGEXP[:include_macro])
+      if inc[0].start_with? '\'
+        raw_source << line[1..-1]
+      # if running in SafeMode::SECURE or greater, don't process
+      # this directive (or should we swallow it?)
+      elsif @document.safe >= SafeMode::SECURE
+        raw_source << line
+      # assume that if a block is given, the developer wants
+      # to handle when and how to process the include, even
+      # if the include-depth attribute is 0
+      elsif block_given?
+        raw_source.concat yield(inc[1])
+      elsif include_depth > 0
+        raw_source.concat File.readlines(@document.normalize_asset_path(inc[1], 'include file'))
+      else
+        raw_source << line
+      end
+    else
+      raw_source << line
+    end
+  end
+
+  skip_to = nil
+  continuing_value = nil
+  continuing_key = nil
+  @lines = []
+
+  raw_source.each do |line|
+    if skip_to
+      skip_to = nil if line.match(skip_to)
+    elsif continuing_value
+      close_continue = false
+      # Lines that start with whitespace and end with a '+' are
+      # a continuation, so gobble them up into `value`
+      if line.match(REGEXP[:attr_continue])
+        continuing_value += ' ' + $1
+      # An empty line ends a continuation
+      elsif line.strip.empty?
+        raw_source.unshift(line)
+        close_continue = true
+      else
+        # If this continued line isn't empty and doesn't end with a +, then
+        # this is the end of the continuation, no matter what the next line
+        # does.
+        continuing_value += ' ' + line.strip
+        close_continue = true
+      end
+      if close_continue
+        unless attribute_overridden? continuing_key
+          @document.attributes[continuing_key] = apply_attribute_value_subs(continuing_value)
+        end
+        continuing_key = nil
+        continuing_value = nil
+      end
+    elsif line.match(REGEXP[:ifdef_macro])
+      attr = $2
+      skip = case $1
+             when 'ifdef';  !@document.attributes.has_key?(attr)
+             when 'ifndef'; @document.attributes.has_key?(attr)
+             end
+      skip_to = /^endif::#{attr}\[\]\s*\n/ if skip
+    elsif line.match(REGEXP[:attr_assign])
+      key = sanitize_attribute_name($1)
+      value = $2
+      if value.match(REGEXP[:attr_continue])
+        # attribute value continuation line; grab lines until we run out
+        # of continuation lines
+        continuing_key = key
+        continuing_value = $1  # strip off the spaces and +
+      else
+        unless attribute_overridden? key
+          @document.attributes[key] = apply_attribute_value_subs(value)
+          if key == 'backend'
+            @document.update_backend_attributes()
+          end
+        end
+      end
+    elsif line.match(REGEXP[:attr_delete])
+      key = sanitize_attribute_name($1)
+      unless attribute_overridden? key
+        @document.attributes.delete(key)
+      end
+    elsif !line.match(REGEXP[:endif_macro])
+      while line.match(REGEXP[:attr_conditional])
+        value = @document.attributes.has_key?($1) ? $2 : ''
+        line.sub!(conditional_regexp, value)
+      end
+      # leave line comments in as they play a role in flow (such as a list divider)
+      @lines << line
+    end
+  end
+
+  # Process bibliography references, so they're available when text
+  # before the reference is being rendered.
+  # FIXME we don't have support for bibliography lists yet, so disable for now
+  # plus, this should be done while we are walking lines above
+  #@lines.each do |line|
+  #  if biblio = line.match(REGEXP[:biblio])
+  #    @document.register(:ids, biblio[1])
+  #  end
+  #end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ sanitize_attribute_name(name) + click to toggle source +
+ + +
+ +

Public: Convert a string to a legal attribute name.

+ +

name - The String holding the Asciidoc attribute name.

+ +

Returns a String with the legal name.

+ +

Examples

+ +
sanitize_attribute_name('Foo Bar')
+=> 'foobar'
+
+sanitize_attribute_name('foo')
+=> 'foo'
+
+sanitize_attribute_name('Foo 3 #-Billy')
+=> 'foo3-billy'
+ + + +
+
+# File lib/asciidoctor/reader.rb, line 268
+def sanitize_attribute_name(name)
+  name.gsub(/[^\w\-]/, '').downcase
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ skip_blank() + click to toggle source +
+ + +
+ +

Private: Strip off leading blank lines in the Array of lines.

+ +

Examples

+ +
@lines
+=> ["\n", "\t\n", "Foo\n", "Bar\n", "\n"]
+
+skip_blank
+=> 2
+
+@lines
+=> ["Foo\n", "Bar\n"]
+ +

Returns an Integer of the number of lines skipped

+ + + +
+
+# File lib/asciidoctor/reader.rb, line 74
+def skip_blank
+  skipped = 0
+  while has_lines? && @lines.first.strip.empty?
+    @lines.shift
+    skipped += 1
+  end
+
+  skipped
+end
+
+ +
+ + +
+ Also aliased as: skip_blank_lines +
+ + + +
+ + +
+ + + +
+ skip_blank_lines() + click to toggle source +
+ + +
+ +

Create alias of skip_blank +named skip_blank_lines +for readability TODO likely want to drop the original method name

+ + + +
+ + + + +
+ Alias for: skip_blank +
+ +
+ + +
+ + + +
+ skip_list_continuation() + click to toggle source +
+ + +
+ +

Skip the next line if it’s a list continuation character

+ +

Returns nil

+ + + +
+
+# File lib/asciidoctor/reader.rb, line 149
+def skip_list_continuation
+  if has_lines? && @lines.first.chomp == '+'
+    @lines.shift
+  end
+
+  nil
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ unshift(*new_lines) + click to toggle source +
+ + +
+ +

Public: Push Array of string `lines` onto queue of source data lines, +unless `lines` has no non-nil values.

+ +

Returns nil

+ + + +
+
+# File lib/asciidoctor/reader.rb, line 179
+def unshift(*new_lines)
+  @lines.unshift(*new_lines) if !new_lines.empty?
+  nil
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Renderer.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Renderer.html new file mode 100644 index 00000000..b833fc8f --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Renderer.html @@ -0,0 +1,691 @@ + + + + + + + Class: Asciidoctor::Renderer + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + + + + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::Renderer

+ +
+ +

Public: Methods for rendering Asciidoc Documents, Sections, and Blocks +using eRuby templates.

+ +
+ + + + +
+ + + + + + + + +
+

Attributes

+ + +
+ + +
+ compact[R] +
+ +
+ + + +
+
+ +
+ + + + +
+

Public Class Methods

+ + +
+ + + +
+ camelcase_to_underscore(str) + click to toggle source +
+ + +
+ +

Internal: Convert a CamelCase word to an underscore-delimited word

+ +

Examples

+ +
Renderer.camelcase_to_underscore('BlockSidebar')
+# => 'block_sidebar'
+
+Renderer.camelcase_to_underscore('BlockUlist')
+# => 'block_ulist'
+ +

Returns the String converted from CamelCase to underscore-delimited

+ + + +
+
+# File lib/asciidoctor/renderer.rb, line 173
+def self.camelcase_to_underscore(str)
+  str.gsub(/([[:upper:]]+)([[:upper:]][[:alpha:]])/, '\1_\2').
+      gsub(/([[:lower:]])([[:upper:]])/, '\1_\2').downcase
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ extract_view_mapping(qualified_class) + click to toggle source +
+ + +
+ +

Internal: Extracts the view name and backend from a qualified Ruby class

+ +

The purpose of this method is to determine the view name and backend to +which a built-in template class maps. We can make certain assumption since

+ +

we have control over these class names. The Asciidoctor

+

prefix and

+
+ +

Template suffix are stripped as the first step in the conversion.

+ +

qualified_class - The Class or String qualified class name from which to +extract the view name and backend

+ +

Examples

+ +
Renderer.extract_view_mapping(Asciidoctor::HTML5::DocumentTemplate)
+# => ['document', 'html5']
+
+Renderer.extract_view_mapping(Asciidoctor::DocBook45::BlockSidebarTemplate)
+# => ['block_sidebar', 'docbook45']
+ +

Returns A two-element String Array mapped as [view_name, backend], where +backend may be nil

+ + + +
+
+# File lib/asciidoctor/renderer.rb, line 152
+def self.extract_view_mapping(qualified_class)
+  view_name, backend = qualified_class.to_s.
+      gsub(/^Asciidoctor::/, '').
+      gsub(/Template$/, '').
+      split('::').reverse
+  view_name = camelcase_to_underscore(view_name)
+  backend = backend.downcase unless backend.nil?
+  [view_name, backend]
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ new(options={}) + click to toggle source +
+ + +
+ +

Public: Initialize an Asciidoctor::Renderer +object.

+ + + +
+
+# File lib/asciidoctor/renderer.rb, line 8
+def initialize(options={})
+  @debug = !!options[:debug]
+
+  @views = {}
+  @compact = options[:compact]
+
+  backend = options[:backend]
+  case backend
+  when 'html5', 'docbook45'
+    eruby = load_eruby options[:eruby]
+    #Asciidoctor.require_library 'asciidoctor/backends/' + backend
+    require 'asciidoctor/backends/' + backend
+    # Load up all the template classes that we know how to render for this backend
+    Asciidoctor::BaseTemplate.template_classes.each do |tc|
+      if tc.to_s.downcase.include?('::' + backend + '::') # optimization
+        view_name, view_backend = self.class.extract_view_mapping(tc)
+        if view_backend == backend
+          @views[view_name] = tc.new(view_name, eruby)
+        end
+      end
+    end
+  else
+    Asciidoctor.debug { "No built-in templates for backend: #{backend}" }
+  end
+
+  # If user passed in a template dir, let them override our base templates
+  if template_dir = options.delete(:template_dir)
+    Asciidoctor.require_library 'tilt'
+
+    Asciidoctor.debug {
+      msg = []
+      msg << "Views going in are like so:"
+      msg << @views.map {|k, v| "#{k}: #{v}"}
+      msg << '=' * 60
+      msg * "\n"
+    }
+    
+    # Grab the files in the top level of the directory (we're not traversing)
+    files = Dir.glob(File.join(template_dir, '*')).select{|f| File.stat(f).file?}
+    files.inject(@views) do |view_hash, view|
+      name = File.basename(view).split('.').first
+      view_hash.merge!(name => Tilt.new(view, nil, :trim => '<>', :attr_wrapper => '"'))
+    end
+
+    Asciidoctor.debug {
+      msg = []
+      msg << "Views going in are like so:"
+      msg << @views.map {|k, v| "#{k}: #{v}"}
+      msg << '=' * 60
+      msg * "\n"
+    }
+  end
+
+  @render_stack = []
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ load_eruby(name) + click to toggle source +
+ + +
+ +

Internal: Load the eRuby implementation

+ +

name - the String name of the eRuby implementation (default: ‘erb’)

+ +

returns the eRuby implementation class

+ + + +
+
+# File lib/asciidoctor/renderer.rb, line 120
+def load_eruby(name)
+  if name.nil? || !['erb', 'erubis'].include?(name)
+    name = 'erb'
+  end
+
+  Asciidoctor.require_library name
+
+  if name == 'erb'
+    ::ERB
+  elsif name == 'erubis'
+    ::Erubis::FastEruby
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ render(view, object, locals = {}) + click to toggle source +
+ + +
+ +

Public: Render an Asciidoc object with a specified view template.

+ +

view - the String view template name. object - the Object to be used as +an evaluation scope. locals - the optional Hash of locals to be passed to +Tilt (default {}) (also ignored, really)

+ + + +
+
+# File lib/asciidoctor/renderer.rb, line 69
+def render(view, object, locals = {})
+  @render_stack.push([view, object])
+
+  if !@views.has_key? view
+    raise "Couldn't find a view in @views for #{view}"
+  else
+    Asciidoctor.debug { "View for #{view} is #{@views[view]}, object is #{object}" }
+  end
+  
+  ret = @views[view].render(object, locals)
+
+  if @debug
+    prefix = ''
+    STDERR.puts '=' * 80
+    STDERR.puts "Rendering:"
+    @render_stack.each do |stack_view, stack_obj|
+      obj_info = case stack_obj
+                 when Asciidoctor::Section; "SECTION #{stack_obj.title}"
+                 when Asciidoctor::Block;
+                   if stack_obj.context == :dlist
+                     dt_list = stack_obj.buffer.map{|dt,dd| dt.content.strip}.join(', ')
+                     "BLOCK :dlist (#{dt_list})"
+                   #else
+                   #  "BLOCK #{stack_obj.context.inspect}"
+                   end
+                 else stack_obj.class
+                 end
+      STDERR.puts "#{prefix}#{stack_view}: #{obj_info}"
+      prefix << '  '
+    end
+    STDERR.puts '-' * 80
+    #STDERR.puts ret.inspect
+    STDERR.puts '=' * 80
+    STDERR.puts
+  end
+
+  @render_stack.pop
+  ret
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ views() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/renderer.rb, line 109
+def views
+  readonly_views = @views.dup
+  readonly_views.freeze
+  readonly_views
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/SafeMode.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/SafeMode.html new file mode 100644 index 00000000..5a3ac700 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/SafeMode.html @@ -0,0 +1,314 @@ + + + + + + + Module: Asciidoctor::SafeMode + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+
+ +
+
+ + +
+ +
+ + + + + + + + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::SafeMode

+ +
+ +
+ + + + +
+ + + + + + +
+

Constants

+
+ +
SAFE
+ +

A safe mode level that closely parallels safe mode in AsciiDoc. This value +prevents access to files which reside outside of the parent directory of +the source file and disables any macro other than the include::[] macro.

+ + +
SECURE
+ +

A safe mode level that disallows the document from attempting to read files +from the file system and including the contents of them into the document. +This value disallows use of the include::[] macro and the embedding of +binary content (data uri), stylesheets and JavaScripts referenced by the +document. (Asciidoctor and trusted +extensions may still be allowed to embed trusted content into the +document). Since Asciidoctor is aiming +for wide adoption, this value is the default and is recommended for +server-side deployments.

+ + +
UNSAFE
+ +

A safe mode level that disables any of the security features enforced by Asciidoctor (Ruby is still subject to its +own restrictions).

+ + +
+
+ + + + + + +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Section.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Section.html new file mode 100644 index 00000000..7560cc09 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Section.html @@ -0,0 +1,671 @@ + + + + + + + Class: Asciidoctor::Section + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::Section

+ +
+ +

Public: Methods for managing sections of AsciiDoc content in a document. +The section responds as an Array of content blocks by delegating +block-related methods to its @blocks Array.

+ +

Examples

+ +
section = Asciidoctor::Section.new
+section.title = 'Section 1'
+section.id = 'sect1'
+
+section.size
+=> 0
+
+section.id
+=> "sect1"
+
+section << new_block
+section.size
+=> 1
+ +
+ + + + +
+ + + + + + + + +
+

Attributes

+ + +
+ + + + +
+ index[RW] +
+ +
+ +

Public: Get/Set the Integer index of this section within the parent block

+ +
+
+ +
+ + + + +
+

Public Class Methods

+ + +
+ + + +
+ new(parent = nil, level = nil) + click to toggle source +
+ + +
+ +

Public: Initialize an Asciidoctor::Section +object.

+ +

parent - The parent Asciidoc Object.

+ + + +
+
+# File lib/asciidoctor/section.rb, line 28
+def initialize(parent = nil, level = nil)
+  super(parent, :section)
+  if level.nil? && !parent.nil?
+    @level = parent.level + 1
+  end
+  @index = 0
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ content() + click to toggle source +
+ + +
+ +

Public: Get the String section content by aggregating rendered section +blocks.

+ +

Examples

+ +
section = Section.new
+section << 'foo'
+section << 'bar'
+section << 'baz'
+section.content
+"<div class=\"paragraph\"><p>foo</p></div>\n<div class=\"paragraph\"><p>bar</p></div>\n<div class=\"paragraph\"><p>baz</p></div>"
+ + + +
+
+# File lib/asciidoctor/section.rb, line 94
+def content
+  @blocks.map {|b| b.render }.join
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ generate_id() + click to toggle source +
+ + +
+ +

Public: Generate a String id for this section.

+ +

The generated id is prefixed with value of the ‘idprefix’ attribute, which +is an underscore by default.

+ +

Section id synthesis can be disabled by +undefining the 'sectids' attribute.

+ +

If the generated id is already in use in the document, a count is appended +until a unique id is found.

+ +

Examples

+ +
section = Section.new(parent)
+section.title = "Foo"
+section.generate_id
+=> "_foo"
+
+another_section = Section.new(parent)
+another_section.title = "Foo"
+another_section.generate_id
+=> "_foo_1"
+ + + +
+
+# File lib/asciidoctor/section.rb, line 60
+def generate_id
+  if @document.attr?('sectids')
+    base_id = @document.attr('idprefix', '_') + title.downcase.gsub(/&#[0-9]+;/, '_').
+        gsub(/\W+/, '_').tr_s('_', '_').gsub(/^_?(.*?)_?$/, '\1')
+    gen_id = base_id
+    cnt = 2
+    while @document.references[:ids].has_key? gen_id 
+      gen_id = "#{base_id}_#{cnt}" 
+      cnt += 1
+    end 
+    @document.references[:ids][gen_id] = title
+    gen_id
+  else
+    nil
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ render() + click to toggle source +
+ + +
+ +

Public: Get the rendered String content for this Section and all its child Blocks.

+ + + +
+
+# File lib/asciidoctor/section.rb, line 79
+def render
+  Asciidoctor.debug { "Now rendering section for #{self}" }
+  renderer.render('section', self)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ sectnum(delimiter = '.', append = nil) + click to toggle source +
+ + +
+ +

Public: Get the section number for the current Section

+ +

The section number is a unique, dot separated String where each entry +represents one level of nesting and the value of each entry is the 1-based +index of the Section amongst its sibling +Sections

+ +

delimiter - the delimiter to separate the number for each level append - +the String to append at the end of the section number

+ +
or Boolean to indicate the delimiter should not be
+appended to the final level
+(default: nil)
+ +

Examples

+ +
sect1 = Section.new(document)
+sect1.level = 1
+sect1_1 = Section.new(sect1)
+sect1_1.level = 2
+sect1_2 = Section.new(sect1)
+sect1_2.level = 2
+sect1 << sect1_1
+sect1 << sect1_2
+sect1_1_1 = Section.new(sect1_1)
+sect1_1_1.level = 3
+sect1_1 << sect1_1_1
+
+sect1.sectnum
+# => 1.
+
+sect1_1.sectnum
+# => 1.1.
+
+sect1_2.sectnum
+# => 1.2.
+
+sect1_1_1.sectnum
+# => 1.1.1.
+
+sect1_1_1.sectnum(',', false)
+# => 1,1,1
+ +

Returns the section number as a String

+ + + +
+
+# File lib/asciidoctor/section.rb, line 141
+def sectnum(delimiter = '.', append = nil)
+  append ||= (append == false ? '' : delimiter)
+  if !@level.nil? && @level > 1 && @parent.is_a?(::Asciidoctor::Section)
+    "#{@parent.sectnum(delimiter)}#{@index + 1}#{append}"
+  else
+    "#{@index + 1}#{append}"
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ to_s() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/section.rb, line 150
+def to_s
+  if @title
+    if @level && @index
+      %[#{super.to_s} - #{sectnum} #@title [blocks:#{@blocks.size}]]
+    else
+      %[#{super.to_s} - #@title [blocks:#{@blocks.size}]]
+    end
+  else
+    super.to_s
+  end
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Substituters.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Substituters.html new file mode 100644 index 00000000..265b62e9 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Substituters.html @@ -0,0 +1,1364 @@ + + + + + + + Module: Asciidoctor::Substituters + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ + + +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::Substituters

+ +
+ +
+ + + + +
+ + + + + + +
+

Constants

+
+ +
COMPOSITE_SUBS
+ +
+ + +
SUB_OPTIONS
+ +
+ + +
+
+ + + + +
+

Attributes

+ + +
+ + +
+ passthroughs[R] +
+ +
+ +

Internal: A String Array of passthough (unprocessed) text captured from +this block

+ +
+
+ +
+ + + + +
+

Public Instance Methods

+ + +
+ + + +
+ apply_header_subs(text) + click to toggle source +
+ + +
+ +

Public: Apply substitutions for header metadata and attribute assignments

+ +

text - String containing the text process

+ +

returns - A String with header substitutions performed

+ + + +
+
+# File lib/asciidoctor/substituters.rb, line 108
+def apply_header_subs(text)
+  apply_subs(text, [:specialcharacters, :attributes])
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ apply_literal_subs(lines) + click to toggle source +
+ + +
+ +

Public: Apply substitutions for titles

+ +

lines - A String Array containing the lines of text process

+ +

returns - A String with literal (verbatim) substitutions performed

+ + + +
+
+# File lib/asciidoctor/substituters.rb, line 94
+def apply_literal_subs(lines)
+  if @document.attr('basebackend') == 'html' && attr('style') == 'source' &&
+    @document.attr('source-highlighter') == 'coderay' && attr?('language')
+    sub_callouts(highlight_source(lines.join))
+  else
+    apply_subs(lines.join, COMPOSITE_SUBS[:verbatim])
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ apply_normal_subs(lines) + click to toggle source +
+ + +
+ +

Public: Apply normal substitutions.

+ +

lines - The lines of text to process. Can be a String or a String Array

+ +

returns - A String with normal substitutions performed

+ + + +
+
+# File lib/asciidoctor/substituters.rb, line 76
+def apply_normal_subs(lines)
+  apply_subs(lines.is_a?(Array) ? lines.join : lines)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ apply_passthrough_subs(lines) + click to toggle source +
+ + +
+ +

Public: Apply substitutions for passthrough text

+ +

lines - A String Array containing the lines of text process

+ +

returns - A String Array with passthrough substitutions performed

+ + + +
+
+# File lib/asciidoctor/substituters.rb, line 117
+def apply_passthrough_subs(lines)
+  if attr? 'subs'
+    subs = resolve_subs(attr('subs'))
+  else
+    subs = [:attributes, :macros]
+  end
+  apply_subs(lines.join, subs)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ apply_subs(lines, subs = COMPOSITE_SUBS[:normal]) + click to toggle source +
+ + +
+ +

Public: Apply the specified substitutions to the lines of text

+ +

lines - The lines of text to process. Can be a String or a String Array +subs - The substitutions to perform. Can be a Symbol or a Symbol Array +(default: COMPOSITE_SUBS)

+ +

returns Either a String or String Array, whichever matches the type of the +first argument

+ + + +
+
+# File lib/asciidoctor/substituters.rb, line 24
+def apply_subs(lines, subs = COMPOSITE_SUBS[:normal])
+  if subs.nil?
+    subs = []
+  elsif subs.is_a? Symbol
+    subs = [subs]
+  end
+
+  if !subs.empty?
+    # QUESTION is this most efficient operation?
+    subs = subs.map {|key|
+      COMPOSITE_SUBS.has_key?(key) ? COMPOSITE_SUBS[key] : key
+    }.flatten
+  end
+
+  return lines if subs.empty?
+
+  multiline = lines.is_a?(Array)
+  text = multiline ? lines.join : lines
+
+  passthroughs = subs.include?(:macros)
+  text = extract_passthroughs(text) if passthroughs
+  
+  subs.each {|type|
+    case type
+    when :specialcharacters
+      text = sub_specialcharacters(text)
+    when :quotes
+      text = sub_quotes(text)
+    when :attributes
+      text = sub_attributes(text.lines.entries).join
+    when :replacements
+      text = sub_replacements(text)
+    when :macros
+      text = sub_macros(text)
+    when :callouts
+      text = sub_callouts(text)
+    when :post_replacements
+      text = sub_post_replacements(text)
+    else
+      puts "asciidoctor: WARNING: unknown substitution type #{type}"
+    end
+  }
+  text = restore_passthroughs(text) if passthroughs
+
+  multiline ? text.lines.entries : text
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ apply_title_subs(title) + click to toggle source +
+ + +
+ +

Public: Apply substitutions for titles.

+ +

title - The String title to process

+ +

returns - A String with title substitutions performed

+ + + +
+
+# File lib/asciidoctor/substituters.rb, line 85
+def apply_title_subs(title)
+  apply_subs(title, [:specialcharacters, :quotes, :replacements, :macros, :attributes, :post_replacements])
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ extract_passthroughs(text) + click to toggle source +
+ + +
+ +

Internal: Extract the passthrough text from the document for reinsertion +after processing.

+ +

text - The String from which to extract passthrough fragements

+ +

returns - The text with the passthrough region substituted with +placeholders

+ + + +
+
+# File lib/asciidoctor/substituters.rb, line 131
+def extract_passthroughs(text)
+  result = text.dup
+
+  result.gsub!(REGEXP[:pass_macro]) {
+    # alias match for Ruby 1.8.7 compat
+    m = $~
+    # honor the escape
+    if m[0].start_with? '\'
+      next m[0][1..-1]
+    end
+
+    if m[1] == '$$'
+      subs = [:specialcharacters]
+    elsif !m[3].nil? && !m[3].empty?
+      subs = resolve_subs(m[3])
+    else
+      subs = []
+    end
+
+    @passthroughs << {:text => m[2] || m[4].gsub('\]', ']'), :subs => subs}
+    index = @passthroughs.size - 1
+    "\x0##{index}\x0""
+  } unless !(result.include?('+++') || result.include?('$$') || result.include?('pass:'))
+
+  result.gsub!(REGEXP[:pass_lit]) {
+    # alias match for Ruby 1.8.7 compat
+    m = $~
+
+    # honor the escape
+    if m[2].start_with? '\'
+      next "#{m[1]}#{m[2][1..-1]}"
+    end
+    
+    @passthroughs << {:text => m[3], :subs => [:specialcharacters], :literal => true}
+    index = @passthroughs.size - 1
+    "#{m[1]}\x0##{index}\x0""
+  } unless !result.include?('`')
+
+  result
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ highlight_source(source) + click to toggle source +
+ + +
+ +

Public: Highlight the source code if a source highlighter is defined on the +document, otherwise return the text unprocessed

+ +

source - the source code String to highlight

+ +

returns the highlighted source code, if a source highlighter is defined on +the document, otherwise the unprocessed text

+ + + +
+
+# File lib/asciidoctor/substituters.rb, line 460
+def highlight_source(source)
+  Asciidoctor.require_library 'coderay'
+  ::CodeRay::Duo[attr('language', 'text').to_sym, :html, {
+      :css => @document.attr('coderay-css', 'class').to_sym,
+      :line_numbers => (attr?('linenums') ? @document.attr('coderay-linenums-mode', 'table').to_sym : nil),
+      :line_number_anchors => false}].highlight(source).chomp
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ parse_attributes(attrline, posattrs = ['role']) + click to toggle source +
+ + +
+ +

Internal: Parse the attributes in the attribute line

+ +

attrline - A String of unprocessed attributes (key/value pairs) posattrs +- The keys for positional attributes

+ +

returns nil if attrline is nil, an empty Hash if attrline is empty, +otherwise a Hash of parsed attributes

+ + + +
+
+# File lib/asciidoctor/substituters.rb, line 432
+def parse_attributes(attrline, posattrs = ['role'])
+  return nil if attrline.nil?
+  return {} if attrline.empty?
+  
+  AttributeList.new(attrline, self).parse(posattrs)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ resolve_subs(subs) + click to toggle source +
+ + +
+ +

Internal: Resolve the list of comma-delimited subs against the possible +options.

+ +

subs - A comma-delimited String of substitution aliases

+ +

returns An Array of Symbols representing the substitution operation

+ + + +
+
+# File lib/asciidoctor/substituters.rb, line 444
+def resolve_subs(subs)
+  candidates = subs.split(',').map {|sub| sub.strip.to_sym}
+  resolved = candidates & SUB_OPTIONS 
+  if (invalid = candidates - resolved).size > 0
+    puts "asciidoctor: WARNING: invalid passthrough macro substitution operation#{invalid.size > 1 ? 's' : ''}: #{invalid * ', '}"
+  end 
+  resolved
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ restore_passthroughs(text) + click to toggle source +
+ + +
+ +

Internal: Restore the passthrough text by reinserting into the placeholder +positions

+ +

text - The String text into which to restore the passthrough text

+ +

returns The String text with the passthrough text restored

+ + + +
+
+# File lib/asciidoctor/substituters.rb, line 177
+def restore_passthroughs(text)
+  return text if @passthroughs.nil? || @passthroughs.empty? || !text.include?("\x0"")
+  
+  text.gsub(REGEXP[:pass_placeholder]) {
+    pass = @passthroughs[$1.to_i];
+    text = apply_subs(pass[:text], pass.fetch(:subs, []))
+    pass[:literal] ? Inline.new(self, :quoted, text, :type => :monospaced).render : text
+  }
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ sub_attributes(data) + click to toggle source +
+ + +
+ +

Public: Substitute attribute references

+ +

Attribute references are in the format {name}.

+ +

If an attribute referenced in the line is missing, the line is dropped.

+ +

text - The String text to process

+ +

returns The String text with the attribute references replaced with +attribute values

+ + + +
+
+# File lib/asciidoctor/substituters.rb, line 243
+def sub_attributes(data)
+  return data if data.nil? || data.empty?
+
+  # normalizes data type to an array (string becomes single-element array)
+  lines = Array(data)
+
+  result = lines.map {|line|
+    reject = false
+    subject = line.dup
+    subject.gsub!(REGEXP[:attr_ref]) {
+      if !$1.empty? || !$3.empty?
+        "{#$2}"
+      elsif document.attributes.has_key? $2
+        document.attributes[$2]
+      elsif INTRINSICS.has_key? $2
+        INTRINSICS[$2]
+      else
+        Asciidoctor.debug { "Missing attribute: #$2, line marked for removal" }
+        reject = true
+        break '{undefined}'
+      end
+    } if subject.include?('{')
+
+    !reject ? subject : nil
+  }.compact
+
+  data.is_a?(String) ? result.join : result
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ sub_callouts(text) + click to toggle source +
+ + +
+ +

Public: Substitute callout references

+ +

text - The String text to process

+ +

returns The String with the callout references rendered using the backend +templates

+ + + +
+
+# File lib/asciidoctor/substituters.rb, line 388
+def sub_callouts(text)
+  text.gsub(REGEXP[:callout_render]) {
+    # alias match for Ruby 1.8.7 compat
+    m = $~
+    # honor the escape
+    if m[0].start_with? '\'
+      next "&lt;#{m[1]}&gt;"
+    end
+    Inline.new(self, :callout, m[1], :id => document.callouts.read_next_id).render
+  }
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ sub_macros(text) + click to toggle source +
+ + +
+ +

Public: Substitute inline macros (e.g., links, images, etc)

+ +

Replace inline macros, which may span multiple lines, in the provided text

+ +

text - The String text to process

+ +

returns The String with the inline macros rendered using the backend +templates

+ + + +
+
+# File lib/asciidoctor/substituters.rb, line 279
+def sub_macros(text)
+  return text if text.nil? || text.empty?
+
+  result = text.dup
+
+  # inline images, image:target.ext[Alt]
+  result.gsub!(REGEXP[:image_macro]) {
+    # alias match for Ruby 1.8.7 compat
+    m = $~
+    # honor the escape
+    if m[0].start_with? '\'
+      next m[0][1..-1]
+    end
+    target = sub_attributes(m[1])
+    @document.register(:images, target)
+    attrs = parse_attributes(m[2], ['alt', 'width', 'height'])
+    if !attrs.has_key?('alt') || attrs['alt'].empty?
+      attrs['alt'] = File.basename(target, File.extname(target))
+    end
+    Inline.new(self, :image, nil, :target => target, :attributes => attrs).render
+  } unless !result.include?('image:')
+
+  # inline urls, target[text] (optionally prefixed with link: and optionally surrounded by <>)
+  result.gsub!(REGEXP[:link_inline]) {
+    # alias match for Ruby 1.8.7 compat
+    m = $~
+    # honor the escape
+    if m[2].start_with? '\'
+      next "#{m[1]}#{m[2][1..-1]}#{m[3]}"
+    # not a valid macro syntax w/o trailing square brackets
+    # we probably shouldn't even get here...our regex is doing too much
+    elsif m[1] == 'link:' && m[3].nil?
+      next m[0]
+    end
+    prefix = (m[1] != 'link:' ? m[1] : '')
+    target = m[2]
+    # strip the <> around the link
+    if prefix.end_with? '&lt;'
+      prefix = prefix[0..-5]
+    end
+    if target.end_with? '&gt;'
+      target = target[0..-5]
+    end
+    @document.register(:links, target)
+    text = !m[3].nil? ? sub_attributes(m[3].gsub('\]', ']')) : ''
+    "#{prefix}#{Inline.new(self, :anchor, (!text.empty? ? text : target), :type => :link, :target => target).render}"
+  } unless !result.include?('http')
+
+  # inline link macros, link:target[text]
+  result.gsub!(REGEXP[:link_macro]) {
+    # alias match for Ruby 1.8.7 compat
+    m = $~
+    # honor the escape
+    if m[0].start_with? '\'
+      next m[0][1..-1]
+    end
+    target = m[1]
+    @document.register(:links, target)
+    text = sub_attributes(m[2].gsub('\]', ']'))
+    Inline.new(self, :anchor, (!text.empty? ? text : target), :type => :link, :target => target).render
+  } unless !result.include?('link:')
+
+  result.gsub!(REGEXP[:xref_macro]) {
+    # alias match for Ruby 1.8.7 compat
+    m = $~
+    # honor the escape
+    if m[0].start_with? '\'
+      next m[0][1..-1]
+    end
+    if !m[1].nil?
+      id, reftext = m[1].split(',', 2)
+      id.sub!(/^("|)(.*)\11$$/, '\2')
+      reftext.sub!(/^("|)(.*)\11$$/, '\2') unless reftext.nil?
+    else
+      id = m[2]
+      reftext = !m[3].empty? ? m[3] : nil
+    end
+    Inline.new(self, :anchor, reftext, :type => :xref, :target => id).render
+  }
+
+  result.gsub!(REGEXP[:anchor_macro]) {
+    # alias match for Ruby 1.8.7 compat
+    m = $~
+    # honor the escape
+    if m[0].start_with? '\'
+      next m[0][1..-1]
+    end
+    id, reftext = m[1].split(',')
+    id.sub!(/^("|)(.*)\11$$/, '\2')
+    if reftext.nil?
+      reftext = "[#{id}]"
+    else
+      reftext.sub!(/^("|)(.*)\11$$/, '\2')
+    end
+    # NOTE the reftext should also match what's in our references dic
+    if !@document.references[:ids].has_key? id
+      Asciidoctor.debug { "Missing reference for anchor #{id}" }
+    end
+    Inline.new(self, :anchor, reftext, :type => :ref, :target => id).render
+  } unless !result.include?('[[')
+
+  result
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ sub_post_replacements(text) + click to toggle source +
+ + +
+ +

Public: Substitute post replacements

+ +

text - The String text to process

+ +

returns The String with the post replacements rendered using the backend +templates

+ + + +
+
+# File lib/asciidoctor/substituters.rb, line 405
+def sub_post_replacements(text)
+  text.gsub(REGEXP[:line_break]) { Inline.new(self, :break, $1, :type => :line).render }
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ sub_quotes(text) + click to toggle source +
+ + +
+ +

Public: Substitute quoted text (includes emphasis, strong, monospaced, etc)

+ +

text - The String text to process

+ +

returns The String text with quoted text rendered using the backend +templates

+ + + +
+
+# File lib/asciidoctor/substituters.rb, line 206
+def sub_quotes(text)
+  result = text.dup
+
+  QUOTE_SUBS.each {|type, scope, pattern|
+    result.gsub!(pattern) { transform_quoted_text($~, type, scope) }
+  }
+  
+  result
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ sub_replacements(text) + click to toggle source +
+ + +
+ +

Public: Substitute replacement characters (e.g., copyright, trademark, etc)

+ +

text - The String text to process

+ +

returns The String text with the replacement characters substituted

+ + + +
+
+# File lib/asciidoctor/substituters.rb, line 221
+def sub_replacements(text)
+  result = text.dup
+
+  REPLACEMENTS.each {|pattern, replacement|
+    result.gsub!(pattern, replacement)
+  }
+  
+  result
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ sub_specialcharacters(text) + click to toggle source +
+ + +
+ +

Public: Substitute special characters (i.e., encode XML)

+ +

Special characters are defined in the Asciidoctor::SPECIAL_CHARS Array +constant

+ +

text - The String text to process

+ +

returns The String text with special characters replaced

+ + + +
+
+# File lib/asciidoctor/substituters.rb, line 194
+def sub_specialcharacters(text)
+  # this syntax only available in Ruby 1.9
+  #text.gsub(SPECIAL_CHARS_PATTERN, SPECIAL_CHARS)
+
+  text.gsub(SPECIAL_CHARS_PATTERN) { SPECIAL_CHARS[$&] }
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ transform_quoted_text(match, type, scope) + click to toggle source +
+ + +
+ +

Internal: Transform (render) a quoted text region

+ +

match - The MatchData for the quoted text region type - The quoting type +(single, double, strong, emphasis, monospaced, etc) scope - The scope of +the quoting (constrained or unconstrained)

+ +

returns The rendered text for the quoted text region

+ + + +
+
+# File lib/asciidoctor/substituters.rb, line 416
+def transform_quoted_text(match, type, scope)
+  if match[0].start_with? '\'
+    match[0][1..-1]
+  elsif scope == :constrained
+    "#{match[1]}#{Inline.new(self, :quoted, match[3], :type => type, :attributes => parse_attributes(match[2])).render}"
+  else
+    Inline.new(self, :quoted, match[2], :type => type, :attributes => parse_attributes(match[1])).render
+  end
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Table.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Table.html new file mode 100644 index 00000000..4008bd42 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Table.html @@ -0,0 +1,629 @@ + + + + + + + Class: Asciidoctor::Table + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::Table

+ +
+ +

Public: Methods and constants for managing AsciiDoc table content in a +document. It supports all three of AsciiDoc’s table formats: psv, dsv and +csv.

+ +
+ + + + +
+ + + + + + +
+

Constants

+
+ +
ALIGNMENTS
+ +

Public: A Hash mapping alignment abbreviations to alignments (horizontal +and vertial) that can be applies to a table column or cell

+ + +
BLANK_LINE_PATTERN
+ +

Public: A compiled Regexp to match a blank line

+ + +
DATA_FORMATS
+ +

Public: An Array of String keys that represent the table formats in +AsciiDoc

+ + +
DEFAULT_DATA_FORMAT
+ +

Public: A String key that specifies the default table format in AsciiDoc +(psv)

+ + +
DEFAULT_DELIMITERS
+ +

Public: A Hash mapping the AsciiDoc table formats to their default +delimiters

+ + +
TEXT_STYLES
+ +

Public: A Hash mapping styles abbreviations to styles that can be applied +to a table column or cell

+ + +
+
+ + + + +
+

Attributes

+ + +
+ + + + +
+ caption[RW] +
+ +
+ +

Public: Get/Set the String caption (unused, necessary for compatibility w/ +next_block)

+ +
+
+ +
+ + + + +
+ columns[RW] +
+ +
+ +

Public: Get/Set the columns for this table

+ +
+
+ +
+ + + + +
+ rows[RW] +
+ +
+ +

Public: Get/Set the Rows struct for this table (encapsulates head, foot and +body rows)

+ +
+
+ +
+ + + + +
+

Public Class Methods

+ + +
+ + + +
+ new(parent, attributes) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/table.rb, line 59
+def initialize(parent, attributes)
+  super(parent, :table)
+  # QUESTION since caption is on block, should it go to AbstractBlock?
+  @caption = nil
+  @rows = Rows.new([], [], [])
+  @columns = []
+
+  unless @attributes.has_key? 'tablepcwidth'
+    # smell like we need a utility method here
+    # to resolve an integer width from potential bogus input
+    pcwidth = attributes['width']
+    pcwidth_intval = pcwidth.to_i.abs
+    if pcwidth_intval == 0 && pcwidth != "0" || pcwidth_intval > 100
+      pcwidth_intval = 100
+    end
+    @attributes['tablepcwidth'] = pcwidth_intval
+  end
+
+  if @document.attributes.has_key? 'pagewidth'
+    @attributes['tableabswidth'] ||=
+        ((@attributes['tablepcwidth'].to_f / 100) * @document.attributes['pagewidth']).round
+  end
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ create_columns(col_specs) + click to toggle source +
+ + +
+ +

Internal: Creates the Column objects from +the column spec

+ +

returns nothing

+ + + +
+
+# File lib/asciidoctor/table.rb, line 86
+def create_columns(col_specs)
+  total_width = 0
+  @columns = col_specs.inject([]) {|collector, col_spec|
+    total_width += col_spec['width']
+    collector << Column.new(self, collector.size, col_spec)
+    collector
+  }
+  
+  if !@columns.empty?
+    @attributes['colcount'] = @columns.size
+    even_width = (100.0 / @columns.size).floor
+    @columns.each {|c| c.assign_width(total_width, even_width) }
+  end
+
+  nil
+end
+
+ +
+ + + + +
+ + + + + +
+ + + +
+ render() + click to toggle source +
+ + +
+ +

Public: Get the rendered String content for this Block. If the block has child blocks, the content +method should cause them to be rendered and returned as content that can be +included in the parent block’s template.

+ + + +
+
+# File lib/asciidoctor/table.rb, line 131
+def render
+  Asciidoctor.debug { "Now attempting to render for table my own bad #{self}" }
+  Asciidoctor.debug { "Parent is #{@parent}" }
+  Asciidoctor.debug { "Renderer is #{renderer}" }
+  renderer.render('block_table', self) 
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Table/Cell.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Table/Cell.html new file mode 100644 index 00000000..7ac62e46 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Table/Cell.html @@ -0,0 +1,537 @@ + + + + + + + Class: Asciidoctor::Table::Cell + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::Table::Cell

+ +
+ +

Public: Methods for managing the a cell in an AsciiDoc table.

+ +
+ + + + +
+ + + + + + + + +
+

Attributes

+ + +
+ + + + +
+ colspan[RW] +
+ +
+ +

Public: An Integer of the number of columns this cell will span (default: +nil)

+ +
+
+ +
+ + +
+ inner_document[R] +
+ +
+ +

Public: The internal Asciidoctor::Document +for a cell that has the asciidoc style

+ +
+
+ +
+ + + + +
+ rowspan[RW] +
+ +
+ +

Public: An Integer of the number of rows this cell will span (default: nil)

+ +
+
+ +
+ + + + +
+

Public Class Methods

+ + +
+ + + +
+ new(column, text, attributes = {}) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/table.rb, line 190
+def initialize(column, text, attributes = {})
+  super(column, :cell)
+  @text = text
+  @colspan = nil
+  @rowspan = nil
+  # TODO feels hacky
+  if !column.nil?
+    update_attributes(column.attributes)
+  end
+  if !attributes.nil?
+    if attributes.has_key? 'colspan'
+      @colspan = attributes['colspan']
+      attributes.delete('colspan') 
+    end
+    if attributes.has_key? 'rowspan'
+      @rowspan = attributes['rowspan']
+      attributes.delete('rowspan') 
+    end
+    update_attributes(attributes)
+  end
+  if @attributes['style'] == :asciidoc
+    @inner_document = Document.new(@text, :header_footer => false, :parent => @document)
+  end
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ content() + click to toggle source +
+ + +
+ +

Public: Handles the body data (tbody, tfoot), applying styles and +partitioning into paragraphs

+ + + +
+
+# File lib/asciidoctor/table.rb, line 221
+def content
+  style = attr('style')
+  if style == :asciidoc
+    @inner_document.render
+  else
+    text.split(Table::BLANK_LINE_PATTERN).map {|p|
+      !style || style == :header ? p : Inline.new(parent, :quoted, p, :type => attr('style')).render
+    }
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ text() + click to toggle source +
+ + +
+ +

Public: Get the text with normal substitutions applied for this cell. Used +for cells in the head rows

+ + + +
+
+# File lib/asciidoctor/table.rb, line 216
+def text
+  apply_normal_subs(@text)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ to_s() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/table.rb, line 232
+def to_s
+  "#{super.to_s} - [text: #@text, colspan: #{@colspan || 1}, rowspan: #{@rowspan || 1}, attributes: #@attributes]"
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Table/Column.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Table/Column.html new file mode 100644 index 00000000..5c7b7921 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Table/Column.html @@ -0,0 +1,400 @@ + + + + + + + Class: Asciidoctor::Table::Column + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + +
+ +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::Table::Column

+ +
+ +

Public: Methods to manage the columns of an AsciiDoc table. In particular, +it keeps track of the column specs

+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ new(table, index, attributes = {}) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/table.rb, line 146
+def initialize(table, index, attributes = {})
+  super(table, :column)
+  attributes['colnumber'] = index + 1
+  attributes['width'] ||= 1
+  attributes['halign'] ||= 'left'
+  attributes['valign'] ||= 'top'
+  update_attributes(attributes)
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ assign_width(total_width, even_width) + click to toggle source +
+ + +
+ +

Internal: Calculate and assign the widths (percentage and absolute) for +this column

+ +

This method assigns the colpcwidth and colabswidth attributes.

+ +

returns nothing

+ + + +
+
+# File lib/asciidoctor/table.rb, line 160
+def assign_width(total_width, even_width)
+  if total_width > 0
+    width = ((@attributes['width'].to_f / total_width) * 100).floor
+  else
+    width = even_width
+  end
+  @attributes['colpcwidth'] = width
+  if parent.attributes.has_key? 'tableabswidth'
+    @attributes['colabswidth'] = ((width.to_f / 100) * parent.attributes['tableabswidth']).round
+  end
+
+  nil
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Table/ParserContext.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Table/ParserContext.html new file mode 100644 index 00000000..4d9cde3e --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/Asciidoctor/Table/ParserContext.html @@ -0,0 +1,1230 @@ + + + + + + + Class: Asciidoctor::Table::ParserContext + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+ +
+ + +
+ + + +
+ + +
+

Files

+ +
+ + +
+

Class/Module Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+

Asciidoctor::Table::ParserContext

+ +
+ +

Public: Methods for managing the parsing of an AsciiDoc table. Instances of +this class are primarily responsible for tracking the buffer of a cell as +the parser moves through the lines of the table using tail recursion. When +a cell boundary is located, the previous cell is closed, an instance of Table::Cell is instantiated, the row is closed if the +cell satisifies the column count and, finally, a new buffer is allocated to +track the next cell.

+ +
+ + + + +
+ + + + + + + + +
+

Attributes

+ + +
+ + + + +
+ buffer[RW] +
+ +
+ +

Public: The String buffer of the currently open cell

+ +
+
+ +
+ + +
+ col_count[R] +
+ +
+ +

Public: Get the expected column count for a row

+ +

col_count is the +number of columns to pull into a row A value of -1 means we use the number +of columns found in the first line as the col_count

+ +
+
+ +
+ + +
+ delimiter[R] +
+ +
+ +

Public: The cell delimiter for this table.

+ +
+
+ +
+ + +
+ delimiter_re[R] +
+ +
+ +

Public: The cell delimiter compiled Regexp for this table.

+ +
+
+ +
+ + + + +
+ format[RW] +
+ +
+ +

Public: The AsciiDoc table format (psv, dsv or csv)

+ +
+
+ +
+ + + + +
+ table[RW] +
+ +
+ +

Public: The Table currently being parsed

+ +
+
+ +
+ + + + +
+

Public Class Methods

+ + +
+ + + +
+ new(table, attributes = {}) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/asciidoctor/table.rb, line 267
+def initialize(table, attributes = {})
+  @table = table
+  if attributes.has_key? 'format'
+    @format = attributes['format']
+    if !Table::DATA_FORMATS.include? @format
+      raise "Illegal table format: #@format"
+    end
+  else
+    @format = Table::DEFAULT_DATA_FORMAT
+  end
+  
+  if @format == 'psv' && !attributes.has_key?('separator') && table.document.nested?
+    @delimiter = '!'
+  else
+    @delimiter = attributes.fetch('separator', Table::DEFAULT_DELIMITERS[@format])
+  end
+  @delimiter_re = /#{Regexp.escape @delimiter}/
+  @col_count = table.columns.empty? ? -1 : table.columns.size
+  @buffer = ''
+  @cell_specs = []
+  @cell_open = false
+  @active_rowspans = [0]
+  @col_visits = 0
+  @current_row = []
+  @linenum = -1
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ activate_rowspan(rowspan, colspan) + click to toggle source +
+ + +
+ +

Public: Activate a rowspan. The rowspan Array is consulted when determining +the effective number of cells in the current row.

+ +

returns nothing

+ + + +
+
+# File lib/asciidoctor/table.rb, line 473
+def activate_rowspan(rowspan, colspan)
+  1.upto(rowspan - 1).each {|i|
+    @active_rowspans[i] ||= 0
+    @active_rowspans[i] += colspan 
+  }
+  nil
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ buffer_has_unclosed_quotes?(append = nil) + click to toggle source +
+ + +
+ +

Public: Determines whether the buffer has unclosed quotes. Used for CSV +data.

+ +

returns true if the buffer has unclosed quotes, false if it doesn’t or it +isn’t quoted data

+ + + +
+
+# File lib/asciidoctor/table.rb, line 323
+def buffer_has_unclosed_quotes?(append = nil)
+  record = "#@buffer#{append}".strip
+  record.start_with?('"') && !record.start_with?('""') && !record.end_with?('"')
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ buffer_quoted?() + click to toggle source +
+ + +
+ +

Public: Determines whether the buffer contains quoted data. Used for CSV +data.

+ +

returns true if the buffer starts with a double quote (and not an escaped +double quote), false otherwise

+ + + +
+
+# File lib/asciidoctor/table.rb, line 332
+def buffer_quoted?
+  @buffer.lstrip!
+  @buffer.start_with?('"') && !@buffer.start_with?('""')
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ cell_closed?() + click to toggle source +
+ + +
+ +

Public: Checks whether the current cell has been marked as closed

+ +

returns true if the cell is marked as closed, false otherwise

+ + + +
+
+# File lib/asciidoctor/table.rb, line 384
+def cell_closed?
+  !@cell_open
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ cell_open?() + click to toggle source +
+ + +
+ +

Public: Checks whether the current cell is still open

+ +

returns true if the cell is marked as open, false otherwise

+ + + +
+
+# File lib/asciidoctor/table.rb, line 377
+def cell_open?
+  @cell_open
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ close_cell(eol = false) + click to toggle source +
+ + +
+ +

Public: Close the current cell, instantiate a new Table::Cell, add it to the current row and, if the +number of expected columns for the current row has been met, close the row +and begin a new one.

+ +

returns nothing

+ + + +
+
+# File lib/asciidoctor/table.rb, line 405
+def close_cell(eol = false)
+  cell_text = @buffer.strip
+  @buffer = ''
+  if format == 'psv'
+    cell_spec = take_cell_spec
+    repeat = cell_spec.fetch('repeatcol', 1)
+    cell_spec.delete('repeatcol')
+  else
+    cell_spec = nil
+    repeat = 1
+    if format == 'csv'
+      if !cell_text.empty? && cell_text.include?('"')
+        # this may not be perfect logic, but it hits the 99%
+        if cell_text.start_with?('"') && cell_text.end_with?('"')
+          # unquote
+          cell_text = cell_text[1..-2].strip
+        end
+        
+        # collapses escaped quotes
+        cell_text = cell_text.tr_s('"', '"')
+      end
+    end
+  end
+  
+  1.upto(repeat) {|i|
+    # make column resolving an operation
+    if @col_count == -1
+      @table.columns << Table::Column.new(@table, @current_row.size + i - 1)
+      column = @table.columns.last 
+    else
+      # QUESTION is this right for cells that span columns?
+      column = @table.columns[@current_row.size]
+    end
+  
+    cell = Table::Cell.new(column, cell_text, cell_spec)
+    unless cell.rowspan.nil? || cell.rowspan == 1
+      activate_rowspan(cell.rowspan, (cell.colspan || 1))
+    end
+    @col_visits += (cell.colspan || 1)
+    @current_row << cell
+    # don't close the row if we're on the first line and the column count has not been set explicitly
+    # TODO perhaps the col_count/linenum logic should be in end_of_row? (or a should_end_row? method)
+    close_row if end_of_row? && (@col_count != -1 || @linenum > 0 || (eol && i == repeat))
+  }
+  @open_cell = false
+  nil
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ close_open_cell(next_cell_spec = {}) + click to toggle source +
+ + +
+ +

Public: If the current cell is open, close it. In additional, push the cell +spec captured from the end of this cell onto the stack for use by the next +cell.

+ +

returns nothing

+ + + +
+
+# File lib/asciidoctor/table.rb, line 393
+def close_open_cell(next_cell_spec = {})
+  push_cell_spec next_cell_spec
+  close_cell(true) if cell_open?
+  next_line
+  nil
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ close_row() + click to toggle source +
+ + +
+ +

Public: Close the row by adding it to the Table +and resetting the row Array and counter variables.

+ +

returns nothing

+ + + +
+
+# File lib/asciidoctor/table.rb, line 457
+def close_row
+  @table.rows.body << @current_row
+  # don't have to account for active rowspans here
+  # since we know this is first row
+  @col_count = @col_visits if @col_count == -1
+  @col_visits = 0
+  @current_row = []
+  @active_rowspans.shift
+  @active_rowspans[0] ||= 0
+  nil
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ effective_col_visits() + click to toggle source +
+ + +
+ +

Public: Calculate the effective column visits, which consists of the number +of cells plus any active rowspans.

+ + + +
+
+# File lib/asciidoctor/table.rb, line 488
+def effective_col_visits
+  @col_visits + @active_rowspans.first
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ end_of_row?() + click to toggle source +
+ + +
+ +

Public: Check whether we’ve met the number of effective columns for the +current row.

+ + + +
+
+# File lib/asciidoctor/table.rb, line 482
+def end_of_row?
+  @col_count == -1 || effective_col_visits == @col_count
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ keep_cell_open() + click to toggle source +
+ + +
+ +

Public: Marks that the cell should be kept open. Used when the end of the +line is reached and the cell may contain additional text.

+ +

returns nothing

+ + + +
+
+# File lib/asciidoctor/table.rb, line 360
+def keep_cell_open
+  @cell_open = true
+  nil
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ mark_cell_closed() + click to toggle source +
+ + +
+ +

Public: Marks the cell as closed so that the parser knows to instantiate a +new cell instance and add it to the current row.

+ +

returns nothing

+ + + +
+
+# File lib/asciidoctor/table.rb, line 369
+def mark_cell_closed
+  @cell_open = false
+  nil
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ match_delimiter(line) + click to toggle source +
+ + +
+ +

Public: Checks whether the line provided contains the cell delimiter used +by this table.

+ +

returns MatchData if the line contains the delimiter, false otherwise

+ + + +
+
+# File lib/asciidoctor/table.rb, line 306
+def match_delimiter(line)
+  line.match @delimiter_re
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ next_line() + click to toggle source +
+ + +
+ +

Internal: Advance to the next line (which may come after the parser begins +processing the next line if the last cell had wrapped content).

+ + + +
+
+# File lib/asciidoctor/table.rb, line 494
+def next_line
+  @linenum += 1
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ push_cell_spec(cell_spec = {}) + click to toggle source +
+ + +
+ +

Public: Puts a cell spec onto the stack. Cell specs +precede the delimiter, so a stack is used to carry over the spec to the +next cell.

+ +

returns nothing

+ + + +
+
+# File lib/asciidoctor/table.rb, line 350
+def push_cell_spec(cell_spec = {})
+  # this shouldn't be nil, but we check anyway
+  @cell_specs << (cell_spec || {})
+  nil
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ skip_matched_delimiter(match, escaped = false) + click to toggle source +
+ + +
+ +

Public: Skip beyond the matched delimiter because it was a false positive +(either because it was escaped or in a quoted context)

+ +

returns the String after the match

+ + + +
+
+# File lib/asciidoctor/table.rb, line 314
+def skip_matched_delimiter(match, escaped = false)
+  @buffer << (escaped ? match.pre_match.chop : match.pre_match) << @delimiter
+  match.post_match
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ starts_with_delimiter?(line) + click to toggle source +
+ + +
+ +

Public: Checks whether the line provided starts with the cell delimiter +used by this table.

+ +

returns true if the line starts with the delimiter, false otherwise

+ + + +
+
+# File lib/asciidoctor/table.rb, line 298
+def starts_with_delimiter?(line)
+  line.start_with? @delimiter
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ take_cell_spec() + click to toggle source +
+ + +
+ +

Public: Takes a cell spec from the stack. Cell +specs precede the delimiter, so a stack is used to carry over the spec from +the previous cell to the current cell when the cell is being closed.

+ +

returns The cell spec Hash captured from parsing the previous cell

+ + + +
+
+# File lib/asciidoctor/table.rb, line 342
+def take_cell_spec()
+  @cell_specs.shift
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/LICENSE.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/LICENSE.html new file mode 100644 index 00000000..1fa5a6a8 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/LICENSE.html @@ -0,0 +1,254 @@ + + + + + + + + File: LICENSE [asciidoctor-0.0.9 Documentation] + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+ + +
+

Files

+ +
+ + +
+

Class Index + [+]

+
+
+ Quicksearch + +
+
+ + + +
+ + +
+
+ +
+ +

The MIT License

+ +

Copyright © Ryan Waldron

+ +

Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the “Software”), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions:

+ +

The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software.

+ +

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE.

+ +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/created.rid b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/created.rid new file mode 100644 index 00000000..89bdbf0c --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/created.rid @@ -0,0 +1,23 @@ +Wed, 23 Jan 2013 09:53:14 -0700 +lib/asciidoctor/backends/base_template.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/backends/docbook45.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/backends/html5.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/renderer.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/substituters.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/debug.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/table.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/document.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/lexer.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/section.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/abstract_block.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/errors.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/block.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/attribute_list.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/version.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/callouts.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/list_item.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/abstract_node.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/inline.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/reader.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor.rb Wed, 23 Jan 2013 09:53:12 -0700 +LICENSE Wed, 23 Jan 2013 09:53:12 -0700 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/brick.png b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/brick.png new file mode 100644 index 0000000000000000000000000000000000000000..7851cf34c946e5667221e3478668503eb1cd733f GIT binary patch literal 452 zcmV;#0XzPQP)Pdwe5?6tW?r-ok|b$oDQj8FV%kZPq;(MWOV8?8;<)(iP}>hNMU> z7fbz%jjlr7h8uuoQ~J6}n}@Y@PdTk=)PxO{%7zmL?dchpZX*~n;I{!C>*(8cU;q(~ zAS%Po_@naEU!xidrBXD?;hN|x^%W|Ij)0y*r5vi|?W&Fub(NqJ@z0o=O&SR3v>A``^efOSo-hEdApp;^Jd;9y!%1UfzX6Bh- z%-mbG|0Na{7Ruai_Y+DEb1s+b!*9k%Q!whMxjtZKA*?o;i1g&jy0@( zaU=-@d-h+o%gal6JRXEXA&L3`d2 z%jIxzZ~*p9O-;EJp_Ds0If38rM<5W8ic~K>FOK&2_p!CLg^i63OioVb6k$)zWHLx3 z5;!|M!}<9+#QSi1dRlbEcxPt^;cysUuU8@%3}RwpLRIGG<|IKnoyP6$Eh3SKw7a*r zSDXP=IYc&YZf;7@?fCe($^l9ORaJ3wbAx0uiC8QqRr$2t-Cfy8%XCI3B%pxJW>XdM zw~zPt_s}#A@pxQ5Ly)4szaMtH9lgE1SXx@b+S(fW`ub$fYPE8J7#bSNDzme*Ub07{ zQKV8SjEs!%0@v5ql8ggm!@$6Rbi^E8vBqpRM-}l+@5OSMrl+TWj*gC^qoV@>u{fQb zov5v?g~?>X@bEC&+uLPaQ&Ypn-y~^mZA}+f(&2EFH8eE%dU|@ENpN*_1-)L6_4Rc* zFuq@`IjX9vp1QiaK9ZojyZhnQURP99d=u;%37VRkpwsD4U0sd3x;hEQB&e^i|3QN0 z=H|Os1fRqaw!?#igLmS4HE!G3*ce(`TF} zlgUq0Q544c8(ae&UR$8ps&snq6^bPY3v3xAmMW74Di$h~GCH6E3TaYs2#6A<7K*gC z777H71_Wa;(dfp+g-drPCSWu)#PInZi72LJ;o?i~$-U=y&UbQ89Dul3%3P+Axkzc* zbH-y;QF=hR{qLItf%ci2_&e5wNo0gnVatG?ul6Zw=o$I9Ljfn*ic3`U?>IfEim3g{ zujU&$-hy6wn;w(xme|zJm;lWJxtTFfM)q0`kX!Vu0+d${$}LCddK1<^htTe-fUYL3 zB`SdNsZD>RgvLj1<^@h6_+cDRK2Brcr2~>%$*5S)hyV33PV^teac3%|4lz@8p4?)5 z?t5o^?q+%^%)Yygo~I^U4VR!bTnWuE35hcWrfCDR3q+sxJ79e7Fg`&)RCqLA^2^y^ z0laVfadW90_Fz8Brm|r47sB^u1VgI>kanj)Z4`zMSfHlm8>CwXa$JVM`$2RrmZB-3 zN10m-!;BvH*Br3V8t`DH7m`jf#2upVDXl{5ff18_pzCPK1Zu$$CKKvd8FGeFf)+K<|x33pc7P&S#3GZT4mEw;nr(Ze*F z3&*?-4U-lm*#tber5 z%S_ceqB`b3ko6r~BbvDwdohTvP(3a(pq{x#T$yQsu#OKwEe}KuH^Mh@nxg_(Nw136 zq#a^3xNBke)In+!?qk3%4wB69{pF`Tzg`07*qoM6N<$ Eg55P&8UO$Q literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/bullet_black.png b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/bullet_black.png new file mode 100644 index 0000000000000000000000000000000000000000..57619706d10d9736b1849a83f2c5694fbe09c53b GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$h^>lFz(Kw&{<9vg>5sw~gS5O!4 zr|{HuUFIBKiQyL}eBJ-L{`UVT|6_O~L{G%N{Wbre{kQtZ_0LvEhC#5QQ<|d}62BjvZR2H60wE-$h^mK6y(Kw&{<9vg>(S^W+6Zii9 z|Nhthr~iNb*Z!}6uiN$Dz5neG3a-`baBX8yz1H+_;eX)`ni0%X8XBDc-`=Ph(Uan2 zYsR{H!kvIN--9isvHznRsC#5QQ<|d}62BjvZR2H60wE-$h_H=O!(Kw&{<9vg>(S^W+6Zii9 z|Nhthr~iNb*Z!}6uiN$Dz5neG3a-`baBX8yz4q@v|B?28{s)#N@CGn3@%_y|zAV9T z66e<&B4?b6oF&azg|C(V&1ZbI_D}pL`}(^FT2yXwG1Ph~$Q@h8mJYOz!PC{xWt~$( F699+YQR)By literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/date.png b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/date.png new file mode 100644 index 0000000000000000000000000000000000000000..783c83357fdf90a1c7c024358e1d768b5c09c135 GIT binary patch literal 626 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 Dl)1NK literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/macFFBgHack.png b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/macFFBgHack.png new file mode 100644 index 0000000000000000000000000000000000000000..c6473b324ee1dae1faaacc0826639833f551116c GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIEX7WqAsj$Z!;#Vf4nJ za0`Jjl>Qs8<JF;+Fd5q0wCR k?u=~bH}2*0f`J3~k>FVdQ&MBb@0BAfpf&c&j literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/package.png b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/package.png new file mode 100644 index 0000000000000000000000000000000000000000..da3c2a2d74bab159ba0f65d7db601768258afcb2 GIT binary patch literal 853 zcmV-b1FHOqP)5TQ^(M5v$(QKVE?W+9X! z*o}&~6c?_FreF)9NJB7b5Nbn{G0n4+%uJhR9(V5R|NFTpb|HgjefT!tIhLx@DR+N) zV+fHiR5Yt19}k|KnCsND{tH-`IMJ)3AE?OtyZ4>Un|6(d%h#JK`i&a7^xW9>`yBy` zS4SOHeOpC7$?hH5-#7Rswiue_8Ju*2N@$58=a#2OTA3png`w3v->gWif7t%e$ z$NLVS!tFT#8WL|Wa&K~+{%4P2cRfwesYV1_!F=3OaRVHl(>=`%&{x*s30c}#CNE@&;ItrAv!f!)Oy$Q9t$uS=(sD$-J{T*^(8Eez1E-l3}} zPrfHZ1`qsIFe&gipuL8-IZbo2Yg{lFGKs?ZZWcOaOdk*3`5T;$?AjbG1#`B510Er^h2)2r3Y{!8_2Gj=$KzuN5 zaErtW8W_Y2iJJjY)5pmTVJoPJYpanPOEuYHclM^C1F>${hFRpdi8a<2H|Xudf78bm(zwJ9`K%6I?q*Ua~ fW9JvIbn5*B+_J)rUMBs>00000NkvXXu0mjfH&TkY literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/page_green.png b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/page_green.png new file mode 100644 index 0000000000000000000000000000000000000000..de8e003f9fb8752c09e7f3655d5d8664b5c62fc3 GIT binary patch literal 621 zcmV-z0+RiSP)QqUjAtB;_Vvt6}AS_5YgM`Uqu`yva+H8^=4U$e4gHb}u zAQ2N{V3A%pO|?Pv?tb6z=jC}SiRa$G^v3q?*6XcYz$p|cq{uLj@#~Fi`J(>5{@&&N zy%T^+;>8cXx%|o77anP?&W1?1A(>-T49z9pyeCl@7YI+Si zKti7=B~``}TImz(G{0PnlQA3P#MAd}sorMjkP!50B7$nAkU^%#nl{Q9lW0@}9fE-> zN(q7tRuiC_T1r|BBtVBTlQ2+70$Rf;eF`Z;lx46Cpu-rEgb)EBKq(b^W8l<^We(`D z43?0=01z<3G6+UUv6`CsWCk6^93!#+<;ws7007{zS3k2k9-zZKFO~(k`>s0y006+1 zgF_jyIhsL-`FMf~JL~C=cV75(CrJ|q;MVO961G=O zm9d)YpJg5g(4i_HKL75eSE}mq$Y}r}hyVdcV~p>6a}oXr80q`oj%+s700000NkvXX Hu0mjfPs|!l literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/page_white_text.png b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/page_white_text.png new file mode 100644 index 0000000000000000000000000000000000000000..813f712f726c935f9adf8d2f2dd0d7683791ef11 GIT binary patch literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-%6;pyTSA|c6o&@eC9QG)Hj&ExYL zO&oVL^)+cM^qd@ApywS>pwx0H@RDN}hq;7mU-SKczYQ-hnrr=;iDAQMZQ+*g=YOM= z!QlMQEn7FbaD->uKAYgo_j9)W&$$zS*W9}m(ey0q$&7l-XEWO0Y(9M=SnhLbwy;d>@~SY$Ku*0xPvIOQeV1x7u_z-2-X>_74(yfh7C znXL|3GZ+d2`3re2hs?MKC#5QQ<|d}62BjvZR2H60wE-$R?&;zfqH(@;q9b3Efq-lM(nr^( z=EYR73-9e)UYMWsXy%?aZsD68Yyv^2$~6QgEcljw%kx>O(f-gQ?@fOOx3A-0+Qw?O zRx~W)kn~Qe2d6f9nMG#g9Q04Mk==M~N!Dglvxk!fgVh#w@ZV$IY1+Xc`d{d2UcaP~ zfWp)_Ivqj}l2SPy^9ZWy6rG9Yx4v67_uA&&9|XA~5-#3)W3%em1peD8RWH^#O%XoM zxMPud%}GTj#~*+7JMxTd!`{^Q+>(D3*|@KV`*G2;{QnANOxu1$r2xIe;OXk;vd$@? F2>@zac~<}c literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/plugin.png b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..6187b15aec001b7080b51a5f944f07591f26cc15 GIT binary patch literal 591 zcmV-V0eEcNHZMNv|IbJ-M`( zKwWL~opzjJe^WpCmV9E;(0&ut2;4va_(#>M8)>9$R5viQnf(Nkh~VM$y>J(jqb$cj z+nL1Nm|mV)Gm|9MnHf*7Ja4OEAQz__^LRKOLEwqpiGV^^A*T=#&inGm-62Xs;dnSp zKj&H9T*boh2i)W+(n27l!C)>fq|L%VB1i ziC4p;NwV_}ZjW7$LRW#(_bKF#hp=!IqNO26Z*w2+LEwx{PVnZ&Sn}T;mtzb$;qA*nT@@+ zV5uQ@iXDTPoTbV#FRr~z04|PPh`wXTNoCm9*tG&?e3+fYl>K6+&3|Cc$KOpL`ER+_ dcRl5U#9zn6ZO}GFk7R5;7c zlif>`Q5?tj7Yw@ZCMtTF^Q|ZedeJhM%QPCR*bs8V79p$QTo7e94yQNXRs-{0?hOn_-8n0AMO@u1Ts zNl8QzJs1#rz%RBt?ux>l+amAvh+J!{$lkaqv}+Erb-6j2xp>K4GLQnNB*W`hFg*?P z^AL@~(h~Z+wfcWEXHqV^Tq-#z$7Y#o0;yFxA!00F}F2dX# zjE$iOgT#G4*1TR6kB1Gnn@>$meCh2a>c5YuIvFn-R2W@>4@M*m@-|jiDV?b)bccgA zyPfsMM!rjy>+1O2)5Eg29Z_*2p&qGnmS!OH?vZ(4>QB01d>j%9n4QINxkyT(Dos?I zjaWF$*IQmh`SF-?xU%xMEfjq1=6qY*g&lgG_cXv$BGoIWyfO5 zp>pdV*O+y=&6@N2WWFo(%RtT`Q(H^6zn^a%epE~Kx^mEJ{c8`luC$nc*z9j|4Ms8aJK-la^5T)AZ%#@G{_P{NCN^P z(J0zvSn~SSm(Ur);-M~8^*;61*VRI`T1BN&LAhK;sZ>I-SVW;vfUfJv=ko^ugnc0x zhJodBxe>iyk3%w<%wC8holUJ4(iv>tL{`DQt zPOsyUbO_Cmc&*iHkqbm3ku`|GcC^OhF>jj9W*GkH;^g!iUVpib_h*=@udp4h(P+e*zL_~ZmJjh(y^BxULwq>9zXoYE8sq{#pN~U0C6!8vY)5N2 z9P*}mw}7X$O^qTtJef1ACWvJT9^wt-)Zh0r~j#0bT`f;-zv6 z^Tmw22!%rMcs!TaUX<-8s;X-B`+Xbo+_uWuFa z1yIPc?DTrQ7KvRhmt*TG|L=EYQ=LqFX;=Lp`4}jx6BE-@00000NkvXXu0mjf=s_29 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/wrench.png b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/images/wrench.png new file mode 100644 index 0000000000000000000000000000000000000000..5c8213fef5ab969f03189d4367e32e597e38bd7f GIT binary patch literal 610 zcmV-o0-gPdP)^jb z4`0v}DG1te)wmeb(>p90leRz?_mO+^JKy=v&2<29Od6?F%9%(c8los#f*@G`-%W&* z$)uBj2i@u-@SgX}gtyWPe6d*|w6h%R? zScK2#Yn%$sum0cy>90DmY*i{1XqpClEtktsRTZ)lCUe z<FogV^*tm>8*AlX za4oiR!&85LrobG57qUHUX#{>Vz(RHpB5|@>9O6N$jqB8>%($0wxE5R3)b>Y~xtCo$ zCgEk&A?_#IxHdN)9tqre^o{ho4{?hmPuf@^@I3-wncaRd%|~O3xbrKY=&TiwPYkJroM{;WUQTuMY8vpg}f4o)2%U3C;eEDoiEh?94d(rV57VIF#8VqzW$HrDC|#U`x@QDbgi zVl)t9GGz&YY#D?gc%>hISA+_EBpnXt#pnC`p6@xw0$8TCbULjhlgVx(kuc)%xbgqq zR5+DNDFRN0!y)7Gm}oT0i39}h4h928qY?Rho^UvPGJ#kuW|-Amtrn`Pmd&+bFo@sp z$LI4IQw7BG?|#2ewOS<<3VjL$0=lMY^m;wqZujv5kx1l%Sl;V&Iy4#$ip3&@LV2!7vhhN=PCz%^9v24`qb(+m4W?!q-&~=?ssf5GfnAmJKV;3bvpDm0(NhahZ=&^sqo6Odj6>)Dq_3p~4~ zvb`d3Mydwjt&Df^hVmLtI2x=U&h9(JVYX-!y~z3zi;1>=LY;o(bL$(Yf$lf)dMf0-u^0HrpTG Wk@)HE*94aU0000m+BBgry{~j2fHLegbHP( zrgXNbr0}2;^nywdjLjZe?uxtrd3D(pZH@fFFc0{BW_~jxoO1w7-VX;6vK@ROA$$R6 zEmo;Ht-Mj|>5jUy{bQ^V5@53LRI8AgLpUm|m+15sqcz@QtVSo|oz7ArM8?pIn+>gN z0b=4_b5O|4A*;Q+vc9Vqr~%3V155*NV~@gTz}KSUiKB-uJzjMZ>5%Q#n24H!V{ zTY(LLAE*NAHZ}C#wnj%Bw5OFIkRhkkAW#kDC3j9Wm0YXRaXlyyp>#mVfYG)eC;@ab zDb=T-BCAY4LI(Z@GOTr2V_A{pRwSmz+8Be>CjAw(=gnbVWAeguvZa93JmL(EDxv1m z0OP4q=fpAK1Mq!C2`OkEn37o;m#wF#(t(8Pu#S?2f#x<~4EO{@fmm`p9veD6RZ_jp z@Au4};q&`XuKEYgIiB4((kgxOs#YdqJw0fY>9^K_agEu5+$#k;w#%I2N>n_?)YIqu z`tq&#_^p?-%K*U0^}|7+9U(&k0?s;=r=uCZ%)H9_edH8wK}gB(nUB1FFk+2Ol%BXV zHoFY`D~2x|2 + + + + + + + asciidoctor-0.0.9 Documentation + + + + + + + + + + + + +

asciidoctor-0.0.9 Documentation

+ + +

This is the API documentation for 'asciidoctor-0.0.9 Documentation'.

+ + + + +

Files

+ + + +

Classes/Modules

+ + +

Methods

+ + +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/js/darkfish.js b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/js/darkfish.js new file mode 100644 index 00000000..84565c1e --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/js/darkfish.js @@ -0,0 +1,116 @@ +/** + * + * Darkfish Page Functions + * $Id: darkfish.js 53 2009-01-07 02:52:03Z deveiant $ + * + * Author: Michael Granger + * + */ + +/* Provide console simulation for firebug-less environments */ +if (!("console" in window) || !("firebug" in console)) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", + "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; + + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +}; + + +/** + * Unwrap the first element that matches the given @expr@ from the targets and return them. + */ +$.fn.unwrap = function( expr ) { + return this.each( function() { + $(this).parents( expr ).eq( 0 ).after( this ).remove(); + }); +}; + + +function showSource( e ) { + var target = e.target; + var codeSections = $(target). + parents('.method-detail'). + find('.method-source-code'); + + $(target). + parents('.method-detail'). + find('.method-source-code'). + slideToggle(); +}; + +function hookSourceViews() { + $('.method-description,.method-heading').click( showSource ); +}; + +function toggleDebuggingSection() { + $('.debugging-section').slideToggle(); +}; + +function hookDebuggingToggle() { + $('#debugging-toggle img').click( toggleDebuggingSection ); +}; + +function hookQuickSearch() { + $('.quicksearch-field').each( function() { + var searchElems = $(this).parents('.section').find( 'li' ); + var toggle = $(this).parents('.section').find('h3 .search-toggle'); + // console.debug( "Toggle is: %o", toggle ); + var qsbox = $(this).parents('form').get( 0 ); + + $(this).quicksearch( this, searchElems, { + noSearchResultsIndicator: 'no-class-search-results', + focusOnLoad: false + }); + $(toggle).click( function() { + // console.debug( "Toggling qsbox: %o", qsbox ); + $(qsbox).toggle(); + }); + }); +}; + +function highlightTarget( anchor ) { + console.debug( "Highlighting target '%s'.", anchor ); + + $("a[name=" + anchor + "]").each( function() { + if ( !$(this).parent().parent().hasClass('target-section') ) { + console.debug( "Wrapping the target-section" ); + $('div.method-detail').unwrap( 'div.target-section' ); + $(this).parent().wrap( '
' ); + } else { + console.debug( "Already wrapped." ); + } + }); +}; + +function highlightLocationTarget() { + console.debug( "Location hash: %s", window.location.hash ); + if ( ! window.location.hash || window.location.hash.length == 0 ) return; + + var anchor = window.location.hash.substring(1); + console.debug( "Found anchor: %s; matching %s", anchor, "a[name=" + anchor + "]" ); + + highlightTarget( anchor ); +}; + +function highlightClickTarget( event ) { + console.debug( "Highlighting click target for event %o", event.target ); + try { + var anchor = $(event.target).attr( 'href' ).substring(1); + console.debug( "Found target anchor: %s", anchor ); + highlightTarget( anchor ); + } catch ( err ) { + console.error( "Exception while highlighting: %o", err ); + }; +}; + + +$(document).ready( function() { + hookSourceViews(); + hookDebuggingToggle(); + hookQuickSearch(); + highlightLocationTarget(); + + $('ul.link-list a').bind( "click", highlightClickTarget ); +}); diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/js/jquery.js b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/js/jquery.js new file mode 100644 index 00000000..afe9e74c --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/js/jquery.js @@ -0,0 +1,32 @@ +/* + * jQuery 1.2.6 - New Wave Javascript + * + * Copyright (c) 2008 John Resig (jquery.com) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * $Date: 2008-09-25 09:50:52 -0700 (Thu, 25 Sep 2008) $ + * $Rev: 38 $ + */ +(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else +return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else +return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else +selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else +this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else +return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else +jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else +jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("",""]||!tags.indexOf("",""]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!tags.indexOf("",""]||(!tags.indexOf("",""]||!tags.indexOf("",""]||jQuery.browser.msie&&[1,"div
","
"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf(""&&tags.indexOf("=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else +ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&¬xml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&¬xml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&¬xml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else +while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return im[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else +for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("
").append(res.responseText.replace(//g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else +xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else +jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else +for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else +s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else +e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;ithis.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})(); \ No newline at end of file diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/js/quicksearch.js b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/js/quicksearch.js new file mode 100644 index 00000000..70dbd33c --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/js/quicksearch.js @@ -0,0 +1,114 @@ +/** + * + * JQuery QuickSearch - Hook up a form field to hide non-matching elements. + * $Id: quicksearch.js 53 2009-01-07 02:52:03Z deveiant $ + * + * Author: Michael Granger + * + */ +jQuery.fn.quicksearch = function( target, searchElems, options ) { + // console.debug( "Quicksearch fn" ); + + var settings = { + delay: 250, + clearButton: false, + highlightMatches: false, + focusOnLoad: false, + noSearchResultsIndicator: null + }; + if ( options ) $.extend( settings, options ); + + return jQuery(this).each( function() { + // console.debug( "Creating a new quicksearch on %o for %o", this, searchElems ); + new jQuery.quicksearch( this, searchElems, settings ); + }); +}; + + +jQuery.quicksearch = function( searchBox, searchElems, settings ) { + var timeout; + var boxdiv = $(searchBox).parents('div').eq(0); + + function init() { + setupKeyEventHandlers(); + focusOnLoad(); + }; + + function setupKeyEventHandlers() { + // console.debug( "Hooking up the 'keypress' event to %o", searchBox ); + $(searchBox). + unbind( 'keyup' ). + keyup( function(e) { return onSearchKey( e.keyCode ); }); + $(searchBox). + unbind( 'keypress' ). + keypress( function(e) { + switch( e.which ) { + // Execute the search on Enter, Tab, or Newline + case 9: + case 13: + case 10: + clearTimeout( timeout ); + e.preventDefault(); + doQuickSearch(); + break; + + // Allow backspace + case 8: + return true; + break; + + // Only allow valid search characters + default: + return validQSChar( e.charCode ); + } + }); + }; + + function focusOnLoad() { + if ( !settings.focusOnLoad ) return false; + $(searchBox).focus(); + }; + + function onSearchKey ( code ) { + clearTimeout( timeout ); + // console.debug( "...scheduling search." ); + timeout = setTimeout( doQuickSearch, settings.delay ); + }; + + function validQSChar( code ) { + var c = String.fromCharCode( code ); + return ( + (c == ':') || + (c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') + ); + }; + + function doQuickSearch() { + var searchText = searchBox.value; + var pat = new RegExp( searchText, "im" ); + var shownCount = 0; + + if ( settings.noSearchResultsIndicator ) { + $('#' + settings.noSearchResultsIndicator).hide(); + } + + // All elements start out hidden + $(searchElems).each( function(index) { + var str = $(this).text(); + + if ( pat.test(str) ) { + shownCount += 1; + $(this).fadeIn(); + } else { + $(this).hide(); + } + }); + + if ( shownCount == 0 && settings.noSearchResultsIndicator ) { + $('#' + settings.noSearchResultsIndicator).slideDown(); + } + }; + + init(); +}; diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/js/thickbox-compressed.js b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/js/thickbox-compressed.js new file mode 100644 index 00000000..3a3fdae1 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/js/thickbox-compressed.js @@ -0,0 +1,10 @@ +/* + * Thickbox 3 - One Box To Rule Them All. + * By Cody Lindley (http://www.codylindley.com) + * Copyright (c) 2007 cody lindley + * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php +*/ + +var tb_pathToImage = "../images/loadingAnimation.gif"; + +eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('$(o).2S(9(){1u(\'a.18, 3n.18, 3i.18\');1w=1p 1t();1w.L=2H});9 1u(b){$(b).s(9(){6 t=X.Q||X.1v||M;6 a=X.u||X.23;6 g=X.1N||P;19(t,a,g);X.2E();H P})}9 19(d,f,g){3m{3(2t o.v.J.2i==="2g"){$("v","11").r({A:"28%",z:"28%"});$("11").r("22","2Z");3(o.1Y("1F")===M){$("v").q("<4 5=\'B\'><4 5=\'8\'>");$("#B").s(G)}}n{3(o.1Y("B")===M){$("v").q("<4 5=\'B\'><4 5=\'8\'>");$("#B").s(G)}}3(1K()){$("#B").1J("2B")}n{$("#B").1J("2z")}3(d===M){d=""}$("v").q("<4 5=\'K\'><1I L=\'"+1w.L+"\' />");$(\'#K\').2y();6 h;3(f.O("?")!==-1){h=f.3l(0,f.O("?"))}n{h=f}6 i=/\\.2s$|\\.2q$|\\.2m$|\\.2l$|\\.2k$/;6 j=h.1C().2h(i);3(j==\'.2s\'||j==\'.2q\'||j==\'.2m\'||j==\'.2l\'||j==\'.2k\'){1D="";1G="";14="";1z="";1x="";R="";1n="";1r=P;3(g){E=$("a[@1N="+g+"]").36();25(D=0;((D&1d;&1d;2T &2R;"}n{1D=E[D].Q;1G=E[D].u;14="<1e 5=\'1U\'>&1d;&1d;&2O; 2N"}}n{1r=1b;1n="1t "+(D+1)+" 2L "+(E.1c)}}}S=1p 1t();S.1g=9(){S.1g=M;6 a=2x();6 x=a[0]-1M;6 y=a[1]-1M;6 b=S.z;6 c=S.A;3(b>x){c=c*(x/b);b=x;3(c>y){b=b*(y/c);c=y}}n 3(c>y){b=b*(y/c);c=y;3(b>x){c=c*(x/b);b=x}}13=b+30;1a=c+2G;$("#8").q("<1I 5=\'2F\' L=\'"+f+"\' z=\'"+b+"\' A=\'"+c+"\' 23=\'"+d+"\'/>"+"<4 5=\'2D\'>"+d+"<4 5=\'2C\'>"+1n+14+R+"<4 5=\'2A\'>1l 1k 1j 1s");$("#Z").s(G);3(!(14==="")){9 12(){3($(o).N("s",12)){$(o).N("s",12)}$("#8").C();$("v").q("<4 5=\'8\'>");19(1D,1G,g);H P}$("#1U").s(12)}3(!(R==="")){9 1i(){$("#8").C();$("v").q("<4 5=\'8\'>");19(1z,1x,g);H P}$("#1X").s(1i)}o.1h=9(e){3(e==M){I=2w.2v}n{I=e.2u}3(I==27){G()}n 3(I==3k){3(!(R=="")){o.1h="";1i()}}n 3(I==3j){3(!(14=="")){o.1h="";12()}}};16();$("#K").C();$("#1L").s(G);$("#8").r({Y:"T"})};S.L=f}n{6 l=f.2r(/^[^\\?]+\\??/,\'\');6 m=2p(l);13=(m[\'z\']*1)+30||3h;1a=(m[\'A\']*1)+3g||3f;W=13-30;V=1a-3e;3(f.O(\'2j\')!=-1){1E=f.1B(\'3d\');$("#15").C();3(m[\'1A\']!="1b"){$("#8").q("<4 5=\'2f\'><4 5=\'1H\'>"+d+"<4 5=\'2e\'>1l 1k 1j 1s ")}n{$("#B").N();$("#8").q(" ")}}n{3($("#8").r("Y")!="T"){3(m[\'1A\']!="1b"){$("#8").q("<4 5=\'2f\'><4 5=\'1H\'>"+d+"<4 5=\'2e\'>1l 1k 1j 1s<4 5=\'F\' J=\'z:"+W+"p;A:"+V+"p\'>")}n{$("#B").N();$("#8").q("<4 5=\'F\' 3c=\'3b\' J=\'z:"+W+"p;A:"+V+"p;\'>")}}n{$("#F")[0].J.z=W+"p";$("#F")[0].J.A=V+"p";$("#F")[0].3a=0;$("#1H").11(d)}}$("#Z").s(G);3(f.O(\'37\')!=-1){$("#F").q($(\'#\'+m[\'26\']).1T());$("#8").24(9(){$(\'#\'+m[\'26\']).q($("#F").1T())});16();$("#K").C();$("#8").r({Y:"T"})}n 3(f.O(\'2j\')!=-1){16();3($.1q.35){$("#K").C();$("#8").r({Y:"T"})}}n{$("#F").34(f+="&1y="+(1p 33().32()),9(){16();$("#K").C();1u("#F a.18");$("#8").r({Y:"T"})})}}3(!m[\'1A\']){o.21=9(e){3(e==M){I=2w.2v}n{I=e.2u}3(I==27){G()}}}}31(e){}}9 1m(){$("#K").C();$("#8").r({Y:"T"})}9 G(){$("#2Y").N("s");$("#Z").N("s");$("#8").2X("2W",9(){$(\'#8,#B,#1F\').2V("24").N().C()});$("#K").C();3(2t o.v.J.2i=="2g"){$("v","11").r({A:"1Z",z:"1Z"});$("11").r("22","")}o.1h="";o.21="";H P}9 16(){$("#8").r({2U:\'-\'+20((13/2),10)+\'p\',z:13+\'p\'});3(!(1V.1q.2Q&&1V.1q.2P<7)){$("#8").r({38:\'-\'+20((1a/2),10)+\'p\'})}}9 2p(a){6 b={};3(!a){H b}6 c=a.1B(/[;&]/);25(6 i=0;i + + + + + + + File: abstract_block.rb [asciidoctor-0.0.9 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-23 09:53:12 -0700
+ + +
Requires
+
+
    + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/abstract_node_rb.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/abstract_node_rb.html new file mode 100644 index 00000000..3a3ac262 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/abstract_node_rb.html @@ -0,0 +1,56 @@ + + + + + + + + File: abstract_node.rb [asciidoctor-0.0.9 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-23 09:53:12 -0700
+ + +
Requires
+
+
    + +
+
+ + + +
+
+ +
+ +
+

Description

+ +

Public: An abstract base class that provides state and methods for managing +a node of AsciiDoc content. The state and methods on this class are comment +to all content segments in an AsciiDoc document.

+ +
+ +
+ + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/attribute_list_rb.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/attribute_list_rb.html new file mode 100644 index 00000000..21d53252 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/attribute_list_rb.html @@ -0,0 +1,74 @@ + + + + + + + + File: attribute_list.rb [asciidoctor-0.0.9 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-23 09:53:12 -0700
+ + +
Requires
+
+
    + +
+
+ + + +
+
+ +
+ +
+

Description

+ +

Public: Handles parsing AsciiDoc attribute lists into a Hash of key/value +pairs. By default, attributes must each be separated by a comma and quotes +may be used around the value. If a key is not detected, the value is +assigned to a 1-based positional key, The positional attributes can be +“rekeyed” when given a posattrs array either during parsing or after the +fact.

+ +

Examples

+ +
attrlist = Asciidoctor::AttributeList.new('astyle')
+
+attrlist.parse
+=> {0 => 'astyle'} 
+
+attrlist.rekey(['style'])
+=> {'style' => 'astyle'}
+
+attrlist = Asciidoctor::AttributeList.new('quote, Famous Person, Famous Book (2001)')
+
+attrlist.parse(['style', 'attribution', 'citetitle'])
+=> {'style' => 'quote', 'attribution' => 'Famous Person', 'citetitle' => 'Famous Book (2001)'}
+ +
+ +
+ + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/backends/base_template_rb.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/backends/base_template_rb.html new file mode 100644 index 00000000..eb1789be --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/backends/base_template_rb.html @@ -0,0 +1,60 @@ + + + + + + + + File: base_template.rb [asciidoctor-0.0.9 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-23 09:53:12 -0700
+ + +
Requires
+
+
    + +
+
+ + + +
+
+ +
+ +
+

Description

+ +

An abstract base class that provides methods for definining and rendering +the backend templates. Concrete subclasses must implement the template +method.

+ +

NOTE we must use double quotes for attribute values in the HTML/XML output +to prevent quote processing. This requirement seems hackish, but AsciiDoc +has this same issue.

+ +
+ +
+ + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/backends/docbook45_rb.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/backends/docbook45_rb.html new file mode 100644 index 00000000..f271d516 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/backends/docbook45_rb.html @@ -0,0 +1,52 @@ + + + + + + + + File: docbook45.rb [asciidoctor-0.0.9 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-23 09:53:12 -0700
+ + +
Requires
+
+
    + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/backends/html5_rb.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/backends/html5_rb.html new file mode 100644 index 00000000..dfe72ed3 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/backends/html5_rb.html @@ -0,0 +1,52 @@ + + + + + + + + File: html5.rb [asciidoctor-0.0.9 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-23 09:53:12 -0700
+ + +
Requires
+
+
    + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/block_rb.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/block_rb.html new file mode 100644 index 00000000..a52d24a6 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/block_rb.html @@ -0,0 +1,60 @@ + + + + + + + + File: block.rb [asciidoctor-0.0.9 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-23 09:53:12 -0700
+ + +
Requires
+
+
    + +
+
+ + + +
+
+ +
+ +
+

Description

+ +

Public: Methods for managing blocks of Asciidoc content in a section.

+ +

Examples

+ +
block = Asciidoctor::Block.new(document, :paragraph, ["`This` is a <test>"])
+block.content
+=> ["<em>This</em> is a &lt;test&gt;"]
+ +
+ +
+ + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/callouts_rb.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/callouts_rb.html new file mode 100644 index 00000000..0ede1f70 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/callouts_rb.html @@ -0,0 +1,54 @@ + + + + + + + + File: callouts.rb [asciidoctor-0.0.9 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-23 09:53:12 -0700
+ + +
Requires
+
+
    + +
+
+ + + +
+
+ +
+ +
+

Description

+ +

Public: Maintains a catalog of callouts and their associations.

+ +
+ +
+ + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/debug_rb.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/debug_rb.html new file mode 100644 index 00000000..dfb25a58 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/debug_rb.html @@ -0,0 +1,52 @@ + + + + + + + + File: debug.rb [asciidoctor-0.0.9 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-23 09:53:12 -0700
+ + +
Requires
+
+
    + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/document_rb.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/document_rb.html new file mode 100644 index 00000000..355ce3c2 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/document_rb.html @@ -0,0 +1,71 @@ + + + + + + + + File: document.rb [asciidoctor-0.0.9 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-23 09:53:12 -0700
+ + +
Requires
+
+
    + +
+
+ + + +
+
+ +
+ +
+

Description

+ +

Public: Methods for parsing Asciidoc documents and rendering them using erb +templates.

+ +

There are several strategies for getting the title of the document:

+ +

doctitle - value of title attribute, if assigned and non-empty,

+ +
otherwise title of first section in document, if present
+otherwise nil
+ +

name - an alias of doctitle title - value of the title attribute, or nil if +not present first_section.title - title of first section in document, if +present header.title - title of section level 0

+ +

Keep in mind that you’ll want to honor these document settings:

+ +

notitle - The h1 heading should not be shown noheader - The header block +(h1 heading, author, revision info) should not be shown

+ +
+ +
+ + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/errors_rb.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/errors_rb.html new file mode 100644 index 00000000..7fca7c7f --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/errors_rb.html @@ -0,0 +1,54 @@ + + + + + + + + File: errors.rb [asciidoctor-0.0.9 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-23 09:53:12 -0700
+ + +
Requires
+
+
    + +
+
+ + + +
+
+ +
+ +
+

Description

+ +

Base project exception

+ +
+ +
+ + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/inline_rb.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/inline_rb.html new file mode 100644 index 00000000..8fa7ac6a --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/inline_rb.html @@ -0,0 +1,54 @@ + + + + + + + + File: inline.rb [asciidoctor-0.0.9 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-23 09:53:12 -0700
+ + +
Requires
+
+
    + +
+
+ + + +
+
+ +
+ +
+

Description

+ +

Public: Methods for managing inline elements in AsciiDoc block

+ +
+ +
+ + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/lexer_rb.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/lexer_rb.html new file mode 100644 index 00000000..8e47371b --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/lexer_rb.html @@ -0,0 +1,75 @@ + + + + + + + + File: lexer.rb [asciidoctor-0.0.9 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-23 09:53:12 -0700
+ + +
Requires
+
+
    + +
+
+ + + +
+
+ +
+ +
+

Description

+ +

Public: Methods to parse lines of AsciiDoc into an object hierarchy +representing the structure of the document. All methods are class methods +and should be invoked from the Lexer class. The main entry point is +::next_block. No Lexer instances shall be discovered running around. (Any +attempt to instantiate a Lexer will be futile).

+ +

The object hierarchy created by the Lexer consists of zero or more Section +and Block objects. Section objects may be nested and a Section object +contains zero or more Block objects. Block objects may be nested, but may +only contain other Block objects. Block objects which represent lists may +contain zero or more ListItem objects.

+ +

Examples

+ +
# Create a Reader for the AsciiDoc lines and retrieve the next block from it.
+# Lexer::next_block requires a parent, so we begin by instantiating an empty Document.
+
+doc = Document.new
+reader = Reader.new lines
+block = Lexer.next_block(reader, doc)
+block.class
+# => Asciidoctor::Block
+ +
+ +
+ + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/list_item_rb.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/list_item_rb.html new file mode 100644 index 00000000..88c09402 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/list_item_rb.html @@ -0,0 +1,54 @@ + + + + + + + + File: list_item.rb [asciidoctor-0.0.9 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-23 09:53:12 -0700
+ + +
Requires
+
+
    + +
+
+ + + +
+
+ +
+ +
+

Description

+ +

Public: Methods for managing items for AsciiDoc olists, ulist, and dlists.

+ +
+ +
+ + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/reader_rb.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/reader_rb.html new file mode 100644 index 00000000..1e53b9bb --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/reader_rb.html @@ -0,0 +1,54 @@ + + + + + + + + File: reader.rb [asciidoctor-0.0.9 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-23 09:53:12 -0700
+ + +
Requires
+
+
    + +
+
+ + + +
+
+ +
+ +
+

Description

+ +

Public: Methods for retrieving lines from Asciidoc documents

+ +
+ +
+ + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/renderer_rb.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/renderer_rb.html new file mode 100644 index 00000000..6bae5582 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/renderer_rb.html @@ -0,0 +1,57 @@ + + + + + + + + File: renderer.rb [asciidoctor-0.0.9 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-23 09:53:12 -0700
+ + +
Requires
+
+
    + +
  • asciidoctor/backends/
  • + +
+
+ + + +
+
+ +
+ +
+

Description

+ +

Public: Methods for rendering Asciidoc Documents, Sections, and Blocks +using eRuby templates.

+ +
+ +
+ + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/section_rb.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/section_rb.html new file mode 100644 index 00000000..48018820 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/section_rb.html @@ -0,0 +1,72 @@ + + + + + + + + File: section.rb [asciidoctor-0.0.9 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-23 09:53:12 -0700
+ + +
Requires
+
+
    + +
+
+ + + +
+
+ +
+ +
+

Description

+ +

Public: Methods for managing sections of AsciiDoc content in a document. +The section responds as an Array of content blocks by delegating +block-related methods to its @blocks Array.

+ +

Examples

+ +
section = Asciidoctor::Section.new
+section.title = 'Section 1'
+section.id = 'sect1'
+
+section.size
+=> 0
+
+section.id
+=> "sect1"
+
+section << new_block
+section.size
+=> 1
+ +
+ +
+ + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/substituters_rb.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/substituters_rb.html new file mode 100644 index 00000000..76c3c7a4 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/substituters_rb.html @@ -0,0 +1,56 @@ + + + + + + + + File: substituters.rb [asciidoctor-0.0.9 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-23 09:53:12 -0700
+ + +
Requires
+
+
    + +
+
+ + + +
+
+ +
+ +
+

Description

+ +

Public: Methods to perform substitutions on lines of AsciiDoc text. This +module is intented to be mixed-in to Section and Block to provide +operations for performing the necessary substitutions.

+ +
+ +
+ + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/table_rb.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/table_rb.html new file mode 100644 index 00000000..a35485ed --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/table_rb.html @@ -0,0 +1,52 @@ + + + + + + + + File: table.rb [asciidoctor-0.0.9 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-23 09:53:12 -0700
+ + +
Requires
+
+
    + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/version_rb.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/version_rb.html new file mode 100644 index 00000000..1031b16b --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor/version_rb.html @@ -0,0 +1,52 @@ + + + + + + + + File: version.rb [asciidoctor-0.0.9 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-23 09:53:12 -0700
+ + +
Requires
+
+
    + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor_rb.html b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor_rb.html new file mode 100644 index 00000000..73174610 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/lib/asciidoctor_rb.html @@ -0,0 +1,92 @@ + + + + + + + + File: asciidoctor.rb [asciidoctor-0.0.9 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-23 09:53:12 -0700
+ + +
Requires
+
+
    + +
  • rubygems
  • + +
  • strscan
  • + +
  • asciidoctor/substituters
  • + +
  • asciidoctor/abstract_node
  • + +
  • asciidoctor/abstract_block
  • + +
  • asciidoctor/attribute_list
  • + +
  • asciidoctor/backends/base_template
  • + +
  • asciidoctor/block
  • + +
  • asciidoctor/callouts
  • + +
  • asciidoctor/debug
  • + +
  • asciidoctor/document
  • + +
  • asciidoctor/errors
  • + +
  • asciidoctor/inline
  • + +
  • asciidoctor/lexer
  • + +
  • asciidoctor/list_item
  • + +
  • asciidoctor/reader
  • + +
  • asciidoctor/renderer
  • + +
  • asciidoctor/section
  • + +
  • asciidoctor/table
  • + +
  • asciidoctor/version
  • + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/asciidoctor-0.0.9/rdoc/rdoc.css b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/rdoc.css new file mode 100644 index 00000000..ea914218 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/rdoc/rdoc.css @@ -0,0 +1,763 @@ +/* + * "Darkfish" Rdoc CSS + * $Id: rdoc.css 54 2009-01-27 01:09:48Z deveiant $ + * + * Author: Michael Granger + * + */ + +/* Base Green is: #6C8C22 */ + +*{ padding: 0; margin: 0; } + +body { + background: #efefef; + font: 14px "Helvetica Neue", Helvetica, Tahoma, sans-serif; +} +body.class, body.module, body.file { + margin-left: 40px; +} +body.file-popup { + font-size: 90%; + margin-left: 0; +} + +h1 { + font-size: 300%; + text-shadow: rgba(135,145,135,0.65) 2px 2px 3px; + color: #6C8C22; +} +h2,h3,h4 { margin-top: 1.5em; } + +:link, +:visited { + color: #6C8C22; + text-decoration: none; +} +:link:hover, +:visited:hover { + border-bottom: 1px dotted #6C8C22; +} + +pre { + background: #ddd; + padding: 0.5em 0; +} + + +/* @group Generic Classes */ + +.initially-hidden { + display: none; +} + +.quicksearch-field { + width: 98%; + background: #ddd; + border: 1px solid #aaa; + height: 1.5em; + -webkit-border-radius: 4px; +} +.quicksearch-field:focus { + background: #f1edba; +} + +.missing-docs { + font-size: 120%; + background: white url(images/wrench_orange.png) no-repeat 4px center; + color: #ccc; + line-height: 2em; + border: 1px solid #d00; + opacity: 1; + padding-left: 20px; + text-indent: 24px; + letter-spacing: 3px; + font-weight: bold; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; +} + +.target-section { + border: 2px solid #dcce90; + border-left-width: 8px; + padding: 0 1em; + background: #fff3c2; +} + +/* @end */ + + +/* @group Index Page, Standalone file pages */ +body.indexpage { + margin: 1em 3em; +} +body.indexpage p, +body.indexpage div, +body.file p { + margin: 1em 0; +} + +.indexpage .rdoc-list p, .file .rdoc-list p { + margin: 0em 0; +} + +.indexpage ol, +.file #documentation ol { + line-height: 160%; +} + +.indexpage ul, +.file #documentation ul { + line-height: 160%; + list-style: none; +} +.indexpage ul :link, +.indexpage ul :visited { + font-size: 16px; +} + +.indexpage li, +.file #documentation li { + padding-left: 20px; +} + +.indexpage ol, +.file #documentation ol { + margin-left: 20px; +} + +.indexpage ol > li, +.file #documentation ol > li { + padding-left: 0; +} + +.indexpage ul > li, +.file #documentation ul > li { + background: url(images/bullet_black.png) no-repeat left 4px; +} +.indexpage li.module { + background: url(images/package.png) no-repeat left 4px; +} +.indexpage li.class { + background: url(images/ruby.png) no-repeat left 4px; +} +.indexpage li.file { + background: url(images/page_white_text.png) no-repeat left 4px; +} +.file li p, +.indexpage li p { + margin: 0 0; +} + +/* @end */ + +/* @group Top-Level Structure */ + +.class #metadata, +.file #metadata, +.module #metadata { + float: left; + width: 260px; +} + +.class #documentation, +.file #documentation, +.module #documentation { + margin: 2em 1em 5em 300px; + min-width: 340px; +} + +.file #metadata { + margin: 0.8em; +} + +#validator-badges { + clear: both; + margin: 1em 1em 2em; +} + +/* @end */ + +/* @group Metadata Section */ +#metadata .section { + background-color: #dedede; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border: 1px solid #aaa; + margin: 0 8px 16px; + font-size: 90%; + overflow: hidden; +} +#metadata h3.section-header { + margin: 0; + padding: 2px 8px; + background: #ccc; + color: #666; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-bottom: 1px solid #aaa; +} +#metadata #home-section h3.section-header { + border-bottom: 0; +} + +#metadata ul, +#metadata dl, +#metadata p { + padding: 8px; + list-style: none; +} + +#file-metadata ul { + padding-left: 28px; + list-style-image: url(images/page_green.png); +} + +dl.svninfo { + color: #666; + margin: 0; +} +dl.svninfo dt { + font-weight: bold; +} + +ul.link-list li { + white-space: nowrap; +} +ul.link-list .type { + font-size: 8px; + text-transform: uppercase; + color: white; + background: #969696; + padding: 2px 4px; + -webkit-border-radius: 5px; +} + +/* @end */ + + +/* @group Project Metadata Section */ +#project-metadata { + margin-top: 3em; +} + +.file #project-metadata { + margin-top: 0em; +} + +#project-metadata .section { + border: 1px solid #aaa; +} +#project-metadata h3.section-header { + border-bottom: 1px solid #aaa; + position: relative; +} +#project-metadata h3.section-header .search-toggle { + position: absolute; + right: 5px; +} + + +#project-metadata form { + color: #777; + background: #ccc; + padding: 8px 8px 16px; + border-bottom: 1px solid #bbb; +} +#project-metadata fieldset { + border: 0; +} + +#no-class-search-results { + margin: 0 auto 1em; + text-align: center; + font-size: 14px; + font-weight: bold; + color: #aaa; +} + +/* @end */ + + +/* @group Documentation Section */ +.description { + font-size: 100%; + color: #333; +} + +.description p { + margin: 1em 0.4em; +} + +.description li p { + margin: 0; +} + +.description ul { + margin-left: 1.5em; +} +.description ul li { + line-height: 1.4em; +} + +.description dl, +#documentation dl { + margin: 8px 1.5em; + border: 1px solid #ccc; +} +.description dl { + font-size: 14px; +} + +.description dt, +#documentation dt { + padding: 2px 4px; + font-weight: bold; + background: #ddd; +} +.description dd, +#documentation dd { + padding: 2px 12px; +} +.description dd + dt, +#documentation dd + dt { + margin-top: 0.7em; +} + +#documentation .section { + font-size: 90%; +} + +#documentation h2.section-header { + margin-top: 2em; + padding: 0.75em 0.5em; + background: #ccc; + color: #333; + font-size: 175%; + border: 1px solid #bbb; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +#documentation h3.section-header { + margin-top: 2em; + padding: 0.25em 0.5em; + background-color: #dedede; + color: #333; + font-size: 150%; + border: 1px solid #bbb; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +#constants-list > dl, +#attributes-list > dl { + margin: 1em 0 2em; + border: 0; +} +#constants-list > dl dt, +#attributes-list > dl dt { + padding-left: 0; + font-weight: bold; + font-family: Monaco, "Andale Mono"; + background: inherit; +} +#constants-list > dl dt a, +#attributes-list > dl dt a { + color: inherit; +} +#constants-list > dl dd, +#attributes-list > dl dd { + margin: 0 0 1em 0; + padding: 0; + color: #666; +} + +.documentation-section h2 { + position: relative; +} + +.documentation-section h2 a { + position: absolute; + top: 8px; + right: 10px; + font-size: 12px; + color: #9b9877; + visibility: hidden; +} + +.documentation-section h2:hover a { + visibility: visible; +} + +/* @group Method Details */ + +#documentation .method-source-code { + display: none; +} + +#documentation .method-detail { + margin: 0.5em 0; + padding: 0.5em 0; + cursor: pointer; +} +#documentation .method-detail:hover { + background-color: #f1edba; +} +#documentation .method-heading { + position: relative; + padding: 2px 4px 0 20px; + font-size: 125%; + font-weight: bold; + color: #333; + background: url(images/brick.png) no-repeat left bottom; +} +#documentation .method-heading :link, +#documentation .method-heading :visited { + color: inherit; +} +#documentation .method-click-advice { + position: absolute; + top: 2px; + right: 5px; + font-size: 10px; + color: #9b9877; + visibility: hidden; + padding-right: 20px; + line-height: 20px; + background: url(images/zoom.png) no-repeat right top; +} +#documentation .method-detail:hover .method-click-advice { + visibility: visible; +} + +#documentation .method-alias .method-heading { + color: #666; + background: url(images/brick_link.png) no-repeat left bottom; +} + +#documentation .method-description, +#documentation .aliases { + margin: 0 20px; + color: #666; +} + +#documentation .method-description p, +#documentation .aliases p { + line-height: 1.2em; +} + +#documentation .aliases { + padding-top: 4px; + font-style: italic; + cursor: default; +} +#documentation .method-description p { + padding: 0; +} +#documentation .method-description p + p { + margin-bottom: 0.5em; +} +#documentation .method-description ul { + margin-left: 1.5em; +} + +#documentation .attribute-method-heading { + background: url(images/tag_green.png) no-repeat left bottom; +} +#documentation #attribute-method-details .method-detail:hover { + background-color: transparent; + cursor: default; +} +#documentation .attribute-access-type { + font-size: 60%; + text-transform: uppercase; + vertical-align: super; + padding: 0 2px; +} +/* @end */ + +/* @end */ + + + +/* @group Source Code */ + +div.method-source-code { + background: #262626; + color: #efefef; + margin: 1em; + padding: 0.5em; + border: 1px dashed #999; + overflow: hidden; +} + +div.method-source-code pre { + background: inherit; + padding: 0; + color: white; + overflow: auto; +} + +/* @group Ruby keyword styles */ + +.ruby-constant { color: #7fffd4; background: transparent; } +.ruby-keyword { color: #00ffff; background: transparent; } +.ruby-ivar { color: #eedd82; background: transparent; } +.ruby-operator { color: #00ffee; background: transparent; } +.ruby-identifier { color: #ffdead; background: transparent; } +.ruby-node { color: #ffa07a; background: transparent; } +.ruby-comment { color: #b22222; font-weight: bold; background: transparent; } +.ruby-regexp { color: #ffa07a; background: transparent; } +.ruby-value { color: #7fffd4; background: transparent; } + +/* @end */ +/* @end */ + + +/* @group File Popup Contents */ + +.file #metadata, +.file-popup #metadata { +} + +.file-popup dl { + font-size: 80%; + padding: 0.75em; + background-color: #dedede; + color: #333; + border: 1px solid #bbb; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} +.file dt { + font-weight: bold; + padding-left: 22px; + line-height: 20px; + background: url(images/page_white_width.png) no-repeat left top; +} +.file dt.modified-date { + background: url(images/date.png) no-repeat left top; +} +.file dt.requires { + background: url(images/plugin.png) no-repeat left top; +} +.file dt.scs-url { + background: url(images/wrench.png) no-repeat left top; +} + +.file dl dd { + margin: 0 0 1em 0; +} +.file #metadata dl dd ul { + list-style: circle; + margin-left: 20px; + padding-top: 0; +} +.file #metadata dl dd ul li { +} + + +.file h2 { + margin-top: 2em; + padding: 0.75em 0.5em; + background-color: #dedede; + color: #333; + font-size: 120%; + border: 1px solid #bbb; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +/* @end */ + + + + +/* @group ThickBox Styles */ +#TB_window { + font: 12px Arial, Helvetica, sans-serif; + color: #333333; +} + +#TB_secondLine { + font: 10px Arial, Helvetica, sans-serif; + color:#666666; +} + +#TB_window :link, +#TB_window :visited { color: #666666; } +#TB_window :link:hover, +#TB_window :visited:hover { color: #000; } +#TB_window :link:active, +#TB_window :visited:active { color: #666666; } +#TB_window :link:focus, +#TB_window :visited:focus { color: #666666; } + +#TB_overlay { + position: fixed; + z-index:100; + top: 0px; + left: 0px; + height:100%; + width:100%; +} + +.TB_overlayMacFFBGHack {background: url(images/macFFBgHack.png) repeat;} +.TB_overlayBG { + background-color:#000; + filter:alpha(opacity=75); + -moz-opacity: 0.75; + opacity: 0.75; +} + +* html #TB_overlay { /* ie6 hack */ + position: absolute; + height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'); +} + +#TB_window { + position: fixed; + background: #ffffff; + z-index: 102; + color:#000000; + display:none; + border: 4px solid #525252; + text-align:left; + top:50%; + left:50%; +} + +* html #TB_window { /* ie6 hack */ + position: absolute; + margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px'); +} + +#TB_window img#TB_Image { + display:block; + margin: 15px 0 0 15px; + border-right: 1px solid #ccc; + border-bottom: 1px solid #ccc; + border-top: 1px solid #666; + border-left: 1px solid #666; +} + +#TB_caption{ + height:25px; + padding:7px 30px 10px 25px; + float:left; +} + +#TB_closeWindow{ + height:25px; + padding:11px 25px 10px 0; + float:right; +} + +#TB_closeAjaxWindow{ + padding:7px 10px 5px 0; + margin-bottom:1px; + text-align:right; + float:right; +} + +#TB_ajaxWindowTitle{ + float:left; + padding:7px 0 5px 10px; + margin-bottom:1px; + font-size: 22px; +} + +#TB_title{ + background-color: #6C8C22; + color: #dedede; + height:40px; +} +#TB_title :link, +#TB_title :visited { + color: white !important; + border-bottom: 1px dotted #dedede; +} + +#TB_ajaxContent{ + clear:both; + padding:2px 15px 15px 15px; + overflow:auto; + text-align:left; + line-height:1.4em; +} + +#TB_ajaxContent.TB_modal{ + padding:15px; +} + +#TB_ajaxContent p{ + padding:5px 0px 5px 0px; +} + +#TB_load{ + position: fixed; + display:none; + height:13px; + width:208px; + z-index:103; + top: 50%; + left: 50%; + margin: -6px 0 0 -104px; /* -height/2 0 0 -width/2 */ +} + +* html #TB_load { /* ie6 hack */ + position: absolute; + margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px'); +} + +#TB_HideSelect{ + z-index:99; + position:fixed; + top: 0; + left: 0; + background-color:#fff; + border:none; + filter:alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; + height:100%; + width:100%; +} + +* html #TB_HideSelect { /* ie6 hack */ + position: absolute; + height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'); +} + +#TB_iframeContent{ + clear:both; + border:none; + margin-bottom:-1px; + margin-top:1px; + _margin-bottom:1px; +} + +/* @end */ + +/* @group Debugging Section */ + +#debugging-toggle { + text-align: center; +} +#debugging-toggle img { + cursor: pointer; +} + +#rdoc-debugging-section-dump { + display: none; + margin: 0 2em 2em; + background: #ccc; + border: 1px solid #999; +} + + + +/* @end */ diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/%3c%3c-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/%3c%3c-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..610c4d7ae0a1cd1656115f08e0749eec94e35a2d GIT binary patch literal 638 zcma))&riZI9K}7Dp`ykZjR!q^t%-m^1das^ppq=n#1Qnd7}Jf)8cN%=CF*}~*P;01 z;$=(Q_dc)Rm#(fo;Jx9sOfc?=_d9A+IgWN%5TZi69pK<*5F*qw31efKSgD;XHdd3w z_PI=^Cr;D~1_NAF^O&$vNAz^AFm~kmj0#)8#jYaSnrKVnqo104qRB)Pl?JW# z$R%IhdlrVCQdEqAKq7^85Qwu(uo7&_Oui}^;LKQ%FZtTk+=WJeGWwi|=`9mN;*u@Z?nB8~oW&Pp Q`ED-A;@Lds@jA|QA0b!1ApigX literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/%5b%5d-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/%5b%5d-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..0c50855b9e30fc517174c660e76b1c47b90ad337 GIT binary patch literal 494 zcmZvZ%}WA77>7N?YD(cDy4c}mg0w?w$Hos-%2-H{vM!6n%=oH<>&!AcOZne7yRJmo zX@(yU&--;!dZ!n!k6KVVRJ#eG`A>%suKojeSCfv5<11h1JGkJhp}jI|{Yf zTsx@ajmNYSB|MZu)7oA(VP=y=lsa>=MP-Y$GKiS5aZuLu>Mt{8hOG>X)?Vi{aFrjX znTx_RTCi&b3^8>8vmimLEMvy79q1+Sw2!#y+L#@gMrF7kXLg)xS!|bS+5Vo5hNAU@?a@LY`5D%!6&7LyiEu9$xSGEi~ZiI#qu+K KX8UOxo^n5yO_SCD literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/assign_index-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/assign_index-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..16e9014ad709f45308cbadf2b1c264d6009b6e1d GIT binary patch literal 459 zcmZvY&r8EF6vuavOg9(`yD1VXNC)bAPDR$Cg@6MQJ@qisG~2@JdnHM6{`V$zAVbgJ z_deerN5}7M{Q8KJu?)Tz%5AVJPBr1tnXp!`VX2`~JHp6Q&ZC>mO06rD4vl{(tusQp zd5v;=b#R`NJZHnEEo&{2o&OjtgxR(YW8SU(P~iG(IBSG)wiqD0IJ|igMy!o!HY7bM ze3}OiP8kq2qgj`Wx{acsc8+!dX`I}a!m4UQ9ePb$YL#>vfu!W^4}M+?*gk7eJxm9| zqR*rI|G~IAz|l|b>CoBx@V-Vc;L&Bb0*$@o_v!jkG?g-wpwC8oA75o`lxq!G3K&T1 pptHejrE8TWNzvocDBfr9etC3V>vAf7r=N=b^2;(ze`m_T_y$YBlsW(a literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/blocks%3f-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/blocks%3f-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..f7ef132ccc5dbd21c4941876e9f34a2bc834d287 GIT binary patch literal 369 zcmZvY&r1U_5QTe?w6-2Rc+*2z!5Dj zx0&;wWX6gDCT&+6EgYPFW0y!x*8)UGw~;msVUo89bt3jCzudbsiE_7jZJ;mRZrnnpFweNL9^|sO%IRJN$ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/blocks-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/blocks-i.ri new file mode 100644 index 00000000..489b68ad --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/blocks-i.ri @@ -0,0 +1,2 @@ +U:RDoc::Attr[ iI" blocks:EFI"&Asciidoctor::AbstractBlock#blocks;FI"R;F: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [I"RPublic: Get the Array of Asciidoctor::AbstractBlock sub-blocks for this block;T: +@file0FI"&lib/asciidoctor/abstract_block.rb;T \ No newline at end of file diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/cdesc-AbstractBlock.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/cdesc-AbstractBlock.ri new file mode 100644 index 0000000000000000000000000000000000000000..8790d3ab8de3714af2e997efceefc9f93ddf2556 GIT binary patch literal 613 zcmZut%}c{D6z@UW*>1xLdJzcPzuqLB>qJk< z`@Q%3c<-S1j82PtNfBB|wIckE6Rq)(g?V~BtF%#snp-aEGDP9SJWnrXnle^PYNSHw z_e2)jf%AU{7P5xW_9Z%N-5!Zrt{a4`^?C)uL@1dyL>Y|(6i?q6hilx!ah@iXbJvcX zr(xkcY;>CTkcs@PyJ;Mz5`K-lW zE5HGcaAe8UoyBo%s3?nZ=+K^k4~JQi2n`!04NwEMBcXny*oGKzMV=0r(1r-=J+=}f z*N7&Q9|c?B*RB{@L-sC8CTjTX;C_3Kn+_RK4n(#4`iL%0o(^l^V4x(X8%=BsPb62*g6!+1$Vg(G!Pt}}W$eFSYFjqZ zr-XZd_ngDMM~!#fetA?3<8ksc<#weO@u>h2I%AR({Yj-_YXdNN3M14V8z#g;F{`v2 zpvG##>?B97ckn(4L)=O;Dg{%xQy5H%US}!B&Mn*U#MW_ZloD-C+)(&xmzfbwzBEZ! zpnn{@G{J1Eh2cY<3fh%0aO>+CD21_5EnyMW2Yv9ir#F!#SwD+}*Y@Ika7~F7o80Ln zLLI}I6)J&4_*(q@gnu`ks#^dk-}4F@44}7E$~#o2L|658$@@jdlD-(;!x*`7)P=~= zXkIohEByab%idwBW-c|)L*nLWDJ1XpdT}j6_1n85`Hd7bAb;lzNO`^D!oH^Y-hKfY CZJ+4? literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/delete_at-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/delete_at-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..70d1de8dc3a98f7b36d651611be77384f1544860 GIT binary patch literal 635 zcmZva-%A@o5XXHe8yg|^LHbaA7*@~(+L*qTjg}Z<;6Opt_T?zDcbOzZF1ulFkLrK# z?)^~w@pQ-BXFl`2+5NQrNA2BAY^v0`dAvfmw6pjNiAZ*4n4!aa?Sv8+(@6Ht^OR_2 zQ)k)JN$yyuZk*Y4b@;*##dNB6Hbs(AYSn(FzS6uZHcI(9#Tt!ksh!bAv&-YQRR^z` zYt4GWdb1S6&v7e~lk3u@U{dA*w?y!7K?B+W0hzLFc`#J dk=*W5uUhs|M#+hOxh*HUzAX2ptyk~B}!IOi0 zNd{liJ;5$-N-s`D*@OaB)`Vz6WsyrE(6H3h=UU+c^_-%a>;Lf^W%L!4crqX}!CD#m zK<%PZeXmeI6qsaSR##~BjvX}W5^bbE=q$#F82zLj1?S+ojxw9I)UGrWEcpu={Z+E> zdj=cvVwNR1I{Yx42kj&TTo;iCf*pIU0$LNz?yA3@(f?v05-)<(>(?zb9MWWAZSt8e z;bp6TulZh8rTw!@6A3Qq)aP2;{c^UxR==ezdb2KNk*$^&_Eb`z0# z%dhwSe)9bu^j`UJd2a;gQ~k9-SC~9KmO&Dp5K5in=gOjR(r6p-;9;JG(bNhlb0eG~ zKa^QVAlytDQJ(LO#KC;d2UVRZDGWc|8ZCgzy5iis*6*lYmk%Ztkh5vu@Uy>fo`7IO zP!&OZn0l(4L^~u6inAqxwQ{4GE0FCVS&NJ|h=Z3st(gK{K1z)p6ZadvUJ~BDfht>t z9IZhAVeKq4>-I?0M1IeHK$#)-yiKDqNWv-ToY8+A(QO76^DPhi097M%h9QXJufzpd zCLM#SLLk4?%tzbC;@xtjQR6f@+7bH%hJ>yrZJ9Q%kb2YH^ZsNl6-H5%c9O7rb?py* XRhLR;WB9FW47;{gSyR`DvS#=jD`cpT literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/sections-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/sections-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..53fae60e5fe0cabeca7eb52622eaafb5bb26c610 GIT binary patch literal 713 zcmb`FOHTqZ6opxsK|zcQceuC#Ban~*bXOh$A{Y{h#Mg#}>69Xs(oWhE#b0lk2ZOqG zHJzDz&pG|>Jve+uXAd`$Ak-6^F*OT0o1QXfRLE&c43k1T$QcYrg>p|5#%7Wjscf;Q zjl#tAxg^WtuC(b4hbZf>JyFOM%PjeET|E!r{h2IqR z7f$nNYExWK0xbl$)PPw~=qZIaAm>09jL+aP3<=VEws)LK`dy4RpIFNqcVaiB~?~{rG*=7pgpL*lO#R9Tj3g(2fJU zf_{`O1dF3$GdUJ;C!z?g76e#>n&@K{kgX2URH3vxL!%V;U+ncqSpLoBYUh%VT-@lX zUCq8|bcN$0v^&rU-V#`4Ma^0XZP6ySgK0~FhOJ%NF8=uI?bwJx zJiYe&zWuz{_YMwU(dpB@qzDbg*OZx+oF~T|#Ga%1HvEEDT#R1x1k&8{`6#vb=^|*gV(O6@=hrk3CAUSU+;X8ZvZi{?Ygo zXL-tW`66oX_58*Z!G>q0y&ZcU&8Xp0zyW-&PQG9t76$BeKpjtNlV6Uc*4)7z4F34e zwy=I5b{A51>->&Ru-fYXaUILOEz2V}TJV$wL69_JuX%k_^>meT(!;-7>*0E7@0+pt Iij*J!0m+P(DgXcg literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/title%3f-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/title%3f-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..9960bd07837c967f5c64c543ce87a0a11e7d87df GIT binary patch literal 331 zcmY*Vu};G<6l6dSkcEK_1}g|u7Mj@^Xb?n-P^AjNlmR_EhCIcwBm1?ee~%L?A=Z0$ z_wMfaYQookzOWObGjlF<)Lu;;4IZp)w$Tc^nRNR@#+D0(zb_16bt z!KzB6<5n6}PF(()uEF=)QHc0qJ7`OZNLM3x3Jr7O>OW@#9=<$`9V`}$zlSh@&@G+{svgWq5p@R2DtZf68`{Nplf9S literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/title-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/title-i.ri new file mode 100644 index 00000000..f5973a3b --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractBlock/title-i.ri @@ -0,0 +1,3 @@ +U:RDoc::Attr[ iI" +title:EFI"%Asciidoctor::AbstractBlock#title;FI"W;F: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [I"(Public: Set the String block title.;T: +@file0FI"&lib/asciidoctor/abstract_block.rb;T \ No newline at end of file diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/attr%3f-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/attr%3f-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..966bb3477cdb0488520d73f915ed1f8478a72b8c GIT binary patch literal 184 zcmYMtu?~VT6hKi1Qw=N*Zf;c*U4;2D2#Jz(z`^LmVA@h+BeYF<4F0_sOx#cIoy=~q zxE!qn$j!S{__TF3*M!lKBl-gYaw-^I=bhBLwi2x$r0CFdiDz4@)yPs(6cD*yG+J6% zj>VGuSMLCZeBUaAQ;0IhJ$6+9VfN6CN|K}s7>%}uw`xaHa%FVWXc6=OFXq49-3-6I H7hm=PdI&kG literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/attr-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/attr-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..29c31d46f660c571670c04404d2050b504171433 GIT binary patch literal 197 zcmYMty$gas7=UqyxISDOnraavD2Q}^B~U2A!G@^GA@0tTj?OzdUx)tt>;u|=JkMZs zh1vOFI6$JGxxl+Ai>V};Kcfgc5X}MEAx;7aDG~yql_jnz;OpUb#Z4 z(iCK@l!JyO;Cl2q|A7Ss92og>5Bv%2&#sk{r*sW!3T1TJf+d#)CJDo2%uo4h*n0~W zDhur{;PN<)*SB3>t3ryE7I2^?a&RaLPgu|nNVL}6s}h}X1cU-~DH^1mDV^9FD;m&H zDP0L*dUt93MYAqpwxZX>>_lNSF~Oy{+u?sejOIDY9Y%uX;imD51erbLJE-d;if~x@ zq7#Za>(dn8UcZN>|3*$Ox2nc8ep9Rb0#4h#ILh33noFDe?qu>dn`DzTegZ^RsZylAC0oW zJ2kwJuN|AEh)g!KSn7RC`(>ZE~ecK9^H= zrg)#j#<^;s!eQ=(?*An92RD404AcVg9q+X;UtV8{7SE_Hx|TU``@mE$J(+ru$t)ZF E1rTZyuK)l5 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/context-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/context-i.ri new file mode 100644 index 00000000..79df6df6 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/context-i.ri @@ -0,0 +1,2 @@ +U:RDoc::Attr[ iI" context:EFI"&Asciidoctor::AbstractNode#context;FI"R;F: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [I"1Public: Get the Symbol context for this node;T: +@file0FI"%lib/asciidoctor/abstract_node.rb;T \ No newline at end of file diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/document-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/document-i.ri new file mode 100644 index 00000000..08b9b861 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/document-i.ri @@ -0,0 +1,2 @@ +U:RDoc::Attr[ iI" document:EFI"'Asciidoctor::AbstractNode#document;FI"R;F: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [I"EPublic: Get the Asciidoctor::Document to which this node belongs;T: +@file0FI"%lib/asciidoctor/abstract_node.rb;T \ No newline at end of file diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/generate_data_uri-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/generate_data_uri-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..380c82f74ad82e4ea13cba02e81babe7f5bc02f4 GIT binary patch literal 1053 zcmZWoO>fgc5bXiElp@3dae>1q2q~3lngejy2&t*4k);+@{W_3?HMS?os_R{AcU+Wz z&#di!(OWj2eecbCZ(qE;Qt!@xx>BjR-JBAyUA1_tlWg>UMV34=6|e)U3;7}c=^9rA z+R7AxYq@C|WQ$HgGD|L>Q6Cw!Hz(TCmYcnb^gBYIY9IKE;8n16o@y6Q5s}fahzFJi zc?~*1X$Y;*>t#1{M+X6y1hrTOhHlA3`fQZTg&+_jTGo)8f#E_1Pi0Q2i+OqsV}#P# zO0#wr{;qY|v9NCmiVak>#Mba$L}uNdk{m>d;m(ewHWW62sh+^4 zEYo|{`6{AhJqw;N+E_&ax8%8Vx5qs>!a(1@P9W75joFAj51GjQqSb~6xsTJ4Eben* zTuma{;hVwi?QHa|_cZU-?86)`*lWA$w8tg?_q~^MhCyu1EA8_e+Q5Fd(Qp%45Q>%w z;-|Zg80VyreMH(*Z1zUD{+qh=LjmMay>l^gAWl@`Ybr`doPN$2lY&0G}c1&V;V#JS5 aN$=5Tql*K4c*qAhyyM(T+a|t*{HWYBY#s!T}nO6^6YFl>U}(MLdwzz zZ!DiLoVO_ar73Cm>ES^(9Oj#KQz$7+zLU@|(B3w6o- z3N6ko)>SrmGhr#`R}m|R@8rQ(1awcL@zQ7zMti#VV5a;+Ixxjw5+3#!65*VzCbipo zIOu1CZ2W@jRH458AvLX;!A9U)AN78Y1Jpc*0sOCVRDw6)TKYXlYPtuOresMA0(5Xk zN`zUBCw~i64Mu}(452`AOS(*8 zTb|~%LQm1q@zzrJuQL=?7lG7p-4qW{u_#7JMLy;g1qswp(0}YDva_X02ITX!l-6e7 z2VTw-A2qr*ui!Mnd}+f(%V8;J02e4#NC+5qwNlaxX^jpeS#`)uxaz#aXMiy;;S?Q> z+dLS`c?^9p=3ON@ir6YFBLsJg;q`^2%H^NN@yE!RX&u$DF^gyKieyuU2As@;@|h} z+6{@q&GOF9o0*;6cYF8Ir}N}x1kXc6w`F<1pC!ASwJ#DXB_Ra;Up z4({UqXH!!uazR-Ok+`IhTiTLvUZH&aBP8vp@xGI>ANQ~0+)+X3=tDqjwMZIEAPg9? zz%y;h-$|v?$72t51KhGGq|!VUW%jD(_Y+nP%Xh4d+2Cu8LmN*57Ine=t)UuiIf5G& zqMwDK?OIk&`fV=Dq+1d1^c@|X#NmrV$26L)>fKQ~Y6Tu~0Rc_M= zUztm1M3Zf_T+fJ&v>GAhh9(3Ztv_iYeQo`4i^Uda=#xJINBx&;$0z9j`0jAS_;8); zRh}&4``k+~F#W&d?Hl7R$i|g%MA7~v7ZshIoh^3aesAE04clD5RU$dX*H_>ayGP(b L@+&aXiG%$E_UmU4 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/id-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/id-i.ri new file mode 100644 index 00000000..a3cf1dc6 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/id-i.ri @@ -0,0 +1,2 @@ +U:RDoc::Attr[ iI"id:EFI"!Asciidoctor::AbstractNode#id;FI"RW;F: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [I"$Public: Get the id of this node;T: +@file0FI"%lib/asciidoctor/abstract_node.rb;T \ No newline at end of file diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/image_uri-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/image_uri-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..b3d98b44bb769098112d45baa607ab7e783278c7 GIT binary patch literal 1195 zcmZux%}*LZ6!*}qRTJZ(xAyQt(|`>kJ@hi93DioujT(a53kULc_bp5uX2{GehX1~A zW(i33Mws{U`+EEC{iFCW{$+9@26}x=m9uO>*WJ%`)#zKJ};c=XTH{j<49_@@gL`R*JY|XtR0($vVU6piNOE> literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/new-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/new-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..b76ede13af41efb48d43ff825c9fbddd52200faa GIT binary patch literal 192 zcmYL?u?oU46aYI&EOv1a7Z<4r3Sv7ymlm{;p$<}~4w9r1gEcAXE9&2yqTqTQcLVX)Bbfj6h?Z$6K^a;L%hPptp7;D z_RZzY-n$0CwY!JZID{Z+n8mjAV3b@{E#o*YJsM6|4m)8p7e=Fe;o1cY8ZK+aBlbT> N>^Ht>civjwYaeJAJn8@d literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/normalize_asset_path-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AbstractNode/normalize_asset_path-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..480217f732f1f644b39037e59383ddbfef9be3e2 GIT binary patch literal 1992 zcmd5-!A{#i5am$0Ezp)qJ+vy7Moz0FQktOl<_H88M2Z9`1==2Rh&J{(Sz+&5yK5l* z`p&NHgg}tmp5PMV%)EK?-rMz)XFq~BXNNKjf&(!-K{J)naEp6=|DBL3WeNX{Bc?T) zQO3;F3%sLV-~W1`L(U@^8mXvptc_x!Ih7ICR(5s0UN6|l@^QjL8N4s%oiKHoXF)*2 z^Av@78f@%mOc_0VEradlngLU6qF6Tdy3dD1ZZL3I0i0GO!AubxQHXhhAQePhp=CG& zBY{CEMX1nFm54xbp)mrtQ`ft=H}G4+#N{y;xF);ncIbNFKfa(5sniB|nn`7tFc9Y= zG+YW2%FKWZqQNz!PDh~sXmY0Tiq=~Y^k^WVDU4B}2oYi>Q&6a7a>d1@V7nkMbEA1g z8^sPHoGK~JVz~ls(72xRa0(H|EKiIZY!$f$Q?zTDD?5@jYJnzoNCih5p-zTUeZ4?D zWyUBz&J8w!7rpema|$$z5fWM}u{%;YEa!82ctQ~fg7bskku_kVkQr13UaR3Oh`5yt z3bs}tl_QL274c@9xuVBJcCG{^!Rsxk{VJ#lmf~G%?pf*B{XCA*(k~n*{Tnfj%r%k`j$n7Q zq|&k$UNa?Zd5T)I3AxcIO%9-L^ILD;q4nbEhNW48x{}htLEqo5!Gu#5t%fu$<~JrM z60W`Pf2c%i+kG2V8VYpRyt@Z}$Byh6*(t)}m(5@1%`O{zyRdXcEN7$ac~t{Kv;im| zc;)A2%`z0_w~wo?lt!JWB!(`R@B1|ec9&kKsH#{tS3`Bsgk|Nw;ni2;wcG!NR;~ZY zY}#_l#w^i~(Wkei?+Xhnv;W#0(t9b{w==Ui?1yJar$uPEpffr5J$mpGVw&DLwScj+(5(0SK} n5rd<})^=DFMZG8T?D{4>rXemn+sx(v7<0MX;&l|K%mc~JOQ!**}z=h>lpPqgBuMyR( zU}@*&9g3$I#r%y6s!6BuL*h*VMP&{cE5dLM^u@K&mAl3T!JO9jz|D;=L9%Kbmn5e? zfn1VOJPb(`{=K7(P4@)Ng}pUb`hs++zP literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/cdesc-AttributeList.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/cdesc-AttributeList.ri new file mode 100644 index 0000000000000000000000000000000000000000..0e5697021b8a087ead8eba2cb17ca57e08fb192e GIT binary patch literal 2143 zcma)7-*4MC5YEG3duf}XSr?$&upacVq(JJVdl@RDL!4izu+;Gqr$8YL1|`up8;R6N zDy=c}f8QM?*|C$sd$A$j-S^!ue*C6&?QdV6sMz;=N@pxRPMI;`hG+!dR@YiBqQdfX zVQj;1oSp^Vi>`@NK03R=BSGpB8=lOtZ0O`J_SS!0YvkC>5~}@0d(dZU6y{kYjKOAu_N!T}Uxs z143E_4E@an)Cg|)bpMv61;^9|fp?KJp-mf(rjYOvD^j~RM=+2T#sX*Y1R@TGBN?+i zfoO_|vC1+Amo%gtB4V3u8gokNtP1O9t;ru&e^Pf12L17il;d`^2CGB6D~{0ld-tv z5_7>wia<)OF>@|3Sq({{si}2yl?FDlcutj!SZv#ba&K5iDU&znLh?1$`IZKT>+|IF z3(Inx6h$0hHLCw- zHAI`z=hf-+x4*+b2Y|nI+*eo%d@&1j4ciTON`k*?hMx(eI$S_n0t#!O|51e7ojo{X znJNtQxi(79K97{Tf!$vZ4qm^!S7xUsDa)K?yN3l$HLE09uEeE5 z&Ua&7jSHDA!rissP4z3#MEv!`kw|&q{gR4kpUnkhzvkdWnsi%7v>Tnr2jN<{9<~B+ z`{?4jchbH5IP7-^gVW3272#DHfm%`T)>$nEmwa5LOauRtYmQe(NdqHX+VXbMCez|Z zbQzhRk_@o&LRQ3wJC63ccY1Z)?Vqlo?XIFNBsVe3iP!Ztfp~(-f%jayYk;Mej9XWK z1pO6k$E(=PjmRBWMAr{5GAd5OQ<34=m-wFcy6(n~cc!$pP;SVALnBY84)wRck!w_c z(r{egrvEtC;uaqX`aty)(pV;A>X8HPJP9`)h|{JTB=DZO@8PU*bIT7)mSO#RRq1S& zc6#RKL5n#C-UjZY99F}s0=M0nRm0h`%;UFeo7>;{`6eyf&@I~h@H=;S52dp~J?LzP GYySda;grMx literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/new-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/new-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..d88a3f20b76028da788e26511a34598b414db7e7 GIT binary patch literal 257 zcmYL@K}!QM5QTe?wb+XXZ(hP8Mj^C&9uZp5!h*d>d)h4}$&Perx>=J6;=ebwh{yNd z$K$&gZ{X(r#anwgBqAtfheicx>F6;7c5iL>YE&Gr;=0GMfzENa=6ZTXr z*Dx89ab!K*p8r-l9MS-g&(jfmzJ$qq(1Bw!f~)xlIjpLx8P(Y7F;ps(3mv`Ksp>N-rL;J(~PG(mK z&j-;06#b{B<|#TnXQ+yO*(gmBpkrCZt3tPob)q#wIcbby#2R{H+AK$xp|XTPTEbZ? zU@<1^M!l>AaDDrxy_rIgJ8m@gz|S9y(=<)7SHz;VkJr~q+veo7L}g-69I{1 zu-mSvu@o?V-=s`lx)#8Ec30l$KG>lFwaP3Qh9|5!r8Kh=&z)gY@teDH>B4P=dZ{QA bv*VluWS@A`8VjHOeEhF$UK^jKES|du36M%G literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/parse_attribute_value-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/parse_attribute_value-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..88ff6767823fb31dbd7b0d0762af1e3c71cf563a GIT binary patch literal 219 zcmZvWu?oU46aYI&6zkyNq+0~h#ddLdU0TpW!7idxhmxidgR!aUi{RfI5pi+9(^b literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/parse_into-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/parse_into-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..3ad2585d801d5f8e00248c73e9f685d4db2a47ba GIT binary patch literal 217 zcmYk0OACTP6op;H6uGEHyEbAF6_Kv51PUbxxrtgyh>wXbnKR5>7ybK`=&?NTo$s99 z;0%-FP80w^{fs%?M460{MfON$O7j$J5)9ZrjOA56dPkWLI3`d6&D>$-^%+14Wai1pf%LU&PHTPwLN Zna56%J+Cl#vfmZwTS%++%0}fK_X637M-c!3 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/rekey-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/rekey-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..7b8639329e6658c1111e4d0d5c66ff9590a14ed9 GIT binary patch literal 204 zcmYL@y$gas9EKg@3SAo7Y6yoYh;;tBD3l=75;i%=-FeZWdB=SW{`Z|oHNNohKF@6N zfYtphC_vT^H)dXa zI2Ev-K5tmHRsuMIeY4)oAxI@wMpqvA>63RXj^oNJ!p$CkPxWytg|5e~4=6#U(|4Ri Q_@5B{;JR}OCq+i?1LrD2WdHyG literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/rekey-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/rekey-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..0871bb58eef8d055900487efa51930b0d0762a49 GIT binary patch literal 190 zcmYL?y$*sf7yubeH8AMl=2oN8MVLPpNR*_BEJh~=Q%a2um6HApyuC#R=eyj^77tk8 z&WZu#-B5D-R!y}Mh~QB3mJbNfr672h8zw}fm{r=F)@o5Z%df)N?c}AXC?M)xEd^7s znUW>dt?L1N-+g#z=MZH*)z(x2gxO0-o+L>X5WGC}%21y*N0g#F!Fws{nEt2n2!GF~ K^wX2BNAC+qMm+`q literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/scan_name-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/scan_name-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..bb3f4c21300c39a5f311121681490b2aa687d72d GIT binary patch literal 190 zcmYMty$ZrG7(h`6NyUOVxVc3TyV%a3OAA^E*hO^eP?9uaFilE+2H)O*NcYP<^Th); zx3l2@mHsrszf9k*B_ep`IMtn|gFt{THNjcsxRkx&-q=`sZzT&}T&457sXd{(hI9-} zNp4{KTQ}6c!w3+aFbM4vNXwC0@7ftG%coSLD2jGQaB|2{JP^EBlI3&)bNcr>6~Uur HvAcf(V;^G!Tbg^~4E-h%GU>DJ;LrKzz7t^Msw}WqQK*YiQ{O21_ zZZN+btpZ5fSE1=)>vD!H=Zjv6wjx{A+F*mE9RqgCa=uS{g;-lf*7=Iap&Uq`v8UC4 zb6{BpVK+#F%EIzP6~aA-4#2xZqgx6fOgiDHFGny0xUGKvF+)i5F89V?{DLX$7lGH09kHlmy5w&FDI5g;JFfXl!>NTE!j8y=rm(-$x`( z!EYSbN*I`Zh@9E0YXCaW-DHh@@Z*MAYzq&D@mXmZhGF4lbhLb{D-w}oMi*M~fc@lv Nec@7f^2YL4_XJMDLTLa1 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/skip_blank-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/skip_blank-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..e88048a8cf2bae01ccc47202ff1374deb6f453ce GIT binary patch literal 192 zcmYk#F$=;l5I|uENyQF2xVcpjb+Db!r3Ebn>>@gKC`nuKXlz1q9sKtOM09_=Z#=od z;&RkAK-RyCmL9q(=g4?8a~+yWD$#cg*eU1HE^{?vqifRE=R_9eKM?4BPTjmcuS}T;X_=&Ojf|c^( I-b&wH-w5hGb^rhX literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/skip_delimiter-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/AttributeList/skip_delimiter-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..953baae652a1ea5731c7f32d598fe2926a737cc8 GIT binary patch literal 200 zcmZ9_F$;n~7{+mjI3t&!wl;&PMV;Rkg%S>OiJBbbPA_`#^yGXU`t}_}1ntlN`OW5c zSYJ=32FUtXq3CIva*2$GtFgtQYLvzfNm&N$obxcs#u~9PH5uy?B8ze&b-|Igf5DOE zIRwKbHP!|;AEXerody6WPMzw>haeqqXBuPq-hyMP++yf7H8f7egYAn8J LrJWjC>2|j_f4xBL literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/attribute-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/attribute-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..e4926bfb36080c828393231abea0ec2647f1afac GIT binary patch literal 317 zcmY+9O-sW-5QaU-`caS`yy;nz;2%JvE}ru8=txH8Keh&t;X(R#6+%c+EZlJYu8`^@ByG zyCYhNvV_SnDr>Zdo1f2X4Ba>YB+b~9<1?5n2Mio*;o z$p@G0lZ=97FO7>7SfZ1EerdLnTasTG3@S^q#V9eYb|g`V4O}j_#!{Z=^+}aYXAXOM hkR9#r_tz?$TcZ|u?72{=J914-L!^)25c8n+{5O2gXp{f| literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/attrvalue-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/attrvalue-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..afe083853846e4c3dd167105c0c8311d8be94cf4 GIT binary patch literal 328 zcmY+9&r8EV5QRO+`lBEoJgJ8vUMfhN^8}$44dhT1siz!dvY9qZw%M>dDfGX0OO@hn z7(U+j-s$-l-h93~jX3Xi3zo*!<+V{oaz!G3OLky|>Mbvl@jPf_YNy3{#1{&@94~N2Zo|Ia?XaX_}TNMRGfC rdG`dt#Jb%Yo(W4)ttM literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/cdesc-BaseTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/cdesc-BaseTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..3516b7c751e99eca0bd1dff1341ff0fd26f3fb42 GIT binary patch literal 1129 zcmZ`&OKaOe5YC}Uj_sJ{kWgqTiw-@M;`Gp7Ru?B}LIru0;6g!%u#(2n)+?>D52yL} zozWvsC`BN7XXo*K-+X>G`pFM(zUiFvD{U&FPL;4Woyj1H_D_U`B~*j{dQLis#4LdsCB_1Q>ado{sV-L_Z^~j^pK2yN%y>>W@kPGLG%shhF2<0&->vrh( z<>kfEugeRjy=y!I(LImGz=n{uJxGlltVODGwk)MZ>i1rn4!i}ZEGvUqM58q+^d6v zZZIEXqq=LxBWtgL_R~Q9J&<>n!%@yksGu+9g=8I*4BwSC$kI__uGk2`xzP` z3W~Mc+Qz22t{SxKHWJEbAP;eC7R&~2(SizHLgM!XCY@WifnB3j3nYm?{#SndS7utT zzkKbbC$O)rdsNUdr*=v7;lK5ztJL$_krQ_0Y%rXH#K%C|*BP*IC@1|>ISiq^ZJKz zEA(fx#*4w-1_hFwt0m-8p#`acGKA9Tl}s@O!Vd}{%A|#&i2*#f8Vp)TjMnRWQRokG zg=P(p(R9+-z#QGE!;-Xyxvo?S?~*d$%6+EwA`qFQ5`-qGEq*bNYNUx1?&*HJ=62Qj zH4DIP1NcHlss)g)Q3cwDWN^GyyOd7`sWQqo>SnS*_@32Zp;r!+JHEfza7yW#N6H(HA0WYRG A4FCWD literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/id-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/id-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..b39cef836d5a464cc5fdaa742f468e159fe541b6 GIT binary patch literal 293 zcmY+9F;BxV5QQ0#3v^*%gW(7ZEN$lN(jthIp%Ox6%78BRg`ASumhBAudt3oRY;Sn_ zzV}Yg-tg-6$!Wx${oHfvooOyb)x|=LLiJqL#qBO?5#w}n0r8O{A9(U3CBDm@jjAeK z`nerNJG}m8?I{eiN6g@PVw)DY+sLcRc9_g-HB literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/inherited-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/inherited-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..7f81420174c27a42f99034614fd7624f6c13e39b GIT binary patch literal 203 zcmYMtu?~VT6op|1Q;ito;O5383ou_6FiO&a#o)wXO1XxHLYuY>zP%Vt*v|0he5=g^ zj`yqL0QvYX(RHe=4}#EOFUAgyaM%(cw}J*?Zn+Sx;!YWW3$s|^pe1t%u(T;DD)9Bx zNWm4He%B>4{iFeAXBu#HYw$D8jI*@|+w3JICP`9zG}xVc$*c`YN-7#eQZzAJ)VN{1 R$Fa5Zu=sR;J~GX>{{XI`L4W`N literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/new-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/new-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..9055ee049cb9c991e515c7f8974a279b2ecc9f1d GIT binary patch literal 197 zcmYL?y$gas96%kyB$tS`mawHD)cMz1v`8V6skjl7rhBT5~2~ z^UY;MR;B|O+or)*&%up4BDE?kSVT`=V;F{om3piFn`3|6qBL|kjIliR{F>8%{I3Be RtirZbBPe|6-`$2!TvUEeUZWJub0!m1I2qJTgvZGjZgaywb{wla4f(v~8Ra0o&AQ_)r{8oFw+Effc_# zY8H~@nxxw#<8P}FYq4m(1T6Y^@D>m9JrIT^k8g(&})=6DgY3)@hpu(uqAwW#%b=ELbZoDm1A`5+Z54H3?`+na5NgN4zl$4 kcMxAdB%F7&VWsmc`Tj4ia;dgq8$KL7K6C#;hLlJBD^*OYx15bXhNzmVX-4GyCqRFFzqu8t}-1u7Piwra~M2Q+I>8k3E^@<-YV@!uIc zn@uakgTQ?|9PsMH%t6EDdUM?|5=w`7If(OJonXoB#j~jHskDprc>T%5l zI=pe%OpC$xc(d#sU1Tf)mzfBJsrC@ssh|yiAfP*vF=%T*S`+9lfSnYB;=1e&)3c9F zQ)^P`RXPg9eLkR(#C7mU)3EZvp$unMQ9nWaMew9XGyA3uZP>w1BDr1mM%RheJp0Dj z3p*nw$&)*x?He=90=oIZ0uyqY7F;}~CF!zjQy37?sPtxl7Fb6%J7Hs3gSRfMwXdPh z{#QF>NgYq^m()fmC3&x_n)%u^XH6rMU1-c-Yb&va1v-tX*5I7|-&+aW%ibP8Yc1R= zdspQo_enc%*ngPRcmvrk0uEfx&7NnoQXI)aN`Z^CG6xo#ZoBQT*j}wV!8)LMMM{y{ zPjd`ZX^&9zBK;~xHijk!Ku3&}X^`r}IhVUz?P-5$!G|Qe<)NVMVLH6W=nSijrg1j8 z#NDZ-lgV-ZYB*Q`@SgomQ~s4lK9zi95A&D|@6L>~{V{v&8EXh%&`(pCQ7N4c;eq$Q z4`()jjE7Zm!9j&`#(VMn!_$w|j{B}k^?v{+Q+hZ6 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/role-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/role-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..cd8bc6edce02d17a40da96045ebe739f3589daaf GIT binary patch literal 183 zcmYMtArpcy7=U4dH&lwjW*bEfLeTPAz*FuPC>|!#Hs-lwu-!I-|K6Pj`+Ltjn?GQE zziJLpj_+Fdm+sn?LFm1kQ9bm@7f5K#ZxMg=Xo0u9B+3h2n6qyWEuUhGDdkX#?ED7&9v^1 Jr-NmoZ9X#~IKcn_ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/style_class-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/style_class-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..45ccef4938d26db1b2ad3b44a3c22ba57d7f8722 GIT binary patch literal 314 zcmY+9F-yci5QQydPrc>}J1vF?q828N&7`>#4Wu{_IYCGvlg-2|x5DQLtrmJuor;6EwtYCARU8umLam<)Kkox7Q)Edw1yj%s|}tlTVpxP kvg)WzW;eI-7-wEvQ>XMhHLXc+d1yk~NpBzSef=H&0?N53aHSm<*ceGIZl>tsrYZQQXHswt ztDlzBw(bqUNcRmYI|n~Dw6$I7z#@JLiBS}lPDX;Qq75F_H4eLxDl)Q{f`#-y88XUi SR8<#_7ns)d>3nS2)P4c8FgqXs literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..94f770a5118e9a593705c7d0db0bb9a6c6d48149 GIT binary patch literal 195 zcmYL?y$ZrG7yun46^r2D<`xHaX*+)|t!N=b7pYSRNz#a+X%muk@a+xwx7~2uO=nkF zT~3+<6vML;{-N7uDG|X7FM6Y>7YNX~BzRjmE@i8^*B0PNov1&;=4T#ISwd_^rX<&} zes?QsyU_rI$=Hj*M-b$M^U-Foat%{?|!bLY?zAeX$LEOSz+)<|zGz==DoK1G1P$&ut0 zMB^m1k_L8fsN}YrMu1tJdK`QRQ95$#T^+zGy(^83u{tPdxId8jp`fu=BH=$b5nOgS Pv~CU#n=cz%G54z%z$isG literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/title-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/title-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..2b4102fc002104a7e792902775e5778685016a43 GIT binary patch literal 185 zcmYMtu?~VT6hKi1Qw%H)Zf?~<9fU!b=K@AaIqBG29qwoa)&LBMsbhnXLVp<#2OY7VlxXxQp5gB zymC9t1|Z<)5hou(TpDh@>lUynAEdAd=S-2v`QMTYE(e@?7mCBX|LHO-f~0)|qS81s literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/xreflabel-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/BaseTemplate/xreflabel-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..7e77649e0fde794c833238985bdb206a7d46de19 GIT binary patch literal 193 zcmYMtu?~VT6hKi1Q;a0W!Og8M=pYQbJQpxZ(t*X`#MG8YY$%kJlIY({;=q1$&tmz4 z?elIVK-ztCbZ=9Y8$}phe=OFT3)BS2BV#m72dPwLq%#)a#s@60?KO9}pVKSJG6?!n zXeABo{^y+AX6ykbW^A!@J_Je6ts6=YR!OZi#&KMFjQZh$Ob14fT8W6yUL?3|u&ah> O@`W+Y`Es&iYKtEM+C0$! literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Block/buffer-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Block/buffer-i.ri new file mode 100644 index 00000000..b9dcd05a --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Block/buffer-i.ri @@ -0,0 +1,2 @@ +U:RDoc::Attr[ iI" buffer:EFI"Asciidoctor::Block#buffer;FI"RW;F: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [I"GPublic: Get/Set the original Array content for this section block.;T: +@file0FI"lib/asciidoctor/block.rb;T \ No newline at end of file diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Block/caption-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Block/caption-i.ri new file mode 100644 index 00000000..b43300e3 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Block/caption-i.ri @@ -0,0 +1,2 @@ +U:RDoc::Attr[ iI" caption:EFI"Asciidoctor::Block#caption;FI"RW;F: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [I"/Public: Get/Set the caption for this block;T: +@file0FI"lib/asciidoctor/block.rb;T \ No newline at end of file diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Block/cdesc-Block.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Block/cdesc-Block.ri new file mode 100644 index 0000000000000000000000000000000000000000..255504d3d6adc3b31c6130470de55f4c250301b2 GIT binary patch literal 762 zcmZWnU2EGg6wSl19p__=!3z7J!VhI*CE2r-hO}D?F6}6x+a5$&WkpUzWXVWMyPrQ@ zJN*d7FV?;1o^$SzUM0WqyZH~pG5%?6#ngAjoTEb-a9F%u>=4oH_If4VEs`#HoOt23^d!P4lc*Y|2vDRy&^mX()Pi zlls~0JwW=L)ez$jh76$F313X(@Nzi3B0$iD#$-Svs3suh}5boDj z-Z3xWkY@v_ooAYhXB1s%^tVAg&;-X;=tb)octgR}ipj=aTj+Z8xA6i;G6V(kns)vJ DM6}*g literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Block/content-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Block/content-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..22cf84d2fc51d6ed151a1ece4280d36c147d6cb2 GIT binary patch literal 732 zcmZ{iU2oGc6oz+!Qs_V+!5tvZg4l;t+TQHO>8fsGg`icMP{&O)F~>b^j_TOKc2@T9 zvC|d=gIp!?@$Ez-)%?W34i^h^xpy%KU1gmQ!5b}CHN7I27xdLp3g1C&5 zXqv{Kx4l6WK1Ddc-y>(>E0H6#;J?B{oo728m}Htf!0$EPa_Q%6H?Z!tK9gK6FG%5z zPTHZlxAx@x2QMp$HtZNZy=UVqnw&c-!+1N5-+7^M0^5#_+pVy!!j;EHUjA_&eE&Vz z9732n^pp-TZ+C66v)Oh9zpm`yW?GQF0kW_vxPyXM6{_%n3hs0bgA&mVfrE91s|6Y$ z)hHftS=r&-JJgB<+qa|WbpvYVaOTu{LTNf_N7Zg-2TEP|40nWAv7%S l#n-_BYmeq6vET1!J89fHJX(u+Eh+Eu-+yLrUCrb{|4;MX=sTAW^8rHo)LzN}~37!=+3Ncg7-4l;JDHQXU4= z1-7!BDaj39R-75Nt2{&W(0nblJH^&0qt-h?cBkDv^y?T{eG|aGBl0y>R`U<`bz#S}>0`{jG3~vV3X%et^AJWB*r z684LvfOquTZh0dgCQsv zlY_GuWY#-C2dz9He%CWAQWuQgrY@O#=z)r13fmL`ZMlge>Dp$}9x+a*=fb7JO#qZ# oZy3r+mg(tYqm7)+X3bGu4Q}t!FnxS%bUS5#U!Run#J4%~4YVGP#sB~S literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Block/splain-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Block/splain-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..7614cda3770a499b42052f76a873a6839a81566a GIT binary patch literal 183 zcmZSK2(=Oka>-A&vU1F;^i3_v$WMtD$Yk?W;w~=8NzBY+vtn~~^Hh>^EKbhMOvz6! z$uF|9a>~h1&Q^vhux4{}v*Io&P0Gnk&bN|=80MQ;lwDe2Wd$_3G&eP`gx!kUp&+rS zq&S+vipwD_Gbh!+z#y8zQ%PI{C=65(pOadanxkN=V4%rn%@*RRB%70&q@ReeRX+)2 Ksa{bMNE!e&fjF`N literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Block/to_s-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Block/to_s-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..9b29e37c108eeb69672ec50d142fb642f9abef77 GIT binary patch literal 163 zcmZSK2(=Oka>-A&vU1F;^i3_v$WMtD$Yk?W;w;IJFJ`l1b9M7nl5s3f&df~7PcF$X zva)i@$xqH!21{GBxw%lJ25^0 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/callout_ids-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/callout_ids-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..bf2416c85ab3271d5b96873d7ea907338bb687ae GIT binary patch literal 583 zcmZ{h&riZI9K|`9s&K)?8y=dO7&st!?JnStnI)1C{BfBH>ALUOHjTv|qc0xrGI2x;yRO^q2r?wUft__aX14vMhUD}TBCI=|4+i2qZB0! fhr_55dKcY&`Ci2zdahhN;QQYn>>zJ-Tq%A4gi*iO literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/cdesc-Callouts.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/cdesc-Callouts.ri new file mode 100644 index 0000000000000000000000000000000000000000..b3309ceb497c3cc3c730c4595d38bff5901ead7c GIT binary patch literal 576 zcmZvYO>e?542C&OEdq+hWt#RORs8|5b9!NdP3nOSP1`Al%1r}g3rXdsV?TdR86c!7 zit_Q;uV4G3`@yc>=2kHFVsQ(4rlGF+Pz6~M%|L70xH@3L({q;GJk~;~(h6shu_H_a zV*S_RQwkT*!?N4G-~#ZgsTd>mW-E;gS$|pqx|#`=yq1pr0y4defECGD~8uiV2*W zm>jalSopxS_rN>t3VE0%J>h5JTjE_#=Bw5U4?OD{x$|T?A~LMdI_h4QlpL}_h3Xre z^beXMd3IogJP4(I9(i#2S3Or{Tf|Fc$w)MaG^|{!x*g~K`+6;nL=w$US%>;ra(|>o p{Z9B#bBsv`zPB{uonNQJtCs)( literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/current_list-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/current_list-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..1517a89aa56491341c426784809bdec9b700786a GIT binary patch literal 399 zcmZXQF;BxV5Jo#7x3mjLY%o}102bQ$vb0blMQWw0DpLmJIBs*Q@kJL$(0`8;ilAb& z@4N3k-Pzz3uGVwX05f-38edY8U7$##OWiOV=ie;WUVwN>(&%nhYs7-ICkA*{)>7l^ z+mmE0k_1LolUvjT*WcYs#rviL2%zRYl=fjXtrYt@8xY)_W>$*Tj#X8P_&f_D^HtXc za#I?4M9Ef4Zi(ebiMo{fs3H{`nHzLFsmWTSy(vU2Hvb?`R=NEGo#|0LJc1T$;~RE$ z2bwXfgQV@BYA<~-sHjGd literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/generate_callout_id-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/generate_callout_id-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..d97b6635ee596d146efedb1ddafb056d3e0882cf GIT binary patch literal 605 zcmb7?J5R$f6oosW6j})}Fd&uTDl8z;2dlfZJc=Sw3AJU)P&vs>a#dpo+Y#{Z$x~GY z3#09O&Uen0kB;Bi`RY-HjLqfu5^bs?|BM{Zy+}}^<`%ah7eeKBOOeBzr-kQ^<|ZVH zRA`lE?4f=(SAPkn&SJs(Ssn-q6&uu~CD*$=W30gD?i#E9@ zT+ij9YAoSDriNsQl^x0m8lvC@sqI^0OT_H7X;AEJxI&w2X<*(iYHc;iq}>;9)uoX2 lW-$qzOeTKEa|hS^_P5Z6zNt%qpkU1Re_`B&Fe4q56F(_1$glta literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/generate_next_callout_id-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/generate_next_callout_id-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..8eb2b538a8756c2cdcc3616690a4ea7e14b66a10 GIT binary patch literal 408 zcmZ{gO;5r=5QaIJ1>xeso0@FuMK99C+w=l{lr)h`J1_ zl-^i?``y}I{+mifn!=zCg{IQL*^W6?b{%SfMj(73`z{PdwX)vjJp<>zZ=RJ^ORMUY zNRIPH@Fio9mX!uMX;r0?f$1}#q)IM~m41b?HJ62QSV_Y_Lu#{zplA|U62(RDrurCKALvA~gQZM++RsW_0LLfrdCD`BwuQYE(! v-vguTpR#iy;;iS^4RwHdc2ioWX<7%2hTGjFFuKvIN%()0h~H&zo3W@q(CssX literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/next_list-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/next_list-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..df26ad2c2265501cedfbb77f780393da782c5750 GIT binary patch literal 330 zcmZXQO-sW-5Qck@ZEZn3^rnX;deDo_d4kaR5eQf)MNc`%X0tX+*PXCCEBf!G#}_OP0{+g`{n{_zv1v{K literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/read_next_id-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/read_next_id-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..32b82656a94f71f1a3103c1fe979efab5b00a41d GIT binary patch literal 590 zcma))%}>HG7{)o6fshzYyy@Z1Jg67oX3||iWo9Y~K|Jk1%KE|@Mmzg~_}|-YC_ye> znzvuS=Xsy@sPRtD$B!~0q%XdPXi~}IQ|?9nnL^5@0yk#LnMb@q82Q(Iop8=%Vx%JE zfo7SsMqlln47@NTt=!Hso=9?0v4>PGZBB?2vMUs(PFlU3Dx>43B$xYVMpV&-qIv2C z$FVbVH!4{Kp3s0v5eiR`RN}w|!;Kru9p|jXdx1AO;NE9cEMK|6nhcr+yAk;>W7nkq zCl#n*K-rp#1gkr_vXQUjk6BpGM{^sMs o5gvp`n!P#Cu-om%waBmE+&Wk8{UPJC4&D8M&eo-Ft6Aau8-(q{5dZ)H literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/register-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Callouts/register-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..0c49f606f152114472fc093b209c447a23698e5d GIT binary patch literal 923 zcmZ`&O>fgc6zl<+(ojCC9#G-%a4rc_(zwTsTBWoNvP7YT!X<}lZNE5Ab#}wTowCk4k1~oSdtGu~a&?=p8M6ZU3Wa&hI+Hb5M$ey1_U3QQ6<0h} ze7*F>Pv+LZ`IX~hFsqCJ2Z47Gm(sA13d|BArJpDuvtEG=u0X1U1kZ-v*t>op@;>9@ z_9F@0lH;91Xgl<0A5fs;2DMel1^vhoD5>~KH-Zt@n1B>cl|+IYkPG)AaARs%AshN% zNcI{Wv=s<|l=`#;ms1E!;zsU0Jjp~;odaBWwvT9U6ukw}YOab>kt77?0ON9VVXai3Sgx_H%QXd#g$@N6k0qfT{B=WX%^kCT%}ZPDl!(}Ni>b=$laYa z2}@H5+pcU>W#IZdZzJrXYXN+CcSKDAgv(Y~a>dxd&0oz{Sh2UFl`Od|f-HL74q3qS z0fLi6-Y7@h6X6GMjnahn!LNk=QgbrAMBX_+o+N7SPKqk2^qwW`EsJJ5YmP&TCvg7U z8*Fd2{nAR|aNbM*kv%p-AJ$6a$Rv}V&Q~+dkvgj#*M@$6z+|~o4aRX?jIt=WpZPT3 To2M=p;LP$1y610eO15 zzDM_*t={3{?U59~EBQ&92O~oeTV!2z)f!UcVVKBbM6yRcIU}QHz@DDFYIg_IrbLq0do<7bjsj;=aK8=|yIpQ=qMSPtSzHm|-h g*w^ycx9+7HwH-p8{QK;E>-z*b3f`<2cC!)17cWq2oB#j- literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockAdmonitionTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockAdmonitionTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..e7137b57a1083142a68de22c5df8e310c315e731 GIT binary patch literal 213 zcmYL@u?~VT6h#?KF%lC8H#c0=K^Sy-#sr9xFt8Y$nA%cfL+K->4F0_YjqdlHdnVI6 zEN>U&0I`1M!alJo7m{TD+=`}E)CvORnr8kv?zof{a*GCFAQHs-a0Eyc@;a^>)Y3}S z#TQ%u_!CJ}@YPqLv!ll@83Jhg2dA!_vuoce5pfA@g@i YvVi_00!Dc)bkzkz6dPmqh7H@|4UwTlGXMYp literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockColistTemplate/cdesc-BlockColistTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockColistTemplate/cdesc-BlockColistTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..2fdb0b43313ec4fd71c71a743a665f6fff1ad1d0 GIT binary patch literal 341 zcmZvXu}j1-6vjJ9a`es{MGzc1I@lX@d0oz)3LSKibIO#Y5gtwZLX!ITn?_C%B-7)| z_v8DWt={3{?U6LVEBR5{gOwqOEwZkl0kvu@E zw?xC;J-~mJhNZ^!pGGT#`9Y?f;OcwCi}b_nGIAcx6gjN-PWl)`0p e{<_vm>cLEXsFSfI)N|JxVhyRc)sp%2 VAK){}m8i?kw?S+O*|p4W^EXgoLW=+Z literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockDlistTemplate/cdesc-BlockDlistTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockDlistTemplate/cdesc-BlockDlistTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..74cefb6eb41a169c0f11a8130270cfb647913e7a GIT binary patch literal 339 zcmZvXF;BxV5QQ@!yGlz(7?2n;G7tt>E=vgoDMJ}hnQpQjBUy1`%f9gYaf}K=LY_{~ z->3J^R_}1}ws#8P)rC>mCo5vatzlht*;=QDy)}`Jdh}M1X270bx~hJR%9!3MaseRG zt#iZu1HeB-!xC`)2WUmqKgN_hxcaVe5Mh{oHqN7-h{Jm4MWBcUl)DdO^&J-ZapYZ9 zs--MT23%qK>t|_=N;!wE5011V-RE=TgZWJTm!qrB%@j#YN}tfCM3w_O?aZxjtdX_& domxww20it$PSa(cd>dqv9FaHc#ocVM_yWs$XKnxh literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockDlistTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockDlistTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..ed870fa166071829a01c1bc3dab668949c4b19d7 GIT binary patch literal 208 zcmYL@F%N<;7zG(jF&YyGH#c0=K^QbKp9>Hq>A+%eVrol`O$%+H4E}o?G`hcgca!NI zR<}$ufTVpD+&*<(Ed|2C!t%x_VmShI&2ex}dL~4znbjSDBT}v9@dS`6&19xTZ_6*S z`Joq-=P)+|Rf1_)e?$f8i^s4`^NthQQaFwdHkVtn7C`I5?yBiZ({YfbHJe^5Hp1tvf5D z^#H^-*7lE20RJ*IBjolBX)v5TNw;wG7vmj$Ke^;N4Qh-zEVmAQ3_OEk`=yP#=UJMZ z=WSWYIWQv!zTouhCSkNBJ%_dPHYyoam(G>*`kNZeM_XR%F+?1tI-+&KSrX#0X-a)( gw5ae@wh}0NHFlw*@*;rX<&}`dnRTR}W@f85+@AAA;D>&i17Tv-mERh@zq8bVY0|*>}vb#T%M~Lh1kj literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockImageTemplate/cdesc-BlockImageTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockImageTemplate/cdesc-BlockImageTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..47251ebcdd45e0ae4a49b82d81a635e8881af16b GIT binary patch literal 339 zcmZvXJx{|h6h$*sc9oWnFd#8xWFQQ%yew__kUW$DmC4hyV~`amwrq#rkK?MUDj`o# z*XQWo#qtZTKVPi`_^^IJ^I|XrzR`qLH?6Un35eOgV*(^EN6ORhQ4T^ZGaSpAS}D=`lncr8=Qa$w?04X=iSIZ?vfK dJhc`mdo^~UPSZu6{NP2B95`)Ov%6XI;t!1HXEXo+ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockImageTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockImageTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..d7513ccae0881ee06c28d4404947b449157bec6c GIT binary patch literal 208 zcmYL@F%N<;7zG(jF&YyGH#c0=K^QbKp9>Hr>A+%eVrom(riC`84E}ow8r|Q$yV3Xt zi|bi4fTVfl+&y(w&IQ83%<JT(c8^v9yjeeT{h)aWY>lL=&RcEe@PZ+t`P{3~X&w~;^7PzQH}^pz_Etvg z0aCxUcDTI*__x!LRJr_9X?ajbX38yG{LFaeewbWlPNOoB!gA}lkAW3XZa+|~YgXh( z8SSc4&VxxJumwwh-6S;1lv7wcZ=;e?_4!;mk6+1PKDz1@O^Dn`b*MHaBRPl%)4cjh gqp10>Y%RDPl<7mAq7Vd literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockLiteralTemplate/cdesc-BlockLiteralTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockLiteralTemplate/cdesc-BlockLiteralTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..1ab5d73d4327e1185507a9e45e946d0cd7e76270 GIT binary patch literal 343 zcmZvXO-sZu6h*s`Wax~u6hv^*r3RTW>2Ft7>NOUeCn#}yP&l0t%}wI zq<(AdaB~arZ>M3Ya{i~%VxS*p$}OCI&v-#U%q}zMk*3IDy>sYe5CxRG4{hj56!~$% zyQ);nV3r7CCDLCvOQTiFIc%M`kyNBUpBv}(XEIoht~%CJh&U-aRGU(;9K?fZUVUM- ftnpX2mZ%1r`cNl%nWZniOpv|c&3a)s8&P}#-=%2` literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockLiteralTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockLiteralTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..a9636bff44b53ea365ddb3f41e5536b4bbe440a0 GIT binary patch literal 210 zcmYL@F%N<;7zG(jF%lC8H#c0=K^S!TT!1J^6Il#SOl_&LX`xLiga2NFM)!C3ZZf^Y z@^;n?AZ=d-cTZhc3xRMrcf2u*IF0~aavVb1F(GQroVEZ1k!dXtM}SOeCa=PAOH}z~ z)<5`!@*D!wQze*&)#s`pR`zDJ^bK#F4?$vxbzSAbEO`jU<2bH79QvCr8VoqxDM2Ih VFNi2%lDBmi4MlV;*;_hn%Qu@7LhAqk literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockOlistTemplate/cdesc-BlockOlistTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockOlistTemplate/cdesc-BlockOlistTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..27db6ccd257121d97ebffff94b00e331d9f1723d GIT binary patch literal 339 zcmZvXze~h07=}AYa`es{br2jnI#>r?zAk6|0Ub_3&gq+yG(u?FgygG#ziH$YK{9>3 zc^=;PWc3bbZ;ws^ytpt5`(Q_r%6pN;dVC*rW)c@ZdL0p;$)Sbc*w_b$NcZ{N_+UO$|K;eaQ!_;plhQ}DDUs!XjyrSfD{Eve eey7$_s6kJCtkZOvCtnAdBnRZpdT}=!EWQBaiD!fW literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockOlistTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockOlistTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..eee8c5542db953ec6139bcb1b70b7fa80ca9e6be GIT binary patch literal 208 zcmYL@F$;n~7=|6T2xAKkRWVwx;rmAJpIHwhyHzHQTzM6&odg| zVR1X700`?>D(w@Ce6C1BXI55?W>yj)mpGxv&j6@@ zwRX6>2lyXoNb>Lg_*)+E2bgpV+wTI;+z*q>z-dGiDJ&0;`xsaO<>5nVyk$i`%4k=W za;{1efh}0_x=CmylTKmnyp1R$_W4~ouRc@#`RS@_WkTde;w9RYjAS8RX6Dv6T8Wzf dF0BQZ1DZb6X}QRY_g*B(nbBrBvzrwwz5ui>W{>~? literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockOpenTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockOpenTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..1e90e742fd62f73874d93aaded01b8ed30fb7fd1 GIT binary patch literal 207 zcmYL@F$=;l7zH~>DvIFX<`x%qupJcPb7_kfIut?b)G0|LhNMkM)4_jlsiOP4cQ+c} zVR1Wa1`s!|oV%y4%DF%po;h9{MI1+fE@_63am$3LG;`Vl^hBby+#diErJ1}M-V|S8 z^&?LxO<`&}ssz)p{CIL=WoL$quI7#NVHz1?U0ZrEi5^1nFbqpC!~S}M`iBf}m7oFn V>jO%d0_5qrDQ@n)P^vW| z7zYpuwK3i89l)7ZMPljdU#Uhff2lDyu>P6yg035FqK>^B0)_d`q6?m7kncW}mRpvk zM;UF3Tuh@$B(NEaf9=S%5;3Q+w9W)6f^5^duugqNhv{gFOEvg_gOI0cl{1opaB@wn hueIVO{^^z+MJI>Wmr}748rpBOH#YG@wg3PC literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockPassTemplate/cdesc-BlockPassTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockPassTemplate/cdesc-BlockPassTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..ec69602320487bf17164852c7fb91f5f071d9770 GIT binary patch literal 337 zcmZXPy-&k15XCbfyGl#PE=UX+85#yyE=vg?QU(x0WxC0BjAX@$E!*Mm=VDY4LN`6# zdq2H*wt9!%+k;a8FD{J2-dhnPZVl_IU2B~hUP&MI=&eYa0egJvs{LJ5#`I1l7XT>S zIyc{H=)k2S|Sh7vBY*MHptEf%B-R#9@8#BBY1~l!p&v^)(jxIP$J4 z)l!ua0ar*~KTB&A{W)xXa7nAA`z$v;m`|#|h^{&}Q%qt~`V?(SWciU!Gjr=JYh*2c cm)26KK~H_GX}Qdc_dycmh`d=Z>}G?-7rxeJng9R* literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockPassTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockPassTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..564743d740a8b8b8bafc7b83c9769c9d2d4d3553 GIT binary patch literal 207 zcmYL@F$=;l7zH~>DvIFX=2jPVupJcPb7_kfIuu0e)G0|LhNMkM(!qaksiOP4cQ+c} zVR1Vv3Xrs~g1M)vt2sw`FmtTY5<7+fU9vnlCYEwuE9#U1=!sM*u|EK$Qc-cm)|Ovj z^&?Lx%V4TIA~{vC{CEm%M5l*~u3@e7VH#^}oUJ^V#1Af66h)Pn2mX44`iDH&N=`!j V*M|gC!P?q}eGVBic82uZ@(r)6L9ze< literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockPreambleTemplate/cdesc-BlockPreambleTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockPreambleTemplate/cdesc-BlockPreambleTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..6f4e6107c93a298a9648d79ee2e1488a10ab4032 GIT binary patch literal 345 zcmZvXze~h07=}AYa`es{9TXfoI#>~1zAk6|0UZ>PbISB3{e;l82}$bTZyGrcK{9>3 zc^}^AWc3MWA5T^Ryjee@c{CV;*lN~Q=dH17c=v>(G_9-?L$yn_f|#g z0TQ6KcDTC-_`lS!)VciAX)zq3DYtO(JLDDpFuM$$N17ss_0FM>K@?E#zOyRyP;E-Vau5%ydG(di fvc{urEl~|L^`TDoGFxAJnILKLh?9{D-VbMW{aEwhdU`~ XME(g8C9L6H-A68ojwyRX-L`xKr?zAk6|0Ub_I&gq+yG(u?Fge3Lv_iN-h1j+RA z=6!hHv(+bDd^|e^@aDoO?2{ES;?}UPx@@ge!~5)#KIqX~ku(GL^4eAPV^qfUP9+xr zsNFg@+&=*P(`XnKuKyHT5l=+Q9bEk?>_r%6pNaFRr^I2s^CF~(1(drlWAz;t`Elf3 zRjNgn5dl|7fBh`2QIvDo`as$$={}zuAIvxTFGp9Mn<*wSDSfOqC9)i(mmG+56K3626Gb_v5Fe?d=OPtVS*b1cz6c!tRo`?|j{s0ge6#CksmD!hA z{m>JMW0=+*H%cHZKcbX1x~qqeu9TH^VH(t|v2E_aBzPzzec#WWgu3eu=^qlhHHv%e V@Ao(pT2@8t^*wy(*fqT0W^V=)LMi|N literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockRulerTemplate/cdesc-BlockRulerTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockRulerTemplate/cdesc-BlockRulerTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..5b2f4776c58c9b2fa453432266f86df9a393c471 GIT binary patch literal 339 zcmZvXJx{|h6h$*2yGlz(7?2n;G7tt>UX~I*qzq-K%H+v*9+DL&wrq#r&x=t(NXXOE z^*OrtZ1oNohi9h&-dq@^eX=q}u{Er#E?evLaF{KIBaYt6gbdirYgg5eQ5(}com>DQ zx^-^2e*pN0Xcz(4e}Gm-{4rAQ;Oe`=UWQ@z**K3lB@XMImmx(_K)L%c7Vkun9~Zo< zO1+e2WDqMsfBmei(Uf!8`rs1kgnd3YKA2DHzZ_k4Zl;*zr169{rC>Qor=7X=jWw#4 dzf)@^^?*|!Ynra|HrVPGLRF}0<}riC`84E}o?G`hcgca!NI zR^?SufTVjB%sy39FFDGCg=MXl*fIp@mgT`Y=_%)pqE;CIN2E%L;|U;@ii&cO%v4`u z^FuEv%V4etA~{vC{)h@}#GuEIp=F)*VIFI2Y+rjYiyvIFD2i$?5B%*8xraR1OHM-k V_lE>i!MdgoT@M*M4u-gG^#%j-LM8wJ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockSidebarTemplate/cdesc-BlockSidebarTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockSidebarTemplate/cdesc-BlockSidebarTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..ee46d66a9165189d6c897de681ab5640d5f9cedb GIT binary patch literal 343 zcmZvXze~k16oorT^5}cMQ4qnQqk~n@<#u`2AJ9PueNLHf(kq0fO-NGze$&WP1j%$c zIUnacTD`-`>w{GQFV>G}?hS?@wwiU-X=|(+-gHkA{hmf=FcJgy_|#R`cR^|0TNSMb zNd4B@;pP_L-%i6)<@`^j#XvvIlv_Cap7D%+m|bShBTbRRdgsu`APOjVAKK8BDDvZi zcU7sD!7LHPN~FJTmPV_TbJ#j>BdJJzJ~z(m&t$M1U3ILd5OGp;s5YfwIfw_-y!ygu fS>vy4El~|L^`TDkGD}~2nILFs)R(bop-m}+|6YPd_j}Gglj$9n z*R!SoY5OXK365SvNxlpZ+Po`2oi&>>uL{X$wMd}$8qfyp}*Op!BB)dB}jz- V1rfni@|JbcP(;R(y(Po8dIOOWLf8NR literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockTableTemplate/cdesc-BlockTableTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockTableTemplate/cdesc-BlockTableTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..5bb07c3ff569cd48a1bc0ccb99f5996d1028dbb2 GIT binary patch literal 339 zcmZvXze~k16oorT^5}cMQ3t`Hql0zO<#u`2AJ9PusZ*w#G(u?Fge3Lv_cro)2$Jb? z@_n3hw)upMk7uU<-d&i`K3R-W><#Ox%hozI_9(6H_2exk&49hUc2)ftl`(@;$prwS zTj$362Y`Qwh7oZ62WT;#jFdaL`mOMWVO)GRE|Z=UhwZ^*NKq6}9=?p#ccRFT3*J?w zTFWvrh>f7Xev#HF$~o+Pa7nAAhkWjQFyGXFJ-X`L%rW7t^bu`J!E%s}J9FzBYh;b5 cskKBk>UoGYO_zD{ZIC4C1#h;iyV;522baxfJ^%m! literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockTableTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockTableTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..96f234b5ae3cb88d1acf53b3ba07336c641e293d GIT binary patch literal 208 zcmYL@u?~VT6h#?KF%lC8H#c0=K^QbK&jpB*Ft8Y$nA%cfL*X^04F0_Yjqdl{b0*U} zEN>U&0CD@ug?(aGE+onPxfP98)CvORnr8kf?zof{a*GCFAQHs-a0Eyc^17f*iQ-GF zf9RQ{DR{bPN^*qNN0d`j_j>&38_`-9yhu}HyV8MK^pHw~VOTnu?{2nac*y*nk}RNq Vf50fOMO$^j(8I=#yUX~I*qzq+1?c~XJ9+DL&w(J*vKaNpBNXXOE z^*OrtY;}Z-_h+X8-dq@^eX=q}u{Er#E?evLaI_}U0Y`5oAp`dE+Ew*q)W-BqlM4We zZk-$M9{~O#8kT_TKR_!Z{uop4;Oe`=UWQ@z**K3l5r_58%Ro^SQ0_jA#XC{t#|7`I zQZHp$GKiH(fBmei(JAM!^}!Kp!akoHAIxX!zZ_k4Zl*|b(s)9fQm`D*X=iSIV~wii d@6=jJJ>b;GI!#x3@@-H_auB>(FYaa|iZAe~XOI8@ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockUlistTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/BlockUlistTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..98478124119380335d26eb55b4cd05314246302d GIT binary patch literal 208 zcmYL@u?~VT6h#?KF&YyGH#c0=K^QbK&jpB*Ft8YynA%cfL*bFO4F0_Yjqdl{b0*UQ zR`)A%fT(?C!alJomy)F3!iuI-)CvORmZaV}GF-|ExkU{y5HVtXJORWCd0i-JZ2l!S zKlDP91m<1Ol;jBOk0_(M?z{1$Z$xWdn1>zJ)|3v+!iQ8M2!hf{J$Jh!!$a!rm1I8s V`+Y`vE!xWXLk}A}4w?UX~I*qzq+1g~ije^N_4Kv1L2_ejK9;kdUXR z>vMGP$?6TxULUOjc(Hy&^I$LpvDK`r&Rb*E@J>F^fktOA5(D=1+*S2`P+Ip^Me6|) z-C8@`-U0kWG%Nv^e}EQ$8B=cI;=95g{V=<1oJX1>hxN{(k3ker?mo1k8&TxP1@Ed- zEoE6Uh?Pix-7Jk(Dd(_t-bPZ9`h0Gj*Pp5Xa&*HrVPG-n!qk=;n-<<8`R8-uV=~($C zRzLKFvJ9rWCz4YI%a5qQM)Z34=o{8rAEvR!#&(qlllZ|Ui=wFV^1xqjkbB63t>h%c Ve}70Y6|Akh(Djg^V`qrlmTv)ALLmSE literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/DocumentTemplate/cdesc-DocumentTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/DocumentTemplate/cdesc-DocumentTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..113e33a849b5843148bc5d0b9c55e85b077c5e3e GIT binary patch literal 353 zcmY+AJx>H75QeufaM@e0)5gRYN)ufRZP;c#KN1Qp%vn(Z%Ozx4Ai(2G`(i~(d}9zJ7f_xj?eb1f!HTRAMQ`tn+&w2{%-~h_ky3!R z-j9z@B|POj1o-s{z7p|bstH1RhB93!7ieS3#gNQltiq`$!SpC4O@-WAY)M_~t zfdXG~V8bk}QP9V96Qa*rWj&O%3DNw(^-IFYxp65Ar}Sa8t9cP@z>sl!ztkDIwMMq$ k=(CkVjoJ;V1xyyd_fZ17E28=ELonRmaNMnzZC%5wUu(c>y8r+H literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/DocumentTemplate/docinfo-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/DocumentTemplate/docinfo-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..ebc2c1f3a0a0032ea1bf5a22388644b5e7c10c6d GIT binary patch literal 204 zcmYL@u?~VT6h#?KG2-Ch=7x(p2!kxo1&oq(U@-A&vU1F;^i3_v$WMtD$Yk?W;w?$dEyzhMNoBKQb9M7nGIK0W&df~7 zPcF$Xva$l|aLUimHZcV=OLJ56NJtVF{=m&;NLMan=2)J~rKaY$C2*s>k|ejKBM5W4B~ z-u>>qtJxWD-e0T)I9lIx^K5tsY^h0Gtq#3FrBI!)cZNqKKn|~Mb^jEk*2>CgJwUqM zTiZQu0si?LlI(YX?0X*YhnI8qcR;Oge?7^ERT4sPejSUVo~K(_PQ^toyzwGIPK-A5iQOz%@dcA(WvBoE literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/EmbeddedTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/EmbeddedTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..1142274cf23c6822588530dd63b20a26f3d0cdb1 GIT binary patch literal 206 zcmYL@I}d^|7)2ROF%lC8H@CW|gD|MW=K@AZIIp%B4yE9+KMD-obHBlwi`Tq$9=H64H>F2+=cBS2a+DTEZocfbCD zXOv|Sv;)(M8(4iZIqj;U9SuV*8|y<5x3sf;>A@_1C@rHXDm{Yz%@#QW!8@&3NdNVa TQC`VL^r3sh#uxjJxozD=1sG^en1K>WUW#qnJ0$HBq7Q8`^`kwMUYgF zn|rwDWbqDXZ;ws^yt*(7^I$}be60y<&Y3mZ;?}B97xp-MBN7rIPtUBm-A1K#?^JRD zAoq994R`kd|8_c(E0=#NI}!1hnR5phKQmrL7$#qs(}*@vSZ=%sDe?;H&4)I4!>jTr zr>v>fJeXtxU-10bPts_Wa|&x8TtbzwFXze!{gn;ogEgnx#w4u5L$#|pDM31zmep5A f%T^p^TPf6lwvTO=mqq$I$PC$Y+AU{xx8l_|#)qx-viH=R9T zb-!u`kf~R}U8C!2DG-hpj(0{9#}S}gjw8r=CPb~7(-y!J7p>dl2>>f86wefEv@O5P z<_Diqo|92QqY+E V3t~!G%T?XSzKD(`2TT37d;^?NLhS$m literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/InlineBreakTemplate/cdesc-InlineBreakTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/InlineBreakTemplate/cdesc-InlineBreakTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..9d0ebc5b149bf9706e75884088ed8ae4c00804f7 GIT binary patch literal 341 zcmZvXze~h07=}AYa`es{MGzc1I@lX@`MR9-2V^)0Ij2lX`U#^m&_V%u@5N5BTn9kgapX*3u|@{QE5Fmm0SSG z_1?Mh?jGR3N=I_z`cI=55r2?5cX0JR;vm8}`+}S&w28uc??p(FS5WUiw80&(%A=gJ zrdG>bk_mjp^ItzpqgBo+Y<+MERl=d18z1y%7FZ6}oNF7CunJGruI8i!=_FcK-xw`h e@$1@3p+>YrY_q#8&bL8k$dS`-y|B9tuf71dMra}c literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/InlineBreakTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/InlineBreakTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..a689f5c1229bef9de57c4636c08566f5e64e21d9 GIT binary patch literal 209 zcmYL@F%N<;7zG(jF%lC8H#c0=K^S!Ka{;0x9as!bOl_&Lp|njYga2NFM)!C3ZZf^Y z@^;Y-AXTq|yQi+Jg+Mr*JKh>e97lkzISx;0$AqXgbJ_w7M5c9fI09fLh2ojzq$$71 z`p2G8o49lRpCe7DqAg$z1KJ7xNkix4iCge2$hHy5cQNT!cB z@5B3?Esk*U{^TUUn+qeFy}=myS`*e>GHbL|do;#P>7Yh$Few7$`Gqxik5OvfJDFSn z$bg-5!~Fxm|D}%P&h?+p4x{>k=G?*6_mEc%!{iHe8kJ2HmRpY@MP5O@{m@2jcvT+d zlr^=SCzDLz3!eY_Nf<42PGRkXOG+lymviNV{>%#V!J2bzV?ry{soK??lpvi{%jz4W fMT@_-tw1>_+s8KBi(-8nM1~wV?UpmUTk+}(82oAk literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/InlineCalloutTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/InlineCalloutTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..8604b3a5b84750dae35f9042bb6a757dd0e07e15 GIT binary patch literal 211 zcmYL@I}d^|7)2ROF%lC8H#c0=K^S!TSilEK2Nr`9Q(J0mC~Z^9;J=rk(fyut&t!Us z!(^Dy!hSle*AhzkvsOej-oDV^2h;?1%!7P0U$>TV#JRJI)EgB3s+(|(r W@=u5;VGUPx7Y#{tOxasHY|A(Fv_oeA literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/InlineImageTemplate/cdesc-InlineImageTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/InlineImageTemplate/cdesc-InlineImageTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..0363ec51a1162eaf23064633896e72bf31e39e14 GIT binary patch literal 341 zcmZvXJ4*yH6osddWSM=GA_x{!S~y#*&7EdlACN)|S*uh@<|<(_Nk}sOelw9}5hT^+ zfUDq|r~z#s+w3lj^Ieb`a^$pI&g^c*s~@xqXdVCn literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/InlineImageTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/DocBook45/InlineImageTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..013cf5d3940263c40307852bc295596c2e1f873f GIT binary patch literal 209 zcmYL@F%N<;7zG(jF%lC8H@CW|gD~je=K@AaI#)qx-viHyYny zemxrwkmy$??9-IROd^7(R@9B6Rv1&~_4?*0})^>#lllU%`h@znp{0&6$NrXCdYp3Y@X;04i2YOx(m5N$1bt5^^@$~TV$-Yz|tvNb#y zhfw5K#&mc02>r|8JR(_ZIOiFH;Hx8gDj>goxJpk59YH{t17rgv3 z%O89|MFElRsFKXU;&XK&uI}t$=^CMZ2vKH<^KBKtBzs6D(lo6C9EYnl>J2#FC`l9Y VFGwh1wa~mx`XV}%Y#r^lKBNqEpk?x8J4UkN*p}_^_j55S2z1lw zz5CsJv-vw*zCAe!aByMZ=F#vN*-DePS|626+S!vDyx~a^AkQytb@LFV)}52d1pqwV zJJ;Xc1N^r)1l`wv+G2RO{RBP zUeB5Vr0P|0`_y%{5GcoU%iB&8%MqYUmg6|>nGm&RRvQ3EoV0EZF~E&8E3_)V^YxEA zqAY`;8>kda!|GEhh-rpy6bvm_)`uYJh_QX;!7OF%N<;6oeT}A&9IFZ2bicx;z#%O2UAHiBqRqYSK`6O&)hb;!O%1fgp`NMNlqJUt{vIVru}=4 z?WAehka(!7oa^^}KIh!q_!&MrKbBb-{*Y=x`DaeGPPSMOkA`Tj79dOz247C%(bGen zF_z2BNEL=lXB43C<(ls>)ke|G9C4Xl1{fg2XTHfPRhL!SW_QEEq@>E|B#=?J8*L;z zGJL)sdqx$VD_Rx-y1Vh{;?a}JWq?YFfknxw0ljBkw-6k0DlWe>0Ua6jEDBWT>qP+y2*sa7TRW$`)$o*E3S*&C0CSJKEoNPF^Z*?fiYn-f^Wp;0&>Sq zNU@9f&CS?@|4Zs$NRS$aq@8*nB|=cwOhXH5#*{Wl1Di`hm{=lo%}NCtr=XA3@ueTM z`GRq0tO@ku5fO9&WEWu(${E#`al^@ii${~&{7?~ZT;Yf>iq$PuAq}Y!_zJN@JFU^~ zHTC>I_WLg~zSOt?iequRMk58sm*wQZMz6ioH-OUWv|u<}rl5x0$m$j6@dKevc&GE2DHcR-|}GEHXPhx{wvmoeC*VS|P86$NpPLkG{!q zR7h%9j=XLwj0vr9P1G27;EHMgz%%*gUzNlDWX3q)TXL4}({|v!!&0KtvDdTx&03ZrQ6bz$y*nbQO;#$^lD5rti1!z=iuhJaJhqO_ObTOfY+VLJR~E)q#vp6DDP6Md z6_4((EkT>SQ&2tiYJO_1J-e3e=cWLSFjoSG%`mM7`I&4jLxr~u6P-pL#=zgzwHSM7 z*J8A+lqX&%X}q<}j&V(|?}oqq9=Puht)XY+)QRs4yr{|?m7S(EyTrRbUEYmlOtfWX IkG7M}9}aI47XSbN literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/content-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/content-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..9db449d98508a5c97dc04f9c9897bf51dd6e52fd GIT binary patch literal 175 zcmZSK2(=Oka>-A&vU1F;^i3_v$WMtD$Yk?W;z`cWD@n~OVY6a$b@NnGax6~H%uLBo zF3B&lvI1%-%>_y-!xUMwxw%z)Dq@ReeNgrq-*do26B%q2A0IwuAegFUf literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/doctitle-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/doctitle-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..3d80ff829be9857ae45985a1cadba09a4c384273 GIT binary patch literal 293 zcmY+9u}cFn6viDS*LnyJZaO^DMHhSX%hG}#WGIMK95N-jR~yVFM=m$`-UhzHPc(iLovSDS-A&vU1F;^i3_v$WMtD$Yk?W;z`L*E~zX?WwT;)b@NnGax6~H%mj($ z7g<>WHI(M2=9MVJ6j`&mxmj@+lqTh5Cg)p8LrnBdEXpn|K&WQ7;&v!VEGj9EX0YON rNXyJgH83!UX7E&E*U)4Gn&7FVkdv9DpNOzYA80<&;b^b`7%IIiIf3o3rrc1;~20AxyZg$;@e|jK&+?t zIsKaL9Sr`yQ2<2cbt&nDdD>Gf@%jg)4egB-q_AYb7IET@A|sT_Q4neXo7ERt((rv6 zvN#5(s-A&vU1F;^i3_v$WMtD$Yk?W639p_j?YL-A&vU1F;^i3_v$WMtD$Yk?W;>=6TO=YuUb9M7nl6Ndl&df~7PcF$X zva$lIF3nBND^Uikux4{}v*Io&P0Gnk&bN|=nB|*TlwDeYP|9w_?NE?dR8kzxV8!K- qmYI`kU|-A&vU1F;^i3_v$WMtD$Yk?W;>k-bE=f(XXR~5+b@NnGax6~H%uLBo zF3B&lvI1%-%}vcKQHCk9W^;41;w~sn%E?U5w~~gK=$lxSU0Q%p&2Gi*P>@(uQXI`- t#pRHenUiW@U=YpVsl=|K$p$pRQ%NBwGf6)YVUs@4La;@8MM*#vApm$;HVgm& literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/new-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/new-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..147d44fe0e717fbfae79828a0beed1406636d14d GIT binary patch literal 906 zcmZXT-)j>=5Xbu7F!_D#Xzz?xu8`n(~KhzTB8C>j+!s_gAedfRMvj@`Z5TKc~` zcb6Yj?`d~#?lbfK&fKH+S8@FL11TXU_Vx@zPFeCyx8kU6@pntKrn5MDHStR8j8q^e z1Sgj(v_Xg}W7wL_#bHsVMk^988q}F|%d*&|?u)~5Azkpv5s8-%bIzrcmrfRWYxp?f zx^K^GmVnsmprz4&5Tu1o3qa`=s?g`c^Z!`yjkL>8+TtD!4=Ub%9DUDZkigG7nCA!+ z=j1KW0=@*N?WKpDOvVQY)yuU`@Kid5z>;gJeduJkkfjL%l8bItJC1%*5j0uP;0b(` zKCh^oSRhbjgChflBZb~`jUMW4lo`6gf+(P4RCE8;+`DXH1~RbbvX4+uiu^WaL!FLvXwQ_|UaXlU? zz-ZgfgPrd4N_Q&GCi}Q3L){A#E&E#;Bo4+E^z`&J*^8r-I-h~bMQ=O)5!~JP;H0)^ Uy)IyMI*_{`X|P=`msV2#0_$oYv;Y7A literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/noheader-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/noheader-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..c306e0a53ed6096149a3dab2b902bd127df76995 GIT binary patch literal 177 zcmZSK2(=Oka>-A&vU1F;^i3_v$WMtD$Yk?W;?2v?NKH&hEn>4`b9M7nQg$p(&df~7 zPcF$Xva$l|D9ugHD^Z54vSxF0v*Io&P0Gnk&bN|=nCY8XlwDeYP|j|}?NE?dR8kzx uV8!K-mYI`kU|-A&vU1F;^i3_v$WMtD$Yk?W;>pV|$t=l9WwT;)b@NnGax6~H%uLBo zF3B&lvI1%-%}vcKQHCk9W^;41;w~sn%E?U5w~~gK=$lxSU0Q%p&2Gi*P>@(uQXI`- t#pRHenUiW@U=YpVsl=|K$p$pRQ%NBwGf6)YVUs@4La;@8MM*#vApo-A&vU1F;^i3_v$WMtD$Yk?W;w?%|&nzxUEn>4`b9M7nQg$p(&df~7 zPcF$Xva$l|D9ugHD^Z54vSxF0v*Io&P0Gnk&bN|=nCY8XlwDeYP|j|}?NE?dR8kzx zV8!K-mYI`kU|3XgSzYy`m(L F3INceJD30f literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/render-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/render-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..126951f2ee272068327e8d79eaecbf9c5c749d25 GIT binary patch literal 449 zcmY+AJ4*vW5XUWKHKs{nr^R?S3VGEN0tsl~ia-cjT_Jn7d&!W^?J~QEi1^*TN6ug~ z&HVn4nak^UyxqRo3~^a}t##O2l?+J4QJ;08Gz%23t2laC`iw}~ELcXY`0}WW@OWZo zVzt7)D^o+6#kB{x-A&vU1F;^i3_v$WMtD$Yk?W;w?(eOGzzCEn>4`b9M7nQg$p(&df~7 zPcF$Xva$l|D9ugHD^Z54vSxF0v*Io&P0Gnk&bN|=nCY8XlwDeYP|j|}?NE?dR8kzx zV8!K-mYI`kU|z)Dq@ReeQy*wG*h;;kB#;UK DK6g5b literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/safe-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/safe-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..9feef4a7ebc5869fe8b603fdbd9f43bab182f319 GIT binary patch literal 1748 zcmZWqO>f&q5bdE*;sj~Ya|?8$UL?R#(ktDAmD)k**p48@C!>cYIkL81a*5rgRsQ?D z*`*YzIT0dvXWrM0etdqH{k*)eWtPoDaQCnDvwVEw)tX1y=<-88{(bICtt(pw>#__7 zyPBKuM?7&h!hz9pglG1$?FyqyoBf)q-6;3iwcl<$%U+(h$_0P_lg)lRKC@6xJvh~F zMrSAY&-3x8MXW`0a;&O1wlO{FCh!A0dQzri{Hk=Rf^HrtY?ur`u_3!A&t>Oy=T@#FtyH>?0qVtJ%MB-H={48nHtrd54f62{pC5Jb!@p) zf=b)?;5yNVx}g|TCIXRdgSO2~ZhuGmy;05MwQl$ad-g(zL->3?v;~!SG`YK7%|BdD zsnT8*hCQjK7nVYK&veZybPgYP>=M?CqNfAvXtM0^1}uHh#*pudf4K}4Ea~9MZX0L~ z9=a67ei|{K|1v;>CyN7Uf6^oYD~J zH#)!qIM)DxD#Z$cvxYTZ94a>gNu!kQLV70ZsDwLE#eso!eJXdo6UKJ%IF^B4)v%5_W+6sU;*Lnkls1G+v1b*P8oMZoM9ryxPZxxcnUxKn5E z#dJn1Q0Buq80ujTl&*y-HUe!WWU5NjdJ4GsJnWglU0$osgyfNjp{1>{1}m;oz1LF3 zvwLFqCMLDw*4SP)r9TeTNj|Fs_HTp>rl0@@%^E&u=k literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/source-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/source-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..13052624247b247721356e8bf554f5801ec3da50 GIT binary patch literal 258 zcmY+9I}5@v6onlmKDs!#=@9Fpi*|6jT@*-kmPP<9F84&*-0ahiVzKX)rXnF3uvHZMgGDKn+8bdF0XV)o%ZnX;n2<#gctw?I zB@Fc5eF@U3Dt>SSym^6S%aj@D|1)bOJQ5Z;3tOp^&k{UIZga^AZ~SfH2ScyuYv*`H rr7_cT!a}x%_WYo<41yr7#eQQncA;C&waTXWTR(MAyv9!`d!9W2UUgBv literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/splain-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/splain-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..4c2d1d04a272af41a943098c942a08c68c104fba GIT binary patch literal 173 zcmZSK2(=Oka>-A&vU1F;^i3_v$WMtD$Yk?W;w~=8NzBY+vtn~~^HfrFEKbhMOvz6! z$uF|90;(^~P0cG&hN`h-A&vU1F;^i3_v$WMtD$Yk?W;x5T7$w{?kvtn~~^HfrFEKbhMOvz6! z$uF|90;(^~P0cG&hN`h12{(BF literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/title-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/title-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..29db9ef16b59ddb31c569da47582bb6b10da49ff GIT binary patch literal 264 zcmY+9I}5@<5QHt{d^Hw!S{$*_MpJJr6f}@R5Q$Z)OR}29m^&^T(0}i#h}iCYGdt7n zo?vv`>I`60J@&|j&XXaD$m=t4i2}qfj6AuiGooB)tSx}Un;TX<{UCt|Ll~GQEh*D5 z{-o`dy*B2@c3`kJ%5t3u4U>Q7psc!BWeO4W68Cx)7bxG^67R;Px+V{qO>^ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/to_s-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Document/to_s-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..47594bfd429c6352924d915d76052a9aa1aa7309 GIT binary patch literal 169 zcmZSK2(=Oka>-A&vU1F;^i3_v$WMtD$Yk?W;w;IJFJ`l1b9M7nl6Ndl&df~7PcF$X zva$lIF3nBND^Uikux4{}v*Io&P0Gnk&bN|=nB|*TlwDeYP|9w_?NE?dR8kzxV8!K- qmYI`kU|2HSGZ1OGiq07VR} zPw(URPS3V*_4@2Jz{-8Di5qX~ODn4EHU)!BJB9j4&g_smT9ueO0pg{svZqz2tuUJf<+^XE0v|jNH}2!_8mM1|uFKhDH?Ub&vSI z8M{DkM^woT$sb%f;Y#*0(!M3l5~Xg?9Y|U?x;q+VGQTlVh&Q-c?rlqXp4TT;HoJcq V#43}mRSTRhFZ$=>XUYUXK0k4vh~v-Y7{! V@(&0pVT~}n4{N7Yyzl6^E8ju$K`Q_N literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockColistTemplate/cdesc-BlockColistTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockColistTemplate/cdesc-BlockColistTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..2d14769b54426d0a88370759a2f1b45ce37a1af4 GIT binary patch literal 333 zcmZvXF;BxV5QQ@!yGlz(goMP9p%Wrqx?Gmh0wNM+KwAidU-o@+#uHGN50(i5&lV)#Z2x5t>%&vFFs&;P;2C8)Dj3mu~Jw2D%-9u1_ja6hl zz)N*_-2j}67c8c4|D|^_=-;~NTe$fFI7r_P4j|GDo$iUleCwpAAQDKoM>KjZlIghM zWtOTDmBj`z6EW+C+MtR)ho$qDv?AS1a^XCFMfg#a*(LUYWUut;wMYe<3_6XRs8kCMYpGh@HzEI|&TQ^|9SbVKi}~1FEJX4RD>`LF literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockColistTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockColistTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..06c2baaf4f0644f474bd188e554f8691f977b378 GIT binary patch literal 201 zcmYMtI}d^|7=>X5Q;fvK!Og8EMi*gW`CPyYv571OC#JU4&`@Yo%HY43M5FtA&NG=l zV0k}l4v==QT)0|S<_FT$JbEhr9wa9NVz)@-5oV1d?E57;q zw>zLLgTM?-Nv>h_QF3aV!2pcp(2CCa5G00L*Owm5lBZN6ilWjZ*x&BZ_(1SRNfy#S U9x}=s(N%p|yH>?}%f_yF0}b;(g8%>k literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockDlistTemplate/cdesc-BlockDlistTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockDlistTemplate/cdesc-BlockDlistTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..58435768d9694b1b7e338a73003bb7f9e7211070 GIT binary patch literal 331 zcmZvXF;BxV5QQ@!yGlz(7?2n;bU`9rx?Gl03L+9^Kw`=i7orW@5c!$2&ua1 z^xnPu-o@+#uHN@n0=!w@p?NeIf>>%+X4gAoWxF>zP^CI&kQ4*<^jv0l4?$|(SV`6c zyi|wR4Zs<9!J_&0pLvHt{ia3T!p+b71NwGw0FhNm9+UE}Yk2k$qgs>{9oEu$Ss|TBL$a0-ZWe)GMRw f9RF(OHOf}?O~^l~Gn;!~$AC)kVm{^;3z2*S7{Fv^ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockDlistTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockDlistTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..3efd0b8b3377cbfe806ac487c5737007e185d984 GIT binary patch literal 200 zcmYMtu?~VT7)4iAMKx?>Ct~ zV0BM52S~bCE?ljvaw!qP3nyBms1pd#B_sHl^jykHbEhr9wa9M~z*%YDq)PU#_|}`> z?1Zum=4N0@at-Sbl2h9Z24ED2R&>sXd2Fb4ed)n0eo7_6Ff2WS{oNjo4+L+OWC8u# T0i(PTUDXG*YgKfxZ0w3Rzh*xa literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockExampleTemplate/cdesc-BlockExampleTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockExampleTemplate/cdesc-BlockExampleTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..95514bfe2ec347a5fd9eb586428d0bceefc4a8bf GIT binary patch literal 335 zcmZvXK}*9x5QTG)-ICTG1ra>t;H}0>FOy5HRt#7VC7$*)nXI^ElU;T<;?H-JQi>o0 z1H*gs_}<0r1FjCwh5+7;>rg*w^j<6#E3@mZHq`EZu(MiLGHwi#0o%Ql+3L}gQjMWt z9KdU}e_I3m>n~We-~O?0(Vz38Zs6vKut(Pp79jEro$LdL`NpCPUL=riK9!aaBAJE@ zUS=tcuq-BsnTTFH)LK#0IV`O+K~j*-bS|t@-;sVi%Is40K44Gs^jf5XO+q-eoT%@# gs&hOS&1pho>icLVf!VirSy|{Y|EK zSl-T>1H|ns6Q~r U>pr8r7Hv8Bm1$JC@0soLH&pRI;s5{u literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockImageTemplate/cdesc-BlockImageTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockImageTemplate/cdesc-BlockImageTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..7ece3d6e99a7c11f80047785a06be60a9a54bba1 GIT binary patch literal 331 zcmZvXy-&k15XCbfyGlz(Iv_D*U_l~Xx?GmFdTj z(|h;s_bz51aP|IZ1;Cs22K9r+5cpCNR;>2gijEoll(jTYW0VBQ(=#jXc0nlBS`n=W zc&QJs8-Rb@6-nlsKjuA#b6V0ZT>rj5pzj6;kXQyI`$%EFb?9T@8RXle(sIqSX(*?x z$i)asQUagxRYXv f63;cu21O_PHk4n{=*_)vQb5gVH6L@U1NKl)<-`M5Ft;_ZyAx zu(+Kx2T0miCS0Y|(bEhr9CC{!Az)@*llZHM;{;gNP z*#V^~Oij;}^`H1w1ohJweG6AdguU?H-~b}e&?`eJ%r{PW3Os>q^Nw2G@npJ` zr&XTG5thXUKI1X#hDM`|ehN$HEh$N=o#euK{EGCWsPc0(frOFj^jc<|O$MD-PSiIV gn?n2!EgB&^W!g}DQm@yyzKI1jPs{n(TP}F=4Li1G9smFU literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockListingTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockListingTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..89a51b4e8062b9a81269bbf2e3b9faaeba8414ef GIT binary patch literal 202 zcmYMtF$;n~7{+mjI3o!f+S&}FmUOY0~fJ(sf79CZh9&9gKBI4RBRRQ4#_Xa4Qi zzu}R@F*s&mN^%XW50lZZ9t^-}4vlEh1}8MM!@jU!7CxjBzV8=S;@aCC86OgNqa^d_ VU-ua0wP?%UtFTeQzGGvTzX4n!Kkxtm literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockLiteralTemplate/cdesc-BlockLiteralTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockLiteralTemplate/cdesc-BlockLiteralTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..7a9b506b744ffafe5557e21a8c72ae59d7edf6f6 GIT binary patch literal 335 zcmZvXy-UPE5XDo-=E$8_3L;pfu+!LFGilEA0|R#!605Byn-Q06vdiwozu!&d6hWqX zyf=^EJ6XKJ+3SN<058_}XzmS$AlF({`T5RR)$KKtM^jVp3^EB2k55&8eHWD0tyOG2 zz;k`rZvg(ymmTImkTL7V#%LA&6xPmLCdJgwa^<}KjP#SJ@>4wo#zE2XwalcL4L+`%sjrM~ f3j7^fG^jcn+E9FOZ#Fl+i3PPx%jMKtu4M8BALwQT literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockLiteralTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockLiteralTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..18ca4c3763cf5cd466e86b6a007b8792c05baa37 GIT binary patch literal 202 zcmYMtu?~VT7)4iAMKx?>Ct~ zV0FJ}4v=)OT)0|SA94Z=1yCHTajlGz*%YDWYP&sRq^dN zzu^g`Da_5ll;j%LA10@^84SQ^4z1{%5A)bi>-y4zS^Shrgke~E1pB)^8XpMWD#-%+ U*8@g*Bf6>&YS*ghVAdfZW*D;_HyqJ%<#X=-sFid28 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockOlistTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockOlistTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..221cfb0cc713f5fea4b3fb5c48ca629f24371a75 GIT binary patch literal 200 zcmYMtK?{N~9ENcZF{21NbnCVt>XIJv^6#Qi(jW=KPM)^8a5&wV^U$|XDC+*a?{74I zz~X+=93W|5nQ)aZi@8Ju&zxwCqD~+{=ak@m(s3zE&7HOYmpr>h07s>HeN(b?`L|yE zW(Sm}Ff~0>l51Fgkc`^8Hvog!H==buOk+c>>k1Dh@lz@hhGF3m>~FSccp!MKBn#-@ U4jARNXv;3BT%)3$WkZ+00mTwO9{>OV literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockOpenTemplate/cdesc-BlockOpenTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockOpenTemplate/cdesc-BlockOpenTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..885b265de9d211024527a5fd8e4dad07ee35b43b GIT binary patch literal 329 zcmZXPy-&k15XCbfyGl#PE=UX+7#Ijkm&;PhhloT$LSgdcIES#}*p_|a@5c!$2%(!! z@7=rKJ6XKJ=Jn1gfM*v5X>N^-QLHtqi_P9R)xUVO4G!K&LI&*qp)M|OqSCr^id+DA zYz|LbfdA%-CGYtk?_Ngy2}`H zay4PHlpq!&dHvWLt&+}R?Sms!gx$QZe9)f>eOl_`RNF|>DmXJfu`FGJMNl1dQlc#Mi9L{abdFb0G6m@^z_ct0p zU~xZb29T&%&RwmmaxPGYXO6c<62}psbDH6O(lH?_&78IXmmX8FCBN;O6X z;{aZ&-Rm0QpG3i8;QCKsi=NJn(KoRA!Puc|2MZ9HhK~BcVZO2Gf)@#-n-8VwP9)QD z!OJX_BQT2%VkY9R9cry)^f@f8Gl68FW|9l*)K}ymMVVcy-UsX@ouWl5*kpv$&WZX) gt2)Qusd*`og30};{-eMt=ZzN)8ng9R* literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockParagraphTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockParagraphTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..9ae514643b4b2817d98c23a26084ca76a1e5cd37 GIT binary patch literal 204 zcmYMtK?{N~9ENcZF(U~&bnCVt>XKfB_;=ALNl1vWlc#O298NdpJoN1oin_ng`x}k# zFuxrY1BlyK#%-m_VkS_ErwQL83Ma+xdV_|C6tAS9 WKKc7TC9LLc+4+@iWVkhS*yV5P&_J#L literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockPassTemplate/cdesc-BlockPassTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockPassTemplate/cdesc-BlockPassTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..197f97ef5ba36fde5afe211957f600e43cc624bd GIT binary patch literal 329 zcmZXPy-&k15XCbfyGl#PE=UX+7&;J^E|;a04-tu02!+X$AidRyNlTetll4;0ywzPN&8@BjACh6nXPu#srHR@r8{pWY6k4-xy;u0Q5n-Xg)RWR zRQuNr!2fW;D0}@UyOUA>l#%b?>ihU!hIa4(L^5=`M-KC?mjR%rjIClrO&HHD%fP;`NfI)#+o{p ezhCCHRITotn4hq-o7+%RK_z%GAA5_1NWK6PyU~E(D$PQNJOKdA?C2$IrK5`42s>S(sawS`Es5& zWg#bAmKykiC$AfYRx;^1tev-!WTb9>SI(>Ngg-q^d9H>KagcP3)&*y?5RWrw>Km;@ eg{P&JK-tsKh3YFBz1?_`3R<4m%c-|s@$3f;LT0=G literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockPreambleTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockPreambleTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..e0c165c9e0d1002c43270aa23c1b08cdcfc1b08c GIT binary patch literal 203 zcmYMtK?{N~9ENcZF{21NbnCVt>XKe0_;=ALX^;?MCr{g4IGk?GdFb0G6m@@}_ct0p zU~xZb4v@63Ot?yy#atqSXHGOmQ6~_fb4u_&>9~}o=1yCHOP*aLfTPm9zF9#VrbPY? zR=@Iq(iEnqXG(Gn%a4;$TlWTFK>J3t&WCAisC8Z8!6bf4CBiT)Jc9kr77Y&sua#s0 V{qq5%ycTWQ1(j=5w6kp3git6q z9q-+{-@BN7!R6qP7cfvdx5dy9>E3>Pev9kRbY*dx%oDoqmV9zgQcJ~mZ){T|X zdVtqz|F!}6$6YWo-~2J}L^!9BZsGd({a*NXZ~(+IbgGXW=36Ix446Q=J!qrWm`uZw zmsu)DP(}$jL-M+zHd>O-VdXp_%cz=ZT{y45iG5tkY^nPYMK9Iqv`CRnLOgYxsBev~ fb8)Vj*Fv_cZ$f^Io!Q*`ngS~1#eB>y7MT11HvnXU literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockQuoteTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockQuoteTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..728ccc536600302c525b27dc34e33abfffcac9f4 GIT binary patch literal 200 zcmYMtu?~VT7)4C{VQPA&B-gO~AQ`oFZvY0dZ$#^Sn8t=$*A*U2;-^$148y`B*xzi?@IdfdNfyw* U9Wcsk(Ux6Mxkg1h%Z4t01IEHXA^-pY literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockRulerTemplate/cdesc-BlockRulerTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockRulerTemplate/cdesc-BlockRulerTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..4747d8a4d60d08ee0ba1a4a62df34c5cfc7b8ddb GIT binary patch literal 331 zcmZvXy-&k15XCc8c9oWnWk6!c&;^OGbh#|0e27Stp$e0yi*pDoPHfo@e?Lx8K}gk2 zr}ysN@6G1#us%K-3GilIhx$RI_hO}3nO*L+k?nEN@2$AMFQ#WLutAb$uwN> zGE3zM%3^|;i|DmOt(A;Ahn00EkPOsJ>(V;)71_t7%q~>#1NM?mr$s8*B!pAPiF%_| fo#S84yhhnl-}wA9bb5R1>KIT7UM$AkVkweuE^cIc literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockRulerTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockRulerTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..79e80290cf6502c76f577a7b9b725103c7eb68dd GIT binary patch literal 200 zcmYMtu?~VT7)4Ct~ zU{zcc14#N;&TXUWYAH~L7nXNg63Y>wYntI>GB6=(#jG*_w=%y+0B5OKTR6#0`K>p< z*$Jg7%(bIZFa_%mk`vQ94KRwXY T0VS;EeLVz??PPQ?bnMDE#IZjf literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockSidebarTemplate/cdesc-BlockSidebarTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockSidebarTemplate/cdesc-BlockSidebarTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..4ea31ef8071f1e226f0fc7d1abbe35ee156b070b GIT binary patch literal 335 zcmZvXy-&k15XCbfyGlz(B!t9}fepga<+7CWAtF%*2$QF?a|kO=Y}pQfKTc3VNa&`g z_wMQUjuvll@^WVtz_ax|np=Y*h_z;Qak?{Bb+5W5iN2xU8H~h$-9OaDv?yUaMTN*@%agGxdeh fvc%t^r9{=y(1!9O_GWYCWh!U{ua;A9wG!DE_cLYQ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockSidebarTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockSidebarTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..bc07078cee5321f1278aabaefffaa29fdca7da00 GIT binary patch literal 202 zcmYMty$gas9L8~nIHL#}+S)FNTGGXaUyDXbLM~;K)4hd*&uILB z#qFdSK+?W);VR9`xkMSBInfwJoIrriX@>Vn$E4(%Ic)(hMShI{j!LuoF1et@7TVRB;Y-T(|{--y=vFpUkdt}8v5#80V27>1>nVSlql!$XGGO45M* U^?(vqiAidRduNLexOjiE3gFH99?he{5X4%uy13jKtGWiIp@w>AFcJgy{8AUU4?$_&S{1Da zcx?{*4ZuI{iY4>)AM*~wDJ|(1u72Mi(08K)NGxMdL*%gBI`lD!4D#)#HgqqtdAQ(p zk*f)mr3A4M$?HaGv`RXMwevQTiqy{Q%6a{r*r%l~&h-!?4vLPaRW8^p#AC;q`o?Hk e;;CjSQFS!5q5O)y+1z=V0vf@q<&;~kMD_#bC1f@L literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockTableTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockTableTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..521c077ef275b6b201d31896cf094a2b7ac66dc5 GIT binary patch literal 200 zcmYMtu?~VT7)4iAMKx?>Ct~ zV0k}l4v==QLbzI2%eCzdZ zc0^eQff<;RT*K;v6x23@0T{)h6`k`TNDQ^EFFlwgPpL!{MWvTxf4f8DLyk8}vXK7m TkWt=r{^-exerR~#wxNN z;H5geZUN4?3l`1S|IB+C@HZ{$7OsBYAEa*w2M}3?4twIT*g5Gbhy>EzhcCv2 zuzFk+14#N;&RwJGYAH~L7mjyY62}psYntI>Vwn)NVon)=Tan)*fU{JrEv2xo_|}`> z?1a)3=6aw~Fa_%mk`vPo8ekNMj`z-od8~xS``QML>tu8=bnJ>Z$SOZ2 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockVerseTemplate/cdesc-BlockVerseTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockVerseTemplate/cdesc-BlockVerseTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..4e5e2d56f51d72ffc178795c17cfe3153285a179 GIT binary patch literal 331 zcmZvXy-&k15XCbfyGlPs7?2n;upp5xT`o&0A0iTEK!N2Z$GNIjoY=A*{(hXG3XsrE zr}ysN@14!w;r#8vNPt)4I-&2i@E%u+mD$Bk8`*x4^Hfo1wFtz3JwBD$&7GG@HAV*G z0G_M;%Ld>dcfq3h>W_IRex*g-z~%S*y>RVd0V2!LQ6D(Ww^q2|F@bb@P@2}5Ov90v zSt>_R787uW(QAiVD;aeTE9*=k8K{}og>~vPvX4udEmiM>=p~&_ixk-;gj2_f`dX_x e7e6)gTF93A#^=Y->CLUHV?c$xn2))|0+TNz)?{!1 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockVerseTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/BlockVerseTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..04916b0ca9b087cadfe0da86d937374cebda3a89 GIT binary patch literal 200 zcmYMtu?~VT7)4C{VQPA&B-gO~AQ`oFZvY0dZ$#^Sn8t=$*A*U2;-^$148y`B*xzi?@IdfdNfyw* U9Wcsk(Ux6Mxkg1h%Z4t01Hvmm82|tP literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/DocumentTemplate/cdesc-DocumentTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/DocumentTemplate/cdesc-DocumentTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..8d60959b8674cea2aa98660ea2dae354823d68d6 GIT binary patch literal 389 zcmZXQy-&k15XC#7q)JN{1Pc-%4@fM8rHiwKPhp8NpfGue9OtT9bz;lDAoah;4k{Hw zp6=cA?>+ly`bp0|o{XgQ-MCKZM=iYP3zaZ(8swpa9xLdq76=JVo?jTbx%X13)<`st z(${MBwxsl*w@8BZ;*a$~c=%<7y`kqn(JSG$gFQe}IxDSk==p?Z{Gh1&LBvHb{yx{sjtvH4vZYD-lOOx?5`GC1Tb>h!deU(YiU|= zVpn_IY495Wj8;ajwQ6#4cy`_hxrM&<`35_^ymd|RRS|XKf())U18UWeN#)fTj{9E> N#3&WB*s7TG$v5CycVz$o literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/DocumentTemplate/default_coderay_stylesheet-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/DocumentTemplate/default_coderay_stylesheet-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..4d3de9fd032f9b6389c0071c35c0cb9748f3deb0 GIT binary patch literal 417 zcmaLTK}*9x5Cz~KWLw*d2X6{46+|zlmm*9qt=4Fu1*!3rLzyJgX6be}>`o5(_oi5= zMesVze7t#Qy)U?2&TI}aHO+#!v_*QML_EAHXpObzRc;G%*sMG^ntVyb0>o<+4`)-K zD^=K>tpj*Z7V|McOVv9voY1b)$aMP;6N)H;K~-m3Y>*@$~VKAxCu}^yz zu1|M9(BZ~mRf_ODZ8Jk`n4Cck@{LTJnn`j=@{mCuUyy6-Y=2`I~q)rkiI?m?NvMo zyFWjk|HJqfUVgru1jy{EKx&<;o;2g}b3m&w)NUZ7Eiz!=Igi&_FSS-qk_!O)vN)^& zE_~?FQi+{6g7Ebp-LO1|sUI4nrGxqHt`Olk_&a`t>CTHleKmr~?oS&`)3h4#c=l$U p!uN<=t4S%$m1ouPg?5C>LWDQ-5Cv0Nss^l literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/DocumentTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/DocumentTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..55355bd5f8f693839de00917c923c7035cf3c58d GIT binary patch literal 198 zcmYL?O$&lB7=S&*j3nsLt=odAOG@D7?V?c9ATMDjPupBLoNml{=-($4d4E1;^Czqy z7tI0E?wt!)>#AHyMDWsy)+p)(0(8v?KBYaEveMjX3ves)dkip&Ln}I0{MhYZI-@Lu zzzj@Du3__Csx)*GIX0NFmb)#^S1%Q`s z_qqo7=WR%~UjMN^@QA0ZtUI{+dA;M|FnEB>F<9&qh55$wkRmIf+tW#L};1bG&YFZaQ=&wvZE^T$L`*&uspH z_5ETPK-RrV;Tps1l|(pPI-z?-oIrr`0*9w;U{Z3!oUs7cs=Ortxu$}1!K-h({f*A3 zC?M!Zsw6Y8`4ASU1!jEYhb`B97zQ!=b-Fpy>gJJ0)pE{&GYK RYemP0sBu~)M@y%!dIKRxJ~03Q literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineAnchorTemplate/cdesc-InlineAnchorTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineAnchorTemplate/cdesc-InlineAnchorTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..1c5dc8f4859d82543c5ab824370be22b85b1e9b3 GIT binary patch literal 335 zcmZvXy=%iT6vRCQDL84yKqz$Z(5-QoEYC}leo#TvA-Iz!S$-uVvLqzAe}83{v=qvl zj=OjKZZds`1}Bg%;FDCf?r&qO~6R$M6)qA(IKuT{>;XvE9Pk@{Av frWC(J%SOmEnl_ZD*y+vMH>sfJw3-dQ)tqNvB#veX literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineAnchorTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineAnchorTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..b26323f8a6af0e2e795c428a5012479b65532249 GIT binary patch literal 202 zcmYMtu?oU47)9X@l8PcYxVc3TU2K;+{4OnMF<=*|Q>P@2G&D^@nhw6b1x5FB?>Ct~ zV0Awm4v^_rA$()%YAF%H3okmWs22#(B`5fp^<2u@aBm#IwJdH40MSZnk!ju-SAP4= zZ+Jp^4s$y&CAoq1hbgFQ2MaKoLnpKkVV+v*d|w4HOP^ASIF74;;BdD`;{(B4C0RuO Udc-Jig|7Rk@tsNzj*VUU23E2^B;o=8ikG>xrK%yB3GBJnc)}fCq4;Eh=-9g^_5m_ fg}*zi7G+PS3)N>F^ybF5sh|;gy_|aMmB_vU|DI(U literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineBreakTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineBreakTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..4c8f526ad82f1636650b66d857e2722e4f94dc9c GIT binary patch literal 201 zcmYMtu?oU47)9X@l8PcYxVc3TU2K;wze_7x4A@2L)G0|L4Na4frh{*9LDBu(`%R_~ zSl!Qt17!MD2;Z2xT1rIl!i&x->IDLH$q7!fo=aI9?u`Sumc=arAX-T+PEOFa{N|hA z?uhan=5}C8as%s+Qc%|p7GNZYPG}#(JhjyMz6xNLKBW?I99IFs;ckz{2ZFasvWWii Th*91OUH4JrJCz(98@uui1KmGv literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineCalloutTemplate/cdesc-InlineCalloutTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineCalloutTemplate/cdesc-InlineCalloutTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..dae99254a8dec49447f9f994f12ceda156971659 GIT binary patch literal 337 zcmZvXJx{|h5QZ}#r%Fpl29OvsFg9JfT$VxsVX0+6>E!9+7-7}1E&Ian#|bJ33Egyh zKlHp8vm;!+Jvs^S>OzlZXD~*w)Qp$c+!}4w4vldGHLCXpNikqg&%9jSN2zt^B)I_a z(j4|1fd2zEOa9wG{s)Zer!eUbZoVN77*2x+NJK-gEafoYdJGgr2F3PW8?_eMbh*fR zS;!HWr3Nt*$?J#KXqogJmOeOAl2kXn3m^1n!XF=AUTPZ&tyJe|T?jS_be=g;-x=Lj e_`9@fQJ$3TV)a42*{njF3L25u^Rc&Hi0lhdxMutS literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineCalloutTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineCalloutTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..47c9762c78dd7f933aa33bcf462dfd00bc95657c GIT binary patch literal 203 zcmYMtK?{N~9ENcZF(U~&bnCVt>XKe0_;*n%X^@w&lczZs4(B#>JM`@nin_ng`i)){~ibsbmMhafSuw?pZ{EO`paqbMppg8l6djSmEGq^Lsr V=fjG!maBRQ8{5fv-&fly^6v~^9 zyLbHVZ1w>cyC)|B-d!+4KWY&pUn;_?OJ=pQ$c*^H7LC^;Ap!FI!m8DMluGqZCKmu+ z+wI#L;J><15!X$FHfQJ8PM2r2Rc%FUYKj-04(wCZYc d+F5r(?$P$K{!T`(Z$p<0T27n!*xM|4@eBKUWflMc literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineImageTemplate/template-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineImageTemplate/template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..08c3c77e065e32ec0a1984793547dfe7db42cb6e GIT binary patch literal 201 zcmYMtu?oU47)9X@l8PcYxVc3TU2K;wze@{R4A@2L)G0}$4Na4frh{*9LDBu(`%R{I zSlv#B17!MD2;Z2xT1rIl!i&x->IDLH&IwMko=aI9?u`Sul*KgxAX-T+NJpQd{N|hA z?uhan=5}C8as%s+Qc%|p7GNZYPG}#(JhjyMz6xNLKBN+H99IFs;ckz{2ZFasvWWii Th*91OUH4JrJCz(98@uui0_Z<% literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineQuotedTemplate/cdesc-InlineQuotedTemplate.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/InlineQuotedTemplate/cdesc-InlineQuotedTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..c7a642ae7b5b1566f03a5bec5f56a075e5a0d8f8 GIT binary patch literal 368 zcmZutJx{|h6wH9)kd_KDAR#0M4{VSwU7nW|+JYqtDx{MKV`2E2gK!)!YfCnqK(c z0^C>YhZ(@Xe3AzG#UJ_&ck;(C;60pwM_6;a8w^0mGqkev2u7vh);pF!UcMTndUkE=AgO{CVu<2g z#Lm%#Wh}fjL#>sFC`^nE%s^9Md0I77pL0BB&<}&(<(iAMKx?>Ct~ zV0k-f29T*&!Cj;4Y9SB~=Z<$q62}psbB@D9)-xe$&78IXm$JAf0C&!u(5n2V>)+;x z@*Dy)P$`&()ki3ZZ3hD|azn?J^C3tLv97N?n59o4c^t=;heLn6L*oMuH&W1u{Naca R)^b(%QR6z9>@6L;@(u9vJ^KIv literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/cdesc-HTML5.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/HTML5/cdesc-HTML5.ri new file mode 100644 index 0000000000000000000000000000000000000000..6dc69dfe356af869a52da50d464f357f87a00c01 GIT binary patch literal 211 zcmXwxJqv>{6h$3MB5GY7y7>!Sx;z&PtyHKTN;_qWF@?}*LO%NY8kTh>0c}1f2Fu_62B()X=1&K-MYClN90>_YRqa0_Bk88}d5nt-~61s9P TX6xw8_Y7r5cSZ&)>V^UnkH?U&HjMe^KjAFnsCq<)20VbEQ>1{SX#H|dZxMeY@`q^b856Q5&?Ri)ADBOg;KQ@!8(8+h@gnvpCQxA z2ggNN+FGKBTev;yFSy$sT7YPF*h>>I|6gi+ z9Di_CqLKb1%UC~NA#m5okXE53UcaRe5X5>feMRg3L*4ZFMkaZe@LF?2z4>A?B94g}jH=^@6mB^hm OwRFEKWRUn|$a>#1vW*D< literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Inline/new-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Inline/new-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..f37de624b5a90b6f0c16d3ea0339f971a622afbf GIT binary patch literal 202 zcmYLDu?oU46m*bU?Bd`iO39>9ZRaOK3tGs~Me5Y4O(Q;xNoZ44#D6!{!R0vaj=LMW zCzu}hiUB0@nQ?PbbumGQ5?AuO1I{6(WS+DPu~y8e27pR|k^}Vq)=6{lbXN&v3TD5e ztZc5G2C%K&jY~5EFV6)_QB({lSud?@1A)(!H2h&nkN(b=C<0$;(^~#| Wuk21v$wFWimj5duexGcbs`o#PDnAzh literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Inline/render-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Inline/render-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..7e62108baa1e308defdb15eedc6dd9f59fb3ac54 GIT binary patch literal 169 zcmZSK2(=Oka>-A&vU1F;^i3_v$WMtD$Yk?W;x0|EKbhMOvz6! z$uF|9^32Q0%u7{U6uY}!-+o2$_ xsH8ZW!HUZvEi)(8z`!7y!BdG{Lz4|?f~S&PPG*vRBElN|Ot39_MM*&U5C9_(Gr|A> literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Inline/target-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Inline/target-i.ri new file mode 100644 index 00000000..09404fb5 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Inline/target-i.ri @@ -0,0 +1,2 @@ +U:RDoc::Attr[ iI" target:EFI"Asciidoctor::Inline#target;FI"RW;F: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [I"BPublic: Get/Set the target (e.g., uri) of this inline element;T: +@file0FI"lib/asciidoctor/inline.rb;T \ No newline at end of file diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Inline/text-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Inline/text-i.ri new file mode 100644 index 00000000..3fb61c0e --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Inline/text-i.ri @@ -0,0 +1,2 @@ +U:RDoc::Attr[ iI" text:EFI"Asciidoctor::Inline#text;FI"R;F: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [I"0Public: Get the text of this inline element;T: +@file0FI"lib/asciidoctor/inline.rb;T \ No newline at end of file diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Inline/type-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Inline/type-i.ri new file mode 100644 index 00000000..36bd7db6 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Inline/type-i.ri @@ -0,0 +1,2 @@ +U:RDoc::Attr[ iI" type:EFI"Asciidoctor::Inline#type;FI"R;F: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [I"nR7>Y_`qP?M~QCu>JS$Hf=?^ zmw}z(z3>UMTL$jSqDlkv4Rgi=?f)m%c{1#kmtf>lEFd8ReZ&(SXaukG? zv5DMBS59W5U_57?vd**;$Zi{lDYvV-WX##sYiX#(I&sM@RcRa9-T#>nZu!#kvIwHf z)Zt7ML(&?q8N4-Mz|9s8aInDIe%OX$ud)z(yCkO~Lm`>Y)=l$L|RAU$(edu*~F WEP4&ey;fPD{~fNc{oP({=G(uD0H{0w literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/catalog_inline_anchors-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/catalog_inline_anchors-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..3b9933792400957422aade8faefc0e741962c481 GIT binary patch literal 539 zcmZ{h!B4_46o)yOp^z94ctVqxUDQN{b9Vtz%o0e9;Ascab%iyQzNPCT{P(^x)TnWn zE`9Cq``+u(@f+*BKB8c3Xm(TSa?Fx56~tjzaK|;S7RqR45a1>-qu7geg2K-R5kQ*PH)!5E>djWn*w+Jk~yS0*iF7eCLuaLZSg z7kLn!B&0Trjg!`J&0thZ0yjITMd^1h3QMd^Mw{Sr2~KX^Eu@u$49%5;!lIC6>1&%H z3g&;951O0xgc@&P)biYB9FBYn`0ozp6gqQOnbkhqbKY|$a&QP5aZPyp%gA%$@R^3T z@AwcRDr>2K@;YqeR}vwtTuLgFD{w2Jq;bp42MtaSUNn!+t8|q$B^Y!$8TmSE4VFsF he!rhI;_&>s9>6E$rgpj1D(&&_m+Wc(koPwAvu>>mhGT}0mJ0E_uTJGf3x{lw0H5F%A)98>5_`qf*KR=@ZMxNIAb?V_oCjLx0B)h zQerB2N;h>^Nf$AOAS9KLd;H^t0Z9lqmQc-P9+*9Lzf4muQ zsp#>l><6mpRMV>H0Uk_-zkjGx!Lx|GW42JaAyyG^7)At_%n)@+yi2e_xCBTgQQj3& zaHgrwiaDJ6G#OrKR%vG72bWV~3r399b!KbL9E-a^T;9 zt-EUYloWH)kP?Od(Ce6BVtx)N4MQ5PG2JRuDcg=5+=uGQZuVLyJjAD zok&t&4By1ujs`G_;r{0!bk1_OLigXAW1wIN1Bt#qB1VxJL$Ri4baX@4d%jQ6{AkTN zY1cu^-fOHp!1$5l4wh`zAp3~OMRMGPGy)XnzY%yI+&&I&0&ZvOST;YlS_=rWcWnz^abtq-wWXu<4C8jGUKh6@diGxF7eiRlRu!#+xw~W98ReJapJ@MlBU;nq-)IRa;m3w@z^~eAGf* zx+*4E4~5c80=qdAyyO^_uvC8Sbe~|arim|pf}X%HV-rZCbz1uSTypFR!N0J?EC#i) z{g9i)XVzP8;3fV&;LUAfxfN^)bGn9OlgnvmcL^VQTuue^4t|wqA98l4{$FSl?a{?_ zx9f)PaxVlzQznopmx&Jhp$YOP^B@xO`>l}{e%~j%0%Mn)l?)_C3qY=lJ8s70*gv?_fHL)X}w=o qWTKr)D~mQ}IVQ6oZB?3I6WlH7-?+%0&w{_PddR*5CO_w;Fw%n3S`v&j-&#bxSpO&{3i?322 zXS?2eAwdKVOC9^UAd-hm`Uq9I_w0{6GaFCt= literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/grab_lines_for_list_item-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/grab_lines_for_list_item-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..9a8677e86d96aae315aedd4919d807a438518855 GIT binary patch literal 1247 zcma)6&uiN-6z*ZTT?^X|yKRL>E=wUzyQ@M+)21DUmW{UC7&!#levUf)U>zg3Y*Q}sVE*CE=eW}tqj(S+!C*9w@?nt zNJLlH@!<2cPL;}R>MRLygKOl+KXWG0^@BL5nnbJAiVt1KTS=>?5`x<|B^tLY4$dn{ zuAaZK;^W^j-z7<|UKP>g^?WxTe2a}kGExh;v|3~8z!eAqFC?g~St_#xXTx^d5OD)O zt{wOxMquQlT1v-3(Ik3^2Uo5j+bj!^T8A8JG}gS54l?9kB~t-U{x!8_MXKgg`CM`A z%e;Vnp`}^faORGk?0e{Y4E-xJ+aqm^Q<}@vikV@&TY#Wy$Zcb?5m*X%5^d9!-%iM` z&_L3H?4aLv=p-uv!@5a%h7KA7W~`ptqcO}dS4KHyP3XcAgiu=kTM}Z{g37ycGbXZy z%$iRQ3i*g&E1xAbDC7AJ1cJl08;{2!_DM3gfhoW1tDL`mp7)YaW=OF89m4}lb=U3Y zWJ{)1F=`fz(2+v!xfL_;8V`O4|GBopzD!r-zAY20c}jM}+JVjcM3#9d8lN))Vf$wq z7M@R$`K_aF-bGLT!jV*t%OAs((JgUZbwicXrA1JCBU9+ZQurzz9bELDp>HHC+1fm^ zZ}7tIKamnPUg_VUhw?FNRjqmE!*Hd3AHFEO{jJ2;O+mz}2H93l8Ed9nG0n13 z-RGJs!)C^&sk6c6L@IsJE+RW)73jxuV8G!|_|{bfUtG%s##LZKpqZ0#4kkvXqKz1! zVSh&zR@opM|C4xPjk`G~hiiV&OR4KRzZ};H{mE7t&Ixq y|GZCrsyCdH#eTm(S=0Hu{jTdlLL)T~R$V_X_vrkMrQ+B;-L7MsF4qwk$?`9tLgH8e literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/is_next_line_section%3f-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/is_next_line_section%3f-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..a7fca68696351120ef73f3eb46f9ea45c6e42d3e GIT binary patch literal 606 zcmZuvOHTqZ5cXge1vMTx`G}MCqKN|MasYf_HUVP@o;Z-QJIhWe?WXM_{Cm5*7=n6g z(th83kLlsjC##QMRLEFQZiZ+R6-~~`3;YW*Q;BOk6(n(LFtns($79}WKkyqp6B0!# zv`RBJz%{z#e?r^qk6A6vW`aV+E=#Q;*NZG=%n4^pl(xcZ-IQxePCKJ^!wqA6DG#w4)SYE2FT|MaeOcV7~&1Y2ZqnKDYR_NclV0Rs~T~Z`lNoXdR(t;ZTg7I@V*xTQ94HTL} z30-#m=yH5V{*R4XD~(12HdOG{fYw4-F{Qyz>WU*aRSWMsKZ|NGt9 z&a$#GgDoN7-S10pPM*|<`HeG5UD=lh47tme?+Gpf^?Rt4EjT2LKQ3Rr%NRCIfn z#N(^l5M|B;=ast09rE(;hG}%SP^VSHlZ;azJFExow@sxK12-kwaI8*emG+@t4xIY* zy5>=Pz45xrqv_k_aT4DqHlVkt+6aXw>t5M0~W7KE1yLE8+1*A!q_GE?;DPT6Y25`oM6goRp40HT`P#2bmn4 zck`b1;dMe@!FQry?K;Dx3;O*WH@K_Bl2Qkg|KXpEoxSVzaSo4j42`#9@wIaWY71mD zGCGLDLm>YT12*)GwxfI|=^4)%dD6cfmw#$7TT_9P$z*wy#9xNu->6MA6~{*VkkeLd W@4)ARR+sv4Q7;R*r(?g8iN64X;rd(v literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/is_single_line_section_title%3f-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/is_single_line_section_title%3f-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..531626d0d454242b026415994d8b31e9ae59b815 GIT binary patch literal 219 zcmaLRu?vDg7zJ>LxFQ=G+M?yATGEz=&mn~pgj&KT2hsDZKDzG2JE8vjl!msZH#{Ei zHyB-DcHV0N5UKYG?Oj*dlvu(!ncR@NNz5fF%nb@lTIH6k#2o{6h!ehzj3BDCu(|;_ z;tRX@KMYu$f?KzxB%xvc{XP}VqpbltNc%)(hv0^F(O8o?Fb=OI(f9q#N%&;hV>T-m Uur%QdNu^i(2%hW(>!$4M51%4PEC2ui literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/is_two_line_section_title%3f-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/is_two_line_section_title%3f-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..c06e97e4dbe011b3869e6dc0f6246db84589e59e GIT binary patch literal 220 zcmaLRu?vDg7zJ>LxT2Pzwur*1Aku3498xGj$R%uYIP|>eqw7xer26mkXlQGC!{hOO zo!$k;=YwJZfqchY-&Bzfkwo?kYpS1$3Y47IoM}{&YSe=736NtL*}I@-h=pQWRRAac z;%)p{c_d6=P&T}75z;*Gg1;A2$=I9z-msb>IQK;}efMB)GqS?|4qFM{54ZsFJuph%Y3D!H9 zcD|A%G~E2?BPp_O&U4^dgal6uqaSsW(mo+QR`T#mA6eE%@y&!SsN)q?*vw2(tVb5jk5 Fz5y6&a5w+} literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/next_block-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/next_block-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..bf487ac3ef0b11ae3bdc386ff627b204b2f8a9cb GIT binary patch literal 1016 zcmZXTL2nZ=5QTd{+tNyf12>8^S}q`kG>4uXfzpUpT9iT*QVA&sOnCXT(ey(JOi zzcXHENur*jB;z;Vdwza)a?f5(J{!Tgeh=E{g=!jhZYEPZ?J zgp`F5-dM&)xJLTeo9ZXGQ+8I>xst-L*HQJ3+htubMl0$SYJbem1{Js7&CU(GIGh=C z%NLecWzv5>BZQlAqs3r?zP1{Ci4gX|cNAV44aUMS0D{SX(N8e9X4OnhkQZpXNk5rB z*)mjIFGo`2k?Eg?O($9Ub%+b89poEuOIcM?FTgyag**&{qG<=-z+CF0S>QZ*05gBW z6jo;Gx0b96V`~IDN9U1?vXN@f*@hCN28RzdYJpH|FBR}Thf(k<`jiglrX~i`4{2-_ zO71`#SQ(3vwQ)W;-x>UJ9|$ZiYQ-(!y0XMX5t3e;+1~AvQc)`mj#u0h^)~Rxl5qlv zJOwJbk{+$=!jyPWyEg*XzxWvh?a*wBLbf qqXXQN*}V32ryt?Z-wv26Jc#)1ea!ZalKCayJ=seYUToLq;qQMqt5PKZ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/next_labeled_list-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/next_labeled_list-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..87a0c78f1c9108bd4d0e29b58210abff7d1d2e7b GIT binary patch literal 664 zcmZXSy-&k15XBi#fFdCV!~#gCOn^%1>@t+EN|B0$sxoyzu5(GOx^{GSp#1kZc1uBI ziE@5-?{_cW-G5^zlP4n>yVqYY=qi)Xj%AXiry5u8UGX_8%-@x?E@8>@C`+&Jt&lP| z!Wm+0j4Sl7|KdS1nzF;XnJXy_JBuDKoEA;Zm^W;esNEhr9M+tioplU5|EqcB#7p9J zl?)DM9*8pSkTh2e{E%xmYc&ajXQ`~CiG kCri&SV>aEmM;9X5RjbU>3nk~be0!H}ReP0sG;fc;0g#Q^WdHyG literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/next_list_item-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/next_list_item-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..0ceaec54293d6c285cac143557ee1d2b28776b9c GIT binary patch literal 1398 zcmZvc&2Jhp5XEz-HeWqNYHw{-YcBz5^Kt2AQKb;IRGUInq4dN7dA$RSV(gXeO~ZfR zvAryzDF;AinD?9a#{1^zcm96*O^ZAqs?7x4N>{TpOp5fKf@e3EXx$tgtdl(XJ}T1l zp%sXg7EYTyAHy@y$3K;WWb}}q)=eo<==?+MKH=uEsq>tqnl&hQn4jL%+&DXXtMiZh zHNUvwOT+6`GB}VGLr3j4HS{mp zJ^7q5Dy0-?SLi*c#eP3fQFZAZBpM>))@p$~s;}7}bgRJ81=T|p4g{x8dck;XbobJs zEL8l*RKgh{ZH3%qG=!`|-6Gf%7-FwUfbyaFY0qgAzbf20gQfRnZ&K4pvaSLv=vPXJ z@V2ZWqMNfeiQ^(I3~*W^*1j&-18Gd-*}`ZVcZGuH)yx2i!P7q(1fIw!yy^1*?YqTR zFY^dn=?!u#v^yj=lvexvpOBdSD1Hw}(T^K~^sxoA=i0MI1kTz& zcD8h09~S9&3a&9N)c#$ke%pv>FX@)`DyTt)-K872=R`j;e%?MGURfNh%1>?l*25QQ@oO6mYbhN4Sb;GoF~+{QD#*l8L-KmrtwGkI_+>TD6FN#RJg@xSkh zQq>00LhyKe@4F|yIeQZCm$yy{v9QMn47ID)7dk8Q4;G)p#>HT?#f{NEWFq^1SL9a< zue7e53XX)h$7kf_b@ME{TZ!`~mPRWlK6V}tlJ>C?f(_#VZ8#O@^F~te>yZbXZ z?YMcH>PwUrQZ~z0uK;e0wEKIW{>05jEyP)of1}h7{C$BH>vs1$pWn4sH3SEQfi(WY zr><@%}qEq$RZ1PJRVAC_)!)Exce5{UkBL`ge@K_Cc z;{l41|59J3f78l~(R`~7PN&oLNs+_2%XN~@Q#2Fkp!<EcFHG%|!?Y0j-T2|7Wwe{Yv*j@E} zl>YCX*Tj>Y;K% z^dYPB)E_WQ7;#gfQhP&Ldy8UKD})!UR{@c$MIf?-N>Vjl)Y1heQ@|+MigmuKCJgwAMps07VdNbo^K(zP+m*0?%blZ2td+b`IIuB>AGlOcOCN$?vBZVi` z*V1>P%B4}ttQkM{{R+L~mOGL%GOO~_3j-|*HAaz?jc}2~DC*d90d~-u@m>qpk$g$D zd~A5W)A2}}QbJGMh!!cko$l@6*d#F{ZO7wYmG7}KXn}vT5a-NbNs4HLnD}KHp6OCL z*n!{96g4{xipKS5u7om8DWwu)ZCkx#A!`~(g-aTmakxikGRm!8@Eh7%c)3b8|B5E+ zZ)pYxiCRH6&F0Atv)FiJ{M~6#DjXib9FXb=qh?{jn1sF$P<2+o<)-XIO$yk)j|gfo>5nj zX{|(;?*F(44TX3FT=hQWPj)rb{@`%#eKKPTdcGHpZfJscdO+LHiiQU{C>%FH3VA|> z!SQxcFs<}vWd1y?ZF(_n_ouO#16F0fSW4@B5!Ofw{qh4*KNRDCKt73(JMu@+so}p* zrt)huLxue5fKzM5Cah&4gVR{Hah!SmCg)9KI4Q@2SUxyeN`;4qhnIJ%{QGU`u?Yve cIv>M7|L#W%e5+*rOiUlYXNtdlg{}GZf4TQsDgXcg literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/next_table-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/next_table-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..80c02059380358c1475564f439b5551073af1b9a GIT binary patch literal 636 zcmZWn&1=Fi6!$PXr?Bm?+cpT@VH@c592ryDgo2JC?$m?4w$TP-Qj%2Mf4`Shr?NsR zN#5_XIjeuuo9VksDILh43A4G%;%gp6;gw`tJGYPs7SP~h6on51lX9M^)GAHsm~9z; zj;4CSXhxewnFyXLdRwthK(ESzQj{pyOxknW>=&S|i5rUEoz8rLhNXrg4|*3dT6l}3 zWm=n3NdVZryoiZX2ZHQVBki^%4xhhLe5iMgjOi8MzU0JKPhC-z)2emmj z6?os}%(v_bUcp+;lhUFLaefZV6bf5vjJVKhO(0Pl*9dZXW~bl3+y%q(J~hK>X`E9o zjRlGJQT^m6dSQZ|&7Rg({MTjGiesjY{(=kE?RMi@6h1y3x7Kn57`k<2_PMI#Uht#? PhilUj?$*5M#2xd-X0Q%_Fv(wI7ak?pATzvtOW zyCP2Uv)}uD<-L0SEZ#reQ6a>Q**&1Isa(BNNtTXUX&ojaxu0k0#f>YJDyi^fg;?Mp zpp2(j?-`S6viy(gR!g&4D1#?79R<3x zEPY4sv^oyVS-QwPRLVLJ znrP#oA`8-#m!K*>cj44pD$oUsfpb3(UU`jU;Ca3_J=)LMizT-bD34ZpYBMPWV zmm!0|F#Mig303iKZ>ndV@5=!Mo7V5(ZV0Xqd0VUE*wR*UwmC*GSO%PfEZ!Af2H#nh y9t0eKDF4ltLa!LjDy4BUnXFE-^uyQQ#pNOFZ@sY3TIJXBWyP;`*zmE6s)5$hLZM#_>5DB^$up9s69V!scY15JS92{(AmWKRLe^?W)eS%B}d=^t_aAQddIo0QD3NwM2Ws z5adU%t@!k`=BIS>&dI7w`r9KO@G3Qg&PXkQA9(~S5e(iFgdstVK@sHEkW|LQf&q-J ziswUY3G7t1&=tM z<*!Y_N@)!ln`AsX!h(O0jnb`@N_Q7SaS$-m&hK;_D+_9Kk9wabxV!g(`8kHg7|t`yA=Y%^P4 zyZAiJ*xdNFLTDc(Tu5I6SFao^1G7@)B}kTP!DLM+&r60y19@R9QkIFuNtcj|V^%WA z*{ z9e4|@(GQ@lorE=tixsNpndgN`_%$J-SiC2Ew+;X}PiKq^_|n$80AnfSA(s_fY$dq`|kH$9zFgco_{|_CB&IqjWtzRPM?`9@4c?24|-NuREybClPo34 znKe#_Ok`g!^4|Nipo}R|5qcr6^sVOCf3k+z#Y7y`v9Ly=c+qwpOTUP<5G)}swWD2e zFya~%rcY43e0b-Z^zz!vy2^%oQ#-phM$yq2Z*ke*|pN<+Ztm4-In zmix%)ID6w#7a)Y2%BZSIY%vwu;#$T`5_wZZ;$e;%*QE?q!nF}LuB#y3>TaBtAKVyg zp>CtjVAYt@`^0>oDs}%skpPRz@VYD{bw~PwfjyX4x5Z z{tiHpz9lfOG)ks{sFDOWttYT~=I)SSVw&lzvFXaFWVsEVn8?rbDO zmdC6x+OpXn9$LwoB9GnVc7E}4j=bhDPn@#<$y3=_CK1~}6Em?tnj5PJgTZts?|nFG lZSF&BXn)h1Pt3UwYn17$qyEa8;#A)MrKb&r6JMkTe*ui`QeFT6 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/parse_cell_spec-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/parse_cell_spec-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..c5848f5204a90b476ee76fc6c4b88b23e8be5a68 GIT binary patch literal 564 zcmZXRK}#G#5QRO2QCE;0yo4Ai<`4}m?q1W2WDP1AP!L&9dytym+MUL>d+4gc?7z2q z=CGKYy6JlT-d9zh4xY@(<8`#gT!rmDNfTGg&#tJ-lNJ-xvnB7Jxg}ee;^ww0&#%}z zw~AI`GUkr{k{^!LZ;?1uxvdsXyn>?#o}>Js>+Fto?8rKNbxOS0K;mcvP3PR zxUc~mwT~b@+WdG&@GFsYDRAG!ALIt&8c-y;x)aTk1_fMDu*}uOH;@P(x3QBU`@2RB zV5)UI%*KV@Pq6mXN1D-Gk!d=eF88YP%emJ%jG>JTmta_Q89xTQZ{F1t+--W|^P(?O Goy+gdo4BL^ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/parse_col_specs-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/parse_col_specs-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..df75004b9c7de1cdd571eaae4beabd4e175702a4 GIT binary patch literal 705 zcmZXSK~LN;5QRBZp+JQ=aBC}#aw(M%yNCATw9B*8k^X7eT{O0X%b^7avE0wym-5qh`s^y7J^7OPtALzbx=03DkhD0UT^E^Gf z45ikUE7^IaZs`xn@wzli<_mSy#=_{*srRG)9r}mZDka0>nk?_DqnR{vSiW=W!*0z_ z^tkfaHc57{6f<9Q%j7K@1@aUKxFHa0acyC62etEZsRJ+;hAxsUS^TGZWzas{YD;@A zJM5JY^7Q-SwNj-^Mjl7lxGuaL*6-Y>{C;>~Pqhx~{0)zpjSNz+*pQqnEar9O!zzv3h6q&s)B8x?CkcS26 zx`W0&_6B7WYvj?{Cm{oaor}C{ym!3alscRVDNU!-~_>VOwO9+;ykU&V6p&%(?Sy2?W@}pv@=~yUWypt+c%A5z z@(c(y)p3)AAw>;di%MwK#5a>*6r4Ze@LqCtbxd=X^k~)bSWd&QXJ~7qss{BVuV$d9 z9ddVF38Yit(8&ay{lMIUsGzFLQVJ~MroF3o;AuFbJojlRgrN?33syIk+*%{D+LADW zbAr3!4fFB(J;4Lhcn1JmP2rh8&a^Cqx@f%RmXa>6-7jkZCUtZ}_~FShb0N7vT$!14T)-sU z_ildTv;sTc+A(^RM4QXKZz_x-ydEU|7>519aEt!Kfm<7)a#0{GwgG8%NcKV-StQi( zeUsb`Xu+>HV0RCGMt*MO4$%X^D28Y%Ol1|JKg_y>884a)3*xN{$`Zj$0>%J(SqbURyoH8tJ83%#7yfo% zKUQS);LW*A`}+F(z2E!jgM}~b$?*qWF*Z~;N9ZnfJz5o6nLlf|v3PE=azd+fC!EBL zW%~zZUJPv|M6D~Q4P%FRjr9AQ`ye|wWxb{yOHpa|Jn|fIbJaGC5otR`<>py$mo7Uy zTG8yqeV@!na=qcxkG7@pHLS0A%ZJ^eq2-hV!-Y4(Fa6<7Bjj%8c z$pl(eTuQ79Pg&+4eaOcl2KXVQgfadK5o_Qs1R1b-0_(DPpxxyZB4y=$lmxII?pocN z3LzSc4mjzE6^-fYLM`oI^Jyc|rh{(LzM>g(C#F6*Q09*#N#BQSDPtLR$J$HSc?YBX zKd;mV;dhIrEE^PP+&?;nHHV%oOyz>Nm;wG;;6I2T^&)`+wY8Gi{W6HwZ@tU2BvDu3%^kzwrY#I&p^Pq5wab7ibEY8TPc6$kkavjo28pG>YWt z8`QT}nQ!}w|K05*6z^ep{eaQK4r3qi@GdQ+t#{d&l8kh80YeHU&DbG_BHJ&Ch%6aNZj=9h zPnMIc%MSC!*zdjHm!4i6{$#JmH#%qRTCH!|RCOjruGzc5b4yTl#Tb#+B`WuloeU~&oSmL( z_WpU#9XEV#c(sVSM^h5jOO->TxMVO6^1v++k_({rL>1h{|+A>6OaOiRc$9pB1aaf4s$&^DnaY8o2#@H zPG}W4{@eke=)9X9YyXi;QE*2xiS^fl+)$=uZu{T&(?^XP$wBAed4C-@;fCY856b^* zC)x2}CL|_FGCfG+FK64}{MPv!*YV5PIP62x*$L~zj7y8>A%+i9WLJE5DX*lzlb0s* F<==p5M6mz> literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/resolve_ordered_list_marker-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/resolve_ordered_list_marker-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..4325aad92a64cb5df454b73c0a463acd8a420a39 GIT binary patch literal 1203 zcmah}%}?7f6z4Dn2K&@@+a^6_2S92eL)&4lx={p3k*I_i+ocEOB(JSSVrRC)$Nu^~ z#}1`TVy7sH-|zD!Pu702w`YecXKW;I$7tuOn7k5E8iPio$}7B3xIE_D#OfE#Ba;r3BCwPN&d2DPD9iOv}y2(nBEB4OwjtR1<86y!*h0?CFjs2Qy zYbLK1d%t|)7m{d5k7G&W;iXj9a#@4N zGQed41(KDDXyJM;h%4|2r+%U)g)|yCAUGX*E2ARj`7yuE#zE6hLEd@ zs-vTwdqt}CBJT&PDA>JV6QB=HV7OgQcd4&5{!Tp#D!rRY`Wbg^_|jWzxZs4X0;jww zErVp+YfrDpX2C5I=_zX3j|##gq2!&dPE4)Ul_(qm#pFWNs-};i-JJ(Z{0nu)t)Rtf z_p{%X=s=O0`Q4z*@t&k9FAZ+fnnlNm|($F_Rc;j^%YZvx&BHV<|-+o?4E z`u{I)%g^=TQxB|e0%01z{0PHuusI4?3k3&fXd5lP-yc>BIrBTy?cjZ56wA`;fs2N% u?@vXENs>%f(zti0pzCf3Nv{hXVF*45-_M6qWV?LvbJ;E3zhy^f?)6_`FNf6t literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/roman_numeral_to_int-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/roman_numeral_to_int-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..5d976deab33bca755372a89370e52f4d82fc078c GIT binary patch literal 438 zcmZvY&1=Fy5XC)|Z5vDJp_kGYmYmvyn)9TG*bgC~P*Qu!LDo1Xi|cNfY^43~yQ_kT zJq^RW_kNE#yZDCN?A;UqL;X8JTbV_EBUu{Wky#5p)9o5bsF^i0sVxKcF-pVUuqmWm zn8F$Y7~>DR@vlB+qbYRjcCKV$;C@G%2wJr@fWx|UZO@^b)Pii22L>LFHJ^e+NusV; ze3`piFR8XjS}5ReMsLu$xZs)Z%J*HlHQa5kE|y4qBUFoh7PIL|_^T3nHI^DXCJy$1 zXshQvKCO^{S(3UujW2d+ADUbryn_sFOS<9Kd3{mOUm9||Y>rdB6@p|b6-H5%chd0c ZX-j_gmo$7-ay}4;HxHEma-Zh@{0IEQjx_)P literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/section_level-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/section_level-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..c74e3c3d0a1f4fceb35bbc85fd7e275b7b036115 GIT binary patch literal 434 zcmaKoF;BxV6ofk{I zg~arRyZhehPI_-}@j5dCAkv>pbh%06Gf7x*UZQZ)=y!z&R0PQLoCP;gDWpt|aK-{G z@B`~}Yz)bK1B0SUloSRoTlSLMT~z?okE%Ut*M-5P;MSFK&%o8OXT>egEH82rp2l4k zOjlMOxI>^X=%~w)GVL%!OTQn}rXfvui77R@v535;2#2;LA=$9tq4J_^#b`Zcj4G*- zRywUg9{K}w(kUGJ)SqTgitF8?j&)4f_wDML9vjSkgIGH&b=HEn*6jbKLw~ZB3diGd b++o4s)^qOKve!x`BmTSeNco|MHu3Tox+RRj literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/single_line_section_level-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Lexer/single_line_section_level-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..b517559b3bd292da0b9083329b8c8f564856d0b8 GIT binary patch literal 210 zcmZ{eF$;n~7=|6rV8H`u8afO-=9c@bWyP z$rGC$Bq7c3+T@mpph%tD`1C$P4xUtBxDuBWB9Ho~tLpd)LwMs+yPiBGR zZjQKFZmcHMJ_tp3ffFcrwI8w|de_ttx`|E2qy;dZ)TN+i(R=xL&?59=9B;qYppD!mKDAT_G`_*h-E%;U%;iYL{ipi5qqLfm9*~t t{@S4QtW=^{mt30;7@JxUE)S|x%YHh1OQJ0rPYZ-yJJBRe66ufoBt`*VRXlE+PgL+*AL#| BHr4N2F5K`6X^YB2P%Bnd3x^eo9DCB3b?wNWwDiAc z^0D1T<$yRuvg~=!Z+_$4xpyXZP7b{i;=o-WBUN569-AafAC=zfyfh(FB9f1@EPZhh zl`+~Y@6=gH5}jbJiC~!q z7{&pWj35atO5X7f`-H7HOV7TubE{bOF{Ee3MoUyldKtla0_B}UMW~^;=9=yn-Xr50 zNyfY0cK$W|-PAD{&B$55CN|hh{ZlGFgWW3zUUP|MI(xn2kN( v2{Io@$Nt6V{b1fhDQ(18s|5KCwBcmH^~{=LU#|a-{We$LK8M$#Xs`Yaf4?Jd literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/ListItem/marker-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/ListItem/marker-i.ri new file mode 100644 index 00000000..31e59788 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/ListItem/marker-i.ri @@ -0,0 +1,2 @@ +U:RDoc::Attr[ iI" marker:EFI"!Asciidoctor::ListItem#marker;FI"RW;F: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [I";Public: Get/Set the String used to mark this list item;T: +@file0FI"!lib/asciidoctor/list_item.rb;T \ No newline at end of file diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/ListItem/new-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/ListItem/new-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..0522b6daad4bd52c9c86066b424bae2a22d92fd3 GIT binary patch literal 410 zcmZvY&r1S96vsWpYI^C=B?@}&NuktJ#FId!gaHL9JMAH6*U^1B&MdQU>BnE+j7AZ4 zoX6*VzTY$}FDlRWs=}Re|We)m9m2N@O|J47P*42hxP|Ss%^G` zm36>5m9U$UzcQ#r++p<=w%BhyvLmyG-K4!#D_LmfIB~U2gAeX4gLG--nrPDjSGw9oQQPBGE=lP8$ zSD2pK}s!aOXoSIy(kG(N%9v;lVVyp%j$T!eilL<7O9>QaptW_5t0Jm|Pqxv5u-g O97*Sv=-^#nf08%;AUn7K literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/ListItem/text%3f-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/ListItem/text%3f-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..9596ecfe6e38559a7aeab916ef825451d5c95590 GIT binary patch literal 172 zcmYMtu?vDg6o7GuI763)wwAhd1#M=_^Y^=|PY@QL8wPOHXirw`Wcee50|Bs{bd_Zu3C*IoR4I#SgC0 BG~@sP literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/ListItem/text-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/ListItem/text-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..c73cab4617286a480b766846ea16b9c02472791f GIT binary patch literal 170 zcmZSK2(=Oka>-A&vU1F;^i3_v$WMtD$Yk?W;w(w6C}Fc=b9M7nl6Ndl&df~7PcF$X zva<5YEH3dZNzGLTtFUHsbF<Sd?8_U}Xg~xHLC4uY}!-+o2$_ zsH8ZW!HUZvEi)(8z`!7y!BdG{Lz4|?f~S&VPG*vRBElN|9H1@nnLumwijsgzLI6`s BG-Ln( literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/ListItem/to_s-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/ListItem/to_s-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..aca44a9593d0670e477fbfc92b89f3add7fac556 GIT binary patch literal 170 zcmYMtF%N<;5I|uDQ&biQHwR-~bP?urfka7~$YOM2AW&+&SSV?a!GCX~gZs<(Ceu4C zuO}k`vi@BtdYZOeAQOB>rg99}ITw7LIf>XBNyY+P(2*e3ZNJ5lHj(pEZvMB2UJhvfvA(Dn|tX literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/apply_attribute_value_subs-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/apply_attribute_value_subs-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..5526ff720958683b437f766dff6a30fddc9bde48 GIT binary patch literal 699 zcmaKq%}*OK5XCv5g#xO2=&e<2EfnOG?oP568+$b#lk(qV zdm}zl)bq^y&3n(@-u=TrPk)(;^Ra%s0%}ZMd{T)>zss&`A7_#XRp|(353+SIv#zuW zPtGSIJssOhsoGRzkn<_X8u0KxsyvxY_91Z%ymuYv-hx|#rX9XN>Lija z4h;YLcIQT-T%hclB>zx&i)TU;pq4FX<6xErbEL?TGTJgSj2d9i30O>!#>Hp2iDB!IP76-;{lVgYfr(IvM}gTr!S}nz*3T0zMnh#&Vp$4ah=L{ zCi*x(*sZVTw|`r`*lZ}6Sv9I^LW3RP+~CHEO=vy^a_B361?}&w6g3<6)xcjV literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/attribute_overridden%3f-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/attribute_overridden%3f-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..32bec87acad9673a5bb495ef37f251e03ca9ae4e GIT binary patch literal 477 zcma)(K}*9x5Jr2DRZ|cTo>XLr2nyQvJUQ4(tpqGcX-_%GCYhQg>28?aDE;?ts#uC1 zye+dc-+ROC9W3x>?i!Ea9h_$Q`#^hfsr3us$TtV=o0EM)W5^31VgVLKOuf2hSshu*~ib%|VQ6DO) z%V!_mF;VbMzA9-AcQD@pwKZoTD<~`5q~Xza;Auv#VQs;2^FPO1Sjx&07{3jFC`)Z5 l2E(PQXfPNgoj44xJ@Tfl$Kge#(!Si@qR*RC^f+z*KLL({ofZH9 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/cdesc-Reader.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/cdesc-Reader.ri new file mode 100644 index 0000000000000000000000000000000000000000..c31ffbdc1ca33625834e6b62cceaf8d85f2e8c95 GIT binary patch literal 891 zcmZuwL2uJA80`TiQPXyC*o4>wAwPg|b`EqJo0P*~s^FAEW_wwHRo|RY8Pja#Osu&^PlxeBB71Y{d#e+PJH$ZDJ0SWHz^YrbFWt`WFIb{er zLRo-F{Jr`G%msK+E#z~wFxTmlY_YLip81oQQN7SsG7^YxYs$kX?NSJ!mR ze{K5BKAFnXviavCEarJS?-l(Xc^Yi|Nn+h+xL?2VgxIRiFqks3*kiLID55-leae9y zdD3y!89E>-EJE~PzF-d)Q4wY_eu&dZ!f!wGEV9x@IV==v)D6i(8-Ab;{3TD9Tv|uv z5aK9t;eiiSYw=W4hy7HYgYrN{2c_+*-pwoL>AMkD2QY@$HOMa~XIy|as?{Y%bRWm* zIaAVNttC^ff6S@i3G&tb2aloE?rGw%+<_}Sc_NRGUiC9ucG7V%LT3%N12U0VN%-?p zW2FK1FLbdu#b79VSpUjW$sK=&NllWrlPqU;&vjV|D)(cG^Km$Y8KKJ_65Kjm9<$4i ZI^IPAQ!9> z=Jq!hlQe~C+m}jmgsa2e6*Jqu1#l+)PG~!ZY0@%dyJCWH{g+uY!)n9YhQw!u3-P%g zb^(3%VW@2ceX~aDnxY;mACD@j1(h4ukR3HcEXq+^CUr-d(}kzdL7pTrdH-kpq?q2m zI(3BcoQ;;sYcNSRQi&*vicuDh?;l*#eeOod Qa?Xz5n;%j>n$iz_1ITcBzW@LL literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/consume_comments-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/consume_comments-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..077af7c8383c9bbe8638a46dcead8e0edc57d26e GIT binary patch literal 693 zcmb7?%}WC@5XC)6{HPTVdJsjz3Zh`U#e;{GN~^ZAV4)QCvP#LO(>64lEZJ;T#Q)vw zhnBV{Pa9@t-|xLi);FKYe*a!ELR#{(3udB*{vJo3bHJ30lMn_>g&{~2BZAr;&$(#D zjPs#lMrlI&K!>1DS7z&|(;=lO2?S?~9OZ;A)zc&*#Nw>5G#jMUjHouTUsB|Fai&K# z9cvm*P<_j{c6z-`i{QK57EY1C62oVJ1(y(~6+^k?a-0<^SZN#x#ikVjGZ40)2dSbu zdRhVA3M!|MR%lJtw+rZ1A55ZUjLigaOKbXx)u^DE2{rf~G-OU}o?$B6+@1ejZhz1) z5)kLSr6s(84yfT_iYj}~PBRN($;dAGp>czK$93^YsaNS-VtaPo{A5cwpnADXnMtU? z20n~!y%j>J_?{Kv2l=WRzo!3gx0t*BCwQ5&7~?QgTXL2rB-_mq7f`F!{58+nJ6Dm3 caRYySU!=S8oD;zVm(CxWtFw1j)j`_-0sD^8u>b%7 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/consume_line_comments-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/consume_line_comments-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..20c8f7fc404f7ef4cc3a25c72edd38039a4940a6 GIT binary patch literal 596 zcmZva!Arw16o+?^OgASAdQp*3K@?;i9#bZrxwMj`*b^pC-8y%aT z+9vP)zV9{J+I~TYlLtW%8t~;4)rpA1eFg&Om6C~pqg*S1z;F~e-GL&E z#e!%d5t>jOQ+fV>g9k<<)Xs}2WkjHpn)QU`qR0_4V1wYgiQ0aSrB-2Epwso5F_w5P zah?EgCp2RIxXMECz7~Wfmy$xW4+=|JRjz2vIOFqb!F<>DUEqP|KY+Uw^TnfSYzVJq zAvY7M3&|DK355eG@e+!eP1gz5@RLefk&S;`#`=4!?#}QFXL(9h&D$9ImC6WfmX)YZ z;OzR9v>^lYXV3b#FmzlO&V+d5&NXx*EX~Wi-3Ru0VP~q2N5TG&%kN3qx}){H&6sug oK~-#lr4MTPGnUd`uNO7~r+Im0B~uo;cy$F_S>1rHjLLz(0rs-BxX#{W39u2T9hyc~`4uOr@8O|0rxya`JxTrhjV?K_WND-V$dFa29?l&R zNfPk-q3C!i;buzPG1U$|fQ=pwD9jwZxM#}fd?DfXZ_l17_N`dokmxeE^madH0o^uO zw)EK8wNO#ha81=nQ~Mfqx+V?WWsR`R{E@5Dk}R z(){MVH#3Lj3A-3R$(XU0SocUTWHLSHUg)3BNq?kVkjK1EH}tEmJmx%+v6hOlAz?!5 z=9dY)ZkJWEB1(BI+2uyDhiX}5j2Zc2MM9TYrJ149`LrzA)qiGy3g-&5g%=!6js45O zX)$;v4SGQ!=v#x$19AqrEL2R8pvD@srO1tb?l4Cv(uER~)V#nO?^!*jD3-5A=|Bd@ z)~*!#{h@2wXpFStVs3r*jP1uCbKo-<0(cIYqTCGWJVXC}D=2tsDbuLPVnV`7n$l&r z`PgxD##3rE8dJ|kIkS^)HgC2ngL27kWEZviKIx3cVgC)j7N`LuS(rEZL=n@26%74m zTM=pk6o4tm+>Ww66$o5W;@0U*U?vq9Ji&;kT(7M{aMB3<((Rq8&E>CC9@TMo{ko+| I)l_8JA1R5rF#rGn literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/grab_lines_until-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/grab_lines_until-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..4061993d3c3a6d01f15c847fb14ad475dbb51cf6 GIT binary patch literal 1590 zcmc&!O>fgc5aobUXhq>bPX#nG2&Je^3kak-YDvE$T&Sp8;1a5IZI9zsoLy^ooi;-J zcV>5;eyRsf_z=e)@0<7DeB6KVBYb+aE0ZwX5|aZoxlDUccq0lH28zY~f(z9BN*G== z!p2@V3YNBX!g(qaBUKn4Axlxcy!CCn(d~wFWfd1Zk>R4xaKO~CD#MV{RU;H;CY9YoaK=pzVXTl1`%?5> z#M=WKn_yIh%ODjr-}}R}l#1N?!2IcqLT5Qoaz}c=$0!I~CPTn6D>NACAX@I2Y}3uD z{wPbsrO>bfjAXb6R={VbbC4O7N+zf^7lS&cL#MDkXU{*5g3g;eD390#VuVU#YIExn z6P``%U#AeHs0AzlU6(fK`t>#e>me`u8CTjkAK(V2!Ma3b8TE+8X6cxT1Z#|S2aOX+ zR@+iKC~sGcWEc{|0T;r`vvHlUDJz@4RH#vnv0tz|7+k2znX5k>8%1Ds`cF1}!YXH< z#UHuucXk+AUNzS@na*WZq(rI)Sg`iWkY#9mZv~I*LrP##RGzvC}v!9dy z#J6Sna*-5ON{qR1RK2tqt;x!b7N$<$WfQLZk)tLhX-<;uJ%5nOG@8~&;JE>f13TI+ zKWR6HdfSfES6V6eF3}(DowHF{ptdJEucYtYxhUAH`(}ei-ZoH6;2HFSu5CD=wc*#p zFA*$5aEyuVqHAyKD(zdaZkNnoWAH#3DE=rTx&VB0Cc(UXn#Hp4(ihjme#1#5Ktc z@%YzPB$5P2b(3k88@xQGE+uc98qp(~9aXN6qqvsrY&tM_^>=3_S$?vtOA(!>Ug2TY zWg$G3ly6~QdOc!j8-Z-AIzXognhFQb0DG%YMB?pV_@kE9_SN6hGtuxH5U43 z5U2uf;w~OJG{~URmlOIE)LWX*!*zy+zQ!z4K)MsB5jViTrui Mq_rXrIcv?n08k-zH2?qr literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/lines-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/lines-i.ri new file mode 100644 index 00000000..b90abfd2 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/lines-i.ri @@ -0,0 +1,3 @@ +U:RDoc::Attr[ iI" +lines:EFI"Asciidoctor::Reader#lines;FI"R;F: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [I"APublic: Get the String Array of lines parsed from the source;T: +@file0FI"lib/asciidoctor/reader.rb;T \ No newline at end of file diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/new-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/new-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..bd25b4a8832b642dfb4d7627d50d0643ed8cafc0 GIT binary patch literal 1063 zcmZWoOHbQC5av(?3T;)PUaCGc%Ao~B4VNCe5fZ5&!cvhCk6xl4#_LJE&3f0`T@&c9 z@2u@4H1%a)-tRHr?6a*q@#gx>N+E{k@sdJe^YLrdOZ!`f<~`9nAEo^dLob!etqj%) zaZQ*LkMVra8{LYXs?M~MR=jJ0F44{EN(e@+OEO_o?3`BUf*YOJH%fcskTRTa>mKz62yxNkkdHhK(!=TEJ@2hocstjsS#s@Tv z!BnA8z9Z&|u>ne(tBInVb@oOpxi9EU|uL$v~aFT0T>Uxw^CuCJb^n; zIRpzRC3)W{9=zzZyVv(5H8Rc(ZK2glVgB6If9CbTecX` zSyw7RlY=j8t@9`Jn`u9-9Nlv_tiYmjH8rtCJXi;gN_&r*=MyL~$Rfrvqel-DTQjOM zjoh@q8wnR~)+}6P+RE7?@gcO!Mzur(8A08tcEnX+Nk9*QT+D0{{}bWdlAoI%;-V@e zb)6HBZ3GJi$(n?h=MPv`nwt8bzOrosT!Iz}-~>iWQxYT8+^>Fb!b^iC?RN$bx^z#L zlAgT0gdZM6O|f^x_G!F)e0)6KNc-RR8m%WV{&l!45Yri@4`G#UxACc|&3<&7_CIQs P9pUPoAGHz^m&NnH%>Pft literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/next_line-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/next_line-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..10a8bec4c830902c72957a6259b6bc4e45b9ee0b GIT binary patch literal 307 zcmY+9F;BxV5QQ0#15`o`Y#?OZ1s0n5GLQ-y$wQ%(cFKS*@ujhF?Z|O}{(BNtqGGw> z>3i?qJ3d*%dNFFEo?l+|p0@FxnCWHp`?C)3(%FxiUBpuq0IE#|J23 zSq7t~D~v83T@UV6=*vLQlVle#z3m#$< literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/peek_line-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/peek_line-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..e70f164dc0e7413fd2a8b8f4b2cdcb29533d1e28 GIT binary patch literal 452 zcmZXQF-rqM5QS67B_<#ic8UyVqZUc(xh9bqIWQ1Ut*(&G-6UCZ*xkFD-tE$ zFueD^H*?Z^$BSa7E5xb#T9Di7x;&Rjo}L+^-A5x8C73+U^E92>O3GSSPBUUbq9(pM zh_Ylp$AM{AjjS|Y{$wr$?^=WC0qvfY>*8Qy1Up;yG+zDJECq`V3$snK)6y3xmN5(A zi5$2sfuc_bp%CabSlx0(Pzxu9Fw&{p+tAxf+SX`$rtVKjc*~eFMeSk>&sZ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/process-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/process-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..224a04bf14c0c597e27c462ade5407e9034102b4 GIT binary patch literal 288 zcmY+9K}!QM6ofrUtk#2|H$_4OQ7E?Ow+CC$g&Yb?(bJyZCaD{`-4|XG#eZ+tD&lo! z_-5vC^a>ZNCo%ww{&VS4OSV4qLaWojWL%5_#B-^YTtwr&C6kB&Rt~M>o8L$w$`ZyQ zH=Q>GmwVn4d6NUc4xYEJPe(AG2jmoML2&gyQz7FUV`xQjT<^*sEB5c09LQ?FLNb0x z--nzgGDm0SnpmdRNy^FbmSU3pz3D*|;ss9TYu~xqOskRa%^=kWTAklnOgNFZO-E*P UKge2LcfOh8-?`}zhnvCw0?++hY5)KL literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/sanitize_attribute_name-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/sanitize_attribute_name-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..26125ae0e195083d50749910ca5fbf1290309a35 GIT binary patch literal 705 zcmZ{i&riZI6o5IHst|}K+$5$MCV&Y)5-z4w11Ka*Bq4}ib|4)T)==7|>s0*fZO0sn za%%JX-uJ$~_UPmV6~~WahESJphD7;d?w(QLSfvnis^}+~Vx=VYB1NVguL(e)KX9y8 zH=I#A7c(U!LSusGM3xVg*kCX~xghcwoe6ZY?Ki}76$J?C=FysPb&PVI0816R1%XPx zb4FO=rNn^`>{D0E-Hc)uf)9ef5vd@Cp_b%JsD$1#vcwFg-q3hAfDI;pz&(cf>WOla z5q36#-u}-|_`JpXg3V*R4t?MJzXqMcj&nUGDv~_ZLJ8%aDjzD1*b1gvKdbWn z54;W-35~Bl*dNy`kselbZDjL~RXs5CYGoh<>|t4{>3aeFV&`}Fu(A-s)3GE3lJ)8! zMCYe~LIT*YZXB#O3T;@f_b6kVlv7MN?YbAojULK&7L<`ztL0`KD_1q6shJ5l)+M7} Q6YqXoQ^udIAw6^c1zbwmKL7v# literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/skip_blank-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/skip_blank-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..e3138b81f9d969b25b48cb2aa09443c882a814c0 GIT binary patch literal 746 zcmZWn&2Q5%6z724(Nfp}PDAL)yMTn&io*_$Ky9~0io~?33@#a(UK+Qx>e$hX!{~pH zokYq$PEMYGU++D?JoqKvEzj*rh`HHcO1HIndZ<{!-&Q+S-enrijtO=VC;WI`t(3~` z%2^U(DKVFH`~VfPI2NO_&a_%tan!0_BJJu@2yamr(zt;b%}OL!r6VgoJjPrj;fAo> zvglRnBP^~-{Y57Q{B)#Bu!7(nqZ)nkrgNdZYyC83A5TI6A1)H7*1`C-# zD6~4TwgjG(W2Urn`(U2%)0?aFE5Ep%)O)x`!>YE9q-fX16TT@V;%>?s7%C*(uht6(~NEG@LHlg1Iz>Hx6+l zsg&;dUpE#>f)m^2iVK4eC&G$c(^@bPcwlN{|G*;>TcS&)Xw zyOZQ4kYZ}VRB%Rurh_bh1*dQuXjn+JiSxI%C1t w5{%u%Vc1^xGKRZtO+ z^O*0w$2*!l!AW&%CBWLeZ4`C3t>?(fWZ`=pb{akHq&0*l2tsQZu)Cs6(zTa}t(9aQ zK&3>h-1$F5&WZwNLufQg3yaURjc|P!0Ah4_QHI7aTMfdIuO}8xfB$TS6VFZz9m|jF zSnc{DR^!wuZqzGrjYe_YbEKu`BA%Z3&&phO(Lj=NEN72@+;6ln{eAQp*?jtyFs~E^ pXFNBk4-iaOd(Kk literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/source-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/source-i.ri new file mode 100644 index 00000000..96318adf --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/source-i.ri @@ -0,0 +1,2 @@ +U:RDoc::Attr[ iI" source:EFI"Asciidoctor::Reader#source;FI"R;F: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [I",Public: Get the String document source.;T: +@file0FI"lib/asciidoctor/reader.rb;T \ No newline at end of file diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/unshift-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Reader/unshift-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..53f77bb509e5ba313b6a1df8def85fd468f23604 GIT binary patch literal 379 zcmZXQ%}c{T5XF0twYDBAcvEDF7Zq)Lo?KedLcl^Pddk60l1;O8osF}*O8*bLA^rqysII=rEA0bm;|%`&kmnsmrx4Z0;=sEEN`t&%cpa z%x2K9LuPbt;pEeAj=TvqKw}DajURcf$QJ}@;N+U%a7Hz~DIj5|jBpMGT8W2S{k;EW)*#qfzM`-A_n`zgN|K43# zMWZI3+VsuLd;MkBH^*#mcx41*UHvuyH#1SND~az_1dl-pZeilgB-Ih16$XJYa^3g6 zldcs~Mn*V;j13{zA-nz6)h7KBD<^5Fq%iDoX*u9HPZP#6|1<{eHdwinaC9~(8&>&V zbI*}aktZ|K-U_mOH@&dW=_clLp!@du4s^->uze~=M` z9IN%rhh$6-j_COXt%kWav4vP@q&QFiIeV<6b)S>>zfMjU(qi7~i?>5?DQZjI4CsSH zsi#ydxn{JU(8OQhW?X-Rn$uyW&XZKoYPEtj-z(Lu!+QSidsNA=$yZy`#A0b080Ho4 Dd1TVL literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Renderer/cdesc-Renderer.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Renderer/cdesc-Renderer.ri new file mode 100644 index 0000000000000000000000000000000000000000..3aa5dbadd3f53271c2fd3edac1b5716d4a1f8d85 GIT binary patch literal 571 zcmY*WJ5R$f5bl7SDlH%}An_Qi%m|pBr97nw@lb&&L*zKuVsK*X>=gL-oLiNGA~`;P z=kIae8orAC>9titJXma{xiZrGa!0cw+nz$#00J_>Zf=Y0@WLyt8>@mvA%4M}5jJ|P z-$4aNg%w9D!h4Ayy%U1i`xd&8h|$DJ48CMGPm+8{e{uZ3_er9hqjYbK;H1dzp8DEo zCHOsrH`{nVv&eDjOLud=cEr~j{)9i14{bZz$*$p-#;OlbzFvy#sQ2*_O#Awq2WXv< z0sLtMMLL;j14YJ-uFvEq=-EmP@D%IVn5X9@E7KwyE89A`idHLmMbJG*MNI9qI*Tiv_)-?tGA)T5|vOuxqSrDnJ^?nu%U=6?k)yM*XG#=qn#b J(tNud`~YaWsTu$P literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Renderer/compact-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Renderer/compact-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..ea4c2659116a5af7db2a09c6628f5255ad150b06 GIT binary patch literal 165 zcmYL?u?oU46h$2*6|49GE)sX^{9Ia4p@U1%sZ)|hc$hZf_2vH!s5sr_+;irO2W-?i zSb&C^x-}N9T-h*0ZCQZ0Tw5ud$s+c_av%WZ#@>;m{SP{c%m^j&LK&0sXaj6N&YPxJ niU2u~1~+m6WgRu~)XiX7Khe8mKJPr5O8+AjeH#ZdS$ls2DZ4Y4 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Renderer/extract_view_mapping-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Renderer/extract_view_mapping-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..4d14d5dc116488e3acf63466bc0a48b8ef8b1d33 GIT binary patch literal 1300 zcmb7EO>Yx15bXhNX)C@Y1VV5ag+p4YO>>|Z2T)T;#YzcT?(9!Ql4c( zO#>EmPQzNWZDS$EI(FJH)<-o)gS5KyNGmuUu$?TAq=+?pS%USrndKQ{gq)|S+$P&O z&bV=Q_(Zc;H*3Cd!>5L4NzmFF60=^Y92&(XgHFlOf=duQQBXWZ;A#vJk7q;-CPt^g z;aAS3mAv_RuH6%y$@ z&79B*tWYtQ9X!9OS65ilbNkpWGGtqy&juY5R}h9B2Dc3G#UXw321p*E3~O)a2noL= zRIQxR67(e+-xoDs=vIhK481DXlHkdBhbrC3sYjW?iMaB96iiD&>BH$@*|E(hMTJ4I z&WJ1{hj{7dL>TMnU(CR3L|{aSs90*h;qNVcHIB;c{LYca6*LH9;BsH0X7Y zR#UQ6ZI6N(&>X^Rc=sNLb(+Ltit77NPh2XG>K9c-Q2l=W4^W!P6Rl@&2>3+mcy=zv z7;&=>zE^=qzGh_0BF})>M8)}v#mc0geRR1|7TVzE`T!;R*J_^S*IiIFMA)dSWr Hk+1j-$TO>4 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Renderer/load_eruby-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Renderer/load_eruby-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..a828a96124de976a47b77a1a74139499a00ac5cb GIT binary patch literal 426 zcmZ|LO-sW-5C-5LWYq-JgEu`a5oyJb<~+HyMT>zJr0OXLnIzL@>1H=fHi!OulUk@E zy$&3-r5QQydW3-82XTaqu)9969L{Ly+3qeGytM>LLI>}{c+1o=@^51i3gb+wK zFdyH0ui4r|Z@XXvFt_J5h9hUm6A2ZyES?02nHUGjrO9A`uMFf0>Q;`rx%YipgVA<-TriE|AJnAf3|% zrMB|l3X;=zG+|V=*g<>tMmffDoHSI_9kL6=wwPYOUh21sWKQW=|1KH(`;d`OYvLOp C=T(IO literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Renderer/render-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Renderer/render-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..cb384905a180ada18a6e524f106e8e7e9fc0b4af GIT binary patch literal 543 zcmZXRK~DlP5QRCI73Jc=n;ypX0to`=ZcM-^aTAFI@x*C%cVH`}ZQ3q`82`Ilc8MY0 z+RU5py_q>{ezNP?vq~8o$^C>}uCm1y58|+8NM>XL7QBq(@NQ&N&NG!dWf+?sN@VV9 zO%#mBtfh-Y@KmvziZ?;CE;M5$yx5R*=d3lxl);wM4jgT?Ku5hG3g-W8o&?JE8<*5j(WSR)#$or+ z2k-zcC-`uN%hf3hByK8T97eT!rGBrXI0XqoVapI`eOB6{D9~{w!KO+dn-if@6t=cf z+6z#?E7}~?66$J2(`Y@f{LHy<(9URyMfv#t=|H=LDBvrp3}sy~ghK2)eqwexTyjB! m!C=vdLumWiy7k7oM}tQX@#<0`c+$te)Ap-_lIfYmD}Di@@vu(- literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Renderer/views-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Renderer/views-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..13bc3dddb40866f9b743510ff3a98a2c91f21cb1 GIT binary patch literal 171 zcmZSK2(=Oka>-A&vU1F;^i3_v$WMtD$Yk?W;wsBbEiY!XVsmx#R8nv(PR`6s$xklH zFS4=ijsgTLI9;+G|&J5 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/SafeMode/cdesc-SafeMode.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/SafeMode/cdesc-SafeMode.ri new file mode 100644 index 0000000000000000000000000000000000000000..c9972be54bbce3a7d090d035391e0b93f8728b61 GIT binary patch literal 1330 zcmZ{ky>Htv5XC(dw(|*eC<3${4w@1mbu-ILf+hx>ARma6N$5aP=a?-e3M6IM|9u}R zJFyXDu^}Drc<*;l_o@G!9z9+fnWlHfmO|f}qS2fks_r;Bn20Ik1$Wc#)o7f2y>L>g z!bopyn!W~y-O-szzqM6vh5g&qX^N6f$(8S=d*`*V-esM1_k5}}pJkn_pY_Md-t*n$ zVszC-z8UsG$n255kHUE9zMn;odm8z95IDs6rOn54k6S-zbqFR!f z;w6(~*;wV5G-cr%iy&81V~#2Opu zt;$7)rU9^6255_I&ZUsnkij_{rcg!ds*<`XI8C$P6c4O9oqvf#pIrTVe%u~y;G8^P;K+JC}W)5yit!Z+O`@8t}V}Z`r~b(5|=p_MY!=5ajq%>)y?g({Biob8Wb-L}~0f@^J-Vad1+k9D$MSQNWb3+Hfh ygk^&zR5!U+604_|9@f@)n4OFGxL;c}7oNidcAl!77Z9{g9qxs|a6kSYWS#$Pp0ery literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/cdesc-Section.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/cdesc-Section.ri new file mode 100644 index 0000000000000000000000000000000000000000..fa07305d709f998ef19b516f464b3d89f7b55a96 GIT binary patch literal 990 zcmZuwU2oGc6zu~_+O#XxkS6gVVf?^&q3d3q4Yh+#ibT;g20Y}UauT<->e!L(!p5)X zI&mo5Q2LPEbM8Ioe)LKA8#%iEq;f*OC|y$VQBY&jArBHf_{wt2l?+HQzfAD+naMdX zRBn|fq{ZR@px5`HS!S%JxxEl7-v&TX?XnUn+Jg-1rf!gWpjfZOV#voi#Sm-Xa4=YM)VsC4SOBGGik1%qQ0JUgNL zTRmyjb>`+64<>1lMhT9%EZA)`kns9PU87&s$8|YKTSJ-07>>CA^-pY literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/content-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/content-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..bfe44b4e44b972c33c34c16b86ea39af40bc2b48 GIT binary patch literal 632 zcma))!B4_47{xU)ML~@R^@54D9?%Qp+>Hf{V3tTiM7@kl*Ok#Q+NCQh-2Bh&+$J%o z@%nwgzW2SC?(9C{u!JOv6pM(?){2RcDHeWlK`iMkZ2}uSZg}3rM9l8F zU|Z6z7QP3)H!@FRmS!(HhZ|X*nF@^6Ji}`qs+ae)VNpp_uva4nOl7C#(s5v8B4y*J zc|g=J^Hn)NDRi1e=t5@u9XTO?fixy*+8!fQZC>FRxlZC5L&r*7$1;pN7Js4UhX13h lHHxyFxZ0WUn6+9hf6GIatLr@cdCUWgtpAKvhEPFP?FV7p#*_d6 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/generate_id-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/generate_id-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..43da1e37cb37703e81cce5e6a841dd8cf8bd293d GIT binary patch literal 943 zcma)5&u`N(6y5=)u!+$F7c?ZiRA`%+x}x1&4RsSMio`_43YQ)#Cw^(3=Gwt_*7d*V zxkpu7^qd@zQ08 z(q!IP&Tk>}XmsZ(t{)ADe6Orhg_+?8HSvwGcU8$bsZ?{&zQy+jrLf*j+J?X1#EgU$ zGb_p>>c5(hi}TTni?eTy8z$JTx2R_fCCiOvzCg!Z?WG&_qwzD&D<$;Zchs0OKQj4;e@gvJA!E*P~ZJ(0FJ}+zj8XhwHd>t0jTYDBA!4 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/index-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/index-i.ri new file mode 100644 index 00000000..18badf36 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/index-i.ri @@ -0,0 +1,3 @@ +U:RDoc::Attr[ iI" +index:EFI"Asciidoctor::Section#index;FI"RW;F: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [I"NPublic: Get/Set the Integer index of this section within the parent block;T: +@file0FI"lib/asciidoctor/section.rb;T \ No newline at end of file diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/new-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/new-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..319d04e31a6c8e4aa2faa3587a52f4c215728650 GIT binary patch literal 357 zcmZvY!Arw17{zyxShtG@Z;F2OLwr=ylQoEKA!YLn z2USyOk`|A*q=j(nra}zZ=1m#DkAq1ioUil9;>qvMQaJJAL{+l%AP=)w%MA;G8}cMH zeJKzI{xbkuyatz1kjVaUZ?rJ$J2I+g(|*Su28o~pmyneTy6{7W`yCDYlV{Q@Ns_$B lV>s`s*I-CrfL8BH!zK*dZ62R#D#l`W(zxD!G;&2-_y*QPaKiuq literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/render-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/render-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..ae8eed6b9cbca1e5494404313ba006aab1fb710a GIT binary patch literal 297 zcmY+9F;BxV5Jnl01B8Kr4J1xxfu+rSSy}`^9x5sdQzplDn^TP)+0MYf$0d~zoJl_7#tYwh9AcvmS=WQYQ+xnM<@M;pI-oSLo zXxOAcZU@S{l$o&gA4=1&W~gqh6m#A6m?%F?N#nY{!)&y7RA5|z2lR}e}9n2 zoF_8YQib7fig776DooQmISCiDqMPzqhHow5DN|QP7KX%L3{dFVaB)9lO6Tnr8NR!Z zIb(`lDwg%V=6svfn`b3g2tQGS?jsl_QUt1~iwb&DmB(?R6j6gK$ZL8RQ{0Cs6IZ{u zz!}+GF#Pk8|NUZ`ljp#o5d2?(HAti;O)8gZOyIXxTwEGSxfuz+PD9jY* z^g9PB5K_Fx6l4zs=9yd{Xu+BPBAAh3ZH zm$?Q`VmT+jiQmO?1K)q@nw*XNqXbhv;F|o}F8N3QwH$U=M#gL{%PM=Y@+U0IP$WPf z%VNy{qHqyrM`S?MmZ|psv<%PGR{TZPWttDnK;|O<8x8bO$`qL}%;W%%$@+=1^S&(7 z1OyGIi!@8mY^JS(Y@<9Q-s6I$b_x!%wv}Ly6{!wE@bpu8>TIH2TRy&JgDl0Ne@mvO z^~f*RJAhVYa9!Zd7F~gIn=MP^zc9T9bvyJH1WwW~k2{muvpI3yp~mWj%*^USjIzo0iQT zE^k2V2LyHZx58RaJHZ5c#i1X=Hy*(^CiyGlrxczI6{a-oGIYq#N@Z)awpoK7OLMF| zTDAGLpk`ekE!pRD)P)lEo*NU!9y4Yhp3xH%F6{Ssio3hJ?U~5`K)YMr;udVyNzz@r YR=LdflCGz`yTe9L^p2CLtF8h32XEB9jQ{`u literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/to_s-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Section/to_s-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..f8baeda863224af966596486b26a10a408bc7c02 GIT binary patch literal 167 zcmZSK2(=Oka>-A&vU1F;^i3_v$WMtD$Yk?W;w;IJFJ`l1b9M7nl5;Fh&df~7PcF$X zva$+JO)kmI&r=2~ux4{}v*Io&P0Gnk&bN|=80DK-lwDe2Wd$_1G&eP`gx!kUp&+rS wq&S+vipwD_Gbh!+z#y8zQ;A(elMQHsr;>b5W|Dp)!WR8vh$VVONk9c50HLNc761SM literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/apply_header_subs-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/apply_header_subs-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..43e86e6136141e104b38409df08681cb087d8f03 GIT binary patch literal 475 zcmZXRF;BxV5Jo$o0Ih@=5DN@eV1S`Ctj^LPs1%8!io%qkx+HF6HMOntMWz29JEc@r zJz2WD@4eHVoPG1F&sSY=o~X@OP^HW4QU+;w4aU@)StXzpII~S|10KAM(lAPFA!Vrx z(#ZML6-ZJ;0`1-LNF0ntyl0xcmWAdwThbVC*%;0pwpj^9r@S{bfMm0-=C_AE6F^uX zm@0_RGpF@2X|p&>ydLvjEnaG6*<2&r3bU0UD1m^1Dj5)=%$*|xYvn?Ds14%a>j?K! zgIc~zB|19p{vn@9{19`m&!#R%Em)xyfmHrWm0)e%pe}@MQ->G(;TQ!q=-m1&*^RFy zRXfka1&lzq!%CE1j(3N1S&Jx&vQ8TI9z5pJ7t-*)miYkocNqM~xHCLq?z?^g8!4U) literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/apply_literal_subs-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/apply_literal_subs-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..20c6bb6d26930c3fd297c79b0ffd3f29ce6a4f21 GIT binary patch literal 471 zcmZvZy-&k15XC#704+icNDMGofuR+Gmi4kU2#O+6siH7tsGQVoth%;!z5w~}aZ*J2 z8t?Aidq3Un?7hJ8)1AoyVqJ{|6=t3u$sh?&xV5U9DMB)o}TF6G?h zWDsEL2PCQVGI##ZP85tr(6MEvWNzSelQrhJDlLEyF4scSE_8;LBe}F~;OwVn!jUhL z+aieeQxA4IX}o~NH6W|OntW-rV+(`KS4y}b3ZDOX-72nEk5Y@4iQ1ojvGTQJ?25%~ zN+|V`#fZFOxzWU>t{YScwvm|yBk@kmqREA8Qig|Hvj-GZq6hir_9m(D+sz$W_f=rV zNv?ap$gMyRzZUZv9NNQ$RAMj~q^%@8=r-BCdXj_}N@jh&eL?^00{#QnnANHez@MBm literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/apply_normal_subs-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/apply_normal_subs-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..8b7e220779c8fea34790ec2864c9c219d23194e3 GIT binary patch literal 467 zcmZvYJx{|h5QZ6$ffgYK!~(-9FqDBd^JQuHs1%8!ik2xu<)m(7)wQj&Bj~@!X@Lrr z&8NG2?(utg{EioIPo_jn^?E3LWoG%gWLb2{tySx(Hnieu>gvKVWY2>vic?ogIWwg< zgg6cjFMaI=xtsl!gbfDRwsoOoY4B=$X~=0=Tf}g-UJ31wu-&(uyvth#um8@BIPnE> zTe0LM4_ckkhJ}zeda%`lMsH&wjdop@u*n|iL2r1cGZRiSnO_b{mhYzs37 zFFrkZ1C~rFoa@3P*H8%HF!m(%0u1fmDG^^obFzQ7BPS$$P1*%?`m^;Ref6&}SV8lU qvzRp)Z1v|-i8zk)gDg7jY_#s0P8QuNS@ifW|K9J%L;PJTnyD`!gqbV= literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/apply_passthrough_subs-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/apply_passthrough_subs-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..c5955b243d7b31cc6894ef488ddf04b26f514522 GIT binary patch literal 488 zcmZ{hF;BxV5Jo#711&-fY-O+l0}RkET`o(5AW|eMRTQQSm6N)S)zr4m7eW6$c8Vw! zVzlqOckgsZC+~3i`eaIgL~kdODznHh6w9K%u(saLt#FPiG|j4-yQXjq*mIgiqr{a; zElf!U0cO5HiW-vWuK($aS(-x6Hbt#U1O461iNJMZ0lYx7k(!R7H?{)F^@#gIw#NjCOo!kpEKWBtMD8?ClTru@-v$qO|Ooxcf~`YX5ee z-}8je2$f#(1W{~xX*3C?!v|H8?_y@z(z!)bO6S6q@%bK>qNE1B(jVG~qUu2Ma0M&T sZ?Tb!K!omiscJbK4)abHo!z#h??NSuZfaEw#Qq+GAC5oA0~R6m1@WDv0RR91 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/apply_subs-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/apply_subs-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..061ac18c03eceaf5a2742cbe71a8f4bac61c7c44 GIT binary patch literal 663 zcmaKqL2KJU5QTFnO6x$|LvQV2PlW4upd^WJ+)AO0N zM7cxhs%ZQsVs)ACdm!7jjjojkTLP)S6pf?J3ym8i z>-+CKc4EhapmUnUtNt3m7uc}IGe{siw1x8i3TCo~T!Dm?P}e)K_*733WeY(wi64SF z;L`(NSak|Zi~D0>yU(pT0QOV5mQSm6{Vy2aq$|t={}ELs+E@Sp literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/apply_title_subs-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/apply_title_subs-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..871687f79858d2bb2f6b97e34383d188f42a1bb1 GIT binary patch literal 431 zcmZXQ!B4_46vjE2s$h%9)ceM%%o0A^i7t10{s> z`@Y}z%e%Pxf&1?dRRF|tH{rHYWp*b>>OC;6>)pZ%Tl0l!azlW8CaLGgrVyf3g;fYJ za|ah`EJyQv)(ALAN-f@n2^vY;`D}T4|0>Y{Scz0{v(yY90hZ)=Ryc*KU2- WUQ+L+7P-%k&-MQ~?zdyi+te>G!i`}7 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/cdesc-Substituters.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/cdesc-Substituters.ri new file mode 100644 index 0000000000000000000000000000000000000000..2bb28c0a71123f296bdc6b23f42f39178048b467 GIT binary patch literal 882 zcmZ`&J#X7E5cN<o~gxclK>hV2eC78ASjxNh|(fM9)srJ_bBy) zaos^6_};sB$Gg+3;T<`-y)c51YvZ*_dQrb&^l~o3pp9jEqCDQfQ;t%O3N9|=m?Wo?maZlgonmw z=us8fZ9K`?hFU9uz$dNhbN)B+xlaoF>}r&+X-l} zyiu(O-U^uny^q8@ZmoW1jpQ5YSS&p%uomP_dQK~BG1oifufVn&%no)Qljehzk z7s9wd@;|wbvFQDFkq}&K6ClYliSU*SXAf;H(!q9l9UH@@Dq3$3RM6A literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/extract_passthroughs-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/extract_passthroughs-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..94c6aa9d002b3242f67e25ec075a125741a4995b GIT binary patch literal 538 zcmZvZF;BxV5Jo$o0Ih@=SP%?WV1R+P5}UKMKr2O}63{Ybs2s}B6%Zgcx5=>o48_-}fjl=t~Ho>g4rWXgs97QN;jl(lzvQzvqPk zD}Yrph>jB%ZW(K5)2yUq(#9kx1^E$`pi4q>Fzcq`vNjTu8z3N*wgONYO<3+gqyoc* zwMrNLAPN?L{0}A5t7oM}$3)$2hR4QmM;1;zM{u*PZX*?!1P$4qVlP$h_7Hws>pi2B z9qttb)}SqEi4A#>BM30#uIOS VAr7xgl@8eMhl3pqY#&nJ^#xH9x1#_6 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/highlight_source-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/highlight_source-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..e6719723ee4d93f8c4f19577b275131a9f9e923e GIT binary patch literal 602 zcma))ze@u#6vsPAsx6{}PCA6sL800TPPwHOEgrN`tWGybF8A6CJ(D9psQ&jRm$p_4 z;*ceI-gIR1g1XruoEpW&92*NPv literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/parse_attributes-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/parse_attributes-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..c45c5f60a17ccd5f6dcd1af8bb6d4904eaf920ea GIT binary patch literal 601 zcmZWn&r1S96!s8nDMW`l)#0%T8dxiIY9!D|X(1ufPD{k>I_o|hXO@}S!vDUR)o{)0 zeBb+iym?2*ALRV~Stf)G#d^X_Cg;%^dZB-jQ>ED#HAZ1v7^XeqjmDuL40VDymx+;z zkZBQXgT~@YUmr~Lz44ed^CIS$NOHOHnNYPXazdMFbT4FThbSukXzcl%F^i%U6rmWWV9m>!Ck#N^Sz+ z7KSjj&BX#_3Wdm(OqkYeUUlm%**f^9ykL-1RQkp_h5mgmwNuhgW@ZCgnub&=umBpA zHh)FN4Gm7WDQrifm?@OdAdmy5C9@2L}^0Jh4_8eXW*{xeFX3(_t|{h-|t-Oy}{ z@_VWUoHJ<*Qsk`H>qWKDZ*~4w&~;%qEgm6iE6G{=b6c>*F%IbN3<6!bf;$yE-Cq>< B$+Q3f literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/passthroughs-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/passthroughs-i.ri new file mode 100644 index 00000000..6fb2824c --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/passthroughs-i.ri @@ -0,0 +1,2 @@ +U:RDoc::Attr[ iI"passthroughs:EFI"+Asciidoctor::Substituters#passthroughs;FI"R;F: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [I"WInternal: A String Array of passthough (unprocessed) text captured from this block;T: +@file0FI"$lib/asciidoctor/substituters.rb;T \ No newline at end of file diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/resolve_subs-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/resolve_subs-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..d21a84db4024d0e1c3d1d588b3c3f59026c5d6be GIT binary patch literal 496 zcmZXRO-sW-5Qck@s4a+sH$5!TgChMnZ#*=j#efBA?I{PDB-3{2W_Q`$2>JK!wqhwg z&pXfaGIMga;McQPRdSxnc8YGTs{E3oEWR>mmH5GL+Y~n9(c2`8pHf>ARjPE#a6b0~ zN3L;b?A<{+i6#@?(@i0$RQzVgpMu#mnsYB}YLxDj_r@BGvw2tX+r!K!7+4w5>nJ(T zeVIijy+wlHY__Y#+!~o6>zG=yQq?u|D-=|d!-|E<3|2tW&qGivYpD>(ly;<~9Yjg= zb!2@JAU7W*v7?gipZR&q>a+AnGIxgLD(FLGdkBwaAP6klAQ)flIqwEtW29xNWT`RG zhQ)bX7fM)WQ2YD&n*?C!dq7kg4TRc($-Cnv2^@_^c_)i|4zbUj;yYD2sbAvxlA{9S6cU&j2SauptYo3ItxAQwwhjoa zaV%!jJ@ZQ?&HN3FYT3BGu_r6`1D^)vgs>s6PFDDZhC=h;+5E)8VvVYQwk1BJB9F%H xAs0Xac4)K>zHCsU-T#J4^?JRml}4Srrpk;!N^#@_;uh{?q literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/sub_attributes-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/sub_attributes-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..395480cba9a2c235d4aca8f9e483987f5222c88f GIT binary patch literal 609 zcmZuvOH0E*5bi;uwonAU>0ziIRQdvMn@cNN2((aaJxC6+NjA;WWH;>2`at~eZc^J+ z+da;H^F3zf;OLp0Jw3>fkfHdTFid3RpK!-(ooW-jQbffAgG@Wbc^rAI&QOP(M>0gI z2$`8cBS-tM^yNRi>x@REk((gpp(N)kjR{ptlM`YEO~wQslExsX3bo&q{~ISM9Z~>Sw zh^5LX!k3^K`|cLJgJ#t}_F|x7pM_{mkXk|D8Zxdm7mIeux-Lda<~fUYcyEz?AQZ0y zbL(PeS0ENpR#8H(qzzf7+;;P#7#bz?PRl#Tq}1IvD;qpdX~-fdVHMl` zQy_)@Vk@1p;Sf4?D2$d4&Q|XS|t^<2AZS zYEb>7&Bg~R3TXZRl`l;dr-;}!iBh(VRwWOQJndk*?zuJF+NFIJ`S0z95zteU zm+$+2-|IU%d81d0C&ek9$juBeQ%Q6wywJZeHhwP|*UEU*d!B}VZ(_I*iQ=dChT^OW;K5?Vm^ob~03ho8uJumQ9{{W8#llhDDw^Y#nfxIrD zDj0{umhj{D<@o{ z7BX#Q1Xb hMx&?|`kijwsrjAIzbiyMWV_Q2-7$YJJJ506?i&-Lv_Aj< literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/sub_post_replacements-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/sub_post_replacements-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..b490c4b880ec8143bcc18fb96dbcbefc5326117f GIT binary patch literal 463 zcmZvYK}*9x5QTe?RT~fwp47t6 zOVSo#=5t4iJfU?L|Gy<{Jch{lyi!ub*|%{b?8+N}p!W@ZAEKcVmR#1=aK4?H3M-aY zn35%jS*X{Wwk+TqId9tXt+ol9?~v{*QLmm1;kE~(5f!bV!^#@;USa@xeC`HT8DiJTLpB7Z>qw< gV32jvIJ$0H^cr^>Usfvbi_Px+u=MZjw>EE5U(a%yc>n+a literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/sub_quotes-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/sub_quotes-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..bb40dbad09820d32663874b633fc7bb72e8630ac GIT binary patch literal 475 zcmZXR!Arw16o+?^sw=1mZ+Zw-WP|B;PA{A2px|I^^VEZ+>2nQhlbH8{`rq4j;vBn% z_rC9!_d7ay<(G>mBRQYw?-@{G^7KLlNpy}rd;9Q)00SO8Pm`!WL8(-3BpJu~(q~AD zJb}ZTf3tBgo$}E7tW?tQt1Wvb+{RnZYmu)&(=iXnRye}6Yxwp4%v?CJcET1xe45rl z=JS@t+0Mw?Tsb57BGyw{mOck$P}xGD!U02aMz05~GTNXO67m59lKmhKRtLhzQs~W# z($Fz+_g8w?qVL(N0JbEj^m;2J!>ltB5F6C^Y`3v+K;CIQSou^`>;-n9b8wI|k1e-W zWI}H0*V<9pQZy&8>AX9BS0#)_qqLJmVXukQ{ve5NOO*}9u8v_{z+W2=E^F3*07s;q AKL7v# literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/sub_replacements-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/sub_replacements-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..99e5b05cd982ba4a7ddc32204dee8d2c962e7c3f GIT binary patch literal 477 zcmZ{hK}*9x5Jr2DRa+1bdeXxZMJm*`=gFlNEd~^dt*0Dhvl)}6X*SHxqW$+KwGgFv z9p-)SW9H!K4bEO4tOl5tn-}EVrtzr}QE={j@=jP4O5++!b^^rXEDA*u`B7mw$KWid06b%0+k_ z*QMt3Z5GJZD}QyAI=7HF1gP6r*wV6-8s`H l6S|WRQ{Z?!jyqA%>o?kM?{%gY zqy=fi*fGfD8&B8s%2*zseWIdcR%xf)kPXf>yV=zY z^9FOn)7WXA26?^KaK&P<4Tnuz*w%%rtYPgDPzfC&d<^;zPScs}(O(j-7JaF(q?_eU z!eqQ&{x6Ojga~K3FaoK7VuamG47(lQ>rXpx-e?S-F?B8d9SLTKnJ8GDw+GcF*!9DL%Bl!8G9lqXNXr?U_ul(P#uE->p=Otkp4m V_b!oPoo_!{&wu#)(3%Mg`wuU&wIcuk literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/transform_quoted_text-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Substituters/transform_quoted_text-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..4de5eb8b3e4879a55c3a77d87d3f9346514d143f GIT binary patch literal 631 zcmaKq%}WC@5XC*nsuje87e5Ze>R}62dl13wrHU;qSddyzJ(M(?c0+eFYcdP^-<#~V zT2VYD8D`%6-Xq()uk2{_h=Q?u{V|l3VLCZfK@y&j;o8p86w|i~Nv2bh?-a10KS;ux zdn=SmQ4ku&UaFZTMHNY7&;K5agTa99m(?s+0@-P^amdZGDj9R@t3qnpVf($38?uuY zva_E(&)o2Z;bj)YdlQFun`pOA^PItW4GNKwI+dmk92#cu%wXg~p$_6;{7d#B=X&|1 zwA{kD<)wF>biqkv0GBY%BnWAVn8} zJ1rU1iw?-5%(zvy0|jcdB^NSvRT6EFn}mHU(2F)K%>(CO7=A${P&+y9Or+otE4@*u zWqJoIb1t_#BdIdl*4~=9+*lpc|NdC3H&?mrcDs|UBs`AlkUF(JXU9{nkS}sIyXN2j O(J5KrxU z@9X#D^(uaY+x3g#083+!sAdYAh7Bbtvg?^piU4_?7umzK;ZjzHJ7WPhSSkU~&U50& zqiNYVi`*?uC5Uesxa(LKXg^LhfR{KOg?14nlNzmS7%_Pi<*`5E{t~-Fi+hXpfrN39 zJ+Drsk{swlxPz%0x-*s@QR80fJ#_~`k#g^qN=;GI)~eT|F4%nZb~ezT?4%Mthmz$O z|FVobj4cBy??17a^@}X!Mm06+kfg|>^?SHLQnxndlTpCjNUeq4`jxb~Iw)C(Gf#dn zsWs<+Jl(X%dMsj5k@b1lczEWuqdZ|GbYm^fq35+C7}nM}!JVkWBS>p2KhcR$6xl%P m#-Zlz+J7iKQ5!-#zwuuh|DjHNU6f|q3I~xq4RrZ{^}Yc*!<1+M literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/Cell/colspan-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/Cell/colspan-i.ri new file mode 100644 index 00000000..5b32c5d0 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/Cell/colspan-i.ri @@ -0,0 +1,2 @@ +U:RDoc::Attr[ iI" colspan:EFI"%Asciidoctor::Table::Cell#colspan;FI"RW;F: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [I"SPublic: An Integer of the number of columns this cell will span (default: nil);T: +@file0FI"lib/asciidoctor/table.rb;T \ No newline at end of file diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/Cell/content-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/Cell/content-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..3c52669009a5470c5f4cee27fafea26aba13feed GIT binary patch literal 307 zcmY+9O-sW-5QaU-R;>pQ-c(p3LJP&_Jh`-}!5j)j>M5tmX4@>TJIiKr$iH{DMa0|i z@P5pDe(?#nAFreU)^6Nr?x?MAjHt3}MUJ&&0phK!vZr;gjA=B?i^z7_=c|210-cnIh_QC!yX1GPP7fqX~T zTHQ92Fv+E%Edn_j3M8H12$V{2a0#27?#_#jPEXGFsEEFMN<;JW@Z&#r zFEBqJH3vwVS1$0Tt8yltjJS<>IN+SpjF6<`QdXLyHUI@>N&p;$QUJqg=cEOAtz}Ab z4U3#j4YL8A^m5BI8PMK`SB?oS7*%uZ5Jx+>*81L!5 z@7+7U*x~itv(t#H?t5*xbxnOmqROUhzF44mDXT17MNQN=%`PBrrLqR`$yj?onhH^t zIP<--q#fRzaBCSpdykmd{lRoR!P(Nwz_At%Z~uEXGRXHJeJhG-ow`3ZBMafxFmP*N zsDUGK3!MuGX(9G1GI7u3x(L#HOQwOn3&~Cqboy-$yZEaOX9Vg-R%>Jf!5yP0#1=1? gd$K0a^ZKmHCJ&EEOoQ(%sfGL-z2IT0==X`_-PsRKsC?T(BBqidr@%>Sj>e?ogF#<_e0@U$~B literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/Column/assign_width-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/Column/assign_width-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..224cbc582259ac1807d8bab6b3768e23ff8f4531 GIT binary patch literal 467 zcmZXR%}c{T5XF0ts4a*>Z+@`EOADp#d2(s31_BmDDhN5qWV20{Zg<1(MDf3OlLkuh zILw>(d(1n#_<-U2v*7?s{ks-anmoOhK@#4ebF$E1KQgB>fZ!!g!pYKcDRaZgSbz;? zN&u{ks`vWwL>>ik41=o9l;j3(4}dk=U0nfqTD=#V&S9{q(2`602JTKZZ)mZwSd~F^ znff%Ji6&t+Dqt&AyjDnpq0ZR>%cvBrP3qXF5|(>=EILKzd_odqwl&rZrDME}97Mt9 zANWb3-n~jKdM4_3@YSX{+PBZ?fUYHapNhBGHj5uIbKOj2W#+MN+He+EN4udFR9o$s zHa?9mnmzOvTdBl+K2Li|_%I?vs1CoMF!3$A9>$F}3GbE6W_avkMokq{n>Fh{Gvk@- literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/Column/cdesc-Column.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/Column/cdesc-Column.ri new file mode 100644 index 0000000000000000000000000000000000000000..c2ff8df7dc93c2a73448092ef8e4975cc89b124a GIT binary patch literal 468 zcmY+A!E3@W6vjP_RICc_u*)_U%8q01{CZK`20bVu?$pD0O``_WBqZtl_m{K-899XH z``-6{d^f`{xZAyJ2C&h#LAjFXTsak_$kLUTZKDW~kIy1|S~?~~t(n&rV2_pL0Dq30 z1jB4uId75qjjlNfUmEWFp6pNjdlhb+e4& literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/Column/new-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/Column/new-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..4e61bfe8f1a8d8fd58c98117acd87c5d6734199a GIT binary patch literal 199 zcmYMuF$;n~90hQPFv+E%ErLTD3M8HX5h#`5;1V`D-JKU5op*BHQ4xLjw1(#Q-j6r( z&M-S26a`4-vtZ_`>T1f}Jn$sDyWk$PJXoe3<-AtZC=F0zA{fA43EN13p|*9i68zQ@ z!Ks4z&nvLL*%qM3ZNsD)gP*imo33(Tl3ci8aU54p&#%lthKS3WJwk+y(VSSrIPh(1XG literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/activate_rowspan-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/activate_rowspan-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..07cd7e83c4d453ad149f70c5ec9663424b24fe7c GIT binary patch literal 444 zcmZXQ!E3@W6vjP_>h!XMV~1@Jy2}Pby$xP3);XatL54f^Fw*qZ24hlQ(y9Ob8g-1} zG30%}@5gu1`Go$*)ChoB@8{@Blc!fQNWyC_oc!hvzsPKD#dQF|+bjuRVk@M~jc|ql zmON7ku;65oUX6CRa}Q_9D45NlSJj!4!ocmZZ_a65R{%|Uy+Q5T&>L5roJ~6h?*892 ze7+)Hl|giwwv%wWIIw`lCrQTHNprxKCH_8GOvLw0S|*IPwQ`uVZHYRFf@Km;a&$-= zsij^q*QBs0&;ya_dXphBQ!s%_Stj-2K-5Hys>csJ<4km-xL&_YjV%*(y==2&pU~B$ wEz`!8O_dKqcU(w?qtPgBCE?BEN&dOI4=PC8^8~S976KMaZN21BHp#>+O?Tsdp#FO|sUjli zWnpJ$=XoDyueHLX#Y85EL-9T%lgl(Z;9lrMY_p8iI%j%qMN&vj>H5V=L;BW3?`|6U zqoGbXPi11HLR_-AAjCOSn$%bdLvQB%uOWdqonoi7alsRbC%Y6grZ%=jbdl_qglS@D zP%>q7)RK7mv&W&>vtniL1^bbUyqMRs5GG_uZMh%~ueoy~1@8DX0%rtYMzAyL!piAE zCKZeypCDz1b-ln_{z8rlCN}qOazh5~3fm0*2Svszp}{Ciz_Wi?*O0M7*NxmjDoKkA z1CH!&6*KgYd0ncbrFEF9j_pCl3+ng#Q6uyZFIicVNZ|$qFRpeU&k7#**!NO;rrJqY H#ntl%@4d;Kv^Lm%nyCbFB0m>wwR`KT&d$;zQ81U)+ksA!R*ik2b}ha4iW<80h@>|i@f`S*Rc zcQ*^-l;q9x%)Afh&FBsv-h5XS<6la*L|h1BOflh6p1!{(+Aw{gq-FnXgrgsqdHUs> zp`2HWTBR|*B~!sLex8^`keB?P{$Hm0i5LN-E}_|oMLpvY@;fJYNb(2B$;tJL$+ZE7>#>ZH6jvuyC8_H zvwDJZX)KYH8Hd}38*q4=r?=GAjfjTxnzuxA@q{!posx#bK`&!9q4Sl@w6ANXy$YgC z2t>?Up6MlPs}`VS8?E|T<6*(&N}B~wsP}d);Q|zC5AKybLH7-lhy?1X>SaarQ(*nc z4HAkH%c|obso8?7-h^a8sZhp&P(NSR>x?d^b>ZBu3jY%lEFb8!dIWe$g1BoF3)F^K zZg|aoO%PL}ZzVi>X+f(x4*t$+E{PCNppPVbM9WSAB}9X7WEJw=^xP8G%L|-10z5vi zxnOzvS@7v88P@GIj8IQqRyO`xB*hpOEzm;@wl2Q8cP}{U{FYpvAG(wY7%jcakQLpy zXO^tsiV5Cw>!$`JFW}uZTx#|zK>|D262I$f3v2eVcOA|x?FDSB*ec>8&eO5qJ(p38 zia1M($VErcIv0ZyVm#@zvT&VPEx_fiRI#2FphV%ot-tz#23I=E& z#z>oTJ@EmVxFs#!?Hyu!U2mE|WI9F%;KGyML}%A+w8%9=t99lk$T#LWV2H@G)JZYXvF2 z1QIgO^UizHd&i5nXQvP+_Ip90a%Fy|#XLDzWXy*$&Qtj$P`qUGRyG2%)V zh7gyMJ@L%hKwshJU@8?^hJ(5(j8+aW_nw91O;aOAX|p98x;Plul7r8C4zCXXM7I27 zSyv)G&10x+`O89>Riri^c2!JF4DkTfFh?A;380c53L*>JXrmJ1b-#*8#p*~iHPUWg zwWW?r`+uq_Q)t+F2;30p_1@94wLhZX!&(|o;Mz1h?WxsZf4tU)Mx#;QnJ3-byZ9JO Tyf(TR%KsvVq3!X3i+1J*nu3Ao literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/cell_open%3f-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/cell_open%3f-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..aec240b5731ccb40e4896deef0594f61a10127b4 GIT binary patch literal 382 zcmZXQ!Arw16o+?^Y;FfVcvB(Ni-Nd%eLc82EfgFKnWr8kO3?s!4OF~5 z!Xxkde*BI`Z*cbdWF^4dd@a$}w#-iz%c2vBTEE*C%>x7WoMzGe+)1TME4?LvwJ0`0bkT88^^bGNQ=b7;IbnMINtlYa@=_p9({P0u=PLmqZX!lQ3eM#86WU7 zLf?^b+*5~KReSD%w+XqiTZtNpzvT&_7p(3j9)Nj3>O;S?E7Z3Z->IipdGFl(9h} z7Sa{yreqm+e0$^xyxB~2^D;JCk+|At%%xkGxe!%gxk1aPqC3u|<05L4xc)m+k>$$C zJoAFHs2%$AMZ*#>t&0I?2�hqCj1;584(iEo;dL5-e`v&~e(xGD$!)FnNKu4E?ub zfTJx)n^cUn0o!sDqXS9-cR4D?1QeNaV+%;h9cS-hk2N5Z1;mIJHpqQwPSH#r;FY%0 z_Rx$h4r=Sat)Gpw>vwIjMM0S_bZ>E+BQ6h6_ z2wBoXazYl=SZ?l7IsWc0{|d*+Y(~1eDWqUX&h~C|YBr4~#9KF8uG}H%PBb;n=4~YB zzjr*It_{_7GCs=NS^B()ECN{tuI9iRV>|*vOb`}A=03z2Alv{l1+*-M6R4={gKlgc zbjdhbX6aK@Sd%hyZiFK51ph5$U{U)6hyEsz*2yuH5 z9R9VrlT>Y9gyJn6cS56ZY{R{?vY^m=sdW&N&ZH8Ok4B@sm8GXw0UJNDieYczg5cIAGM69#udQPOg(JM;q zJUYowMJ9aYCPDI#=DtyO`)sW4VKNLvzMwH_?#Mc6k!zn3j4+(Nn?}cRocFS*e|zVL UzPhW%6jODqZ^|KSLPhX=1FE%rG5`Po literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/col_count-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/col_count-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..8dd5bd3e6c6abdfdae76affe553715f8cf9cb15e GIT binary patch literal 460 zcmZ{hO-lnY5QaTST3gf~pu(^oJZUR zA-waO+{IJwx{NoF(I_6H=B&cw-S4yikNVnO1J1HD&VuU@651CtI~a6e0M z=MK_!WF6{)ESTyC9e)ipK`D?rzIOO5NvH6|RiHL|eG4^l?O;t19Q{M8qGj2-WyzJ) pU8s`Qc~H>`_*P(N)CO@dsidNDTmc{%JdqW2DukoTyrhgTj7Lv1juVqruocqAvT(O zZ2?xSmI$z9)}ftiYX!8xpD7;i)kYyW?5F9lxgz#6vYVUPKtWMe&I}f K&t`1vK63!RCV5E! literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/end_of_row%3f-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/end_of_row%3f-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..e93d2add9af12b34aa4654c89b4f856d166f9670 GIT binary patch literal 314 zcmY*UJx{|h5M@9v(4_+#AX#AmmNsI%474gl%2267Wk4A!$2k+LNiMqB1pa;9G63Vf zd!MIgZ*ckgOd4R(ey`9~ROS;avS@;Bxh1n@8lD7*mo$qW7rnN&B<+X+Hmax*V6C`E zUQ+Au%iaDJB_d5>-1(xmn&9duWuvKVH{ht%8)d#Dt63KZU zD!s3dULcnh>YW^_P#0Mac=w62K_|m0Ti+A`BqPxn)Xs*VrrI}cFAedLqdjxTmSNje lBw_;>b7O0a<2XObqS5_B0K?v!+7>hQyLsjglc!u9G-f!N#linJKuTQ!_oTUq zaYeag#3dQa=20uhAMW~(FNx-J95ih%MWONHYuAEI-8P7Ral2>bx;U6NWSq@<8ZUoq zJe_uinkq_8vu+x{EsrdO0I}dIa{gfmQNdQal_lg1H8&1I@)4{pm+)S(I_g-Jptr|S z3dJC7ltimEzBf!o<(1?G-@rW`pzxQGP(WoVoY0CSgiA-k_b={)Bvrq7a7QQo5ZQM* vH0)ZVEGX?Np?1ND{pnUno=hfLCyl!|xBk-?d?iIbrk|3>E_6IHdGLG!gBXj4 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/mark_cell_closed-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/mark_cell_closed-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..c83b2b6d17031cf66f3aeea77d057fe97d8e99c7 GIT binary patch literal 426 zcmZXQy=wwN5XCLRX|zdUsw6O6ngoK{1?C#fhj0)*jG?*oVLFHR!P?9W0`?W*EJCwY3g6Mnmv%9yn@E~qNOkFy}PuAC(2 z5m%x#3UMiXQ2yCjQr~oY;>?oy90yHX8Z8}O9rG5lz_Ba@$5%lIiK*NUw$|X@+V~XpJd>K8z6Bdfz literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/match_delimiter-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/match_delimiter-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..3098454f09ac4e35084ce87420d6598ceaa4123f GIT binary patch literal 447 zcmZXQu}=aq7{wV(L0B9ZOw^<~7fp;XIefQ(AW4lR#^7{=>GeLmFO=)0?TP&Nwvb5B zrOSJL@Atlw&O7wqrbYpbtL+?pX^QNOm`M6-=~ekrpr$o>v<%qOOe7Cur-%xpys-ca znQH`imDZu1n9Ad~zyA9%WwROd>L%Bu3|#En=F+a38X#0RYpi@5dZSue@3M}8%VST7 zm!DSFB}-4Uwn)V5E(`diM745!QwDCdJUm=eg}k=riwZ2b3P_SFx04iV%@2E0wh+mA zU1_K3GoO92D@{i$B%WCx!!doWoMviczXN$hEA$=ZCHI-g+S{^8l%71(B_)=>+I)5CnNI@uoBC%1f6KDZve)b~o

_CMl(?Umvk{s2Q_KFI(8 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/next_line-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/next_line-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..df928d3cde03c441e87c7617ac0c1a1d25cd957e GIT binary patch literal 370 zcmY+AF;BxV5QQ0#15`o`Y=CqMOS`mLxh{=>N*O94R2DLzi*s!(96PcdO8-4h8LFC@BQZOb)K;Ic&9nySZ!zIOI>7#B1+>UQ@L`X?2Zhx-enz)r@wFN zbhfh0lu@#uwbOVpZ?X{Pm3P1(AVNTd8bE_D37ltq-G|AS;=owqR8XT9B*jK}vRB|V zuqcTZX`D135DqFw1=K;DS-S=OLUxxK8b0$?{b$qL59WWwx00##gHY7c$w8p5=j>VX yl~oRu_N7p(V8nybvye0#4zpGoA76Zr4L9)iez^lXlOi9mpVbFGjNZ3-kUs!iLXp7$ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/skip_matched_delimiter-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/skip_matched_delimiter-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..9ddc5758f88ce8a930b3321eaecc605db47be04c GIT binary patch literal 484 zcmZ{h%}>HW5XC*11>xes8=7qDK}?Kro`wYcAZa3o2%dT%+wDLnl-;_!Rr&AT7L};+ zIGK6x{buH{`3xsdcUl6B)OLa{(`kH6EDAbyO~qm(oXjv?q?pr&92y4fejEjZk(ETL zmQEXhxkz#ZmN(mAb`F+q235#^r8?worL;Ml25c#tLoCa!a;Y<|t`H7WE?o_7cUx!`Ng* zxyr2401J^y1egnLP)}58@ylNSvmdf3f?idpk}?JTCVM9Ix~>2mNWH<*wxKtwe0@5a}-ZTPMvr2}z%{-8nBsh7V2DvO#6 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/table-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/table-i.ri new file mode 100644 index 00000000..e2a2c870 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/table-i.ri @@ -0,0 +1,3 @@ +U:RDoc::Attr[ iI" +table:EFI",Asciidoctor::Table::ParserContext#table;FI"RW;F: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [I"-Public: The Table currently being parsed;T: +@file0FI"lib/asciidoctor/table.rb;T \ No newline at end of file diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/take_cell_spec-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/ParserContext/take_cell_spec-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..10c060db3a2aed25aac364a937cd9eebe3a7110a GIT binary patch literal 547 zcmZXRK~KU!5QRCIf^ad>o0?3@MH2&Dyet&-~!83wqgf;0M*c`!FF17=h9Tfv5p}-7lHA5wL(jq;8 z(ZGXo5JzEL?|?K=8O*?H5S-`$dXLn2o+LQGz0{Ry(%rO=6%~=g+Fj$7&{k9!h<(hl7QAtjJI>N+j=8SyzR~yu n&vOFlvsibsmI_CsQPPUS_T7C$d8=eP32ust-QxJ=m+Ix)HF_Yt-BW+1p!S!*YAsU8wcf zJ9EHMVw?B`%naZ6%{MdqsBul7_s@->v}f#;>ra|Hm+Yw;3z{)cwXD%v`+@}rkrPT~ zMtEZ>U1Y)5BHFEyNi!k7h&dE#b8VL%PxS`$CEQW7()K;F0|3{XtDca#)v{+48JzL4PN zB@}I*4waTHc%@bPj;~F6SBf~XDH4Xw_empZvS3H>!Yh-bPb{eSf8ZC|D#|7=PWKlz zM$e|X+o%a!%j~u_H}|DlNrMG1&f6E!btfL2M{zW`_}1@6F~U@Khui2Y4EJi~YecTR zMfWE17F^)qOCg0CDhURRCCTKF&$Qn#11+u0J_28kfdrd`20+ErJM35Y(|@n%0m)i^ zi`K7&AT=nlvar(O3{lBqs>^ZQm9Rm6P+8FKur7<+{RbrUD+%NacVk$iqCg*zs%mbN z(;LhxTbYtct)|LLixXKJ@FZ^kj0acouTJ|ua#-u$1LV%%YA~Lssg-lZaaF(zLzeN< z6~S|oN&<4Vk{J@S;5F3nYVUD<2waAcT5kw@9Cg^|Ubo$gAJEl(Ko{3)l;aKmE3Ha7 zax^wp{eiRNB`pg+;%mmDKUQX$pJ*5gZP-9=4JiMjN@j!5Hj! zo$eLZcqzQh68IC{DXf}vFYyNpc2)T_2}E8&ln>c6VI@=z#QL}qjRlAJBr2TrU@Uni a?O&#r(6Taz_$m^g~+iA0Qvm0h72mifEDu{ZW z_vXEicQSm3>D!an01NlILN5I_pBRxv=bBJ4ZnU>e<$?h5oMzF@B4}f_Ub82FwJI!L z|1l;aO<`O&g*Dp4#W8%P=+M*vZBtXB<5L*VYegLLp@+-go>xU`PpU3Oa+bFw51C^m zr!2^2&lDt=D3?8$^u-5i4su7n>hDKj8EVub5$k{Pk5;+Ei*Y#c$>_UcO2`elAf4yZ rxPA8sqxsHQjN>>TWYOfd&E0gN;jUA&=*pU6rhev_aks`j6`lMAj%;rW literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/new-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/new-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..b598f41ff342d0125206d697aa2c2f0c7afee906 GIT binary patch literal 180 zcmYL?u?oU46h%8oEOv2l5fvnpg4oW_r3Ecy=puFMl%x@Zu_@^b;@_L%;Cj#HoJo9x z#r13@K+%0Fg%8^{b4?hHJM|_&E+wPuVvt(5R-$zPH5Wz!jQB*#8j{`%qosw_&r@;t z^gTe3`j_f(3Q68`heH#=EWc}`vMg&NMwh!Vhr?mZ5uFwu)vyoFn$eBXBIW;TievQX G#E8FHoj3ge literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/partition_header_footer-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/partition_header_footer-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..1494c11f457d87f5851e6eb6e30d7771e04a5ce4 GIT binary patch literal 411 zcmZ{gL2JT55Jo+e)#{}MZ?&+bmljI(Jh^CTg@8gS_LPInW>>Qqcfw{u@!xmX9Hf*U zhnY9uo4Fc%!T9ry3V?+>tqqr?^BXI&WKyGN%a+`>G^mZ=?ugiU0pfj`CDTPySgWaE z@&FrDm3jD&NX2pqqq=A>Z-piDRAlC+7MOHPS1@b5{k1;l8- z=g-eRJ^Q4W@6V1?y0l*_iOPxkLX)Z(d1;08gp!xCDsGm6Yb_i{=PBK=#>m^FVNS}D zj=I>WRZwm%qx zaxpnLi$P|+1$5BJBjR^Gvm#}|=xxf9xyKx+7^Y#HMnGF`qDZ>7nRGym)9E>IAK@+l r%C<8M_Okue*-G literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/rows-i.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/rows-i.ri new file mode 100644 index 00000000..5e3cd28b --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/Table/rows-i.ri @@ -0,0 +1,2 @@ +U:RDoc::Attr[ iI" rows:EFI"Asciidoctor::Table#rows;FI"RW;F: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [I"LPublic: Get/Set the Rows struct for this table (encapsulates head, foot;TI"and body rows);T: +@file0FI"lib/asciidoctor/table.rb;T \ No newline at end of file diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/cdesc-Asciidoctor.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/cdesc-Asciidoctor.ri new file mode 100644 index 0000000000000000000000000000000000000000..00a14a8f62eae5bb779cf7a1b821168d4aba87dc GIT binary patch literal 3442 zcmcgveNWp)7-!Oy0PSF-FVN9-S8G~Z71C0vYvq)Vyg02#2w7sfqI8Qc&V}4?eD2-3 zfvKNvpKQ-_j*}3guF|CO2g3KfzyJ7h@yK3pl!b5GH6aHyI1t@9V67FNajmZl%ICZ* zd@W?g&N!95>|>%?vPx&QG z2xNS-NEIWI6n}z~gq`^;LT8XUzwBCfW|cB2#jLtDk*LeM*1>FkO-xiO2q;M-6c=(8 z#hReo$|Oayu*)Q}0M*o1CDCujMvyh)&N(E15Cv2-W#Yb6>S92{(<+o~Vd73T?Wc)i z;)_8fIRs5fpHZ+&dLjtK5K0F|{$f%PsKY==MpRO`#Gq@v92F9r1|sSa3Z$SxI#^ZH zD!wp%kRzl5TG$x{pP7x(?A^K4$#0nKK0qeN-l&q$rz=j9N|okv+`+expq8DO2ilBV+9YGX ztC-y@uC<+v^De1C-{mBf-aOp5&P6QS*o--t9_zs<&@F7#-Eq&tLYi!zT*!v^jdaSr z-q(Ww*g*(XV>ge~>=vC|1{cey0HFUh_1LEZa56SWA5 z!U4hswm!4KMvE}N{J6Ey+Q5^r)DS~lH_xFq+IMQ@IbOiv?H8$k3JC>I zG?N2!63yDcmASKy3%l7IdAK8X*UbygTtDOuCzZ9>Z)7w8g8xW zmgWbx)~q`vw@_`DUKbkkS-!o%^2xAPe?2<%oObi5IISuxQc#(q#3~$}EPx}N7kjA& zG5{AjEF{$e<{3zd%y@?oQU74Pb>MYU~IJrz4r&P=wn<_$GcI4z~}(XUtFbLluL< z>4O`PVm$+05uE^{L(B-OMrYn=M(*>}U33-U7Y5~8Kj9cBOdv7rbH6|01}@0}dHJXe zfG)ruscEQ9GSVUXrs349g_3gsy*6E#G*z%~UKoEtxj}O~x#ziOTcq{JyLZ3Cb^|0B z3Jpt4gI%Qo*5hiy8@rYG_oEVIh)@{3fTfZ!a)hiA0D1sT=Lz4fQ4ESGeiHH?hXPHx zy3oqD0H-ed0acjKN^7wNRgcWS1+8U6>#|Oa@EZ`=r88h?=_&_BYj~yG9460>Wg9W+D>-p&tqlw3RF`A7G+&HT3P!l h;MWhZ;_<_^zT(iO6fOYrV>J0|NXTC|zi+e_{sC^S@2UU* literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/debug-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/debug-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..93cce797bc06dff6f04a4a124bfcbde7c0129fff GIT binary patch literal 165 zcmZSK2(=Oka>-A&vU1F;^i3_v$WMtD$Yk?W;z~(PDotmzVsmx#R1$YAPR`6s$xklH zFS4?N$XK(vg;;SHlqTh5Cg)p8Lk#gvEXpn|u(AT0Sel!fSHf<^?NE?dR8kzxV8!K- smYI`kVBo35zy{PD&EToTuAvEHdMe50WG3k+A}rAd+o4yK1e6W|0N2zoq5uE@ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/puts_indented-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/puts_indented-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..0642a15994d8fba8531be52c72c665c0930a22b8 GIT binary patch literal 187 zcmY+7y$ZrG7yvs+6uXGJi71&=#CHC=w4j9yE>fosk~FafV^i`Y`1V#D#QBc9-rx+= z(_U8qS@SvychkHaNks6t_0C>o!$so+M}Q7F!HdjRQgU56Z2WdOtUDwT-ixC{uMtdw{PwOwwgsqGpis33T*B#Y>88F9gU Iy)*2C-_O509RL6T literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/require_library-c.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/Asciidoctor/require_library-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..3aa16d4d5d3921b4fb36f17f9be18b3a48210965 GIT binary patch literal 467 zcmZWmJx{|h5M@9qv;z#47+^TU0uq#N2xn;#R0>e3f-+@5*TikCrsr_6i~8@e(?}IC zS-N{)_q>1bA-ZpmIu&9_o3S*x&XQvl#9^1^msKo33pHcpO(24&Q5>ERt5m5>r$)07 ze=$)onu<#^L=6$zlNw9@HGz zQVmq(SSDwQnan`aTCpadwdbk-Qa%(&%U4BmPe*N^)b({oxRL-jPDaAJVQ*ZI^t>K5 zHTnaZ0JZkuXeZ$+H-A&vU1F;^i3_v$WMtD$Yk?W;ww%qiBCyQDotmzVsmx#RFZZqPR`6s z$xklHFS4>i$Xc_xg;;SHlqTh5Cg)p8Lk#mxEXpn|u(AT0T$-DjSHf<^?NE?dR8kzx xV8!K-mYI`kU|-A&vU1F;^i3_v$WMtD$Yk?W5--lkFON@2O)5=~&o3=0C@ryPvtn~~ z^HfrCEKbhMOvz6!$uF|9!lKNY%`L==yPz~FCo?(UN*ZFkZ(>n)X@Qj$(5}+l)VvaQ zD{hB^#G;boXa*}ThqTO`R09KpXa-Lub`4E7pb4HzvN@Sa`iTg;^udnND@p=NhX4S$ CwK~!O literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/cache.ri b/src/main/resources/doc/asciidoctor-0.0.9/ri/cache.ri new file mode 100644 index 00000000..ad254101 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/ri/cache.ri @@ -0,0 +1,21 @@ +{ :ancestors{KI"Asciidoctor::BaseTemplate:EF[I" Object;FI"-Asciidoctor::DocBook45::DocumentTemplate;F[I"Asciidoctor::BaseTemplate;FI"-Asciidoctor::DocBook45::EmbeddedTemplate;F[@ I"2Asciidoctor::DocBook45::BlockPreambleTemplate;F[@ I",Asciidoctor::DocBook45::SectionTemplate;F[@ I"3Asciidoctor::DocBook45::BlockParagraphTemplate;F[@ I"4Asciidoctor::DocBook45::BlockAdmonitionTemplate;F[@ I"/Asciidoctor::DocBook45::BlockUlistTemplate;F[@ I"/Asciidoctor::DocBook45::BlockOlistTemplate;F[@ I"0Asciidoctor::DocBook45::BlockColistTemplate;F[@ I"/Asciidoctor::DocBook45::BlockDlistTemplate;F[@ I".Asciidoctor::DocBook45::BlockOpenTemplate;F[@ I"1Asciidoctor::DocBook45::BlockListingTemplate;F[@ I"1Asciidoctor::DocBook45::BlockLiteralTemplate;F[@ I"1Asciidoctor::DocBook45::BlockExampleTemplate;F[@ I"1Asciidoctor::DocBook45::BlockSidebarTemplate;F[@ I"/Asciidoctor::DocBook45::BlockQuoteTemplate;F[@ I"/Asciidoctor::DocBook45::BlockVerseTemplate;F[@ I".Asciidoctor::DocBook45::BlockPassTemplate;F[@ I"/Asciidoctor::DocBook45::BlockTableTemplate;F[@ I"/Asciidoctor::DocBook45::BlockImageTemplate;F[@ I"/Asciidoctor::DocBook45::BlockRulerTemplate;F[@ I"0Asciidoctor::DocBook45::InlineBreakTemplate;F[@ I"1Asciidoctor::DocBook45::InlineQuotedTemplate;F[@ I"1Asciidoctor::DocBook45::InlineAnchorTemplate;F[@ I"0Asciidoctor::DocBook45::InlineImageTemplate;F[@ I"2Asciidoctor::DocBook45::InlineCalloutTemplate;F[@ I")Asciidoctor::HTML5::DocumentTemplate;F[@ I")Asciidoctor::HTML5::EmbeddedTemplate;F[@ I".Asciidoctor::HTML5::BlockPreambleTemplate;F[@ I"(Asciidoctor::HTML5::SectionTemplate;F[@ I"+Asciidoctor::HTML5::BlockDlistTemplate;F[@ I"-Asciidoctor::HTML5::BlockListingTemplate;F[@ I"-Asciidoctor::HTML5::BlockLiteralTemplate;F[@ I"0Asciidoctor::HTML5::BlockAdmonitionTemplate;F[@ I"/Asciidoctor::HTML5::BlockParagraphTemplate;F[@ I"-Asciidoctor::HTML5::BlockSidebarTemplate;F[@ I"-Asciidoctor::HTML5::BlockExampleTemplate;F[@ I"*Asciidoctor::HTML5::BlockOpenTemplate;F[@ I"*Asciidoctor::HTML5::BlockPassTemplate;F[@ I"+Asciidoctor::HTML5::BlockQuoteTemplate;F[@ I"+Asciidoctor::HTML5::BlockVerseTemplate;F[@ I"+Asciidoctor::HTML5::BlockUlistTemplate;F[@ I"+Asciidoctor::HTML5::BlockOlistTemplate;F[@ I",Asciidoctor::HTML5::BlockColistTemplate;F[@ I"+Asciidoctor::HTML5::BlockTableTemplate;F[@ I"+Asciidoctor::HTML5::BlockImageTemplate;F[@ I"+Asciidoctor::HTML5::BlockRulerTemplate;F[@ I",Asciidoctor::HTML5::InlineBreakTemplate;F[@ I".Asciidoctor::HTML5::InlineCalloutTemplate;F[@ I"-Asciidoctor::HTML5::InlineQuotedTemplate;F[@ I"-Asciidoctor::HTML5::InlineAnchorTemplate;F[@ I",Asciidoctor::HTML5::InlineImageTemplate;F[@ I"Asciidoctor::Renderer;F[I" Object;FI"Asciidoctor::Table;F[I"AbstractBlock;FI"Asciidoctor::Table::Column;F[I"AbstractNode;FI"Asciidoctor::Table::Cell;F[I"AbstractNode;FI"&Asciidoctor::Table::ParserContext;F[I" Object;FI"Asciidoctor::Document;F[I"Asciidoctor;FI"Asciidoctor::AbstractBlock;FI"Asciidoctor::Lexer;F[@I" Object;FI"Asciidoctor::Section;F[@I"Asciidoctor::AbstractBlock;F[I"Asciidoctor::AbstractNode;FI"Asciidoctor::ProjectError;F[I"StandardError;FI"Asciidoctor::Block;F[@I"Asciidoctor::AttributeList;F[I" Object;FI"Asciidoctor::Callouts;F[I" Object;FI"Asciidoctor::ListItem;F[@I"Asciidoctor::AbstractNode;F[I"Asciidoctor::Substituters;FI" Object;FI"Asciidoctor::Inline;F[@I"Asciidoctor::Reader;F[@I" Object;F:attributes{@[I"attr_reader eruby;FI"attr_reader view;FI"Asciidoctor::Renderer;F[I"attr_reader compact;FI"Asciidoctor::Table;F[I"attr_accessor caption;FI"attr_accessor columns;FI"attr_accessor rows;F@|[I"attr_accessor colspan;FI"attr_accessor rowspan;FI"attr_reader inner_document;F@[ I"attr_accessor buffer;FI"attr_accessor format;FI"attr_accessor table;FI"attr_reader col_count;FI"attr_reader delimiter;FI"attr_reader delimiter_re;FI"Asciidoctor::Document;F[ I"attr_reader base_dir;FI"attr_reader callouts;FI"attr_reader header;FI" attr_reader parent_document;FI"attr_reader references;FI"attr_reader safe;FI"Asciidoctor::Section;F[I"attr_accessor index;F@[I"attr_accessor level;FI"attr_reader blocks;FI"attr_writer title;FI"Asciidoctor::Block;F[I"attr_accessor buffer;FI"attr_accessor caption;FI"Asciidoctor::ListItem;F[I"attr_accessor marker;F@[ +I"attr_accessor id;FI"attr_reader attributes;FI"attr_reader context;FI"attr_reader document;FI"attr_reader parent;FI"Asciidoctor::Inline;F[I"attr_accessor target;FI"attr_reader text;FI"attr_reader type;FI"Asciidoctor::Reader;F[I"attr_reader lines;FI"attr_reader source;FI"Asciidoctor::Substituters;F[I"attr_reader passthroughs;F:class_methods{@[I"inherited;FI"new;FI"template_classes;FI"Asciidoctor::Renderer;F[I"camelcase_to_underscore;FI"extract_view_mapping;FI"new;FI"Asciidoctor::Table;F[I"new;F@y[I"new;F@|[I"new;F@[I"new;FI"Asciidoctor::Document;F[I"new;FI"Asciidoctor::Lexer;F["I"catalog_callouts;FI"catalog_inline_anchors;FI"delimited_block?;FI"grab_lines_for_list_item;FI"initialize_section;FI"is_next_line_section?;FI"is_section_title?;FI"is_sibling_list_item?;FI""is_single_line_section_title?;FI"is_two_line_section_title?;FI"new;FI"next_block;FI"next_labeled_list;FI"next_list_item;FI"next_outline_list;FI"next_section;FI"next_table;FI" +parse;FI"parse_block_metadata_line;FI"parse_block_metadata_lines;FI"parse_cell_spec;FI"parse_col_specs;FI"parse_header_metadata;FI"parse_section_title;FI"resolve_list_marker;FI" resolve_ordered_list_marker;FI"roman_numeral_to_int;FI"section_level;FI"single_line_section_level;FI"Asciidoctor::Section;F[I"new;F@[I"new;FI"Asciidoctor::Block;F[I"new;F@[I"new;FI" +rekey;FI"Asciidoctor::Callouts;F[I"new;FI"Asciidoctor::ListItem;F[I"new;F@[I"new;FI"Asciidoctor::Inline;F[I"new;FI"Asciidoctor::Reader;F[I"new;FI"Asciidoctor;F[ +I" +debug;FI"puts_indented;FI"require_library;FI"set_debug;FI"show_debug_output?;F: encodingIu: Encoding +UTF-8;F:instance_methods{J@[I"attribute;FI"attrvalue;FI" compact;FI" +eruby;FI"id;FI"preserve_endlines;FI" render;FI" role;FI"style_class;FI"tag;FI" template;FI" +title;FI" view;FI"xreflabel;F@ +[I" docinfo;FI" template;F@ [I" template;F@[I" template;F@[I" template;F@[I" template;F@[I" template;F@[I" template;F@[I" template;F@[I" template;F@[I" template;F@[I" template;F@![I" template;F@#[I" template;F@%[I" template;F@'[I" template;F@)[I" template;F@+[I" template;F@-[I" template;F@/[I" template;F@1[I" template;F@3[I" template;F@5[I" template;F@7[I" template;F@9[I" template;F@;[I" template;F@=[I" template;F@?[I"default_coderay_stylesheet;FI"render_outline;FI" template;F@A[I" template;F@C[I" template;F@E[I" template;F@G[I" template;F@I[I" template;F@K[I" template;F@M[I" template;F@O[I" template;F@Q[I" template;F@S[I" template;F@U[I" template;F@W[I" template;F@Y[I" template;F@[[I" template;F@][I" template;F@_[I" template;F@a[I" template;F@c[I" template;F@e[I" template;F@g[I" template;F@i[I" template;F@k[I" template;F@m[I" template;F@o[I" template;F@q[I" template;FI"Asciidoctor::Renderer;F[ I" compact;FI"load_eruby;FI" render;FI" +views;FI"Asciidoctor::Table;F[ I" caption;FI" columns;FI"create_columns;FI"partition_header_footer;FI" render;FI" rows;F@y[I"assign_width;F@|[ I" colspan;FI" content;FI"inner_document;FI" rowspan;FI" text;FI" to_s;F@[I"activate_rowspan;FI" buffer;FI" buffer_has_unclosed_quotes?;FI"buffer_quoted?;FI"cell_closed?;FI"cell_open?;FI"close_cell;FI"close_open_cell;FI"close_row;FI"col_count;FI"delimiter;FI"delimiter_re;FI"effective_col_visits;FI"end_of_row?;FI" format;FI"keep_cell_open;FI"mark_cell_closed;FI"match_delimiter;FI"next_line;FI"push_cell_spec;FI"skip_matched_delimiter;FI"starts_with_delimiter?;FI" +table;FI"take_cell_spec;FI"Asciidoctor::Document;F[I" base_dir;FI" callouts;FI" content;FI" doctitle;FI" doctype;FI"first_section;FI"has_header?;FI" header;FI" name;FI" nested?;FI" noheader;FI" notitle;FI"parent_document;FI"references;FI" register;FI" render;FI" renderer;FI" safe;FI" source;FI" splain;FI" +title;FI" title=;FI" to_s;FI"update_backend_attributes;FI"Asciidoctor::Section;F[ I" content;FI"generate_id;FI" +index;FI" render;FI" sectnum;FI" to_s;F@[I"<<;FI"[];FI"assign_index;FI" blocks;FI" blocks?;FI"clear_blocks;FI"delete_at;FI" insert;FI" +level;FI"reindex_sections;FI" sections;FI" size;FI" +title;FI" title?;FI"Asciidoctor::Block;F[ I" buffer;FI" caption;FI" content;FI" render;FI" splain;FI" to_s;F@[I" +parse;FI"parse_attribute;FI"parse_attribute_value;FI"parse_into;FI" +rekey;FI"scan_name;FI"scan_to_delimiter;FI"scan_to_quote;FI"skip_blank;FI"skip_delimiter;FI"Asciidoctor::Callouts;F[ I"callout_ids;FI"current_list;FI"generate_callout_id;FI"generate_next_callout_id;FI"next_list;FI"read_next_id;FI" register;FI" rewind;FI"Asciidoctor::ListItem;F[ I" content;FI"fold_first;FI" marker;FI" splain;FI" text;FI" +text?;FI" to_s;F@[I" attr;FI" +attr?;FI"attributes;FI" context;FI" document;FI"generate_data_uri;FI"get_binding;FI" icon_uri;FI"id;FI"image_uri;FI"normalize_asset_path;FI" parent;FI" renderer;FI"update_attributes;FI"Asciidoctor::Inline;F[ I" render;FI" target;FI" text;FI" type;FI"Asciidoctor::Reader;F[I"apply_attribute_value_subs;FI"attribute_overridden?;FI"chomp_last!;FI"consume_comments;FI"consume_line_comments;FI" empty?;FI" get_line;FI"grab_lines_until;FI"has_lines?;FI" +lines;FI"next_line;FI"peek_line;FI" process;FI"sanitize_attribute_name;FI"skip_blank;FI"skip_blank_lines;FI"skip_list_continuation;FI" source;FI" unshift;F@[I"apply_header_subs;FI"apply_literal_subs;FI"apply_normal_subs;FI"apply_passthrough_subs;FI"apply_subs;FI"apply_title_subs;FI"extract_passthroughs;FI"highlight_source;FI"parse_attributes;FI"passthroughs;FI"resolve_subs;FI"restore_passthroughs;FI"sub_attributes;FI"sub_callouts;FI"sub_macros;FI"sub_post_replacements;FI"sub_quotes;FI"sub_replacements;FI"sub_specialcharacters;FI"transform_quoted_text;F: modules[P@@@I"Asciidoctor::AttributeList;F@ I"Asciidoctor::Block;FI"Asciidoctor::Callouts;FI"Asciidoctor::DocBook45;FI"4Asciidoctor::DocBook45::BlockAdmonitionTemplate;FI"0Asciidoctor::DocBook45::BlockColistTemplate;FI"/Asciidoctor::DocBook45::BlockDlistTemplate;FI"1Asciidoctor::DocBook45::BlockExampleTemplate;FI"/Asciidoctor::DocBook45::BlockImageTemplate;FI"1Asciidoctor::DocBook45::BlockListingTemplate;FI"1Asciidoctor::DocBook45::BlockLiteralTemplate;FI"/Asciidoctor::DocBook45::BlockOlistTemplate;FI".Asciidoctor::DocBook45::BlockOpenTemplate;FI"3Asciidoctor::DocBook45::BlockParagraphTemplate;FI".Asciidoctor::DocBook45::BlockPassTemplate;FI"2Asciidoctor::DocBook45::BlockPreambleTemplate;FI"/Asciidoctor::DocBook45::BlockQuoteTemplate;FI"/Asciidoctor::DocBook45::BlockRulerTemplate;FI"1Asciidoctor::DocBook45::BlockSidebarTemplate;FI"/Asciidoctor::DocBook45::BlockTableTemplate;FI"/Asciidoctor::DocBook45::BlockUlistTemplate;FI"/Asciidoctor::DocBook45::BlockVerseTemplate;FI"-Asciidoctor::DocBook45::DocumentTemplate;FI"-Asciidoctor::DocBook45::EmbeddedTemplate;FI"1Asciidoctor::DocBook45::InlineAnchorTemplate;FI"0Asciidoctor::DocBook45::InlineBreakTemplate;FI"2Asciidoctor::DocBook45::InlineCalloutTemplate;FI"0Asciidoctor::DocBook45::InlineImageTemplate;FI"1Asciidoctor::DocBook45::InlineQuotedTemplate;FI",Asciidoctor::DocBook45::SectionTemplate;FI"Asciidoctor::Document;FI"Asciidoctor::HTML5;FI"0Asciidoctor::HTML5::BlockAdmonitionTemplate;FI",Asciidoctor::HTML5::BlockColistTemplate;FI"+Asciidoctor::HTML5::BlockDlistTemplate;FI"-Asciidoctor::HTML5::BlockExampleTemplate;FI"+Asciidoctor::HTML5::BlockImageTemplate;FI"-Asciidoctor::HTML5::BlockListingTemplate;FI"-Asciidoctor::HTML5::BlockLiteralTemplate;FI"+Asciidoctor::HTML5::BlockOlistTemplate;FI"*Asciidoctor::HTML5::BlockOpenTemplate;FI"/Asciidoctor::HTML5::BlockParagraphTemplate;FI"*Asciidoctor::HTML5::BlockPassTemplate;FI".Asciidoctor::HTML5::BlockPreambleTemplate;FI"+Asciidoctor::HTML5::BlockQuoteTemplate;FI"+Asciidoctor::HTML5::BlockRulerTemplate;FI"-Asciidoctor::HTML5::BlockSidebarTemplate;FI"+Asciidoctor::HTML5::BlockTableTemplate;FI"+Asciidoctor::HTML5::BlockUlistTemplate;FI"+Asciidoctor::HTML5::BlockVerseTemplate;FI")Asciidoctor::HTML5::DocumentTemplate;FI")Asciidoctor::HTML5::EmbeddedTemplate;FI"-Asciidoctor::HTML5::InlineAnchorTemplate;FI",Asciidoctor::HTML5::InlineBreakTemplate;FI".Asciidoctor::HTML5::InlineCalloutTemplate;FI",Asciidoctor::HTML5::InlineImageTemplate;FI"-Asciidoctor::HTML5::InlineQuotedTemplate;FI"(Asciidoctor::HTML5::SectionTemplate;FI"Asciidoctor::Inline;FI"Asciidoctor::Lexer;FI"Asciidoctor::ListItem;FI"Asciidoctor::ProjectError;FI"Asciidoctor::Reader;FI"Asciidoctor::Renderer;FI"Asciidoctor::SafeMode;FI"Asciidoctor::Section;F@I"Asciidoctor::Table;FI"Asciidoctor::Table::Cell;FI"Asciidoctor::Table::Column;FI"&Asciidoctor::Table::ParserContext;F \ No newline at end of file diff --git a/src/main/resources/doc/asciidoctor-0.0.9/ri/created.rid b/src/main/resources/doc/asciidoctor-0.0.9/ri/created.rid new file mode 100644 index 00000000..8e413008 --- /dev/null +++ b/src/main/resources/doc/asciidoctor-0.0.9/ri/created.rid @@ -0,0 +1,23 @@ +Wed, 23 Jan 2013 09:53:13 -0700 +lib/asciidoctor/backends/base_template.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/backends/docbook45.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/backends/html5.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/renderer.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/substituters.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/debug.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/table.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/document.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/lexer.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/section.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/abstract_block.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/errors.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/block.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/attribute_list.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/version.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/callouts.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/list_item.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/abstract_node.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/inline.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor/reader.rb Wed, 23 Jan 2013 09:53:12 -0700 +lib/asciidoctor.rb Wed, 23 Jan 2013 09:53:12 -0700 +LICENSE Wed, 23 Jan 2013 09:53:12 -0700 diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt.html new file mode 100644 index 00000000..9626d2a3 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt.html @@ -0,0 +1,633 @@ + + + + + + + Module: Tilt + + + + + + + + + + + +

+
+
+

+ Home + Classes + Methods +

+
+
+ + + +
+ + + + + + + + + + + +
+

Methods

+ +
+ + + +
+ + +
+ +
+

Tilt

+ +
+ +
+ + + + +
+ + + + + + +
+

Constants

+
+ +
TOPOBJECT
+ +
+ + +
VERSION
+ +
+ + +
+
+ + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ [](file) + click to toggle source +
+ + +
+ +

Lookup a template class for the given filename or file extension. Return +nil when no implementation is found.

+ + + +
+
+# File lib/tilt.rb, line 69
+def self.[](file)
+  pattern = file.to_s.downcase
+  until pattern.empty? || registered?(pattern)
+    pattern = File.basename(pattern)
+    pattern.sub!(/^[^.]*\.?/, '')
+  end
+
+  # Try to find a preferred engine.
+  preferred_klass = @preferred_mappings[pattern]
+  return preferred_klass if preferred_klass
+
+  # Fall back to the general list of mappings.
+  klasses = @template_mappings[pattern]
+
+  # Try to find an engine which is already loaded.
+  template = klasses.detect do |klass|
+    if klass.respond_to?(:engine_initialized?)
+      klass.engine_initialized?
+    end
+  end
+
+  return template if template
+
+  # Try each of the classes until one succeeds. If all of them fails,
+  # we'll raise the error of the first class.
+  first_failure = nil
+
+  klasses.each do |klass|
+    begin
+      klass.new { '' }
+    rescue Exception => ex
+      first_failure ||= ex
+      next
+    else
+      return klass
+    end
+  end
+
+  raise first_failure if first_failure
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ mappings() + click to toggle source +
+ + +
+ +

Hash of template path pattern => template implementation class mappings.

+ + + +
+
+# File lib/tilt.rb, line 8
+def self.mappings
+  @template_mappings
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ new(file, line=nil, options={}, &block) + click to toggle source +
+ + +
+ +

Create a new template for the given file using the file’s extension to +determine the the template mapping.

+ + + +
+
+# File lib/tilt.rb, line 59
+def self.new(file, line=nil, options={}, &block)
+  if template_class = self[file]
+    template_class.new(file, line, options, &block)
+  else
+    fail "No template engine registered for #{File.basename(file)}"
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ normalize(ext) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt.rb, line 12
+def self.normalize(ext)
+  ext.to_s.downcase.sub(/^\./, '')
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prefer(template_class, *extensions) + click to toggle source +
+ + +
+ +

Makes a template class preferred for the given file extensions. If you +don’t provide any extensions, it will be preferred for all its already +registered extensions:

+ +
# Prefer RDiscount for its registered file extensions:
+Tilt.prefer(Tilt::RDiscountTemplate)
+
+# Prefer RDiscount only for the .md extensions:
+Tilt.prefer(Tilt::RDiscountTemplate, '.md')
+ + + +
+
+# File lib/tilt.rb, line 38
+def self.prefer(template_class, *extensions)
+  if extensions.empty?
+    mappings.each do |ext, klasses|
+      @preferred_mappings[ext] = template_class if klasses.include? template_class
+    end
+  else
+    extensions.each do |ext|
+      ext = normalize(ext)
+      register(template_class, ext)
+      @preferred_mappings[ext] = template_class
+    end
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ register(template_class, *extensions) + click to toggle source +
+ + +
+ +

Register a template implementation by file extension.

+ + + +
+
+# File lib/tilt.rb, line 17
+def self.register(template_class, *extensions)
+  if template_class.respond_to?(:to_str)
+    # Support register(ext, template_class) too
+    extensions, template_class = [template_class], extensions[0]
+  end
+
+  extensions.each do |ext|
+    ext = normalize(ext)
+    mappings[ext].unshift(template_class).uniq!
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ registered?(ext) + click to toggle source +
+ + +
+ +

Returns true when a template exists on an exact match of the provided file +extension

+ + + +
+
+# File lib/tilt.rb, line 53
+def self.registered?(ext)
+  mappings.key?(ext.downcase) && !mappings[ext.downcase].empty?
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/BlueClothTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/BlueClothTemplate.html new file mode 100644 index 00000000..9f944a31 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/BlueClothTemplate.html @@ -0,0 +1,350 @@ + + + + + + + Class: Tilt::BlueClothTemplate + + + + + + + + + + + + + +
+

Tilt::BlueClothTemplate

+ +
+ +

BlueCloth Markdown implementation. See: deveiate.org/projects/BlueCloth/

+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 127
+def self.engine_initialized?
+  defined? ::BlueCloth
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 140
+def evaluate(scope, locals, &block)
+  @output ||= @engine.to_html
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ initialize_engine() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 131
+def initialize_engine
+  require_template_library 'bluecloth'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 135
+def prepare
+  @engine = BlueCloth.new(data, options)
+  @output = nil
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/BuilderTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/BuilderTemplate.html new file mode 100644 index 00000000..b9b0169a --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/BuilderTemplate.html @@ -0,0 +1,456 @@ + + + + + + + Class: Tilt::BuilderTemplate + + + + + + + + + + + + + +
+

Tilt::BuilderTemplate

+ +
+ +

Builder template implementation. See: builder.rubyforge.org/

+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/builder.rb, line 9
+def self.engine_initialized?
+  defined? ::Builder
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/builder.rb, line 19
+def evaluate(scope, locals, &block)
+  return super(scope, locals, &block) if data.respond_to?(:to_str)
+  xml = ::Builder::XmlMarkup.new(:indent => 2)
+  data.call(xml)
+  xml.target!
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ initialize_engine() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/builder.rb, line 13
+def initialize_engine
+  require_template_library 'builder'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled_postamble(locals) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/builder.rb, line 31
+def precompiled_postamble(locals)
+  "xml.target!"
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled_preamble(locals) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/builder.rb, line 26
+def precompiled_preamble(locals)
+  return super if locals.include? :xml
+  "xml = ::Builder::XmlMarkup.new(:indent => 2)\n#{super}"
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled_template(locals) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/builder.rb, line 35
+def precompiled_template(locals)
+  data.to_str
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/builder.rb, line 17
+def prepare; end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/Cache.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/Cache.html new file mode 100644 index 00000000..5e2312b4 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/Cache.html @@ -0,0 +1,322 @@ + + + + + + + Class: Tilt::Cache + + + + + + + + + + + + + +
+

Tilt::Cache

+ +
+ +

Extremely simple template cache implementation. Calling applications create +a Tilt::Cache instance and use fetch with any set of hashable +arguments (such as those to Tilt.new):

+ +
cache = Tilt::Cache.new
+cache.fetch(path, line, options) { Tilt.new(path, line, options) }
+ +

Subsequent invocations return the already loaded template object.

+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ new() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt.rb, line 122
+def initialize
+  @cache = {}
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ clear() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt.rb, line 130
+def clear
+  @cache = {}
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ fetch(*key) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt.rb, line 126
+def fetch(*key)
+  @cache[key] ||= yield
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/CoffeeScriptTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/CoffeeScriptTemplate.html new file mode 100644 index 00000000..12379e55 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/CoffeeScriptTemplate.html @@ -0,0 +1,493 @@ + + + + + + + Class: Tilt::CoffeeScriptTemplate + + + + + + + + + + + + + +
+

Tilt::CoffeeScriptTemplate

+ +
+ +

CoffeeScript template implementation. See: coffeescript.org/

+ +

CoffeeScript templates do not support object scopes, locals, or yield.

+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ default_bare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/coffee.rb, line 13
+def self.default_bare
+  @@default_bare
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ default_bare=(value) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/coffee.rb, line 17
+def self.default_bare=(value)
+  @@default_bare = value
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ default_no_wrap() + click to toggle source +
+ + +
+ +

DEPRECATED

+ + + +
+
+# File lib/tilt/coffee.rb, line 22
+def self.default_no_wrap
+  @@default_bare
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ default_no_wrap=(value) + click to toggle source +
+ + +
+ +

DEPRECATED

+ + + +
+
+# File lib/tilt/coffee.rb, line 27
+def self.default_no_wrap=(value)
+  @@default_bare = value
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/coffee.rb, line 31
+def self.engine_initialized?
+  defined? ::CoffeeScript
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/coffee.rb, line 45
+def evaluate(scope, locals, &block)
+  @output ||= CoffeeScript.compile(data, options)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ initialize_engine() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/coffee.rb, line 35
+def initialize_engine
+  require_template_library 'coffee_script'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/coffee.rb, line 39
+def prepare
+  if !options.key?(:bare) and !options.key?(:no_wrap)
+    options[:bare] = self.class.default_bare
+  end
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/CompileSite.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/CompileSite.html new file mode 100644 index 00000000..b3ebf1a8 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/CompileSite.html @@ -0,0 +1,180 @@ + + + + + + + Module: Tilt::CompileSite + + + + + + + + + + + + + +
+

Tilt::CompileSite

+ +
+ +

Deprecated module.

+ +
+ + + + +
+ + + + + + + + + + +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/CreoleTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/CreoleTemplate.html new file mode 100644 index 00000000..377d5b66 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/CreoleTemplate.html @@ -0,0 +1,354 @@ + + + + + + + Class: Tilt::CreoleTemplate + + + + + + + + + + + + + +
+

Tilt::CreoleTemplate

+ +
+ +

Creole implementation. See: www.wikicreole.org/

+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/wiki.rb, line 7
+def self.engine_initialized?
+  defined? ::Creole
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/wiki.rb, line 24
+def evaluate(scope, locals, &block)
+  @output ||= @engine.to_html
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ initialize_engine() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/wiki.rb, line 11
+def initialize_engine
+  require_template_library 'creole'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/wiki.rb, line 15
+def prepare
+  opts = {}
+  [:allowed_schemes, :extensions, :no_escape].each do |k|
+    opts[k] = options[k] if options[k]
+  end
+  @engine = Creole::Parser.new(data, opts)
+  @output = nil
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/ERBTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/ERBTemplate.html new file mode 100644 index 00000000..b571c55f --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/ERBTemplate.html @@ -0,0 +1,528 @@ + + + + + + + Class: Tilt::ERBTemplate + + + + + + + + + + + + + +
+

Tilt::ERBTemplate

+ +
+ +

ERB template implementation. See: www.ruby-doc.org/stdlib/libdoc/erb/rdoc/classes/ERB.html

+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ default_output_variable() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/erb.rb, line 9
+def self.default_output_variable
+  @@default_output_variable
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ default_output_variable=(name) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/erb.rb, line 13
+def self.default_output_variable=(name)
+  @@default_output_variable = name
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/erb.rb, line 17
+def self.engine_initialized?
+  defined? ::ERB
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ initialize_engine() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/erb.rb, line 21
+def initialize_engine
+  require_template_library 'erb'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled(locals) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/erb.rb, line 56
+def precompiled(locals)
+  source, offset = super
+  [source, offset + 1]
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled_postamble(locals) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/erb.rb, line 44
+def precompiled_postamble(locals)
+            #{super}        ensure          #{@outvar} = __original_outvar        end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled_preamble(locals) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/erb.rb, line 36
+def precompiled_preamble(locals)
+          begin          __original_outvar = #{@outvar} if defined?(#{@outvar})          #{super}
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled_template(locals) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/erb.rb, line 31
+def precompiled_template(locals)
+  source = @engine.src
+  source
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/erb.rb, line 25
+def prepare
+  @outvar = options[:outvar] || self.class.default_output_variable
+  options[:trim] = '<>' if options[:trim].nil? || options[:trim] == true
+  @engine = ::ERB.new(data, options[:safe], options[:trim], @outvar)
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/ErubisTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/ErubisTemplate.html new file mode 100644 index 00000000..9a3e768d --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/ErubisTemplate.html @@ -0,0 +1,434 @@ + + + + + + + Class: Tilt::ErubisTemplate + + + + + + + + + + + + + +
+

Tilt::ErubisTemplate

+ +
+ +

Erubis template implementation. See: www.kuwata-lab.com/erubis/

+ +

ErubisTemplate supports the following +additional options, which are not passed down to the Erubis engine:

+ +
:engine_class   allows you to specify a custom engine class to use
+                instead of the default (which is ::Erubis::Eruby).
+
+:escape_html    when true, ::Erubis::EscapedEruby will be used as
+                the engine class instead of the default. All content
+                within <%= %> blocks will be automatically html escaped.
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/erb.rb, line 76
+def self.engine_initialized?
+  defined? ::Erubis
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ initialize_engine() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/erb.rb, line 80
+def initialize_engine
+  require_template_library 'erubis'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled(locals) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/erb.rb, line 103
+def precompiled(locals)
+  source, offset = super
+  [source, offset - 1]
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled_postamble(locals) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/erb.rb, line 96
+def precompiled_postamble(locals)
+  [@outvar, super].join("\n")
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled_preamble(locals) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/erb.rb, line 92
+def precompiled_preamble(locals)
+  [super, "#{@outvar} = _buf = ''"].join("\n")
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/erb.rb, line 84
+def prepare
+  @outvar = options.delete(:outvar) || self.class.default_output_variable
+  @options.merge!(:preamble => false, :postamble => false, :bufvar => @outvar)
+  engine_class = options.delete(:engine_class)
+  engine_class = ::Erubis::EscapedEruby if options.delete(:escape_html)
+  @engine = (engine_class || ::Erubis::Eruby).new(data, options)
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/HamlTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/HamlTemplate.html new file mode 100644 index 00000000..90b98076 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/HamlTemplate.html @@ -0,0 +1,466 @@ + + + + + + + Class: Tilt::HamlTemplate + + + + + + + + + + + + + +
+

Tilt::HamlTemplate

+ +
+ +

Haml template implementation. See: haml.hamptoncatlin.com/

+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/haml.rb, line 9
+def self.engine_initialized?
+  defined? ::Haml::Engine
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/haml.rb, line 22
+def evaluate(scope, locals, &block)
+  if @engine.respond_to?(:precompiled_method_return_value, true)
+    super
+  else
+    @engine.render(scope, locals, &block)
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ initialize_engine() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/haml.rb, line 13
+def initialize_engine
+  require_template_library 'haml'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled_postamble(locals) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/haml.rb, line 52
+def precompiled_postamble(locals)
+  @engine.instance_eval do
+                #{precompiled_method_return_value}          ensure            @haml_buffer = @haml_buffer.upper          end
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled_preamble(locals) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/haml.rb, line 37
+def precompiled_preamble(locals)
+  local_assigns = super
+  @engine.instance_eval do
+              begin            extend Haml::Helpers            _hamlout = @haml_buffer = Haml::Buffer.new(@haml_buffer, #{options_for_buffer.inspect})            _erbout = _hamlout.buffer            __in_erb_template = true            _haml_locals = locals            #{local_assigns}
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled_template(locals) + click to toggle source +
+ + +
+ +

Precompiled Haml source. Taken from the precompiled_with_ambles method in +Haml::Precompiler: github.com/nex3/haml/blob/master/lib/haml/precompiler.rb#L111-126

+ + + +
+
+# File lib/tilt/haml.rb, line 33
+def precompiled_template(locals)
+  @engine.precompiled
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/haml.rb, line 17
+def prepare
+  options = @options.merge(:filename => eval_file, :line => line)
+  @engine = ::Haml::Engine.new(data, options)
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/KramdownTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/KramdownTemplate.html new file mode 100644 index 00000000..39d39ffd --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/KramdownTemplate.html @@ -0,0 +1,364 @@ + + + + + + + Class: Tilt::KramdownTemplate + + + + + + + + + + + + + +
+

Tilt::KramdownTemplate

+ +
+ +

Kramdown Markdown implementation. See: kramdown.rubyforge.org/

+ +
+ + + + +
+ + + + + + +
+

Constants

+
+ +
DUMB_QUOTES
+ +
+ + +
+
+ + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 171
+def self.engine_initialized?
+  defined? ::Kramdown
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 185
+def evaluate(scope, locals, &block)
+  @output ||= @engine.to_html
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ initialize_engine() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 175
+def initialize_engine
+  require_template_library 'kramdown'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 179
+def prepare
+  options[:smart_quotes] = DUMB_QUOTES unless options[:smartypants]
+  @engine = Kramdown::Document.new(data, options)
+  @output = nil
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/LessTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/LessTemplate.html new file mode 100644 index 00000000..af2f95fa --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/LessTemplate.html @@ -0,0 +1,356 @@ + + + + + + + Class: Tilt::LessTemplate + + + + + + + + + + + + + +
+

Tilt::LessTemplate

+ +
+ +

Lessscss template implementation. See: lesscss.org/

+ +

Less templates do not support object scopes, locals, or yield.

+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/css.rb, line 50
+def self.engine_initialized?
+  defined? ::Less
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/css.rb, line 67
+def evaluate(scope, locals, &block)
+  @output ||= @engine.to_css
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ initialize_engine() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/css.rb, line 54
+def initialize_engine
+  require_template_library 'less'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/css.rb, line 58
+def prepare
+  if ::Less.const_defined? :Engine
+    @engine = ::Less::Engine.new(data)
+  else
+    parser  = ::Less::Parser.new(:filename => eval_file, :line => line)
+    @engine = parser.parse(data)
+  end
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/LiquidTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/LiquidTemplate.html new file mode 100644 index 00000000..9c2996df --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/LiquidTemplate.html @@ -0,0 +1,368 @@ + + + + + + + Class: Tilt::LiquidTemplate + + + + + + + + + + + + + +
+

Tilt::LiquidTemplate

+ +
+ +

Liquid template implementation. See: liquid.rubyforge.org/

+ +

Liquid is designed to be a safe template system and threfore does +not provide direct access to execuatable scopes. In order to support a +scope, the scope must be able to represent itself as a +hash by responding to to_h. If the scope does not respond to to_h +it will be ignored.

+ +

LiquidTemplate does not support yield +blocks.

+ +

It’s suggested that your program require ‘liquid’ at load time when using +this template engine.

+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/liquid.rb, line 18
+def self.engine_initialized?
+  defined? ::Liquid::Template
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/liquid.rb, line 30
+def evaluate(scope, locals, &block)
+  locals = locals.inject({}){ |h,(k,v)| h[k.to_s] = v ; h }
+  if scope.respond_to?(:to_h)
+    scope  = scope.to_h.inject({}){ |h,(k,v)| h[k.to_s] = v ; h }
+    locals = scope.merge(locals)
+  end
+  locals['yield'] = block.nil? ? '' : yield
+  locals['content'] = locals['yield']
+  @engine.render(locals)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ initialize_engine() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/liquid.rb, line 22
+def initialize_engine
+  require_template_library 'liquid'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/liquid.rb, line 26
+def prepare
+  @engine = ::Liquid::Template.parse(data)
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/MarkabyTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/MarkabyTemplate.html new file mode 100644 index 00000000..df7b6322 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/MarkabyTemplate.html @@ -0,0 +1,441 @@ + + + + + + + Class: Tilt::MarkabyTemplate + + + + + + + + + + + + + +
+

Tilt::MarkabyTemplate

+ + + + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ builder_class() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markaby.rb, line 7
+def self.builder_class
+  @builder_class ||= Class.new(Markaby::Builder) do
+    def __capture_markaby_tilt__(&block)
+      __run_markaby_tilt__ do
+        text capture(&block)
+      end
+    end
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markaby.rb, line 17
+def self.engine_initialized?
+  defined? ::Markaby
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ __capture_markaby_tilt__(&block) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markaby.rb, line 9
+def __capture_markaby_tilt__(&block)
+  __run_markaby_tilt__ do
+    text capture(&block)
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markaby.rb, line 28
+def evaluate(scope, locals, &block)
+  builder = self.class.builder_class.new({}, scope)
+  builder.locals = locals
+
+  if data.kind_of? Proc
+    (class << builder; self end).send(:define_method, :__run_markaby_tilt__, &data)
+  else
+    builder.instance_eval           def __run_markaby_tilt__            #{data}          end, __FILE__, __LINE__
+  end
+
+  if block
+    builder.__capture_markaby_tilt__(&block)
+  else
+    builder.__run_markaby_tilt__
+  end
+
+  builder.to_s
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ initialize_engine() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markaby.rb, line 21
+def initialize_engine
+  require_template_library 'markaby'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markaby.rb, line 25
+def prepare
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/MarukuTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/MarukuTemplate.html new file mode 100644 index 00000000..93bb05d5 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/MarukuTemplate.html @@ -0,0 +1,350 @@ + + + + + + + Class: Tilt::MarukuTemplate + + + + + + + + + + + + + +
+

Tilt::MarukuTemplate

+ +
+ +

Maruku markdown implementation. See: maruku.rubyforge.org/

+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 148
+def self.engine_initialized?
+  defined? ::Maruku
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 161
+def evaluate(scope, locals, &block)
+  @output ||= @engine.to_html
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ initialize_engine() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 152
+def initialize_engine
+  require_template_library 'maruku'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 156
+def prepare
+  @engine = Maruku.new(data, options)
+  @output = nil
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/NokogiriTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/NokogiriTemplate.html new file mode 100644 index 00000000..c51243f5 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/NokogiriTemplate.html @@ -0,0 +1,459 @@ + + + + + + + Class: Tilt::NokogiriTemplate + + + + + + + + + + + + + +
+

Tilt::NokogiriTemplate

+ +
+ +

Nokogiri template implementation. See: nokogiri.org/

+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/nokogiri.rb, line 9
+def self.engine_initialized?
+  defined? ::Nokogiri
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/nokogiri.rb, line 19
+def evaluate(scope, locals, &block)
+  block &&= proc { yield.gsub(/^<\?xml version=\"1\.0\"\?>\n?/, "") }
+
+  if data.respond_to?(:to_str)
+    super(scope, locals, &block)
+  else
+    ::Nokogiri::XML::Builder.new.tap(&data).to_xml
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ initialize_engine() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/nokogiri.rb, line 13
+def initialize_engine
+  require_template_library 'nokogiri'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled_postamble(locals) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/nokogiri.rb, line 34
+def precompiled_postamble(locals)
+  "xml.to_xml"
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled_preamble(locals) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/nokogiri.rb, line 29
+def precompiled_preamble(locals)
+  return super if locals.include? :xml
+  "xml = ::Nokogiri::XML::Builder.new { |xml| }\n#{super}"
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled_template(locals) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/nokogiri.rb, line 38
+def precompiled_template(locals)
+  data.to_str
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/nokogiri.rb, line 17
+def prepare; end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RDiscountTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RDiscountTemplate.html new file mode 100644 index 00000000..19a2eb61 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RDiscountTemplate.html @@ -0,0 +1,407 @@ + + + + + + + Class: Tilt::RDiscountTemplate + + + + + + + + + + + + + +
+

Tilt::RDiscountTemplate

+ +
+ +

Discount Markdown implementation. See: github.com/rtomayko/rdiscount

+ +

RDiscount is a simple text filter. It does not support scope or +locals. The :smart and :filter_html options may +be set true to enable those flags on the underlying RDiscount object.

+ +
+ + + + +
+ + + + + + +
+

Constants

+
+ +
ALIAS
+ +
+ + +
FLAGS
+ +
+ + +
+
+ + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 24
+def self.engine_initialized?
+  defined? ::RDiscount
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 37
+def evaluate(scope, locals, &block)
+  @output ||= @engine.to_html
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ flags() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 20
+def flags
+  FLAGS.select { |flag| options[flag] }.map { |flag| ALIAS[flag] || flag }
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ initialize_engine() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 28
+def initialize_engine
+  require_template_library 'rdiscount'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 32
+def prepare
+  @engine = RDiscount.new(data, *flags)
+  @output = nil
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RDocTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RDocTemplate.html new file mode 100644 index 00000000..575c9939 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RDocTemplate.html @@ -0,0 +1,355 @@ + + + + + + + Class: Tilt::RDocTemplate + + + + + + + + + + + + + +
+

Tilt::RDocTemplate

+ +
+ +

RDoc template. See: rdoc.rubyforge.org/

+ +

It’s suggested that your program require ‘rdoc/markup’ and +‘rdoc/markup/to_html’ at load time when using this template engine.

+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/rdoc.rb, line 13
+def self.engine_initialized?
+  defined? ::RDoc::Markup
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/rdoc.rb, line 28
+def evaluate(scope, locals, &block)
+  @output ||= @engine.to_s
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ initialize_engine() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/rdoc.rb, line 17
+def initialize_engine
+  require_template_library 'rdoc/markup'
+  require_template_library 'rdoc/markup/to_html'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/rdoc.rb, line 22
+def prepare
+  markup = RDoc::Markup::ToHtml.new
+  @engine = markup.convert(data)
+  @output = nil
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RadiusTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RadiusTemplate.html new file mode 100644 index 00000000..3a0dcc43 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RadiusTemplate.html @@ -0,0 +1,480 @@ + + + + + + + Class: Tilt::RadiusTemplate + + + + + + + + + + + + + +
+

Tilt::RadiusTemplate

+ + + + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ context_class() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/radius.rb, line 11
+def self.context_class
+  @context_class ||= Class.new(Radius::Context) do
+    attr_accessor :tilt_scope
+
+    def tag_missing(name, attributes)
+      tilt_scope.__send__(name)
+    end
+
+    def dup
+      i = super
+      i.tilt_scope = tilt_scope
+      i
+    end
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/radius.rb, line 7
+def self.engine_initialized?
+  defined? ::Radius
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ dup() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/radius.rb, line 19
+def dup
+  i = super
+  i.tilt_scope = tilt_scope
+  i
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/radius.rb, line 34
+def evaluate(scope, locals, &block)
+  context = self.class.context_class.new
+  context.tilt_scope = scope
+  context.define_tag("yield") do
+    block.call
+  end
+  locals.each do |tag, value|
+    context.define_tag(tag) do
+      value
+    end
+  end
+
+  options = {:tag_prefix => 'r'}.merge(@options)
+  parser = Radius::Parser.new(context, options)
+  parser.parse(data)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ initialize_engine() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/radius.rb, line 27
+def initialize_engine
+  require_template_library 'radius'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/radius.rb, line 31
+def prepare
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ tag_missing(name, attributes) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/radius.rb, line 15
+def tag_missing(name, attributes)
+  tilt_scope.__send__(name)
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RedClothTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RedClothTemplate.html new file mode 100644 index 00000000..b1016577 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RedClothTemplate.html @@ -0,0 +1,350 @@ + + + + + + + Class: Tilt::RedClothTemplate + + + + + + + + + + + + + +
+

Tilt::RedClothTemplate

+ +
+ +

RedCloth implementation. See: redcloth.org/

+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/textile.rb, line 7
+def self.engine_initialized?
+  defined? ::RedCloth
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/textile.rb, line 20
+def evaluate(scope, locals, &block)
+  @output ||= @engine.to_html
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ initialize_engine() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/textile.rb, line 11
+def initialize_engine
+  require_template_library 'redcloth'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/textile.rb, line 15
+def prepare
+  @engine = RedCloth.new(data)
+  @output = nil
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RedcarpetTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RedcarpetTemplate.html new file mode 100644 index 00000000..2074457e --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RedcarpetTemplate.html @@ -0,0 +1,364 @@ + + + + + + + Class: Tilt::RedcarpetTemplate + + + + + + + + + + + + + +
+

Tilt::RedcarpetTemplate

+ +
+ +

Upskirt Markdown implementation. See: github.com/tanoku/redcarpet

+ +

Supports both Redcarpet 1.x and 2.x

+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 47
+def self.engine_initialized?
+  defined? ::Redcarpet
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 60
+def evaluate(scope, locals, &block)
+  @engine.evaluate(scope, locals, &block)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ initialize_engine() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 51
+def initialize_engine
+  require_template_library 'redcarpet'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 55
+def prepare
+  klass = [Redcarpet1, Redcarpet2].detect { |e| e.engine_initialized? }
+  @engine = klass.new(file, line, options) { data }
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RedcarpetTemplate/Redcarpet1.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RedcarpetTemplate/Redcarpet1.html new file mode 100644 index 00000000..44b1fe3a --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RedcarpetTemplate/Redcarpet1.html @@ -0,0 +1,279 @@ + + + + + + + Class: Tilt::RedcarpetTemplate::Redcarpet1 + + + + + + + + + + + + + +
+

Tilt::RedcarpetTemplate::Redcarpet1

+ +
+ +

Compatibility mode for Redcarpet 1.x

+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 68
+def self.engine_initialized?
+  defined? ::RedcarpetCompat
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 72
+def prepare
+  @engine = RedcarpetCompat.new(data, *flags)
+  @output = nil
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RedcarpetTemplate/Redcarpet2.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RedcarpetTemplate/Redcarpet2.html new file mode 100644 index 00000000..592328ff --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/RedcarpetTemplate/Redcarpet2.html @@ -0,0 +1,382 @@ + + + + + + + Class: Tilt::RedcarpetTemplate::Redcarpet2 + + + + + + + + + + + +
+
+
+

+ Home + Classes + Methods +

+
+
+ +
+
+

In Files

+
+ +
+
+ + +
+ +
+ + +
+

Parent

+ + + +
+ + + + + + + + +
+

Methods

+ +
+ + + + +
+

Included Modules

+ +
+ +
+ + +
+ +
+

Tilt::RedcarpetTemplate::Redcarpet2

+ +
+ +

Future proof mode for Redcarpet 2.x (not yet released)

+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 82
+def self.engine_initialized?
+  defined? ::Redcarpet::Render
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 116
+def evaluate(scope, locals, &block)
+  @output ||= @engine.render(data)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ generate_renderer() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 86
+def generate_renderer
+  renderer = options.delete(:renderer) || Redcarpet::Render::HTML
+  return renderer unless options.delete(:smartypants)
+  return renderer if renderer <= Redcarpet::Render::SmartyPants
+
+  if renderer == Redcarpet::Render::XHTML
+    Redcarpet::Render::SmartyHTML.new(:xhtml => true)
+  elsif renderer == Redcarpet::Render::HTML
+    Redcarpet::Render::SmartyHTML
+  elsif renderer.is_a? Class
+    Class.new(renderer) { include Redcarpet::Render::SmartyPants }
+  else
+    renderer.extend Redcarpet::Render::SmartyPants
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/markdown.rb, line 102
+def prepare
+  # try to support the same aliases
+  RDiscountTemplate::ALIAS.each do |opt, aka|
+    next if options.key? opt or not options.key? aka
+    options[opt] = options.delete(aka)
+  end
+
+  # only raise an exception if someone is trying to enable :escape_html
+  options.delete(:escape_html) unless options[:escape_html]
+
+  @engine = Redcarpet::Markdown.new(generate_renderer, options)
+  @output = nil
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/SassTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/SassTemplate.html new file mode 100644 index 00000000..6dcdb7c7 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/SassTemplate.html @@ -0,0 +1,351 @@ + + + + + + + Class: Tilt::SassTemplate + + + + + + + + + + + + + +
+

Tilt::SassTemplate

+ +
+ +

Sass template implementation. See: haml.hamptoncatlin.com/

+ +

Sass templates do not support object scopes, locals, or yield.

+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/css.rb, line 11
+def self.engine_initialized?
+  defined? ::Sass::Engine
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/css.rb, line 23
+def evaluate(scope, locals, &block)
+  @output ||= @engine.render
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ initialize_engine() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/css.rb, line 15
+def initialize_engine
+  require_template_library 'sass'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/css.rb, line 19
+def prepare
+  @engine = ::Sass::Engine.new(data, sass_options)
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/ScssTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/ScssTemplate.html new file mode 100644 index 00000000..d717f5e0 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/ScssTemplate.html @@ -0,0 +1,188 @@ + + + + + + + Class: Tilt::ScssTemplate + + + + + + + + + + + + + +
+

Tilt::ScssTemplate

+ +
+ +

Sass’s new .scss type template implementation.

+ +
+ + + + +
+ + + + + + + + + + +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/StringTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/StringTemplate.html new file mode 100644 index 00000000..d7941163 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/StringTemplate.html @@ -0,0 +1,310 @@ + + + + + + + Class: Tilt::StringTemplate + + + + + + + + + + + + + +
+

Tilt::StringTemplate

+ +
+ +

The template source is evaluated as a Ruby string. The #{} interpolation +syntax can be used to generated dynamic output.

+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ + + +
+ precompiled(locals) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/string.rb, line 16
+def precompiled(locals)
+  source, offset = super
+  [source, offset + 1]
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled_template(locals) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/string.rb, line 12
+def precompiled_template(locals)
+  @code
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/string.rb, line 7
+def prepare
+  hash = "TILT#{data.hash.abs}"
+  @code = "<<#{hash}.chomp\n#{data}\n#{hash}"
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/Template.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/Template.html new file mode 100644 index 00000000..739c9834 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/Template.html @@ -0,0 +1,1006 @@ + + + + + + + Class: Tilt::Template + + + + + + + + + + + + + +
+

Tilt::Template

+ +
+ +

Base class for template implementations. Subclasses must implement the prepare method and one of the evaluate or precompiled_template +methods.

+ +
+ + + + +
+ + + + + + + + +
+

Attributes

+ + +
+ + + + +
+ default_mime_type[RW] +
+ +
+ + + +
+
+ +
+ + + + +
+ engine_initialized[RW] +
+ +
+ + + +
+
+ +
+ + + + +
+ engine_initialized?[RW] +
+ +
+ + + +
+
+ +
+ + +
+ data[R] +
+ +
+ +

Template source; loaded from a file or given +directly.

+ +
+
+ +
+ + +
+ file[R] +
+ +
+ +

The name of the file where the template data was loaded from.

+ +
+
+ +
+ + +
+ line[R] +
+ +
+ +

The line number in file where +template data was loaded from.

+ +
+
+ +
+ + +
+ options[R] +
+ +
+ +

A Hash of template engine specific options. This is passed directly to the +underlying engine and is not used by the generic template interface.

+ +
+
+ +
+ + + + +
+

Public Class Methods

+ + +
+ + + +
+ new(file=nil, line=1, options={}, &block) + click to toggle source +
+ + +
+ +

Create a new template with the file, line, and options specified. By +default, template data is read from the file. When a block is given, it +should read template data and return as a String. When file is nil, a block +is required.

+ +

All arguments are optional.

+ + + +
+
+# File lib/tilt/template.rb, line 38
+def initialize(file=nil, line=1, options={}, &block)
+  @file, @line, @options = nil, 1, {}
+
+  [options, line, file].compact.each do |arg|
+    case
+    when arg.respond_to?(:to_str)  ; @file = arg.to_str
+    when arg.respond_to?(:to_int)  ; @line = arg.to_int
+    when arg.respond_to?(:to_hash) ; @options = arg.to_hash.dup
+    else raise TypeError
+    end
+  end
+
+  raise ArgumentError, "file or block required" if (@file || block).nil?
+
+  # call the initialize_engine method if this is the very first time
+  # an instance of this class has been created.
+  if !self.class.engine_initialized?
+    initialize_engine
+    self.class.engine_initialized = true
+  end
+
+  # used to hold compiled template methods
+  @compiled_method = {}
+
+  # used on 1.9 to set the encoding if it is not set elsewhere (like a magic comment)
+  # currently only used if template compiles to ruby
+  @default_encoding = @options.delete :default_encoding
+
+  # load template data and prepare (uses binread to avoid encoding issues)
+  @reader = block || lambda { |t| File.respond_to?(:binread) ? File.binread(@file) : File.read(@file) }
+  @data = @reader.call(self)
+  prepare
+end
+
+ +
+ + + + +
+ + +
+ +
+

Protected Class Methods

+ + +
+ + + +
+ cached_evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ +

Redefine itself to use method compilation the next time:

+ + + +
+
+# File lib/tilt/template.rb, line 138
+def self.cached_evaluate(scope, locals, &block)
+  method = compiled_method(locals.keys)
+  method.bind(scope).call(locals, &block)
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ basename(suffix='') + click to toggle source +
+ + +
+ +

The basename of the template file.

+ + + +
+
+# File lib/tilt/template.rb, line 80
+def basename(suffix='')
+  File.basename(file, suffix) if file
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ eval_file() + click to toggle source +
+ + +
+ +

The filename used in backtraces to describe the template.

+ + + +
+
+# File lib/tilt/template.rb, line 90
+def eval_file
+  file || '(__TEMPLATE__)'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ name() + click to toggle source +
+ + +
+ +

The template file’s basename with all extensions chomped off.

+ + + +
+
+# File lib/tilt/template.rb, line 85
+def name
+  basename.split('.', 2).first if basename
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ render(scope=Object.new, locals={}, &block) + click to toggle source +
+ + +
+ +

Render the template in the given scope with the locals specified. If a +block is given, it is typically available within the template via +yield.

+ + + +
+
+# File lib/tilt/template.rb, line 75
+def render(scope=Object.new, locals={}, &block)
+  evaluate scope, locals || {}, &block
+end
+
+ +
+ + + + +
+ + +
+ +
+

Protected Instance Methods

+ + +
+ + + +
+ cached_evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ +

Process the template and return the result. The first time this method is +called, the template source is evaluated with instance_eval. On the +sequential method calls it will compile the template to an unbound method +which will lead to better performance. In any case, template executation is +guaranteed to be performed in the scope object with the locals specified +and with support for yielding to the block.

+ + + +
+
+# File lib/tilt/template.rb, line 136
+def cached_evaluate(scope, locals, &block)
+  # Redefine itself to use method compilation the next time:
+  def self.cached_evaluate(scope, locals, &block)
+    method = compiled_method(locals.keys)
+    method.bind(scope).call(locals, &block)
+  end
+
+  # Use instance_eval the first time:
+  evaluate_source(scope, locals, &block)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ compiled_method(locals_keys) + click to toggle source +
+ + +
+ +

The compiled method for the locals keys provided.

+ + + +
+
+# File lib/tilt/template.rb, line 200
+def compiled_method(locals_keys)
+  @compiled_method[locals_keys] ||=
+    compile_template_method(locals_keys)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/template.rb, line 126
+def evaluate(scope, locals, &block)
+  cached_evaluate(scope, locals, &block)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ initialize_engine() + click to toggle source +
+ + +
+ +

Called once and only once for each template subclass the first time the +template class is initialized. This should be used to require the +underlying template library and perform any initial setup.

+ + + +
+
+# File lib/tilt/template.rb, line 98
+def initialize_engine
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled(locals) + click to toggle source +
+ + +
+ +

Generates all template source by combining the preamble, template, and +postamble and returns a two-tuple of the form: [source, offset], where +source is the string containing (Ruby) source code for the template and +offset is the integer line offset where line reporting should begin.

+ +

Template subclasses may override this method +when they need complete control over source generation or want to adjust +the default line offset. In most cases, overriding the precompiled_template +method is easier and more appropriate.

+ + + +
+
+# File lib/tilt/template.rb, line 156
+def precompiled(locals)
+  preamble = precompiled_preamble(locals)
+  template = precompiled_template(locals)
+  magic_comment = extract_magic_comment(template)
+  if magic_comment
+    # Magic comment e.g. "# coding: utf-8" has to be in the first line.
+    # So we copy the magic comment to the first line.
+    preamble = magic_comment + "\n" + preamble
+  end
+  parts = [
+    preamble,
+    template,
+    precompiled_postamble(locals)
+  ]
+  [parts.join("\n"), preamble.count("\n") + 1]
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled_postamble(locals) + click to toggle source +
+ + +
+ +

Generates postamble code for the precompiled template source. The string +returned from this method is appended to the precompiled template source.

+ + + +
+
+# File lib/tilt/template.rb, line 195
+def precompiled_postamble(locals)
+  ''
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled_preamble(locals) + click to toggle source +
+ + +
+ +

Generates preamble code for initializing template state, and performing +locals assignment. The default implementation performs locals assignment +only. Lines included in the preamble are subtracted from the source line +offset, so adding code to the preamble does not effect line reporting in +Kernel::caller and backtraces.

+ + + +
+
+# File lib/tilt/template.rb, line 188
+def precompiled_preamble(locals)
+  locals.map { |k,v| "#{k} = locals[#{k.inspect}]" }.join("\n")
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled_template(locals) + click to toggle source +
+ + +
+ +

A string containing the (Ruby) source code for the template. The default Template#evaluate implementation +requires either this method or the precompiled method be +overridden. When defined, the base Template +guarantees correct file/line handling, locals support, custom scopes, and +support for template compilation when the scope object allows it.

+ + + +
+
+# File lib/tilt/template.rb, line 179
+def precompiled_template(locals)
+  raise NotImplementedError
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ +

Do whatever preparation is necessary to setup the underlying template +engine. Called immediately after template data is loaded. Instance +variables set in this method are available when evaluate is called.

+ +

Subclasses must provide an implementation of this method.

+ + + +
+
+# File lib/tilt/template.rb, line 116
+def prepare
+  if respond_to?(:compile!)
+    # backward compat with tilt < 0.6; just in case
+    warn 'Tilt::Template#compile! is deprecated; implement #prepare instead.'
+    compile!
+  else
+    raise NotImplementedError
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ require_template_library(name) + click to toggle source +
+ + +
+ +

Like Kernel::require but issues a warning urging a manual require when +running under a threaded environment.

+ + + +
+
+# File lib/tilt/template.rb, line 103
+def require_template_library(name)
+  if Thread.list.size > 1
+    warn "WARN: tilt autoloading '#{name}' in a non thread-safe way; " +
+         "explicit require '#{name}' suggested."
+  end
+  require name
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/WikiClothTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/WikiClothTemplate.html new file mode 100644 index 00000000..6506f911 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/WikiClothTemplate.html @@ -0,0 +1,351 @@ + + + + + + + Class: Tilt::WikiClothTemplate + + + + + + + + + + + + + +
+

Tilt::WikiClothTemplate

+ +
+ +

WikiCloth implementation. See: redcloth.org/

+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/wiki.rb, line 32
+def self.engine_initialized?
+  defined? ::WikiCloth::Parser
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/wiki.rb, line 46
+def evaluate(scope, locals, &block)
+  @output ||= @engine.to_html
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ initialize_engine() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/wiki.rb, line 36
+def initialize_engine
+  require_template_library 'wikicloth'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/wiki.rb, line 40
+def prepare
+  @parser = options.delete(:parser) || WikiCloth::Parser
+  @engine = @parser.new options.merge(:data => data)
+  @output = nil
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/YajlTemplate.html b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/YajlTemplate.html new file mode 100644 index 00000000..2f64ba76 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/Tilt/YajlTemplate.html @@ -0,0 +1,536 @@ + + + + + + + Class: Tilt::YajlTemplate + + + + + + + + + + + + + +
+

Tilt::YajlTemplate

+ +
+ +

Yajl Template implementation

+ +

Yajl is a fast JSON parsing and encoding library for Ruby See github.com/brianmario/yajl-ruby

+ +

The template source is evaluated as a Ruby string, and the result is +converted to_json.

+ +

Example

+ +
# This is a template example.
+# The template can contain any Ruby statement.
+tpl <<-EOS
+  @counter = 0
+
+  # The json variable represents the buffer
+  # and holds the data to be serialized into json.
+  # It defaults to an empty hash, but you can override it at any time.
+  json = {
+    :"user#{@counter += 1}" => { :name => "Joshua Peek", :id => @counter },
+    :"user#{@counter += 1}" => { :name => "Ryan Tomayko", :id => @counter },
+    :"user#{@counter += 1}" => { :name => "Simone Carletti", :id => @counter },
+  }
+
+  # Since the json variable is a Hash,
+  # you can use conditional statements or any other Ruby statement
+  # to populate it.
+  json[:"user#{@counter += 1}"] = { :name => "Unknown" } if 1 == 2
+
+  # The last line doesn't affect the returned value.
+  nil
+EOS
+
+template = Tilt::YajlTemplate.new { tpl }
+template.render(self)
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Class Methods

+ + +
+ + + +
+ engine_initialized?() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/yajl.rb, line 45
+def self.engine_initialized?
+  defined? ::Yajl
+end
+
+ +
+ + + + +
+ + +
+ +
+

Public Instance Methods

+ + +
+ + + +
+ decorate(json) + click to toggle source +
+ + +
+ +

Decorates the json input according to given options.

+ +

json - The json String to decorate. options - The option Hash to +customize the behavior.

+ +

Returns the decorated String.

+ + + +
+
+# File lib/tilt/yajl.rb, line 80
+def decorate(json)
+  callback, variable = options[:callback], options[:variable]
+  if callback && variable
+    "var #{variable} = #{json}; #{callback}(#{variable});"
+  elsif variable
+    "var #{variable} = #{json};"
+  elsif callback
+    "#{callback}(#{json});"
+  else
+    json
+  end
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ evaluate(scope, locals, &block) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/yajl.rb, line 56
+def evaluate(scope, locals, &block)
+  decorate super(scope, locals, &block)
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ initialize_engine() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/yajl.rb, line 49
+def initialize_engine
+  require_template_library 'yajl'
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled_postamble(locals) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/yajl.rb, line 65
+def precompiled_postamble(locals)
+  "Yajl::Encoder.new.encode(json)"
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled_preamble(locals) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/yajl.rb, line 60
+def precompiled_preamble(locals)
+  return super if locals.include? :json
+  "json = {}\n#{super}"
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ precompiled_template(locals) + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/yajl.rb, line 69
+def precompiled_template(locals)
+  data.to_str
+end
+
+ +
+ + + + +
+ + +
+ + + +
+ prepare() + click to toggle source +
+ + +
+ + + + + +
+
+# File lib/tilt/yajl.rb, line 53
+def prepare
+end
+
+ +
+ + + + +
+ + +
+ +
+ + +
+ +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/created.rid b/src/main/resources/doc/tilt-1.3.3/rdoc/created.rid new file mode 100644 index 00000000..e864cbe5 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/created.rid @@ -0,0 +1,18 @@ +Tue, 22 Jan 2013 17:23:12 -0700 +lib/tilt/rdoc.rb Tue, 22 Jan 2013 17:22:25 -0700 +lib/tilt/textile.rb Tue, 22 Jan 2013 17:22:25 -0700 +lib/tilt/haml.rb Tue, 22 Jan 2013 17:22:25 -0700 +lib/tilt/builder.rb Tue, 22 Jan 2013 17:22:25 -0700 +lib/tilt/markdown.rb Tue, 22 Jan 2013 17:22:25 -0700 +lib/tilt/string.rb Tue, 22 Jan 2013 17:22:25 -0700 +lib/tilt/wiki.rb Tue, 22 Jan 2013 17:22:25 -0700 +lib/tilt/liquid.rb Tue, 22 Jan 2013 17:22:25 -0700 +lib/tilt/template.rb Tue, 22 Jan 2013 17:22:25 -0700 +lib/tilt/yajl.rb Tue, 22 Jan 2013 17:22:25 -0700 +lib/tilt/nokogiri.rb Tue, 22 Jan 2013 17:22:25 -0700 +lib/tilt/coffee.rb Tue, 22 Jan 2013 17:22:25 -0700 +lib/tilt/erb.rb Tue, 22 Jan 2013 17:22:25 -0700 +lib/tilt/markaby.rb Tue, 22 Jan 2013 17:22:25 -0700 +lib/tilt/radius.rb Tue, 22 Jan 2013 17:22:25 -0700 +lib/tilt/css.rb Tue, 22 Jan 2013 17:22:25 -0700 +lib/tilt.rb Tue, 22 Jan 2013 17:22:25 -0700 diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/images/brick.png b/src/main/resources/doc/tilt-1.3.3/rdoc/images/brick.png new file mode 100644 index 0000000000000000000000000000000000000000..7851cf34c946e5667221e3478668503eb1cd733f GIT binary patch literal 452 zcmV;#0XzPQP)Pdwe5?6tW?r-ok|b$oDQj8FV%kZPq;(MWOV8?8;<)(iP}>hNMU> z7fbz%jjlr7h8uuoQ~J6}n}@Y@PdTk=)PxO{%7zmL?dchpZX*~n;I{!C>*(8cU;q(~ zAS%Po_@naEU!xidrBXD?;hN|x^%W|Ij)0y*r5vi|?W&Fub(NqJ@z0o=O&SR3v>A``^efOSo-hEdApp;^Jd;9y!%1UfzX6Bh- z%-mbG|0Na{7Ruai_Y+DEb1s+b!*9k%Q!whMxjtZKA*?o;i1g&jy0@( zaU=-@d-h+o%gal6JRXEXA&L3`d2 z%jIxzZ~*p9O-;EJp_Ds0If38rM<5W8ic~K>FOK&2_p!CLg^i63OioVb6k$)zWHLx3 z5;!|M!}<9+#QSi1dRlbEcxPt^;cysUuU8@%3}RwpLRIGG<|IKnoyP6$Eh3SKw7a*r zSDXP=IYc&YZf;7@?fCe($^l9ORaJ3wbAx0uiC8QqRr$2t-Cfy8%XCI3B%pxJW>XdM zw~zPt_s}#A@pxQ5Ly)4szaMtH9lgE1SXx@b+S(fW`ub$fYPE8J7#bSNDzme*Ub07{ zQKV8SjEs!%0@v5ql8ggm!@$6Rbi^E8vBqpRM-}l+@5OSMrl+TWj*gC^qoV@>u{fQb zov5v?g~?>X@bEC&+uLPaQ&Ypn-y~^mZA}+f(&2EFH8eE%dU|@ENpN*_1-)L6_4Rc* zFuq@`IjX9vp1QiaK9ZojyZhnQURP99d=u;%37VRkpwsD4U0sd3x;hEQB&e^i|3QN0 z=H|Os1fRqaw!?#igLmS4HE!G3*ce(`TF} zlgUq0Q544c8(ae&UR$8ps&snq6^bPY3v3xAmMW74Di$h~GCH6E3TaYs2#6A<7K*gC z777H71_Wa;(dfp+g-drPCSWu)#PInZi72LJ;o?i~$-U=y&UbQ89Dul3%3P+Axkzc* zbH-y;QF=hR{qLItf%ci2_&e5wNo0gnVatG?ul6Zw=o$I9Ljfn*ic3`U?>IfEim3g{ zujU&$-hy6wn;w(xme|zJm;lWJxtTFfM)q0`kX!Vu0+d${$}LCddK1<^htTe-fUYL3 zB`SdNsZD>RgvLj1<^@h6_+cDRK2Brcr2~>%$*5S)hyV33PV^teac3%|4lz@8p4?)5 z?t5o^?q+%^%)Yygo~I^U4VR!bTnWuE35hcWrfCDR3q+sxJ79e7Fg`&)RCqLA^2^y^ z0laVfadW90_Fz8Brm|r47sB^u1VgI>kanj)Z4`zMSfHlm8>CwXa$JVM`$2RrmZB-3 zN10m-!;BvH*Br3V8t`DH7m`jf#2upVDXl{5ff18_pzCPK1Zu$$CKKvd8FGeFf)+K<|x33pc7P&S#3GZT4mEw;nr(Ze*F z3&*?-4U-lm*#tber5 z%S_ceqB`b3ko6r~BbvDwdohTvP(3a(pq{x#T$yQsu#OKwEe}KuH^Mh@nxg_(Nw136 zq#a^3xNBke)In+!?qk3%4wB69{pF`Tzg`07*qoM6N<$ Eg55P&8UO$Q literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/images/bullet_black.png b/src/main/resources/doc/tilt-1.3.3/rdoc/images/bullet_black.png new file mode 100644 index 0000000000000000000000000000000000000000..57619706d10d9736b1849a83f2c5694fbe09c53b GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$h^>lFz(Kw&{<9vg>5sw~gS5O!4 zr|{HuUFIBKiQyL}eBJ-L{`UVT|6_O~L{G%N{Wbre{kQtZ_0LvEhC#5QQ<|d}62BjvZR2H60wE-$h^mK6y(Kw&{<9vg>(S^W+6Zii9 z|Nhthr~iNb*Z!}6uiN$Dz5neG3a-`baBX8yz1H+_;eX)`ni0%X8XBDc-`=Ph(Uan2 zYsR{H!kvIN--9isvHznRsC#5QQ<|d}62BjvZR2H60wE-$h_H=O!(Kw&{<9vg>(S^W+6Zii9 z|Nhthr~iNb*Z!}6uiN$Dz5neG3a-`baBX8yz4q@v|B?28{s)#N@CGn3@%_y|zAV9T z66e<&B4?b6oF&azg|C(V&1ZbI_D}pL`}(^FT2yXwG1Ph~$Q@h8mJYOz!PC{xWt~$( F699+YQR)By literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/images/date.png b/src/main/resources/doc/tilt-1.3.3/rdoc/images/date.png new file mode 100644 index 0000000000000000000000000000000000000000..783c83357fdf90a1c7c024358e1d768b5c09c135 GIT binary patch literal 626 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 Dl)1NK literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/images/macFFBgHack.png b/src/main/resources/doc/tilt-1.3.3/rdoc/images/macFFBgHack.png new file mode 100644 index 0000000000000000000000000000000000000000..c6473b324ee1dae1faaacc0826639833f551116c GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIEX7WqAsj$Z!;#Vf4nJ za0`Jjl>Qs8<JF;+Fd5q0wCR k?u=~bH}2*0f`J3~k>FVdQ&MBb@0BAfpf&c&j literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/images/package.png b/src/main/resources/doc/tilt-1.3.3/rdoc/images/package.png new file mode 100644 index 0000000000000000000000000000000000000000..da3c2a2d74bab159ba0f65d7db601768258afcb2 GIT binary patch literal 853 zcmV-b1FHOqP)5TQ^(M5v$(QKVE?W+9X! z*o}&~6c?_FreF)9NJB7b5Nbn{G0n4+%uJhR9(V5R|NFTpb|HgjefT!tIhLx@DR+N) zV+fHiR5Yt19}k|KnCsND{tH-`IMJ)3AE?OtyZ4>Un|6(d%h#JK`i&a7^xW9>`yBy` zS4SOHeOpC7$?hH5-#7Rswiue_8Ju*2N@$58=a#2OTA3png`w3v->gWif7t%e$ z$NLVS!tFT#8WL|Wa&K~+{%4P2cRfwesYV1_!F=3OaRVHl(>=`%&{x*s30c}#CNE@&;ItrAv!f!)Oy$Q9t$uS=(sD$-J{T*^(8Eez1E-l3}} zPrfHZ1`qsIFe&gipuL8-IZbo2Yg{lFGKs?ZZWcOaOdk*3`5T;$?AjbG1#`B510Er^h2)2r3Y{!8_2Gj=$KzuN5 zaErtW8W_Y2iJJjY)5pmTVJoPJYpanPOEuYHclM^C1F>${hFRpdi8a<2H|Xudf78bm(zwJ9`K%6I?q*Ua~ fW9JvIbn5*B+_J)rUMBs>00000NkvXXu0mjfH&TkY literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/images/page_green.png b/src/main/resources/doc/tilt-1.3.3/rdoc/images/page_green.png new file mode 100644 index 0000000000000000000000000000000000000000..de8e003f9fb8752c09e7f3655d5d8664b5c62fc3 GIT binary patch literal 621 zcmV-z0+RiSP)QqUjAtB;_Vvt6}AS_5YgM`Uqu`yva+H8^=4U$e4gHb}u zAQ2N{V3A%pO|?Pv?tb6z=jC}SiRa$G^v3q?*6XcYz$p|cq{uLj@#~Fi`J(>5{@&&N zy%T^+;>8cXx%|o77anP?&W1?1A(>-T49z9pyeCl@7YI+Si zKti7=B~``}TImz(G{0PnlQA3P#MAd}sorMjkP!50B7$nAkU^%#nl{Q9lW0@}9fE-> zN(q7tRuiC_T1r|BBtVBTlQ2+70$Rf;eF`Z;lx46Cpu-rEgb)EBKq(b^W8l<^We(`D z43?0=01z<3G6+UUv6`CsWCk6^93!#+<;ws7007{zS3k2k9-zZKFO~(k`>s0y006+1 zgF_jyIhsL-`FMf~JL~C=cV75(CrJ|q;MVO961G=O zm9d)YpJg5g(4i_HKL75eSE}mq$Y}r}hyVdcV~p>6a}oXr80q`oj%+s700000NkvXX Hu0mjfPs|!l literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/images/page_white_text.png b/src/main/resources/doc/tilt-1.3.3/rdoc/images/page_white_text.png new file mode 100644 index 0000000000000000000000000000000000000000..813f712f726c935f9adf8d2f2dd0d7683791ef11 GIT binary patch literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-%6;pyTSA|c6o&@eC9QG)Hj&ExYL zO&oVL^)+cM^qd@ApywS>pwx0H@RDN}hq;7mU-SKczYQ-hnrr=;iDAQMZQ+*g=YOM= z!QlMQEn7FbaD->uKAYgo_j9)W&$$zS*W9}m(ey0q$&7l-XEWO0Y(9M=SnhLbwy;d>@~SY$Ku*0xPvIOQeV1x7u_z-2-X>_74(yfh7C znXL|3GZ+d2`3re2hs?MKC#5QQ<|d}62BjvZR2H60wE-$R?&;zfqH(@;q9b3Efq-lM(nr^( z=EYR73-9e)UYMWsXy%?aZsD68Yyv^2$~6QgEcljw%kx>O(f-gQ?@fOOx3A-0+Qw?O zRx~W)kn~Qe2d6f9nMG#g9Q04Mk==M~N!Dglvxk!fgVh#w@ZV$IY1+Xc`d{d2UcaP~ zfWp)_Ivqj}l2SPy^9ZWy6rG9Yx4v67_uA&&9|XA~5-#3)W3%em1peD8RWH^#O%XoM zxMPud%}GTj#~*+7JMxTd!`{^Q+>(D3*|@KV`*G2;{QnANOxu1$r2xIe;OXk;vd$@? F2>@zac~<}c literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/images/plugin.png b/src/main/resources/doc/tilt-1.3.3/rdoc/images/plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..6187b15aec001b7080b51a5f944f07591f26cc15 GIT binary patch literal 591 zcmV-V0eEcNHZMNv|IbJ-M`( zKwWL~opzjJe^WpCmV9E;(0&ut2;4va_(#>M8)>9$R5viQnf(Nkh~VM$y>J(jqb$cj z+nL1Nm|mV)Gm|9MnHf*7Ja4OEAQz__^LRKOLEwqpiGV^^A*T=#&inGm-62Xs;dnSp zKj&H9T*boh2i)W+(n27l!C)>fq|L%VB1i ziC4p;NwV_}ZjW7$LRW#(_bKF#hp=!IqNO26Z*w2+LEwx{PVnZ&Sn}T;mtzb$;qA*nT@@+ zV5uQ@iXDTPoTbV#FRr~z04|PPh`wXTNoCm9*tG&?e3+fYl>K6+&3|Cc$KOpL`ER+_ dcRl5U#9zn6ZO}GFk7R5;7c zlif>`Q5?tj7Yw@ZCMtTF^Q|ZedeJhM%QPCR*bs8V79p$QTo7e94yQNXRs-{0?hOn_-8n0AMO@u1Ts zNl8QzJs1#rz%RBt?ux>l+amAvh+J!{$lkaqv}+Erb-6j2xp>K4GLQnNB*W`hFg*?P z^AL@~(h~Z+wfcWEXHqV^Tq-#z$7Y#o0;yFxA!00F}F2dX# zjE$iOgT#G4*1TR6kB1Gnn@>$meCh2a>c5YuIvFn-R2W@>4@M*m@-|jiDV?b)bccgA zyPfsMM!rjy>+1O2)5Eg29Z_*2p&qGnmS!OH?vZ(4>QB01d>j%9n4QINxkyT(Dos?I zjaWF$*IQmh`SF-?xU%xMEfjq1=6qY*g&lgG_cXv$BGoIWyfO5 zp>pdV*O+y=&6@N2WWFo(%RtT`Q(H^6zn^a%epE~Kx^mEJ{c8`luC$nc*z9j|4Ms8aJK-la^5T)AZ%#@G{_P{NCN^P z(J0zvSn~SSm(Ur);-M~8^*;61*VRI`T1BN&LAhK;sZ>I-SVW;vfUfJv=ko^ugnc0x zhJodBxe>iyk3%w<%wC8holUJ4(iv>tL{`DQt zPOsyUbO_Cmc&*iHkqbm3ku`|GcC^OhF>jj9W*GkH;^g!iUVpib_h*=@udp4h(P+e*zL_~ZmJjh(y^BxULwq>9zXoYE8sq{#pN~U0C6!8vY)5N2 z9P*}mw}7X$O^qTtJef1ACWvJT9^wt-)Zh0r~j#0bT`f;-zv6 z^Tmw22!%rMcs!TaUX<-8s;X-B`+Xbo+_uWuFa z1yIPc?DTrQ7KvRhmt*TG|L=EYQ=LqFX;=Lp`4}jx6BE-@00000NkvXXu0mjf=s_29 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/images/wrench.png b/src/main/resources/doc/tilt-1.3.3/rdoc/images/wrench.png new file mode 100644 index 0000000000000000000000000000000000000000..5c8213fef5ab969f03189d4367e32e597e38bd7f GIT binary patch literal 610 zcmV-o0-gPdP)^jb z4`0v}DG1te)wmeb(>p90leRz?_mO+^JKy=v&2<29Od6?F%9%(c8los#f*@G`-%W&* z$)uBj2i@u-@SgX}gtyWPe6d*|w6h%R? zScK2#Yn%$sum0cy>90DmY*i{1XqpClEtktsRTZ)lCUe z<FogV^*tm>8*AlX za4oiR!&85LrobG57qUHUX#{>Vz(RHpB5|@>9O6N$jqB8>%($0wxE5R3)b>Y~xtCo$ zCgEk&A?_#IxHdN)9tqre^o{ho4{?hmPuf@^@I3-wncaRd%|~O3xbrKY=&TiwPYkJroM{;WUQTuMY8vpg}f4o)2%U3C;eEDoiEh?94d(rV57VIF#8VqzW$HrDC|#U`x@QDbgi zVl)t9GGz&YY#D?gc%>hISA+_EBpnXt#pnC`p6@xw0$8TCbULjhlgVx(kuc)%xbgqq zR5+DNDFRN0!y)7Gm}oT0i39}h4h928qY?Rho^UvPGJ#kuW|-Amtrn`Pmd&+bFo@sp z$LI4IQw7BG?|#2ewOS<<3VjL$0=lMY^m;wqZujv5kx1l%Sl;V&Iy4#$ip3&@LV2!7vhhN=PCz%^9v24`qb(+m4W?!q-&~=?ssf5GfnAmJKV;3bvpDm0(NhahZ=&^sqo6Odj6>)Dq_3p~4~ zvb`d3Mydwjt&Df^hVmLtI2x=U&h9(JVYX-!y~z3zi;1>=LY;o(bL$(Yf$lf)dMf0-u^0HrpTG Wk@)HE*94aU0000m+BBgry{~j2fHLegbHP( zrgXNbr0}2;^nywdjLjZe?uxtrd3D(pZH@fFFc0{BW_~jxoO1w7-VX;6vK@ROA$$R6 zEmo;Ht-Mj|>5jUy{bQ^V5@53LRI8AgLpUm|m+15sqcz@QtVSo|oz7ArM8?pIn+>gN z0b=4_b5O|4A*;Q+vc9Vqr~%3V155*NV~@gTz}KSUiKB-uJzjMZ>5%Q#n24H!V{ zTY(LLAE*NAHZ}C#wnj%Bw5OFIkRhkkAW#kDC3j9Wm0YXRaXlyyp>#mVfYG)eC;@ab zDb=T-BCAY4LI(Z@GOTr2V_A{pRwSmz+8Be>CjAw(=gnbVWAeguvZa93JmL(EDxv1m z0OP4q=fpAK1Mq!C2`OkEn37o;m#wF#(t(8Pu#S?2f#x<~4EO{@fmm`p9veD6RZ_jp z@Au4};q&`XuKEYgIiB4((kgxOs#YdqJw0fY>9^K_agEu5+$#k;w#%I2N>n_?)YIqu z`tq&#_^p?-%K*U0^}|7+9U(&k0?s;=r=uCZ%)H9_edH8wK}gB(nUB1FFk+2Ol%BXV zHoFY`D~2x|2 + + + + + + + tilt-1.3.3 Documentation + + + + + + + + + + + + +

tilt-1.3.3 Documentation

+ + +

This is the API documentation for 'tilt-1.3.3 Documentation'.

+ + + + + +

Classes/Modules

+ + +

Methods

+ + +
+

[Validate]

+

Generated with the Darkfish + Rdoc Generator 2.

+
+ + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/js/darkfish.js b/src/main/resources/doc/tilt-1.3.3/rdoc/js/darkfish.js new file mode 100644 index 00000000..84565c1e --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/js/darkfish.js @@ -0,0 +1,116 @@ +/** + * + * Darkfish Page Functions + * $Id: darkfish.js 53 2009-01-07 02:52:03Z deveiant $ + * + * Author: Michael Granger + * + */ + +/* Provide console simulation for firebug-less environments */ +if (!("console" in window) || !("firebug" in console)) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", + "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; + + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +}; + + +/** + * Unwrap the first element that matches the given @expr@ from the targets and return them. + */ +$.fn.unwrap = function( expr ) { + return this.each( function() { + $(this).parents( expr ).eq( 0 ).after( this ).remove(); + }); +}; + + +function showSource( e ) { + var target = e.target; + var codeSections = $(target). + parents('.method-detail'). + find('.method-source-code'); + + $(target). + parents('.method-detail'). + find('.method-source-code'). + slideToggle(); +}; + +function hookSourceViews() { + $('.method-description,.method-heading').click( showSource ); +}; + +function toggleDebuggingSection() { + $('.debugging-section').slideToggle(); +}; + +function hookDebuggingToggle() { + $('#debugging-toggle img').click( toggleDebuggingSection ); +}; + +function hookQuickSearch() { + $('.quicksearch-field').each( function() { + var searchElems = $(this).parents('.section').find( 'li' ); + var toggle = $(this).parents('.section').find('h3 .search-toggle'); + // console.debug( "Toggle is: %o", toggle ); + var qsbox = $(this).parents('form').get( 0 ); + + $(this).quicksearch( this, searchElems, { + noSearchResultsIndicator: 'no-class-search-results', + focusOnLoad: false + }); + $(toggle).click( function() { + // console.debug( "Toggling qsbox: %o", qsbox ); + $(qsbox).toggle(); + }); + }); +}; + +function highlightTarget( anchor ) { + console.debug( "Highlighting target '%s'.", anchor ); + + $("a[name=" + anchor + "]").each( function() { + if ( !$(this).parent().parent().hasClass('target-section') ) { + console.debug( "Wrapping the target-section" ); + $('div.method-detail').unwrap( 'div.target-section' ); + $(this).parent().wrap( '
' ); + } else { + console.debug( "Already wrapped." ); + } + }); +}; + +function highlightLocationTarget() { + console.debug( "Location hash: %s", window.location.hash ); + if ( ! window.location.hash || window.location.hash.length == 0 ) return; + + var anchor = window.location.hash.substring(1); + console.debug( "Found anchor: %s; matching %s", anchor, "a[name=" + anchor + "]" ); + + highlightTarget( anchor ); +}; + +function highlightClickTarget( event ) { + console.debug( "Highlighting click target for event %o", event.target ); + try { + var anchor = $(event.target).attr( 'href' ).substring(1); + console.debug( "Found target anchor: %s", anchor ); + highlightTarget( anchor ); + } catch ( err ) { + console.error( "Exception while highlighting: %o", err ); + }; +}; + + +$(document).ready( function() { + hookSourceViews(); + hookDebuggingToggle(); + hookQuickSearch(); + highlightLocationTarget(); + + $('ul.link-list a').bind( "click", highlightClickTarget ); +}); diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/js/jquery.js b/src/main/resources/doc/tilt-1.3.3/rdoc/js/jquery.js new file mode 100644 index 00000000..afe9e74c --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/js/jquery.js @@ -0,0 +1,32 @@ +/* + * jQuery 1.2.6 - New Wave Javascript + * + * Copyright (c) 2008 John Resig (jquery.com) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * $Date: 2008-09-25 09:50:52 -0700 (Thu, 25 Sep 2008) $ + * $Rev: 38 $ + */ +(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else +return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else +return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else +selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else +this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else +return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else +jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else +jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("",""]||!tags.indexOf("",""]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!tags.indexOf("",""]||(!tags.indexOf("",""]||!tags.indexOf("",""]||jQuery.browser.msie&&[1,"div
","
"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf(""&&tags.indexOf("=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else +ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&¬xml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&¬xml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&¬xml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else +while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return im[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else +for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("
").append(res.responseText.replace(//g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else +xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else +jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else +for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else +s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else +e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;ithis.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})(); \ No newline at end of file diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/js/quicksearch.js b/src/main/resources/doc/tilt-1.3.3/rdoc/js/quicksearch.js new file mode 100644 index 00000000..70dbd33c --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/js/quicksearch.js @@ -0,0 +1,114 @@ +/** + * + * JQuery QuickSearch - Hook up a form field to hide non-matching elements. + * $Id: quicksearch.js 53 2009-01-07 02:52:03Z deveiant $ + * + * Author: Michael Granger + * + */ +jQuery.fn.quicksearch = function( target, searchElems, options ) { + // console.debug( "Quicksearch fn" ); + + var settings = { + delay: 250, + clearButton: false, + highlightMatches: false, + focusOnLoad: false, + noSearchResultsIndicator: null + }; + if ( options ) $.extend( settings, options ); + + return jQuery(this).each( function() { + // console.debug( "Creating a new quicksearch on %o for %o", this, searchElems ); + new jQuery.quicksearch( this, searchElems, settings ); + }); +}; + + +jQuery.quicksearch = function( searchBox, searchElems, settings ) { + var timeout; + var boxdiv = $(searchBox).parents('div').eq(0); + + function init() { + setupKeyEventHandlers(); + focusOnLoad(); + }; + + function setupKeyEventHandlers() { + // console.debug( "Hooking up the 'keypress' event to %o", searchBox ); + $(searchBox). + unbind( 'keyup' ). + keyup( function(e) { return onSearchKey( e.keyCode ); }); + $(searchBox). + unbind( 'keypress' ). + keypress( function(e) { + switch( e.which ) { + // Execute the search on Enter, Tab, or Newline + case 9: + case 13: + case 10: + clearTimeout( timeout ); + e.preventDefault(); + doQuickSearch(); + break; + + // Allow backspace + case 8: + return true; + break; + + // Only allow valid search characters + default: + return validQSChar( e.charCode ); + } + }); + }; + + function focusOnLoad() { + if ( !settings.focusOnLoad ) return false; + $(searchBox).focus(); + }; + + function onSearchKey ( code ) { + clearTimeout( timeout ); + // console.debug( "...scheduling search." ); + timeout = setTimeout( doQuickSearch, settings.delay ); + }; + + function validQSChar( code ) { + var c = String.fromCharCode( code ); + return ( + (c == ':') || + (c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') + ); + }; + + function doQuickSearch() { + var searchText = searchBox.value; + var pat = new RegExp( searchText, "im" ); + var shownCount = 0; + + if ( settings.noSearchResultsIndicator ) { + $('#' + settings.noSearchResultsIndicator).hide(); + } + + // All elements start out hidden + $(searchElems).each( function(index) { + var str = $(this).text(); + + if ( pat.test(str) ) { + shownCount += 1; + $(this).fadeIn(); + } else { + $(this).hide(); + } + }); + + if ( shownCount == 0 && settings.noSearchResultsIndicator ) { + $('#' + settings.noSearchResultsIndicator).slideDown(); + } + }; + + init(); +}; diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/js/thickbox-compressed.js b/src/main/resources/doc/tilt-1.3.3/rdoc/js/thickbox-compressed.js new file mode 100644 index 00000000..3a3fdae1 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/js/thickbox-compressed.js @@ -0,0 +1,10 @@ +/* + * Thickbox 3 - One Box To Rule Them All. + * By Cody Lindley (http://www.codylindley.com) + * Copyright (c) 2007 cody lindley + * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php +*/ + +var tb_pathToImage = "../images/loadingAnimation.gif"; + +eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('$(o).2S(9(){1u(\'a.18, 3n.18, 3i.18\');1w=1p 1t();1w.L=2H});9 1u(b){$(b).s(9(){6 t=X.Q||X.1v||M;6 a=X.u||X.23;6 g=X.1N||P;19(t,a,g);X.2E();H P})}9 19(d,f,g){3m{3(2t o.v.J.2i==="2g"){$("v","11").r({A:"28%",z:"28%"});$("11").r("22","2Z");3(o.1Y("1F")===M){$("v").q("<4 5=\'B\'><4 5=\'8\'>");$("#B").s(G)}}n{3(o.1Y("B")===M){$("v").q("<4 5=\'B\'><4 5=\'8\'>");$("#B").s(G)}}3(1K()){$("#B").1J("2B")}n{$("#B").1J("2z")}3(d===M){d=""}$("v").q("<4 5=\'K\'><1I L=\'"+1w.L+"\' />");$(\'#K\').2y();6 h;3(f.O("?")!==-1){h=f.3l(0,f.O("?"))}n{h=f}6 i=/\\.2s$|\\.2q$|\\.2m$|\\.2l$|\\.2k$/;6 j=h.1C().2h(i);3(j==\'.2s\'||j==\'.2q\'||j==\'.2m\'||j==\'.2l\'||j==\'.2k\'){1D="";1G="";14="";1z="";1x="";R="";1n="";1r=P;3(g){E=$("a[@1N="+g+"]").36();25(D=0;((D&1d;&1d;2T &2R;"}n{1D=E[D].Q;1G=E[D].u;14="<1e 5=\'1U\'>&1d;&1d;&2O; 2N"}}n{1r=1b;1n="1t "+(D+1)+" 2L "+(E.1c)}}}S=1p 1t();S.1g=9(){S.1g=M;6 a=2x();6 x=a[0]-1M;6 y=a[1]-1M;6 b=S.z;6 c=S.A;3(b>x){c=c*(x/b);b=x;3(c>y){b=b*(y/c);c=y}}n 3(c>y){b=b*(y/c);c=y;3(b>x){c=c*(x/b);b=x}}13=b+30;1a=c+2G;$("#8").q("<1I 5=\'2F\' L=\'"+f+"\' z=\'"+b+"\' A=\'"+c+"\' 23=\'"+d+"\'/>"+"<4 5=\'2D\'>"+d+"<4 5=\'2C\'>"+1n+14+R+"<4 5=\'2A\'>1l 1k 1j 1s");$("#Z").s(G);3(!(14==="")){9 12(){3($(o).N("s",12)){$(o).N("s",12)}$("#8").C();$("v").q("<4 5=\'8\'>");19(1D,1G,g);H P}$("#1U").s(12)}3(!(R==="")){9 1i(){$("#8").C();$("v").q("<4 5=\'8\'>");19(1z,1x,g);H P}$("#1X").s(1i)}o.1h=9(e){3(e==M){I=2w.2v}n{I=e.2u}3(I==27){G()}n 3(I==3k){3(!(R=="")){o.1h="";1i()}}n 3(I==3j){3(!(14=="")){o.1h="";12()}}};16();$("#K").C();$("#1L").s(G);$("#8").r({Y:"T"})};S.L=f}n{6 l=f.2r(/^[^\\?]+\\??/,\'\');6 m=2p(l);13=(m[\'z\']*1)+30||3h;1a=(m[\'A\']*1)+3g||3f;W=13-30;V=1a-3e;3(f.O(\'2j\')!=-1){1E=f.1B(\'3d\');$("#15").C();3(m[\'1A\']!="1b"){$("#8").q("<4 5=\'2f\'><4 5=\'1H\'>"+d+"<4 5=\'2e\'>1l 1k 1j 1s ")}n{$("#B").N();$("#8").q(" ")}}n{3($("#8").r("Y")!="T"){3(m[\'1A\']!="1b"){$("#8").q("<4 5=\'2f\'><4 5=\'1H\'>"+d+"<4 5=\'2e\'>1l 1k 1j 1s<4 5=\'F\' J=\'z:"+W+"p;A:"+V+"p\'>")}n{$("#B").N();$("#8").q("<4 5=\'F\' 3c=\'3b\' J=\'z:"+W+"p;A:"+V+"p;\'>")}}n{$("#F")[0].J.z=W+"p";$("#F")[0].J.A=V+"p";$("#F")[0].3a=0;$("#1H").11(d)}}$("#Z").s(G);3(f.O(\'37\')!=-1){$("#F").q($(\'#\'+m[\'26\']).1T());$("#8").24(9(){$(\'#\'+m[\'26\']).q($("#F").1T())});16();$("#K").C();$("#8").r({Y:"T"})}n 3(f.O(\'2j\')!=-1){16();3($.1q.35){$("#K").C();$("#8").r({Y:"T"})}}n{$("#F").34(f+="&1y="+(1p 33().32()),9(){16();$("#K").C();1u("#F a.18");$("#8").r({Y:"T"})})}}3(!m[\'1A\']){o.21=9(e){3(e==M){I=2w.2v}n{I=e.2u}3(I==27){G()}}}}31(e){}}9 1m(){$("#K").C();$("#8").r({Y:"T"})}9 G(){$("#2Y").N("s");$("#Z").N("s");$("#8").2X("2W",9(){$(\'#8,#B,#1F\').2V("24").N().C()});$("#K").C();3(2t o.v.J.2i=="2g"){$("v","11").r({A:"1Z",z:"1Z"});$("11").r("22","")}o.1h="";o.21="";H P}9 16(){$("#8").r({2U:\'-\'+20((13/2),10)+\'p\',z:13+\'p\'});3(!(1V.1q.2Q&&1V.1q.2P<7)){$("#8").r({38:\'-\'+20((1a/2),10)+\'p\'})}}9 2p(a){6 b={};3(!a){H b}6 c=a.1B(/[;&]/);25(6 i=0;i + + + + + + + File: builder.rb [tilt-1.3.3 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-22 17:22:25 -0700
+ + +
Requires
+
+
    + +
  • tilt/template
  • + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/coffee_rb.html b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/coffee_rb.html new file mode 100644 index 00000000..3a62e1e6 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/coffee_rb.html @@ -0,0 +1,54 @@ + + + + + + + + File: coffee.rb [tilt-1.3.3 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-22 17:22:25 -0700
+ + +
Requires
+
+
    + +
  • tilt/template
  • + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/css_rb.html b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/css_rb.html new file mode 100644 index 00000000..2e322c39 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/css_rb.html @@ -0,0 +1,54 @@ + + + + + + + + File: css.rb [tilt-1.3.3 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-22 17:22:25 -0700
+ + +
Requires
+
+
    + +
  • tilt/template
  • + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/erb_rb.html b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/erb_rb.html new file mode 100644 index 00000000..7b159d1c --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/erb_rb.html @@ -0,0 +1,54 @@ + + + + + + + + File: erb.rb [tilt-1.3.3 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-22 17:22:25 -0700
+ + +
Requires
+
+
    + +
  • tilt/template
  • + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/haml_rb.html b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/haml_rb.html new file mode 100644 index 00000000..4b6a30f0 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/haml_rb.html @@ -0,0 +1,54 @@ + + + + + + + + File: haml.rb [tilt-1.3.3 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-22 17:22:25 -0700
+ + +
Requires
+
+
    + +
  • tilt/template
  • + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/liquid_rb.html b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/liquid_rb.html new file mode 100644 index 00000000..2e8dfdb0 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/liquid_rb.html @@ -0,0 +1,54 @@ + + + + + + + + File: liquid.rb [tilt-1.3.3 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-22 17:22:25 -0700
+ + +
Requires
+
+
    + +
  • tilt/template
  • + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/markaby_rb.html b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/markaby_rb.html new file mode 100644 index 00000000..b8f5cdd8 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/markaby_rb.html @@ -0,0 +1,54 @@ + + + + + + + + File: markaby.rb [tilt-1.3.3 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-22 17:22:25 -0700
+ + +
Requires
+
+
    + +
  • tilt/template
  • + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/markdown_rb.html b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/markdown_rb.html new file mode 100644 index 00000000..9ffdf76a --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/markdown_rb.html @@ -0,0 +1,54 @@ + + + + + + + + File: markdown.rb [tilt-1.3.3 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-22 17:22:25 -0700
+ + +
Requires
+
+
    + +
  • tilt/template
  • + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/nokogiri_rb.html b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/nokogiri_rb.html new file mode 100644 index 00000000..d12181ec --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/nokogiri_rb.html @@ -0,0 +1,54 @@ + + + + + + + + File: nokogiri.rb [tilt-1.3.3 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-22 17:22:25 -0700
+ + +
Requires
+
+
    + +
  • tilt/template
  • + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/radius_rb.html b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/radius_rb.html new file mode 100644 index 00000000..d74e848e --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/radius_rb.html @@ -0,0 +1,54 @@ + + + + + + + + File: radius.rb [tilt-1.3.3 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-22 17:22:25 -0700
+ + +
Requires
+
+
    + +
  • tilt/template
  • + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/rdoc_rb.html b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/rdoc_rb.html new file mode 100644 index 00000000..d3855143 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/rdoc_rb.html @@ -0,0 +1,54 @@ + + + + + + + + File: rdoc.rb [tilt-1.3.3 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-22 17:22:25 -0700
+ + +
Requires
+
+
    + +
  • tilt/template
  • + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/string_rb.html b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/string_rb.html new file mode 100644 index 00000000..e60d1bb2 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/string_rb.html @@ -0,0 +1,54 @@ + + + + + + + + File: string.rb [tilt-1.3.3 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-22 17:22:25 -0700
+ + +
Requires
+
+
    + +
  • tilt/template
  • + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/template_rb.html b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/template_rb.html new file mode 100644 index 00000000..6b38a863 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/template_rb.html @@ -0,0 +1,52 @@ + + + + + + + + File: template.rb [tilt-1.3.3 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-22 17:22:25 -0700
+ + +
Requires
+
+
    + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/textile_rb.html b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/textile_rb.html new file mode 100644 index 00000000..01e58fd1 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/textile_rb.html @@ -0,0 +1,54 @@ + + + + + + + + File: textile.rb [tilt-1.3.3 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-22 17:22:25 -0700
+ + +
Requires
+
+
    + +
  • tilt/template
  • + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/wiki_rb.html b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/wiki_rb.html new file mode 100644 index 00000000..dd24c167 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/wiki_rb.html @@ -0,0 +1,54 @@ + + + + + + + + File: wiki.rb [tilt-1.3.3 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-22 17:22:25 -0700
+ + +
Requires
+
+
    + +
  • tilt/template
  • + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/yajl_rb.html b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/yajl_rb.html new file mode 100644 index 00000000..d99bc23a --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt/yajl_rb.html @@ -0,0 +1,54 @@ + + + + + + + + File: yajl.rb [tilt-1.3.3 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-22 17:22:25 -0700
+ + +
Requires
+
+
    + +
  • tilt/template
  • + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt_rb.html b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt_rb.html new file mode 100644 index 00000000..252c03f3 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/lib/tilt_rb.html @@ -0,0 +1,82 @@ + + + + + + + + File: tilt.rb [tilt-1.3.3 Documentation] + + + + + + + + + + +
+
+
Last Modified
+
2013-01-22 17:22:25 -0700
+ + +
Requires
+
+
    + +
  • tilt/string
  • + +
  • tilt/erb
  • + +
  • tilt/haml
  • + +
  • tilt/css
  • + +
  • tilt/coffee
  • + +
  • tilt/nokogiri
  • + +
  • tilt/builder
  • + +
  • tilt/markaby
  • + +
  • tilt/liquid
  • + +
  • tilt/radius
  • + +
  • tilt/markdown
  • + +
  • tilt/textile
  • + +
  • tilt/rdoc
  • + +
  • tilt/wiki
  • + +
  • tilt/yajl
  • + +
+
+ + + +
+
+ +
+ +
+

Description

+ +
+ +
+ + + diff --git a/src/main/resources/doc/tilt-1.3.3/rdoc/rdoc.css b/src/main/resources/doc/tilt-1.3.3/rdoc/rdoc.css new file mode 100644 index 00000000..ea914218 --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/rdoc/rdoc.css @@ -0,0 +1,763 @@ +/* + * "Darkfish" Rdoc CSS + * $Id: rdoc.css 54 2009-01-27 01:09:48Z deveiant $ + * + * Author: Michael Granger + * + */ + +/* Base Green is: #6C8C22 */ + +*{ padding: 0; margin: 0; } + +body { + background: #efefef; + font: 14px "Helvetica Neue", Helvetica, Tahoma, sans-serif; +} +body.class, body.module, body.file { + margin-left: 40px; +} +body.file-popup { + font-size: 90%; + margin-left: 0; +} + +h1 { + font-size: 300%; + text-shadow: rgba(135,145,135,0.65) 2px 2px 3px; + color: #6C8C22; +} +h2,h3,h4 { margin-top: 1.5em; } + +:link, +:visited { + color: #6C8C22; + text-decoration: none; +} +:link:hover, +:visited:hover { + border-bottom: 1px dotted #6C8C22; +} + +pre { + background: #ddd; + padding: 0.5em 0; +} + + +/* @group Generic Classes */ + +.initially-hidden { + display: none; +} + +.quicksearch-field { + width: 98%; + background: #ddd; + border: 1px solid #aaa; + height: 1.5em; + -webkit-border-radius: 4px; +} +.quicksearch-field:focus { + background: #f1edba; +} + +.missing-docs { + font-size: 120%; + background: white url(images/wrench_orange.png) no-repeat 4px center; + color: #ccc; + line-height: 2em; + border: 1px solid #d00; + opacity: 1; + padding-left: 20px; + text-indent: 24px; + letter-spacing: 3px; + font-weight: bold; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; +} + +.target-section { + border: 2px solid #dcce90; + border-left-width: 8px; + padding: 0 1em; + background: #fff3c2; +} + +/* @end */ + + +/* @group Index Page, Standalone file pages */ +body.indexpage { + margin: 1em 3em; +} +body.indexpage p, +body.indexpage div, +body.file p { + margin: 1em 0; +} + +.indexpage .rdoc-list p, .file .rdoc-list p { + margin: 0em 0; +} + +.indexpage ol, +.file #documentation ol { + line-height: 160%; +} + +.indexpage ul, +.file #documentation ul { + line-height: 160%; + list-style: none; +} +.indexpage ul :link, +.indexpage ul :visited { + font-size: 16px; +} + +.indexpage li, +.file #documentation li { + padding-left: 20px; +} + +.indexpage ol, +.file #documentation ol { + margin-left: 20px; +} + +.indexpage ol > li, +.file #documentation ol > li { + padding-left: 0; +} + +.indexpage ul > li, +.file #documentation ul > li { + background: url(images/bullet_black.png) no-repeat left 4px; +} +.indexpage li.module { + background: url(images/package.png) no-repeat left 4px; +} +.indexpage li.class { + background: url(images/ruby.png) no-repeat left 4px; +} +.indexpage li.file { + background: url(images/page_white_text.png) no-repeat left 4px; +} +.file li p, +.indexpage li p { + margin: 0 0; +} + +/* @end */ + +/* @group Top-Level Structure */ + +.class #metadata, +.file #metadata, +.module #metadata { + float: left; + width: 260px; +} + +.class #documentation, +.file #documentation, +.module #documentation { + margin: 2em 1em 5em 300px; + min-width: 340px; +} + +.file #metadata { + margin: 0.8em; +} + +#validator-badges { + clear: both; + margin: 1em 1em 2em; +} + +/* @end */ + +/* @group Metadata Section */ +#metadata .section { + background-color: #dedede; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border: 1px solid #aaa; + margin: 0 8px 16px; + font-size: 90%; + overflow: hidden; +} +#metadata h3.section-header { + margin: 0; + padding: 2px 8px; + background: #ccc; + color: #666; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-bottom: 1px solid #aaa; +} +#metadata #home-section h3.section-header { + border-bottom: 0; +} + +#metadata ul, +#metadata dl, +#metadata p { + padding: 8px; + list-style: none; +} + +#file-metadata ul { + padding-left: 28px; + list-style-image: url(images/page_green.png); +} + +dl.svninfo { + color: #666; + margin: 0; +} +dl.svninfo dt { + font-weight: bold; +} + +ul.link-list li { + white-space: nowrap; +} +ul.link-list .type { + font-size: 8px; + text-transform: uppercase; + color: white; + background: #969696; + padding: 2px 4px; + -webkit-border-radius: 5px; +} + +/* @end */ + + +/* @group Project Metadata Section */ +#project-metadata { + margin-top: 3em; +} + +.file #project-metadata { + margin-top: 0em; +} + +#project-metadata .section { + border: 1px solid #aaa; +} +#project-metadata h3.section-header { + border-bottom: 1px solid #aaa; + position: relative; +} +#project-metadata h3.section-header .search-toggle { + position: absolute; + right: 5px; +} + + +#project-metadata form { + color: #777; + background: #ccc; + padding: 8px 8px 16px; + border-bottom: 1px solid #bbb; +} +#project-metadata fieldset { + border: 0; +} + +#no-class-search-results { + margin: 0 auto 1em; + text-align: center; + font-size: 14px; + font-weight: bold; + color: #aaa; +} + +/* @end */ + + +/* @group Documentation Section */ +.description { + font-size: 100%; + color: #333; +} + +.description p { + margin: 1em 0.4em; +} + +.description li p { + margin: 0; +} + +.description ul { + margin-left: 1.5em; +} +.description ul li { + line-height: 1.4em; +} + +.description dl, +#documentation dl { + margin: 8px 1.5em; + border: 1px solid #ccc; +} +.description dl { + font-size: 14px; +} + +.description dt, +#documentation dt { + padding: 2px 4px; + font-weight: bold; + background: #ddd; +} +.description dd, +#documentation dd { + padding: 2px 12px; +} +.description dd + dt, +#documentation dd + dt { + margin-top: 0.7em; +} + +#documentation .section { + font-size: 90%; +} + +#documentation h2.section-header { + margin-top: 2em; + padding: 0.75em 0.5em; + background: #ccc; + color: #333; + font-size: 175%; + border: 1px solid #bbb; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +#documentation h3.section-header { + margin-top: 2em; + padding: 0.25em 0.5em; + background-color: #dedede; + color: #333; + font-size: 150%; + border: 1px solid #bbb; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +#constants-list > dl, +#attributes-list > dl { + margin: 1em 0 2em; + border: 0; +} +#constants-list > dl dt, +#attributes-list > dl dt { + padding-left: 0; + font-weight: bold; + font-family: Monaco, "Andale Mono"; + background: inherit; +} +#constants-list > dl dt a, +#attributes-list > dl dt a { + color: inherit; +} +#constants-list > dl dd, +#attributes-list > dl dd { + margin: 0 0 1em 0; + padding: 0; + color: #666; +} + +.documentation-section h2 { + position: relative; +} + +.documentation-section h2 a { + position: absolute; + top: 8px; + right: 10px; + font-size: 12px; + color: #9b9877; + visibility: hidden; +} + +.documentation-section h2:hover a { + visibility: visible; +} + +/* @group Method Details */ + +#documentation .method-source-code { + display: none; +} + +#documentation .method-detail { + margin: 0.5em 0; + padding: 0.5em 0; + cursor: pointer; +} +#documentation .method-detail:hover { + background-color: #f1edba; +} +#documentation .method-heading { + position: relative; + padding: 2px 4px 0 20px; + font-size: 125%; + font-weight: bold; + color: #333; + background: url(images/brick.png) no-repeat left bottom; +} +#documentation .method-heading :link, +#documentation .method-heading :visited { + color: inherit; +} +#documentation .method-click-advice { + position: absolute; + top: 2px; + right: 5px; + font-size: 10px; + color: #9b9877; + visibility: hidden; + padding-right: 20px; + line-height: 20px; + background: url(images/zoom.png) no-repeat right top; +} +#documentation .method-detail:hover .method-click-advice { + visibility: visible; +} + +#documentation .method-alias .method-heading { + color: #666; + background: url(images/brick_link.png) no-repeat left bottom; +} + +#documentation .method-description, +#documentation .aliases { + margin: 0 20px; + color: #666; +} + +#documentation .method-description p, +#documentation .aliases p { + line-height: 1.2em; +} + +#documentation .aliases { + padding-top: 4px; + font-style: italic; + cursor: default; +} +#documentation .method-description p { + padding: 0; +} +#documentation .method-description p + p { + margin-bottom: 0.5em; +} +#documentation .method-description ul { + margin-left: 1.5em; +} + +#documentation .attribute-method-heading { + background: url(images/tag_green.png) no-repeat left bottom; +} +#documentation #attribute-method-details .method-detail:hover { + background-color: transparent; + cursor: default; +} +#documentation .attribute-access-type { + font-size: 60%; + text-transform: uppercase; + vertical-align: super; + padding: 0 2px; +} +/* @end */ + +/* @end */ + + + +/* @group Source Code */ + +div.method-source-code { + background: #262626; + color: #efefef; + margin: 1em; + padding: 0.5em; + border: 1px dashed #999; + overflow: hidden; +} + +div.method-source-code pre { + background: inherit; + padding: 0; + color: white; + overflow: auto; +} + +/* @group Ruby keyword styles */ + +.ruby-constant { color: #7fffd4; background: transparent; } +.ruby-keyword { color: #00ffff; background: transparent; } +.ruby-ivar { color: #eedd82; background: transparent; } +.ruby-operator { color: #00ffee; background: transparent; } +.ruby-identifier { color: #ffdead; background: transparent; } +.ruby-node { color: #ffa07a; background: transparent; } +.ruby-comment { color: #b22222; font-weight: bold; background: transparent; } +.ruby-regexp { color: #ffa07a; background: transparent; } +.ruby-value { color: #7fffd4; background: transparent; } + +/* @end */ +/* @end */ + + +/* @group File Popup Contents */ + +.file #metadata, +.file-popup #metadata { +} + +.file-popup dl { + font-size: 80%; + padding: 0.75em; + background-color: #dedede; + color: #333; + border: 1px solid #bbb; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} +.file dt { + font-weight: bold; + padding-left: 22px; + line-height: 20px; + background: url(images/page_white_width.png) no-repeat left top; +} +.file dt.modified-date { + background: url(images/date.png) no-repeat left top; +} +.file dt.requires { + background: url(images/plugin.png) no-repeat left top; +} +.file dt.scs-url { + background: url(images/wrench.png) no-repeat left top; +} + +.file dl dd { + margin: 0 0 1em 0; +} +.file #metadata dl dd ul { + list-style: circle; + margin-left: 20px; + padding-top: 0; +} +.file #metadata dl dd ul li { +} + + +.file h2 { + margin-top: 2em; + padding: 0.75em 0.5em; + background-color: #dedede; + color: #333; + font-size: 120%; + border: 1px solid #bbb; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +/* @end */ + + + + +/* @group ThickBox Styles */ +#TB_window { + font: 12px Arial, Helvetica, sans-serif; + color: #333333; +} + +#TB_secondLine { + font: 10px Arial, Helvetica, sans-serif; + color:#666666; +} + +#TB_window :link, +#TB_window :visited { color: #666666; } +#TB_window :link:hover, +#TB_window :visited:hover { color: #000; } +#TB_window :link:active, +#TB_window :visited:active { color: #666666; } +#TB_window :link:focus, +#TB_window :visited:focus { color: #666666; } + +#TB_overlay { + position: fixed; + z-index:100; + top: 0px; + left: 0px; + height:100%; + width:100%; +} + +.TB_overlayMacFFBGHack {background: url(images/macFFBgHack.png) repeat;} +.TB_overlayBG { + background-color:#000; + filter:alpha(opacity=75); + -moz-opacity: 0.75; + opacity: 0.75; +} + +* html #TB_overlay { /* ie6 hack */ + position: absolute; + height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'); +} + +#TB_window { + position: fixed; + background: #ffffff; + z-index: 102; + color:#000000; + display:none; + border: 4px solid #525252; + text-align:left; + top:50%; + left:50%; +} + +* html #TB_window { /* ie6 hack */ + position: absolute; + margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px'); +} + +#TB_window img#TB_Image { + display:block; + margin: 15px 0 0 15px; + border-right: 1px solid #ccc; + border-bottom: 1px solid #ccc; + border-top: 1px solid #666; + border-left: 1px solid #666; +} + +#TB_caption{ + height:25px; + padding:7px 30px 10px 25px; + float:left; +} + +#TB_closeWindow{ + height:25px; + padding:11px 25px 10px 0; + float:right; +} + +#TB_closeAjaxWindow{ + padding:7px 10px 5px 0; + margin-bottom:1px; + text-align:right; + float:right; +} + +#TB_ajaxWindowTitle{ + float:left; + padding:7px 0 5px 10px; + margin-bottom:1px; + font-size: 22px; +} + +#TB_title{ + background-color: #6C8C22; + color: #dedede; + height:40px; +} +#TB_title :link, +#TB_title :visited { + color: white !important; + border-bottom: 1px dotted #dedede; +} + +#TB_ajaxContent{ + clear:both; + padding:2px 15px 15px 15px; + overflow:auto; + text-align:left; + line-height:1.4em; +} + +#TB_ajaxContent.TB_modal{ + padding:15px; +} + +#TB_ajaxContent p{ + padding:5px 0px 5px 0px; +} + +#TB_load{ + position: fixed; + display:none; + height:13px; + width:208px; + z-index:103; + top: 50%; + left: 50%; + margin: -6px 0 0 -104px; /* -height/2 0 0 -width/2 */ +} + +* html #TB_load { /* ie6 hack */ + position: absolute; + margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px'); +} + +#TB_HideSelect{ + z-index:99; + position:fixed; + top: 0; + left: 0; + background-color:#fff; + border:none; + filter:alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; + height:100%; + width:100%; +} + +* html #TB_HideSelect { /* ie6 hack */ + position: absolute; + height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'); +} + +#TB_iframeContent{ + clear:both; + border:none; + margin-bottom:-1px; + margin-top:1px; + _margin-bottom:1px; +} + +/* @end */ + +/* @group Debugging Section */ + +#debugging-toggle { + text-align: center; +} +#debugging-toggle img { + cursor: pointer; +} + +#rdoc-debugging-section-dump { + display: none; + margin: 0 2em 2em; + background: #ccc; + border: 1px solid #999; +} + + + +/* @end */ diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/%5b%5d-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/%5b%5d-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..22bd4b72e7833d20c411e3841ecc184b5bf57168 GIT binary patch literal 290 zcmY+9Jx{|h5QZ6$14Kw2*kCwif+b|WEJcD!k*I{KFj)*vdTlHm+j7o){CjM5V!L~F z&!hLwFW&KH_v}W*C;Pi4p4?upwCJireh3sVo36UEmGZ=(wSGBLsB^VSi&E6;`7>!yMIJf{j5ghdw zSvY7zR?P${&2uW!CzyVi?4q5mVMiQ;1*;8wPl>P&bP`f7q&S^`&eCZ2b%yb3ojpy{ X$g{30@AL9-vaXCC9yxtnhao3_U?y8w literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/BlueClothTemplate/cdesc-BlueClothTemplate.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/BlueClothTemplate/cdesc-BlueClothTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..d942e89c9e70890b05bfe6d1c1126072b4806d70 GIT binary patch literal 496 zcmZXRy-&k15XBjgQ}t_Ls6ce6GNYRLJWx@nlmUdGOc^RSIa-5bTaHsC{(8=|q(aDp zWxc20d%ipEyu#@D&K3ZV)>l%`wXExWs92VcZgqomZNqknmD4gH19rd2((zL10PtTH zjMPEvrl*C=J^exYkH!H|R8ye|3G`-8`cUW0iX;&ox?%j+`y{>Gc3~MNZYA=bE)vMb4sjj%K3_u9Q(hNv*!Hyot`) z899g4AW#D=36?thTFPD KKk~&OKluh$B9*HE literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/BlueClothTemplate/engine_initialized%3f-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/BlueClothTemplate/engine_initialized%3f-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..fa676852eeb920126f0e022f79c46382e6d510d0 GIT binary patch literal 195 zcmZwAI}d^|6oz32Q;aMQ4jQ*kx(KevLA;T4U@>)KFkFsuVrdDM82$A&adrOke$QZd zfyw!3N`Reyr)XwVMxm;dH4+V8|9b(6BA7^> zBQFFjf7XO{wUz*8LN}~cLzsk;cB;=T7>5sz%=i7wik;Q2FN9>SjiR8~yY@CWsos-- Xq_ML=o_oqX@ERj5#j8DZ`4@cv>L@&n literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/BlueClothTemplate/initialize_engine-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/BlueClothTemplate/initialize_engine-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..35df723b7a3cf5632614098b565b90122159f943 GIT binary patch literal 190 zcmZY2Jr9B~6op|1Q;aMQ#>BYQMHgVcF8D>lz+!M>Fa@r1V`&>KG5YIm;^=(xo@X?^ z!0dd~HNZ~2bF{5)$|Oa`B zG=;znm84q3^5^8De+&k|p+kqt`Vb^W^!8bLFiCDCF^=QX%ecSZF!zx0g`_I7PK`R( MHu|N)zH(FX1ptLSdH?_b literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/BlueClothTemplate/prepare-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/BlueClothTemplate/prepare-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..08d6a4264a4ed6ab8d9161ce37e69a6b8ca21047 GIT binary patch literal 170 zcmXwyI}d^|6h;|LG2-ChV%(~OF2a0W@I}&rh2X@*;~E+-w5e^3|K29X`8(e^lj$9n z#Z|Qcr}2}c?NwJTBolnD4eHt;19r;<-=9__vN2LrP1ZB!lImvBn;l!5XRDxg6bzh+j zD3T-VJ3jaL_^kZ_gSSVO0lX+vaQPs4RV97F;^5-G7BWXO$3jbPkpX*}#ldJUqy_j3 zBSx%u)Y4YL)z0~uo6lMU(3rZw(t6-eH8-|On2J0vYSSOCPqnYy@Ri|u%?NvOaI>E` zw)-?=L8;K$aVu0g8NVX}i`YC4g0;08!Z6+CpO`xRS}L=`2`!=1KxeuX660VfMH*VV zP$N#AAnM#Et?lQz>7C5gLSU9q8t`?UN|7bZu_2Z#QQ|_B!U`_MH|BRvIXx$3UmImH zvzU{a2VHH%hN^TMYD<)r)>_OGWJftC6aOeR%^AT;HR1F(ic%*1ekuX2qQp=6T*kRT{51EG&dKie%;jo5@k# IS{V}l19(?F>Hq)$ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/BuilderTemplate/evaluate-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/BuilderTemplate/evaluate-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..8f4e5f301250cb2bbaaec6fdff6c8b3f9c56e347 GIT binary patch literal 190 zcmX|)F$;n~7=|0-iX>=g2x<_8D3EmiTr5hs!6j^Ry3>meKfOcmg8qGm(DuUf@;uY| z1J?JeDgn;zClltSs$wMx^_Jqz&@v+kkXuSUKbL3#E>>bCx?D6G2k8G_F-cQ!wB;yE z1>4b?v97inUmJ5m4u literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/BuilderTemplate/initialize_engine-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/BuilderTemplate/initialize_engine-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..7de8adbf845f297fec6d695231b66c62a038524c GIT binary patch literal 187 zcmZY2u?oU46ougql8Rj%L!22T9tiUQE*xlR=-}Ku72EbH35| z3bV_ps{s!BQ=olzO*JLP<2h-vBouw|hWbGo8L)HC<84XG0vsKw22F`=uY|?bf4*mV z4pHx!22T9V1!Ph3F$>85x>FRvBoXPAC ztJ}p$fK&G=m4BJ0UTVUUjde!22T9t9!J8(e$>7^t>FRdi=kQHt zcUavnrU5v0pHljlY3rpTjBc!xjnP)2Y#+nsTA(CAt_7n>rO*SMgThw2N@|PT%iZ5c zMv4Mr8w9Gxz;?7s?%u%y3~x<(}u NKj4WN?V}UF@&$&bKtKQh literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/BuilderTemplate/precompiled_template-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/BuilderTemplate/precompiled_template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..2a5d575dd9fe21f116aa39295ccede9b1dface94 GIT binary patch literal 199 zcmZwAu?oU46hKi2iDD5P92B>>=wds+E>*OUp^Mb1gCuFh;A<1oWbp5;)Y18JIpgUK zme;e90LS)SDE~Bdwa|powRK9G#%fgc-K)kT_lf|yQ)> z`hFc-fb;OJkzQjbSB43`bRM1Z$bj7{!FgjW0bGKy9r^})XBFY@e>$fjN5bXga%Wk{k#DNcK6fUi(0%u1^D=n=E5-ozlC8tR;yD>PiYdb9!>VNOp zOP~mpL*#igZ|1$32eU8Y@u#=C5#mhS9@Sc*bJbENWj0@9(@`RllhZPLbRm@&VizhB zjx5gWZ`AmNA6h)!aeP4geKbNa;n>sQQ?XbXwBA*TF4DA^RWmJ~{hj*}Ep9EEE(vg% zl_x*ErJmFcIN2LT;E8|e37Rkv#9&}YFZGba8kLg67SI?an;3LF)kT@TZ!Cp6gnQG2 z9Gu6Y;qcJH=m=hH$TuBaOW$#f+mZ*pfeu}VwW1x@OSIdl$-$u;IUODNPII}}kv<>j z`bdQ2f9&{5w&uC|pfD}7=Q|y5?oSn}=fTS|dl%t64s~eIcgMi`=oqvKg544P{N3>X z_-$m;#lz5$H+lMbtQ}pB>=~=S(!WdsOMbKi%U~}QTh-ox(%4e_$8sH)oCjHAzS>Ad zd<#m}uRPyFZtDOPi`Ug&{L&zA-h>+pS}K++7G|t@FI5t-8OsdF>IoxDW3}fKqLzzO mv2U!r;&p{bnH@}Pnuv=1YN98!6A8DAMosVHAe0x&YVQv4-A&vU1F;^i3_v$WMtD$Yk?W;!4g*O)O%wVsmx#R1yox%qg+5a!yRn zNL7YNShKmgS#cMXCgo%%=UYib%@(uQXI`-#pRHe knUiW@U=YpVsl=|K$p$pRQ%N8vGfBS$Xu4ie5>O-r02SIP(EtDd literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Cache/fetch-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Cache/fetch-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..24126f91b3424eafb7429395f56713731d7c79dd GIT binary patch literal 155 zcmZSK2(=Oka>-A&vU1F;^i3_v$WMtD$Yk?W;z~;`NzP!iVsmx#R1yox%qg+5a!yRn zNL7YNShKmgS#cMXCgo%%=UYib%@(uQXI`-#pRHe snUiW@;HkvG2GktQ;Hku|p_QFlsR`tUcq$3xWG3mC0PWE$N&<-h0K5|{Bme*a literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Cache/new-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Cache/new-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..acc80b2b612d965886414376e7ee68b052c06430 GIT binary patch literal 142 zcmZSK2(=Oka>-A&vU1F;^i3_v$WMtD$Yk?W;>b%aXR~5+b@Nmb4av+Yv9fYbOwLHP zvI2=)v$=&>aTk;(b^H*Dg$8;fxHB@Z{%7 zk$swI6F7g7Ard0ISrOK06hwZsQaYFZrgfZ?Y`Xv(Qr;gs=|fW{DAH7P%P#T{&$$=U z%ej~CIw3eMvV2>bg-3TxlS_y-Wzc9x>kmePCGq0Yz7Z4w}!*ppu6E=-IsnQ;(t^?~P~L zK#?67UFCsh`RHrptB8yKm$I|`(%5WI#aAKVq@?C~-?f#|s_aGVbqzDwnlP=The#O@ zV|af%{B;w5`xLi0y`y<z2BWG#E3#&by;xri%FbVwKG;=62T9Wx45n>}iQwN`b#lI3&R}$b z#p%!qfL;5_(cQYboGHTSyhh2rcGrqq+!7$ijM1=A+5zl4DG|@YD&q=ljOGpj{)dEQ z1x$>uv=SYxen!si-5Y=&^bNLd2$R%s>mFqQ<5Vh*aU7Qcqto@1YmXa}kb=>rR#oJB MIuc(wwAClP0Zx`XYXATM literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/default_bare-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/default_bare-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..839ab46925820fb185f2d8d3732fabbf34fee5d7 GIT binary patch literal 182 zcmY+-p$@_@6op{~=?F8BkRWhVAYjuMGXgBBn1P}uNY~wlhHh)ht>EohK%vi{^NlAr zSX@rM0yuQ<66w)5)yy!S%p24)Si0BJBLj9Wc(N7762P(78u6;UaU`&HRuTgI^?Ozb zh+U|yQ9Z1FLMi<-IDml*Ep`+^oIC01RgGYpYhy9XvTDSWXuV;>15cLL)F};Us=nsV H*TWz_uR%D! literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/default_no_wrap%3d-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/default_no_wrap%3d-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..3589fde44d5de139d2d4380eb3dccf1ecf3080bf GIT binary patch literal 243 zcmZXOzYoDc7={gUekKgWz|@IFYyBDt(Mmczj rYDvR@_=G}pk#m8b=f#!CX^-zrSe(2`HhlORP)V literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/default_no_wrap-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/default_no_wrap-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..a641d2f184b109535d7d0cb52635f15f11831915 GIT binary patch literal 236 zcmZ9GI}d^|7)2dSeK6=i;-C|gF4Fm9!3ZV{CPwSj!4xRcSZGsAjQ`%Mldd=C=A8cU z4E`}u1;D0#?zyd1Nv8s3fnV~9b<$p1b$J-35ukLJ1(*nF0k*2DI6oCeXiIpbC9@ph z{}Q1c0Z(_i6orEM*RyBl)@cAI?Hb3P~>j literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/engine_initialized%3f-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/engine_initialized%3f-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..9c8fc3e009c107fa6245cb8d406c26d1e98bf576 GIT binary patch literal 196 zcmZwAu?~VT6op|1Q;aMQCYrc0=^_kH*FlU*!oZ?+VlV|RdShvuS_XZ3iLTBk|M>>P z3rtQ2T>w)Qg|grj)bH))>{Vbm}cRclXL)k-86{j%93#$TO)-- zfPdMBr5pm&m69qA^PiUs`{)cnk9RF9=R=SfVcoOvV3af@F^=QH%R+y#Wc@=HP9>F* O>+Pue(kol`1OEV@Ek0!c literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/evaluate-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/evaluate-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..48b96ffa9b90d000f276c40931d383d2e21a9a16 GIT binary patch literal 194 zcmX|*u?vDg7{wjpiX>Q3Rb`2l(ki_0fv{p#>R}njx}pdms>E6OCd1~!`!0o+UvN|=sQwzCOhBR7DK9b WBqAAgmr@jg86*P!b=bGXr+5QOJv_|- literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/initialize_engine-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/initialize_engine-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..80e812f58a256ec4a5254fe37856543af20a3f49 GIT binary patch literal 191 zcmZY2u@AvO6vy!naupVXFxbw*qP0Ft1x-41p{5Sf)+;Zrcb9q{`0HI5&A)tqpI-kA z&Ko#`%A< z5pfJd+m(tc1G68M7VV?60M6|i)a=7BvPH|!+=D?>lfp0zb1#wpVkz81BBzSVfE^rE KUw74(Zpc1e4LrL5 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/prepare-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/CoffeeScriptTemplate/prepare-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..9960bc16832f29de0fe8787679633a1a7392d450 GIT binary patch literal 171 zcmXxdp$@_@6ougl(h-J0kRWhH0ESIp%m}cgVg`zu+R9yM=+>s(3ErLtf<7nzHyYny zemPkMaOmG9(!<`XnP!4dokv%DWWdga;A^Q30UT}HB3_l(jwE)@)P$@5bI*zb5;rtP zD+|kCwygbgZ~(y=I_xQiBoAGBRS`_`RvXN+tcnDWH(M48f-j72QVLwEzS_<=VUQo? Cu{3u8 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/CompileSite/cdesc-CompileSite.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/CompileSite/cdesc-CompileSite.ri new file mode 100644 index 0000000000000000000000000000000000000000..2a86e63341ae226a15461f7da13cf8556c6872d5 GIT binary patch literal 300 zcmY+8Piw<448?mWc1Zuw(|Xtr!ylmQS-uq71$^ijTX*uwakbXeiH+mz^H0ebYzQPC zKk4aBiw{`89fAdT38^vu7|y*%y>v{8)jl-Qd3<*n8L;O{iMx~Y8Q?FFtl9>+|1mk5 zbn7DkIra^PObSN* zW0a2uZVujOrZ1W#(|7Ks6Q!A(JS}=~Xcyy>65nly^ zM0ql0GI~b@A;m0<@7CU1NYkcil7==^?C+i!w@O0*I^$2$n8lZx7OCeaq#>2KMWC{C zpSSj36xupP7=ghw=XU7YdZDSvMPOH0uBgO0mE=ij`oiTyNRH1rIk3)nEIck*7D3NC x+VOJX!0S+1c~utpE0*1$XMj7U>#*>TCyR$C{rpgPVr)g;@0gao;FtZp^$qKPh%NvC literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/CreoleTemplate/engine_initialized%3f-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/CreoleTemplate/engine_initialized%3f-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..2c58961b3cb43bcad36449f8b28187abe2c4df99 GIT binary patch literal 188 zcmZwAu?oU46op|2NyRP>3W8fEUE0pq!HQbw&_&|ZLDKfBm!?UmDWXqrz}5A@f4=eL z0`v3H)Bt<^F3>$pQ_hIxe2Mx_8n2|ukyP}-X2*b?vYbbPlmj^QXcP+Utdb4^{smi> z2?*^_DXI;ueo`U(cCY}R9Xix5fH1YPch7PJ)AU9PlO!oeIS>LsRp?q3M8FB7o!qxa0#27PWz(6FYnN^=)cbh+8*!y_`SjC z0<-f`mjL_voua+#Yd%#>@CiO8bNLyQcWoA1G=$t^fc4 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/CreoleTemplate/initialize_engine-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/CreoleTemplate/initialize_engine-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..ac81e0f0aa696af2de0efd49d431bb1775d92c9e GIT binary patch literal 183 zcmZY2u?oU46ougql8Rj%)Wt0>ieNimmx@~G&_(LhLDG8FOVcF86w#+Q;OKhzIp1J- zhRNxm8-Sg97w8`PT8)Y2d`5~K2}vKkpt_Sn2JD#Sd|i@s0DFsCVu_uR!r|h--m)x% z$n>?OM#KDv6vDQ>0q|nqp>iQasS(yas{lsnjU*;XQUy5=mn-HUaz2$*$Ig@Si(1;) H+Rx<|LB2Vh literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/CreoleTemplate/prepare-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/CreoleTemplate/prepare-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..877154e05133a2edac9a41cad0e964694b9349c7 GIT binary patch literal 163 zcmXxdu?~VT6op|1Q;aw`=;UNwbP?w3f>E1vU@;bWeS+7sMo=8;ho~$bemigizHFqdBp8!=b_ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/cdesc-ERBTemplate.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/cdesc-ERBTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..057dde684e6a120af92e85a2a9bb71414583cde0 GIT binary patch literal 669 zcmaJz!?_wFf0E z*}V7i=FQHoZ@fb9`BoPIkJ?s3-6+vC>9+KeVCU}ndWe-#g3tr+?mh{6L#YVhHxYY` z@6GWaHG>+C=e`fZzPAQ|i?kKiiI zeP`)Q&Vy^Mbqgtv~B)zUg{#$b`&*KDw#*T7>Us4k#(EG zb&E~J_TiW+cOs4oc^J>TuKhG9?2RrSxb^a$xke=7A$NVs|gFjk`wu` zX{?;^tlUQuY{|MIQ5Um%E>YY~yN>8By|TIc!jMO9EEc*l+<&=5kA9(<(QI3-^l`Yt aTl|k+3~}ksv61h?&$+~#u7P+fUHbwrxXm5_ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/default_output_variable%3d-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/default_output_variable%3d-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..0a9049cc3e5957687d125379ac1d89b46d82c8ba GIT binary patch literal 198 zcmZ|Iu?vDg6o7GuxFVMZw`g&yC2xKbSft?KA~re5oj&R4)Z=;=^xtPRw|?;PTdZyn zl-H>RIFIiF={|M!MzK8Hb=V81shJ!ZN6kxEC8Wj^1D0la$Sb7@AT2Ky4n_+?fWJ%3 zvI>0Tq*m<&+aFj6`)~$e*4=<3Ex}KWu=K1wSSP*G$T_dQJoNXY81TSiR^?%!m5gY% LBee2p<+pwSN~k|w literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/default_output_variable-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/default_output_variable-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..17940fcdd7ee031e5f3b770db176d32da97423b4 GIT binary patch literal 192 zcmZ|Iu?~VT6op|1Q;aMQY&vz)MVPM(8X@VxLh8goS}3uxKvQo`e0!TXyPo7f-)en_ zw7D%kz-9i_3LneRZZ%y!&e)@rWmzRd7ifsqw(QL!ULnJ(K5rpX3EKv HlVRmw(i1%{ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/engine_initialized%3f-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/engine_initialized%3f-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..7bdc6c74a63515f7c4225db92cddccb12366f35c GIT binary patch literal 184 zcmZwAu?~VT6op|1Q;aSS3?^<&8WUl@4x$l~4lJZj45o#v-dIXg%b-s$iL2|$pYu(o z7l^8J-vAuVyF~x!+j>Ea$4fMKGI%9Jo}{J^wg(0*FL=Baq&+}hodkAPOOF8m>OCt2 z%_!^XG_3<3hwBX+A9x&TQi&hQ1fAMB HHLl_dLX9~_ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/initialize_engine-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/initialize_engine-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..20a141af9c52ee4af48ea5604ebc4c2530e360f5 GIT binary patch literal 179 zcmZY2u?~VT6op|1Q;aMQ#Ko;HxCrxgK_es`SO`uGrp2q?SW1Is(5JVFqwC3^^UdaG zi0jkP0UXS`LiZT1?UI<_D>CFrYWm;>&7BM~U_~i-(vWrlMSX0rw^};f{HJ?XmJr!V zY3c@8|Ab18&&dLKZtBsv5Te}5(Y@LL7Ws`dW?9w-f``eL`3J#cO)7QXOL0`YQTes` E0v8%LoB#j- literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/precompiled-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/precompiled-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..177a75141a27126db90dfff69150eba6b333b965 GIT binary patch literal 173 zcmYj~u?~VT6aX1aH4+mBHn+OyBFv8kjgWL;AvkqvOO1^W+LSW*_hMXJFPFR3<_>9l zvkKrcz8f8$w&#fW^q(g`0X9>KPJEcHCkdBo`Mh*k-lPNX0mqbVAhh2@uNFV9|n=?6?a BH9PDD(hDeQBh&$h_SB-!oE{ z5ZaNW5(c(EsbcOmT7Zciwe0;I!rU_Fhc0>D1z<$cd23v8M>4@b&w>D7)+Xwrh{*9#MSL`xbV#u zH%OYR;Q;61T?_v-eYci~;Ei>H8*QZ${XJ}|nGy(4SrL3}rSbq}b7_UPih8m8`_55S zL2M_cBsZ}AIW={!$pQp)(qiy)hzm=dAG-*a#UprGmUR)qtGzOus_}qw)DoO1$x{~xIkUX3K literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/precompiled_template-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/precompiled_template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..51e402f39baea9d8d4bb5cd5ab5106501ae166b2 GIT binary patch literal 191 zcmZwAu?oU46ougq62&4obP>0>D1z;LyHv4-3|*v79VAI32Gb^_w}WqQMMu~3ANVG- zD@2#Gl>o=?RVsYgre12o=*oE|ZR@mA%?(xS3`a$Ptkq I9K86fZ%GO~!~g&Q literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/prepare-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ERBTemplate/prepare-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..5d01d77eb5b0723fb914e6d83172a4b7826c2cb6 GIT binary patch literal 159 zcmZSK2(=Oka>-A&vU1F;^i3_v$WMtD$Yk?W;wdOfEl4a%WwT;)b@Nn`3(3qWv9fXv zatcY!EyzhMNmYg^ux4{}v*Io&P0Gnk&bN|=nC6>UlwDe2Wd$_4G&eP`gx!kU0cc!F vaWsP!mqS`+PO5={K{SJ>61#>b8_)z#C6S!WB>fVgE&8cNNqR*|K+zBY1!pf< literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ErubisTemplate/cdesc-ErubisTemplate.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ErubisTemplate/cdesc-ErubisTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..15828e55120277d9962f2fdb0fec7d154c630f9a GIT binary patch literal 1120 zcmZuw+iuh_5bXoXmhA-usNyCuid00UlI7XqvJ?spY7r`hmprVTWVW%^i7ne9TE3of zl3uoD_aTYr%$ak>Gk4a1v7OV;DrfAwG8LDfB)2x*7C{m|JTy%v>={;Ca)$v64!e=PK%t!>bb4@^L+6S;>kFK4vuHG9RIRD7b|bbi)!aCn1}Ywn;`MZ_*z;BF z4{rFm;kpbcJW9g7zAm^y6bKTBo{c-9>Ii-!vLFu5lJI5eoMw|r+qTi7X}ROCCC{Q< zRTJ!tO+4;a#RJLf#j&VyO~rSIs>iEt!8Tee5)Q6Jm@6q&E9!ILMIpQjE&=l^l0eO1ZXUdNfBM#5hbtuL~R}N0@S=ySKypC(!s0Vjj(Vr z0R3~h7Y$6o@chcq=3L{fbd~hfZHZ*oG`N2~x5E_P{1RFrC1mJj6~OI4^le2KefXBI zIQhTU2tE>Bu4+fKF>syS@yp@i9VCRZ!*0Wy_CgFW; tkXAsG^y2FD>9y0DRzzE6vg7qKXz5qt25*E(7t$tQCdAubVSF!L`v+mYSvLRx literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ErubisTemplate/engine_initialized%3f-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ErubisTemplate/engine_initialized%3f-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..387dd737002d35eaf84be000637ce99c8b5a7b0b GIT binary patch literal 187 zcmZwAu?~VT6op|1Q;aMQ3?^=!bOGk;ASOb>z+&peU?^Pm#!{M627P*)xVoO?Ki^_` zh4^wFJAjjZ*XW*O->ivMe1rNy8gHb@QLE^K{gDAH%8Dm~lmjU2ENK!r7}Yui_!k^l zDIhYlRMd^I{YiCeU$X)5>^z`$Aw;=pt(%$vR{5P2W?9w*6%TiN<{v5^E0U@6YKm4S IR{B+Z0YB9`+5i9m literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ErubisTemplate/initialize_engine-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ErubisTemplate/initialize_engine-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..1ee1cd2ce52857bd0ec43eae1e76abbf01171fef GIT binary patch literal 182 zcmZY2u?oU46ougql8P=4#l6JbESLyM2Nr`9Q(J0mywIk!gKsa!#r5RR`Bs}d zq_?Y)0GH|AD*rS?pJ>8pVx5v^v>MewfYc46$4;XMs9g|x?$l_Jdv*BlO42kC+aOR& z1N+}`%iSwjfJF(Tn*18#%5vxDK7wuaSb(A^`iRlp36119XQU(@qbX{U`-RMv6K5yB F>jyhiHqZb7 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ErubisTemplate/precompiled_postamble-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ErubisTemplate/precompiled_postamble-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..6e9df05c78ad464eacac1980954a85d6d55b3fe7 GIT binary patch literal 196 zcmZwAu?oU46hP4q5=9XlI_VY{U2NyqrGhPF=puFMAW0fA_|k+V9sGMMuC5m@XSTRO zdc9Z)a30=`ici~j8%-G9I?A)h literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ErubisTemplate/precompiled_preamble-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ErubisTemplate/precompiled_preamble-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..919a5b7e3e5ce42671aa8d7c87a33e9b5170162d GIT binary patch literal 194 zcmZwAu?oU47)9X@62&4obP>0>=+bunyHv1+3|*v79VAI329qYF$>7@?ado>KxO|J% z4YKRSaDeml?u37uao9>k@Xk8HjkZ#W@g6tTObG<2X$j7IsXRdA0+Vwuv{lrL!{0-N z+7?n9n3CMU{zrAxy@CaZZqQ=#OGs-=ou7vU*7YNjWmygh!JDHpoT~YRD%2C4Dai^S L?Ls(~JNB&~J_bH8 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ErubisTemplate/prepare-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ErubisTemplate/prepare-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..668e53bbd03c7482291c3ee9e1104fb141e6cf67 GIT binary patch literal 162 zcmXxdp$@_@6ougl(h-J0%%La-46DAFk+3EeGo+}gbzDM2w>DiXczc=8L`lPF|%|egWU0Fzf&T literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/HamlTemplate/cdesc-HamlTemplate.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/HamlTemplate/cdesc-HamlTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..a6ab58563a6bcc076554c9fc0f7a07cc1b1ba976 GIT binary patch literal 562 zcmaKpy-&k15XCznr)t_tAW=StDhzB5^Ld~WP>}(IpiCJmCp}sV$F^Lj1Ajf|e$oX+ za%BBp-o1M{YJNiR{n3;Fuf|nEJt(nQfELhU1nhgLYh$eH0$#GCYn>qG6EaAM|!oioBwmfVJ6eZR@k zmy`#Cm+;c)LH`307-!=wxtV)!Ax-C`AJAdF(WUT8>OpC$G>D)z{E`Z@n?Aso+u1%m7xm)qnv_3Z0kbFGG~FEqn=5P6RD+_LdhST-UsFIgp^(DjK|XB zl*}S%TPK%PVYpCHQZKyFC2oy*oX0DGOQGse^~NVldVBlHdf=X2T8FfjrFEtgYsj-I e)SquJ4!Fbr@V4B&J7q@tQ9D204(WL(Z~OwDnW-iK literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/HamlTemplate/engine_initialized%3f-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/HamlTemplate/engine_initialized%3f-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..ed6f88e9345487d367a0a96ebfd2514631dfc3fe GIT binary patch literal 186 zcmZwAu?oU46ougql8Rj%6a=?S3Sv872PS9Vv@CBL&8N87pM@rKN>pcT@$^_p?(hlIPS}n1)S~&#xm+x36 zA+kfMsp??)b8^)`2MgfQp+)0Dh*GP1_bLLIq<7MoBuNnn9V3&hAvX4PDzb4^tB0XD){e>2yVyS@qMGo z9hSGVE&)#MJCnB3k7A(+qjUMf%-xS%mpqFi~O$7K0OmDR|1oqcm6s{q;6+bp7(?dq(36 z%+H6e2H2Z-j;`r$<&1=qOETn0Gkx%i=0OGph-0Q?R1iCWlWw`d*0OfE{%?08%V27U zimC2k^&@iKKL-ooy`e?pLYSsj_wH2&FiG#km?TLVC>d@d;UAP-FjcYhVBC0b+gE-r EzOy+vumAu6 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/HamlTemplate/precompiled_postamble-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/HamlTemplate/precompiled_postamble-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..8e2ab0ad17088f80429c1a638ac6466b96c3311d GIT binary patch literal 195 zcmZwAu?oU46hP4q62&4o=%QO)bkKHwT`FiXgNxLugCuFB!Ivha>EPcRado|1IHSoO z7PpfT0LSiqmA*AiJy(P#E9;~%+A5UI!rh{*9#MSNabKo0I z?y$I>i~u-x@2m8!Y3jKmG+9|Eh0#`_Y#w1V%~28{=aMG-N}&h1FpZVe7MYiuzxSM! zCB$~%sDy#_54tk<8Z1Ci2Q524hPbfI`M!=|T08@oWmz53WVS^k81_4olZqxwR6O-T LPTK$<9RKDI-Qzv5 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/HamlTemplate/precompiled_template-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/HamlTemplate/precompiled_template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..5287e3a0709fa8eff18ccad817dd85e23af848ee GIT binary patch literal 408 zcmZvY!Arw16o)-XoDRW*9z+kZyC`V0DtLIkOqj)jg(3CS!$`Vp4NIDkrl|kDX)8>@ z>&x$b-^*`*^bV(Qb6o;F)n6HRm0lGm0;R#ZvAopE2+3DV$CZ)PaRlf&NrT&5NC)sj zmCS!$CjZ7`lq4`VEt8_ua50E7YPYQc@YYuG+8w}nW~g;dfiztH%`B*;8%s@v;=^K; z2J^-4D%|;Tqgz|@5a)EuYrM8vVOMed`7jo)oq=$jxl|9l{ocM>KwBZ@YTTOtJ;hC8DTEt|YXQFIsGKXy1cnyr10)9JL> ZOM~NUsY@!Go56I}5u7iy$N1H5{0(oQhO__x literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/HamlTemplate/prepare-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/HamlTemplate/prepare-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..e1d40b8d87fbd6f085e601ee5e4736005018f1c0 GIT binary patch literal 161 zcmZSK2(=Oka>-A&vU1F;^i3_v$WMtD$Yk?W;wdOfEl4a%WwT;)b@Nn`56R3av9j_= z%*_c&%`M1DEJ;;{sjy~qbF<Rl7PY?0FH7nYybcN literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/KramdownTemplate/cdesc-KramdownTemplate.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/KramdownTemplate/cdesc-KramdownTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..a18c31446ae25468ba6b44fdd5f07843a56b92f0 GIT binary patch literal 517 zcmZXR&uhXk6vsV`RQ$ylY;3rLbjLxv^UGnfsZfUdWj*yEX^k38(~zc)?XTYpR%Psx z@c4f7dEfVP)||uD=cvd4UJH{m`7BvkCOttS|MJDKd|7;{nCDtD%L$P2B=Y;QkQU&d zN(qYHqZ!Kr`g``2nQf&3uu+wBWj$yQH8ZwMNI^Z1Ht~krzutFd*xE3?At-y1e}8B= za5R@|ATSqqJZ43qg29Y)Ae6+Bf48w#Ll|!B5du@C->br`d4NagOwbyxgyfNbBSjio zoGHv}a9~pBpsk0bk&vVr`RAkg^l9-ie~ZU6lqPlR23m#}X!2abR_2!H<)d@rYY%$b6qaX}FC7Xx+K3(Q+ZDJ`p-RhC#t&fHc6b!{ fj>*dXOU;S=s}p{)Z+Oy>%5mpMH|;n+?Iw+1tn`?z literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/KramdownTemplate/engine_initialized%3f-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/KramdownTemplate/engine_initialized%3f-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..413bd832c273d0e74a704753e85235cd17a286a7 GIT binary patch literal 194 zcmZwAJqyAx6ougql8Rj%92B=sy4cLu!3tU^(naFbLDDwr#e5M{M1Q>zSLeffp26@0 zljF{`09*a4guj`t9wRB!snA!{;*1(Sa*1!zZ3vKkQKpok^Z*CPRcD@>31ubs0^nb= zCIy4U_Kn2W!2D-b+}(Q%5a3=3?PExC%bkDJ5sdN+NcLE;Mx*dsdtkzsfDGRe=SC73a;*{ z;H84qPnwao?lpj2=p}2+7~DjY)^vpf)8xSgi=wD-u)p4SrP3_$ger;X0&hocst+he VIrf)=)6m!hp|rwb|Jc$2eF3*%JWK!p literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/KramdownTemplate/initialize_engine-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/KramdownTemplate/initialize_engine-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..bd0a5b3b108d20cd1e937aaf05e300e82d06532a GIT binary patch literal 189 zcmZY2y9&ZE6b9f9l8P=4B8XdDbkKG_E)}#8q>I$4gQRWLgSin?M4#S>qw|0Hdi@iO zk2})0goM!vYV^n@zQtMSD{4W2>~ls}B}xx)a9p+KsY{`(y5M1}3w JT)R3%=V7`bc;=eZ{&Ug3RWO{|= z~bliTQcD{>I^8sYD BGxh)g literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/LessTemplate/cdesc-LessTemplate.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/LessTemplate/cdesc-LessTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..5242f705d8a0a1fa7de24e017c2a999caba939b5 GIT binary patch literal 570 zcmZXR%}WC@5XF0tZ0#3_QVV(rdsVuglY_--VWEm>J?){S+p&#JlaOQ!`qw+LwM8U{ zko+d^y~!Na-&ptM-js|z8MhW{sD$@LN0K}}8H4u|SX(6m5JnzGd3rvPDlqnkaDw1; z3-;xBY1qY9`BAu4Wf?=8Y7IIhtU0j41z!-ulZ4lcx?z`pYoCP^3n%Q7AWri1Dq8x| zdm46$sKjIt^+b?H_vtGDBb-d~w6_ewvMf{h2A}keTV#>^bGcJOuf|eC&G6&sgl!L_ z)856?xuMzw>MLuF3)IX$pu}ToEck1xOeqxZ#?em+YTl1NtTA|(3i9+!$ypZg%d!~5 z%_8K@o1*r!lGs?Ij6aTGRA8g5X{(u%WkDkAfnH#^snjw^q2w3LZ)4@4ijr13_Y97#nVZ1)V*ka7TLv{qnelynI2FW<33 zKxD>RQPacn=ah1IjRwG@V~5&>5amV=&Q<};@;fQavaAYt60X+FKky`0RHx3HX=Ckn HsQoIwvGY0= literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/LessTemplate/evaluate-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/LessTemplate/evaluate-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..e523b533ff237860a0425641ae409dd822a8e085 GIT binary patch literal 183 zcmX|)F$=;l7(_cr6pP@{O@|Ue6pHQqb*Z3*f?cFeost+aG;KnY2>yE`g4=QTcsH5d zAiACu12_)vn%k$kw@ZO4yx=b)9kCn%I+qoW8zC*gg&WiGUQ54h{z#6>5<=~$6imVD zC#=cXISt_LuIGcDLRe@rTGIwFFCIejEX&%U!t0%3O7kR^iVsp literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/LessTemplate/initialize_engine-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/LessTemplate/initialize_engine-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..d0e9ddccc75c9c15c207b3860d1f6277b7290db6 GIT binary patch literal 180 zcmZY2u?~VT6op|1Q;aMQ#Ko;HvIz5a!9+=#$YO9}AO){_V<`WToNqS2 zLVP(69l$}qOLWiSRxgPOz9LPIq@oWts2`+}0Xr3fClx6Na7Jq@?2VERH~;OP6$M0Q zY87<@tbar)$Jb;4yf^izT?kQb-A&vU1F;^i3_v$WMtD$Yk?W;wdOfEl4a%WwT;)b@Nn`56R3av9j_> zEiMj8%`M1DEJ;;{sjy~qbF<NkGvM0A@xoCjbBd literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/LiquidTemplate/cdesc-LiquidTemplate.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/LiquidTemplate/cdesc-LiquidTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..6ba8bf47b1d87505900b07f8104adbb28f360128 GIT binary patch literal 1007 zcmZXT!Ee(r6vlTz=~%lSKpG%8yoE!>hFZkYk)UE@QlxOU_mVCa- z(-${V1;+lVWeJszcT!p!_Oj=G;qI=rjFCyZL>&ffIJevdUnC|Q46?&wWZ0{H?Kkdt z?YM0cDi8AXO>YNb(+f!I2_uaMY4j9+AhIM&Zu0cB3Bj`2Om)pqU0bdf#??5b-z-Z0 zGy9~tzPpwh4@~wr8Xo28#l}#25a?yCQ9v+IB5*kKe1T^Vz4*1KzJP0zG!DrP`&O=m zK@Zvlu+FTcKoHVl6@XV2dLM!K8>^NFUMd7%8H;`jxd!6|I;!`aOW#^+9PNYiPIUg3 zoN&8^nKI3R;Zwb*pSJpmf-8z|SL@z!V|bscxS4(7HY=fxg(*ZxM_ zb56H${^ibfLQtp|0uHJ6Coz zUr2>{`b^1k7AWGo0F{xI4c`?9-8YDNJgVX|p~6)``D8=emP%Gd5^K+U?5)%?NUr1` z6d$8bkL_a=<0m<&o>yJ zV0zrO6~NZKa&))0E+)hTpQE{w!7~|hq%^&;-Y{VMOz=pOb^r%@^i)f1tX2*I{sn86 zNf_I{)Ks;w_({3y?!5)@Y~P@9A&gV2I`=FB7^N4|m?TLN2p%q1%s&V|(^SUJtFiu~ JQCIpwegO98JSqSH literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/LiquidTemplate/evaluate-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/LiquidTemplate/evaluate-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..0ea0eaf417509b39f19255fc05839c56e3b9e413 GIT binary patch literal 194 zcmX|*F$=;l6oflS6pP>>IOtF!h=OS6=Tbon0lP?@I;AmU@U@9;BKYr(3T_AA-N$u$ zXBeIKS^(_oS0?REUy7k3j1J_JqvKW*AcvGunk%#bNA+;(lFQ1VXS084OVSiV<4ROQ z!{n#Tcyo6K!24Y#Yukk|F}$&D5kNn=DwJ`|Xh8h92pF9%TA__xMW_YGb`{M_pYBV~ Ub4JIg%8m6WHu(LpZpsgM1J3C?S^xk5 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/LiquidTemplate/initialize_engine-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/LiquidTemplate/initialize_engine-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..c4158605796320d81145bb281e40ad326599c77f GIT binary patch literal 185 zcmZY2u?oU46ougql8P=4qJvvp6v1}BE)}#8u#42GgQV?MFQ#d%$)Hbf(9!w)oUhkE z!T7jqD}b$jWoU10U5tncJ|Rt(q@p*TQC~?T1GY~EU*)7Mz=0l)>Kq%Rq{aDvyMO3h H(hvCuzsNd( literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/LiquidTemplate/prepare-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/LiquidTemplate/prepare-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..5ff2531350c87b1c87859444f2d0bc25e6509c5f GIT binary patch literal 165 zcmZSK2(=Oka>-A&vU1F;^i3_v$WMtD$Yk?W;wdOfEl4a%WwT;)b@NnG49UzXv9j{X zEG*4T2}#W@$Vn_oRfegtW^;41;w~sn%E?U5w~~e!=$lxSU0Pse1vI@hH#M(>-HO`* yXktlmG=mkFLt17|s)2z)G=rxSyM`tk&;(B<@tn*g{Su%>`Z-{G^oo*z5+MM25i&dg literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarkabyTemplate/__capture_markaby_tilt__-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarkabyTemplate/__capture_markaby_tilt__-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..4b80865aa09857e6725f6e5a787710221abac031 GIT binary patch literal 207 zcmZSK2(=Oka>-A&vU1F;^i3_v$WMtD$Yk?Wl8ui~PAn)XElQ2gO)SbzOsb48$;>H< zk7u)Db9M7nG7bUqtgL(?av`a?1v!Z&smeHYS+lvhS#cMXCgo%%=UYib>;&m9EwHiz zI-oQ+HLrx-irb+ev8bdtn!$?8AuTf})xf|Yn!!_vS3@l+CqFq`lg*kf#8XKkCo@SO On%(n5`m4`@m|@b}g*Ip1^7S*@S2 zf853v;5y8ea__OLx0*1zlU`$|Y}2BcCIaMMGMaLY4xkeDBjn6gZ%{Y|@XuaI$ssXb zqHaexF8bfc8-URAy&7B$NnwO_QysykcxhC5p4Snh@hK(2z~}+B%v=a&{n9&I85aHp DJxDl0 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarkabyTemplate/cdesc-MarkabyTemplate.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarkabyTemplate/cdesc-MarkabyTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..d2926d7b1c202c2309b9f491899ad2cf618d9339 GIT binary patch literal 518 zcmZ9JzfS`p6vsOluJ+mv)ijMi76!+j^JB1y+Jr%4Or01AN3kVxcZB1b=wC1NdTlfe z1U}#QzF!_^{STPFKUEUowQ_|pk4Drr8*4=I<%@7%BL7~g!W!Wf0`$D3_-dt%2lx*O z3hbg~$BJ-S!FAg|7Bm(hm^FneeFEvi3g>HvDv~6mA9lF;t9=trY@D!L6mUZE@ZgFF zT2Xwr_1;33ZM5Gu`CL{-Rn+a literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarkabyTemplate/engine_initialized%3f-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarkabyTemplate/engine_initialized%3f-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..70672def6b7c2c6df46ae6fef085272c98a41538 GIT binary patch literal 192 zcmZwBF%N<;5CvccQ;aSS4km6)x(M?*h>4Ogu$VeAm=;dGSW1J(fWO`vR_B-ZzBid( zVR<>V6~NIB1@g14%LR!%TA_WA#T!{-QieWQ9|VYVmPfH9!vKZqUP=!V8)p` zWD@4C*M_PV)+6<6_71?ieS?-mn5Ry4{4N8SrFSxzBuN?MQMlO(zu?~((lL8BZbo(2 HX`je1ctbqu literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarkabyTemplate/evaluate-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarkabyTemplate/evaluate-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..63441a7d2580c459c82ce3ea59e21f687c2237f3 GIT binary patch literal 190 zcmX|)!3%;g97a9FiX!OHA*h2)hyqE^KQ9I)c<>T-^0ci*!|8@@f&YCIq1y-V@x9sN z3ERg_F@S436x@8&tJ(;Z<2C;hX^G(o&^^m>Pzq@P3ewet4kd52bTIf^3Cc29X-lPG z3ii|IXj={70=D6;nZqj8q%(cx!7_ad$>TV#yc{1+JyV*8zEq6JKJ<^&t@?}-ROWam P1&xgBN6nPKbaW&?CHgy3 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarkabyTemplate/initialize_engine-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarkabyTemplate/initialize_engine-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..6535a3f8739a62323f9e86eb3674460eea53360c GIT binary patch literal 187 zcmZY2JqyAx5C-55l8Rj%LDEgi1@>wA`E z5ZO*?sv1}h%5T-A&vU1F;^i3_v$WMtD$Yk?W;wdOfEl4a%WwT;)b@NnG3dzhVv9j__ zEXqzystifZEyzhMNmYg^vSxF0v*Io&P0Gnk&bN|=mgB}#odFo-L-P;zHCLv8H`q%ri>V{HC z3EvN&_wqgIzQg$S!IS{c##KVyD^b_^NU|(GdlIhMHgl}35*`__$5|F%%%$=G|1!=f z8Xi!(8n|q|L~a`kKtq}ewU3}bwZi#2XNE@+@6sQx{<1H^iM11U!zhlj_@*5rP0ac4G|b;^DMsJcyA$138m!|*A$;CX87P52HYpHP|we(Ub`Gw27Ku%AI99d^P zmL8WRi(p`#+)dp|lOQG5Yj2adkfV&Oe!6 zU~xX07T}=Ym2?l&)pI0_E~UPsmRHp1P$>M!Zcl)mN=8$T$^lej^u6bDuu3=y@DJ=r z$sw`6QP>(-|4IS&-U5WIAEb6MB!v~Dd)5)miW@4K=Xo758gI5FJTSUa*kmqLvmw~d KymUG?Vd7tTsXY_` literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarukuTemplate/evaluate-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarukuTemplate/evaluate-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..7ce5927d90598716c220cf65b8a3973af4227e53 GIT binary patch literal 190 zcmX|)F$=;l7zG_9ibZg65gkedQ7E?a*QJ6MGIWtTbxP8Rp=lG^MDgDn5!@c!ac?}m z!SZ_69N^Tw3t=C+t`-szJQq)@9JK-gy5t1oQYs5j(B3t!6s=L7ZU0h=@*D!=n37z> z`j_-_;|zfByH<2|0zqbIZ-;6Gv+ORFNRp%)5xm(CTpJOEN^`1)DBLl>ngdEvN$^TZ S7F&NGw?0_wS9k2$7kvOHM>~7~ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarukuTemplate/initialize_engine-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/MarukuTemplate/initialize_engine-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..fed9f2db0fedb20d6d2aba8ad0b783e064569555 GIT binary patch literal 187 zcmZXNu?oU46h%8oDt2)YLEP%12)6Tcsi1`nU8GJOByFGiXqtqYAo}$N9G&ky=ZwY| zn4OQh0XV34f%c)>YD$d9b5dkUNc!Lv)twYFV5gkN+mfUOD8%48S7L9Zu(b^;ES$DWkZNEBL@4d0+?hsl9;Ax74SG*Z-A&vU1F;^i3_v$WMtD$Yk?W;wdOfEl4a%WwT;)b@NnG49UzXv9j__ zEGo?|4N1){$Vn_oRfegtW^;41;w~sn%E?U5w~~e!2vnP0T3}@bG`%!8HLrx-irWEb zVo7l{gB6!UT4qkFfq_9ZgQpU^h9(=(1WzT&oXjNs5}-x;xj?-s`Q>?fMM*%Z5CG>t BGbR84 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/NokogiriTemplate/cdesc-NokogiriTemplate.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/NokogiriTemplate/cdesc-NokogiriTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..fee9a661687f20df74369c7c47fd4b135b99c775 GIT binary patch literal 574 zcmaKpy-&k16vR6qr)t^`ASy~3s;o#2vprA=sFZ;UL76gCPWni#I=1CF9r){c?pG)S z%3#I6^WFLRqWwt+@6S4?bgpg5<&)%9mG%WmqU*Wd=t5YrfYM0rfKc)>OQO+2Nayu` zC?g23_V9EBH#HsY6JEL9)P_=wt4mNWpyAYT>#CG!76hz~E4@3{zH!S7%gve~4wC5p z7&~@{R%3zf!25A0w3>`R04QN(kwn9_bB4yTI#iu#Tf`pG&h$%2K!p@p?C?H~#%5l@ zIuB`U_XR$-ll!?Kn59^QhNjM>$W!9k4X8pWSPCVa;8J|U>d`Bwm#FL;s~zMHR%jN` zuCZc^qx3&X)Dx<5T;*^yW?>rc0BpIe{m2hKNi=Bem;1nm-5LwIE)8C3wKN(%%S`?{ bJ3QkS{=>(yHtyIN@R?42tn1seUfTKr(qOJ^ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/NokogiriTemplate/engine_initialized%3f-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/NokogiriTemplate/engine_initialized%3f-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..a8ac0849ea601adfc70a44d9ef72e83e249672bd GIT binary patch literal 194 zcmZwAp$@_@6op{~=?F6j1O!(FhE-n#BY`CqLy(~+NVk=7v#xDQC*bL60up`lpKm<5 z!u)bHHNZi?a_JwYDQ8GHT}a)cmN(SsQ7C-NW>0{eGEP~6$^)EDXIgYv$lfa9CBVOA zN3sH9J5&m51FNr<3)c-6AizT}wT~c9t#JNXj$oSJQAx&FIpQ>0Z%BCHbg8gPd~g%} KW4EpfQ}F={Lp|aE literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/NokogiriTemplate/evaluate-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/NokogiriTemplate/evaluate-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..c709f99e660ad9e5648025eae1d3245f37913c07 GIT binary patch literal 198 zcmX|*y$ZrG7)3is6pP^CB07{PqEKw-&!vJEGSorp)G3WoL(?X-iQwBCQQR(^`_~&> zU~)bv2C#2l88;7gEye;7JmOC(Ej1hgI;I3Kb0H1DNmc4DT9NZwOGg)f+YY5E_}Z3I zFa@)3X-3=1Y5=!jYu=bX_=%>i=?V{q$xTQe#{_%Gg$s}1`MP6D^DvN#QQ3vTs&uN_ VIGz(cm73%WU&OeI)M#-HN#&KK(f`_X$>mLN4D=H)3qmllZ JTUYi|{sGM0JU9RV literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/NokogiriTemplate/precompiled_postamble-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/NokogiriTemplate/precompiled_postamble-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..de1f799086d3b12d151333d1c0a54c61a41c740f GIT binary patch literal 203 zcmZwAu?oU46hP4q5=9XlT+}Tty4bqDE)}%Up$<}~4w9r%LzBLcrh|WPMMvk$EORNqNCfvaeOzP zUSWAT8Ub+VUZwO;)6@$^ig;z66h>QxvblxKG)GB*obn>3l|m12Hm!Lmrz)u}GA}oO zCn?Eui0r^o2?OgdRx;NP79hxjmYttKlv(C{Uyopx-2+M~tw%*X-=Yx=`yEM16<(p@ Oi4S_x{qVixpXv=DVnH|n literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/NokogiriTemplate/precompiled_template-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/NokogiriTemplate/precompiled_template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..383c7bb049263a0dffd2d16b5230fb71e8427942 GIT binary patch literal 201 zcmZwBu?~VT6op|1Q;o#L!Ns`YqKkCCESM+>0}ckK4yKf<4Tam3GWhn^$msm%txE~I;5&6bMf(b`xkur*4{`tD?FGv|TzJbieSQp$onTI@6muKPVnNa zzhu?g-W!16`vFH6LsA6Oy_yJS#hn!9dEP{V$D1t+g5WDfGIJr7jla^)$}rU*WUe#x literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDiscountTemplate/cdesc-RDiscountTemplate.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDiscountTemplate/cdesc-RDiscountTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..0630cc88c042225cde16c1bf26ac71decb5b84c6 GIT binary patch literal 805 zcmZuv!EVz)5X}MEY0~Cc716^eH)JX1yp|w=5@abLM8nC4Xl+lECF@;lcU&l6&#V&? zp>mvkGw;25J1>Uc#r3y4TM6;Sx<={`T6$khRFqHoUHQs(hSu1$S`tPg`nb%ew`-+I zi05z?F?x0C=F*B+2lmg>?YmY8mg*Wb6pQh^m5zK7*({E;VKKDg_TS#G(#frp?Jiez`_q78V;J}(DQjkMk0_!nTIbW(JEB&k=~mIMD`%B$Qb)FtPkWoX`nXtV zeJ1-}OS4}og9Dpg1nFTuU7nT&j)AKu*C$d zJGfdV+E!BgWCrUULLz*_AtWG8&BcLfv!h1yNE=r2z?Pvz@JK+e!voJ-vVcaG8i97! zBRpui^A6U^W%!|>Sr7)kq)T&I0{ikfBPju$W(2`WAy25;_7_zpKmg~ zz@p4_3vg2JLfD7y>NyfdmqOi9i7P6!$R&P6cO*d0Iivdur3EN699!*_twe7mw*uf_ zb0B#Ik#UX0R>S&-6?}L)1K?%X3uQxyQo{#3)&b1Y8%mKRNgXg6ZnnffFuIc1#MZ-c O@7qql)NW|}RDA(Vqdq+V literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDiscountTemplate/evaluate-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDiscountTemplate/evaluate-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..ac85edbe236178918d6422ae50e0753a8cdc3f65 GIT binary patch literal 193 zcmX|*!3%;g9ECl^iX`aJCF&rHqCnE~&x?Tx9=wR1Jk7aiINi{#=)Z3fbbIhUzV{}x z8?1^%Qh-bU&Y6D5rdo28;RSmVVTfi3&^68QzT`p!6bT=xG`%iar-a43e=kC53a&D> z;8eoqXU)mb8UdJf#2t literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDiscountTemplate/flags-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDiscountTemplate/flags-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..645e78d22da5debf66d55e2e688c54002a6326aa GIT binary patch literal 166 zcmXBNF%N<;6a-)fQw%H)F2=1cx(M@g!30SS}59B+6G=@{P#9tzPs->+b8Us z()Iv%^Q$Gk?a=KMVKf;ve=P*aqhge{N+Up1s-?HyU@Ir5Im**ox{<1a)On#*Z{fIl zHJ?A;0R-Gn(qIf};rNV87eP{tO3OUYyNJ>Fd?7(#^q`fBYQMHgVcE|?%m2Nr@8gDFt;#?m&>#^}@A#L@ZWKi_PA zfmN034&bETrLYg(H%lapu2G>yF7YF-Lfugb0_0pU8rLW-K$YXvX{T&01|zu@yZ_)w ziUK0zT8W*8?awLs_;d!qqizt&h7e_jk9KMTSY$VpB2CjKU^Ltxh<{*oBe6}aSChfF My?&{9Z2eS!0SuNrlK=n! literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDiscountTemplate/prepare-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDiscountTemplate/prepare-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..95dc32282eaae87e82b3e1749550870ef792eb8d GIT binary patch literal 170 zcmXwyJqyAx6h%8oD(c|iB5u(^7u)%{RH%gvT}qug_2Y@bGzsYo;=eZ_&iCANX7f92 zs@(JdSN$oGo@Qv)k_o=D4sGj@0lO7~A8M%xpvvXc8?ULx(W;hk|Hm$@C}3%Qr(|zn z_j8u5dwB~G0)9kIF)XtnrKyQvkv*isG)_IVfoslD1EMm?j~ngMPgcSJ%ru=L|<@ zn4S)%0odzTf&OmVYC=r#IqDl}ypSeOQqddR9RqgE1z(q>Jir$#v9n5g1o(H~vb==Y z_O+tMz~a{_q+D8y)RyzNz1~AU9q%cj>Y9M&DT(Mvfe5R;Qd}t=FHO9osu+SXxfA{5qx`71h?bvySvHk z0qgr!F@Q_|DY<>Ard|nD;3a<(>4@bB&@C@;SP5wXMz-RemOk14krd@QEVQFiFa_J+ zU`b5tG=Oioj`wy7i%b(^hdO|H_7svQNm2&|-W>;~G><~57?DF19;jFC38kni@J0$6 OTYny#MzOP@qx}Vn1vst% literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDocTemplate/initialize_engine-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDocTemplate/initialize_engine-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..6d3e7e3ba3c14dcd1222134a938c5a9e45af6534 GIT binary patch literal 181 zcmZXNp$@_@6h$XUN5CKegDZv^HvKRofh83)WT*+!Z4Y>%Yn##u_Wt~2e{HDRtk Dr$soN literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDocTemplate/prepare-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RDocTemplate/prepare-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..622169dfac844c0a0dd46e5906c2e4ef85ed00dd GIT binary patch literal 161 zcmZSK2(=Oka>-A&vU1F;^i3_v$WMtD$Yk?W;wdOfEl4a%WwT;)b@Nn`56R3av9baw z4N1){$Vn_oRfegsW^;41;w~sn%E?U5w~~e!=bKoRU0Pse1=LWQo0?a`ZpG~YG_RyM vn!$?8AuTf})xf|Yn!!_vT|<)%Xo9DbXijF5ehJVT{i2loWWAy!pl}EPgMu(v literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RadiusTemplate/cdesc-RadiusTemplate.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RadiusTemplate/cdesc-RadiusTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..eb150f29a350dd22dce7c17acfcd3a8757c86c10 GIT binary patch literal 522 zcmZ9J%}c{D7>9R|c61-eCR5Ra6wj;YHwOpmpa(^yo_Z*08@pH2B&6vO|9X>kUrG)k zd474H?_r@(p0THi~Tq}>!deF zf+P-aSH>uaq6*Eb&F6)zqfahH73t0OBae6q1d9*kEDp~(=8>^4*wVSq9VfwE+S?4@ ziGsp)!GdLK#V}B9&ap^0Y*I*J*tf~{nZ?ANxnQC~!7>zRkaGNC<-M!mD2$bsh82dD zR^r1@XL VHMGiVY#J2RE=Pv$4rG+}egXRgnK1wW literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RadiusTemplate/context_class-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RadiusTemplate/context_class-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..e0132dd65046f4fc6544c79e807cb7c81ad4a16a GIT binary patch literal 178 zcmY+-u?oU46ougql8P=Of`eP8y4cRwrGgeRbSZV}AZZ#gm^LA~0eyRePR{4>f3x`& zHqF@xfYbD@B|gm1trTH&EzE@Sg*TzO_XNnLVl-=&Mu3J7D)?58R&$g9|JNg_T3Fi9 zYb6Zqe)XEWXRrW~3ZtAbg=J~EL*FH^DDO(kqA0qA(KOqWSYULkRi9(@a`)v9u8%|e E0pbWZz5oCK literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RadiusTemplate/dup-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RadiusTemplate/dup-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..9005736e7b84bc04bd7a6e1a04d6d31151c2136d GIT binary patch literal 157 zcmZSK2(=Oka>-A&vU1F;^i3_v$WMtD$Yk?W;z%hiV6$R#b@Nn`4av+Yv9bzEOvx-Q z4oS@|$Vn_oRR+mhv$?rhaTk;(s~1QZT}ypOEw8B2p-}ji-GKl(7mOwxl>?|mhkoR;H%d4O@Gsbt zg2UYSMqxX^<|mcHKD_}5tna0EG0bx#tQ+eHX88@3%(ASG7>&0(5*`>`DQr>~)YN{_ I#5Q5zANGAbDgXcg literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RadiusTemplate/evaluate-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RadiusTemplate/evaluate-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..f1bbc0dcab5df8abff2efea467c3d5920c676333 GIT binary patch literal 188 zcmX|)y$gas9EKg@iX>_K-*zSKyP?mu&ZNphB zVDnQJMD>Q?d5oT(5;X(47g|s*I}@4-0F`gK~;{| QoHdbg`AB{1C)Iqw8>ZGek^lez literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RadiusTemplate/initialize_engine-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RadiusTemplate/initialize_engine-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..444934ae7dd10b9c11c94ab3c86869143f1a559b GIT binary patch literal 185 zcmZY2u?~VT6op|1Q;aSSMh7=sG$z7)T`*CS4lD#G22iXjhW70EKAD4JCG33XALi`oOXb zrrOn#njTg^Bp2rCG=LXfhsuU9O|>v~r~;UzH-A&vU1F;^i3_v$WMtD$Yk?W;wdOfEl4a%WwT;)b@NnG49UzXv9bzE zOvx-Q4oS@|$Vn_oRfegtW^;41;w~sn%E?U5w~~e!=$lxSU0Pse1vI@hH#M(>-HO`* yXktlmG=mkFLt17|s)2z)G=rxSyM`tk&;(B<@tn*g{Su%>`bA)S^oo*z5+MM1r!qVM literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RadiusTemplate/tag_missing-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RadiusTemplate/tag_missing-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..1e74a8eb30e1b2e87bc1768c0be0c4c2248a89f2 GIT binary patch literal 189 zcmYk#F$;n~7{+mjxFQ#aprIvD1%yy`gWP)zbWbcz%=F z6&CqD--k>n$km-`X2H2)}b-jw+z@NN&Rhsk^pkvpf!c)l;k8f|GS7K3AoBu z66*n0zvGPSr&R!>Vmr~(6x>*GO{R2U9^X-lFbqp4^_RPzcjB<-L>eng!t7bZiZMv6 O0vho^f9<2LKH&{QFgxM^ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedClothTemplate/cdesc-RedClothTemplate.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedClothTemplate/cdesc-RedClothTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..543f30b3a52f967ba3085ea5173ddb4f7ce46b8a GIT binary patch literal 464 zcmZXQPfG(a5XF0tZ0Wy)V5!uD><8$2o*XPx3wuzc*3%wJx;wUmX%e#8B7S-&*0zY` zFbwbUdy{w3euLrS!Il8e*6);_X;s(7fJB~NEwGwt8@5Z_IjsT;5Rdab9WO}-fPbnK zEcQ=kUM-9d>?h?v8VA5Z%??dSpgVQShq@3}CW&nGgqy$K7v7s$#EO48c{)7fSBJo}##H3`PHx$YeAzEr-`U`aK>z>% literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedClothTemplate/engine_initialized%3f-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedClothTemplate/engine_initialized%3f-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..2b044c2d543e8b66e66cf39ada1257368e198712 GIT binary patch literal 193 zcmZvWu?~Vj5JV}=VWhFJFtMZ3MyS_9j7ma5L(YoA9I(p9(EPCeJifL+7L*`$IrK!W9&q^?q|6&bqz$9xusFj0L@ zqL8rsmBze%^a{W%^ffkm2$MkZR(F{NL_%LiN}8pt0!;=Wu?b z@dak-$y5Lb{Z5b@Q|D6>v7D18rb5vNuc+^&QGhr{vD{{)7$C*^s0=q5ww)>%SO5FH zh$8U1p;S~ESpJx#=pRD|V9lXL%`SLhSM>bM9hihSQWyk5?!?kvZ-jk_=$GMghj%_&(6#jbbmR2AS zmf!vS-rb#aU+DR2X(Xjj#??YClxP}0LXu~vE2yM!7W|A*a{rKL*99t1=}|ABwn}*T zBh3gSfgJymOKhZRwLg%tYUtHI@lm+<)>0bc+Zwb_Xn$^n^9?74B?;?>n~wjp&%%j~ z6ZVb7a-Q8ROl^h75*7Ndv^Eu_Yva;mkLhf(4XFj~&DW?P&n^{~Qy&JI)*-(#pL*iT zNU+{5@9a*(lRWFmxQf^?@AA-^ZA*oclUTa|y+IAHsL`WP_zl%vBXoCtbxk=YmW5MPS5kN;MV5r5H#R#4?3iZZmXovq1va%X8ZF0GOJVUR zS_Ay!H!S54=)RIvcQF4R=fd234d5*L7M1lONVG8aQF<^+E+jFIAQf3ak4Aq!`c Ss>nKtsC8`9J=MxouHqk*jzWh3 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/Redcarpet1/prepare-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/Redcarpet1/prepare-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..4230cc81aac0e15204ddad62c06cd42cca1fc6a7 GIT binary patch literal 182 zcmYj~u?oU46h%8oD%QclMcm?|i;e4Zsi1`nT}qugrR@`gX%pfr;@=w(!S!CwIg{xX zmgU*D0H@(yAl+?OFEo>U?mRl>kpa8pl8Z_k0w}R-m3K%L_Rc86zv-~~AxD?$h&qxy-tJg1NWL<A?IU(NvBLR^6O%?!8spEd|8r-;iH#HXodh^b z(rN8$2h=)a*0eMQ(6w>2@kGbNFFMf1(;ax~K!K>BxJ4fe)}E}Tf-JdIay9apWmKZ0 z!hGtXTLnhizT+)?gvVKO(`bf#x&X)6D-QVGOlV*2lO0^QaBgzWBOYZ*I}aBOAdfi) zwDn5K92F6}0KJhKmQqVEg_7S;+y`cuWj##fA@@+AfrxdilUuxPDDa+AS6=8Gj>73_ nkVgQvLeSRfO0~#E*mTvDF+%JZzfERDrX(#BXUEcZu(jJ=% literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/Redcarpet2/engine_initialized%3f-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/Redcarpet2/engine_initialized%3f-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..2b7bf85084e627551524d3aa74a27cb8a1686e04 GIT binary patch literal 207 zcmZvWF$=;l6oflSDt2*jP~1A{VvFMwv4R#lbSZJ_AZh#5hiMvOis-L5;NswV$9MM) zh9{U5hpq6I-q`FIuw$BqTTapf6xh_lXtW$#ErrFO zXbtd>->{TJp!-Tv-NF2OoC|aBHGs3|TU6GEAko6uN9n;Rxsb#-j!Q2K{l${Gg)E#& Tsv_$oqSmoZ_f#uWxr%=Pl?6hG literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/Redcarpet2/evaluate-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/Redcarpet2/evaluate-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..b2e7a9aa317a975ddb00bcae9c40171cd5453f43 GIT binary patch literal 205 zcmYk0u?vDg7{wjpiXv!ei5kQp3M8%Zb1^8v!9{FxI?pdUJiSBDqW`{&Ale@9@!szZ zMpu}pXUPCg%_~8Dmt{WVBzC6wprWT536M(^JBN%54Ul5VXsb|XSSw-TKkK;ubpjGa zFj0LWIFqpa5)#^0y#g?}zQ#rmVG=6Z>Mpln9NxG<-}iGXc2?VtNrkR0B%`8p?M-1+ awIcz^VrLM?J@~c#sWmyw38m~7bG%&hQvQ2$> PkoJKU=B2l;4OaaDICntO literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/Redcarpet2/prepare-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/Redcarpet2/prepare-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..1a537008f4f5775fa48cf53baf6841b712f640f2 GIT binary patch literal 182 zcmYj~u?oU46h%8oD%QclMcm?|iw%y?rGgeRbSZV}l(tU{rcH>ih<|TD1lM~x=S-$o zSe9qo0-T0-fpoWBz0geZx%23hM+WSYOD-yH2%yBSRo)?0*gK;L|E9y{ha6d+L*mB9 z=+?se>o1glj1C~g#vTWXA<063o^=GX?4}J0A?ir-c)Mf4AoovfnbO-A%+AP?SYDqN|68|Xr~O7lN^l|$F>}&ApUyJ^h>Dn zWWA@~-Me?tpV86#qb?|Y)wbdCLGrfEhJvKg=pD*}TLW$ijgi~|q2y_jMi)~d9i{s+ zBdDHi-T2k?d_{lZw(bn2II3$vxquGFhFjNWM6)1Z{j9I)#eeS`w|rr_sR+tJ8ePpy zTMO$#4=eST3I*;39><-~Dh@vYC}CupMwgXyrlm=;5U%R-xX?}FxYBi(*i9_&+#7l? zxvHOqf}UoFelT9*@}o0GY(ktYtXlr-yA zW1D*i8(e3-zZdvKM}I(t+u6DT<7E?G)4k*O&_>oZwRYKzZk#;}JTC#%c$J zgA!o@JvLS>u^|7!283!cYXKWDJN9@KV990Yi(GTCv!V4*K#3g-D>>03AUc}p)qywl>ble(rHTFhwhXDVY z9m{Ko%+N~eG%SBu$?an>0A3z?R4#-lGu*mo6Tl?9lEgGko1lop)tdQ-B3?*p6X)Ti N_pQ(`wXvMu--K0E*b literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/evaluate-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/evaluate-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..d8c95fa3caea6b6321f297124a4b845aac6cc29c GIT binary patch literal 193 zcmX|*u?vDg7{wjpiXv!ei5kQx3M8FB7lRURa1ooF&hv{7Pw&vP=)dnGXnXK`{N5W) zZm`TQiUXY6cZ%krs$wAs_2&3wa$p7tkZVG{T`r^n$gtw9(`a&Rw6u8p??og@V5Wys z3a()Nv!<-82Mu5+h6YTM1^R~mg+D$Zo@yZh3n`bZ*@ WQ*R|j85sK@XsobOulCfHU-SX@L_DMb literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/initialize_engine-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/initialize_engine-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..e0dfff13eb0d0a3e8d8f9c1f640e8b207e3f96fa GIT binary patch literal 190 zcmZY2u?oU46ougql8Rj%L=d;Q=+bt+E)}%Up-ZV#2T9wjUQCk^Q$(NMfTQ!_Ki_0} zhDCMM9l$}oOLTYLH*;bIUy>q6Led8>sBWZ?0XyXdk86?+pu)Zr)}X6#Fj6?&{0DoM z=Mb5(mDFii|D00T$7ldNIu58@2vKH)b@)=%{p41qk7 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/prepare-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/RedcarpetTemplate/prepare-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..abf0d455ea69b433c49f044e18d6dda9968edee4 GIT binary patch literal 170 zcmXwyu?~VT6h#?KG2-ChV%(~OF2ej=Fj0~YECi-b1)j07(560O{Ck@i=X>rsvv~vS z>S{ZH%lIjg9=4Y&%>-XMk4|}Hz;1=$`&t_UsIc#pcSto3&M3m&A3L+6fW%F$(Vd0u z&si$}oE$(1OaqP-Ly`w6y<`N7{H_gVStcXFkV)_nTD#U2&RY>@gap;42qjr13_Y97#nVZ1)V*ka7SQX|2G{DCrR3U%q37 zfXIxsqNa!C&ne~b8V!I)#}2g%Akujt0Qn$4>Na3SnXB;A|7Xym&|@vMg%?g4a9CwGm0IG^ffY@s|12?op0vf+Hna O>il`itvw9v+kOCQ6F7hX literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/SassTemplate/initialize_engine-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/SassTemplate/initialize_engine-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..5cbbec26da47119dc12c0783aff5c9da66ddd779 GIT binary patch literal 180 zcmZY2u?~VT6op|1Q;aMQ#Ko;HvIz5a!9+LoG3SER|2RP@0H^@B7rV5dUxq$1@2F4Ecxd!wYo&40URMFEkS zT1DLe>mO0d@iiF$?@c{w7ebU9IXYVhu*mPEFw3$!5Io!_%s&VoD{52c!L+k>H@1GQ EzJ(1qZU6uP literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/SassTemplate/prepare-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/SassTemplate/prepare-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..d8b74858567a7518bf1639cf4b4d04ebdc561be7 GIT binary patch literal 160 zcmZSK2(=Oka>-A&vU1F;^i3_v$WMtD$Yk?W;wdOfEl4a%WwT;)b@Nn`56R3av9bzI zEG`a7%`M1DEJ;;{sjy~qbF<NkGvM0B4#oDgXcg literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ScssTemplate/cdesc-ScssTemplate.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/ScssTemplate/cdesc-ScssTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..560194e4536dfc18f2fae65357a0e0842c59afb0 GIT binary patch literal 357 zcmY+A%}c~E5XJW(N$GxoAbQY4$;De&@HV+Ds0%qL;?`46X^k38n~|B{zaC%@C6sI{ho<^9=Z6s!KWh0!Zg-UjP6A literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/StringTemplate/cdesc-StringTemplate.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/StringTemplate/cdesc-StringTemplate.ri new file mode 100644 index 0000000000000000000000000000000000000000..71339dd8d749ab12d69027bedaa082e2cf94b72c GIT binary patch literal 505 zcmZ8dO-lnY5bZ&-rC*4GQuGkkd+Whdaw({VJyfKwr#(nEjcqWSgnWoa{O?ZI)-Q4h zGjHa-H}9bPNKTeFh7)pUT*K70V%}FHiHiLAAvmemrD&{TK_G%|=S4m)r3!@n!zco1 z_&o}xA!lE_3+7&;B?LrbBXr0}e`c8rzCwm(8STPP&i~HdGso7B*$o0XEAmCT5jgCO zU~i)10!xp@D^n4?tuXVL;bpA1*tf1HIIUc~e_*MDaMr*H(r83cS>#uKs{?z(oM~JO z96b;OgV#a}*Rrj)nl+MR6N8OmlD0^1_AHes@>3=2X@C%>J0({qoc1oOPW!UtxW`kF z0L&}6fb?ywmE?eDWMrKQf`jX}99Sn`K{XYSq0~Mw&BcC|_7g#oA6h54X)JhHC2V$- by5nEnr+q*_FmMaVx+O~sbdXf&u#zYrkzATt1Ne33iiK&#TjThRK%i!CKx;URd=NnC~ zus9#B0ywmVw z%EIb*oJ;@g9l)UUjc#cSv(!mXT^YbMy$wJd$7LY+e2Z2|>~<_+h2TpxRYU_BbzgDs HtIzNT?rAta literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/StringTemplate/precompiled_template-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/StringTemplate/precompiled_template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..7fa4f4d8a9191d64592d3e9cd9998563dc468c41 GIT binary patch literal 197 zcmZwAI}d^|6hL7HQ;o#L!NeH1y66JTmjx3g>A<2eF_==SHWu2H%izBkAEWch$v2u5 zus9uz0NA(BOyb?t-A&vU1F;^i3_v$WMtD$Yk?W;wdOfEl4a%WwT;)b@NnG49UzXv9by- zDay=C4@u1}$Vn_oRfegtW^;41;w~sn%E?U5w~~e!=$lxSU0Pse1vI@hH#M(>-HO`* yXktlmG=mkFLt17|s)2z)G=rxSyM`tk&;(B<@tn*g{Su%>`o&;-^oo*z5+MM9moi!a literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/basename-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/basename-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..f9aaac17da9c44b8f318a9f58d13d01ee177e354 GIT binary patch literal 244 zcmY+8O$&lR5QaO%_920XE|CYZgLP5QBY{B)9)t)xd0K7FrPW>573$xoltH%{o_C&i z#?vb-FGrpO9O_q0RLO6tPElknGTe|FR|Ek%g^^_>lqrCORDxkeHb3m6Fa%As8KXIe z^+y(C`Dg_|XKpJ}s|jd;UImV|AejASUQ|%;LHS-3XLWLU*kX&F zaVQN(w4G#33r~U+(9n*=Q?@?brW}Hg3{naX zgtjHOFLjHn5!?N+DfRMdC;ZFha{Hv7oxMwC)_jVc!^NO{KTdsPskvnNy)KU|i`bN_ EKUYQOw*UYD literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/cdesc-Template.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/cdesc-Template.ri new file mode 100644 index 0000000000000000000000000000000000000000..d90e8fb6ddb3fbd824a3ee2f00afa8c23383d75d GIT binary patch literal 1062 zcmaJ=O^?$s5Zwbx+NLc?ix!p-$qM%_XXmgLAB%#-he{C#A0j82ZVirY9B0w;>lr7_ zX3G{%PUbz&yqS5vH~LCXR&R7c=|^oVE?-Mt*K96=G@h-YGLkz8Xz=zTjgQwtI!bS% zNr1uVQ~n(a7vPVkPrFPXxc$)>N-=FyfpQ^@mWEqbvp^?dn2hkG&-S^Wx#gFZn{9yb zD2?B};x&-Mt05b0iQ8!*0yTlp%AL@vUXU+M-qN5ZRa3ixfST56{N8PWyf79}0gwvZ zR+ogUl4u1)Z%7Nn6_*WmO0bgW7P>M*LYehtyIiyGdcE+!bh6waCyh^~$j=uuw_43%WAA!0Q3NoRD6I_bl zQ0~!_Xh(c}mw0}dIWD>59TcqmnM4;|v9a&rFd|XJL1d~;JNvuf5j$cb3)6VguEZ1A zh=obS0v{bI_~m0*I;3-BwL|Mb*?|uWUTksX{Vr~ZQ)9&yF30CaR|-`-u8LOLF8R0x za&(O1RSWnEX*~D2vcAJEHr}U17E}qgFP2Q%eSh;`Vm#7&qccN)6P5j~92Y!6L*${nlE1DUNtyX!rpichj9&X`(aBs&UJC3q_2Sen!g`bVE=*ry#%h1i1+v}c^ H%-GQ%P0}<2 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/compiled_method-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/compiled_method-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..20a8aa892120af21fbd7ba6bfb8b8f2b9cb15400 GIT binary patch literal 278 zcmZ9Hy=%fi7{)uuX)TC|OVQy-mbz%B4sR9<8pt3>Nv8~Q=3dR=#XByqg8#jjrVe&} zo*&Ogr}qQn@0BS4zRtG|QfXv9R4fg~g{iF4D0kJb%7CqtGzc@L2_VDDYC#zOr(%{Q zFtE-L7KGBkq)p!lce+>rUv;VQOkH?eTH&b9nStpuvlUJpov=g1B{Xw4IMj1r<8Dl!!xzlGa-YCN{*I!M8V{o7)+F&NrQ1 zv8<0{4;+|%v(QPEt?o3aV7Rr~Qp;~g0^)S8vaQsH0ZG;w#RU9^dl9>&zKJ-Hy3iTj tkJx;Pi}H`)fanEFPfn1QPI-Pc6U@s&8!BX#t&Q$-j#AD)Xy?25CqI6}Hv9kp literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/engine_initialized%3f-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/engine_initialized%3f-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..73a7f959cf70017ec79caa248942d2ed7fb281c9 GIT binary patch literal 177 zcmZwAu?oU46op|2NyH+qid!cq>wFxnph5?i5^?AtX^nC*O+&n0e0l>qx}D+Ye8bTh z({kT6z>Yao6Ou(bGwwmoT*(oWw)8f)t$;Wji*%{TGN4TBt!4xKOE)5xvb=~mkodl~ v)O1*UnUfCB-UHF>TjN+F$-NHzsslv|i<6nud70`1A&JbUVY(`G%tt zrq!-%fUQWlOgJgC8My~Ly0T+oWBE-t1+_nv*;2C=KvV0j5d!{{8x_N(I;%L4`o6Z@ ubXa_mqY2O615xZ-a*`k|yb1EU3@|S4Y-z2_Y;L*EB~rQkq*bWnpZ);*tv9*= literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/eval_file-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/eval_file-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..da157499903b459f74cc9e6d1d6ecdccd9d7025c GIT binary patch literal 260 zcmY+9O-sW-5Qck@t!+U(co7wr^inT2=Ltv)8pxqgN_xtn%x*@rbdy~+6TyG)21W7u z&NJ`F#pMxh4lhmvY`f1LapUUh+K3{#q7SsEH)BbFc+HFCp){5ON@~4Drsdx~6L}5` zKPYRogS&6L9ftGZ0iyTNQpZzRY&-_;E8*b&KeNYx?*V-yvRM_gpUZ~i7~Nq@a_Fg+ zrjrWwnFDI-B|BMDuY*w}IkNmy>Pcjxg!yLtP1CfR6v=e;7{%EC)*7|uxMBTE2Q~6v D`fE}Y literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/evaluate-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/evaluate-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..061f462523f2e4adca85082a7b8e30a8d8b0e7fb GIT binary patch literal 187 zcmX|)F$;n~7=|6z)&yZz&k#WBpZQG_L7rC{~- zrQFoL2C(wJ!Ip+Fi8MFVuC>?-JLdr*(4^D!}{yZ+SVf8 zCXX-gy_wzNn>c>Gx3v(rrh5ibwkeO0<=F`uB$OJz;2q2o4KTqT=6QBmpe7*-Xq}b> z7yr2_o6p6e^Om3{XskF}B|J<25uFezF1BE3AP#0udI}}8;`}f3BE4LC=@gspmBT!H zypvi(!>y@-OVba!TfG+6bC9*-w64TMtZFSo;G}>r&f6*0(fp6Dn zM!Zl-3Cc#@@CtYgDVZ$y@EOsk-)il36HNnNcW9PdOO2J6zWZtEz^8g`n!8N`4?xk4 k`Z8jFwm=P&$)w!Lv%%GM64QlGlf#(OmB*W!BVYCWH^F(38vpe2Za17>*c|EW&`$Yp DbplV9 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/new-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/new-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..b4cbe0cc27b120f6ed154e75d965e10c98554f20 GIT binary patch literal 544 zcmZXR%}c{T5XF0t*pG_`4;DQPJ&0mx>vc<^ty&0L5RG`qX_HKnrQ6-O*(gQ)-`!2p zs(4vgX6E zoTX2Cc^PsRNpe~CJMgbP=>AIs4o5NEJ;L%`<1x2|C`uyHRN9 zK*8WaH)8O?bOt&@NEk;KI1}cjA_kdjCPe{7juA^3#zRDqwIMPSZ3P?c868a0JY29#G2(w$k! u@pv4xyusCl{YvK(&oye-F`zA+R`_k%dYSM literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/options-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/options-i.ri new file mode 100644 index 00000000..68d7c65c --- /dev/null +++ b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/options-i.ri @@ -0,0 +1,2 @@ +U:RDoc::Attr[ iI" options:EFI"Tilt::Template#options;FI"R;F: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [I"HA Hash of template engine specific options. This is passed directly;TI"Eto the underlying engine and is not used by the generic template;TI"interface.;T: +@file0FI"lib/tilt/template.rb;T \ No newline at end of file diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/precompiled-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/precompiled-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..450e7714070b2eb676814dd92cdf87a996764690 GIT binary patch literal 809 zcmZXSL2nZ=5QTd{OIrl$feQkOAzWH1q&+*AQbEu{E1@c!B80rVldP%Nw#KtW`S*<1 zo2ZDJWsl$c=FL1g{-IvpfAY0bAKmT_x%JKJ%oOG1ED+Yd3&vtosN(aYoV;Bc%StV= z3sy6}e_Syy77O(vkY}tJ8?Rnx)jLfOeNaj)`VJjGRnM-2CXTCPuipGy^IenPkPdAz zKUtlWlW$+pA&FB2Z7uNV3(@yfBUC#Oz{)t|Hoz@{@aV3xI6ah3LA$1y7fTTfKJxIK z?tqYcav}`8^&hwo7QwFvnYE`*!795<<#rvBe@ut*(~ zx5L+cvzt6L;~hxHTkROwgKmEJQBE?Z2G_c`Jam)e{F=L*LFu5AF+r^bN}|t1`}saz zxL=1DM^F>9);rYENP20=ohJkxWGe$1*`pyOb$Y#)rM|klS{;>>=jYbf+Qy6g`;|4- OCCi#$?)7I>rKi6fI}`r^ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/precompiled_postamble-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/precompiled_postamble-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..8fdc30184576a2a44776dfa7594b248fc260fe94 GIT binary patch literal 394 zcmZutJ5R$f5N1H8fIti|@EEMH(520MS&CGGGE_n+Oc{`qT$%_cXPqwt{~nhDf{N{Q z-&5cIsXR&^D4L608Jkg6nP4%JAFh07C58;~)ocyl{ra7mDEKFXzdyS+jAiN)C%j7Nw6k zAcst^e@f|!YSay}mKOD|E?T|{YEL6qIMaEHDp7eBExm9ztTm&IJYcOGratI9ulvsx zbhwOjIMe|Y+O^)gT({W7ONZ>TfoTYP#z*^%3P@>NrxCB}}1; zvQ4{calAQc>eU@aWL=rzUM2t6_Q=*8RM|M<8CdGQ8W6n+UdI!MTh8}z$cRO_bx z9;mY+gU#7*WAQSB^$x*dZ^t0uH6E5{E1u$ko?)U*8moU~pctNJu<}vu`PhZgq0<3G zHUHYRjF87x*p^nHXBrCNMJ?0F9YRnIpuW#2myijpb0yS1s?cjeN4hSO0QS8$z2{D9 zbH+q0g{dy?ks}6UG;%=R7t-49u^7QTD-3gT-RrsM^ZDkesXtsyIloR~XTi5uqIbVK KR6FCgd_4oYnZ^SE literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/precompiled_template-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/precompiled_template-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..2a460289eacaaee78004a8d3f375a259d179879e GIT binary patch literal 611 zcmZuvOKTf35bmLDAEA#!FQGjQn~MX+_F29pP`fN4P=Z4aJ`}Aq_NvutRB4oue;>)a z4lU#+X1R(!enPD+SN_jrxmk=}kbRa2k(fQou=Eb3p3y|| zEW~E4p1lZNR_nF+=mRk-Mor@Dz;i9bpX7zeq^U>8Z^X%kmx1H9BJu5i%ugBQK1knH z%Xiz8re0k_9AT>o2G6w?qsqI z&kpcj+LR4~$wslrl5EI9z`w}^jDRN7l!Ycje~4*VwHjIe&0qvTi$M1ng3%h?4DLE~ zkeQ7`Jv~TkWgHb<9hJa7WzUW=b1Dk?1`NA=gSpLP&`GEBV?PB;O4GOk!ueDHW z3a|qq8}GnGaFkPw7&gEjB5_p$uL&xrDcFs1E8w4r$vBy1=@Yq?aWsH?w3alOq9ARg z+in1tEP#C;G%_{_>rs;)K;|N&%V}4X)ffyeEX4*3#tB!##a0=JD8L$xZ4xq`9Q3J1 zTM4P@%(wJGQ}yrrcNX2}i;Qgfako(*_OIWoMQ$-h!4*|x(co*N1tJ#Y1k^a)N%70y mOSTBry;&MdqtR&I%F_1bm2l;T=hiHSEO#94|2znbX3{r`{H$OA literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/render-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/Template/render-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..926216d45bb90a918a0ab7b772bc7f12bea621b6 GIT binary patch literal 389 zcmY+AO-sW-5QaU-S}lSHFMb?`2%`%2cwv0r9xBvgVOCwiC>P(DJqh8>=E*dM?jKFp> z;JlevyrUe-q|gL=wpsJ2ibSdsN=*qbnNkmeB}g$AVc__2ovwjPXjWZddl+n`xn5Eg z$em;*W7YCH&7XG19p`*dF{yOm9k6&dU9zIlXcQd<&eKEFXYv+*QewTF_Aa!QCSTt! X+&2v#+d5Z@znnlV|rnZ(JirT^Z9vpZ? z$v(aN7oVvpg7ZddM{7rU4cCKjiL&txKqvPVu^Yj7-k`WPRW;oFW!_P+5Nt{{J55J% zuy`{Y(hCwM3$Rz~%sXw`)>ErdZ&BEAp}iFSL0utxwE6&VOJX%sNgO#(l^2%fdpnFbhSr;$jvhoj%(~(k0Pr76 z!L)l!^U=cf!TzZHrgi{aRd3OR1lnV#e5eXxWs=Ay|6%Yq`>ecLdF9rEagwJu$HpP? zg)n+lAZtd$S40p}%<}YV9fE@_^SCVI-AC51vWTEH{veHcdZB5N1%5*I$qyX)MWnKI zTQt7EBv!S`xC4V}!PU@q^+Howh{!I{tjOS;3VG%hG MM=$TLyTZ@>3rht&eE>LsRl8M0!io3#i)cET*7E@I_<*4Pw&vP=)dnGXnVZ(c<(nD zU14@P$pYZeyc4cVdC#VTP5>fZ}V9D}X; z97Q2v@moz;TlEUST=X?>^bqVwu~v7P1>@);kOx7KS=3!_yFx1NIVcN;o#$+FqpBSV UNlM*0irm+Rz<(KleVc#n5Bst@f%-xU4Z$zU{n$Y7K3qMFa@u2Lunfm)bT3c18+|tN&oj z(i8$SRFY~9%b$~rz8wsJLx&EP^&v=%=-A&vU1F;^i3_v$WMtD$Yk?W;wdOfEl4a%WwT;)b@NnG3CYYUv9b!! z%+7Sq$uG$WNzED!{q}MTsx^M6|L)HQG(*Cv?X?skcFbXyK%hr-tK8{ z&#j5_-!AcEuH`r#KtrM(bqmQFy1JEdWHoer(|szm->x@nOKL1Bs%jc3CK*ze9IxBh6hDiA!A9etO+{7@EXD|TAJw#WpKlGHW{VS z51%ejR1OlxGWYO&@aiQ{D!DQjAWZ^jVw>P2GEObVLUqM!eMn9RNqGcWgMmrGZI}!n#IXTAHvNS zT1CZpjIMI|iCtL5iPcGIPo$UNEkp=85`axQB1L!5ff^s;xT$28=3rANW zbf3Z{2qRPEpW$2uYrAWuI4@^nr~4{a*vQ+pHU*#}?_RB8>v zGwC#XuWo|f1h}fQuB+Q*!3WCFY;eo3*Lcx=C#-tqb;7r6@kvB(w?y$ukeY_5>a-ka zh`AP)Aj@%H87riFj6}uFY*z5TqYBnlqad8d=zq%eH<$ChGM$;Jv2RTXSD?ml1l=w? z{0~XN!FW_?*?L+vBv)cFH{VgqP}|178h2kfLtV)WV%bC607mHwaC0>@wSevAbavtT zvThlCOWE?s)ynVJ4lRc!LHB)*dVHTJT5R>kN@G9#oVH=x)8=1nx0Z`|X>>k09BnM# z4PLEVF+VxjZA7b9Y-dHJRXhsV_9dDNB6+S1)utS^pZR9*G2PtFob|*R69Q|9oy@5j z6@dTr!;h7rGEz6xz@6KporNL6*gCpbMOz=b69X7vmT_Uw2f=FED7oBVE*-{T_=dS zCGX4k`##>$@dsQirX~Y;(!069!sN-hBoRB!MP?jFL4Z8ZB1U7W5a5%qR4g`D`N_?% zBqXyL^lg4$Gux;QFuTjXS<{+!iD}Nj&{=+R{sk zg`mNzG&-PC+X^Yqe6U>VB}GG*aw{|qj74d584O5B;(zWF#r67CYSA%auO@UO)>u-1 z?rH1^HGsaOYi$qB8o!7=wEnGlf1@wFEb0tdRifF*Z_#8;MZveyxaRBltR?zRY$336 udf(^($XjTmhTix~Dlr<3l1{|>w{@tyx>3X~l}v}|S1{c94GdgbKmPzD?u>N+ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/YajlTemplate/engine_initialized%3f-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/YajlTemplate/engine_initialized%3f-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..a2badc48330a5b6cbf9159ad15c1d21b4e8f96cb GIT binary patch literal 186 zcmZwAu?oU46ougql8P=43W8fE1+ks4gB7%pp^L;pI!M}H^=g`inhy2p4Y;}5a?IZ~QFSnU|FV=DMsl6C+W_0$q;tCd55fBBZB z62`VGG?fi3eom&^S7!k{+SO=W2;;=6*1hupM#+sd#&Mhnf``i$^ACd0G!>EaX4HFf I(-wY~U+RWBb^rhX literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/YajlTemplate/evaluate-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/YajlTemplate/evaluate-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..6fd8e0ed4adfdae4bab38baffaf72c189b978d0e GIT binary patch literal 184 zcmX|)u?vDg7{wjpiX>>LsRl8K0!io3#h`>6T*8KMI_;v%Pw&vX!2iCBpzZPAIckNR~rRj>89bW9)p`G*6F@*V46Gx@+gW5hx+SXUrEIS4`s!$54>$@Q@tlK$*I3Y PQHI*e!@;@_UHPp)pE)?* literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/YajlTemplate/initialize_engine-i.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/YajlTemplate/initialize_engine-i.ri new file mode 100644 index 0000000000000000000000000000000000000000..ae5846875d86d5bb2311e597ae1cfaee59367516 GIT binary patch literal 181 zcmZY2u?~VT6op|1Q;aMQ>f%-xS%mqzV4@@)SPTxPgDH5`tEDtp27G#(IJ%zvIp1h} zg4uE3)&M&*6zCr9RZfWsz92)6l%@|}(A>!&19r#-k4w@H;H;jy#KvmnaP{AAS)M~= z`$|*Y!tzHHs(bYoz!obdV&C7=39%n-2YZE3U4W3uiRB z!s2qW65v?(x$;k2m2*uPUAaa{Yn(<^-JNYcHv$y_a?Tjt7aBdljlZx^#v%7=^Z!ps zmO@!syDjN}AegRMp*YUJFzN$T?$lUubjyH~zvx)fTx^o4@yj zWEq6E7pSFy^$*H<`|d4(SNmEuZVX{+dF#3|fNA>hU>wI~!02p?Msn-A&vU1F;^i3_v$WMtD$Yk?Wk}N1nP0r6P$jnJii7!dbEyzhMNoBKQ zb9M7n(h14TDY3GOOw7s&fyyXjRc_7Z=4QoRP@0sJnVfGW4Y9~Ku_(K=z{(0}YiVw3 zUJ1Juw?jcfVg&H9x< Ki}i|-A&vU1F;^i3_v$WMtD$Yk?W;wdOfEl4a%WwT;)b@Nn`56R3av9gLx z%*qK#%`M1DEJ;;{sjy~qbF<Rl7PY?0F_2ChyVZp literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/cdesc-Tilt.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/cdesc-Tilt.ri new file mode 100644 index 0000000000000000000000000000000000000000..0f1023cbcc2d4e083c07d3e6f8fb6eacc3c5e431 GIT binary patch literal 412 zcmZXQPiuoP7{)yeW2=>3#u&T#0ank+VY1DFgVxcxUBV7g-i)7MzU!7hRK zd45mcKUdy6zBxS03gf-h4HG+A_X23h-7H!ZTo@O-={7;J#CI2N$MjdPFdjmE1Fb>W zPZZOpqYhpsM=l_y4n@?{N;QHLzzEV>oE+?e72je$l9X5e0z z169~u@R1(gvV8w9wVqNFY#X60T2_K}oyDm~hk;aI3SQB`dWe2nBe}N4s$oj;_B65= z$!pmDZC4^}__>P-$tPGEm!#;6Q2qJ#1==VHDnW ThPBn$$c{~x)*$})2GltNCDCkg literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/mappings-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/mappings-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..c2ca680bcffab62d26ba1bc3b7c72c77d18ce23f GIT binary patch literal 255 zcmY+9F>Avx5Jo!$C8-G*+N~Xgr)Eh!pGip}4e?+o#hE;vT{#w!B_W-M{QJn1G<3P) zyT`lxCbJ_vfA35K@S!h-pw9eMv1EC&=+RoKPo4q$+~>(tDHQ?yr5W3o5ZR$tvN7=T z>nPBj2MZ8{LoYNJhsFb)`_3 literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/new-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/new-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..043633ba9d0fc08ad8ed7c595a6caef1ec5b40d5 GIT binary patch literal 319 zcmY+A%}c{T5XC*nwpx%Lyy;=cK`n;b^OQnGE#^=ViKm=4=`>lo*<~?TwiKcS-dzj z*V6BLhZrz@ONIwHS~}^uD}=?%|Ctx*W$mSF#QdZfWXbb`C&>g70v?!Jr=#3j58M#c z>YWU1l_uyrW$L{d<#h-2$z(cZP53I$l3TX0Atv7{L;G9={1IE}TmVdC7*CgxF`Lbb rqb!-+M3I6Hy@gRa1?xCqyT$iU3Rk7J)oyaQG1jWQKSFQ literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/normalize-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/normalize-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..867653912bd2bfcd89c76a4c50c69bc861038c53 GIT binary patch literal 150 zcmZSK2(=Oka>-A&vU1F;^i3_v$WMtD$Yk?W;>*h~%1zA4tV(6GVsmx#R1yiv%qg+5 zLI_*4xrJD97nCODWG3fZNkdHWO)SbTEwHiz8d;i~npeVZ#qCg#SX5FR&0xjlkd~Q~ lYG7ax&EToTrIA`uqRD2>7UHQSkdv9DUjj5HG6z5$n?U&bnF2QUAuH0y8qsmO+Gz% zYV!Kt@AIPkPHv_{IVa>vWMkAT8P00V@!V>xaDmDp&dbPiuYJZfA;qlkjC@j!(}1(N zB=!7$Ow~G#2{B-4ghF4E>L8{{C$q97x5qmZs_0VDc;)o3W@XQP9n&=?KtW>^bE*;M zoF)n6d?5&8^(95P^#9V6_8G z!x!Tm0z84IX2`Tr!4=Xl%fadjmn_j}HS7tA{XBE^%&AzvF@dGCP(DxvRI|wXt$6O^ z9Za_I!gR=zxlD!LI<)i$geNvh#n75E+O~{to=r0^W(VUJ0k(==r+6R!V3dMqyI{M~ zk-_4u_YbNLG|X|MWyO)oz>4nmdb5(}y3OA{Kev5$puNw~?whu1oCWvV8d8Cs`~Xp~ B*B<}? literal 0 HcmV?d00001 diff --git a/src/main/resources/doc/tilt-1.3.3/ri/Tilt/register-c.ri b/src/main/resources/doc/tilt-1.3.3/ri/Tilt/register-c.ri new file mode 100644 index 0000000000000000000000000000000000000000..5edcee66f53cf2f1eddc60de549b59a1afd41ac7 GIT binary patch literal 263 zcmY+9ziR?P5QQzm8kK+$J5wxMB|*&9bB%%#t`LG;sw=|WIqKqiyX?+^{`cX>b`*XHD<% z`Y&m#`6C6y9GfO`a)!%w&@8c49&e64ubTCNbr@B3(dOFs9Z6yrK{ye7jpRUs&=jl| z0{YG`MerHAeCS?a($bIM_aGxdVE<_b8enhi>=ts-c&94W;9@<)vMk$^x>($1@owgM OsWsh$ Asciidoctor::SafeMode::UNSAFE, :base_dir => $srcDir} +Dir.new($srcDir).each do |file| + file_ext = File.extname(file.to_s) + if file_ext === '.adoc' or file_ext === '.asciidoc' or file_ext === '.asc' or file_ext === '.ad' + basename = File.basename(file.to_s, file_ext) + ($backend === 'docbook' ? '.xml' : '.html') + doc = Asciidoctor::Document.new(file.lines.to_a, asciidoctor_opts) + File.new($outputDir + '/' + basename, 'w+').puts doc.render + end +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/Gemfile b/src/main/resources/gems/asciidoctor-0.0.9/Gemfile new file mode 100644 index 00000000..e45e65f8 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/Gemfile @@ -0,0 +1,2 @@ +source :rubygems +gemspec diff --git a/src/main/resources/gems/asciidoctor-0.0.9/LICENSE b/src/main/resources/gems/asciidoctor-0.0.9/LICENSE new file mode 100644 index 00000000..aa169d89 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) Ryan Waldron + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/src/main/resources/gems/asciidoctor-0.0.9/README.asciidoc b/src/main/resources/gems/asciidoctor-0.0.9/README.asciidoc new file mode 100644 index 00000000..87424a56 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/README.asciidoc @@ -0,0 +1,165 @@ +[float] +Asciidoctor +=========== +:asciidoctor: http://github.com/erebor/asciidoctor +:asciidoc: http://www.methods.co.nz/asciidoc/index.html +:gitscm-next: https://github.com/github/gitscm-next +:asciidoctorseed: https://github.com/github/gitscm-next/commits/master/lib/asciidoc.rb +:templates: https://github.com/erebor/asciidoctor/blob/master/lib/asciidoctor/render_templates.rb +:tilt: https://github.com/rtomayko/tilt +:freesoftware: http://www.fsf.org/licensing/essays/free-sw.html +:issues: https://github.com/erebor/asciidoctor/issues +:gist: https://gist.github.com +:fork: http://help.github.com/fork-a-repo/ +:branch: http://learn.github.com/p/branching.html +:pr: http://help.github.com/send-pull-requests/ +:license: https://github.com/erebor/asciidoctor/blob/master/LICENSE + +{asciidoctor}[Asciidoctor] is a pure-Ruby processor for turning +{asciidoc}[AsciiDoc] documents or strings into HTML (and, eventually +other formats as well...'stay tuned!'). + +image::https://travis-ci.org/erebor/asciidoctor.png?branch=master["Build Status", link="https://travis-ci.org/erebor/asciidoctor"] + +Asciidoctor uses simple built-in ERB templates to style the output in +a way that roughly matches the default HTML output of the native +Python processor. You can override this behavior by providing +{tilt}[Tilt]-compatible templates. See the xref:usage[Usage section] +for more details. + +Asciidoctor currently works with Ruby 1.8.7 and 1.9.3, though I don't +know of any reason it shouldn't work with more exotic Ruby versions, +and would welcome help in testing that out. + +The initial code from which Asciidoctor started was from the +{gitscm-next}[Git SCM site repo]. Refer to commit history of +{asciidoctorseed}[asciidoc.rb] to view the initial contributions. + +== Installation + +NOTE: This gem is very immature, and as yet only supports a small subset +of AsciiDoc features (but it's getting better!). Thus, you should only +use it if you have a high tolerance for bugs, failures, and generally +bad and intemperate behavior. + +To install the gem: + + gem install asciidoctor + +Or if you prefer bundler: + + bundle install asciidoctor + +== Usage + +To render a file containing AsciiDoc markup to HTML: + + lines = File.readlines('your_file.asciidoc') + doc = Asciidoctor::Document.new(lines) + html = doc.render + File.open('your_file.html', 'w+') do |file| + file.puts html + end + +To render an AsciiDoc-formatted string: + + doc = Asciidoctor::Document.new("*This* is it.") + puts doc.render + +Asciidoctor allows you to override the {templates}[built-in templates] +used to render almost any individual AsciiDoc element. If you provide a +directory of {tilt}[Tilt]-compatible templates, named in such a way that +Asciidoctor can figure out which template goes with which element, +Asciidoctor will use the templates in this directory instead of its +built-in templates for any elements for which it finds a matching +template. It will fallback to its default templates for everything else. + + doc = Asciidoctor::Document.new("*This* is it.", :template_dir => 'templates') + puts doc.render + +The Document and Section templates should begin with `document.` and +`section.`, respectively. The file extension is used by Tilt to +determine which view framework it will use to use to render the +template. For instance, if you want to write the template in ERB, you'd +name these two templates `document.html.erb` and `section.html.erb`. To +use Haml, you'd name them `document.html.haml` and `section.html.haml`. + +Templates for block elements, like a Paragraph or Sidebar, would begin +with `block_ + <% end %> + <% unless attr(:stylesheet, '').empty? %> + + <% end %> + <% + case attr 'source-highlighter' %><% + when 'coderay' %> + <% + when 'highlightjs' %> + + + + + <% end %> + + style="max-width: <%= attr 'max-width' %>;"<% end %>> + <% unless noheader %> + + <% end %> +
+<%= content %> +
+ + + + EOS + end +end + +class EmbeddedTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +<%#encoding:UTF-8%> +<%= content %> + EOS + end +end + +class BlockPreambleTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +<%#encoding:UTF-8%> +
+
+<%= content %> +
+
+ EOS + end +end + +class SectionTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +<%#encoding:UTF-8%> +<% if level == 0 %> +<%= title %> +<%= content %> +<% else %> +
+ #{id}><% if attr? :numbered %><%= sectnum %> <% end %><%= title %>> + <% if @level == 1 %> +
+<%= content %> +
+ <% else %> +<%= content %> + <% end %> +
+<% end %> + EOS + end +end + +class BlockDlistTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +<%#encoding:UTF-8%> + + <% if title %> +
<%= title %>
+ <% end %> +
+ <% content.each do |dt, dd| %> +
+ <%= dt.text %> +
+ <% unless dd.nil? %> +
+ <% if dd.text? %> +

<%= dd.text %>

+ <% end %> + <% if dd.blocks? %> +<%= dd.content %> + <% end %> +
+ <% end %> + <% end %> +
+
+ EOS + end +end + +class BlockListingTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +<%#encoding:UTF-8%> + + <% if title %> +
<%= title %>
+ <% end %> +
+ <% if (attr :style) == 'source' %> +
<%= template.preserve_endlines(content, self) %>
+ <% else %> +
<%= template.preserve_endlines(content, self) %>
+ <% end %> +
+
+ EOS + end +end + +class BlockLiteralTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +<%#encoding:UTF-8%> + + <% if title %> +
<%= title %>
+ <% end %> +
+
<%= template.preserve_endlines(content, self) %>
+
+ + EOS + end +end + +class BlockAdmonitionTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +<%#encoding:UTF-8%> + + + + + + +
+ <% if attr? :icons %> + <%= attr :caption %> + <% else %> +
<%= attr :caption %>
+ <% end %> +
+ <% unless title.nil? %> +
<%= title %>
+ <% end %> + <%= content %> +
+ + EOS + end +end + +class BlockParagraphTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +<%#encoding:UTF-8%> + + <% unless title.nil? %> +
<%= title %>
+ <% end %> +

<%= content %>

+ + EOS + end +end + +class BlockSidebarTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +<%#encoding:UTF-8%> + +
+ <% unless title.nil? %> +
<%= title %>
+ <% end %> +<%= content %> +
+ + EOS + end +end + +class BlockExampleTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +<%#encoding:UTF-8%> + +
+ <% unless title.nil? %> +
<%= title %>
+ <% end %> +<%= content %> +
+ + EOS + end +end + +class BlockOpenTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +<%#encoding:UTF-8%> + + <% unless title.nil? %> +
<%= title %>
+ <% end %> +
+<%= content %> +
+ + EOS + end +end + +class BlockPassTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +<%#encoding:UTF-8%> +<%= content %> + EOS + end +end + +class BlockQuoteTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +<%#encoding:UTF-8%> + + <% unless title.nil? %> +
<%= title %>
+ <% end %> +
+<%= content %> +
+
+ <% if attr? :citetitle %> + <%= attr :citetitle %> + <% end %> + <% if attr? :attribution %> + <% if attr? :citetitle %> +
+ <% end %> + <%= '— ' + attr(:attribution) %> + <% end %> +
+ + EOS + end +end + +class BlockVerseTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +<%#encoding:UTF-8%> + + <% unless title.nil? %> +
<%= title %>
+ <% end %> +
<%= template.preserve_endlines(content, self) %>
+
+ <% if attr? :citetitle %> + <%= attr :citetitle %> + <% end %> + <% if attr? :attribution %> + <% if attr? :citetitle %> +
+ <% end %> + <%= '— ' + attr(:attribution) %> + <% end %> +
+ + EOS + end +end + +class BlockUlistTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +<%#encoding:UTF-8%> + + <% unless title.nil? %> +
<%= title %>
+ <% end %> +
    + <% content.each do |li| %> +
  • +

    <%= li.text %>

    + <% if li.blocks? %> +<%= li.content %> + <% end %> +
  • + <% end %> +
+ + EOS + end +end + +class BlockOlistTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +<%#encoding:UTF-8%> + + <% unless title.nil? %> +
<%= title %>
+ <% end %> +
    + <% content.each do |li| %> +
  1. +

    <%= li.text %>

    + <% if li.blocks? %> +<%= li.content %> + <% end %> +
  2. + <% end %> +
+ + EOS + end +end + +class BlockColistTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +<%#encoding:UTF-8%> + + <% unless title.nil? %> +
<%= title %>
+ <% end %> +
    + <% content.each do |li| %> +
  1. +

    <%= li.text %>

    +
  2. + <% end %> +
+ + EOS + end +end + +class BlockTableTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +<%#encoding:UTF-8%> + + <% if title? %> + <%= title %> + <% end %> + <% if (attr :rowcount) >= 0 %> + + <% if attr? 'autowidth-option' %> + <% @columns.each do |col| %> + + <% end %> + <% else %> + <% @columns.each do |col| %> + + <% end %> + <% end %> + + <% [:head, :foot, :body].select {|tsec| !rows[tsec].empty? }.each do |tsec| %> + > + <% @rows[tsec].each do |row| %> + + <% row.each do |cell| %> + <<%= tsec == :head ? 'th' : 'td' %> class="tableblock halign-<%= cell.attr :halign %> valign-<%= cell.attr :valign %>"#{attribute('colspan', 'cell.colspan')}#{attribute('rowspan', 'cell.rowspan')}><% + if tsec == :head %><%= cell.text %><% else %><% + case cell.attr(:style) + when :asciidoc %>
<%= cell.content %>
<% + when :verse %>
<%= template.preserve_endlines(cell.text, self) %>
<% + when :literal %>
<%= template.preserve_endlines(cell.text, self) %>
<% + when :header %><% cell.content.each do |text| %>

<%= text %>

<% end %><% + else %><% cell.content.each do |text| %>

<%= text %>

<% end %><% + end %><% end %>> + <% end %> + + <% end %> +
> + <% end %> + <% end %> + + EOS + end +end + +class BlockImageTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +<%#encoding:UTF-8%> + +
+ <% if attr :link %> + <%= attr :alt %> + <% else %> + <%= attr :alt %> + <% end %> +
+ <% if title %> +
<%= title %>
+ <% end %> + + EOS + end +end + +class BlockRulerTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +
+ EOS + end +end + +class InlineBreakTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +<%= text %>
+ EOS + end +end + +class InlineCalloutTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +<%= text %> + EOS + end +end + +class InlineQuotedTemplate < ::Asciidoctor::BaseTemplate + QUOTED_TAGS = { + :emphasis => ['', ''], + :strong => ['', ''], + :monospaced => ['', ''], + :superscript => ['', ''], + :subscript => ['', ''], + :double => [Asciidoctor::INTRINSICS['ldquo'], Asciidoctor::INTRINSICS['rdquo']], + :single => [Asciidoctor::INTRINSICS['lsquo'], Asciidoctor::INTRINSICS['rsquo']], + :none => ['', ''] + } + + def template + @template ||= @eruby.new <<-EOS +<% tags = template.class::QUOTED_TAGS[@type] %><%= tags.first %><% +if attr? :role %><% +end %><%= @text %><% +if attr? :role %><% +end %><%= tags.last %> + EOS + end +end + +class InlineAnchorTemplate < ::Asciidoctor::BaseTemplate + def template + @template ||= @eruby.new <<-EOS +<% +if type == :xref +%><%= @text || @document.references[:ids].fetch(@target, '[' + @target + ']') %><% +elsif @type == :ref +%><% +else +%><%= @text %><% +end +%> + EOS + end +end + +class InlineImageTemplate < ::Asciidoctor::BaseTemplate + def template + # care is taken here to avoid a space inside the optional tag + @template ||= @eruby.new <<-EOS + + <% + if attr :link %><% + end %><%= attr :alt %><% + if attr :link%><% end + %> + + EOS + end +end +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/block.rb b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/block.rb new file mode 100644 index 00000000..82b6ad3e --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/block.rb @@ -0,0 +1,121 @@ +# Public: Methods for managing blocks of Asciidoc content in a section. +# +# Examples +# +# block = Asciidoctor::Block.new(document, :paragraph, ["`This` is a "]) +# block.content +# => ["This is a <test>"] +class Asciidoctor::Block < Asciidoctor::AbstractBlock + + # Public: Create alias for context to be consistent w/ AsciiDoc + alias :blockname :context + + # Public: Get/Set the original Array content for this section block. + attr_accessor :buffer + + # Public: Get/Set the caption for this block + attr_accessor :caption + + # Public: Initialize an Asciidoctor::Block object. + # + # parent - The parent Asciidoc Object. + # context - The Symbol context name for the type of content. + # buffer - The Array buffer of source data (default: nil). + + def initialize(parent, context, buffer = nil) + super(parent, context) + @buffer = buffer + end + + # Public: Get the rendered String content for this Block. If the block + # has child blocks, the content method should cause them to be + # rendered and returned as content that can be included in the + # parent block's template. + def render + Asciidoctor.debug { "Now rendering #{@context} block for #{self}" } + out = renderer.render("block_#{@context}", self) + @document.callouts.next_list if @context == :colist + out + end + + def splain(parent_level = 0) + parent_level += 1 + Asciidoctor.puts_indented(parent_level, "Block id: #{id}") unless self.id.nil? + Asciidoctor.puts_indented(parent_level, "Block title: #{title}") unless self.title.nil? + Asciidoctor.puts_indented(parent_level, "Block caption: #{caption}") unless self.caption.nil? + Asciidoctor.puts_indented(parent_level, "Block level: #{level}") unless self.level.nil? + Asciidoctor.puts_indented(parent_level, "Block context: #{context}") unless self.context.nil? + + Asciidoctor.puts_indented(parent_level, "Blocks: #{@blocks.count}") + + if buffer.is_a? Enumerable + buffer.each_with_index do |buf, i| + Asciidoctor.puts_indented(parent_level, "v" * (60 - parent_level*2)) + Asciidoctor.puts_indented(parent_level, "Buffer ##{i} is a #{buf.class}") + Asciidoctor.puts_indented(parent_level, "Name is #{buf.title rescue 'n/a'}") + + if buf.respond_to? :splain + buf.splain(parent_level) + else + Asciidoctor.puts_indented(parent_level, "Buffer: #{buf}") + end + Asciidoctor.puts_indented(parent_level, "^" * (60 - parent_level*2)) + end + else + if buffer.respond_to? :splain + buffer.splain(parent_level) + else + Asciidoctor.puts_indented(parent_level, "Buffer: #{@buffer}") + end + end + + @blocks.each_with_index do |block, i| + Asciidoctor.puts_indented(parent_level, "v" * (60 - parent_level*2)) + Asciidoctor.puts_indented(parent_level, "Block ##{i} is a #{block.class}") + Asciidoctor.puts_indented(parent_level, "Name is #{block.title rescue 'n/a'}") + + block.splain(parent_level) if block.respond_to? :splain + Asciidoctor.puts_indented(parent_level, "^" * (60 - parent_level*2)) + end + + nil + end + + # Public: Get an HTML-ified version of the source buffer, with special + # Asciidoc characters and entities converted to their HTML equivalents. + # + # Examples + # + # doc = Asciidoctor::Document.new + # block = Asciidoctor::Block.new(doc, :paragraph, + # ['`This` is what happens when you a stranger in the !']) + # block.content + # => ["This is what happens when you <meet> a stranger in the <alps>!"] + def content + + case @context + when :preamble, :open, :example, :sidebar + @blocks.map {|b| b.render }.join + # lists get iterated in the template (for now) + # list items recurse into this block when their text and content methods are called + when :ulist, :olist, :dlist, :colist + @buffer + when :listing, :literal + apply_literal_subs(@buffer) + when :pass + apply_passthrough_subs(@buffer) + when :quote, :verse, :admonition + if !@buffer.nil? + apply_normal_subs(@buffer) + else + @blocks.map {|b| b.render }.join + end + else + apply_normal_subs(@buffer) + end + end + + def to_s + "#{super.to_s} - #@context [blocks:#{(@blocks || []).size}]" + end +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/callouts.rb b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/callouts.rb new file mode 100644 index 00000000..1f258524 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/callouts.rb @@ -0,0 +1,117 @@ +# Public: Maintains a catalog of callouts and their associations. +class Asciidoctor::Callouts + def initialize + @lists = [] + @list_index = 0 + next_list + end + + # Public: Register a new callout for the given list item ordinal. + # + # Generates a unique id for this callout based on the index of the next callout + # list in the document and the index of this callout since the end of the last + # callout list. + # + # li_ordinal - the Integer ordinal (1-based) of the list item to which this + # callout is to be associated + # + # Examples + # + # callouts = Asciidoctor::Callouts.new + # callouts.register(1) + # # => "CO1-1" + # callouts.next_list + # callouts.register(2) + # # => "CO2-1" + # + # Returns The unique String id of this callout + def register(li_ordinal) + current_list << {:ordinal => li_ordinal.to_i, :id => (id = generate_next_callout_id)} + @co_index += 1 + + id + end + + # Public: Get the next callout index in the document + # + # Reads the next callout index in the document and advances the pointer. + # This method is used during rendering to retrieve the unique id of the + # callout that was generated during lexing. + # + # Returns The unique String id of the next callout in the document + def read_next_id + id = nil + list = current_list + + if @co_index <= list.size + id = list[@co_index - 1][:id] + end + + @co_index += 1 + + id + end + + # Public: Get a space-separated list of callout ids for the specified list item + # + # li_ordinal - the Integer ordinal (1-based) of the list item for which to + # retrieve the callouts + # + # Returns A space-separated String of callout ids associated with the specified list item + def callout_ids(li_ordinal) + current_list.inject([]) {|collector, element| + collector << element[:id] if element[:ordinal] == li_ordinal + collector + } * ' ' + end + + # Public: The current list for which callouts are being collected + # + # Returns The Array of callouts at the position of the list index pointer + def current_list + @lists[@list_index - 1] + end + + # Public: Advance to the next callout list in the document + # + # Returns nothing + def next_list + @list_index += 1 + + if @lists.size < @list_index + @lists << [] + end + + @co_index = 1 + + nil + end + + # Public: Rewind the list index pointer, intended to be used when switching + # from the parsing to rendering phase. + # + # Returns nothing + def rewind + @list_index = 1 + @co_index = 1 + + nil + end + + # Internal: Generate a unique id for the callout based on the internal indexes + # + # Returns A unique String id for this callout + def generate_next_callout_id + generate_callout_id(@list_index, @co_index) + end + + # Internal: Generate a unique id for the callout at the specified position + # + # list_index - The 1-based Integer index of the callout list within the document + # co_index - The 1-based Integer index of the callout since the end of the last callout list + # + # Returns A unique String id for a callout + def generate_callout_id(list_index, co_index) + "CO#{list_index}-#{co_index}" + end +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/debug.rb b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/debug.rb new file mode 100644 index 00000000..9b1affa2 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/debug.rb @@ -0,0 +1,24 @@ +module Asciidoctor + @show_debug = nil + + def self.debug + puts yield if self.show_debug_output? + end + + def self.set_debug(value) + @show_debug = value + end + + def self.show_debug_output? + @show_debug || (ENV['DEBUG'] == 'true' && ENV['SUPPRESS_DEBUG'] != 'true') + end + + def self.puts_indented(level, *args) + indentation = " " * level * 2 + + args.each do |arg| + self.debug { "#{indentation}#{arg}" } + end + end +end + diff --git a/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/document.rb b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/document.rb new file mode 100644 index 00000000..5292c5f5 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/document.rb @@ -0,0 +1,317 @@ +# Public: Methods for parsing Asciidoc documents and rendering them +# using erb templates. +# +# There are several strategies for getting the title of the document: +# +# doctitle - value of title attribute, if assigned and non-empty, +# otherwise title of first section in document, if present +# otherwise nil +# name - an alias of doctitle +# title - value of the title attribute, or nil if not present +# first_section.title - title of first section in document, if present +# header.title - title of section level 0 +# +# Keep in mind that you'll want to honor these document settings: +# +# notitle - The h1 heading should not be shown +# noheader - The header block (h1 heading, author, revision info) should not be shown +class Asciidoctor::Document < Asciidoctor::AbstractBlock + + include Asciidoctor + + # Public A read-only integer value indicating the level of security that + # should be enforced while processing this document. The value must be + # set in the Document constructor using the :safe option. + # + # A value of 0 (UNSAFE) disables any of the security features enforced + # by Asciidoctor (Ruby is still subject to its own restrictions). + # + # A value of 1 (SAFE) closely parallels safe mode in AsciiDoc. In particular, + # it prevents access to files which reside outside of the parent directory + # of the source file and disables any macro other than the include macro. + # + # A value of 10 (SECURE) disallows the document from attempting to read + # files from the file system and including the contents of them into the + # document. In particular, it disallows use of the include::[] macro and the + # embedding of binary content (data uri), stylesheets and JavaScripts + # referenced by the document. (Asciidoctor and trusted extensions may still + # be allowed to embed trusted content into the document). Since Asciidoctor + # is aiming for wide adoption, this value is the default and is recommended + # for server-side deployments. + # + # A value of 100 (PARANOID) is planned to disallow the use of passthrough + # macros and prevents the document from setting any known attributes in + # addition to all the security features of SafeMode::SECURE. Please note that + # this level is not currently implemented (and therefore not enforced)! + attr_reader :safe + + # Public: Get the Hash of document references + attr_reader :references + + # Public: Get the Hash of callouts + attr_reader :callouts + + # Public: The section level 0 block + attr_reader :header + + # Public: Base directory for rendering this document + attr_reader :base_dir + + # Public: A reference to the parent document of this nested document. + attr_reader :parent_document + + # Public: Initialize an Asciidoc object. + # + # data - The Array of Strings holding the Asciidoc source document. (default: []) + # options - A Hash of options to control processing, such as setting the safe mode (:safe), + # suppressing the header/footer (:header_footer) and attribute overrides (:attributes) + # (default: {}) + # block - A block that can be used to retrieve external Asciidoc + # data to include in this document. + # + # Examples + # + # data = File.readlines(filename) + # doc = Asciidoctor::Document.new(data) + # puts doc.render + def initialize(data = [], options = {}, &block) + super(self, :document) + @renderer = nil + + if options[:parent] + @parent_document = options.delete(:parent) + # should we dup here? + options[:attributes] = @parent_document.attributes + @renderer = @parent_document.renderer + else + @parent_document = nil + end + + @header = nil + @references = { + :ids => {}, + :links => [], + :images => [] + } + @callouts = Callouts.new + @options = options + @safe = @options.fetch(:safe, SafeMode::SECURE).to_i + @options[:header_footer] = @options.fetch(:header_footer, true) + + @attributes['asciidoctor'] = true + @attributes['asciidoctor-version'] = VERSION + @attributes['sectids'] = true + @attributes['encoding'] = 'UTF-8' + + attribute_overrides = options[:attributes] || {} + + # the only way to set the include-depth attribute is via the document options + # 10 is the AsciiDoc default, though currently Asciidoctor only supports 1 level + attribute_overrides['include-depth'] ||= 10 + + # TODO we should go with one or the other, this is confusing + # for now, base_dir takes precedence if set + if options.has_key? :base_dir + @base_dir = attribute_overrides['docdir'] = options[:base_dir] + else + attribute_overrides['docdir'] ||= Dir.pwd + @base_dir = attribute_overrides['docdir'] + end + + # restrict document from setting source-highlighter in SECURE safe mode + # it can only be set via the constructor + if @safe >= SafeMode::SECURE + attribute_overrides['source-highlighter'] ||= nil + end + + attribute_overrides.each {|key, val| + # a nil or negative key undefines the attribute + if (val.nil? || key[-1..-1] == '!') + @attributes.delete(key.chomp '!') + # otherwise it's an attribute assignment + else + @attributes[key] = val + end + } + + @attributes['backend'] ||= DEFAULT_BACKEND + update_backend_attributes + + if nested? + # don't need to do the extra processing within our own document + @reader = Reader.new(data) + else + @reader = Reader.new(data, self, attribute_overrides, &block) + end + + # dynamic intrinstic attribute values + @attributes['doctype'] ||= DEFAULT_DOCTYPE + + now = Time.new + @attributes['localdate'] ||= now.strftime('%Y-%m-%d') + @attributes['localtime'] ||= now.strftime('%H:%m:%S %Z') + @attributes['localdatetime'] ||= [@attributes['localdate'], @attributes['localtime']].join(' ') + + # docdate and doctime should default to localdate and localtime if not otherwise set + @attributes['docdate'] ||= @attributes['localdate'] + @attributes['doctime'] ||= @attributes['localtime'] + + @attributes['iconsdir'] ||= File.join(@attributes.fetch('imagesdir', 'images'), 'icons') + + # Now parse the lines in the reader into blocks + Lexer.parse(@reader, self) + # or we could make it... + #self << *Lexer.parse(@reader, self) + + @callouts.rewind + + Asciidoctor.debug { + msg = [] + msg << "Found #{@blocks.size} blocks in this document:" + @blocks.each {|b| + msg << b + } + msg * "\n" + } + end + + def register(type, value) + if type == :ids + if value.is_a?(Array) + @references[:ids][value[0]] = (value[1] || '[' + value[0] + ']') + else + @references[:ids][value] = '[' + value + ']' + end + elsif @options[:catalog_assets] + @references[type] << value + end + end + + def nested? + !@parent_document.nil? + end + + # Make the raw source for the Document available. + def source + @reader.source if @reader + end + + def doctype + @attributes['doctype'] + end + + # The title explicitly defined in the document attributes + def title + @attributes['title'] + end + + def title=(title) + @header = Section.new self + @header.title = title + end + + # We need to be able to return some semblance of a title + def doctitle + if !(title = @attributes.fetch('title', '')).empty? + title + elsif !(sect = first_section).nil? && sect.title? + sect.title + else + nil + end + end + alias :name :doctitle + + def notitle + @attributes.has_key? 'notitle' + end + + def noheader + @attributes.has_key? 'noheader' + end + + # QUESTION move to AbstractBlock? + def first_section + has_header? ? @header : (@blocks || []).detect{|e| e.is_a? Section} + end + + def has_header? + !@header.nil? + end + + # Public: Update the backend attributes to reflect a change in the selected backend + def update_backend_attributes() + backend = @attributes['backend'] + basebackend = backend.sub(/[[:digit:]]+$/, '') + page_width = DEFAULT_PAGE_WIDTHS[basebackend] + if page_width + @attributes['pagewidth'] = page_width + else + @attributes.delete('pagewidth') + end + @attributes['backend-' + backend] = 1 + @attributes['basebackend'] = basebackend + @attributes['basebackend-' + basebackend] = 1 + end + + def splain + Asciidoctor.debug { + msg = '' + if @header + msg = "Header is #{@header}" + else + msg = "No header" + end + + msg += "I have #{@blocks.count} blocks" + @blocks.each_with_index do |block, i| + msg += "v" * 60 + msg += "Block ##{i} is a #{block.class}" + msg += "Name is #{block.title rescue 'n/a'}" + block.splain(0) if block.respond_to? :splain + msg += "^" * 60 + end + } + nil + end + + def renderer(opts = {}) + return @renderer if @renderer + + render_options = {} + + # Load up relevant Document @options + if @options[:template_dir] + render_options[:template_dir] = @options[:template_dir] + end + + render_options[:backend] = @attributes.fetch('backend', 'html5') + render_options[:eruby] = @options.fetch(:eruby, 'erb') + render_options[:compact] = @options.fetch(:compact, false) + + # Override Document @option settings with options passed in + render_options.merge! opts + + @renderer = Renderer.new(render_options) + end + + # Public: Render the Asciidoc document using the templates + # loaded by Renderer. If a :template_dir is not specified, + # or a template is missing, the renderer will fall back to + # using the appropriate built-in template. + def render(opts = {}) + r = renderer(opts) + @options.merge(opts)[:header_footer] ? r.render('document', self) : r.render('embedded', self) + end + + def content + # per AsciiDoc-spec, remove the title after rendering the header + @attributes.delete('title') + @blocks.map {|b| b.render }.join + end + + def to_s + %[#{super.to_s} - #{doctitle}] + end + +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/errors.rb b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/errors.rb new file mode 100644 index 00000000..793b8861 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/errors.rb @@ -0,0 +1,5 @@ +# Base project exception +module Asciidoctor + class ProjectError < StandardError; end +end + diff --git a/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/inline.rb b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/inline.rb new file mode 100644 index 00000000..64789070 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/inline.rb @@ -0,0 +1,29 @@ +# Public: Methods for managing inline elements in AsciiDoc block +class Asciidoctor::Inline < Asciidoctor::AbstractNode + # Public: Get the text of this inline element + attr_reader :text + + # Public: Get the type (qualifier) of this inline element + attr_reader :type + + # Public: Get/Set the target (e.g., uri) of this inline element + attr_accessor :target + + def initialize(parent, context, text = nil, opts = {}) + super(parent, context) + + @text = text + @id = opts[:id] if opts.has_key?(:id) + @type = opts[:type] if opts.has_key?(:type) + @target = opts[:target] if opts.has_key?(:target) + + if opts.has_key?(:attributes) && (attributes = opts[:attributes]).is_a?(Hash) + update_attributes(opts[:attributes]) unless attributes.empty? + end + end + + def render + renderer.render("inline_#{@context}", self).chomp + end + +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/lexer.rb b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/lexer.rb new file mode 100644 index 00000000..dca08977 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/lexer.rb @@ -0,0 +1,1600 @@ +# Public: Methods to parse lines of AsciiDoc into an object hierarchy +# representing the structure of the document. All methods are class methods and +# should be invoked from the Lexer class. The main entry point is ::next_block. +# No Lexer instances shall be discovered running around. (Any attempt to +# instantiate a Lexer will be futile). +# +# The object hierarchy created by the Lexer consists of zero or more Section +# and Block objects. Section objects may be nested and a Section object +# contains zero or more Block objects. Block objects may be nested, but may +# only contain other Block objects. Block objects which represent lists may +# contain zero or more ListItem objects. +# +# Examples +# +# # Create a Reader for the AsciiDoc lines and retrieve the next block from it. +# # Lexer::next_block requires a parent, so we begin by instantiating an empty Document. +# +# doc = Document.new +# reader = Reader.new lines +# block = Lexer.next_block(reader, doc) +# block.class +# # => Asciidoctor::Block +class Asciidoctor::Lexer + + include Asciidoctor + + # Public: Make sure the Lexer object doesn't get initialized. + # + # Raises RuntimeError if this constructor is invoked. + def initialize + raise 'Au contraire, mon frere. No lexer instances will be running around.' + end + + # Public: Parses AsciiDoc source read from the Reader into the Document + # + # This method is the main entry-point into the Lexer when parsing a full document. + # It first looks for and, if found, processes the document title. It then + # proceeds to iterate through the lines in the Reader, parsing the document + # into nested Sections and Blocks. + # + # reader - the Reader holding the source lines of the document + # document - the empty Document into which the lines will be parsed + # + # returns the Document object + def self.parse(reader, document) + # process and plow away any attribute lines that proceed the first block so + # we can get at the document title, if present, then begin parsing blocks + attributes = parse_block_metadata_lines(reader, document) + + # by processing the header here, we enforce its position at head of the document + next_level = is_next_line_section? reader + if next_level == 0 + title_info = parse_section_title(reader) + document.title = title_info[1] + parse_header_metadata(reader, document) + end + + while reader.has_lines? + new_section, attributes = next_section(reader, document, attributes) + document << new_section unless new_section.nil? + end + + document + end + + # Public: Return the next section from the Reader. + # + # This method process block metadata, content and subsections for this + # section and returns the Section object and any orphaned attributes. + # + # If the parent is a Document and has a header (document title), then + # this method will put any non-section blocks at the start of document + # into a preamble Block. If there are no such blocks, the preamble is + # dropped. + # + # Since we are reading line-by-line, there's a chance that metadata + # that should be associated with the following block gets consumed. + # To deal with this case, the method returns a running Hash of + # "orphaned" attributes that get passed to the next Section or Block. + # + # reader - the source Reader + # parent - the parent Section or Document of this new section + # attributes - a Hash of metadata that was left orphaned from the + # previous Section. + # + # Examples + # + # source + # # => "Greetings\n---------\nThis is my doc.\n\nSalutations\n-----------\nIt is awesome." + # + # reader = Reader.new source.lines.entries + # # create empty document to parent the section + # # and hold attributes extracted from header + # doc = Document.new + # + # Lexer.next_section(reader, doc).first.title + # # => "Greetings" + # + # Lexer.next_section(reader, doc).first.title + # # => "Salutations" + # + # returns a two-element Array containing the Section and Hash of orphaned attributes + def self.next_section(reader, parent, attributes = {}) + preamble = false + + # check if we are at the start of processing the document + # NOTE we could drop a hint in the attributes to indicate + # that we are at a section title (so we don't have to check) + if parent.is_a?(Document) && parent.blocks.empty? && + (parent.has_header? || !is_next_line_section?(reader)) + + if parent.has_header? + preamble = Block.new(parent, :preamble) + parent << preamble + end + section = parent + + current_level = 0 + if parent.attributes.has_key? 'fragment' + expected_next_levels = nil + # small tweak to allow subsequent level-0 sections for book doctype + elsif parent.doctype == 'book' + expected_next_levels = [0, 1] + else + expected_next_levels = [1] + end + else + section = initialize_section(reader, parent, attributes) + # clear attributes, except for title which carries over + # section title to next block of content + attributes = attributes.delete_if {|k, v| k != 'title'} + current_level = section.level + expected_next_levels = [current_level + 1] + end + + reader.skip_blank_lines + + # Parse lines belonging to this section and its subsections until we + # reach the end of this section level + # + # 1. first look for metadata thingies (anchor, attribute list, block title line, etc) + # 2. then look for a section, recurse if found + # 3. then process blocks + # + # We have to parse all the metadata lines before continuing with the loop, + # otherwise subsequent metadata lines get interpreted as block content + while reader.has_lines? + parse_block_metadata_lines(reader, section, attributes) + + next_level = is_next_line_section?(reader) + if next_level + doctype = parent.document.doctype + if next_level == 0 && doctype != 'book' + puts "asciidoctor: ERROR: only book doctypes can contain level 0 sections" + end + if next_level > current_level || (section.is_a?(Document) && next_level == 0) + unless expected_next_levels.nil? || expected_next_levels.include?(next_level) + puts "asciidoctor: WARNING: section title out of sequence: " + + "expected #{expected_next_levels.size > 1 ? 'levels' : 'level'} #{expected_next_levels * ' or '}, " + + "got level #{next_level}" + end + # the attributes returned are those that are orphaned + new_section, attributes = next_section(reader, section, attributes) + section << new_section + else + # close this section (and break out of the nesting) to begin a new one + break + end + else + # just take one block or else we run the risk of overrunning section boundaries + new_block = next_block(reader, section, attributes, :parse_metadata => false) + if !new_block.nil? + (preamble || section) << new_block + attributes = {} + else + # don't clear attributes if we don't find a block because they may + # be trailing attributes that didn't get associated with a block + end + end + + reader.skip_blank_lines + end + + # prune the preamble if it has no content + if preamble && preamble.blocks.empty? + section.delete_at(0) + end + + # The attributes returned here are orphaned attributes that fall at the end + # of a section that need to get transfered to the next section + # see "trailing block attributes transfer to the following section" in + # test/attributes_test.rb for an example + [section != parent ? section : nil, attributes.dup] + end + + # Public: Return the next Section or Block object from the Reader. + # + # Begins by skipping over blank lines to find the start of the next Section + # or Block. Processes each line of the reader in sequence until a Section or + # Block is found or the reader has no more lines. + # + # Uses regular expressions from the Asciidoctor module to match Section + # and Block delimiters. The ensuing lines are then processed according + # to the type of content. + # + # reader - The Reader from which to retrieve the next block + # parent - The Document, Section or Block to which the next block belongs + # + # Returns a Section or Block object holding the parsed content of the processed lines + def self.next_block(reader, parent, attributes = {}, options = {}) + # Skip ahead to the block content + skipped = reader.skip_blank + + # bail if we've reached the end of the section content + return nil unless reader.has_lines? + + if options[:text] && skipped > 0 + options.delete(:text) + end + + Asciidoctor.debug { + msg = [] + msg << '/' * 64 + msg << 'next_block() - First two lines are:' + msg << reader.peek_line + tmp_line = reader.get_line + msg << reader.peek_line + reader.unshift tmp_line + msg << '/' * 64 + msg * "\n" + } + + parse_metadata = options[:parse_metadata] || true + parse_sections = options[:parse_sections] || false + + document = parent.document + context = parent.is_a?(Block) ? parent.context : nil + block = nil + title = nil + caption = nil + + while reader.has_lines? && block.nil? + if parse_metadata && parse_block_metadata_line(reader, document, attributes, options) + reader.next_line + next + elsif parse_sections && context.nil? && is_next_line_section?(reader) + block, attributes = next_section(reader, parent, attributes) + break + end + + this_line = reader.get_line + + delimited_blk = delimited_block? this_line + + # NOTE I've haven't decided whether I want this check here or in + # parse_block_metadata (where it is currently) + #if this_line.match(REGEXP[:comment_blk]) + # reader.grab_lines_until {|line| line.match( REGEXP[:comment_blk] ) } + # reader.skip_blank + # # NOTE we should break here because we have found a block, it + # # just happens to be nil...if we keep going we potentially overrun + # # a section heading which is not processed in this anymore + # break + + # NOTE we're letting ruler have attributes + if !options[:text] && this_line.match(REGEXP[:ruler]) + block = Block.new(parent, :ruler) + reader.skip_blank + + elsif !options[:text] && (match = this_line.match(REGEXP[:image_blk])) + block = Block.new(parent, :image) + AttributeList.new(document.sub_attributes(match[2])).parse_into(attributes, ['alt', 'width', 'height']) + target = block.sub_attributes(match[1]) + if !target.to_s.empty? + attributes['target'] = target + document.register(:images, target) + attributes['alt'] ||= File.basename(target, File.extname(target)) + else + # drop the line if target resolves to nothing + block = nil + end + reader.skip_blank + + elsif delimited_blk && (match = this_line.match(REGEXP[:open_blk])) + # an open block is surrounded by '--' lines and has zero or more blocks inside + terminator = match[0] + buffer = Reader.new reader.grab_lines_until(:terminator => terminator) + + # Strip lines off end of block - not implemented yet + # while buffer.has_lines? && buffer.last.strip.empty? + # buffer.pop + # end + + block = Block.new(parent, :open) + while buffer.has_lines? + new_block = next_block(buffer, block) + block.blocks << new_block unless new_block.nil? + end + + # needs to come before list detection + elsif delimited_blk && (match = this_line.match(REGEXP[:sidebar_blk])) + # sidebar is surrounded by '****' (4 or more '*' chars) lines + terminator = match[0] + # FIXME violates DRY because it's a duplication of quote parsing + block = Block.new(parent, :sidebar) + buffer = Reader.new reader.grab_lines_until(:terminator => terminator) + + while buffer.has_lines? + new_block = next_block(buffer, block) + block.blocks << new_block unless new_block.nil? + end + + elsif match = this_line.match(REGEXP[:colist]) + block = Block.new(parent, :colist) + attributes['style'] = 'arabic' + items = [] + block.buffer = items + reader.unshift this_line + expected_index = 1 + begin + # might want to move this check to a validate method + if match[1].to_i != expected_index + puts "asciidoctor: WARNING: callout list item index: expected #{expected_index} got #{match[1]}" + end + list_item = next_list_item(reader, block, match) + expected_index += 1 + if !list_item.nil? + items << list_item + coids = document.callouts.callout_ids(items.size) + if !coids.empty? + list_item.attributes['coids'] = coids + else + puts 'asciidoctor: WARNING: no callouts refer to list item ' + items.size.to_s + end + end + end while reader.has_lines? && match = reader.peek_line.match(REGEXP[:colist]) + + document.callouts.next_list + + elsif match = this_line.match(REGEXP[:ulist]) + AttributeList.rekey(attributes, ['style']) + reader.unshift(this_line) + block = next_outline_list(reader, :ulist, parent) + + elsif match = this_line.match(REGEXP[:olist]) + AttributeList.rekey(attributes, ['style']) + reader.unshift(this_line) + block = next_outline_list(reader, :olist, parent) + # QUESTION move this logic to next_outline_list? + if !(attributes.has_key? 'style') && !(block.attributes.has_key? 'style') + marker = block.buffer.first.marker + if marker.start_with? '.' + # first one makes more sense, but second on is AsciiDoc-compliant + #attributes['style'] = (ORDERED_LIST_STYLES[block.level - 1] || ORDERED_LIST_STYLES.first).to_s + attributes['style'] = (ORDERED_LIST_STYLES[marker.length - 1] || ORDERED_LIST_STYLES.first).to_s + else + style = ORDERED_LIST_STYLES.detect{|s| marker.match(ORDERED_LIST_MARKER_PATTERNS[s]) } + attributes['style'] = (style || ORDERED_LIST_STYLES.first).to_s + end + end + + elsif match = this_line.match(REGEXP[:dlist]) + reader.unshift this_line + block = next_labeled_list(reader, match, parent) + + elsif delimited_blk && (match = this_line.match(document.nested? ? REGEXP[:table_nested] : REGEXP[:table])) + # table is surrounded by lines starting with a | followed by 3 or more '=' chars + terminator = match[0] + AttributeList.rekey(attributes, ['style']) + table_reader = Reader.new reader.grab_lines_until(:terminator => terminator, :skip_line_comments => true) + block = next_table(table_reader, parent, attributes) + + # FIXME violates DRY because it's a duplication of other block parsing + elsif delimited_blk && (match = this_line.match(REGEXP[:example])) + # example is surrounded by lines with 4 or more '=' chars + terminator = match[0] + AttributeList.rekey(attributes, ['style']) + if admonition_style = ADMONITION_STYLES.detect {|s| attributes['style'] == s} + block = Block.new(parent, :admonition) + attributes['name'] = admonition_style.downcase + attributes['caption'] ||= admonition_style.capitalize + else + block = Block.new(parent, :example) + end + buffer = Reader.new reader.grab_lines_until(:terminator => terminator) + + while buffer.has_lines? + new_block = next_block(buffer, block) + block.blocks << new_block unless new_block.nil? + end + + # FIXME violates DRY w/ non-delimited block listing + elsif delimited_blk && (match = this_line.match(REGEXP[:listing])) + terminator = match[0] + AttributeList.rekey(attributes, ['style', 'language', 'linenums']) + buffer = reader.grab_lines_until(:terminator => terminator) + buffer.last.chomp! unless buffer.empty? + block = Block.new(parent, :listing, buffer) + + elsif delimited_blk && (match = this_line.match(REGEXP[:quote])) + # multi-line verse or quote is surrounded by a block delimiter + terminator = match[0] + AttributeList.rekey(attributes, ['style', 'attribution', 'citetitle']) + quote_context = (attributes['style'] == 'verse' ? :verse : :quote) + block_reader = Reader.new reader.grab_lines_until(:terminator => terminator) + + # only quote can have other section elements (as as section block) + section_body = (quote_context == :quote) + + if section_body + block = Block.new(parent, quote_context) + while block_reader.has_lines? + new_block = next_block(block_reader, block) + block.blocks << new_block unless new_block.nil? + end + else + block_reader.chomp_last! + block = Block.new(parent, quote_context, block_reader.lines) + end + + elsif delimited_blk && (blk_ctx = [:literal, :pass].detect{|t| this_line.match(REGEXP[t])}) + # literal is surrounded by '....' (4 or more '.' chars) lines + # pass is surrounded by '++++' (4 or more '+' chars) lines + terminator = $~[0] + buffer = reader.grab_lines_until(:terminator => terminator) + buffer.last.chomp! unless buffer.empty? + # a literal can masquerade as a listing + if attributes[1] == 'listing' + blk_ctx = :listing + end + block = Block.new(parent, blk_ctx, buffer) + + elsif this_line.match(REGEXP[:lit_par]) + # literal paragraph is contiguous lines starting with + # one or more space or tab characters + + # So we need to actually include this one in the grab_lines group + reader.unshift this_line + buffer = reader.grab_lines_until(:preserve_last_line => true, :break_on_blank_lines => true) {|line| + # labeled list terms can be indented, but a preceding blank indicates + # we are in a list continuation and therefore literals should be strictly literal + (context == :dlist && skipped == 0 && line.match(REGEXP[:dlist])) || + delimited_block?(line) + } + + # trim off the indentation equivalent to the size of the least indented line + if !buffer.empty? + offset = buffer.map {|line| line.match(REGEXP[:leading_blanks])[1].length }.min + if offset > 0 + buffer = buffer.map {|l| l.sub(/^\s{1,#{offset}}/, '') } + end + buffer.last.chomp! + end + + block = Block.new(parent, :literal, buffer) + # a literal gets special meaning inside of a definition list + if LIST_CONTEXTS.include?(context) + attributes['options'] ||= [] + # TODO this feels hacky, better way to distinguish from explicit literal block? + attributes['options'] << 'listparagraph' + end + + ## these switches based on style need to come immediately before the else ## + + elsif attributes[1] == 'source' + AttributeList.rekey(attributes, ['style', 'language', 'linenums']) + reader.unshift(this_line) + buffer = reader.grab_lines_until(:break_on_blank_lines => true) + buffer.last.chomp! unless buffer.empty? + block = Block.new(parent, :listing, buffer) + + elsif admonition_style = ADMONITION_STYLES.detect{|s| attributes[1] == s} + # an admonition preceded by [] and lasts until a blank line + reader.unshift(this_line) + buffer = reader.grab_lines_until(:break_on_blank_lines => true) + buffer.last.chomp! unless buffer.empty? + block = Block.new(parent, :admonition, buffer) + attributes['style'] = admonition_style + attributes['name'] = admonition_style.downcase + attributes['caption'] ||= admonition_style.capitalize + + elsif quote_context = [:quote, :verse].detect{|s| attributes[1] == s.to_s} + # single-paragraph verse or quote is preceded by [verse] or [quote], respectively, and lasts until a blank line + AttributeList.rekey(attributes, ['style', 'attribution', 'citetitle']) + reader.unshift(this_line) + buffer = reader.grab_lines_until(:break_on_blank_lines => true) + buffer.last.chomp! unless buffer.empty? + block = Block.new(parent, quote_context, buffer) + + else # paragraph, contiguous nonblank/noncontinuation lines + reader.unshift this_line + buffer = reader.grab_lines_until(:break_on_blank_lines => true, :preserve_last_line => true, :skip_line_comments => true) {|line| + delimited_block?(line) || line.match(REGEXP[:attr_line]) || + # next list item can be directly adjacent to paragraph of previous list item + context == :dlist && line.match(REGEXP[:dlist]) + # not sure if there are any cases when we need this check for other list types + #LIST_CONTEXTS.include?(context) && line.match(REGEXP[context]) + } + + # NOTE we need this logic because the reader is processing line + # comments and that might leave us w/ an empty buffer + if buffer.empty? + reader.get_line + break + end + + catalog_inline_anchors(buffer.join, document) + + if !options[:text] && (admonition = buffer.first.match(Regexp.new('^(' + ADMONITION_STYLES.join('|') + '):\s+'))) + buffer[0] = admonition.post_match + block = Block.new(parent, :admonition, buffer) + attributes['style'] = admonition[1] + attributes['name'] = admonition[1].downcase + attributes['caption'] ||= admonition[1].capitalize + else + buffer.last.chomp! + block = Block.new(parent, :paragraph, buffer) + end + end + end + + # when looking for nested content, one or more line comments, comment + # blocks or trailing attribute lists could leave us without a block, + # so handle accordingly + if !block.nil? + block.id = attributes['id'] if attributes.has_key?('id') + block.title ||= (attributes['title'] || title) + block.caption ||= caption unless block.is_a?(Section) + # AsciiDoc always use [id] as the reftext in HTML output, + # but I'd like to do better in Asciidoctor + if block.id && block.title? && !attributes.has_key?('reftext') + document.register(:ids, [block.id, block.title]) + end + block.update_attributes(attributes) + + if block.context == :listing || block.context == :literal + catalog_callouts(block.buffer.join, document) + end + end + + block + end + + # Public: Determines whether this line is the start of any of the delimited blocks + # + # returns the match data if this line is the first line of a delimited block or nil if not + #-- + # TODO could use the match value as a lookup for the block type so we don't have + # to do any subsequent regexp + def self.delimited_block?(line) + # naive match + #line.match(REGEXP[:any_blk]) + + # attempt at better performance + if line.length > 0 + # NOTE accessing the first element before calling ord is first Ruby 1.8.7 compat + REGEXP[:any_blk_ord].include?(line[0..0][0].ord) ? line.match(REGEXP[:any_blk]) : nil + else + nil + end + end + + # Internal: Parse and construct an outline list Block from the current position of the Reader + # + # reader - The Reader from which to retrieve the outline list + # list_type - A Symbol representing the list type (:olist for ordered, :ulist for unordered) + # parent - The parent Block to which this outline list belongs + # + # Returns the Block encapsulating the parsed outline (unordered or ordered) list + def self.next_outline_list(reader, list_type, parent) + list_block = Block.new(parent, list_type) + items = [] + list_block.buffer = items + if parent.context == list_type + list_block.level = parent.level + 1 + else + list_block.level = 1 + end + Asciidoctor.debug { "Created #{list_type} block: #{list_block}" } + + while reader.has_lines? && (match = reader.peek_line.match(REGEXP[list_type])) + + marker = resolve_list_marker(list_type, match[1]) + + # if we are moving to the next item, and the marker is different + # determine if we are moving up or down in nesting + if items.size > 0 && marker != items.first.marker + # assume list is nested by default, but then check to see if we are + # popping out of a nested list by matching an ancestor's list marker + this_item_level = list_block.level + 1 + p = parent + while p.context == list_type + if marker == p.buffer.first.marker + this_item_level = p.level + break + end + p = p.parent + end + else + this_item_level = list_block.level + end + + if items.size == 0 || this_item_level == list_block.level + list_item = next_list_item(reader, list_block, match) + elsif this_item_level < list_block.level + # leave this block + break + elsif this_item_level > list_block.level + # If this next list level is down one from the + # current Block's, append it to content of the current list item + items.last.blocks << next_block(reader, list_block) + end + + items << list_item unless list_item.nil? + list_item = nil + + reader.skip_blank + end + + list_block + end + + # Internal: Catalog any callouts found in the text, but don't process them + # + # text - The String of text in which to look for callouts + # document - The current document on which the callouts are stored + # + # Returns nothing + def self.catalog_callouts(text, document) + text.scan(REGEXP[:callout_scan]) { + # alias match for Ruby 1.8.7 compat + m = $~ + next if m[0].start_with? '\\' + document.callouts.register(m[1]) + } + end + + # Internal: Catalog any inline anchors found in the text, but don't process them + # + # text - The String text in which to look for inline anchors + # document - The current document on which the references are stored + # + # Returns nothing + def self.catalog_inline_anchors(text, document) + text.scan(REGEXP[:anchor_macro]) { + # alias match for Ruby 1.8.7 compat + m = $~ + next if m[0].start_with? '\\' + id, reftext = m[1].split(',') + id.sub!(/^("|)(.*)\1$/, '\2') + if !reftext.nil? + reftext.sub!(/^("|)(.*)\1$/m, '\2') + end + document.register(:ids, [id, reftext]) + } + nil + end + + # Internal: Parse and construct a labeled (e.g., definition) list Block from the current position of the Reader + # + # reader - The Reader from which to retrieve the labeled list + # match - The Regexp match for the head of the list + # parent - The parent Block to which this labeled list belongs + # + # Returns the Block encapsulating the parsed labeled list + def self.next_labeled_list(reader, match, parent) + pairs = [] + block = Block.new(parent, :dlist) + block.buffer = pairs + # allows us to capture until we find a labeled item + # that uses the same delimiter (::, :::, :::: or ;;) + sibling_pattern = REGEXP[:dlist_siblings][match[2]] + + begin + pairs << next_list_item(reader, block, match, sibling_pattern) + end while reader.has_lines? && match = reader.peek_line.match(sibling_pattern) + + block + end + + # Internal: Parse and construct the next ListItem for the current bulleted + # (unordered or ordered) list Block, callout lists included, or the next + # term ListItem and definition ListItem pair for the labeled list Block. + # + # First collect and process all the lines that constitute the next list + # item for the parent list (according to its type). Next, parse those lines + # into blocks and associate them with the ListItem (in the case of a + # labeled list, the definition ListItem). Finally, fold the first block + # into the item's text attribute according to rules described in ListItem. + # + # reader - The Reader from which to retrieve the next list item + # list_block - The parent list Block of this ListItem. Also provides access to the list type. + # match - The match Array which contains the marker and text (first-line) of the ListItem + # sibling_trait - The list marker or the Regexp to match a sibling item + # + # Returns the next ListItem or ListItem pair (depending on the list type) + # for the parent list Block. + def self.next_list_item(reader, list_block, match, sibling_trait = nil) + list_type = list_block.context + + if list_type == :dlist + list_term = ListItem.new(list_block, match[1]) + list_item = ListItem.new(list_block, match[3]) + has_text = !match[3].to_s.empty? + else + # Create list item using first line as the text of the list item + list_item = ListItem.new(list_block, match[2]) + + if !sibling_trait + sibling_trait = resolve_list_marker(list_type, match[1], list_block.buffer.size, true) + end + list_item.marker = sibling_trait + has_text = true + end + + # first skip the line with the marker / term + reader.get_line + list_item_reader = Reader.new grab_lines_for_list_item(reader, list_type, sibling_trait, has_text) + if list_item_reader.has_lines? + comment_lines = list_item_reader.consume_line_comments + subsequent_line = list_item_reader.peek_line + list_item_reader.unshift(*comment_lines) unless comment_lines.empty? + + if !subsequent_line.nil? + continuation_connects_first_block = (subsequent_line == "\n") + content_adjacent = !subsequent_line.strip.empty? + else + continuation_connects_first_block = false + content_adjacent = false + end + + # only relevant for :dlist + options = {:text => !has_text} + + while list_item_reader.has_lines? + new_block = next_block(list_item_reader, list_block, {}, options) + list_item.blocks << new_block unless new_block.nil? + end + + list_item.fold_first(continuation_connects_first_block, content_adjacent) + end + + if list_type == :dlist + unless list_item.text? || list_item.blocks? + list_item = nil + end + [list_term, list_item] + else + list_item + end + end + + # Internal: Collect the lines belonging to the current list item, navigating + # through all the rules that determine what comprises a list item. + # + # Grab lines until a sibling list item is found, or the block is broken by a + # terminator (such as a line comment). Definition lists are more greedy if + # they don't have optional inline item text...they want that text + # + # reader - The Reader from which to retrieve the lines. + # list_type - The Symbol context of the list (:ulist, :olist, :colist or :dlist) + # sibling_trait - A Regexp that matches a sibling of this list item or String list marker + # of the items in this list (default: nil) + # has_text - Whether the list item has text defined inline (always true except for labeled lists) + # + # Returns an Array of lines belonging to the current list item. + def self.grab_lines_for_list_item(reader, list_type, sibling_trait = nil, has_text = true) + buffer = [] + + # three states for continuation: :inactive, :active & :frozen + # :frozen signifies we've detected sequential continuation lines & + # continuation is not permitted until reset + continuation = :inactive + + # if we are within a nested list, we don't throw away the list + # continuation marks because they will be processed when grabbing + # the lines for those nested lists + within_nested_list = false + + # a detached continuation is a list continuation that follows a blank line + # it gets associated with the outermost block + detached_continuation = nil + + while reader.has_lines? + this_line = reader.get_line + + # if we've arrived at a sibling item in this list, we've captured + # the complete list item and can begin processing it + # the remainder of the method determines whether we've reached + # the termination of the list + break if is_sibling_list_item?(this_line, list_type, sibling_trait) + + prev_line = buffer.empty? ? nil : buffer.last.chomp + + if prev_line == LIST_CONTINUATION + if continuation == :inactive + continuation = :active + has_text = true + buffer[buffer.size - 1] = "\n" unless within_nested_list + end + + # dealing with adjacent list continuations (which is really a syntax error) + if this_line.chomp == LIST_CONTINUATION + if continuation != :frozen + continuation = :frozen + buffer << this_line + end + this_line = nil + next + end + end + + # a delimited block immediately breaks the list unless preceded + # by a list continuation (they are harsh like that ;0) + if (match = delimited_block?(this_line)) || + # technically attr_line only breaks if ensuing line is not a list item + # which really means attr_line only breaks if it's acting as a block delimiter + (list_type == :dlist && match = this_line.match(REGEXP[:attr_line])) + terminator = match[0] + if continuation == :active + buffer << this_line + # grab all the lines in the block, leaving the delimiters in place + # we're being more strict here about the terminator, but I think that's a good thing + buffer.concat reader.grab_lines_until(:terminator => terminator, :grab_last_line => true) + continuation = :inactive + else + break + end + else + if continuation == :active && !this_line.strip.empty? + # literal paragraphs have special considerations (and this is one of + # two entry points into one) + # if we don't process it as a whole, then a line in it that looks like a + # list item will throw off the exit from it + if this_line.match(REGEXP[:lit_par]) + reader.unshift this_line + buffer.concat reader.grab_lines_until( + :preserve_last_line => true, + :break_on_blank_lines => true, + :break_on_list_continuation => true) + else + if nested_list_type = (within_nested_list ? [:dlist] : NESTABLE_LIST_CONTEXTS).detect {|ctx| this_line.match(REGEXP[ctx]) } + within_nested_list = true + if nested_list_type == :dlist && $~[3].to_s.empty? + # get greedy again + has_text = false + end + end + buffer << this_line + end + continuation = :inactive + elsif !prev_line.nil? && prev_line.strip.empty? + # advance to the next line of content + if this_line.strip.empty? + reader.skip_blank + this_line = reader.get_line + # if we hit eof or a sibling, stop reading + break if this_line.nil? || is_sibling_list_item?(this_line, list_type, sibling_trait) + end + + if this_line.chomp == LIST_CONTINUATION + detached_continuation = buffer.size + buffer << this_line + else + # has_text is only relevant for dlist, which is more greedy until it has text for an item + # for all other lists, has_text is always true + # in this block, we have to see whether we stay in the list + if has_text + # slurp up any literal paragraph offset by blank lines + if this_line.match(REGEXP[:lit_par]) + reader.unshift this_line + buffer.concat reader.grab_lines_until( + :preserve_last_line => true, + :break_on_blank_lines => true, + :break_on_list_continuation => true) + # TODO any way to combine this with the check after skipping blank lines? + elsif is_sibling_list_item?(this_line, list_type, sibling_trait) + #buffer.pop unless within_nested_list + break + elsif nested_list_type = NESTABLE_LIST_CONTEXTS.detect {|ctx| this_line.match(REGEXP[ctx]) } + #buffer.pop unless within_nested_list + buffer << this_line + within_nested_list = true + if nested_list_type == :dlist && $~[3].to_s.empty? + # get greedy again + has_text = false + end + else + break + end + else # only dlist in need of item text, so slurp it up! + # pop the blank line so it's not interpretted as a list continuation + buffer.pop unless within_nested_list + buffer << this_line + has_text = true + end + end + else + has_text = true if !this_line.strip.empty? + if nested_list_type = (within_nested_list ? [:dlist] : NESTABLE_LIST_CONTEXTS).detect {|ctx| this_line.match(REGEXP[ctx]) } + within_nested_list = true + if nested_list_type == :dlist && $~[3].to_s.empty? + # get greedy again + has_text = false + end + end + buffer << this_line + end + end + this_line = nil + end + + reader.unshift this_line if !this_line.nil? + + if detached_continuation + buffer.delete_at detached_continuation + end + + # QUESTION should we strip these trailing endlines? + #buffer.pop while buffer.last == "\n" + + # We do need to replace the optional trailing continuation + # a blank line would have served the same purpose in the document + if !buffer.empty? && buffer.last.chomp == LIST_CONTINUATION + buffer.pop + end + #puts "BUFFER>#{buffer.join}#{buffer} ["Foo\n", "~~~\n"] + # + # title, level, id, single = parse_section_title(reader) + # + # title + # # => "Foo" + # level + # # => 2 + # id + # # => nil + # single + # # => false + # + # line1 + # # => "==== Foo\n" + # + # title, level, id, single = parse_section_title(reader) + # + # title + # # => "Foo" + # level + # # => 3 + # id + # # => nil + # single + # # => true + # + # returns an Array of [String, Integer, String, Boolean], representing the + # id, title, level and line count of the Section, or nil. + # + #-- + # NOTE for efficiency, we don't reuse methods that check for a section title + def self.parse_section_title(reader) + line1 = reader.get_line + sect_id = nil + sect_title = nil + sect_level = 0 + single_line = true + + if match = line1.match(REGEXP[:section_title]) + sect_id = match[3] + sect_title = match[2] + sect_level = single_line_section_level match[1] + else + line2 = reader.peek_line + if !line2.nil? && (name_match = line1.match(REGEXP[:section_name])) && + line2.match(REGEXP[:section_underline]) && + # chomp so that a (non-visible) endline does not impact calculation + (line1.chomp.size - line2.chomp.size).abs <= 1 + if anchor_match = name_match[1].match(REGEXP[:anchor_embedded]) + sect_id = anchor_match[2] + sect_title = anchor_match[1] + else + sect_title = name_match[1] + end + sect_level = section_level line2 + single_line = false + reader.get_line + end + end + return [sect_id, sect_title, sect_level, single_line] + end + + # Public: Consume and parse the two header lines (line 1 = author info, line 2 = revision info). + # + # Returns the Hash of header metadata. If a Document object is supplied, the metadata + # is applied directly to the attributes of the Document. + # + # reader - the Reader holding the source lines of the document + # document - the Document we are building (default: nil) + # + # Examples + # + # parse_header_metadata(Reader.new ["Author Name \n", "v1.0, 2012-12-21: Coincide w/ end of world.\n"]) + # # => {'author' => 'Author Name', 'firstname' => 'Author', 'lastname' => 'Name', 'email' => 'author@example.org', + # # 'revnumber' => '1.0', 'revdate' => '2012-12-21', 'revremark' => 'Coincide w/ end of world.'} + def self.parse_header_metadata(reader, document = nil) + # capture consecutive comment lines so we can reinsert them after the header + comment_lines = reader.consume_comments + + metadata = !document.nil? ? document.attributes : {} + author_initials = metadata['authorinitials'] + if reader.has_lines? && !reader.peek_line.strip.empty? + author_line = reader.get_line + match = author_line.match(REGEXP[:author_info]) + if match + metadata['firstname'] = fname = match[1].tr('_', ' ') + metadata['author'] = fname + metadata['authorinitials'] = fname[0, 1] + if !match[2].nil? && !match[3].nil? + metadata['middlename'] = mname = match[2].tr('_', ' ') + metadata['lastname'] = lname = match[3].tr('_', ' ') + metadata['author'] = [fname, mname, lname].join ' ' + metadata['authorinitials'] = [fname[0, 1], mname[0, 1], lname[0, 1]].join + elsif !match[2].nil? + metadata['lastname'] = lname = match[2].tr('_', ' ') + metadata['author'] = [fname, lname].join ' ' + metadata['authorinitials'] = [fname[0, 1], lname[0, 1]].join + end + metadata['email'] = match[4] unless match[4].nil? + else + metadata['author'] = metadata['firstname'] = author_line.strip.squeeze(' ') + metadata['authorinitials'] = metadata['firstname'][0, 1] + end + + # hack because of incorrect order of attribute processing + metadata['authorinitials'] = author_initials unless author_initials.nil? + + # capture consecutive comment lines so we can reinsert them after the header + comment_lines += reader.consume_comments + + if reader.has_lines? && !reader.peek_line.strip.empty? + rev_line = reader.get_line + match = rev_line.match(REGEXP[:revision_info]) + if match + metadata['revdate'] = match[2] + metadata['revnumber'] = match[1] unless match[1].nil? + metadata['revremark'] = match[3] unless match[3].nil? + else + metadata['revdate'] = rev_line.strip + end + end + + reader.skip_blank + end + + reader.unshift(*comment_lines) + metadata + end + + # Internal: Parse lines of metadata until a line of metadata is not found. + # + # This method processes sequential lines containing block metadata, ignoring + # blank lines and comments. + # + # reader - the source reader + # parent - the parent to which the lines belong + # attributes - a Hash of attributes in which any metadata found will be stored (default: {}) + # options - a Hash of options to control processing: (default: {}) + # * :text indicates that lexer is only looking for text content + # and thus the block title should not be captured + # + # returns the Hash of attributes including any metadata found + def self.parse_block_metadata_lines(reader, parent, attributes = {}, options = {}) + while parse_block_metadata_line(reader, parent, attributes, options) + reader.next_line + reader.skip_blank_lines + end + attributes + end + + # Internal: Parse the next line if it contains metadata for the following block + # + # This method handles lines with the following content: + # + # * line or block comment + # * anchor + # * attribute list + # * block title + # + # Any attributes found will be inserted into the attributes argument. + # If the line contains block metadata, the method returns true, otherwise false. + # + # reader - the source reader + # parent - the parent of the current line + # attributes - a Hash of attributes in which any metadata found will be stored + # options - a Hash of options to control processing: (default: {}) + # * :text indicates that lexer is only looking for text content + # and thus the block title should not be captured + # + # returns true if the line contains metadata, otherwise false + def self.parse_block_metadata_line(reader, parent, attributes, options = {}) + return false if !reader.has_lines? + next_line = reader.peek_line + if next_line.match(REGEXP[:comment]) + # do nothing, we'll skip it + # QUESTION should we parse block comments here instead of next_block? + # disable until we can agree what the current line is coming in + elsif match = next_line.match(REGEXP[:comment_blk]) + terminator = match[0] + reader.grab_lines_until(:skip_first_line => true, :preserve_last_line => true, :terminator => terminator) + elsif match = next_line.match(REGEXP[:anchor]) + id, reftext = match[1].split(',') + attributes['id'] = id + # AsciiDoc always use [id] as the reftext in HTML output, + # but I'd like to do better in Asciidoctor + #parent.document.register(:ids, id) + if reftext + attributes['reftext'] = reftext + parent.document.register(:ids, [id, reftext]) + end + elsif match = next_line.match(REGEXP[:blk_attr_list]) + AttributeList.new(parent.document.sub_attributes(match[1]), parent.document).parse_into(attributes) + # NOTE title doesn't apply to section, but we need to stash it for the first block + # TODO need test for this getting passed on to first block after section if found above section + # TODO should issue an error if this is found above the document title + elsif !options[:text] && (match = next_line.match(REGEXP[:blk_title])) + attributes['title'] = match[1] + else + return false + end + + true + end + + # Internal: Resolve the 0-index marker for this list item + # + # For ordered lists, match the marker used for this list item against the + # known list markers and determine which marker is the first (0-index) marker + # in its number series. + # + # For callout lists, return <1>. + # + # For bulleted lists, return the marker as passed to this method. + # + # list_type - The Symbol context of the list + # marker - The String marker for this list item + # ordinal - The position of this list item in the list + # validate - Whether to validate the value of the marker + # + # Returns the String 0-index marker for this list item + def self.resolve_list_marker(list_type, marker, ordinal = 0, validate = false) + if list_type == :olist && !marker.start_with?('.') + resolve_ordered_list_marker(marker, ordinal, validate) + elsif list_type == :colist + '<1>' + else + marker + end + end + + # Internal: Resolve the 0-index marker for this ordered list item + # + # Match the marker used for this ordered list item against the + # known ordered list markers and determine which marker is + # the first (0-index) marker in its number series. + # + # The purpose of this method is to normalize the implicit numbered markers + # so that they can be compared against other list items. + # + # marker - The marker used for this list item + # ordinal - The 0-based index of the list item (default: 0) + # validate - Perform validation that the marker provided is the proper + # marker in the sequence (default: false) + # + # Examples + # + # marker = 'B.' + # Lexer::resolve_ordered_list_marker(marker, 1, true) + # # => 'A.' + # + # Returns the String of the first marker in this number series + def self.resolve_ordered_list_marker(marker, ordinal = 0, validate = false) + number_style = ORDERED_LIST_STYLES.detect {|s| marker.match(ORDERED_LIST_MARKER_PATTERNS[s]) } + expected = actual = nil + case number_style + when :arabic + if validate + expected = ordinal + 1 + actual = marker.to_i + end + marker = '1.' + when :loweralpha + if validate + expected = ('a'[0].ord + ordinal).chr + actual = marker.chomp('.') + end + marker = 'a.' + when :upperalpha + if validate + expected = ('A'[0].ord + ordinal).chr + actual = marker.chomp('.') + end + marker = 'A.' + when :lowerroman + if validate + # TODO report this in roman numerals; see https://github.com/jamesshipton/roman-numeral/blob/master/lib/roman_numeral.rb + expected = ordinal + 1 + actual = roman_numeral_to_int(marker.chomp(')')) + end + marker = 'i)' + when :upperroman + if validate + # TODO report this in roman numerals; see https://github.com/jamesshipton/roman-numeral/blob/master/lib/roman_numeral.rb + expected = ordinal + 1 + actual = roman_numeral_to_int(marker.chomp(')')) + end + marker = 'I)' + end + + if validate && expected != actual + puts "asciidoctor: WARNING: list item index: expected #{expected}, got #{actual}" + end + + marker + end + + # Internal: Determine whether the this line is a sibling list item + # according to the list type and trait (marker) provided. + # + # line - The String line to check + # list_type - The context of the list (:olist, :ulist, :colist, :dlist) + # sibling_trait - The String marker for the list or the Regexp to match a sibling + # + # Returns a Boolean indicating whether this line is a sibling list item given + # the criteria provided + def self.is_sibling_list_item?(line, list_type, sibling_trait) + if sibling_trait.is_a?(Regexp) + matcher = sibling_trait + expected_marker = false + else + matcher = REGEXP[list_type] + expected_marker = sibling_trait + end + + if m = line.match(matcher) + if expected_marker + expected_marker == resolve_list_marker(list_type, m[1]) + else + true + end + else + false + end + end + + # Internal: Parse the table contained in the provided Reader + # + # table_reader - a Reader containing the source lines of an AsciiDoc table + # parent - the parent Block of this Asciidoctor::Table + # attributes - attributes captured from above this Block + # + # returns an instance of Asciidoctor::Table parsed from the provided reader + def self.next_table(table_reader, parent, attributes) + table = Table.new(parent, attributes) + + if attributes.has_key? 'cols' + table.create_columns(parse_col_specs(attributes['cols'])) + explicit_col_specs = true + else + explicit_col_specs = false + end + + table_reader.skip_blank_lines + + parser_ctx = Asciidoctor::Table::ParserContext.new(table, attributes) + while table_reader.has_lines? + line = table_reader.get_line + + if parser_ctx.format == 'psv' + if parser_ctx.starts_with_delimiter? line + line = line[1..-1] + # push an empty cell spec if boundary at start of line + parser_ctx.close_open_cell + else + next_cell_spec, line = parse_cell_spec(line, :start) + # if the cell spec is not null, then we're at a cell boundary + if !next_cell_spec.nil? + parser_ctx.close_open_cell next_cell_spec + else + # QUESTION do we not advance to next line? if so, when + # will we if we came into this block? + end + end + end + + while !line.empty? + if m = parser_ctx.match_delimiter(line) + if parser_ctx.format == 'csv' + if parser_ctx.buffer_has_unclosed_quotes?(m.pre_match) + # throw it back, it's too small + line = parser_ctx.skip_matched_delimiter(m) + next + end + else + if m.pre_match.end_with? '\\' + line = parser_ctx.skip_matched_delimiter(m, true) + next + end + end + + if parser_ctx.format == 'psv' + next_cell_spec, cell_text = parse_cell_spec(m.pre_match, :end) + parser_ctx.push_cell_spec next_cell_spec + parser_ctx.buffer << cell_text + else + parser_ctx.buffer << m.pre_match + end + + line = m.post_match + parser_ctx.close_cell + else + # no other delimiters to see here + # suck up this line into the buffer and move on + parser_ctx.buffer << line + # QUESTION make this an option? (unwrap-option?) + if parser_ctx.format == 'csv' + parser_ctx.buffer.rstrip!.concat(' ') + end + line = '' + if parser_ctx.format == 'psv' || (parser_ctx.format == 'csv' && + parser_ctx.buffer_has_unclosed_quotes?) + parser_ctx.keep_cell_open + else + parser_ctx.close_cell true + end + end + end + + table_reader.skip_blank_lines unless parser_ctx.cell_open? + + if !table_reader.has_lines? + parser_ctx.close_cell true + end + end + + table.attributes['colcount'] ||= parser_ctx.col_count + + if !explicit_col_specs + # TODO further encapsulate this logic (into table perhaps?) + even_width = (100.0 / parser_ctx.col_count).floor + table.columns.each {|c| c.assign_width(0, even_width) } + end + + table.partition_header_footer attributes + + table + end + + # Internal: Parse the column specs for this table. + # + # The column specs dictate the number of columns, relative + # width of columns, default alignments for cells in each + # column, and/or default styles or filters applied to the cells in + # the column. + # + # Every column spec is guaranteed to have a width + # + # returns a Hash of attributes that specify how to format + # and layout the cells in the table. + def self.parse_col_specs(records) + specs = [] + + # check for deprecated syntax + if m = records.match(REGEXP[:digits]) + 1.upto(m[0].to_i) { + specs << {'width' => 1} + } + return specs + end + + records.split(',').each {|record| + # TODO might want to use scan rather than this mega-regexp + if m = record.match(REGEXP[:table_colspec]) + spec = {} + if m[2] + # make this an operation + colspec, rowspec = m[2].split '.' + if !colspec.to_s.empty? && Table::ALIGNMENTS[:h].has_key?(colspec) + spec['halign'] = Table::ALIGNMENTS[:h][colspec] + end + if !rowspec.to_s.empty? && Table::ALIGNMENTS[:v].has_key?(rowspec) + spec['valign'] = Table::ALIGNMENTS[:v][rowspec] + end + end + + # TODO support percentage width + spec['width'] = !m[3].nil? ? m[3].to_i : 1 + + # make this an operation + if m[4] && Table::TEXT_STYLES.has_key?(m[4]) + spec['style'] = Table::TEXT_STYLES[m[4]] + end + + repeat = !m[1].nil? ? m[1].to_i : 1 + + 1.upto(repeat) { + specs << spec.dup + } + end + } + specs + end + + # Internal: Parse the cell specs for the current cell. + # + # The cell specs dictate the cell's alignments, styles or filters, + # colspan, rowspan and/or repeating content. + # + # returns the Hash of attributes that indicate how to layout + # and style this cell in the table. + def self.parse_cell_spec(line, pos = :start) + # the default for the end pos it {} since we + # know we're at a delimiter; when the pos + # is start, we *may* be at a delimiter and + # nil indicates we're not + spec = (pos == :end ? {} : nil) + rest = line + + if m = line.match(REGEXP[:table_cellspec][pos]) + spec = {} + return [spec, line] if m[0].strip.empty? + rest = (pos == :start ? m.post_match : m.pre_match) + if m[1] + colspec, rowspec = m[1].split '.' + colspec = colspec.to_s.empty? ? 1 : colspec.to_i + rowspec = rowspec.to_s.empty? ? 1 : rowspec.to_i + if m[2] == '+' + spec['colspan'] = colspec unless colspec == 1 + spec['rowspan'] = rowspec unless rowspec == 1 + elsif m[2] == '*' + spec['repeatcol'] = colspec unless colspec == 1 + end + end + + if m[3] + colspec, rowspec = m[3].split '.' + if !colspec.to_s.empty? && Table::ALIGNMENTS[:h].has_key?(colspec) + spec['halign'] = Table::ALIGNMENTS[:h][colspec] + end + if !rowspec.to_s.empty? && Table::ALIGNMENTS[:v].has_key?(rowspec) + spec['valign'] = Table::ALIGNMENTS[:v][rowspec] + end + end + + if m[4] && Table::TEXT_STYLES.has_key?(m[4]) + spec['style'] = Table::TEXT_STYLES[m[4]] + end + end + + [spec, rest] + end + + # Internal: Converts a Roman numeral to an integer value. + # + # value - The String Roman numeral to convert + # + # Returns the Integer for this Roman numeral + def self.roman_numeral_to_int(value) + value = value.downcase + digits = { 'i' => 1, 'v' => 5, 'x' => 10 } + result = 0 + + (0..value.length - 1).each {|i| + digit = digits[value[i..i]] + if i + 1 < value.length && digits[value[i+1..i+1]] > digit + result -= digit + else + result += digit + end + } + + result + end +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/list_item.rb b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/list_item.rb new file mode 100644 index 00000000..2cf3c684 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/list_item.rb @@ -0,0 +1,81 @@ +# Public: Methods for managing items for AsciiDoc olists, ulist, and dlists. +class Asciidoctor::ListItem < Asciidoctor::AbstractBlock + + # Public: Get/Set the String used to mark this list item + attr_accessor :marker + + # Public: Initialize an Asciidoctor::ListItem object. + # + # parent - The parent list block for this list item + # text - the String text (default nil) + def initialize(parent, text = nil) + super(parent, :list_item) + @text = text + @level = parent.level + end + + def text? + !@text.to_s.empty? + end + + def text + # this will allow the text to be processed + ::Asciidoctor::Block.new(self, nil, [@text]).content + end + + def content + blocks? ? blocks.map {|b| b.render }.join : nil + end + + # Public: Fold the first paragraph block into the text + # + # Here are the rules for when a folding occurs: + # + # Given: this list item has at least one block + # When: the first block is a paragraph that's not connected by a list continuation + # Or: the first block is an indented paragraph that's adjacent (wrapped line) + # Or: the first block is an indented paragraph that's not connected by a list continuation + # Then: then drop the first block and fold it's content (buffer) into the list text + # + # Returns nothing + def fold_first(continuation_connects_first_block = false, content_adjacent = false) + if !blocks.empty? && blocks.first.is_a?(Asciidoctor::Block) && + ((blocks.first.context == :paragraph && !continuation_connects_first_block) || + ((content_adjacent || !continuation_connects_first_block) && blocks.first.context == :literal && + blocks.first.attr('options', []).include?('listparagraph'))) + + block = blocks.shift + unless @text.to_s.empty? + block.buffer.unshift(@text) + end + + @text = block.buffer.join("\n") + end + nil + end + + def splain(parent_level = 0) + parent_level += 1 + Asciidoctor.puts_indented(parent_level, "List Item anchor: #{@anchor}") unless @anchor.nil? + Asciidoctor.puts_indented(parent_level, "Text: #{@text}") unless @text.nil? + + Asciidoctor.puts_indented(parent_level, "Blocks: #{@blocks.count}") + + if @blocks.any? + Asciidoctor.puts_indented(parent_level, "Blocks content (#{@blocks.count}):") + @blocks.each_with_index do |block, i| + Asciidoctor.puts_indented(parent_level, "v" * (60 - parent_level*2)) + Asciidoctor.puts_indented(parent_level, "Block ##{i} is a #{block.class}") + Asciidoctor.puts_indented(parent_level, "Name is #{block.title rescue 'n/a'}") + Asciidoctor.puts_indented(parent_level, "=" * 40) + block.splain(parent_level) if block.respond_to? :splain + Asciidoctor.puts_indented(parent_level, "^" * (60 - parent_level*2)) + end + end + nil + end + + def to_s + "#{super.to_s} - #@context [text:#@text, blocks:#{(@blocks || []).size}]" + end +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/reader.rb b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/reader.rb new file mode 100644 index 00000000..7f367ce1 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/reader.rb @@ -0,0 +1,416 @@ +# Public: Methods for retrieving lines from Asciidoc documents +class Asciidoctor::Reader + + include Asciidoctor + + # Public: Get the String document source. + attr_reader :source + + # Public: Get the String Array of lines parsed from the source + attr_reader :lines + + # Public: Initialize the Reader object. + # + # data - The Array of Strings holding the Asciidoc source document. The + # original instance of this Array is not modified + # document - The document with which this reader is associated. Used to access + # document attributes + # overrides - A Hash of attributes that were passed to the Document and should + # prevent attribute assignments or removals of matching keys found in + # the document + # block - A block that can be used to retrieve external Asciidoc + # data to include in this document. + # + # Examples + # + # data = File.readlines(filename) + # reader = Asciidoctor::Reader.new data + def initialize(data = [], document = nil, overrides = nil, &block) + # if document is nil, we assume this is a preprocessed string + if document.nil? + @lines = data.is_a?(String) ? data.lines.entries : data.dup + elsif !data.empty? + @overrides = overrides || {} + @document = document + process(data.is_a?(String) ? data.lines.entries : data, &block) + else + @lines = [] + end + + # just in case we got some nils floating at the end of our lines after reading a funky document + @lines.pop until @lines.empty? || !@lines.last.nil? + + @source = @lines.join + end + + # Public: Check whether there are any lines left to read. + # + # Returns true if !@lines.empty? is true, or false otherwise. + def has_lines? + !@lines.empty? + end + + # Public: Check whether this reader is empty (contains no lines) + # + # Returns true if @lines.empty? is true, otherwise false. + def empty? + @lines.empty? + end + + # Private: Strip off leading blank lines in the Array of lines. + # + # Examples + # + # @lines + # => ["\n", "\t\n", "Foo\n", "Bar\n", "\n"] + # + # skip_blank + # => 2 + # + # @lines + # => ["Foo\n", "Bar\n"] + # + # Returns an Integer of the number of lines skipped + def skip_blank + skipped = 0 + while has_lines? && @lines.first.strip.empty? + @lines.shift + skipped += 1 + end + + skipped + end + # Create alias of skip_blank named skip_blank_lines for readability + # TODO likely want to drop the original method name + alias :skip_blank_lines :skip_blank + + # Public: Consume consecutive lines containing line- or block-level comments. + # + # Returns the Array of lines that were consumed + # + # Examples + # @lines + # => ["// foo\n", "////\n", "foo bar\n", "////\n", "actual text\n"] + # + # comment_lines = consume_comments + # => ["// foo\n", "////\n", "foo bar\n", "////\n"] + # + # @lines + # => ["actual text\n"] + def consume_comments(opts = {}) + comment_lines = [] + while !@lines.empty? + next_line = peek_line + if opts[:include_blanks] && next_line.strip.empty? + comment_lines << get_line + elsif match = next_line.match(REGEXP[:comment_blk]) + comment_lines << get_line + comment_lines.push(*(grab_lines_until(:terminator => match[0], :preserve_last_line => true))) + comment_lines << get_line + elsif next_line.match(REGEXP[:comment]) + comment_lines << get_line + else + break + end + end + + comment_lines + end + + # Public: Consume consecutive lines containing line comments. + # + # Returns the Array of lines that were consumed + # + # Examples + # @lines + # => ["// foo\n", "bar\n"] + # + # comment_lines = consume_comments + # => ["// foo\n"] + # + # @lines + # => ["bar\n"] + def consume_line_comments + comment_lines = [] + while !@lines.empty? + if peek_line.match(REGEXP[:comment]) + comment_lines << get_line + else + break + end + end + + comment_lines + end + + # Skip the next line if it's a list continuation character + # + # Returns nil + def skip_list_continuation + if has_lines? && @lines.first.chomp == '+' + @lines.shift + end + + nil + end + + # Public: Get the next line of source data. Consumes the line returned. + # + # Returns the String of the next line of the source data if data is present. + # Returns nil if there is no more data. + def get_line + @lines.shift + end + # QUESTION what about advance? + # Create an alias of get_line named next_line for readability + alias :next_line :get_line + + # Public: Get the next line of source data. Does not consume the line returned. + # + # Returns a String dup of the next line of the source data if data is present. + # Returns nil if there is no more data. + def peek_line + @lines.first.dup if @lines.first + end + + # Public: Push Array of string `lines` onto queue of source data lines, unless `lines` has no non-nil values. + # + # Returns nil + def unshift(*new_lines) + @lines.unshift(*new_lines) if !new_lines.empty? + nil + end + + # Public: Chomp the String on the last line if this reader contains at least one line + # + # Delegates to chomp! + # + # Returns nil + def chomp_last! + @lines.last.chomp! unless @lines.empty? + nil + end + + # Public: Return all the lines from `@lines` until we (1) run out them, + # (2) find a blank line with :break_on_blank_lines => true, or (3) find + # a line for which the given block evals to true. + # + # options - an optional Hash of processing options: + # * :break_on_blank_lines may be used to specify to break on + # blank lines + # * :skip_first_line may be used to tell the reader to advance + # beyond the first line before beginning the scan + # * :preserve_last_line may be used to specify that the String + # causing the method to stop processing lines should be + # pushed back onto the `lines` Array. + # * :grab_last_line may be used to specify that the String + # causing the method to stop processing lines should be + # included in the lines being returned + # + # Returns the Array of lines forming the next segment. + # + # Examples + # + # reader = Reader.new ["First paragraph\n", "Second paragraph\n", + # "Open block\n", "\n", "Can have blank lines\n", + # "--\n", "\n", "In a different segment\n"] + # + # reader.grab_lines_until + # => ["First paragraph\n", "Second paragraph\n", "Open block\n"] + def grab_lines_until(options = {}, &block) + buffer = [] + + finis = false + get_line if options[:skip_first_line] + # save options to locals for minor optimization + terminator = options[:terminator] + terminator.chomp! if terminator + break_on_blank_lines = options[:break_on_blank_lines] + break_on_list_continuation = options[:break_on_list_continuation] + while (this_line = self.get_line) + Asciidoctor.debug { "Reader processing line: '#{this_line}'" } + finis = true if terminator && this_line.chomp == terminator + finis = true if !finis && break_on_blank_lines && this_line.strip.empty? + finis = true if !finis && break_on_list_continuation && this_line.chomp == LIST_CONTINUATION + finis = true if !finis && block && yield(this_line) + if finis + self.unshift(this_line) if options[:preserve_last_line] + buffer << this_line if options[:grab_last_line] + break + end + + if options[:skip_line_comments] && this_line.match(REGEXP[:comment]) + # skip it + else + buffer << this_line + end + end + + buffer + end + + # Public: Convert a string to a legal attribute name. + # + # name - The String holding the Asciidoc attribute name. + # + # Returns a String with the legal name. + # + # Examples + # + # sanitize_attribute_name('Foo Bar') + # => 'foobar' + # + # sanitize_attribute_name('foo') + # => 'foo' + # + # sanitize_attribute_name('Foo 3 #-Billy') + # => 'foo3-billy' + def sanitize_attribute_name(name) + name.gsub(/[^\w\-]/, '').downcase + end + + # Private: Process raw input, used for the outermost reader. + def process(data, &block) + raw_source = [] + include_depth = @document.attr('include-depth', 0).to_i + + data.each do |line| + if inc = line.match(REGEXP[:include_macro]) + if inc[0].start_with? '\\' + raw_source << line[1..-1] + # if running in SafeMode::SECURE or greater, don't process + # this directive (or should we swallow it?) + elsif @document.safe >= SafeMode::SECURE + raw_source << line + # assume that if a block is given, the developer wants + # to handle when and how to process the include, even + # if the include-depth attribute is 0 + elsif block_given? + raw_source.concat yield(inc[1]) + elsif include_depth > 0 + raw_source.concat File.readlines(@document.normalize_asset_path(inc[1], 'include file')) + else + raw_source << line + end + else + raw_source << line + end + end + + skip_to = nil + continuing_value = nil + continuing_key = nil + @lines = [] + + raw_source.each do |line| + if skip_to + skip_to = nil if line.match(skip_to) + elsif continuing_value + close_continue = false + # Lines that start with whitespace and end with a '+' are + # a continuation, so gobble them up into `value` + if line.match(REGEXP[:attr_continue]) + continuing_value += ' ' + $1 + # An empty line ends a continuation + elsif line.strip.empty? + raw_source.unshift(line) + close_continue = true + else + # If this continued line isn't empty and doesn't end with a +, then + # this is the end of the continuation, no matter what the next line + # does. + continuing_value += ' ' + line.strip + close_continue = true + end + if close_continue + unless attribute_overridden? continuing_key + @document.attributes[continuing_key] = apply_attribute_value_subs(continuing_value) + end + continuing_key = nil + continuing_value = nil + end + elsif line.match(REGEXP[:ifdef_macro]) + attr = $2 + skip = case $1 + when 'ifdef'; !@document.attributes.has_key?(attr) + when 'ifndef'; @document.attributes.has_key?(attr) + end + skip_to = /^endif::#{attr}\[\]\s*\n/ if skip + elsif line.match(REGEXP[:attr_assign]) + key = sanitize_attribute_name($1) + value = $2 + if value.match(REGEXP[:attr_continue]) + # attribute value continuation line; grab lines until we run out + # of continuation lines + continuing_key = key + continuing_value = $1 # strip off the spaces and + + else + unless attribute_overridden? key + @document.attributes[key] = apply_attribute_value_subs(value) + if key == 'backend' + @document.update_backend_attributes() + end + end + end + elsif line.match(REGEXP[:attr_delete]) + key = sanitize_attribute_name($1) + unless attribute_overridden? key + @document.attributes.delete(key) + end + elsif !line.match(REGEXP[:endif_macro]) + while line.match(REGEXP[:attr_conditional]) + value = @document.attributes.has_key?($1) ? $2 : '' + line.sub!(conditional_regexp, value) + end + # leave line comments in as they play a role in flow (such as a list divider) + @lines << line + end + end + + # Process bibliography references, so they're available when text + # before the reference is being rendered. + # FIXME we don't have support for bibliography lists yet, so disable for now + # plus, this should be done while we are walking lines above + #@lines.each do |line| + # if biblio = line.match(REGEXP[:biblio]) + # @document.register(:ids, biblio[1]) + # end + #end + end + + # Internal: Determine if the attribute has been overridden in the document options + # + # key - The attribute key to check + # + # Returns true if the attribute has been overridden, false otherwise + def attribute_overridden?(key) + @overrides.has_key?(key) || @overrides.has_key?(key + '!') + end + + # Internal: Apply substitutions to the attribute value + # + # If the value is an inline passthrough macro (e.g., pass:[text]), then + # apply the substitutions defined on the macro to the text. Otherwise, + # apply the verbatim substitutions to the value. + # + # value - The String attribute value on which to perform substitutions + # + # Returns The String value with substitutions performed. + def apply_attribute_value_subs(value) + if value.match(REGEXP[:pass_macro_basic]) + # copy match for Ruby 1.8.7 compat + m = $~ + subs = [] + if !m[1].empty? + subs = @document.resolve_subs(m[1]) + end + if !subs.empty? + @document.apply_subs(m[2], subs) + else + m[2] + end + else + @document.apply_header_subs(value) + end + end +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/renderer.rb b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/renderer.rb new file mode 100644 index 00000000..3d849144 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/renderer.rb @@ -0,0 +1,178 @@ +# Public: Methods for rendering Asciidoc Documents, Sections, and Blocks +# using eRuby templates. +class Asciidoctor::Renderer + attr_reader :compact + + # Public: Initialize an Asciidoctor::Renderer object. + # + def initialize(options={}) + @debug = !!options[:debug] + + @views = {} + @compact = options[:compact] + + backend = options[:backend] + case backend + when 'html5', 'docbook45' + eruby = load_eruby options[:eruby] + #Asciidoctor.require_library 'asciidoctor/backends/' + backend + require 'asciidoctor/backends/' + backend + # Load up all the template classes that we know how to render for this backend + Asciidoctor::BaseTemplate.template_classes.each do |tc| + if tc.to_s.downcase.include?('::' + backend + '::') # optimization + view_name, view_backend = self.class.extract_view_mapping(tc) + if view_backend == backend + @views[view_name] = tc.new(view_name, eruby) + end + end + end + else + Asciidoctor.debug { "No built-in templates for backend: #{backend}" } + end + + # If user passed in a template dir, let them override our base templates + if template_dir = options.delete(:template_dir) + Asciidoctor.require_library 'tilt' + + Asciidoctor.debug { + msg = [] + msg << "Views going in are like so:" + msg << @views.map {|k, v| "#{k}: #{v}"} + msg << '=' * 60 + msg * "\n" + } + + # Grab the files in the top level of the directory (we're not traversing) + files = Dir.glob(File.join(template_dir, '*')).select{|f| File.stat(f).file?} + files.inject(@views) do |view_hash, view| + name = File.basename(view).split('.').first + view_hash.merge!(name => Tilt.new(view, nil, :trim => '<>', :attr_wrapper => '"')) + end + + Asciidoctor.debug { + msg = [] + msg << "Views going in are like so:" + msg << @views.map {|k, v| "#{k}: #{v}"} + msg << '=' * 60 + msg * "\n" + } + end + + @render_stack = [] + end + + # Public: Render an Asciidoc object with a specified view template. + # + # view - the String view template name. + # object - the Object to be used as an evaluation scope. + # locals - the optional Hash of locals to be passed to Tilt (default {}) (also ignored, really) + def render(view, object, locals = {}) + @render_stack.push([view, object]) + + if !@views.has_key? view + raise "Couldn't find a view in @views for #{view}" + else + Asciidoctor.debug { "View for #{view} is #{@views[view]}, object is #{object}" } + end + + ret = @views[view].render(object, locals) + + if @debug + prefix = '' + STDERR.puts '=' * 80 + STDERR.puts "Rendering:" + @render_stack.each do |stack_view, stack_obj| + obj_info = case stack_obj + when Asciidoctor::Section; "SECTION #{stack_obj.title}" + when Asciidoctor::Block; + if stack_obj.context == :dlist + dt_list = stack_obj.buffer.map{|dt,dd| dt.content.strip}.join(', ') + "BLOCK :dlist (#{dt_list})" + #else + # "BLOCK #{stack_obj.context.inspect}" + end + else stack_obj.class + end + STDERR.puts "#{prefix}#{stack_view}: #{obj_info}" + prefix << ' ' + end + STDERR.puts '-' * 80 + #STDERR.puts ret.inspect + STDERR.puts '=' * 80 + STDERR.puts + end + + @render_stack.pop + ret + end + + def views + readonly_views = @views.dup + readonly_views.freeze + readonly_views + end + + # Internal: Load the eRuby implementation + # + # name - the String name of the eRuby implementation (default: 'erb') + # + # returns the eRuby implementation class + def load_eruby(name) + if name.nil? || !['erb', 'erubis'].include?(name) + name = 'erb' + end + + Asciidoctor.require_library name + + if name == 'erb' + ::ERB + elsif name == 'erubis' + ::Erubis::FastEruby + end + end + + # Internal: Extracts the view name and backend from a qualified Ruby class + # + # The purpose of this method is to determine the view name and backend to + # which a built-in template class maps. We can make certain assumption since + # we have control over these class names. The Asciidoctor:: prefix and + # Template suffix are stripped as the first step in the conversion. + # + # qualified_class - The Class or String qualified class name from which to extract the view name and backend + # + # Examples + # + # Renderer.extract_view_mapping(Asciidoctor::HTML5::DocumentTemplate) + # # => ['document', 'html5'] + # + # Renderer.extract_view_mapping(Asciidoctor::DocBook45::BlockSidebarTemplate) + # # => ['block_sidebar', 'docbook45'] + # + # Returns A two-element String Array mapped as [view_name, backend], where backend may be nil + def self.extract_view_mapping(qualified_class) + view_name, backend = qualified_class.to_s. + gsub(/^Asciidoctor::/, ''). + gsub(/Template$/, ''). + split('::').reverse + view_name = camelcase_to_underscore(view_name) + backend = backend.downcase unless backend.nil? + [view_name, backend] + end + + # Internal: Convert a CamelCase word to an underscore-delimited word + # + # Examples + # + # Renderer.camelcase_to_underscore('BlockSidebar') + # # => 'block_sidebar' + # + # Renderer.camelcase_to_underscore('BlockUlist') + # # => 'block_ulist' + # + # Returns the String converted from CamelCase to underscore-delimited + def self.camelcase_to_underscore(str) + str.gsub(/([[:upper:]]+)([[:upper:]][[:alpha:]])/, '\1_\2'). + gsub(/([[:lower:]])([[:upper:]])/, '\1_\2').downcase + end + +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/section.rb b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/section.rb new file mode 100644 index 00000000..1c325bcd --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/section.rb @@ -0,0 +1,161 @@ +# Public: Methods for managing sections of AsciiDoc content in a document. +# The section responds as an Array of content blocks by delegating +# block-related methods to its @blocks Array. +# +# Examples +# +# section = Asciidoctor::Section.new +# section.title = 'Section 1' +# section.id = 'sect1' +# +# section.size +# => 0 +# +# section.id +# => "sect1" +# +# section << new_block +# section.size +# => 1 +class Asciidoctor::Section < Asciidoctor::AbstractBlock + + # Public: Get/Set the Integer index of this section within the parent block + attr_accessor :index + + # Public: Initialize an Asciidoctor::Section object. + # + # parent - The parent Asciidoc Object. + def initialize(parent = nil, level = nil) + super(parent, :section) + if level.nil? && !parent.nil? + @level = parent.level + 1 + end + @index = 0 + end + + # Public: The name of this section, an alias of the section title + alias :name :title + + # Public: Generate a String id for this section. + # + # The generated id is prefixed with value of the 'idprefix' attribute, which + # is an underscore by default. + # + # Section id synthesis can be disabled by undefining the 'sectids' attribute. + # + # If the generated id is already in use in the document, a count is appended + # until a unique id is found. + # + # Examples + # + # section = Section.new(parent) + # section.title = "Foo" + # section.generate_id + # => "_foo" + # + # another_section = Section.new(parent) + # another_section.title = "Foo" + # another_section.generate_id + # => "_foo_1" + def generate_id + if @document.attr?('sectids') + base_id = @document.attr('idprefix', '_') + title.downcase.gsub(/&#[0-9]+;/, '_'). + gsub(/\W+/, '_').tr_s('_', '_').gsub(/^_?(.*?)_?$/, '\1') + gen_id = base_id + cnt = 2 + while @document.references[:ids].has_key? gen_id + gen_id = "#{base_id}_#{cnt}" + cnt += 1 + end + @document.references[:ids][gen_id] = title + gen_id + else + nil + end + end + + # Public: Get the rendered String content for this Section and all its child + # Blocks. + def render + Asciidoctor.debug { "Now rendering section for #{self}" } + renderer.render('section', self) + end + + # Public: Get the String section content by aggregating rendered section blocks. + # + # Examples + # + # section = Section.new + # section << 'foo' + # section << 'bar' + # section << 'baz' + # section.content + # "

foo

\n

bar

\n

baz

" + def content + @blocks.map {|b| b.render }.join + end + + # Public: Get the section number for the current Section + # + # The section number is a unique, dot separated String + # where each entry represents one level of nesting and + # the value of each entry is the 1-based index of + # the Section amongst its sibling Sections + # + # delimiter - the delimiter to separate the number for each level + # append - the String to append at the end of the section number + # or Boolean to indicate the delimiter should not be + # appended to the final level + # (default: nil) + # + # Examples + # + # sect1 = Section.new(document) + # sect1.level = 1 + # sect1_1 = Section.new(sect1) + # sect1_1.level = 2 + # sect1_2 = Section.new(sect1) + # sect1_2.level = 2 + # sect1 << sect1_1 + # sect1 << sect1_2 + # sect1_1_1 = Section.new(sect1_1) + # sect1_1_1.level = 3 + # sect1_1 << sect1_1_1 + # + # sect1.sectnum + # # => 1. + # + # sect1_1.sectnum + # # => 1.1. + # + # sect1_2.sectnum + # # => 1.2. + # + # sect1_1_1.sectnum + # # => 1.1.1. + # + # sect1_1_1.sectnum(',', false) + # # => 1,1,1 + # + # Returns the section number as a String + def sectnum(delimiter = '.', append = nil) + append ||= (append == false ? '' : delimiter) + if !@level.nil? && @level > 1 && @parent.is_a?(::Asciidoctor::Section) + "#{@parent.sectnum(delimiter)}#{@index + 1}#{append}" + else + "#{@index + 1}#{append}" + end + end + + def to_s + if @title + if @level && @index + %[#{super.to_s} - #{sectnum} #@title [blocks:#{@blocks.size}]] + else + %[#{super.to_s} - #@title [blocks:#{@blocks.size}]] + end + else + super.to_s + end + end +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/substituters.rb b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/substituters.rb new file mode 100644 index 00000000..172640ab --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/substituters.rb @@ -0,0 +1,468 @@ +# Public: Methods to perform substitutions on lines of AsciiDoc text. This module +# is intented to be mixed-in to Section and Block to provide operations for performing +# the necessary substitutions. +module Asciidoctor + module Substituters + + COMPOSITE_SUBS = { + :none => [], + :normal => [:specialcharacters, :quotes, :attributes, :replacements, :macros, :post_replacements], + :verbatim => [:specialcharacters, :callouts] + } + + SUB_OPTIONS = COMPOSITE_SUBS.keys + COMPOSITE_SUBS[:normal] + + # Internal: A String Array of passthough (unprocessed) text captured from this block + attr_reader :passthroughs + + # Public: Apply the specified substitutions to the lines of text + # + # lines - The lines of text to process. Can be a String or a String Array + # subs - The substitutions to perform. Can be a Symbol or a Symbol Array (default: COMPOSITE_SUBS[:normal]) + # + # returns Either a String or String Array, whichever matches the type of the first argument + def apply_subs(lines, subs = COMPOSITE_SUBS[:normal]) + if subs.nil? + subs = [] + elsif subs.is_a? Symbol + subs = [subs] + end + + if !subs.empty? + # QUESTION is this most efficient operation? + subs = subs.map {|key| + COMPOSITE_SUBS.has_key?(key) ? COMPOSITE_SUBS[key] : key + }.flatten + end + + return lines if subs.empty? + + multiline = lines.is_a?(Array) + text = multiline ? lines.join : lines + + passthroughs = subs.include?(:macros) + text = extract_passthroughs(text) if passthroughs + + subs.each {|type| + case type + when :specialcharacters + text = sub_specialcharacters(text) + when :quotes + text = sub_quotes(text) + when :attributes + text = sub_attributes(text.lines.entries).join + when :replacements + text = sub_replacements(text) + when :macros + text = sub_macros(text) + when :callouts + text = sub_callouts(text) + when :post_replacements + text = sub_post_replacements(text) + else + puts "asciidoctor: WARNING: unknown substitution type #{type}" + end + } + text = restore_passthroughs(text) if passthroughs + + multiline ? text.lines.entries : text + end + + # Public: Apply normal substitutions. + # + # lines - The lines of text to process. Can be a String or a String Array + # + # returns - A String with normal substitutions performed + def apply_normal_subs(lines) + apply_subs(lines.is_a?(Array) ? lines.join : lines) + end + + # Public: Apply substitutions for titles. + # + # title - The String title to process + # + # returns - A String with title substitutions performed + def apply_title_subs(title) + apply_subs(title, [:specialcharacters, :quotes, :replacements, :macros, :attributes, :post_replacements]) + end + + # Public: Apply substitutions for titles + # + # lines - A String Array containing the lines of text process + # + # returns - A String with literal (verbatim) substitutions performed + def apply_literal_subs(lines) + if @document.attr('basebackend') == 'html' && attr('style') == 'source' && + @document.attr('source-highlighter') == 'coderay' && attr?('language') + sub_callouts(highlight_source(lines.join)) + else + apply_subs(lines.join, COMPOSITE_SUBS[:verbatim]) + end + end + + # Public: Apply substitutions for header metadata and attribute assignments + # + # text - String containing the text process + # + # returns - A String with header substitutions performed + def apply_header_subs(text) + apply_subs(text, [:specialcharacters, :attributes]) + end + + # Public: Apply substitutions for passthrough text + # + # lines - A String Array containing the lines of text process + # + # returns - A String Array with passthrough substitutions performed + def apply_passthrough_subs(lines) + if attr? 'subs' + subs = resolve_subs(attr('subs')) + else + subs = [:attributes, :macros] + end + apply_subs(lines.join, subs) + end + + # Internal: Extract the passthrough text from the document for reinsertion after processing. + # + # text - The String from which to extract passthrough fragements + # + # returns - The text with the passthrough region substituted with placeholders + def extract_passthroughs(text) + result = text.dup + + result.gsub!(REGEXP[:pass_macro]) { + # alias match for Ruby 1.8.7 compat + m = $~ + # honor the escape + if m[0].start_with? '\\' + next m[0][1..-1] + end + + if m[1] == '$$' + subs = [:specialcharacters] + elsif !m[3].nil? && !m[3].empty? + subs = resolve_subs(m[3]) + else + subs = [] + end + + @passthroughs << {:text => m[2] || m[4].gsub('\]', ']'), :subs => subs} + index = @passthroughs.size - 1 + "\x0#{index}\x0" + } unless !(result.include?('+++') || result.include?('$$') || result.include?('pass:')) + + result.gsub!(REGEXP[:pass_lit]) { + # alias match for Ruby 1.8.7 compat + m = $~ + + # honor the escape + if m[2].start_with? '\\' + next "#{m[1]}#{m[2][1..-1]}" + end + + @passthroughs << {:text => m[3], :subs => [:specialcharacters], :literal => true} + index = @passthroughs.size - 1 + "#{m[1]}\x0#{index}\x0" + } unless !result.include?('`') + + result + end + + # Internal: Restore the passthrough text by reinserting into the placeholder positions + # + # text - The String text into which to restore the passthrough text + # + # returns The String text with the passthrough text restored + def restore_passthroughs(text) + return text if @passthroughs.nil? || @passthroughs.empty? || !text.include?("\x0") + + text.gsub(REGEXP[:pass_placeholder]) { + pass = @passthroughs[$1.to_i]; + text = apply_subs(pass[:text], pass.fetch(:subs, [])) + pass[:literal] ? Inline.new(self, :quoted, text, :type => :monospaced).render : text + } + end + + # Public: Substitute special characters (i.e., encode XML) + # + # Special characters are defined in the Asciidoctor::SPECIAL_CHARS Array constant + # + # text - The String text to process + # + # returns The String text with special characters replaced + def sub_specialcharacters(text) + # this syntax only available in Ruby 1.9 + #text.gsub(SPECIAL_CHARS_PATTERN, SPECIAL_CHARS) + + text.gsub(SPECIAL_CHARS_PATTERN) { SPECIAL_CHARS[$&] } + end + + # Public: Substitute quoted text (includes emphasis, strong, monospaced, etc) + # + # text - The String text to process + # + # returns The String text with quoted text rendered using the backend templates + def sub_quotes(text) + result = text.dup + + QUOTE_SUBS.each {|type, scope, pattern| + result.gsub!(pattern) { transform_quoted_text($~, type, scope) } + } + + result + end + + # Public: Substitute replacement characters (e.g., copyright, trademark, etc) + # + # text - The String text to process + # + # returns The String text with the replacement characters substituted + def sub_replacements(text) + result = text.dup + + REPLACEMENTS.each {|pattern, replacement| + result.gsub!(pattern, replacement) + } + + result + end + + # Public: Substitute attribute references + # + # Attribute references are in the format {name}. + # + # If an attribute referenced in the line is missing, the line is dropped. + # + # text - The String text to process + # + # returns The String text with the attribute references replaced with attribute values + #-- + # NOTE it's necessary to perform this substitution line-by-line + # so that a missing key doesn't wipe out the whole block of data + def sub_attributes(data) + return data if data.nil? || data.empty? + + # normalizes data type to an array (string becomes single-element array) + lines = Array(data) + + result = lines.map {|line| + reject = false + subject = line.dup + subject.gsub!(REGEXP[:attr_ref]) { + if !$1.empty? || !$3.empty? + "{#$2}" + elsif document.attributes.has_key? $2 + document.attributes[$2] + elsif INTRINSICS.has_key? $2 + INTRINSICS[$2] + else + Asciidoctor.debug { "Missing attribute: #$2, line marked for removal" } + reject = true + break '{undefined}' + end + } if subject.include?('{') + + !reject ? subject : nil + }.compact + + data.is_a?(String) ? result.join : result + end + + # Public: Substitute inline macros (e.g., links, images, etc) + # + # Replace inline macros, which may span multiple lines, in the provided text + # + # text - The String text to process + # + # returns The String with the inline macros rendered using the backend templates + def sub_macros(text) + return text if text.nil? || text.empty? + + result = text.dup + + # inline images, image:target.ext[Alt] + result.gsub!(REGEXP[:image_macro]) { + # alias match for Ruby 1.8.7 compat + m = $~ + # honor the escape + if m[0].start_with? '\\' + next m[0][1..-1] + end + target = sub_attributes(m[1]) + @document.register(:images, target) + attrs = parse_attributes(m[2], ['alt', 'width', 'height']) + if !attrs.has_key?('alt') || attrs['alt'].empty? + attrs['alt'] = File.basename(target, File.extname(target)) + end + Inline.new(self, :image, nil, :target => target, :attributes => attrs).render + } unless !result.include?('image:') + + # inline urls, target[text] (optionally prefixed with link: and optionally surrounded by <>) + result.gsub!(REGEXP[:link_inline]) { + # alias match for Ruby 1.8.7 compat + m = $~ + # honor the escape + if m[2].start_with? '\\' + next "#{m[1]}#{m[2][1..-1]}#{m[3]}" + # not a valid macro syntax w/o trailing square brackets + # we probably shouldn't even get here...our regex is doing too much + elsif m[1] == 'link:' && m[3].nil? + next m[0] + end + prefix = (m[1] != 'link:' ? m[1] : '') + target = m[2] + # strip the <> around the link + if prefix.end_with? '<' + prefix = prefix[0..-5] + end + if target.end_with? '>' + target = target[0..-5] + end + @document.register(:links, target) + text = !m[3].nil? ? sub_attributes(m[3].gsub('\]', ']')) : '' + "#{prefix}#{Inline.new(self, :anchor, (!text.empty? ? text : target), :type => :link, :target => target).render}" + } unless !result.include?('http') + + # inline link macros, link:target[text] + result.gsub!(REGEXP[:link_macro]) { + # alias match for Ruby 1.8.7 compat + m = $~ + # honor the escape + if m[0].start_with? '\\' + next m[0][1..-1] + end + target = m[1] + @document.register(:links, target) + text = sub_attributes(m[2].gsub('\]', ']')) + Inline.new(self, :anchor, (!text.empty? ? text : target), :type => :link, :target => target).render + } unless !result.include?('link:') + + result.gsub!(REGEXP[:xref_macro]) { + # alias match for Ruby 1.8.7 compat + m = $~ + # honor the escape + if m[0].start_with? '\\' + next m[0][1..-1] + end + if !m[1].nil? + id, reftext = m[1].split(',', 2) + id.sub!(/^("|)(.*)\1$/, '\2') + reftext.sub!(/^("|)(.*)\1$/m, '\2') unless reftext.nil? + else + id = m[2] + reftext = !m[3].empty? ? m[3] : nil + end + Inline.new(self, :anchor, reftext, :type => :xref, :target => id).render + } + + result.gsub!(REGEXP[:anchor_macro]) { + # alias match for Ruby 1.8.7 compat + m = $~ + # honor the escape + if m[0].start_with? '\\' + next m[0][1..-1] + end + id, reftext = m[1].split(',') + id.sub!(/^("|)(.*)\1$/, '\2') + if reftext.nil? + reftext = "[#{id}]" + else + reftext.sub!(/^("|)(.*)\1$/m, '\2') + end + # NOTE the reftext should also match what's in our references dic + if !@document.references[:ids].has_key? id + Asciidoctor.debug { "Missing reference for anchor #{id}" } + end + Inline.new(self, :anchor, reftext, :type => :ref, :target => id).render + } unless !result.include?('[[') + + result + end + + # Public: Substitute callout references + # + # text - The String text to process + # + # returns The String with the callout references rendered using the backend templates + def sub_callouts(text) + text.gsub(REGEXP[:callout_render]) { + # alias match for Ruby 1.8.7 compat + m = $~ + # honor the escape + if m[0].start_with? '\\' + next "<#{m[1]}>" + end + Inline.new(self, :callout, m[1], :id => document.callouts.read_next_id).render + } + end + + # Public: Substitute post replacements + # + # text - The String text to process + # + # returns The String with the post replacements rendered using the backend templates + def sub_post_replacements(text) + text.gsub(REGEXP[:line_break]) { Inline.new(self, :break, $1, :type => :line).render } + end + + # Internal: Transform (render) a quoted text region + # + # match - The MatchData for the quoted text region + # type - The quoting type (single, double, strong, emphasis, monospaced, etc) + # scope - The scope of the quoting (constrained or unconstrained) + # + # returns The rendered text for the quoted text region + def transform_quoted_text(match, type, scope) + if match[0].start_with? '\\' + match[0][1..-1] + elsif scope == :constrained + "#{match[1]}#{Inline.new(self, :quoted, match[3], :type => type, :attributes => parse_attributes(match[2])).render}" + else + Inline.new(self, :quoted, match[2], :type => type, :attributes => parse_attributes(match[1])).render + end + end + + # Internal: Parse the attributes in the attribute line + # + # attrline - A String of unprocessed attributes (key/value pairs) + # posattrs - The keys for positional attributes + # + # returns nil if attrline is nil, an empty Hash if attrline is empty, otherwise a Hash of parsed attributes + def parse_attributes(attrline, posattrs = ['role']) + return nil if attrline.nil? + return {} if attrline.empty? + + AttributeList.new(attrline, self).parse(posattrs) + end + + # Internal: Resolve the list of comma-delimited subs against the possible options. + # + # subs - A comma-delimited String of substitution aliases + # + # returns An Array of Symbols representing the substitution operation + def resolve_subs(subs) + candidates = subs.split(',').map {|sub| sub.strip.to_sym} + resolved = candidates & SUB_OPTIONS + if (invalid = candidates - resolved).size > 0 + puts "asciidoctor: WARNING: invalid passthrough macro substitution operation#{invalid.size > 1 ? 's' : ''}: #{invalid * ', '}" + end + resolved + end + + # Public: Highlight the source code if a source highlighter is defined + # on the document, otherwise return the text unprocessed + # + # source - the source code String to highlight + # + # returns the highlighted source code, if a source highlighter is defined + # on the document, otherwise the unprocessed text + def highlight_source(source) + Asciidoctor.require_library 'coderay' + ::CodeRay::Duo[attr('language', 'text').to_sym, :html, { + :css => @document.attr('coderay-css', 'class').to_sym, + :line_numbers => (attr?('linenums') ? @document.attr('coderay-linenums-mode', 'table').to_sym : nil), + :line_number_anchors => false}].highlight(source).chomp + end + end +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/table.rb b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/table.rb new file mode 100644 index 00000000..4f8b8301 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/table.rb @@ -0,0 +1,499 @@ +module Asciidoctor + # Public: Methods and constants for managing AsciiDoc table content in a document. + # It supports all three of AsciiDoc's table formats: psv, dsv and csv. + class Table < AbstractBlock + + # Public: A String key that specifies the default table format in AsciiDoc (psv) + DEFAULT_DATA_FORMAT = 'psv' + + # Public: An Array of String keys that represent the table formats in AsciiDoc + DATA_FORMATS = ['psv', 'dsv', 'csv'] + + # Public: A Hash mapping the AsciiDoc table formats to their default delimiters + DEFAULT_DELIMITERS = { + 'psv' => '|', + 'dsv' => ':', + 'csv' => ',' + } + + # Public: A Hash mapping styles abbreviations to styles that can be applied + # to a table column or cell + TEXT_STYLES = { + 's' => :strong, + 'e' => :emphasis, + 'm' => :monospaced, + 'h' => :header, + 'l' => :literal, + 'v' => :verse, + 'a' => :asciidoc + } + + # Public: A Hash mapping alignment abbreviations to alignments (horizontal + # and vertial) that can be applies to a table column or cell + ALIGNMENTS = { + :h => { + '<' => 'left', + '>' => 'right', + '^' => 'center' + }, + :v => { + '<' => 'top', + '>' => 'bottom', + '^' => 'middle' + } + } + + # Public: A compiled Regexp to match a blank line + BLANK_LINE_PATTERN = /\n[[:blank:]]*\n/ + + # Public: Get/Set the String caption (unused, necessary for compatibility w/ next_block) + attr_accessor :caption + + # Public: Get/Set the columns for this table + attr_accessor :columns + + # Public: Get/Set the Rows struct for this table (encapsulates head, foot + # and body rows) + attr_accessor :rows + + def initialize(parent, attributes) + super(parent, :table) + # QUESTION since caption is on block, should it go to AbstractBlock? + @caption = nil + @rows = Rows.new([], [], []) + @columns = [] + + unless @attributes.has_key? 'tablepcwidth' + # smell like we need a utility method here + # to resolve an integer width from potential bogus input + pcwidth = attributes['width'] + pcwidth_intval = pcwidth.to_i.abs + if pcwidth_intval == 0 && pcwidth != "0" || pcwidth_intval > 100 + pcwidth_intval = 100 + end + @attributes['tablepcwidth'] = pcwidth_intval + end + + if @document.attributes.has_key? 'pagewidth' + @attributes['tableabswidth'] ||= + ((@attributes['tablepcwidth'].to_f / 100) * @document.attributes['pagewidth']).round + end + end + + # Internal: Creates the Column objects from the column spec + # + # returns nothing + def create_columns(col_specs) + total_width = 0 + @columns = col_specs.inject([]) {|collector, col_spec| + total_width += col_spec['width'] + collector << Column.new(self, collector.size, col_spec) + collector + } + + if !@columns.empty? + @attributes['colcount'] = @columns.size + even_width = (100.0 / @columns.size).floor + @columns.each {|c| c.assign_width(total_width, even_width) } + end + + nil + end + + # Internal: Partition the rows into header, footer and body as determined + # by the options on the table + # + # returns nothing + def partition_header_footer(attributes) + # set rowcount before splitting up body rows + @attributes['rowcount'] = @rows.body.size + + if !rows.body.empty? && attributes.has_key?('header-option') + head = rows.body.shift + # styles aren't applied to header row + head.each {|c| c.attributes.delete('style') } + # QUESTION why does AsciiDoc use an array for head? is it + # possible to have more than one based on the syntax? + rows.head = [head] + end + + if !rows.body.empty? && attributes.has_key?('footer-option') + rows.foot = [rows.body.pop] + end + + nil + end + + # Public: Get the rendered String content for this Block. If the block + # has child blocks, the content method should cause them to be + # rendered and returned as content that can be included in the + # parent block's template. + def render + Asciidoctor.debug { "Now attempting to render for table my own bad #{self}" } + Asciidoctor.debug { "Parent is #{@parent}" } + Asciidoctor.debug { "Renderer is #{renderer}" } + renderer.render('block_table', self) + end + + end + + # Public: A struct that encapsulates the collection of rows (head, foot, body) for a table + Table::Rows = Struct.new(:head, :foot, :body) + + # Public: Methods to manage the columns of an AsciiDoc table. In particular, it + # keeps track of the column specs + class Table::Column < AbstractNode + def initialize(table, index, attributes = {}) + super(table, :column) + attributes['colnumber'] = index + 1 + attributes['width'] ||= 1 + attributes['halign'] ||= 'left' + attributes['valign'] ||= 'top' + update_attributes(attributes) + end + + # Internal: Calculate and assign the widths (percentage and absolute) for this column + # + # This method assigns the colpcwidth and colabswidth attributes. + # + # returns nothing + def assign_width(total_width, even_width) + if total_width > 0 + width = ((@attributes['width'].to_f / total_width) * 100).floor + else + width = even_width + end + @attributes['colpcwidth'] = width + if parent.attributes.has_key? 'tableabswidth' + @attributes['colabswidth'] = ((width.to_f / 100) * parent.attributes['tableabswidth']).round + end + + nil + end + end + + # Public: Methods for managing the a cell in an AsciiDoc table. + class Table::Cell < AbstractNode + + # Public: An Integer of the number of columns this cell will span (default: nil) + attr_accessor :colspan + + # Public: An Integer of the number of rows this cell will span (default: nil) + attr_accessor :rowspan + + # Public: An alias to the parent block (which is always a Column) + alias :column :parent + + # Public: The internal Asciidoctor::Document for a cell that has the asciidoc style + attr_reader :inner_document + + def initialize(column, text, attributes = {}) + super(column, :cell) + @text = text + @colspan = nil + @rowspan = nil + # TODO feels hacky + if !column.nil? + update_attributes(column.attributes) + end + if !attributes.nil? + if attributes.has_key? 'colspan' + @colspan = attributes['colspan'] + attributes.delete('colspan') + end + if attributes.has_key? 'rowspan' + @rowspan = attributes['rowspan'] + attributes.delete('rowspan') + end + update_attributes(attributes) + end + if @attributes['style'] == :asciidoc + @inner_document = Document.new(@text, :header_footer => false, :parent => @document) + end + end + + # Public: Get the text with normal substitutions applied for this cell. Used for cells in the head rows + def text + apply_normal_subs(@text) + end + + # Public: Handles the body data (tbody, tfoot), applying styles and partitioning into paragraphs + def content + style = attr('style') + if style == :asciidoc + @inner_document.render + else + text.split(Table::BLANK_LINE_PATTERN).map {|p| + !style || style == :header ? p : Inline.new(parent, :quoted, p, :type => attr('style')).render + } + end + end + + def to_s + "#{super.to_s} - [text: #@text, colspan: #{@colspan || 1}, rowspan: #{@rowspan || 1}, attributes: #@attributes]" + end + end + + # Public: Methods for managing the parsing of an AsciiDoc table. Instances of this + # class are primarily responsible for tracking the buffer of a cell as the parser + # moves through the lines of the table using tail recursion. When a cell boundary + # is located, the previous cell is closed, an instance of Table::Cell is + # instantiated, the row is closed if the cell satisifies the column count and, + # finally, a new buffer is allocated to track the next cell. + class Table::ParserContext + + # Public: The Table currently being parsed + attr_accessor :table + + # Public: The AsciiDoc table format (psv, dsv or csv) + attr_accessor :format + + # Public: Get the expected column count for a row + # + # col_count is the number of columns to pull into a row + # A value of -1 means we use the number of columns found + # in the first line as the col_count + attr_reader :col_count + + # Public: The String buffer of the currently open cell + attr_accessor :buffer + + # Public: The cell delimiter for this table. + attr_reader :delimiter + + # Public: The cell delimiter compiled Regexp for this table. + attr_reader :delimiter_re + + def initialize(table, attributes = {}) + @table = table + if attributes.has_key? 'format' + @format = attributes['format'] + if !Table::DATA_FORMATS.include? @format + raise "Illegal table format: #@format" + end + else + @format = Table::DEFAULT_DATA_FORMAT + end + + if @format == 'psv' && !attributes.has_key?('separator') && table.document.nested? + @delimiter = '!' + else + @delimiter = attributes.fetch('separator', Table::DEFAULT_DELIMITERS[@format]) + end + @delimiter_re = /#{Regexp.escape @delimiter}/ + @col_count = table.columns.empty? ? -1 : table.columns.size + @buffer = '' + @cell_specs = [] + @cell_open = false + @active_rowspans = [0] + @col_visits = 0 + @current_row = [] + @linenum = -1 + end + + # Public: Checks whether the line provided starts with the cell delimiter + # used by this table. + # + # returns true if the line starts with the delimiter, false otherwise + def starts_with_delimiter?(line) + line.start_with? @delimiter + end + + # Public: Checks whether the line provided contains the cell delimiter + # used by this table. + # + # returns MatchData if the line contains the delimiter, false otherwise + def match_delimiter(line) + line.match @delimiter_re + end + + # Public: Skip beyond the matched delimiter because it was a false positive + # (either because it was escaped or in a quoted context) + # + # returns the String after the match + def skip_matched_delimiter(match, escaped = false) + @buffer << (escaped ? match.pre_match.chop : match.pre_match) << @delimiter + match.post_match + end + + # Public: Determines whether the buffer has unclosed quotes. Used for CSV data. + # + # returns true if the buffer has unclosed quotes, false if it doesn't or it + # isn't quoted data + def buffer_has_unclosed_quotes?(append = nil) + record = "#@buffer#{append}".strip + record.start_with?('"') && !record.start_with?('""') && !record.end_with?('"') + end + + # Public: Determines whether the buffer contains quoted data. Used for CSV data. + # + # returns true if the buffer starts with a double quote (and not an escaped double quote), + # false otherwise + def buffer_quoted? + @buffer.lstrip! + @buffer.start_with?('"') && !@buffer.start_with?('""') + end + + # Public: Takes a cell spec from the stack. Cell specs precede the delimiter, so a + # stack is used to carry over the spec from the previous cell to the current cell + # when the cell is being closed. + # + # returns The cell spec Hash captured from parsing the previous cell + def take_cell_spec() + @cell_specs.shift + end + + # Public: Puts a cell spec onto the stack. Cell specs precede the delimiter, so a + # stack is used to carry over the spec to the next cell. + # + # returns nothing + def push_cell_spec(cell_spec = {}) + # this shouldn't be nil, but we check anyway + @cell_specs << (cell_spec || {}) + nil + end + + # Public: Marks that the cell should be kept open. Used when the end of the line is + # reached and the cell may contain additional text. + # + # returns nothing + def keep_cell_open + @cell_open = true + nil + end + + # Public: Marks the cell as closed so that the parser knows to instantiate a new cell + # instance and add it to the current row. + # + # returns nothing + def mark_cell_closed + @cell_open = false + nil + end + + # Public: Checks whether the current cell is still open + # + # returns true if the cell is marked as open, false otherwise + def cell_open? + @cell_open + end + + # Public: Checks whether the current cell has been marked as closed + # + # returns true if the cell is marked as closed, false otherwise + def cell_closed? + !@cell_open + end + + # Public: If the current cell is open, close it. In additional, push the + # cell spec captured from the end of this cell onto the stack for use + # by the next cell. + # + # returns nothing + def close_open_cell(next_cell_spec = {}) + push_cell_spec next_cell_spec + close_cell(true) if cell_open? + next_line + nil + end + + # Public: Close the current cell, instantiate a new Table::Cell, add it to + # the current row and, if the number of expected columns for the current + # row has been met, close the row and begin a new one. + # + # returns nothing + def close_cell(eol = false) + cell_text = @buffer.strip + @buffer = '' + if format == 'psv' + cell_spec = take_cell_spec + repeat = cell_spec.fetch('repeatcol', 1) + cell_spec.delete('repeatcol') + else + cell_spec = nil + repeat = 1 + if format == 'csv' + if !cell_text.empty? && cell_text.include?('"') + # this may not be perfect logic, but it hits the 99% + if cell_text.start_with?('"') && cell_text.end_with?('"') + # unquote + cell_text = cell_text[1..-2].strip + end + + # collapses escaped quotes + cell_text = cell_text.tr_s('"', '"') + end + end + end + + 1.upto(repeat) {|i| + # make column resolving an operation + if @col_count == -1 + @table.columns << Table::Column.new(@table, @current_row.size + i - 1) + column = @table.columns.last + else + # QUESTION is this right for cells that span columns? + column = @table.columns[@current_row.size] + end + + cell = Table::Cell.new(column, cell_text, cell_spec) + unless cell.rowspan.nil? || cell.rowspan == 1 + activate_rowspan(cell.rowspan, (cell.colspan || 1)) + end + @col_visits += (cell.colspan || 1) + @current_row << cell + # don't close the row if we're on the first line and the column count has not been set explicitly + # TODO perhaps the col_count/linenum logic should be in end_of_row? (or a should_end_row? method) + close_row if end_of_row? && (@col_count != -1 || @linenum > 0 || (eol && i == repeat)) + } + @open_cell = false + nil + end + + # Public: Close the row by adding it to the Table and resetting the row + # Array and counter variables. + # + # returns nothing + def close_row + @table.rows.body << @current_row + # don't have to account for active rowspans here + # since we know this is first row + @col_count = @col_visits if @col_count == -1 + @col_visits = 0 + @current_row = [] + @active_rowspans.shift + @active_rowspans[0] ||= 0 + nil + end + + # Public: Activate a rowspan. The rowspan Array is consulted when + # determining the effective number of cells in the current row. + # + # returns nothing + def activate_rowspan(rowspan, colspan) + 1.upto(rowspan - 1).each {|i| + @active_rowspans[i] ||= 0 + @active_rowspans[i] += colspan + } + nil + end + + # Public: Check whether we've met the number of effective columns for the current row. + def end_of_row? + @col_count == -1 || effective_col_visits == @col_count + end + + # Public: Calculate the effective column visits, which consists of the number of + # cells plus any active rowspans. + def effective_col_visits + @col_visits + @active_rowspans.first + end + + # Internal: Advance to the next line (which may come after the parser begins processing + # the next line if the last cell had wrapped content). + def next_line + @linenum += 1 + end + + end +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/version.rb b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/version.rb new file mode 100644 index 00000000..e8848884 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/lib/asciidoctor/version.rb @@ -0,0 +1,3 @@ +module Asciidoctor + VERSION = "0.0.9" +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/noof.rb b/src/main/resources/gems/asciidoctor-0.0.9/noof.rb new file mode 100644 index 00000000..9bf64ab5 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/noof.rb @@ -0,0 +1,16 @@ +require 'rubygems' +require 'ap' +require_relative 'lib/asciidoctor' + +lines = File.readlines("test/fixtures/asciidoc_index.txt") +#lines = File.read("test/fixtures/asciidoc_index.txt") +doc = Asciidoctor::Document.new(lines) +doc.splain + +foo = doc.render + +puts foo + +File.open("/tmp/noof.html", "w+") do |file| + file.puts foo +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/test/attributes_test.rb b/src/main/resources/gems/asciidoctor-0.0.9/test/attributes_test.rb new file mode 100644 index 00000000..3e15eac8 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/test/attributes_test.rb @@ -0,0 +1,356 @@ +require 'test_helper' + +context 'Attributes' do + context 'Assignment' do + test 'creates an attribute' do + doc = document_from_string(':frog: Tanglefoot') + assert_equal 'Tanglefoot', doc.attributes['frog'] + end + + test 'creates an attribute by fusing a multi-line value' do + str = <<-EOS +:description: This is the first + + Ruby implementation of + + AsciiDoc. + EOS + doc = document_from_string(str) + assert_equal 'This is the first Ruby implementation of AsciiDoc.', doc.attributes['description'] + end + + test 'deletes an attribute' do + doc = document_from_string(":frog: Tanglefoot\n:frog!:") + assert_equal nil, doc.attributes['frog'] + end + + test "doesn't choke when deleting a non-existing attribute" do + doc = document_from_string(':frog!:') + assert_equal nil, doc.attributes['frog'] + end + + test "replaces special characters in attribute value" do + doc = document_from_string(":xml-busters: <>&") + assert_equal '<>&', doc.attributes['xml-busters'] + end + + test "performs attribute substitution on attribute value" do + doc = document_from_string(":version: 1.0\n:release: Asciidoctor {version}") + assert_equal 'Asciidoctor 1.0', doc.attributes['release'] + end + + test "assigns attribute to empty string if substitution fails to resolve attribute" do + doc = document_from_string(":release: Asciidoctor {version}") + assert_equal '', doc.attributes['release'] + end + + test "assigns multi-line attribute to empty string if substitution fails to resolve attribute" do + doc = document_from_string(":release: Asciidoctor +\n {version}") + assert_equal '', doc.attributes['release'] + end + + test "apply custom substitutions to text in passthrough macro and assign to attribute" do + doc = document_from_string(":xml-busters: pass:[<>&]") + assert_equal '<>&', doc.attributes['xml-busters'] + doc = document_from_string(":xml-busters: pass:none[<>&]") + assert_equal '<>&', doc.attributes['xml-busters'] + doc = document_from_string(":xml-busters: pass:specialcharacters[<>&]") + assert_equal '<>&', doc.attributes['xml-busters'] + end + + test "attribute is treated as defined until it's not" do + input = <<-EOS +:holygrail: +ifdef::holygrail[] +The holy grail has been found! +endif::holygrail[] + +:holygrail!: +ifndef::holygrail[] +Buggers! What happened to the grail? +endif::holygrail[] + EOS + output = render_string input + assert_xpath '//p', output, 2 + assert_xpath '(//p)[1][text() = "The holy grail has been found!"]', output, 1 + assert_xpath '(//p)[2][text() = "Buggers! What happened to the grail?"]', output, 1 + end + + # Validates requirement: "Header attributes are overridden by command-line attributes." + test 'attribute defined in document options overrides attribute in document' do + doc = document_from_string(':cash: money', :attributes => {'cash' => 'heroes'}) + assert_equal 'heroes', doc.attributes['cash'] + end + + test 'attribute defined in document options cannot be unassigned in document' do + doc = document_from_string(':cash!:', :attributes => {'cash' => 'heroes'}) + assert_equal 'heroes', doc.attributes['cash'] + end + + test 'attribute undefined in document options cannot be assigned in document' do + doc = document_from_string(':cash: money', :attributes => {'cash!' => 1 }) + assert_equal nil, doc.attributes['cash'] + doc = document_from_string(':cash: money', :attributes => {'cash' => nil }) + assert_equal nil, doc.attributes['cash'] + end + + test 'backend attributes are updated if backend attribute is defined in document' do + doc = document_from_string(':backend: docbook45') + assert_equal 'docbook45', doc.attributes['backend'] + assert doc.attributes.has_key? 'backend-docbook45' + assert_equal 'docbook', doc.attributes['basebackend'] + assert doc.attributes.has_key? 'basebackend-docbook' + end + + test 'backend attributes defined in document options overrides backend attribute in document' do + doc = document_from_string(':backend: docbook45', :attributes => {'backend' => 'html5'}) + assert_equal 'html5', doc.attributes['backend'] + assert doc.attributes.has_key? 'backend-html5' + assert_equal 'html', doc.attributes['basebackend'] + assert doc.attributes.has_key? 'basebackend-html' + end + + end + + context 'Interpolation' do + + test "render properly with simple names" do + html = render_string(":frog: Tanglefoot\n:my_super-hero: Spiderman\n\nYo, {frog}!\nBeat {my_super-hero}!") + result = Nokogiri::HTML(html) + assert_equal "Yo, Tanglefoot!\nBeat Spiderman!", result.css("p").first.content.strip + end + + test "render properly with single character name" do + html = render_string(":r: Ruby\n\nR is for {r}!") + result = Nokogiri::HTML(html) + assert_equal 'R is for Ruby!', result.css("p").first.content.strip + end + + test "convert multi-word names and render" do + html = render_string("Main Header\n===========\n:My frog: Tanglefoot\n\nYo, {myfrog}!") + result = Nokogiri::HTML(html) + assert_equal 'Yo, Tanglefoot!', result.css("p").first.content.strip + end + + test "ignores lines with bad attributes" do + html = render_string("This is\nblah blah {foobarbaz}\nall there is.") + result = Nokogiri::HTML(html) + assert_no_match(/blah blah/m, result.css("p").first.content.strip) + end + + test "attribute value gets interpretted when rendering" do + doc = document_from_string(":google: http://google.com[Google]\n\n{google}") + assert_equal 'http://google.com[Google]', doc.attributes['google'] + output = doc.render + assert_xpath '//a[@href="http://google.com"][text() = "Google"]', output, 1 + end + + # See above - AsciiDoc says we're supposed to delete lines with bad + # attribute refs in them. AsciiDoc is strange. + # + # test "Unknowns" do + # html = render_string("Look, a {gobbledygook}") + # result = Nokogiri::HTML(html) + # assert_equal("Look, a {gobbledygook}", result.css("p").first.content.strip) + # end + + test "substitutes inside unordered list items" do + html = render_string(":foo: bar\n* snort at the {foo}\n* yawn") + result = Nokogiri::HTML(html) + assert_match(/snort at the bar/, result.css("li").first.content.strip) + end + + test 'substitutes inside section title' do + output = render_string(":prefix: Cool\n\n== {prefix} Title\n\ncontent") + result = Nokogiri::HTML(output) + assert_match(/Cool Title/, result.css('h2').first.content) + assert_match(/_cool_title/, result.css('h2').first.attr('id')) + end + + test 'substitutes inside block title' do + input = <<-EOS +:gem_name: asciidoctor + +.Require the +{gem_name}+ gem +To use {gem_name}, the first thing to do is to import it in your Ruby source file. + EOS + output = render_embedded_string input + assert_xpath '//*[@class="title"]/tt[text()="asciidoctor"]', output, 1 + end + + test 'renders attribute until it is deleted' do + pending 'This requires that we consume attributes as the document is being lexed, not up front' + #output = render_string(":foo: bar\n\nCrossing the {foo}\n\n:foo!:\nBelly up to the {foo}") + # result = Nokogiri::HTML(html) + # assert_match /Crossing the bar/, result.css("p").first.content.strip + # assert_no_match /Belly up to the bar/, result.css("p").last.content.strip + end + + test 'does not disturb attribute-looking things escaped with backslash' do + html = render_string(":foo: bar\nThis is a \\{foo} day.") + result = Nokogiri::HTML(html) + assert_equal 'This is a {foo} day.', result.css('p').first.content.strip + end + + test 'does not disturb attribute-looking things escaped with literals' do + html = render_string(":foo: bar\nThis is a +++{foo}+++ day.") + result = Nokogiri::HTML(html) + assert_equal 'This is a {foo} day.', result.css('p').first.content.strip + end + + test 'does not substitute attributes inside listing blocks' do + input = <<-EOS +:forecast: snow + +---- +puts 'The forecast for today is {forecast}' +---- + EOS + output = render_string(input) + assert_match(/\{forecast\}/, output) + end + + test 'does not substitute attributes inside literal blocks' do + input = <<-EOS +:foo: bar + +.... +You insert the text {foo} to expand the value +of the attribute named foo in your document. +.... + EOS + output = render_string(input) + assert_match(/\{foo\}/, output) + end + end + + context "Intrinsic attributes" do + + test "substitute intrinsics" do + Asciidoctor::INTRINSICS.each_pair do |key, value| + html = render_string("Look, a {#{key}} is here") + # can't use Nokogiri because it interprets the HTML entities and we can't match them + assert_match(/Look, a #{Regexp.escape(value)} is here/, html) + end + end + + test "don't escape intrinsic substitutions" do + html = render_string('happy{nbsp}together') + assert_match(/happy together/, html) + end + + test "escape special characters" do + html = render_string('&') + assert_match(/<node>&<\/node>/, html) + end + + end + + context "Block attributes" do + test "Position attributes assigned to block" do + input = <<-EOS +[quote, Name, Source] +____ +A famous quote. +____ + EOS + doc = document_from_string(input) + qb = doc.blocks.first + assert_equal 'quote', qb.attributes['style'] + assert_equal 'quote', qb.attr(:style) + assert_equal 'Name', qb.attributes['attribution'] + assert_equal 'Source', qb.attributes['citetitle'] + end + + test "Normal substitutions are performed on single-quoted attributes" do + input = <<-EOS +[quote, Name, 'http://wikipedia.org[Source]'] +____ +A famous quote. +____ + EOS + doc = document_from_string(input) + qb = doc.blocks.first + assert_equal 'quote', qb.attributes['style'] + assert_equal 'quote', qb.attr(:style) + assert_equal 'Name', qb.attributes['attribution'] + assert_equal 'Source', qb.attributes['citetitle'] + end + + test "Attribute substitutions are performed on attribute list before parsing attributes" do + input = <<-EOS +:lead: role="lead" + +[{lead}] +A paragraph + EOS + doc = document_from_string(input) + para = doc.blocks.first + assert_equal 'lead', para.attributes['role'] + end + + test "Block attributes are additive" do + input = <<-EOS +[id='foo'] +[role='lead'] +A paragraph. + EOS + doc = document_from_string(input) + para = doc.blocks.first + assert_equal 'foo', para.id + assert_equal 'lead', para.attributes['role'] + end + + test "Last wins for id attribute" do + input = <<-EOS +[[bar]] +[[foo]] +== Section + +paragraph + +[[baz]] +[id='coolio'] +=== Section + EOS + doc = document_from_string(input) + sec = doc.first_section + assert_equal 'foo', sec.id + subsec = sec.blocks.last + assert_equal 'coolio', subsec.id + end + + test "trailing block attributes tranfer to the following section" do + input = <<-EOS +[[one]] + +== Section One + +paragraph + +[[sub]] +// try to mess this up! + +=== Sub-section + +paragraph + +[role='classy'] + +//// +block comment +//// + +== Section Two + +content + EOS + doc = document_from_string(input) + section_one = doc.blocks.first + assert_equal 'one', section_one.id + subsection = section_one.blocks.last + assert_equal 'sub', subsection.id + section_two = doc.blocks.last + assert_equal 'classy', section_two.attr(:role) + end + end + +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/test/blocks_test.rb b/src/main/resources/gems/asciidoctor-0.0.9/test/blocks_test.rb new file mode 100644 index 00000000..83a8b3ae --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/test/blocks_test.rb @@ -0,0 +1,568 @@ +require 'test_helper' + +context "Blocks" do + context "Rulers" do + test "ruler" do + output = render_string("'''") + assert_xpath '//*[@id="content"]/hr', output, 1 + assert_xpath '//*[@id="content"]/*', output, 1 + end + + test "ruler between blocks" do + output = render_string("Block above\n\n'''\n\nBlock below") + assert_xpath '//*[@id="content"]/hr', output, 1 + assert_xpath '//*[@id="content"]/hr/preceding-sibling::*', output, 1 + assert_xpath '//*[@id="content"]/hr/following-sibling::*', output, 1 + end + end + + context 'Comments' do + test 'line comment between paragraphs offset by blank lines' do + input = <<-EOS +first paragraph + +// line comment + +second paragraph + EOS + output = render_embedded_string input + assert_no_match(/line comment/, output) + assert_xpath '//p', output, 2 + end + + test 'adjacent line comment between paragraphs' do + input = <<-EOS +first line +// line comment +second line + EOS + output = render_embedded_string input + assert_no_match(/line comment/, output) + assert_xpath '//p', output, 1 + assert_xpath "//p[1][text()='first line\nsecond line']", output, 1 + end + + test 'comment block between paragraphs offset by blank lines' do + input = <<-EOS +first paragraph + +//// +block comment +//// + +second paragraph + EOS + output = render_embedded_string input + assert_no_match(/block comment/, output) + assert_xpath '//p', output, 2 + end + + test 'adjacent comment block between paragraphs' do + input = <<-EOS +first paragraph +//// +block comment +//// +second paragraph + EOS + output = render_embedded_string input + assert_no_match(/block comment/, output) + assert_xpath '//p', output, 2 + end + + test "can render with block comment at end of document with trailing endlines" do + input = <<-EOS +paragraph + +//// +block comment +//// + + + EOS + output = render_embedded_string input + assert_no_match(/block comment/, output) + end + + test "trailing endlines after block comment at end of document does not create paragraph" do + input = <<-EOS +paragraph + +//// +block comment +//// + + + EOS + d = document_from_string input + assert_equal 1, d.blocks.size + assert_xpath '//p', d.render, 1 + end + end + + context "Example Blocks" do + test "can render example block" do + input = <<-EOS +==== +This is an example of an example block. + +How crazy is that? +==== + EOS + + output = render_string input + assert_xpath '//*[@class="exampleblock"]//p', output, 2 + end + end + + context "Preformatted Blocks" do + test 'should separate adjacent paragraphs and listing into blocks' do + input = <<-EOS +paragraph 1 +---- +listing content +---- +paragraph 2 + EOS + + output = render_embedded_string input + assert_xpath '/*[@class="paragraph"]/p', output, 2 + assert_xpath '/*[@class="listingblock"]', output, 1 + assert_xpath '(/*[@class="paragraph"]/following-sibling::*)[1][@class="listingblock"]', output, 1 + end + + test "should preserve endlines in literal block" do + input = <<-EOS +.... +line one + +line two + +line three +.... +EOS + [true, false].each {|compact| + output = render_string input, :compact => compact + assert_xpath '//pre', output, 1 + assert_xpath '//pre/text()', output, 1 + text = xmlnodes_at_xpath('//pre/text()', output, 1).text + lines = text.lines.entries + assert_equal 5, lines.size + expected = "line one\n\nline two\n\nline three".lines.entries + assert_equal expected, lines + blank_lines = output.scan(/\n[[:blank:]]*\n/).size + if compact + assert_equal 2, blank_lines + else + assert blank_lines > 2 + end + } + end + + test "should preserve endlines in listing block" do + input = <<-EOS +[source] +---- +line one + +line two + +line three +---- +EOS + [true, false].each {|compact| + output = render_string input, :compact => compact + assert_xpath '//pre/code', output, 1 + assert_xpath '//pre/code/text()', output, 1 + text = xmlnodes_at_xpath('//pre/code/text()', output, 1).text + lines = text.lines.entries + assert_equal 5, lines.size + expected = "line one\n\nline two\n\nline three".lines.entries + assert_equal expected, lines + blank_lines = output.scan(/\n[[:blank:]]*\n/).size + if compact + assert_equal 2, blank_lines + else + assert blank_lines > 2 + end + } + end + + test "should preserve endlines in verse block" do + input = <<-EOS +[verse] +____ +line one + +line two + +line three +____ +EOS + [true, false].each {|compact| + output = render_string input, :compact => compact + assert_xpath '//*[@class="verseblock"]/pre', output, 1 + assert_xpath '//*[@class="verseblock"]/pre/text()', output, 1 + text = xmlnodes_at_xpath('//*[@class="verseblock"]/pre/text()', output, 1).text + lines = text.lines.entries + assert_equal 5, lines.size + expected = "line one\n\nline two\n\nline three".lines.entries + assert_equal expected, lines + blank_lines = output.scan(/\n[[:blank:]]*\n/).size + if compact + assert_equal 2, blank_lines + else + assert blank_lines > 2 + end + } + end + end + + context "Open Blocks" do + test "can render open block" do + input = <<-EOS +-- +This is an open block. + +It can span multiple lines. +-- + EOS + + output = render_string input + assert_xpath '//*[@class="openblock"]//p', output, 2 + end + + test "open block can contain another block" do + input = <<-EOS +-- +This is an open block. + +It can span multiple lines. + +____ +It can hold great quotes like this one. +____ +-- + EOS + + output = render_string input + assert_xpath '//*[@class="openblock"]//p', output, 3 + assert_xpath '//*[@class="openblock"]//*[@class="quoteblock"]', output, 1 + end + end + + context 'Passthrough Blocks' do + test 'can parse a passthrough block' do + input = <<-EOS +++++ +This is a passthrough block. +++++ + EOS + + block = block_from_string input + assert !block.nil? + assert_equal 1, block.buffer.size + assert_equal 'This is a passthrough block.', block.buffer.first + end + + test 'performs passthrough subs on a passthrough block' do + input = <<-EOS +:type: passthrough + +++++ +This is a '{type}' block. +http://asciidoc.org +++++ + EOS + + expected = %(This is a 'passthrough' block.\nhttp://asciidoc.org) + output = render_embedded_string input + assert_equal expected, output.strip + end + + test 'passthrough block honors explicit subs list' do + input = <<-EOS +:type: passthrough + +[subs="attributes, quotes"] +++++ +This is a '{type}' block. +http://asciidoc.org +++++ + EOS + + expected = %(This is a passthrough block.\nhttp://asciidoc.org) + output = render_embedded_string input + assert_equal expected, output.strip + end + end + + context 'Metadata' do + test 'block title above section gets carried over to first block in section' do + input = <<-EOS +.Title +== Section + +paragraph + EOS + output = render_string input + assert_xpath '//*[@class="paragraph"]', output, 1 + assert_xpath '//*[@class="paragraph"]/*[@class="title"][text() = "Title"]', output, 1 + assert_xpath '//*[@class="paragraph"]/p[text() = "paragraph"]', output, 1 + end + end + + context "Images" do + test "can render block image with alt text" do + input = <<-EOS +image::images/tiger.png[Tiger] + EOS + + output = render_string input + assert_xpath '//*[@class="imageblock"]//img[@src="images/tiger.png"][@alt="Tiger"]', output, 1 + end + + test "can render block image with auto-generated alt text" do + input = <<-EOS +image::images/tiger.png[] + EOS + + output = render_string input + assert_xpath '//*[@class="imageblock"]//img[@src="images/tiger.png"][@alt="tiger"]', output, 1 + end + + test "can render block image with alt text and height and width" do + input = <<-EOS +image::images/tiger.png[Tiger, 200, 300] + EOS + + output = render_string input + assert_xpath '//*[@class="imageblock"]//img[@src="images/tiger.png"][@alt="Tiger"][@width="200"][@height="300"]', output, 1 + end + + test "can render block image with link" do + input = <<-EOS +image::images/tiger.png[Tiger, link='http://en.wikipedia.org/wiki/Tiger'] + EOS + + output = render_string input + assert_xpath '//*[@class="imageblock"]//a[@class="image"][@href="http://en.wikipedia.org/wiki/Tiger"]/img[@src="images/tiger.png"][@alt="Tiger"]', output, 1 + end + + test "can render block image with caption" do + input = <<-EOS +.The AsciiDoc Tiger +image::images/tiger.png[Tiger] + EOS + + output = render_string input + assert_xpath '//*[@class="imageblock"]//img[@src="images/tiger.png"][@alt="Tiger"]', output, 1 + assert_xpath '//*[@class="imageblock"]/*[@class="title"][text() = "The AsciiDoc Tiger"]', output, 1 + end + + test 'can resolve image relative to imagesdir' do + input = <<-EOS +:imagesdir: images + +image::tiger.png[Tiger] + EOS + + output = render_string input + assert_xpath '//*[@class="imageblock"]//img[@src="images/tiger.png"][@alt="Tiger"]', output, 1 + end + + test 'embeds base64-encoded data uri for image when data-uri attribute is set' do + input = <<-EOS +:data-uri: +:imagesdir: fixtures + +image::dot.gif[Dot] + EOS + + doc = document_from_string input, :safe => Asciidoctor::SafeMode::SAFE, :attributes => {'docdir' => File.dirname(__FILE__)} + assert_equal 'fixtures', doc.attributes['imagesdir'] + output = doc.render + assert_xpath '//*[@class="imageblock"]//img[@src="data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs="][@alt="Dot"]', output, 1 + end + + # this test will cause a warning to be printed to the console (until we have a message facility) + test 'cleans reference to ancestor directories before reading image if safe mode level is at least SAFE' do + input = <<-EOS +:data-uri: +:imagesdir: ../fixtures + +image::dot.gif[Dot] + EOS + + doc = document_from_string input, :safe => Asciidoctor::SafeMode::SAFE, :attributes => {'docdir' => File.dirname(__FILE__)} + assert_equal '../fixtures', doc.attributes['imagesdir'] + output = doc.render + assert_xpath '//*[@class="imageblock"]//img[@src="data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs="][@alt="Dot"]', output, 1 + end + end + + context 'Admonition icons' do + test 'can resolve icon relative to default iconsdir' do + input = <<-EOS +:icons: + +[TIP] +You can use icons for admonitions by setting the 'icons' attribute. + EOS + + output = render_string input + assert_xpath '//*[@class="admonitionblock"]//*[@class="icon"]/img[@src="images/icons/tip.png"][@alt="Tip"]', output, 1 + end + + test 'can resolve icon relative to custom iconsdir' do + input = <<-EOS +:icons: +:iconsdir: icons + +[TIP] +You can use icons for admonitions by setting the 'icons' attribute. + EOS + + output = render_string input + assert_xpath '//*[@class="admonitionblock"]//*[@class="icon"]/img[@src="icons/tip.png"][@alt="Tip"]', output, 1 + end + + test 'embeds base64-encoded data uri of icon when data-uri attribute is set and safe mode level is less than SECURE' do + input = <<-EOS +:icons: +:iconsdir: fixtures +:iconstype: gif +:data-uri: + +[TIP] +You can use icons for admonitions by setting the 'icons' attribute. + EOS + + output = render_string input, :safe => Asciidoctor::SafeMode::SAFE, :attributes => {'docdir' => File.dirname(__FILE__)} + assert_xpath '//*[@class="admonitionblock"]//*[@class="icon"]/img[@src="data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs="][@alt="Tip"]', output, 1 + end + + test 'does not embed base64-encoded data uri of icon when safe mode level is at least SECURE' do + input = <<-EOS +:icons: +:iconsdir: fixtures +:iconstype: gif +:data-uri: + +[TIP] +You can use icons for admonitions by setting the 'icons' attribute. + EOS + + output = render_string input + assert_xpath '//*[@class="admonitionblock"]//*[@class="icon"]/img[@src="fixtures/tip.gif"][@alt="Tip"]', output, 1 + end + + test 'cleans reference to ancestor directories before reading icon if safe mode level is at least SAFE' do + input = <<-EOS +:icons: +:iconsdir: ../fixtures +:iconstype: gif +:data-uri: + +[TIP] +You can use icons for admonitions by setting the 'icons' attribute. + EOS + + output = render_string input, :safe => Asciidoctor::SafeMode::SAFE, :attributes => {'docdir' => File.dirname(__FILE__)} + assert_xpath '//*[@class="admonitionblock"]//*[@class="icon"]/img[@src="data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs="][@alt="Tip"]', output, 1 + end + end + + context 'Image paths' do + + test 'restricts access to ancestor directories when safe mode level is at least SAFE' do + input = <<-EOS +image::asciidoctor.png[Asciidoctor] + EOS + basedir = File.dirname(__FILE__) + block = block_from_string input, :attributes => {'docdir' => basedir} + doc = block.document + assert doc.safe >= Asciidoctor::SafeMode::SAFE + + assert_equal File.join(basedir, 'images'), block.normalize_asset_path('images') + assert_equal File.join(basedir, 'etc/images'), block.normalize_asset_path('/etc/images') + assert_equal File.join(basedir, 'images'), block.normalize_asset_path('../../images') + end + + test 'does not restrict access to ancestor directories when safe mode is disabled' do + input = <<-EOS +image::asciidoctor.png[Asciidoctor] + EOS + basedir = File.dirname(__FILE__) + block = block_from_string input, :safe => Asciidoctor::SafeMode::UNSAFE, :attributes => {'docdir' => basedir} + doc = block.document + assert doc.safe == Asciidoctor::SafeMode::UNSAFE + + assert_equal File.join(basedir, 'images'), block.normalize_asset_path('images') + assert_equal '/etc/images', block.normalize_asset_path('/etc/images') + assert_equal File.expand_path(File.join(basedir, '../../images')), block.normalize_asset_path('../../images') + end + + end + + context 'Source code' do + test 'should highlight source if source-highlighter attribute is coderay' do + input = <<-EOS +:source-highlighter: coderay + +[source, ruby] +---- +require 'coderay' + +html = CodeRay.scan("puts 'Hello, world!'", :ruby).div(:line_numbers => :table) +---- + EOS + output = render_string input, :safe => Asciidoctor::SafeMode::SAFE + assert_xpath '//pre[@class="highlight CodeRay"]/code[@class="ruby"]//span[@class = "constant"][text() = "CodeRay"]', output, 1 + assert_match(/\.CodeRay \{/, output) + end + + test 'should highlight source inline if source-highlighter attribute is coderay and coderay-css is style' do + input = <<-EOS +:source-highlighter: coderay +:coderay-css: style + +[source, ruby] +---- +require 'coderay' + +html = CodeRay.scan("puts 'Hello, world!'", :ruby).div(:line_numbers => :table) +---- + EOS + output = render_string input, :safe => Asciidoctor::SafeMode::SAFE + assert_xpath '//pre[@class="highlight CodeRay"]/code[@class="ruby"]//span[@style = "color:#036;font-weight:bold"][text() = "CodeRay"]', output, 1 + assert_no_match(/\.CodeRay \{/, output) + end + + test 'should include remote highlight.js assets if source-highlighter attribute is highlightjs' do + input = <<-EOS +:source-highlighter: highlightjs + +[source, javascript] +---- + + + +---- + EOS + output = render_string input, :safe => Asciidoctor::SafeMode::SAFE + assert_match(/ Asciidoctor::SafeMode::SAFE + assert_equal Asciidoctor::SafeMode::SAFE, doc.safe + end + + test 'safe model level cannot be modified' do + doc = Asciidoctor::Document.new + begin + doc.safe = Asciidoctor::SafeMode::UNSAFE + flunk 'safe mode property of Asciidoctor::Document should not be writable!' + rescue + end + end + end + + context 'Renderer' do + test 'built-in HTML5 views are registered by default' do + doc = document_from_string '' + assert_equal 'html5', doc.attributes['backend'] + assert doc.attributes.has_key? 'backend-html5' + assert_equal 'html', doc.attributes['basebackend'] + assert doc.attributes.has_key? 'basebackend-html' + renderer = doc.renderer + assert !renderer.nil? + views = renderer.views + assert !views.nil? + assert_equal 26, views.size + assert views.has_key? 'document' + assert views['document'].is_a?(Asciidoctor::HTML5::DocumentTemplate) + assert_equal 'ERB', views['document'].eruby.to_s + end + + test 'built-in DocBook45 views are registered when backend is docbook45' do + doc = document_from_string '', :attributes => {'backend' => 'docbook45'} + renderer = doc.renderer + assert_equal 'docbook45', doc.attributes['backend'] + assert doc.attributes.has_key? 'backend-docbook45' + assert_equal 'docbook', doc.attributes['basebackend'] + assert doc.attributes.has_key? 'basebackend-docbook' + assert !renderer.nil? + views = renderer.views + assert !views.nil? + assert_equal 26, views.size + assert views.has_key? 'document' + assert views['document'].is_a?(Asciidoctor::DocBook45::DocumentTemplate) + assert_equal 'ERB', views['document'].eruby.to_s + end + + test 'can set erubis as eRuby implementation' do + doc = Asciidoctor::Document.new [], :eruby => 'erubis' + assert $LOADED_FEATURES.detect {|p| p == 'erubis.rb' || p.end_with?('/erubis.rb') }.nil? + renderer = doc.renderer + assert $LOADED_FEATURES.detect {|p| p == 'erubis.rb' || p.end_with?('/erubis.rb') } + views = renderer.views + assert !views.nil? + assert views.has_key? 'document' + assert_equal 'Erubis::FastEruby', views['document'].eruby.to_s + assert_equal 'Erubis::FastEruby', views['document'].template.class.to_s + end + end + + context 'Structure' do + test 'test_with_no_title' do + doc = document_from_string('Snorf') + assert_nil doc.doctitle + assert_nil doc.name + assert !doc.has_header? + assert_nil doc.header + end + + test 'test_with_explicit_title' do + input = <<-EOS += Title +:title: Document Title + +preamble + +== First Section + EOS + doc = document_from_string input + assert_equal 'Document Title', doc.doctitle + assert_equal 'Document Title', doc.title + assert doc.has_header? + assert_equal 'Title', doc.header.title + assert_equal 'Title', doc.first_section.title + end + + test 'test_empty_document' do + doc = document_from_string('') + assert doc.blocks.empty? + assert_nil doc.doctitle + assert !doc.has_header? + assert_nil doc.header + end + + test 'test_with_metadata' do + input = <<-EOS += AsciiDoc +Stuart Rackham +v8.6.8, 2012-07-12: See changelog. + +== Version 8.6.8 + +more info... + EOS + output = render_string input + assert_xpath '//*[@id="header"]/span[@id="author"][text() = "Stuart Rackham"]', output, 1 + assert_xpath '//*[@id="header"]/span[@id="email"][contains(text(), "founder@asciidoc.org")]', output, 1 + assert_xpath '//*[@id="header"]/span[@id="revnumber"][text() = "version 8.6.8,"]', output, 1 + assert_xpath '//*[@id="header"]/span[@id="revdate"][text() = "2012-07-12"]', output, 1 + assert_xpath '//*[@id="header"]/span[@id="revremark"][text() = "See changelog."]', output, 1 + end + + test 'test_with_header_footer' do + result = render_string("= Title\n\npreamble") + assert_xpath '/html', result, 1 + assert_xpath '//*[@id="header"]', result, 1 + assert_xpath '//*[@id="footer"]', result, 1 + assert_xpath '//*[@id="preamble"]', result, 1 + end + + test 'test_with_no_header_footer' do + result = render_string("= Title\n\npreamble", :header_footer => false) + assert_xpath '/html', result, 0 + assert_xpath '/*[@id="header"]', result, 0 + assert_xpath '/*[@id="footer"]', result, 0 + assert_xpath '/*[@id="preamble"]', result, 1 + end + end + + context 'Backends and Doctypes' do + test 'test_html5_backend_doctype_article' do + result = render_string("= Title\n\npreamble", :attributes => {'backend' => 'html5'}) + assert_xpath '/html', result, 1 + assert_xpath '/html/body[@class="article"]', result, 1 + assert_xpath '/html//*[@id="header"]/h1[text() = "Title"]', result, 1 + assert_xpath '/html//*[@id="preamble"]//p[text() = "preamble"]', result, 1 + end + + test 'test_html5_backend_doctype_book' do + result = render_string("= Title\n\npreamble", :attributes => {'backend' => 'html5', 'doctype' => 'book'}) + assert_xpath '/html', result, 1 + assert_xpath '/html/body[@class="book"]', result, 1 + assert_xpath '/html//*[@id="header"]/h1[text() = "Title"]', result, 1 + assert_xpath '/html//*[@id="preamble"]//p[text() = "preamble"]', result, 1 + end + + test 'test_docbook45_backend_doctype_article' do + input = <<-EOS += Title + +preamble + +== First Section + +section body + EOS + result = render_string(input, :attributes => {'backend' => 'docbook45'}) + assert_xpath '/article', result, 1 + assert_xpath '/article/articleinfo/title[text() = "Title"]', result, 1 + assert_xpath '/article/simpara[text() = "preamble"]', result, 1 + assert_xpath '/article/section', result, 1 + assert_xpath '/article/section[@id = "_first_section"]/title[text() = "First Section"]', result, 1 + assert_xpath '/article/section[@id = "_first_section"]/simpara[text() = "section body"]', result, 1 + end + + test 'test_docbook45_backend_doctype_article_no_title' do + result = render_string('text', :attributes => {'backend' => 'docbook45'}) + assert_xpath '/article', result, 1 + assert_xpath '/article/articleinfo/date', result, 1 + assert_xpath '/article/simpara[text() = "text"]', result, 1 + end + + test 'test_docbook45_backend_doctype_book' do + input = <<-EOS += Title + +preamble + +== First Chapter + +chapter body + EOS + result = render_string(input, :attributes => {'backend' => 'docbook45', 'doctype' => 'book'}) + assert_xpath '/book', result, 1 + assert_xpath '/book/bookinfo/title[text() = "Title"]', result, 1 + assert_xpath '/book/preface/simpara[text() = "preamble"]', result, 1 + assert_xpath '/book/chapter', result, 1 + assert_xpath '/book/chapter[@id = "_first_chapter"]/title[text() = "First Chapter"]', result, 1 + assert_xpath '/book/chapter[@id = "_first_chapter"]/simpara[text() = "chapter body"]', result, 1 + end + + test 'test_docbook45_backend_doctype_book_no_title' do + result = render_string('text', :attributes => {'backend' => 'docbook45', 'doctype' => 'book'}) + assert_xpath '/book', result, 1 + assert_xpath '/book/bookinfo/date', result, 1 + assert_xpath '/book/simpara[text() = "text"]', result, 1 + end + + test 'do not override explicit author initials' do + input = <<-EOS += AsciiDoc +Stuart Rackham +:Author Initials: SJR + +more info... + EOS + output = render_string input, :attributes => {'backend' => 'docbook45'} + assert_xpath '/article/articleinfo/authorinitials[text()="SJR"]', output, 1 + end + end +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/asciidoc.txt b/src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/asciidoc.txt new file mode 100644 index 00000000..4db5020b --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/asciidoc.txt @@ -0,0 +1,105 @@ +AsciiDoc User Guide +=================== +Stuart Rackham +:Author Initials: SJR +:toc: +:icons: +:numbered: +:website: http://www.methods.co.nz/asciidoc/ + +AsciiDoc is a text document format for writing notes, documentation, +articles, books, ebooks, slideshows, web pages, blogs and UNIX man +pages. + +.This document +********************************************************************** +This is an overly large document, it probably needs to be refactored +into a Tutorial, Quick Reference and Formal Reference. + +If you're new to AsciiDoc read this section and the <> section and take a look at the example AsciiDoc (`*.txt`) +source files in the distribution `doc` directory. +********************************************************************** + + +Introduction +------------ +AsciiDoc is a plain text human readable/writable document format that +can be translated to DocBook or HTML using the asciidoc(1) command. + +asciidoc(1) comes with a set of configuration files to translate +AsciiDoc articles, books and man pages to HTML or DocBook backend +formats. + +.My AsciiDoc Itch +********************************************************************** +DocBook has emerged as the de facto standard Open Source documentation +format. But DocBook is a complex language, the markup is difficult to +read and even more difficult to write directly -- I found I was +and fixing syntax errors, than I was writing the documentation. +********************************************************************** + + +[[X6]] +Getting Started +--------------- +Installing AsciiDoc +~~~~~~~~~~~~~~~~~~~ +See the `README` and `INSTALL` files for install prerequisites and +procedures. Packagers take a look at <>. + +[[X11]] +Example AsciiDoc Documents +~~~~~~~~~~~~~~~~~~~~~~~~~~ +The best way to quickly get a feel for AsciiDoc is to view the +AsciiDoc web site and/or distributed examples: + +- Take a look at the linked examples on the AsciiDoc web site home + page {website}. Press the 'Page Source' sidebar menu item to view + corresponding AsciiDoc source. +- Read the `*.txt` source files in the distribution `./doc` directory + along with the corresponding HTML and DocBook XML files. + + +AsciiDoc Document Types +----------------------- +There are three types of AsciiDoc documents: article, book and +manpage. + +Use the asciidoc(1) `-d` (`--doctype`) option to specify the AsciiDoc +document type -- the default document type is 'article'. + +article +~~~~~~~ +Used for short documents, articles and general documentation. See the +AsciiDoc distribution `./doc/article.txt` example. + +AsciiDoc defines standard DocBook article frontmatter and backmatter +<> (appendix, abstract, bibliography, +glossary, index). + +book +~~~~ +Books share the same format as articles, with the following +differences: + +- The part titles in multi-part books are <> + (same level as book title). +- Some sections are book specific e.g. preface and colophon. + +Book documents will normally be used to produce DocBook output since +DocBook processors can automatically generate footnotes, table of +contents, list of tables, list of figures, list of examples and +indexes. + +AsciiDoc defines standard DocBook book frontmatter and backmatter +<> (appendix, dedication, preface, +bibliography, glossary, index, colophon). + +.Example book documents +Book:: + The `./doc/book.txt` file in the AsciiDoc distribution. + +Multi-part book:: + The `./doc/book-multi.txt` file in the AsciiDoc distribution. + diff --git a/src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/asciidoc_index.txt b/src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/asciidoc_index.txt new file mode 100644 index 00000000..f32e0734 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/asciidoc_index.txt @@ -0,0 +1,507 @@ +AsciiDoc Home Page +================== +// Web page meta data. +:keywords: AsciiDoc, DocBook, EPUB, PDF, ebooks, slideshow, slidy, man page +:description: AsciiDoc is a text document format for writing notes, + + documentation, articles, books, ebooks, slideshows, + + web pages, man pages and blogs. AsciiDoc files can be + + translated to many formats including HTML, PDF, EPUB, + + man page. + + +.{revdate}: AsciiDoc {revnumber} Released +************************************************************************ +Read the link:CHANGELOG.html[CHANGELOG] for release highlights and a +full list of all additions, changes and bug fixes. Changes are +documented in the updated link:userguide.html[User Guide]. See the +link:INSTALL.html[Installation page] for downloads and and +installation instructions. + +'Stuart Rackham' +************************************************************************ + +Introduction +------------ +{description} + +AsciiDoc is highly configurable: both the AsciiDoc source file syntax +and the backend output markups (which can be almost any type of +SGML/XML markup) can be customized and extended by the user. + +AsciiDoc is free software and is licenced under the terms of the 'GNU +General Public License version 2' (GPLv2). + +TIP: The pages you are reading were written using AsciiDoc, to view +the corresponding AsciiDoc source click on the *Page Source* menu item +in the left hand margin. + + +Overview and Examples +--------------------- +You write an AsciiDoc document the same way you would write a +normal text document, there are no markup tags or weird format +notations. AsciiDoc files are designed to be viewed, edited and +printed directly or translated to other presentation formats using +the asciidoc(1) command. + +The asciidoc(1) command translates AsciiDoc files to HTML, XHTML and +DocBook markups. DocBook can be post-processed to presentation +formats such as HTML, PDF, EPUB, DVI, LaTeX, roff, and Postscript +using readily available Open Source tools. + +Example Articles +~~~~~~~~~~~~~~~~ +- This XHTML version of the + link:asciidoc.css-embedded.html[AsciiDoc User Guide] + was generated by AsciiDoc from + link:asciidoc.txt[this AsciiDoc file]. + +- Here's the link:asciidoc.html[same document] created by first + generating DocBook markup using AsciiDoc and then converting the + DocBook markup to HTML using 'DocBook XSL Stylesheets'. + +- The User Guide again, this time a + link:chunked/index.html[chunked version]. + +- AsciiDoc generated this link:article-standalone.html[stand-alone + HTML file] containing embedded CSS, JavaScript and images from this + link:article.txt[AsciiDoc article template] with this command: + + asciidoc -a data-uri -a icons -a toc -a max-width=55em article.txt + +- The same link:article.txt[AsciiDoc article template] generated + link:article-html5-toc2.html[this HTML 5] (the 'toc2' attribute puts + a table of contents in the left margin) from this command: + + asciidoc -b html5 -a icons -a toc2 -a theme=flask article.txt + +- The same link:article.txt[AsciiDoc article template] produced + this link:article.html[HTML file] and this + link:article.pdf[PDF file] via DocBook markup generated by AsciiDoc. + +[[X7]] +Example Books +~~~~~~~~~~~~~ +AsciiDoc markup supports all the standard DocBook frontmatter and +backmatter sections (dedication, preface, bibliography, glossary, +index, colophon) plus footnotes and index entries. + +- This link:book.txt[AsciiDoc book] produced link:book.html[this HTML + file] using the 'DocBook XSL Stylesheets'. +- The link:asciidoc.pdf[PDF formatted AsciiDoc User Guide] was + generated from asciidoc(1) DocBook output. +- The link:asciidoc.epub[EPUB formatted AsciiDoc User Guide] was + generated using link:a2x.1.html[a2x]. +- This link:book.epub[EPUB formatted book skeleton] was generated + using link:a2x.1.html[a2x]. +- This link:book-multi.txt[multi-part AsciiDoc book] produced + link:book-multi.html[this HTML file] using the 'DocBook XSL + Stylesheets'. + +Example UNIX Man Pages +~~~~~~~~~~~~~~~~~~~~~~ +HTML formatted AsciiDoc man pages +link:asciidoc.1.css-embedded.html[with stylesheets] and +link:asciidoc.1.html[without stylesheets] were generated by AsciiDoc +from link:asciidoc.1.txt[this file]. + +This link:asciidoc.1[roff formatted man page] was generated from +asciidoc(1) DocBook output using `xsltproc(1)` and DocBook XSL +Stylesheets. + +[[X8]] +Example Slideshows +~~~~~~~~~~~~~~~~~~ +The http://www.w3.org/Talks/Tools/Slidy2/[Slidy] backend generates +HTML slideshows that can be viewed in any web browser. What's nice is +that you can create completely self contained slideshows including +embedded images. + +- Here is the link:slidy.html[slidy backend documentation] slideshow + and here is it's link:slidy.txt[AsciiDoc source]. +- An link:slidy-example.html[example slidy slideshow] and the + link:slidy-example.txt[AsciiDoc source]. + +Example Web Site +~~~~~~~~~~~~~~~~ +The link:README-website.html[AsciiDoc website] is included in the +AsciiDoc distribution (in `./examples/website/`) as an example website +built using AsciiDoc. See `./examples/website/README-website.txt`. + +More examples +~~~~~~~~~~~~~ +- See below: <>. +- Example link:newtables.html[Tables]. + + +eBook Publication +----------------- +The two most popular open eBook formats are +http://en.wikipedia.org/wiki/EPUB[EPUB] and PDF. +The AsciiDoc link:a2x.1.html[a2x] toolchain wrapper makes it easy to +link:publishing-ebooks-with-asciidoc.html[publish EPUB and PDF eBooks +with AsciiDoc]. See also <> and +link:epub-notes.html[AsciiDoc EPUB Notes]). + + +Blogpost weblog client +---------------------- +http://srackham.wordpress.com/blogpost-readme/[blogpost] is a +command-line weblog client for publishing AsciiDoc documents to +http://wordpress.org/[WordPress] blog hosts. It creates and updates +weblog posts and pages directly from AsciiDoc source documents. + + +Source code highlighter +----------------------- +AsciiDoc includes a link:source-highlight-filter.html[source code +highlighter filter] that uses +http://www.gnu.org/software/src-highlite/[GNU source-highlight] to +highlight HTML outputs. You also have the option of using the +http://pygments.org/[Pygments] highlighter. + + +[[X3]] +Mathematical Formulae +--------------------- +You can include mathematical formulae in AsciiDoc XHTML documents using +link:asciimathml.html[ASCIIMathML] or link:latexmathml.html[LaTeXMathML] +notation. + +The link:latex-filter.html[AsciiDoc LaTeX filter] translates LaTeX +source to a PNG image that is automatically inserted into the AsciiDoc +output documents. + +AsciiDoc also has 'latexmath' macros for DocBook outputs -- they are +documented in link:latexmath.pdf[this PDF file] and can be used in +AsciiDoc documents processed by `dblatex(1)`. + + +Editor Support +-------------- +- An AsciiDoc syntax highlighter for the Vim text editor is included in the + AsciiDoc distribution (see 'Appendix F' of the 'AsciiDoc User Guide' for + details). ++ +.Syntax highlighter screenshot +image::images/highlighter.png[height=400,caption="",link="images/highlighter.png"] + +- Dag Wieers has implemented an alternative Vim syntax file for + AsciiDoc which can be found here + http://svn.rpmforge.net/svn/trunk/tools/asciidoc-vim/. +- David Avsajanishvili has written a source highlighter for AsciiDoc + files for http://projects.gnome.org/gtksourceview/[GtkSourceView] + (used by http://projects.gnome.org/gedit/[gedit] and a number of + other applications). The project is hosted here: + https://launchpad.net/asciidoc-gtk-highlight +- Florian Kaufman has written 'adoc-mode.el' -- a major-mode for + editing AsciiDoc files in Emacs, you can find it + http://code.google.com/p/sensorflo-emacs/[here]. +- The http://xpt.sourceforge.net/[*Nix Power Tools project] has + released an http://xpt.sourceforge.net/tools/doc-mode/[AsciiDoc + syntax highlighter for Emacs]. +- Terrence Brannon has written + http://github.com/metaperl/asciidoc-el[AsciiDoc functions for + Emacs]. +- Christian Zuckschwerdt has written a + https://github.com/zuckschwerdt/asciidoc.tmbundle[TextMate bundle] + for AsciiDoc. + + +Try AsciiDoc on the Web +----------------------- +Andrew Koster has written a Web based application to interactively +convert and display AsciiDoc source: +http://andrewk.webfactional.com/asciidoc.php + + +[[X2]] +External Resources and Applications +----------------------------------- +Here are resources that I know of, if you know of more drop me a line +and I'll add them to the list. + +- Check the link:INSTALL.html#X2[installation page] for packaged versions + of AsciiDoc. +- Alex Efros has written an HTML formatted + http://powerman.name/doc/asciidoc[AsciiDoc Cheatsheet] using + Asciidoc. +- Thomas Berker has written an + http://liksom.info/blog/?q=node/114[AsciiDoc Cheatsheet] in Open + Document and PDF formats. +- The http://www.wikimatrix.org/[WikiMatrix] website has an excellent + http://www.wikimatrix.org/syntax.php[web page] that compares the + various Wiki markup syntaxes. An interesting attempt at Wiki markup + standardization is http://www.wikicreole.org/[CREOLE]. +- Franck Pommereau has written + http://www.univ-paris12.fr/lacl/pommereau/soft/asciidoctest.html[Asciidoctest], + a program that doctests snippets of Python code within your Asciidoc + documents. +- The http://remips.sourceforge.net/[ReMIPS] project website has been + built using AsciiDoc. +- Here are some link:asciidoc-docbook-xsl.html[DocBook XSL Stylesheets + Notes]. +- Karl Mowatt-Wilson has developed an http://ikiwiki.info/[ikiwiki] + plugin for AsciiDoc which he uses to render + http://mowson.org/karl[his website]. The plugin is available + http://www.mowson.org/karl/colophon/[here] and there is some + discussion of the ikiwiki integration + http://ikiwiki.info/users/KarlMW/discussion/[here]. +- Glenn Eychaner has + http://groups.google.com/group/asciidoc/browse_thread/thread/bf04b55628efe214[reworked + the Asciidoc plugin for ikiwiki] that was created by Karl Mowson, + the source can be downloaded from + http://dl.dropbox.com/u/11256359/asciidoc.pm +- David Hajage has written an AsciiDoc package for the + http://www.r-project.org/[R Project] (R is a free software + environment for statistical computing). 'ascii' is available on + 'CRAN' (just run `install.package("ascii")` from R). Briefly, + 'ascii' replaces R results in AsciiDoc document with AsciiDoc + markup. More information and examples here: + http://eusebe.github.com/ascii/. +- Pascal Rapaz has written a Python script to automate AsciiDoc + website generation. You can find it at + http://www.rapazp.ch/opensource/tools/asciidoc.html. +- Jared Henley has written + http://jared.henley.id.au/software/awb/documentation.html[AsciiDoc + Website Builder]. 'AsciiDoc Website Builder' (awb) is a python + program that automates the building of of a website written in + AsciiDoc. All you need to write is the AsciiDoc source plus a few + simple configuration files. +- Brad Adkins has written + http://dbixjcl.org/jcl/asciidocgen/asciidocgen.html[AsciiDocGen], a + web site generation and deployment tool that allows you write your + web site content in AsciiDoc. The + http://dbixjcl.org/jcl/asciidocgen/asciidocgen.html[AsciiDocGen web + site] is managed using 'AsciiDocGen'. +- Filippo Negroni has developed a set of tools to facilitate 'literate + programming' using AsciiDoc. The set of tools is called + http://eweb.sourceforge.net/[eWEB]. +- http://vanderwijk.info/2009/4/23/full-text-based-document-generation-using-asciidoc-and-ditaa[Ivo's + blog] describes a http://ditaa.sourceforge.net/[ditaa] filter for + AsciiDoc which converts http://en.wikipedia.org/wiki/ASCII_art[ASCII + art] into graphics. +- http://github.com/github/gollum[Gollum] is a git-powered wiki, it + supports various formats, including AsciiDoc. +- Gregory Romé has written an + http://github.com/gpr/redmine_asciidoc_formatter[AsciiDoc plugin] + for the http://www.redmine.org/[Redmine] project management + application. +- Paul Hsu has started a + http://github.com/paulhsu/AsciiDoc.CHT.userguide[Chinese translation + of the AsciiDoc User Guide]. +- Dag Wieers has written + http://dag.wieers.com/home-made/unoconv/[UNOCONV]. 'UNOCONV' can + export AsciiDoc outputs to OpenOffice export formats. +- Ed Keith has written http://codeextactor.berlios.de/[Code + Extractor], it extracts code snippets from source code files and + inserts them into AsciiDoc documents. +- The http://csrp.iut-blagnac.fr/jmiwebsite/home/[JMI website] hosts + a number of extras for AsciiDoc and Slidy written by Jean-Michel + Inglebert. +- Ryan Tomayko has written an number of + http://tomayko.com/src/adoc-themes/[themes for AsciiDoc] along with + a http://tomayko.com/src/adoc-themes/hacking.html[script for + combining the CSS files] into single CSS theme files for AsciiDoc + embedded CSS documents. +- Ilya Portnov has written a + https://gitorious.org/doc-building-system[document building system + for AsciiDoc], here is + http://iportnov.blogspot.com/2011/03/asciidoc-beamer.html[short + article in Russian] describing it. +- Lex Trotman has written + https://github.com/elextr/codiicsa[codiicsa], a program that + converts DocBook to AsciiDoc. +- Qingping Hou has written http://houqp.github.com/asciidoc-deckjs/[an + AsciiDoc backend for deck.js]. + http://imakewebthings.github.com/deck.js/[deck.js] is a JavaScript + library for building modern HTML presentations (slideshows). +- The guys from O'Reilly Media have posted an + https://github.com/oreillymedia/docbook2asciidoc[XSL Stylesheet to +github] that converts DocBook to AsciiDoc. + +Please let me know if any of these links need updating. + + +[[X6]] +Documents written using AsciiDoc +-------------------------------- +Here are some documents I know of, if you know of more drop me a line +and I'll add them to the list. + +- The book http://practicalunittesting.com/[Practical Unit Testing] by + Tomek Kaczanowski was + https://groups.google.com/group/asciidoc/browse_frm/thread/4ba13926262efa23[written + using Asciidoc]. + +- The book http://oreilly.com/catalog/9781449397296[Programming iOS 4] + by Matt Neuburg was written using AsciiDoc. Matt has + http://www.apeth.net/matt/iosbooktoolchain.html[written an article] + describing how he used AsciiDoc and other tools to write the book. + +- The book + http://oreilly.com/catalog/9780596155957/index.html[Programming + Scala] by Dean Wampler and Alex Payne (O'Reilly) was + http://groups.google.com/group/asciidoc/browse_frm/thread/449f1199343f0e27[written + using Asciidoc]. + +- The http://www.ncfaculty.net/dogle/fishR/index.html[fishR] website + has a number of + http://www.ncfaculty.net/dogle/fishR/bookex/AIFFD/AIFFD.html[book + examples] written using AsciiDoc. + +- The Neo4j graph database project uses Asciidoc, and the output is + published here: http://docs.neo4j.org/. The build process includes + live tested source code snippets and is described + http://groups.google.com/group/asciidoc/browse_thread/thread/49d570062fd3ff52[here]. + +- http://frugalware.org/[Frugalware Linux] uses AsciiDoc for + http://frugalware.org/docs[documentation]. +- http://www.cherokee-project.com/doc/[Cherokee documentation]. + +- Henrik Maier produced this professional User manual using AsciiDoc: + http://www.proconx.com/assets/files/products/modg100/UMMBRG300-1101.pdf + +- Henrik also produced this folded single page brochure format + example: + http://www.proconx.com/assets/files/products/modg100/IGMBRG300-1101-up.pdf ++ +See this +http://groups.google.com/group/asciidoc/browse_thread/thread/16ab5a06864b934f[AsciiDoc +discussion group thread] for details. + +- The + http://www.kernel.org/pub/software/scm/git/docs/user-manual.html[Git + User's Manual]. +- 'Git Magic' + + http://www-cs-students.stanford.edu/~blynn/gitmagic/ + + http://github.com/blynn/gitmagic/tree/1e5780f658962f8f9b01638059b27275cfda095c +- 'CouchDB: The Definitive Guide' + + http://books.couchdb.org/relax/ + + http://groups.google.com/group/asciidoc/browse_thread/thread/a60f67cbbaf862aa/d214bf7fa2d538c4?lnk=gst&q=book#d214bf7fa2d538c4 +- 'Ramaze Manual' + + http://book.ramaze.net/ + + http://github.com/manveru/ramaze-book/tree/master +- Some documentation about git by Nico Schottelius (in German) + http://nico.schotteli.us/papers/linux/git-firmen/. +- The http://www.netpromi.com/kirbybase_ruby.html[KirbyBase for Ruby] + database management system manual. +- The http://xpt.sourceforge.net/[*Nix Power Tools project] uses + AsciiDoc for documentation. +- The http://www.wesnoth.org/[Battle for Wesnoth] project uses + AsciiDoc for its http://www.wesnoth.org/wiki/WesnothManual[Manual] + in a number of different languages. +- Troy Hanson uses AsciiDoc to generate user guides for the + http://tpl.sourceforge.net/[tpl] and + http://uthash.sourceforge.net/[uthash] projects (the HTML versions + have a customised contents sidebar). +- http://volnitsky.com/[Leonid Volnitsky's site] is generated using + AsciiDoc and includes Leonid's matplotlib filter. +- http://www.weechat.org/[WeeChat] uses AsciiDoc for + http://www.weechat.org/doc[project documentation]. +- http://www.clansuite.com/[Clansuite] uses AsciiDoc for + http://www.clansuite.com/documentation/[project documentation]. +- The http://fc-solve.berlios.de/[Freecell Solver program] uses + AsciiDoc for its + http://fc-solve.berlios.de/docs/#distributed-docs[distributed + documentation]. +- Eric Raymond's http://gpsd.berlios.de/AIVDM.html[AIVDM/AIVDO + protocol decoding] documentation is written using AsciiDoc. +- Dwight Schauer has written an http://lxc.teegra.net/[LXC HOWTO] in + AsciiDoc. +- The http://www.rowetel.com/ucasterisk/[Free Telephony Project] + website is generated using AsciiDoc. +- Warren Block has http://www.wonkity.com/~wblock/docs/[posted a + number of articles written using AsciiDoc]. +- The http://code.google.com/p/waf/[Waf project's] 'Waf Book' is + written using AsciiDoc, there is an + http://waf.googlecode.com/svn/docs/wafbook/single.html[HTML] and a + http://waf.googlecode.com/svn/docs/wafbook/waf.pdf[PDF] version. +- The http://www.diffkit.org/[DiffKit] project's documentation and + website have been written using Asciidoc. +- The http://www.networkupstools.org[Network UPS Tools] project + http://www.networkupstools.org/documentation.html[documentation] is + an example of a large documentation project written using AsciiDoc. +- http://www.archlinux.org/pacman/[Pacman], the + http://www.archlinux.org/[Arch Linux] package manager, has been + documented using AsciiDoc. +- Suraj Kurapati has written a number of customized manuals for his + Open Source projects using AsciiDoc: + + * http://snk.tuxfamily.org/lib/detest/ + * http://snk.tuxfamily.org/lib/ember/ + * http://snk.tuxfamily.org/lib/inochi/ + * http://snk.tuxfamily.org/lib/rumai/ + +- The http://cxxtest.com/[CxxTest] project (unit testing for C++ + language) has written its User Guide using AsciiDoc. + +Please let me know if any of these links need updating. + + +DocBook 5.0 Backend +------------------- +Shlomi Fish has begun work on a DocBook 5.0 `docbook50.conf` backend +configuration file, you can find it +http://bitbucket.org/shlomif/asciidoc[here]. See also: +http://groups.google.com/group/asciidoc/browse_thread/thread/4386c7cc053d51a9 + + +[[X1]] +LaTeX Backend +------------- +An experimental LaTeX backend was written for AsciiDoc in 2006 by +Benjamin Klum. Benjamin did a superhuman job (I admit it, I didn't +think this was doable due to AsciiDoc's SGML/XML bias). Owning to to +other commitments, Benjamin was unable to maintain this backend. +Here's link:latex-backend.html[Benjamin's original documentation]. +Incompatibilities introduced after AsciiDoc 8.2.7 broke the LaTeX +backend. + +In 2009 Geoff Eddy stepped up and updated the LaTeX backend, thanks to +Geoff's efforts it now works with AsciiDoc 8.4.3. Geoff's updated +`latex.conf` file shipped with AsciiDoc version 8.4.4. The backend +still has limitations and remains experimental (see +link:latex-bugs.html[Geoff's notes]). + +It's probably also worth pointing out that LaTeX output can be +generated by passing AsciiDoc generated DocBook through `dblatex(1)`. + + +Patches and bug reports +----------------------- +Patches and bug reports are are encouraged, but please try to follow +these guidelines: + +- Post bug reports and patches to the + http://groups.google.com/group/asciidoc[asciidoc discussion list], + this keeps things transparent and gives everyone a chance to + comment. +- The email subject line should be a specific and concise topic + summary. Commonly accepted subject line prefixes such as '[ANN]', + '[PATCH]' and '[SOLVED]' are good. + +=== Bug reports +- When reporting problems please illustrate the problem with the + smallest possible example that replicates the issue (and please test + your example before posting). This technique will also help to + eliminate red herrings prior to posting. +- Paste the commands that you executed along with any relevant + outputs. +- Include the version of AsciiDoc and the platform you're running it + on. +- If you can program please consider writing a patch to fix the + problem. + +=== Patches +- Keep patches small and atomic (one issue per patch) -- no patch + bombs. +- If possible test your patch against the current trunk. +- If your patch adds or modifies functionality include a short example + that illustrates the changes. +- Send patches in `diff -u` format, inline inside the mail message is + usually best; if it is a very long patch then send it as an + attachment. +- Include documentation updates if you're up to it; otherwise insert + 'TODO' comments at relevant places in the documentation. + diff --git a/src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/ascshort.txt b/src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/ascshort.txt new file mode 100644 index 00000000..55aba41e --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/ascshort.txt @@ -0,0 +1,32 @@ +AsciiDoc User Guide +=================== +Stuart Rackham +:Author Initials: SJR +:toc: +:icons: +:numbered: +:website: http://www.methods.co.nz/asciidoc/ + +AsciiDoc is a text document format for writing notes, documentation, +articles, books, ebooks, slideshows, web pages, blogs and UNIX man +pages. + +.This document +********************************************************************** +This is an overly large document, it probably needs to be refactored +into a Tutorial, Quick Reference and Formal Reference. + +If you're new to AsciiDoc read this section and the <> section and take a look at the example AsciiDoc (`*.txt`) +source files in the distribution `doc` directory. +********************************************************************** + + +Introduction +------------ +AsciiDoc is a plain text human readable/writable document format that +can be translated to DocBook or HTML using the asciidoc(1) command. + +asciidoc(1) comes with a set of configuration files to translate +AsciiDoc articles, books and man pages to HTML or DocBook backend +formats. diff --git a/src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/dot.gif b/src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/dot.gif new file mode 100644 index 0000000000000000000000000000000000000000..e232d4a6f866435dacad936a0eb21386066feb41 GIT binary patch literal 35 ncmZ?wbhEHbWMp7uXkcJqWnp1pV9)_#AfJ(efr-h5k--`ON7n-C literal 0 HcmV?d00001 diff --git a/src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/encoding.asciidoc b/src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/encoding.asciidoc new file mode 100644 index 00000000..3b260ab9 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/encoding.asciidoc @@ -0,0 +1 @@ +Gregory Romé has written an AsciiDoc plugin for the Redmine project management application. diff --git a/src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/include-file.asciidoc b/src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/include-file.asciidoc new file mode 100644 index 00000000..21ed5fbd --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/include-file.asciidoc @@ -0,0 +1 @@ +included content diff --git a/src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/list_elements.asciidoc b/src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/list_elements.asciidoc new file mode 100644 index 00000000..066d14fc --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/list_elements.asciidoc @@ -0,0 +1,10 @@ +AsciiDoc Home Page +================== + +Example Articles +~~~~~~~~~~~~~~~~ +- Item 1 + +- Item 2 + +- Item 3 diff --git a/src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/tip.gif b/src/main/resources/gems/asciidoctor-0.0.9/test/fixtures/tip.gif new file mode 100644 index 0000000000000000000000000000000000000000..e232d4a6f866435dacad936a0eb21386066feb41 GIT binary patch literal 35 ncmZ?wbhEHbWMp7uXkcJqWnp1pV9)_#AfJ(efr-h5k--`ON7n-C literal 0 HcmV?d00001 diff --git a/src/main/resources/gems/asciidoctor-0.0.9/test/headers_test.rb b/src/main/resources/gems/asciidoctor-0.0.9/test/headers_test.rb new file mode 100644 index 00000000..d5e5d717 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/test/headers_test.rb @@ -0,0 +1,482 @@ +# encoding: UTF-8 +require 'test_helper' + +context 'Sections' do + context 'Ids' do + test 'synthetic id is generated by default' do + sec = block_from_string('== Section One') + assert_equal '_section_one', sec.id + end + + test 'synthetic id replaces non-word characters with underscores' do + sec = block_from_string("== We're back!") + assert_equal '_we_re_back', sec.id + end + + test 'synthetic id removes repeating underscores' do + sec = block_from_string('== Section $ One') + assert_equal '_section_one', sec.id + end + + test 'synthetic id prefix can be customized' do + sec = block_from_string(":idprefix: id_\n\n== Section One") + assert_equal 'id_section_one', sec.id + end + + test 'synthetic id prefix can be set to blank' do + sec = block_from_string(":idprefix:\n\n== Section One") + assert_equal 'section_one', sec.id + end + + test 'synthetic ids can be disabled' do + sec = block_from_string(":sectids!:\n\n== Section One\n") + assert sec.id.nil? + end + + test 'explicit id in anchor above section title overrides synthetic id' do + sec = block_from_string("[[one]]\n== Section One") + assert_equal 'one', sec.id + end + + test 'explicit id can be defined using an inline anchor' do + sec = block_from_string("== Section One [[one]] ==") + assert_equal 'one', sec.id + assert_equal 'Section One', sec.title + end + + test 'title substitutions are applied before generating id' do + sec = block_from_string("== Section{sp}One\n") + assert_equal '_section_one', sec.id + end + + test 'synthetic ids are unique' do + input = <<-EOS +== Some section + +text + +== Some section + +text + EOS + doc = document_from_string input + assert_equal '_some_section', doc.blocks[0].id + assert_equal '_some_section_2', doc.blocks[1].id + end + end + + context "document title (level 0)" do + test "document title with multiline syntax" do + title = "My Title" + chars = "=" * title.length + assert_xpath "//h1[not(@id)][text() = 'My Title']", render_string(title + "\n" + chars) + assert_xpath "//h1[not(@id)][text() = 'My Title']", render_string(title + "\n" + chars + "\n") + end + + test "document title with multiline syntax, give a char" do + title = "My Title" + chars = "=" * (title.length + 1) + assert_xpath "//h1[not(@id)][text() = 'My Title']", render_string(title + "\n" + chars) + assert_xpath "//h1[not(@id)][text() = 'My Title']", render_string(title + "\n" + chars + "\n") + end + + test "document title with multiline syntax, take a char" do + title = "My Title" + chars = "=" * (title.length - 1) + assert_xpath "//h1[not(@id)][text() = 'My Title']", render_string(title + "\n" + chars) + assert_xpath "//h1[not(@id)][text() = 'My Title']", render_string(title + "\n" + chars + "\n") + end + + test "not enough chars for a multiline document title" do + title = "My Title" + chars = "=" * (title.length - 2) + assert_xpath '//h1', render_string(title + "\n" + chars), 0 + assert_xpath '//h1', render_string(title + "\n" + chars + "\n"), 0 + end + + test "too many chars for a multiline document title" do + title = "My Title" + chars = "=" * (title.length + 2) + assert_xpath '//h1', render_string(title + "\n" + chars), 0 + assert_xpath '//h1', render_string(title + "\n" + chars + "\n"), 0 + end + + test "document title with multiline syntax cannot begin with a dot" do + title = ".My Title" + chars = "=" * title.length + assert_xpath '//h1', render_string(title + "\n" + chars), 0 + end + + test "document title with single-line syntax" do + assert_xpath "//h1[not(@id)][text() = 'My Title']", render_string("= My Title") + end + + test "document title with symmetric syntax" do + assert_xpath "//h1[not(@id)][text() = 'My Title']", render_string("= My Title =") + end + end + + context "level 1" do + test "with multiline syntax" do + assert_xpath "//h2[@id='_my_section'][text() = 'My Section']", render_string("My Section\n-----------") + end + + test "heading title with multiline syntax cannot begin with a dot" do + title = ".My Title" + chars = "-" * title.length + assert_xpath '//h2', render_string(title + "\n" + chars), 0 + end + + test "with single-line syntax" do + assert_xpath "//h2[@id='_my_title'][text() = 'My Title']", render_string("== My Title") + end + + test "with single-line symmetric syntax" do + assert_xpath "//h2[@id='_my_title'][text() = 'My Title']", render_string("== My Title ==") + end + + test "with single-line non-matching symmetric syntax" do + assert_xpath "//h2[@id='_my_title'][text() = 'My Title ===']", render_string("== My Title ===") + end + + test "with non-word character" do + assert_xpath "//h2[@id='_where_s_the_love'][text() = \"Where#{[8217].pack('U*')}s the love?\"]", render_string("== Where's the love?") + end + + test "with sequential non-word characters" do + assert_xpath "//h2[@id='_what_the_is_this'][text() = 'What the \#@$ is this?']", render_string('== What the #@$ is this?') + end + + test "with trailing whitespace" do + assert_xpath "//h2[@id='_my_title'][text() = 'My Title']", render_string("== My Title ") + end + + test "with custom blank idprefix" do + assert_xpath "//h2[@id='my_title'][text() = 'My Title']", render_string(":idprefix:\n\n== My Title ") + end + + test "with custom non-blank idprefix" do + assert_xpath "//h2[@id='ref_my_title'][text() = 'My Title']", render_string(":idprefix: ref_\n\n== My Title ") + end + + test 'with multibyte characters' do + input = <<-EOS +== Asciidoctor in 中文 + EOS + output = render_string input + assert_xpath '//h2[@id="_asciidoctor_in"][text()="Asciidoctor in 中文"]', output + end + end + + context "level 2" do + test "with multiline syntax" do + assert_xpath "//h3[@id='_my_section'][text() = 'My Section']", render_string(":fragment:\nMy Section\n~~~~~~~~~~~") + end + + test "with single line syntax" do + assert_xpath "//h3[@id='_my_title'][text() = 'My Title']", render_string(":fragment:\n=== My Title") + end + end + + context "level 3" do + test "with multiline syntax" do + assert_xpath "//h4[@id='_my_section'][text() = 'My Section']", render_string(":fragment:\nMy Section\n^^^^^^^^^^") + end + + test "with single line syntax" do + assert_xpath "//h4[@id='_my_title'][text() = 'My Title']", render_string(":fragment:\n==== My Title") + end + end + + context "level 4" do + test "with multiline syntax" do + assert_xpath "//h5[@id='_my_section'][text() = 'My Section']", render_string(":fragment:\nMy Section\n++++++++++") + end + + test "with single line syntax" do + assert_xpath "//h5[@id='_my_title'][text() = 'My Title']", render_string(":fragment:\n===== My Title") + end + end + + context 'Section Numbering' do + test 'should create section number with one entry for level 1' do + sect1 = Asciidoctor::Section.new(nil) + sect1.level = 1 + assert_equal '1.', sect1.sectnum + end + + test 'should create section number with two entries for level 2' do + sect1 = Asciidoctor::Section.new(nil) + sect1.level = 1 + sect1_1 = Asciidoctor::Section.new(sect1) + sect1 << sect1_1 + assert_equal '1.1.', sect1_1.sectnum + end + + test 'should create section number with three entries for level 3' do + sect1 = Asciidoctor::Section.new(nil) + sect1.level = 1 + sect1_1 = Asciidoctor::Section.new(sect1) + sect1 << sect1_1 + sect1_1_1 = Asciidoctor::Section.new(sect1_1) + sect1_1 << sect1_1_1 + assert_equal '1.1.1.', sect1_1_1.sectnum + end + + test 'should create section number for second section in level' do + sect1 = Asciidoctor::Section.new(nil) + sect1.level = 1 + sect1_1 = Asciidoctor::Section.new(sect1) + sect1 << sect1_1 + sect1_2 = Asciidoctor::Section.new(sect1) + sect1 << sect1_2 + assert_equal '1.2.', sect1_2.sectnum + end + + test 'sectnum should use specified delimiter and append string' do + sect1 = Asciidoctor::Section.new(nil) + sect1.level = 1 + sect1_1 = Asciidoctor::Section.new(sect1) + sect1 << sect1_1 + sect1_1_1 = Asciidoctor::Section.new(sect1_1) + sect1_1 << sect1_1_1 + assert_equal '1,1,1,', sect1_1_1.sectnum(',') + assert_equal '1:1:1', sect1_1_1.sectnum(':', false) + end + + test 'should render section numbers when numbered attribute is set' do + input = <<-EOS += Title +:numbered: + +== Section_1 + +text + +=== Section_1_1 + +text + +==== Section_1_1_1 + +text + +== Section_2 + +text + +=== Section_2_1 + +text + +=== Section_2_2 + +text + EOS + + output = render_string input + assert_xpath '//h2[@id="_section_1"][starts-with(text(), "1. ")]', output, 1 + assert_xpath '//h3[@id="_section_1_1"][starts-with(text(), "1.1. ")]', output, 1 + assert_xpath '//h4[@id="_section_1_1_1"][starts-with(text(), "1.1.1. ")]', output, 1 + assert_xpath '//h2[@id="_section_2"][starts-with(text(), "2. ")]', output, 1 + assert_xpath '//h3[@id="_section_2_1"][starts-with(text(), "2.1. ")]', output, 1 + assert_xpath '//h3[@id="_section_2_2"][starts-with(text(), "2.2. ")]', output, 1 + end + + test 'blocks should have level' do + input = <<-EOS += Title + +preamble + +== Section 1 + +paragraph + +=== Section 1.1 + +paragraph + EOS + doc = document_from_string input + assert_equal 0, doc.blocks[0].level + assert_equal 1, doc.blocks[1].level + assert_equal 1, doc.blocks[1].blocks[0].level + assert_equal 2, doc.blocks[1].blocks[1].level + assert_equal 2, doc.blocks[1].blocks[1].blocks[0].level + end + end + + context "heading patterns in blocks" do + test "should not interpret a listing block as a heading" do + input = <<-EOS +Section +------- + +---- +code +---- + +fin. + EOS + output = render_string input + assert_xpath "//h2", output, 1 + end + + test "should not interpret an open block as a heading" do + input = <<-EOS +Section +------- + +-- +ha +-- + +fin. + EOS + output = render_string input + assert_xpath "//h2", output, 1 + end + + test "should not interpret an attribute list as a heading" do + input = <<-EOS +Section +======= + +preamble + +[TIP] +==== +This should be a tip, not a heading. +==== + EOS + output = render_string input + assert_xpath "//*[@class='admonitionblock']//p[text() = 'This should be a tip, not a heading.']", output, 1 + end + + test "should not match a heading in a labeled list" do + input = <<-EOS +Section +------- + +term1:: ++ +---- +list = [1, 2, 3]; +---- +term2:: +== not a heading +term3:: def + +// + +fin. + EOS + output = render_string input + assert_xpath "//h2", output, 1 + assert_xpath "//dl", output, 1 + end + + test "should not match a heading in a bulleted list" do + input = <<-EOS +Section +------- + +* first ++ +---- +list = [1, 2, 3]; +---- ++ +* second +== not a heading +* third + +fin. + EOS + output = render_string input + assert_xpath "//h2", output, 1 + assert_xpath "//ul", output, 1 + end + + test "should not match a heading in a block" do + input = <<-EOS +==== + +== not a heading + +==== + EOS + output = render_string input + assert_xpath "//h2", output, 0 + assert_xpath "//*[@class='exampleblock']//p[text() = '== not a heading']", output, 1 + end + end + + context 'Table of Contents' do + test 'should render table of contents if toc attribute is set' do + input = <<-EOS +Article +======= +:toc: + +== Section One + +It was a dark and stormy night... + +== Section Two + +They couldn't believe their eyes when... + +=== Interlude + +While they were waiting... + +== Section Three + +That's all she wrote! + EOS + output = render_string input + assert_xpath '//*[@id="toc"]', output, 1 + assert_xpath '//*[@id="toc"]/*[@id="toctitle"][text()="Table of Contents"]', output, 1 + assert_xpath '//*[@id="toc"]/ol', output, 1 + assert_xpath '//*[@id="toc"]//ol', output, 2 + assert_xpath '//*[@id="toc"]/ol/li', output, 4 + assert_xpath '//*[@id="toc"]/ol/li[1]/a[@href="#_section_one"][text()="1. Section One"]', output, 1 + assert_xpath '//*[@id="toc"]/ol/li/ol/li', output, 1 + assert_xpath '//*[@id="toc"]/ol/li/ol/li/a[@href="#_interlude"][text()="2.1. Interlude"]', output, 1 + end + end + + context "book doctype" do + test "document title with level 0 headings" do + input = <<-EOS +Book +==== +:doctype: book + += Chapter One + +It was a dark and stormy night... + += Chapter Two + +They couldn't believe their eyes when... + +== Interlude + +While they were waiting... + += Chapter Three + +That's all she wrote! + EOS + + output = render_string(input) + assert_xpath '//h1', output, 4 + assert_xpath '//h2', output, 1 + assert_xpath '//h1[@id="_chapter_one"][text() = "Chapter One"]', output, 1 + assert_xpath '//h1[@id="_chapter_two"][text() = "Chapter Two"]', output, 1 + assert_xpath '//h1[@id="_chapter_three"][text() = "Chapter Three"]', output, 1 + end + end +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/test/lexer_test.rb b/src/main/resources/gems/asciidoctor-0.0.9/test/lexer_test.rb new file mode 100644 index 00000000..c573cc6b --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/test/lexer_test.rb @@ -0,0 +1,286 @@ +require 'test_helper' + +context "Lexer" do + + test "test_is_section_title" do + assert Asciidoctor::Lexer.is_section_title?('AsciiDoc Home Page', '==================') + assert Asciidoctor::Lexer.is_section_title?('=== AsciiDoc Home Page') + end + + test "collect unnamed attribute" do + attributes = {} + line = 'quote' + expected = {1 => 'quote'} + Asciidoctor::AttributeList.new(line).parse_into(attributes) + assert_equal expected, attributes + end + + test "collect unnamed attribute double-quoted" do + attributes = {} + line = '"quote"' + expected = {1 => 'quote'} + Asciidoctor::AttributeList.new(line).parse_into(attributes) + assert_equal expected, attributes + end + + test "collect unnamed attribute double-quoted containing escaped quote" do + attributes = {} + line = '"ba\"zaar"' + expected = {1 => 'ba"zaar'} + Asciidoctor::AttributeList.new(line).parse_into(attributes) + assert_equal expected, attributes + end + + test "collect unnamed attribute single-quoted" do + attributes = {} + line = '\'quote\'' + expected = {1 => 'quote'} + Asciidoctor::AttributeList.new(line).parse_into(attributes) + assert_equal expected, attributes + end + + test "collect unnamed attribute single-quoted containing escaped quote" do + attributes = {} + line = '\'ba\\\'zaar\'' + expected = {1 => 'ba\'zaar'} + Asciidoctor::AttributeList.new(line).parse_into(attributes) + assert_equal expected, attributes + end + + test "collect unnamed attribute with dangling delimiter" do + attributes = {} + line = 'quote , ' + expected = {1 => 'quote'} + Asciidoctor::AttributeList.new(line).parse_into(attributes) + assert_equal expected, attributes + end + + test "collect unnamed attributes" do + attributes = {} + line = "first, second one, third" + expected = {1 => 'first', 2 => 'second one', 3 => 'third'} + Asciidoctor::AttributeList.new(line).parse_into(attributes) + assert_equal expected, attributes + end + + test "collect named attribute" do + attributes = {} + line = 'foo=bar' + expected = {'foo' => 'bar'} + Asciidoctor::AttributeList.new(line).parse_into(attributes) + assert_equal expected, attributes + end + + test "collect named attribute double-quoted" do + attributes = {} + line = 'foo="bar"' + expected = {'foo' => 'bar'} + Asciidoctor::AttributeList.new(line).parse_into(attributes) + assert_equal expected, attributes + end + + test "collect named attribute single-quoted" do + attributes = {} + line = 'foo=\'bar\'' + expected = {'foo' => 'bar'} + Asciidoctor::AttributeList.new(line).parse_into(attributes) + assert_equal expected, attributes + end + + test "collect named attributes unquoted" do + attributes = {} + line = "first=value, second=two, third=3" + expected = {'first' => 'value', 'second' => 'two', 'third' => '3'} + Asciidoctor::AttributeList.new(line).parse_into(attributes) + assert_equal expected, attributes + end + + test "collect named attributes quoted" do + attributes = {} + line = "first='value', second=\"value two\", third=three" + expected = {'first' => 'value', 'second' => 'value two', 'third' => 'three'} + Asciidoctor::AttributeList.new(line).parse_into(attributes) + assert_equal expected, attributes + end + + test "collect named attributes quoted containing non-semantic spaces" do + attributes = {} + line = " first = 'value', second =\"value two\" , third= three " + expected = {'first' => 'value', 'second' => 'value two', 'third' => 'three'} + Asciidoctor::AttributeList.new(line).parse_into(attributes) + assert_equal expected, attributes + end + + test "collect mixed named and unnamed attributes" do + attributes = {} + line = "first, second=\"value two\", third=three, Sherlock Holmes" + expected = {1 => 'first', 'second' => 'value two', 'third' => 'three', 4 => 'Sherlock Holmes'} + Asciidoctor::AttributeList.new(line).parse_into(attributes) + assert_equal expected, attributes + end + + test "collect options attribute" do + attributes = {} + line = "quote, options='opt1,opt2 , opt3'" + expected = {1 => 'quote', 'options' => 'opt1,opt2 , opt3', 'opt1-option' => nil, 'opt2-option' => nil, 'opt3-option' => nil} + Asciidoctor::AttributeList.new(line).parse_into(attributes) + assert_equal expected, attributes + end + + test "collect and rekey unnamed attributes" do + attributes = {} + line = "first, second one, third, fourth" + expected = {1 => 'first', 2 => 'second one', 3 => 'third', 4 => 'fourth', 'a' => 'first', 'b' => 'second one', 'c' => 'third'} + Asciidoctor::AttributeList.new(line).parse_into(attributes, ['a', 'b', 'c']) + assert_equal expected, attributes + end + + test "rekey positional attributes" do + attributes = {1 => 'source', 2 => 'java'} + expected = {1 => 'source', 2 => 'java', 'style' => 'source', 'language' => 'java'} + Asciidoctor::AttributeList.rekey(attributes, ['style', 'language', 'linenums']) + assert_equal expected, attributes + end + + test "test_parse_author_first" do + metadata, = parse_header_metadata 'Stuart' + assert_equal 3, metadata.size + assert_equal 'Stuart', metadata['author'] + assert_equal 'Stuart', metadata['firstname'] + assert_equal 'S', metadata['authorinitials'] + end + + test "test_parse_author_first_last" do + metadata, = parse_header_metadata 'Yukihiro Matsumoto' + assert_equal 4, metadata.size + assert_equal 'Yukihiro Matsumoto', metadata['author'] + assert_equal 'Yukihiro', metadata['firstname'] + assert_equal 'Matsumoto', metadata['lastname'] + assert_equal 'YM', metadata['authorinitials'] + end + + test "test_parse_author_first_middle_last" do + metadata, = parse_header_metadata 'David Heinemeier Hansson' + assert_equal 5, metadata.size + assert_equal 'David Heinemeier Hansson', metadata['author'] + assert_equal 'David', metadata['firstname'] + assert_equal 'Heinemeier', metadata['middlename'] + assert_equal 'Hansson', metadata['lastname'] + assert_equal 'DHH', metadata['authorinitials'] + end + + test "test_parse_author_first_middle_last_email" do + metadata, = parse_header_metadata 'David Heinemeier Hansson ' + assert_equal 6, metadata.size + assert_equal 'David Heinemeier Hansson', metadata['author'] + assert_equal 'David', metadata['firstname'] + assert_equal 'Heinemeier', metadata['middlename'] + assert_equal 'Hansson', metadata['lastname'] + assert_equal 'rails@ruby-lang.org', metadata['email'] + assert_equal 'DHH', metadata['authorinitials'] + end + + test "test_parse_author_first_email" do + metadata, = parse_header_metadata 'Stuart ' + assert_equal 4, metadata.size + assert_equal 'Stuart', metadata['author'] + assert_equal 'Stuart', metadata['firstname'] + assert_equal 'founder@asciidoc.org', metadata['email'] + assert_equal 'S', metadata['authorinitials'] + end + + test "test_parse_author_first_last_email" do + metadata, = parse_header_metadata 'Stuart Rackham ' + assert_equal 5, metadata.size + assert_equal 'Stuart Rackham', metadata['author'] + assert_equal 'Stuart', metadata['firstname'] + assert_equal 'Rackham', metadata['lastname'] + assert_equal 'founder@asciidoc.org', metadata['email'] + assert_equal 'SR', metadata['authorinitials'] + end + + test "test_parse_author_with_hyphen" do + metadata, = parse_header_metadata 'Tim Berners-Lee ' + assert_equal 5, metadata.size + assert_equal 'Tim Berners-Lee', metadata['author'] + assert_equal 'Tim', metadata['firstname'] + assert_equal 'Berners-Lee', metadata['lastname'] + assert_equal 'founder@www.org', metadata['email'] + assert_equal 'TB', metadata['authorinitials'] + end + + test "test_parse_author_with_underscore" do + metadata, = parse_header_metadata 'Tim_E Fella' + assert_equal 4, metadata.size + assert_equal 'Tim E Fella', metadata['author'] + assert_equal 'Tim E', metadata['firstname'] + assert_equal 'Fella', metadata['lastname'] + assert_equal 'TF', metadata['authorinitials'] + end + + test "test_parse_author_condenses_whitespace" do + metadata, = parse_header_metadata ' Stuart Rackham ' + assert_equal 5, metadata.size + assert_equal 'Stuart Rackham', metadata['author'] + assert_equal 'Stuart', metadata['firstname'] + assert_equal 'Rackham', metadata['lastname'] + assert_equal 'founder@asciidoc.org', metadata['email'] + assert_equal 'SR', metadata['authorinitials'] + end + + test "test_parse_invalid_author_line_becomes_author" do + metadata, = parse_header_metadata ' Stuart Rackham, founder of AsciiDoc ' + assert_equal 3, metadata.size + assert_equal 'Stuart Rackham, founder of AsciiDoc ', metadata['author'] + assert_equal 'Stuart Rackham, founder of AsciiDoc ', metadata['firstname'] + assert_equal 'S', metadata['authorinitials'] + end + + test "test_parse_rev_number_date_remark" do + metadata, = parse_header_metadata "Ryan Waldron\nv0.0.7, 2013-12-18: The first release you can stand on" + assert_equal 7, metadata.size + assert_equal '0.0.7', metadata['revnumber'] + assert_equal '2013-12-18', metadata['revdate'] + assert_equal 'The first release you can stand on', metadata['revremark'] + end + + test "test_parse_rev_date" do + metadata, = parse_header_metadata "Ryan Waldron\n2013-12-18" + assert_equal 5, metadata.size + assert_equal '2013-12-18', metadata['revdate'] + end + + test "test_parse_rev_date_remark" do + metadata, = parse_header_metadata "Ryan Waldron\n2013-12-18: The first release you can stand on" + assert_equal 6, metadata.size + assert_equal '2013-12-18', metadata['revdate'] + assert_equal 'The first release you can stand on', metadata['revremark'] + end + + test "test_skip_line_comments_before_author" do + metadata, = parse_header_metadata "// Asciidoctor\n// release artist\nRyan Waldron" + assert_equal 4, metadata.size + assert_equal 'Ryan Waldron', metadata['author'] + assert_equal 'Ryan', metadata['firstname'] + assert_equal 'Waldron', metadata['lastname'] + assert_equal 'RW', metadata['authorinitials'] + end + + test "test_skip_block_comment_before_author" do + metadata, = parse_header_metadata "////\nAsciidoctor\nrelease artist\n////\nRyan Waldron" + assert_equal 4, metadata.size + assert_equal 'Ryan Waldron', metadata['author'] + assert_equal 'Ryan', metadata['firstname'] + assert_equal 'Waldron', metadata['lastname'] + assert_equal 'RW', metadata['authorinitials'] + end + + test "test_skip_block_comment_before_rev" do + metadata, = parse_header_metadata "Ryan Waldron\n////\nAsciidoctor\nrelease info\n////\nv0.0.7, 2013-12-18" + assert_equal 6, metadata.size + assert_equal 'Ryan Waldron', metadata['author'] + assert_equal '0.0.7', metadata['revnumber'] + assert_equal '2013-12-18', metadata['revdate'] + end + +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/test/links_test.rb b/src/main/resources/gems/asciidoctor-0.0.9/test/links_test.rb new file mode 100644 index 00000000..4234f8ee --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/test/links_test.rb @@ -0,0 +1,150 @@ +require 'test_helper' + +context 'Links' do + + test 'qualified url inline with text' do + assert_xpath "//a[@href='http://asciidoc.org'][text() = 'http://asciidoc.org']", render_string("The AsciiDoc project is located at http://asciidoc.org.") + end + + test 'qualified url with label' do + assert_xpath "//a[@href='http://asciidoc.org'][text() = 'AsciiDoc']", render_string("We're parsing http://asciidoc.org[AsciiDoc] markup") + end + + test 'qualified url with label containing escaped right square bracket' do + assert_xpath "//a[@href='http://asciidoc.org'][text() = '[Ascii]Doc']", render_string("We're parsing http://asciidoc.org[[Ascii\\]Doc] markup") + end + + test 'qualified url with label using link macro' do + assert_xpath "//a[@href='http://asciidoc.org'][text() = 'AsciiDoc']", render_string("We're parsing link:http://asciidoc.org[AsciiDoc] markup") + end + + test 'qualified url using macro syntax with multi-line label inline with text' do + assert_xpath %{//a[@href='http://asciidoc.org'][text() = 'AsciiDoc\nmarkup']}, render_string("We're parsing link:http://asciidoc.org[AsciiDoc\nmarkup]") + end + + test 'qualified url surrounded by angled brackets' do + assert_xpath '//a[@href="http://asciidoc.org"][text()="http://asciidoc.org"]', render_string(' is the project page for AsciiDoc.'), 1 + end + + test 'qualified url surrounded by round brackets' do + assert_xpath '//a[@href="http://asciidoc.org"][text()="http://asciidoc.org"]', render_string('(http://asciidoc.org) is the project page for AsciiDoc.'), 1 + end + + test 'qualified url adjacent to text in square brackets' do + assert_xpath '//a[@href="http://asciidoc.org"][text()="AsciiDoc"]', render_string(']http://asciidoc.org[AsciiDoc] project page.'), 1 + end + + test 'qualified url adjacent to text in round brackets' do + assert_xpath '//a[@href="http://asciidoc.org"][text()="AsciiDoc"]', render_string(')http://asciidoc.org[AsciiDoc] project page.'), 1 + end + + test 'qualified url using invalid link macro should not create link' do + assert_xpath '//a', render_string('link:http://asciidoc.org is the project page for AsciiDoc.'), 0 + end + + test 'escaped inline qualified url should not create link' do + assert_xpath '//a', render_string('\http://asciidoc.org is the project page for AsciiDoc.'), 0 + end + + test 'escaped inline qualified url using macro syntax should not create link' do + assert_xpath '//a', render_string('\http://asciidoc.org[AsciiDoc] is the key to good docs.'), 0 + end + + test 'qualified url containing whitespace using macro syntax should not create link' do + assert_xpath '//a', render_string('I often need to refer to the chapter on link:http://asciidoc.org?q=attribute references[Attribute References].'), 0 + end + + test 'qualified url containing an encoded space using macro syntax should create a link' do + assert_xpath '//a', render_string('I often need to refer to the chapter on link:http://asciidoc.org?q=attribute%20references[Attribute References].'), 1 + end + + test 'inline ref' do + doc = document_from_string 'Here you can read about tigers.[[tigers]]' + output = doc.render + assert_equal '[tigers]', doc.references[:ids]['tigers'] + assert_xpath '//a[@id = "tigers"]', output, 1 + assert_xpath '//a[@id = "tigers"]/child::text()', output, 0 + end + + test 'inline ref with reftext' do + doc = document_from_string 'Here you can read about tigers.[[tigers,Tigers]]' + output = doc.render + assert_equal 'Tigers', doc.references[:ids]['tigers'] + assert_xpath '//a[@id = "tigers"]', output, 1 + assert_xpath '//a[@id = "tigers"]/child::text()', output, 0 + end + + test 'escaped inline ref' do + doc = document_from_string 'Here you can read about tigers.\[[tigers]]' + output = doc.render + assert !doc.references[:ids].has_key?('tigers') + assert_xpath '//a[@id = "tigers"]', output, 0 + end + + test 'xref using angled bracket syntax' do + doc = document_from_string '<>' + doc.references[:ids]['tigers'] = '[tigers]' + assert_xpath '//a[@href="#tigers"][text() = "[tigers]"]', doc.render, 1 + end + + test 'xref using angled bracket syntax with label' do + assert_xpath '//a[@href="#tigers"][text() = "About Tigers"]', render_string('<>'), 1 + end + + test 'xref using angled bracket syntax with quoted label' do + assert_xpath '//a[@href="#tigers"][text() = "About Tigers"]', render_string('<>'), 1 + end + + test 'xref using angled bracket syntax inline with text' do + assert_xpath '//a[@href="#tigers"][text() = "about tigers"]', render_string('Want to learn <>?'), 1 + end + + test 'xref using angled bracket syntax with multi-line label inline with text' do + assert_xpath %{//a[@href="#tigers"][text() = "about\ntigers"]}, render_string("Want to learn <>?"), 1 + end + + test 'xref using macro syntax' do + doc = document_from_string 'xref:tigers[]' + doc.references[:ids]['tigers'] = '[tigers]' + assert_xpath '//a[@href="#tigers"][text() = "[tigers]"]', doc.render, 1 + end + + test 'xref using macro syntax with label' do + assert_xpath '//a[@href="#tigers"][text() = "About Tigers"]', render_string('xref:tigers[About Tigers]'), 1 + end + + test 'xref using macro syntax inline with text' do + assert_xpath '//a[@href="#tigers"][text() = "about tigers"]', render_string('Want to learn xref:tigers[about tigers]?'), 1 + end + + test 'xref using macro syntax with multi-line label inline with text' do + assert_xpath %{//a[@href="#tigers"][text() = "about\ntigers"]}, render_string("Want to learn xref:tigers[about\ntigers]?"), 1 + end + + test 'xref using invalid macro syntax does not create link' do + doc = document_from_string 'xref:tigers' + doc.references[:ids]['tigers'] = '[tigers]' + assert_xpath '//a', doc.render, 0 + end + + test 'xref creates link for unknown reference' do + doc = document_from_string '<>' + assert_xpath '//a[@href="#tigers"][text() = "[tigers]"]', doc.render, 1 + end + + test 'anchor creates reference' do + doc = document_from_string "[[tigers]]Tigers roam here." + assert_equal({'tigers' => '[tigers]'}, doc.references[:ids]) + end + + test 'anchor with label creates reference' do + doc = document_from_string "[[tigers,Tigers]]Tigers roam here." + assert_equal({'tigers' => 'Tigers'}, doc.references[:ids]) + end + + test 'anchor with quoted label creates reference' do + doc = document_from_string %([["tigers","Tigers roam here"]]Tigers roam here.) + assert_equal({'tigers' => "Tigers roam here"}, doc.references[:ids]) + end + +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/test/lists_test.rb b/src/main/resources/gems/asciidoctor-0.0.9/test/lists_test.rb new file mode 100644 index 00000000..6dffadad --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/test/lists_test.rb @@ -0,0 +1,2584 @@ +require 'test_helper' + +context "Bulleted lists (:ulist)" do + context "Simple lists" do + test "dash elements with no blank lines" do + input = <<-EOS +List +==== + +- Foo +- Boo +- Blech + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ul/li', output, 3 + end + + test "dash elements separated by blank lines should merge lists" do + input = <<-EOS +List +==== + +- Foo + +- Boo + + +- Blech + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ul/li', output, 3 + end + + test "dash elements separated by a line comment offset by blank lines should not merge lists" do + input = <<-EOS +List +==== + +- Foo +- Boo + +// + +- Blech + EOS + output = render_string input + assert_xpath '//ul', output, 2 + assert_xpath '(//ul)[1]/li', output, 2 + assert_xpath '(//ul)[2]/li', output, 1 + end + + test "dash elements separated by a block title offset by a blank line should not merge lists" do + input = <<-EOS +List +==== + +- Foo +- Boo + +.Also +- Blech + EOS + output = render_string input + assert_xpath '//ul', output, 2 + assert_xpath '(//ul)[1]/li', output, 2 + assert_xpath '(//ul)[2]/li', output, 1 + assert_xpath '(//ul)[2]/preceding-sibling::*[@class = "title"][text() = "Also"]', output, 1 + end + + test 'a non-indented wrapped line is folded into text of list item' do + input = <<-EOS +List +==== + +- Foo +wrapped content +- Boo +- Blech + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ul/li[1]/*', output, 1 + assert_xpath "//ul/li[1]/p[text() = 'Foo\nwrapped content']", output, 1 + end + + test 'an indented wrapped line is unindented and folded into text of list item' do + input = <<-EOS +List +==== + +- Foo + wrapped content +- Boo +- Blech + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ul/li[1]/*', output, 1 + assert_xpath "//ul/li[1]/p[text() = 'Foo\nwrapped content']", output, 1 + end + + test "a literal paragraph offset by blank lines in list content is appended as a literal block" do + input = <<-EOS +List +==== + +- Foo + + literal + +- Boo +- Blech + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ul/li', output, 3 + assert_xpath '(//ul/li)[1]/p[text() = "Foo"]', output, 1 + assert_xpath '(//ul/li)[1]/*[@class="literalblock"]', output, 1 + assert_xpath '(//ul/li)[1]/p/following-sibling::*[@class="literalblock"]', output, 1 + assert_xpath '((//ul/li)[1]/*[@class="literalblock"])[1]//pre[text() = "literal"]', output, 1 + end + + test "a literal paragraph offset by a blank line in list content followed by line with continuation is appended as two blocks" do + input = <<-EOS +List +==== + +- Foo + + literal ++ +para + +- Boo +- Blech + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ul/li', output, 3 + assert_xpath '(//ul/li)[1]/p[text() = "Foo"]', output, 1 + assert_xpath '(//ul/li)[1]/*[@class="literalblock"]', output, 1 + assert_xpath '(//ul/li)[1]/p/following-sibling::*[@class="literalblock"]', output, 1 + assert_xpath '((//ul/li)[1]/*[@class="literalblock"])[1]//pre[text() = "literal"]', output, 1 + assert_xpath '(//ul/li)[1]/*[@class="literalblock"]/following-sibling::*[@class="paragraph"]', output, 1 + assert_xpath '(//ul/li)[1]/*[@class="literalblock"]/following-sibling::*[@class="paragraph"]/p[text()="para"]', output, 1 + end + + test "a literal paragraph with a line that appears as a list item that is followed by a continuation should create two blocks" do + input = <<-EOS +* Foo ++ + literal +. still literal ++ +para + +* Bar + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ul/li', output, 2 + assert_xpath '(//ul/li)[1]/p[text() = "Foo"]', output, 1 + assert_xpath '(//ul/li)[1]/*[@class="literalblock"]', output, 1 + assert_xpath '(//ul/li)[1]/p/following-sibling::*[@class="literalblock"]', output, 1 + assert_xpath %(((//ul/li)[1]/*[@class="literalblock"])[1]//pre[text() = " literal\n. still literal"]), output, 1 + assert_xpath '(//ul/li)[1]/*[@class="literalblock"]/following-sibling::*[@class="paragraph"]', output, 1 + assert_xpath '(//ul/li)[1]/*[@class="literalblock"]/following-sibling::*[@class="paragraph"]/p[text()="para"]', output, 1 + end + + test "consecutive literal paragraph offset by blank lines in list content are appended as a literal blocks" do + input = <<-EOS +List +==== + +- Foo + + literal + + more + literal + +- Boo +- Blech + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ul/li', output, 3 + assert_xpath '(//ul/li)[1]/p[text() = "Foo"]', output, 1 + assert_xpath '(//ul/li)[1]/*[@class="literalblock"]', output, 2 + assert_xpath '(//ul/li)[1]/p/following-sibling::*[@class="literalblock"]', output, 2 + assert_xpath '((//ul/li)[1]/*[@class="literalblock"])[1]//pre[text() = "literal"]', output, 1 + assert_xpath "((//ul/li)[1]/*[@class='literalblock'])[2]//pre[text() = 'more\nliteral']", output, 1 + end + + test "a literal paragraph without a trailing blank line consumes following list items" do + input = <<-EOS +List +==== + +- Foo + + literal +- Boo +- Blech + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ul/li', output, 1 + assert_xpath '(//ul/li)[1]/p[text() = "Foo"]', output, 1 + assert_xpath '(//ul/li)[1]/*[@class="literalblock"]', output, 1 + assert_xpath '(//ul/li)[1]/p/following-sibling::*[@class="literalblock"]', output, 1 + assert_xpath "((//ul/li)[1]/*[@class='literalblock'])[1]//pre[text() = ' literal\n- Boo\n- Blech']", output, 1 + end + + test "asterisk elements with no blank lines" do + input = <<-EOS +List +==== + +* Foo +* Boo +* Blech + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ul/li', output, 3 + end + + test "asterisk elements separated by blank lines should merge lists" do + input = <<-EOS +List +==== + +* Foo + +* Boo + + +* Blech + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ul/li', output, 3 + end + + test "asterisk elements separated by a line comment offset by blank lines should not merge lists" do + input = <<-EOS +List +==== + +* Foo +* Boo + +// + +* Blech + EOS + output = render_string input + assert_xpath '//ul', output, 2 + assert_xpath '(//ul)[1]/li', output, 2 + assert_xpath '(//ul)[2]/li', output, 1 + end + + test "asterisk elements separated by a block title offset by a blank line should not merge lists" do + input = <<-EOS +List +==== + +* Foo +* Boo + +.Also +* Blech + EOS + output = render_string input + assert_xpath '//ul', output, 2 + assert_xpath '(//ul)[1]/li', output, 2 + assert_xpath '(//ul)[2]/li', output, 1 + assert_xpath '(//ul)[2]/preceding-sibling::*[@class = "title"][text() = "Also"]', output, 1 + end + + test "list should terminate before next lower section heading" do + input = <<-EOS +List +==== + +* first +item +* second +item + +== Section + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ul/li', output, 2 + assert_xpath '//h2[text() = "Section"]', output, 1 + end + + test "list should terminate before next lower section heading with implicit id" do + input = <<-EOS +List +==== + +* first +item +* second +item + +[[sec]] +== Section + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ul/li', output, 2 + assert_xpath '//h2[@id = "sec"][text() = "Section"]', output, 1 + end + end + + context "Lists with inline markup" do + test "quoted text" do + input = <<-EOS +List +==== + +- I am *strong*. +- I am 'stressed'. +- I am `flexible`. + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ul/li', output, 3 + assert_xpath '(//ul/li)[1]//strong', output, 1 + assert_xpath '(//ul/li)[2]//em', output, 1 + assert_xpath '(//ul/li)[3]//tt', output, 1 + end + + test "attribute substitutions" do + input = <<-EOS +List +==== +:foo: bar + +- side a {brvbar} side b +- Take me to a {foo}. + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ul/li', output, 2 + assert_xpath '(//ul/li)[1]//p[text() = "side a | side b"]', output, 1 + assert_xpath '(//ul/li)[2]//p[text() = "Take me to a bar."]', output, 1 + end + + test "leading dot is treated as text not block title" do + input = <<-EOS +* .first +* .second +* .third + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ul/li', output, 3 + %w(.first .second .third).each_with_index do |text, index| + assert_xpath "(//ul/li)[#{index + 1}]//p[text() = '#{text}']", output, 1 + end + end + + test "word ending sentence on continuing line not treated as a list item" do + input = <<-EOS +A. This is the story about + AsciiDoc. It begins here. +B. And it ends here. + EOS + output = render_string input + assert_xpath '//ol', output, 1 + assert_xpath '//ol/li', output, 2 + end + end + + context "Nested lists" do + test "asterisk element mixed with dash elements should be nested" do + input = <<-EOS +List +==== + +- Foo +* Boo +- Blech + EOS + output = render_string input + assert_xpath '//ul', output, 2 + assert_xpath '//ul/li', output, 3 + assert_xpath '(//ul)[1]/li', output, 2 + assert_xpath '(//ul)[1]/li//ul/li', output, 1 + end + + test "dash element mixed with asterisks elements should be nested" do + input = <<-EOS +List +==== + +* Foo +- Boo +* Blech + EOS + output = render_string input + assert_xpath '//ul', output, 2 + assert_xpath '//ul/li', output, 3 + assert_xpath '(//ul)[1]/li', output, 2 + assert_xpath '(//ul)[1]/li//ul/li', output, 1 + end + + test "lines prefixed with alternating list markers separated by blank lines should be nested" do + input = <<-EOS +List +==== + +- Foo + +* Boo + + +- Blech + EOS + output = render_string input + assert_xpath '//ul', output, 2 + assert_xpath '//ul/li', output, 3 + assert_xpath '(//ul)[1]/li', output, 2 + assert_xpath '(//ul)[1]/li//ul/li', output, 1 + end + + test "nested elements (2) with asterisks" do + input = <<-EOS +List +==== + +* Foo +** Boo +* Blech + EOS + output = render_string input + assert_xpath '//ul', output, 2 + assert_xpath '//ul/li', output, 3 + assert_xpath '(//ul)[1]/li', output, 2 + assert_xpath '(//ul)[1]/li//ul/li', output, 1 + end + + test "nested elements (3) with asterisks" do + input = <<-EOS +List +==== + +* Foo +** Boo +*** Snoo +* Blech + EOS + output = render_string input + assert_xpath '//ul', output, 3 + assert_xpath '(//ul)[1]/li', output, 2 + assert_xpath '((//ul)[1]/li//ul)[1]/li', output, 1 + assert_xpath '(((//ul)[1]/li//ul)[1]/li//ul)[1]/li', output, 1 + end + + test "nested elements (4) with asterisks" do + input = <<-EOS +List +==== + +* Foo +** Boo +*** Snoo +**** Froo +* Blech + EOS + output = render_string input + assert_xpath '//ul', output, 4 + assert_xpath '(//ul)[1]/li', output, 2 + assert_xpath '((//ul)[1]/li//ul)[1]/li', output, 1 + assert_xpath '(((//ul)[1]/li//ul)[1]/li//ul)[1]/li', output, 1 + assert_xpath '((((//ul)[1]/li//ul)[1]/li//ul)[1]/li//ul)[1]/li', output, 1 + end + + test "nested elements (5) with asterisks" do + input = <<-EOS +List +==== + +* Foo +** Boo +*** Snoo +**** Froo +***** Groo +* Blech + EOS + output = render_string input + assert_xpath '//ul', output, 5 + assert_xpath '(//ul)[1]/li', output, 2 + assert_xpath '((//ul)[1]/li//ul)[1]/li', output, 1 + assert_xpath '(((//ul)[1]/li//ul)[1]/li//ul)[1]/li', output, 1 + assert_xpath '((((//ul)[1]/li//ul)[1]/li//ul)[1]/li//ul)[1]/li', output, 1 + assert_xpath '(((((//ul)[1]/li//ul)[1]/li//ul)[1]/li//ul)[1]/li//ul)[1]/li', output, 1 + end + + test "nested ordered elements (2)" do + input = <<-EOS +List +==== + +. Foo +.. Boo +. Blech + EOS + output = render_string input + assert_xpath '//ol', output, 2 + assert_xpath '//ol/li', output, 3 + assert_xpath '(//ol)[1]/li', output, 2 + assert_xpath '(//ol)[1]/li//ol/li', output, 1 + end + + test "nested ordered elements (3)" do + input = <<-EOS +List +==== + +. Foo +.. Boo +... Snoo +. Blech + EOS + output = render_string input + assert_xpath '//ol', output, 3 + assert_xpath '(//ol)[1]/li', output, 2 + assert_xpath '((//ol)[1]/li//ol)[1]/li', output, 1 + assert_xpath '(((//ol)[1]/li//ol)[1]/li//ol)[1]/li', output, 1 + end + + test "nested unordered inside ordered elements" do + input = <<-EOS +List +==== + +. Foo +* Boo +. Blech + EOS + output = render_string input + assert_xpath '//ol', output, 1 + assert_xpath '//ul', output, 1 + assert_xpath '(//ol)[1]/li', output, 2 + assert_xpath '((//ol)[1]/li//ul)[1]/li', output, 1 + end + + test "nested ordered inside unordered elements" do + input = <<-EOS +List +==== + +* Foo +. Boo +* Blech + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ol', output, 1 + assert_xpath '(//ul)[1]/li', output, 2 + assert_xpath '((//ul)[1]/li//ol)[1]/li', output, 1 + end + + test "lines with alternating markers of unordered and ordered list types separated by blank lines should be nested" do + input = <<-EOS +List +==== + +* Foo + +. Boo + + +* Blech + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ol', output, 1 + assert_xpath '(//ul)[1]/li', output, 2 + assert_xpath '((//ul)[1]/li//ol)[1]/li', output, 1 + end + + test 'list item with literal content should not consume nested list of different type' do + input = <<-EOS +List +==== + +- bullet + + literal + but not + hungry + +. numbered + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//li', output, 2 + assert_xpath '//ul//ol', output, 1 + assert_xpath '//ul/li/p', output, 1 + assert_xpath '//ul/li/p[text()="bullet"]', output, 1 + assert_xpath '//ul/li/p/following-sibling::*[@class="literalblock"]', output, 1 + assert_xpath %(//ul/li/p/following-sibling::*[@class="literalblock"]//pre[text()="literal\nbut not\nhungry"]), output, 1 + assert_xpath '//*[@class="literalblock"]/following-sibling::*[@class="olist arabic"]', output, 1 + assert_xpath '//*[@class="literalblock"]/following-sibling::*[@class="olist arabic"]//p[text()="numbered"]', output, 1 + end + + test 'nested list item does not eat the title of the following detached block' do + input = <<-EOS +List +==== + +- bullet + * nested bullet 1 + * nested bullet 2 + +.Title +.... +literal +.... + EOS + output = render_embedded_string input + assert_xpath '//*[@class="ulist"]/ul', output, 2 + assert_xpath '(//*[@class="ulist"])[1]/following-sibling::*[@class="literalblock"]', output, 1 + assert_xpath '(//*[@class="ulist"])[1]/following-sibling::*[@class="literalblock"]/*[@class="title"]', output, 1 + end + + test "lines with alternating markers of bulleted and labeled list types separated by blank lines should be nested" do + input = <<-EOS +List +==== + +* Foo + +term1:: def1 + +* Blech + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//dl', output, 1 + assert_xpath '//ul[1]/li', output, 2 + assert_xpath '//ul[1]/li//dl[1]/dt', output, 1 + assert_xpath '//ul[1]/li//dl[1]/dd', output, 1 + end + + test "nested ordered with attribute inside unordered elements" do + input = <<-EOS +Blah +==== + +* Foo +[start=2] +. Boo +* Blech + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ol', output, 1 + assert_xpath '(//ul)[1]/li', output, 2 + assert_xpath '((//ul)[1]/li//ol)[1][@start = 2]/li', output, 1 + end + end + + context "List continuations" do + test "adjacent list continuation line attaches following paragraph" do + input = <<-EOS +Lists +===== + +* Item one, paragraph one ++ +Item one, paragraph two ++ +* Item two + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ul/li', output, 2 + assert_xpath '//ul/li[1]/p', output, 1 + assert_xpath '//ul/li[1]//p', output, 2 + assert_xpath '//ul/li[1]/p[text() = "Item one, paragraph one"]', output, 1 + assert_xpath '//ul/li[1]/*[@class = "paragraph"]/p[text() = "Item one, paragraph two"]', output, 1 + end + + test "adjacent list continuation line attaches following block" do + input = <<-EOS +Lists +===== + +* Item one, paragraph one ++ +.... +Item one, literal block +.... ++ +* Item two + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ul/li', output, 2 + assert_xpath '//ul/li[1]/p', output, 1 + assert_xpath '(//ul/li[1]/p/following-sibling::*)[1][@class = "literalblock"]', output, 1 + end + + test "consecutive blocks in list continuation attach to list item" do + input = <<-EOS +Lists +===== + +* Item one, paragraph one ++ +.... +Item one, literal block +.... ++ +____ +Item one, quote block +____ ++ +* Item two + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ul/li', output, 2 + assert_xpath '//ul/li[1]/p', output, 1 + assert_xpath '(//ul/li[1]/p/following-sibling::*)[1][@class = "literalblock"]', output, 1 + assert_xpath '(//ul/li[1]/p/following-sibling::*)[2][@class = "quoteblock"]', output, 1 + end + + # NOTE this is not consistent w/ AsciiDoc output, but this is some screwy input anyway +=begin + test "consecutive list continuation lines are folded" do + input = <<-EOS +Lists +===== + +* Item one, paragraph one ++ ++ +Item one, paragraph two ++ ++ +* Item two ++ ++ + EOS + output = render_string input + assert_xpath '//ul', output, 1 + assert_xpath '//ul/li', output, 2 + assert_xpath '//ul/li[1]/p', output, 1 + assert_xpath '//ul/li[1]//p', output, 2 + assert_xpath '//ul/li[1]//p[text() = "Item one, paragraph one"]', output, 1 + assert_xpath '//ul/li[1]//p[text() = "Item one, paragraph two"]', output, 1 + end +=end + + end +end + +context "Ordered lists (:olist)" do + context "Simple lists" do + test "dot elements with no blank lines" do + input = <<-EOS +List +==== + +. Foo +. Boo +. Blech + EOS + output = render_string input + assert_xpath '//ol', output, 1 + assert_xpath '//ol/li', output, 3 + end + + test "dot elements separated by blank lines should merge lists" do + input = <<-EOS +List +==== + +. Foo + +. Boo + + +. Blech + EOS + output = render_string input + assert_xpath '//ol', output, 1 + assert_xpath '//ol/li', output, 3 + end + + test "dot elements separated by line comment offset by blank lines should not merge lists" do + input = <<-EOS +List +==== + +. Foo +. Boo + +// + +. Blech + EOS + output = render_string input + assert_xpath '//ol', output, 2 + assert_xpath '(//ol)[1]/li', output, 2 + assert_xpath '(//ol)[2]/li', output, 1 + end + + test "dot elements separated by a block title offset by a blank line should not merge lists" do + input = <<-EOS +List +==== + +. Foo +. Boo + +.Also +. Blech + EOS + output = render_string input + assert_xpath '//ol', output, 2 + assert_xpath '(//ol)[1]/li', output, 2 + assert_xpath '(//ol)[2]/li', output, 1 + assert_xpath '(//ol)[2]/preceding-sibling::*[@class = "title"][text() = "Also"]', output, 1 + end + end +end + +context "Labeled lists (:dlist)" do + context "Simple lists" do + test "single-line adjacent elements" do + input = <<-EOS +term1:: def1 +term2:: def2 + EOS + output = render_string input + assert_xpath '//dl', output, 1 + assert_xpath '//dl/dt', output, 2 + assert_xpath '//dl/dt/following-sibling::dd', output, 2 + assert_xpath '(//dl/dt)[1][normalize-space(text()) = "term1"]', output, 1 + assert_xpath '(//dl/dt)[1]/following-sibling::dd/p[text() = "def1"]', output, 1 + assert_xpath '(//dl/dt)[2][normalize-space(text()) = "term2"]', output, 1 + assert_xpath '(//dl/dt)[2]/following-sibling::dd/p[text() = "def2"]', output, 1 + end + + test "single-line indented adjacent elements" do + input = <<-EOS +term1:: def1 + term2:: def2 + EOS + output = render_string input + assert_xpath '//dl', output, 1 + assert_xpath '//dl/dt', output, 2 + assert_xpath '//dl/dt/following-sibling::dd', output, 2 + assert_xpath '(//dl/dt)[1][normalize-space(text()) = "term1"]', output, 1 + assert_xpath '(//dl/dt)[1]/following-sibling::dd/p[text() = "def1"]', output, 1 + assert_xpath '(//dl/dt)[2][normalize-space(text()) = "term2"]', output, 1 + assert_xpath '(//dl/dt)[2]/following-sibling::dd/p[text() = "def2"]', output, 1 + end + + test "single-line elements separated by blank line should create a single list" do + input = <<-EOS +term1:: def1 + +term2:: def2 + EOS + output = render_string input + assert_xpath '//dl', output, 1 + assert_xpath '//dl/dt', output, 2 + assert_xpath '//dl/dt/following-sibling::dd', output, 2 + end + + test "a line comment between elements should divide them into separate lists" do + input = <<-EOS +term1:: def1 + +// + +term2:: def2 + EOS + output = render_string input + assert_xpath '//dl', output, 2 + assert_xpath '//dl/dt', output, 2 + assert_xpath '(//dl)[1]/dt', output, 1 + assert_xpath '(//dl)[2]/dt', output, 1 + end + + test "a ruler between elements should divide them into separate lists" do + input = <<-EOS +term1:: def1 + +''' + +term2:: def2 + EOS + output = render_string input + assert_xpath '//dl', output, 2 + assert_xpath '//dl/dt', output, 2 + assert_xpath '//dl//hr', output, 0 + assert_xpath '(//dl)[1]/dt', output, 1 + assert_xpath '(//dl)[2]/dt', output, 1 + end + + test "a block title between elements should divide them into separate lists" do + input = <<-EOS +term1:: def1 + +.Some more +term2:: def2 + EOS + output = render_string input + assert_xpath '//dl', output, 2 + assert_xpath '//dl/dt', output, 2 + assert_xpath '(//dl)[1]/dt', output, 1 + assert_xpath '(//dl)[2]/dt', output, 1 + assert_xpath '(//dl)[2]/preceding-sibling::*[@class="title"][text() = "Some more"]', output, 1 + end + + test "multi-line elements with paragraph content" do + input = <<-EOS +term1:: +def1 +term2:: +def2 + EOS + output = render_string input + assert_xpath '//dl', output, 1 + assert_xpath '//dl/dt', output, 2 + assert_xpath '//dl/dt/following-sibling::dd', output, 2 + assert_xpath '(//dl/dt)[1][normalize-space(text()) = "term1"]', output, 1 + assert_xpath '(//dl/dt)[1]/following-sibling::dd/p[text() = "def1"]', output, 1 + assert_xpath '(//dl/dt)[2][normalize-space(text()) = "term2"]', output, 1 + assert_xpath '(//dl/dt)[2]/following-sibling::dd/p[text() = "def2"]', output, 1 + end + + test "multi-line elements with indented paragraph content" do + input = <<-EOS +term1:: + def1 +term2:: + def2 + EOS + output = render_string input + assert_xpath '//dl', output, 1 + assert_xpath '//dl/dt', output, 2 + assert_xpath '//dl/dt/following-sibling::dd', output, 2 + assert_xpath '(//dl/dt)[1][normalize-space(text()) = "term1"]', output, 1 + assert_xpath '(//dl/dt)[1]/following-sibling::dd/p[text() = "def1"]', output, 1 + assert_xpath '(//dl/dt)[2][normalize-space(text()) = "term2"]', output, 1 + assert_xpath '(//dl/dt)[2]/following-sibling::dd/p[text() = "def2"]', output, 1 + end + + test "multi-line element with multiple terms" do + input = <<-EOS +term1:: +term2:: +def2 + EOS + output = render_string input + assert_xpath '//dl', output, 1 + assert_xpath '//dl/dt', output, 2 + assert_xpath '//dl/dd', output, 1 + assert_xpath '(//dl/dt)[1]/following-sibling::dt', output, 1 + assert_xpath '(//dl/dt)[1][normalize-space(text()) = "term1"]', output, 1 + assert_xpath '(//dl/dt)[2]/following-sibling::dd', output, 1 + assert_xpath '(//dl/dt)[2]/following-sibling::dd/p[text() = "def2"]', output, 1 + end + + test "multi-line elements with blank line before paragraph content" do + input = <<-EOS +term1:: + +def1 +term2:: + +def2 + EOS + output = render_string input + assert_xpath '//dl', output, 1 + assert_xpath '//dl/dt', output, 2 + assert_xpath '//dl/dt/following-sibling::dd', output, 2 + assert_xpath '(//dl/dt)[1][normalize-space(text()) = "term1"]', output, 1 + assert_xpath '(//dl/dt)[1]/following-sibling::dd/p[text() = "def1"]', output, 1 + assert_xpath '(//dl/dt)[2][normalize-space(text()) = "term2"]', output, 1 + assert_xpath '(//dl/dt)[2]/following-sibling::dd/p[text() = "def2"]', output, 1 + end + + test "multi-line elements with paragraph and literal content" do + # blank line following literal paragraph is required or else it will gobble up the second term + input = <<-EOS +term1:: +def1 + + literal + +term2:: + def2 + EOS + output = render_string input + assert_xpath '//dl', output, 1 + assert_xpath '//dl/dt', output, 2 + assert_xpath '//dl/dt/following-sibling::dd', output, 2 + assert_xpath '//dl/dt/following-sibling::dd//pre', output, 1 + assert_xpath '(//dl/dt)[1][normalize-space(text()) = "term1"]', output, 1 + assert_xpath '(//dl/dt)[1]/following-sibling::dd/p[text() = "def1"]', output, 1 + assert_xpath '(//dl/dt)[2][normalize-space(text()) = "term2"]', output, 1 + assert_xpath '(//dl/dt)[2]/following-sibling::dd/p[text() = "def2"]', output, 1 + end + + test "mixed single and multi-line adjacent elements" do + input = <<-EOS +term1:: def1 +term2:: +def2 + EOS + output = render_string input + assert_xpath '//dl', output, 1 + assert_xpath '//dl/dt', output, 2 + assert_xpath '//dl/dt/following-sibling::dd', output, 2 + assert_xpath '(//dl/dt)[1][normalize-space(text()) = "term1"]', output, 1 + assert_xpath '(//dl/dt)[1]/following-sibling::dd/p[text() = "def1"]', output, 1 + assert_xpath '(//dl/dt)[2][normalize-space(text()) = "term2"]', output, 1 + assert_xpath '(//dl/dt)[2]/following-sibling::dd/p[text() = "def2"]', output, 1 + end + + test "element with anchor" do + input = <<-EOS +[[term1]]term1:: def1 +[[term2]]term2:: def2 + EOS + output = render_string input + assert_xpath '//dl', output, 1 + assert_xpath '//dl/dt', output, 2 + assert_xpath '(//dl/dt)[1]/a[@id = "term1"]', output, 1 + assert_xpath '(//dl/dt)[2]/a[@id = "term2"]', output, 1 + end + + test "missing space before term does not produce labeled list" do + input = <<-EOS +term1::def1 +term2::def2 + EOS + output = render_string input + assert_xpath '//dl', output, 0 + end + + test "literal block inside labeled list" do + input = <<-EOS +term:: ++ +.... +literal, line 1 + +literal, line 2 +.... +anotherterm:: def + EOS + output = render_string input + assert_xpath '//dl/dt', output, 2 + assert_xpath '//dl/dd', output, 2 + assert_xpath '//dl/dd//pre', output, 1 + assert_xpath '(//dl/dd)[1]/*[@class="literalblock"]//pre', output, 1 + assert_xpath '(//dl/dd)[2]/p[text() = "def"]', output, 1 + end + + test "literal block inside labeled list with trailing line continuation" do + input = <<-EOS +term:: ++ +.... +literal, line 1 + +literal, line 2 +.... ++ +anotherterm:: def + EOS + output = render_string input + assert_xpath '//dl/dt', output, 2 + assert_xpath '//dl/dd', output, 2 + assert_xpath '//dl/dd//pre', output, 1 + assert_xpath '(//dl/dd)[1]/*[@class="literalblock"]//pre', output, 1 + assert_xpath '(//dl/dd)[2]/p[text() = "def"]', output, 1 + end + + test "multiple listing blocks inside labeled list" do + input = <<-EOS +term:: ++ +---- +listing, line 1 + +listing, line 2 +---- ++ +---- +listing, line 1 + +listing, line 2 +---- +anotherterm:: def + EOS + output = render_string input + assert_xpath '//dl/dt', output, 2 + assert_xpath '//dl/dd', output, 2 + assert_xpath '//dl/dd//pre', output, 2 + assert_xpath '(//dl/dd)[1]/*[@class="listingblock"]//pre', output, 2 + assert_xpath '(//dl/dd)[2]/p[text() = "def"]', output, 1 + end + + test "open block inside labeled list" do + input = <<-EOS +term:: ++ +-- +Open block as definition of term. + +And some more detail... +-- +anotherterm:: def + EOS + output = render_string input + assert_xpath '//dl/dd//p', output, 3 + assert_xpath '(//dl/dd)[1]//*[@class="openblock"]//p', output, 2 + end + + test "paragraph attached by a list continuation in a labeled list" do + input = <<-EOS +term1:: def ++ +more detail ++ +term2:: def + EOS + output = render_string input + assert_xpath '(//dl/dd)[1]//p', output, 2 + assert_xpath '(//dl/dd)[1]/p/following-sibling::*[@class="paragraph"]/p[text() = "more detail"]', output, 1 + end + + test "paragraph attached by a list continuation to a multi-line element in a labeled list" do + input = <<-EOS +term1:: +def ++ +more detail ++ +term2:: def + EOS + output = render_string input + assert_xpath '(//dl/dd)[1]//p', output, 2 + assert_xpath '(//dl/dd)[1]/p/following-sibling::*[@class="paragraph"]/p[text() = "more detail"]', output, 1 + end + + test "verse paragraph inside a labeled list" do + input = <<-EOS +term1:: def ++ +[verse] +la la la + +term2:: def + EOS + output = render_string input + assert_xpath '//dl/dd//p', output, 2 + assert_xpath '(//dl/dd)[1]/*[@class="verseblock"]/pre[text() = "la la la"]', output, 1 + end + + test "list inside a labeled list" do + input = <<-EOS +term1:: +* level 1 +** level 2 +* level 1 +term2:: def + EOS + output = render_string input + assert_xpath '//dl/dd', output, 2 + assert_xpath '//dl/dd/p', output, 1 + assert_xpath '(//dl/dd)[1]//ul', output, 2 + assert_xpath '((//dl/dd)[1]//ul)[1]//ul', output, 1 + end + + test "list inside a labeled list offset by blank lines" do + input = <<-EOS +term1:: + +* level 1 +** level 2 +* level 1 + +term2:: def + EOS + output = render_string input + assert_xpath '//dl/dd', output, 2 + assert_xpath '//dl/dd/p', output, 1 + assert_xpath '(//dl/dd)[1]//ul', output, 2 + assert_xpath '((//dl/dd)[1]//ul)[1]//ul', output, 1 + end + + test "should only grab one line following last item if item has no inline definition" do + input = <<-EOS +term1:: + +def1 + +term2:: + +def2 + +A new paragraph + +Another new paragraph + EOS + output = render_string input + assert_xpath '//dl', output, 1 + assert_xpath '//dl/dd', output, 2 + assert_xpath '(//dl/dd)[1]/p[text() = "def1"]', output, 1 + assert_xpath '(//dl/dd)[2]/p[text() = "def2"]', output, 1 + assert_xpath '//*[@class="dlist"]/following-sibling::*[@class="paragraph"]', output, 2 + assert_xpath '(//*[@class="dlist"]/following-sibling::*[@class="paragraph"])[1]/p[text() = "A new paragraph"]', output, 1 + assert_xpath '(//*[@class="dlist"]/following-sibling::*[@class="paragraph"])[2]/p[text() = "Another new paragraph"]', output, 1 + end + + test "should only grab one literal line following last item if item has no inline definition" do + input = <<-EOS +term1:: + +def1 + +term2:: + + def2 + +A new paragraph + +Another new paragraph + EOS + output = render_string input + assert_xpath '//dl', output, 1 + assert_xpath '//dl/dd', output, 2 + assert_xpath '(//dl/dd)[1]/p[text() = "def1"]', output, 1 + assert_xpath '(//dl/dd)[2]/p[text() = "def2"]', output, 1 + assert_xpath '//*[@class="dlist"]/following-sibling::*[@class="paragraph"]', output, 2 + assert_xpath '(//*[@class="dlist"]/following-sibling::*[@class="paragraph"])[1]/p[text() = "A new paragraph"]', output, 1 + assert_xpath '(//*[@class="dlist"]/following-sibling::*[@class="paragraph"])[2]/p[text() = "Another new paragraph"]', output, 1 + end + + test "should append subsequent paragraph literals to list item as block content" do + input = <<-EOS +term1:: + +def1 + +term2:: + + def2 + + literal + +A new paragraph. + EOS + output = render_string input + assert_xpath '//dl', output, 1 + assert_xpath '//dl/dd', output, 2 + assert_xpath '(//dl/dd)[1]/p[text() = "def1"]', output, 1 + assert_xpath '(//dl/dd)[2]/p[text() = "def2"]', output, 1 + assert_xpath '(//dl/dd)[2]/p/following-sibling::*[@class="literalblock"]', output, 1 + assert_xpath '(//dl/dd)[2]/p/following-sibling::*[@class="literalblock"]//pre[text() = "literal"]', output, 1 + assert_xpath '//*[@class="dlist"]/following-sibling::*[@class="paragraph"]', output, 1 + assert_xpath '(//*[@class="dlist"]/following-sibling::*[@class="paragraph"])[1]/p[text() = "A new paragraph."]', output, 1 + end + end + + context "Nested lists" do + test "single-line adjacent nested elements" do + input = <<-EOS +term1:: def1 +label1::: detail1 +term2:: def2 + EOS + output = render_string input + assert_xpath '//dl', output, 2 + assert_xpath '//dl//dl', output, 1 + assert_xpath '(//dl)[1]/dt[1][normalize-space(text()) = "term1"]', output, 1 + assert_xpath '(//dl)[1]/dt[1]/following-sibling::dd/p[text() = "def1"]', output, 1 + assert_xpath '//dl//dl/dt[normalize-space(text()) = "label1"]', output, 1 + assert_xpath '//dl//dl/dt/following-sibling::dd/p[text() = "detail1"]', output, 1 + assert_xpath '(//dl)[1]/dt[2][normalize-space(text()) = "term2"]', output, 1 + assert_xpath '(//dl)[1]/dt[2]/following-sibling::dd/p[text() = "def2"]', output, 1 + end + + test "single-line adjacent maximum nested elements" do + input = <<-EOS +term1:: def1 +label1::: detail1 +name1:::: value1 +item1;; price1 +term2:: def2 + EOS + output = render_string input + assert_xpath '//dl', output, 4 + assert_xpath '//dl//dl//dl//dl', output, 1 + end + + test "single-line nested elements seperated by blank line at top level" do + input = <<-EOS +term1:: def1 + +label1::: detail1 + +term2:: def2 + EOS + output = render_string input + assert_xpath '//dl', output, 2 + assert_xpath '//dl//dl', output, 1 + assert_xpath '(//dl)[1]/dt[1][normalize-space(text()) = "term1"]', output, 1 + assert_xpath '(//dl)[1]/dt[1]/following-sibling::dd/p[text() = "def1"]', output, 1 + assert_xpath '//dl//dl/dt[normalize-space(text()) = "label1"]', output, 1 + assert_xpath '//dl//dl/dt/following-sibling::dd/p[text() = "detail1"]', output, 1 + assert_xpath '(//dl)[1]/dt[2][normalize-space(text()) = "term2"]', output, 1 + assert_xpath '(//dl)[1]/dt[2]/following-sibling::dd/p[text() = "def2"]', output, 1 + end + + test "single-line nested elements seperated by blank line at nested level" do + input = <<-EOS +term1:: def1 +label1::: detail1 + +label2::: detail2 +term2:: def2 + EOS + output = render_string input + assert_xpath '//dl', output, 2 + assert_xpath '//dl//dl', output, 1 + assert_xpath '(//dl)[1]/dt[1][normalize-space(text()) = "term1"]', output, 1 + assert_xpath '(//dl)[1]/dt[1]/following-sibling::dd/p[text() = "def1"]', output, 1 + assert_xpath '//dl//dl/dt[normalize-space(text()) = "label1"]', output, 1 + assert_xpath '//dl//dl/dt/following-sibling::dd/p[text() = "detail1"]', output, 1 + assert_xpath '(//dl)[1]/dt[2][normalize-space(text()) = "term2"]', output, 1 + assert_xpath '(//dl)[1]/dt[2]/following-sibling::dd/p[text() = "def2"]', output, 1 + end + + test "single-line adjacent nested elements with alternate delimiters" do + input = <<-EOS +term1:: def1 +label1;; detail1 +term2:: def2 + EOS + output = render_string input + assert_xpath '//dl', output, 2 + assert_xpath '//dl//dl', output, 1 + assert_xpath '(//dl)[1]/dt[1][normalize-space(text()) = "term1"]', output, 1 + assert_xpath '(//dl)[1]/dt[1]/following-sibling::dd/p[text() = "def1"]', output, 1 + assert_xpath '//dl//dl/dt[normalize-space(text()) = "label1"]', output, 1 + assert_xpath '//dl//dl/dt/following-sibling::dd/p[text() = "detail1"]', output, 1 + assert_xpath '(//dl)[1]/dt[2][normalize-space(text()) = "term2"]', output, 1 + assert_xpath '(//dl)[1]/dt[2]/following-sibling::dd/p[text() = "def2"]', output, 1 + end + + test "multi-line adjacent nested elements" do + input = <<-EOS +term1:: +def1 +label1::: +detail1 +term2:: +def2 + EOS + output = render_string input + assert_xpath '//dl', output, 2 + assert_xpath '//dl//dl', output, 1 + assert_xpath '(//dl)[1]/dt[1][normalize-space(text()) = "term1"]', output, 1 + assert_xpath '(//dl)[1]/dt[1]/following-sibling::dd/p[text() = "def1"]', output, 1 + assert_xpath '//dl//dl/dt[normalize-space(text()) = "label1"]', output, 1 + assert_xpath '//dl//dl/dt/following-sibling::dd/p[text() = "detail1"]', output, 1 + assert_xpath '(//dl)[1]/dt[2][normalize-space(text()) = "term2"]', output, 1 + assert_xpath '(//dl)[1]/dt[2]/following-sibling::dd/p[text() = "def2"]', output, 1 + end + + test "multi-line nested elements seperated by blank line at nested level repeated" do + input = <<-EOS +term1:: +def1 +label1::: + +detail1 +label2::: +detail2 + +term2:: def2 + EOS + output = render_string input + assert_xpath '//dl', output, 2 + assert_xpath '//dl//dl', output, 1 + assert_xpath '(//dl)[1]/dt[1][normalize-space(text()) = "term1"]', output, 1 + assert_xpath '(//dl)[1]/dt[1]/following-sibling::dd/p[text() = "def1"]', output, 1 + assert_xpath '(//dl//dl/dt)[1][normalize-space(text()) = "label1"]', output, 1 + assert_xpath '(//dl//dl/dt)[1]/following-sibling::dd/p[text() = "detail1"]', output, 1 + assert_xpath '(//dl//dl/dt)[2][normalize-space(text()) = "label2"]', output, 1 + assert_xpath '(//dl//dl/dt)[2]/following-sibling::dd/p[text() = "detail2"]', output, 1 + end + + test "multi-line element with indented nested element" do + input = <<-EOS +term1:: + def1 + label1;; + detail1 +term2:: + def2 + EOS + output = render_string input + assert_xpath '//dl', output, 2 + assert_xpath '//dl//dl', output, 1 + assert_xpath '(//dl)[1]/dt', output, 2 + assert_xpath '(//dl)[1]/dd', output, 2 + assert_xpath '((//dl)[1]/dt)[1][normalize-space(text()) = "term1"]', output, 1 + assert_xpath '((//dl)[1]/dt)[1]/following-sibling::dd/p[text() = "def1"]', output, 1 + assert_xpath '//dl//dl/dt', output, 1 + assert_xpath '//dl//dl/dt[normalize-space(text()) = "label1"]', output, 1 + assert_xpath '//dl//dl/dt/following-sibling::dd/p[text() = "detail1"]', output, 1 + assert_xpath '((//dl)[1]/dt)[2][normalize-space(text()) = "term2"]', output, 1 + assert_xpath '((//dl)[1]/dt)[2]/following-sibling::dd/p[text() = "def2"]', output, 1 + end + + test "mixed single and multi-line elements with indented nested elements" do + input = <<-EOS +term1:: def1 + label1::: + detail1 +term2:: def2 + EOS + output = render_string input + assert_xpath '//dl', output, 2 + assert_xpath '//dl//dl', output, 1 + assert_xpath '(//dl)[1]/dt[1][normalize-space(text()) = "term1"]', output, 1 + assert_xpath '(//dl)[1]/dt[1]/following-sibling::dd/p[text() = "def1"]', output, 1 + assert_xpath '//dl//dl/dt[normalize-space(text()) = "label1"]', output, 1 + assert_xpath '//dl//dl/dt/following-sibling::dd/p[text() = "detail1"]', output, 1 + assert_xpath '(//dl)[1]/dt[2][normalize-space(text()) = "term2"]', output, 1 + assert_xpath '(//dl)[1]/dt[2]/following-sibling::dd/p[text() = "def2"]', output, 1 + end + + test "multi-line elements with first paragraph folded to text with adjacent nested element" do + input = <<-EOS +term1:: def1 +continued +label1::: +detail1 + EOS + output = render_string input + assert_xpath '//dl', output, 2 + assert_xpath '//dl//dl', output, 1 + assert_xpath '(//dl)[1]/dt[1][normalize-space(text()) = "term1"]', output, 1 + assert_xpath '(//dl)[1]/dt[1]/following-sibling::dd/p[starts-with(text(), "def1")]', output, 1 + assert_xpath '(//dl)[1]/dt[1]/following-sibling::dd/p[contains(text(), "continued")]', output, 1 + assert_xpath '//dl//dl/dt[normalize-space(text()) = "label1"]', output, 1 + assert_xpath '//dl//dl/dt/following-sibling::dd/p[text() = "detail1"]', output, 1 + end + end +end + +context 'Labeled lists redux' do + + context 'Item without text inline' do + + test 'folds text from subsequent line' do + input = <<-EOS +== Lists + +term1:: +def1 + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p[text()="def1"]', output, 1 + end + + test 'folds text from first line after blank lines' do + input = <<-EOS +== Lists + +term1:: + + +def1 + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p[text()="def1"]', output, 1 + end + + test 'folds text from first line after blank line and immediately preceding next item' do + input = <<-EOS +== Lists + +term1:: + +def1 +term2:: def2 + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 2 + assert_xpath '(//*[@class="dlist"]//dd)[1]/p[text()="def1"]', output, 1 + end + + test 'folds text from first line after comment line' do + input = <<-EOS +== Lists + +term1:: +// comment +def1 + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p[text()="def1"]', output, 1 + end + + test 'folds text from line following comment line offset by blank line' do + input = <<-EOS +== Lists + +term1:: + +// comment +def1 + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p[text()="def1"]', output, 1 + end + + test 'folds text from subsequent indented line' do + input = <<-EOS +== Lists + +term1:: + def1 + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p[text()="def1"]', output, 1 + end + + test 'folds text from indented line after blank line' do + input = <<-EOS +== Lists + +term1:: + + def1 + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p[text()="def1"]', output, 1 + end + + test 'folds text that looks like ruler offset by blank line' do + input = <<-EOS +== Lists + +term1:: + +''' + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath %(//*[@class="dlist"]//dd/p/em[text()="'"]), output, 1 + end + + test 'folds text that looks like ruler offset by blank line and line comment' do + input = <<-EOS +== Lists + +term1:: + +// comment +''' + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath %(//*[@class="dlist"]//dd/p/em[text()="'"]), output, 1 + end + + test 'folds text that looks like ruler and the line following it offset by blank line' do + input = <<-EOS +== Lists + +term1:: + +''' +continued + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath %(//*[@class="dlist"]//dd/p/em[text()="'"]), output, 1 + assert_xpath %(//*[@class="dlist"]//dd/p[normalize-space(text())="continued"]), output, 1 + end + + test 'folds text that looks like title offset by blank line' do + input = <<-EOS +== Lists + +term1:: + +.def1 + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p[text()=".def1"]', output, 1 + end + + test 'folds text that looks like title offset by blank line and line comment' do + input = <<-EOS +== Lists + +term1:: + +// comment +.def1 + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p[text()=".def1"]', output, 1 + end + + test 'folds text that looks like admonition offset by blank line' do + input = <<-EOS +== Lists + +term1:: + +NOTE: def1 + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p[text()="NOTE: def1"]', output, 1 + end + + test 'folds text of first literal line offset by blank line appends subsequent literals offset by blank line as blocks' do + input = <<-EOS +== Lists + +term1:: + + def1 + + literal + + + literal + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p[text()="def1"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p/following-sibling::*[@class="literalblock"]', output, 2 + assert_xpath '//*[@class="dlist"]//dd/p/following-sibling::*[@class="literalblock"]//pre[text()="literal"]', output, 2 + end + + test 'folds text of subsequent line and appends following literal line offset by blank line as block if term has no inline definition' do + input = <<-EOS +== Lists + +term1:: +def1 + + literal + +term2:: def2 + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 2 + assert_xpath '(//*[@class="dlist"]//dd)[1]/p[text()="def1"]', output, 1 + assert_xpath '(//*[@class="dlist"]//dd)[1]/p/following-sibling::*[@class="literalblock"]', output, 1 + assert_xpath '(//*[@class="dlist"]//dd)[1]/p/following-sibling::*[@class="literalblock"]//pre[text()="literal"]', output, 1 + end + + test 'appends literal line attached by continuation as block if item has no inline definition' do + input = <<-EOS +== Lists + +term1:: ++ + literal + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p', output, 0 + assert_xpath '//*[@class="dlist"]//dd/*[@class="literalblock"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/*[@class="literalblock"]//pre[text()="literal"]', output, 1 + end + + test 'appends literal line attached by continuation as block if item has no inline definition followed by ruler' do + input = <<-EOS +== Lists + +term1:: ++ + literal + +''' + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p', output, 0 + assert_xpath '//*[@class="dlist"]//dd/*[@class="literalblock"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/*[@class="literalblock"]//pre[text()="literal"]', output, 1 + assert_xpath '//*[@class="dlist"]/following-sibling::hr', output, 1 + end + + test 'appends line attached by continuation as block if item has no inline definition followed by ruler' do + input = <<-EOS +== Lists + +term1:: ++ +para + +''' + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p', output, 0 + assert_xpath '//*[@class="dlist"]//dd/*[@class="paragraph"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/*[@class="paragraph"]/p[text()="para"]', output, 1 + assert_xpath '//*[@class="dlist"]/following-sibling::hr', output, 1 + end + + test 'appends line attached by continuation as block if item has no inline definition followed by block' do + input = <<-EOS +== Lists + +term1:: ++ +para + +.... +literal +.... + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p', output, 0 + assert_xpath '//*[@class="dlist"]//dd/*[@class="paragraph"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/*[@class="paragraph"]/p[text()="para"]', output, 1 + assert_xpath '//*[@class="dlist"]/following-sibling::*[@class="literalblock"]', output, 1 + assert_xpath '//*[@class="dlist"]/following-sibling::*[@class="literalblock"]//pre[text()="literal"]', output, 1 + end + + test 'appends block attached by continuation but not subsequent block not attached by continuation' do + input = <<-EOS +== Lists + +term1:: ++ +.... +literal +.... +.... +detached +.... + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p', output, 0 + assert_xpath '//*[@class="dlist"]//dd/*[@class="literalblock"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/*[@class="literalblock"]//pre[text()="literal"]', output, 1 + assert_xpath '//*[@class="dlist"]/following-sibling::*[@class="literalblock"]', output, 1 + assert_xpath '//*[@class="dlist"]/following-sibling::*[@class="literalblock"]//pre[text()="detached"]', output, 1 + end + + test 'appends list if item has no inline definition' do + input = <<-EOS +== Lists + +term1:: + +* one +* two +* three + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p', output, 0 + assert_xpath '//*[@class="dlist"]//dd//ul/li', output, 3 + end + + test 'appends list to first term when followed immediately by second term' do + input = <<-EOS +== Lists + +term1:: + +* one +* two +* three +term2:: def2 + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 2 + assert_xpath '(//*[@class="dlist"]//dd)[1]/p', output, 0 + assert_xpath '(//*[@class="dlist"]//dd)[1]//ul/li', output, 3 + assert_xpath '(//*[@class="dlist"]//dd)[2]/p[text()="def2"]', output, 1 + end + + test 'appends list and paragraph block when line following list attached by continuation' do + input = <<-EOS +== Lists + +term1:: + +* one +* two +* three + ++ +para + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p', output, 0 + assert_xpath '//*[@class="dlist"]//dd/*[@class="ulist"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/*[@class="ulist"]/ul/li', output, 3 + assert_xpath '//*[@class="dlist"]//dd/*[@class="ulist"]/following-sibling::*[@class="paragraph"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/*[@class="ulist"]/following-sibling::*[@class="paragraph"]/p[text()="para"]', output, 1 + end + + test 'first continued line associated with nested list item and second continued line associated with term' do + input = <<-EOS +== Lists + +term1:: +* one ++ +nested list para + ++ +term1 para + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p', output, 0 + assert_xpath '//*[@class="dlist"]//dd/*[@class="ulist"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/*[@class="ulist"]/ul/li', output, 1 + assert_xpath '//*[@class="dlist"]//dd/*[@class="ulist"]/ul/li/*[@class="paragraph"]/p[text()="nested list para"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/*[@class="ulist"]/following-sibling::*[@class="paragraph"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/*[@class="ulist"]/following-sibling::*[@class="paragraph"]/p[text()="term1 para"]', output, 1 + end + + test 'literal line attached by continuation swallows adjacent line that looks like term' do + input = <<-EOS +== Lists + +term1:: ++ + literal +notnestedterm::: ++ + literal +notnestedterm::: + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p', output, 0 + assert_xpath '//*[@class="dlist"]//dd/*[@class="literalblock"]', output, 2 + assert_xpath %(//*[@class="dlist"]//dd/*[@class="literalblock"]//pre[text()=" literal\nnotnestedterm:::"]), output, 2 + end + + test 'line attached by continuation is appended as paragraph if term has no inline definition' do + input = <<-EOS +== Lists + +term1:: ++ +para + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p', output, 0 + assert_xpath '//*[@class="dlist"]//dd/*[@class="paragraph"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/*[@class="paragraph"]/p[text()="para"]', output, 1 + end + + test 'appends line as paragraph if attached by continuation following blank line and line comment when term has no inline definition' do + input = <<-EOS +== Lists + +term1:: + +// comment ++ +para + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p', output, 0 + assert_xpath '//*[@class="dlist"]//dd/*[@class="paragraph"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/*[@class="paragraph"]/p[text()="para"]', output, 1 + end + + test 'line attached by continuation offset by blank line is appended as paragraph if term has no inline definition' do + input = <<-EOS +== Lists + +term1:: + ++ +para + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p', output, 0 + assert_xpath '//*[@class="dlist"]//dd/*[@class="paragraph"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/*[@class="paragraph"]/p[text()="para"]', output, 1 + end + + test 'delimited block breaks list even when term has no inline definition' do + input = <<-EOS +== Lists + +term1:: +==== +detached +==== + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 0 + assert_xpath '//*[@class="dlist"]/following-sibling::*[@class="exampleblock"]', output, 1 + assert_xpath '//*[@class="dlist"]/following-sibling::*[@class="exampleblock"]//p[text()="detached"]', output, 1 + end + + test 'attribute line breaks list even when term has no inline definition' do + input = <<-EOS +== Lists + +term1:: +[verse] +detached + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 0 + assert_xpath '//*[@class="dlist"]/following-sibling::*[@class="verseblock"]', output, 1 + assert_xpath '//*[@class="dlist"]/following-sibling::*[@class="verseblock"]/pre[text()="detached"]', output, 1 + end + + test 'id line breaks list even when term has no inline definition' do + input = <<-EOS +== Lists + +term1:: +[[id]] +detached + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 0 + assert_xpath '//*[@class="dlist"]/following-sibling::*[@class="paragraph"]', output, 1 + assert_xpath '//*[@class="dlist"]/following-sibling::*[@class="paragraph"]/p[text()="detached"]', output, 1 + end + end + + context 'Item with text inline' do + + test 'folds text from inline definition and subsequent line' do + input = <<-EOS +== Lists + +term1:: def1 +continued + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath %(//*[@class="dlist"]//dd/p[text()="def1\ncontinued"]), output, 1 + end + + test 'folds text from inline definition and subsequent lines' do + input = <<-EOS +== Lists + +term1:: def1 +continued +continued + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + # NOTE the extra endline is added as a result of whitespace in the ERB template + assert_xpath %(//*[@class="dlist"]//dd/p[text()="def1\ncontinued\n\ncontinued"]), output, 1 + end + + test 'folds text from inline definition and line following comment line' do + input = <<-EOS +== Lists + +term1:: def1 +// comment +continued + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath %(//*[@class="dlist"]//dd/p[text()="def1\ncontinued"]), output, 1 + end + + test 'folds text from inline definition and subsequent indented line' do + input = <<-EOS +== Lists + +term1:: def1 + continued + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath %(//*[@class="dlist"]//dd/p[text()="def1\ncontinued"]), output, 1 + end + + test 'appends literal line offset by blank line as block if item has inline definition' do + input = <<-EOS +== Lists + +term1:: def1 + + literal + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p[text()="def1"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p/following-sibling::*[@class="literalblock"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p/following-sibling::*[@class="literalblock"]//pre[text()="literal"]', output, 1 + end + + test 'appends literal line offset by blank line as block and appends line after continuation as block if item has inline definition' do + input = <<-EOS +== Lists + +term1:: def1 + + literal ++ +para + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p[text()="def1"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p/following-sibling::*[@class="literalblock"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p/following-sibling::*[@class="literalblock"]//pre[text()="literal"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/*[@class="literalblock"]/following-sibling::*[@class="paragraph"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/*[@class="literalblock"]/following-sibling::*[@class="paragraph"]/p[text()="para"]', output, 1 + end + + test 'appends line after continuation as block and literal line offset by blank line as block if item has inline definition' do + input = <<-EOS +== Lists + +term1:: def1 ++ +para + + literal + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p[text()="def1"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p/following-sibling::*[@class="paragraph"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p/following-sibling::*[@class="paragraph"]/p[text()="para"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/*[@class="paragraph"]/following-sibling::*[@class="literalblock"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/*[@class="paragraph"]/following-sibling::*[@class="literalblock"]//pre[text()="literal"]', output, 1 + end + + test 'appends list if item has inline definition' do + input = <<-EOS +== Lists + +term1:: def1 + +* one +* two +* three + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p[text()="def1"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p/following-sibling::*[@class="ulist"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p/following-sibling::*[@class="ulist"]/ul/li', output, 3 + end + + test 'appends literal line attached by continuation as block if item has inline definition followed by ruler' do + input = <<-EOS +== Lists + +term1:: def1 ++ + literal + +''' + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p[text()="def1"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p/following-sibling::*[@class="literalblock"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p/following-sibling::*[@class="literalblock"]//pre[text()="literal"]', output, 1 + assert_xpath '//*[@class="dlist"]/following-sibling::hr', output, 1 + end + + test 'line offset by blank line breaks list if term has inline definition' do + input = <<-EOS +== Lists + +term1:: def1 + +detached + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p[text()="def1"]', output, 1 + assert_xpath '//*[@class="dlist"]/following-sibling::*[@class="paragraph"]', output, 1 + assert_xpath '//*[@class="dlist"]/following-sibling::*[@class="paragraph"]/p[text()="detached"]', output, 1 + end + + test 'nested term with definition does not consume following heading' do + input = <<-EOS +== Lists + +term:: + def + nestedterm;; + nesteddef + +Detached +~~~~~~~~ + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 2 + assert_xpath '//*[@class="dlist"]//dd', output, 2 + assert_xpath '//*[@class="dlist"]/dl//dl', output, 1 + assert_xpath '//*[@class="dlist"]/dl//dl/dt', output, 1 + assert_xpath '((//*[@class="dlist"])[1]//dd)[1]/p[text()="def"]', output, 1 + assert_xpath '((//*[@class="dlist"])[1]//dd)[1]/p/following-sibling::*[@class="dlist"]', output, 1 + assert_xpath '((//*[@class="dlist"])[1]//dd)[1]/p/following-sibling::*[@class="dlist"]//dd/p[text()="nesteddef"]', output, 1 + assert_xpath '//*[@class="dlist"]/following-sibling::*[@class="sect2"]', output, 1 + assert_xpath '//*[@class="dlist"]/following-sibling::*[@class="sect2"]/h3[text()="Detached"]', output, 1 + end + + test 'line attached by continuation is appended as paragraph if term has inline definition followed by detached paragraph' do + input = <<-EOS +== Lists + +term1:: def1 ++ +para + +detached + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p[text()="def1"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p/following-sibling::*[@class="paragraph"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p/following-sibling::*[@class="paragraph"]/p[text()="para"]', output, 1 + assert_xpath '//*[@class="dlist"]/following-sibling::*[@class="paragraph"]', output, 1 + assert_xpath '//*[@class="dlist"]/following-sibling::*[@class="paragraph"]/p[text()="detached"]', output, 1 + end + + test 'line attached by continuation is appended as paragraph if term has inline definition followed by detached block' do + input = <<-EOS +== Lists + +term1:: def1 ++ +para + +**** +detached +**** + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p[text()="def1"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p/following-sibling::*[@class="paragraph"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p/following-sibling::*[@class="paragraph"]/p[text()="para"]', output, 1 + assert_xpath '//*[@class="dlist"]/following-sibling::*[@class="sidebarblock"]', output, 1 + assert_xpath '//*[@class="dlist"]/following-sibling::*[@class="sidebarblock"]//p[text()="detached"]', output, 1 + end + + test 'line attached by continuation offset by line comment is appended as paragraph if term has inline definition' do + input = <<-EOS +== Lists + +term1:: def1 +// comment ++ +para + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p[text()="def1"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p/following-sibling::*[@class="paragraph"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p/following-sibling::*[@class="paragraph"]/p[text()="para"]', output, 1 + end + + test 'line attached by continuation offset by blank line is appended as paragraph if term has inline definition' do + input = <<-EOS +== Lists + +term1:: def1 + ++ +para + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 1 + assert_xpath '//*[@class="dlist"]//dd', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p[text()="def1"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p/following-sibling::*[@class="paragraph"]', output, 1 + assert_xpath '//*[@class="dlist"]//dd/p/following-sibling::*[@class="paragraph"]/p[text()="para"]', output, 1 + end + + test 'line comment offset by blank line divides lists because item has text' do + input = <<-EOS +== Lists + +term1:: def1 + +// + +term2:: def2 + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 2 + end + + test 'ruler offset by blank line divides lists because item has text' do + input = <<-EOS +== Lists + +term1:: def1 + +''' + +term2:: def2 + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 2 + end + + test 'block title offset by blank line divides lists and becomes title of second list because item has text' do + input = <<-EOS +== Lists + +term1:: def1 + +.title + +term2:: def2 + EOS + + output = render_embedded_string input + assert_xpath '//*[@class="dlist"]/dl', output, 2 + assert_xpath '(//*[@class="dlist"])[2]/*[@class="title"][text()="title"]', output, 1 + end + end +end + +context 'Callout lists' do + test 'listing block with sequential callouts followed by adjacent callout list' do + input = <<-EOS +[source] +---- +require 'asciidoctor' # <1> +doc = Asciidoctor::Document.new('Hello, World!') # <2> +puts doc.render # <3> +---- +<1> Describe the first line +<2> Describe the second line +<3> Describe the third line + EOS + output = render_string input, :attributes => {'backend' => 'docbook45'} + assert_xpath '//programlisting', output, 1 + assert_xpath '//programlisting//co', output, 3 + assert_xpath '(//programlisting//co)[1][@id = "CO1-1"]', output, 1 + assert_xpath '(//programlisting//co)[2][@id = "CO1-2"]', output, 1 + assert_xpath '(//programlisting//co)[3][@id = "CO1-3"]', output, 1 + assert_xpath '//programlisting/following-sibling::calloutlist/callout', output, 3 + assert_xpath '(//programlisting/following-sibling::calloutlist/callout)[1][@arearefs = "CO1-1"]', output, 1 + assert_xpath '(//programlisting/following-sibling::calloutlist/callout)[2][@arearefs = "CO1-2"]', output, 1 + assert_xpath '(//programlisting/following-sibling::calloutlist/callout)[3][@arearefs = "CO1-3"]', output, 1 + end + + test 'listing block with sequential callouts followed by non-adjacent callout list' do + input = <<-EOS +[source] +---- +require 'asciidoctor' # <1> +doc = Asciidoctor::Document.new('Hello, World!') # <2> +puts doc.render # <3> +---- + +Paragraph. + +<1> Describe the first line +<2> Describe the second line +<3> Describe the third line + EOS + output = render_string input, :attributes => {'backend' => 'docbook45'} + assert_xpath '//programlisting', output, 1 + assert_xpath '//programlisting//co', output, 3 + assert_xpath '(//programlisting//co)[1][@id = "CO1-1"]', output, 1 + assert_xpath '(//programlisting//co)[2][@id = "CO1-2"]', output, 1 + assert_xpath '(//programlisting//co)[3][@id = "CO1-3"]', output, 1 + assert_xpath '//programlisting/following-sibling::*[1][self::simpara]', output, 1 + assert_xpath '//programlisting/following-sibling::calloutlist/callout', output, 3 + assert_xpath '(//programlisting/following-sibling::calloutlist/callout)[1][@arearefs = "CO1-1"]', output, 1 + assert_xpath '(//programlisting/following-sibling::calloutlist/callout)[2][@arearefs = "CO1-2"]', output, 1 + assert_xpath '(//programlisting/following-sibling::calloutlist/callout)[3][@arearefs = "CO1-3"]', output, 1 + end + + test 'listing block with a callout that refers to two different lines' do + input = <<-EOS +[source] +---- +require 'asciidoctor' # <1> +doc = Asciidoctor::Document.new('Hello, World!') # <2> +puts doc.render # <2> +---- +<1> Import the library +<2> Where the magic happens + EOS + output = render_string input, :attributes => {'backend' => 'docbook45'} + assert_xpath '//programlisting', output, 1 + assert_xpath '//programlisting//co', output, 3 + assert_xpath '(//programlisting//co)[1][@id = "CO1-1"]', output, 1 + assert_xpath '(//programlisting//co)[2][@id = "CO1-2"]', output, 1 + assert_xpath '(//programlisting//co)[3][@id = "CO1-3"]', output, 1 + assert_xpath '//programlisting/following-sibling::calloutlist/callout', output, 2 + assert_xpath '(//programlisting/following-sibling::calloutlist/callout)[1][@arearefs = "CO1-1"]', output, 1 + assert_xpath '(//programlisting/following-sibling::calloutlist/callout)[2][@arearefs = "CO1-2 CO1-3"]', output, 1 + end + + test 'listing block with non-sequential callouts followed by adjacent callout list' do + input = <<-EOS +[source] +---- +require 'asciidoctor' # <2> +doc = Asciidoctor::Document.new('Hello, World!') # <3> +puts doc.render # <1> +---- +<1> Describe the first line +<2> Describe the second line +<3> Describe the third line + EOS + output = render_string input, :attributes => {'backend' => 'docbook45'} + assert_xpath '//programlisting', output, 1 + assert_xpath '//programlisting//co', output, 3 + assert_xpath '(//programlisting//co)[1][@id = "CO1-1"]', output, 1 + assert_xpath '(//programlisting//co)[2][@id = "CO1-2"]', output, 1 + assert_xpath '(//programlisting//co)[3][@id = "CO1-3"]', output, 1 + assert_xpath '//programlisting/following-sibling::calloutlist/callout', output, 3 + assert_xpath '(//programlisting/following-sibling::calloutlist/callout)[1][@arearefs = "CO1-3"]', output, 1 + assert_xpath '(//programlisting/following-sibling::calloutlist/callout)[2][@arearefs = "CO1-1"]', output, 1 + assert_xpath '(//programlisting/following-sibling::calloutlist/callout)[3][@arearefs = "CO1-2"]', output, 1 + end + + test 'two listing blocks can share the same callout list' do + input = <<-EOS +.Import library +[source] +---- +require 'asciidoctor' # <1> +---- + +.Use library +[source] +---- +doc = Asciidoctor::Document.new('Hello, World!') # <2> +puts doc.render # <3> +---- + +<1> Describe the first line +<2> Describe the second line +<3> Describe the third line + EOS + output = render_string input, :attributes => {'backend' => 'docbook45'} + assert_xpath '//programlisting', output, 2 + assert_xpath '(//programlisting)[1]//co', output, 1 + assert_xpath '(//programlisting)[1]//co[@id = "CO1-1"]', output, 1 + assert_xpath '(//programlisting)[2]//co', output, 2 + assert_xpath '((//programlisting)[2]//co)[1][@id = "CO1-2"]', output, 1 + assert_xpath '((//programlisting)[2]//co)[2][@id = "CO1-3"]', output, 1 + assert_xpath '(//calloutlist/callout)[1][@arearefs = "CO1-1"]', output, 1 + assert_xpath '(//calloutlist/callout)[2][@arearefs = "CO1-2"]', output, 1 + assert_xpath '(//calloutlist/callout)[3][@arearefs = "CO1-3"]', output, 1 + end + + test 'two listing blocks each followed by an adjacent callout list' do + input = <<-EOS +.Import library +[source] +---- +require 'asciidoctor' # <1> +---- +<1> Describe the first line + +.Use library +[source] +---- +doc = Asciidoctor::Document.new('Hello, World!') # <1> +puts doc.render # <2> +---- +<1> Describe the second line +<2> Describe the third line + EOS + output = render_string input, :attributes => {'backend' => 'docbook45'} + assert_xpath '//programlisting', output, 2 + assert_xpath '(//programlisting)[1]//co', output, 1 + assert_xpath '(//programlisting)[1]//co[@id = "CO1-1"]', output, 1 + assert_xpath '(//programlisting)[2]//co', output, 2 + assert_xpath '((//programlisting)[2]//co)[1][@id = "CO2-1"]', output, 1 + assert_xpath '((//programlisting)[2]//co)[2][@id = "CO2-2"]', output, 1 + assert_xpath '//calloutlist', output, 2 + assert_xpath '(//calloutlist)[1]/callout', output, 1 + assert_xpath '((//calloutlist)[1]/callout)[1][@arearefs = "CO1-1"]', output, 1 + assert_xpath '(//calloutlist)[2]/callout', output, 2 + assert_xpath '((//calloutlist)[2]/callout)[1][@arearefs = "CO2-1"]', output, 1 + assert_xpath '((//calloutlist)[2]/callout)[2][@arearefs = "CO2-2"]', output, 1 + end + + test 'callout list with block content' do + input = <<-EOS +[source] +---- +require 'asciidoctor' # <1> +doc = Asciidoctor::Document.new('Hello, World!') # <2> +puts doc.render # <3> +---- +<1> Imports the library +as a RubyGem +<2> Creates a new document +* Scans the lines for known blocks +* Converts the lines into blocks +<3> Renders the document ++ +You can write this to file rather than printing to stdout. + EOS + output = render_string input, :attributes => {'backend' => 'docbook45'} + assert_xpath '//calloutlist', output, 1 + assert_xpath '//calloutlist/callout', output, 3 + assert_xpath '(//calloutlist/callout)[1]/*', output, 1 + assert_xpath '(//calloutlist/callout)[2]/para', output, 1 + assert_xpath '(//calloutlist/callout)[2]/itemizedlist', output, 1 + assert_xpath '(//calloutlist/callout)[3]/para', output, 1 + assert_xpath '(//calloutlist/callout)[3]/simpara', output, 1 + end + + test 'escaped callout should not be interpreted as a callout' do + input = <<-EOS +[source] +---- +require 'asciidoctor' # \\<1> +---- + EOS + output = render_string input, :attributes => {'backend' => 'docbook45'} + assert_xpath '//co', output, 0 + end + + test 'literal block with callouts' do + input = <<-EOS +.... +Roses are red <1> +Violets are blue <2> +.... + + +<1> And so is Ruby +<2> But violet is more like purple + EOS + output = render_string input, :attributes => {'backend' => 'docbook45'} + assert_xpath '//literallayout', output, 1 + assert_xpath '//literallayout//co', output, 2 + assert_xpath '(//literallayout//co)[1][@id = "CO1-1"]', output, 1 + assert_xpath '(//literallayout//co)[2][@id = "CO1-2"]', output, 1 + assert_xpath '//literallayout/following-sibling::*[1][self::calloutlist]/callout', output, 2 + assert_xpath '(//literallayout/following-sibling::*[1][self::calloutlist]/callout)[1][@arearefs = "CO1-1"]', output, 1 + assert_xpath '(//literallayout/following-sibling::*[1][self::calloutlist]/callout)[2][@arearefs = "CO1-2"]', output, 1 + end +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/test/paragraphs_test.rb b/src/main/resources/gems/asciidoctor-0.0.9/test/paragraphs_test.rb new file mode 100644 index 00000000..2a3669a0 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/test/paragraphs_test.rb @@ -0,0 +1,144 @@ +require 'test_helper' + +context "Paragraphs" do + context 'Normal' do + test "rendered correctly" do + assert_xpath "//p", render_string("Plain text for the win.\n\nYes, plainly."), 2 + end + + test "with title" do + rendered = render_string(".Titled\nParagraph.\n\nWinning") + + assert_xpath "//div[@class='title']", rendered + assert_xpath "//p", rendered, 2 + end + + test "no duplicate block before next section" do + rendered = render_string("Title\n=====\n\nPreamble.\n\n== First Section\n\nParagraph 1\n\nParagraph 2\n\n\n== Second Section\n\nLast words") + assert_xpath '//p[text()="Paragraph 2"]', rendered, 1 + end + end + + context "code" do + test "single-line literal paragraphs" do + assert_xpath "//pre", render_string(" LITERALS\n\n ARE LITERALLY\n\n AWESOMMMME.") + end + + test "multi-line literal paragraph" do + input = <<-EOS +Install instructions: + + yum install ruby rubygems + gem install asciidoctor + +You're good to go! + EOS + output = render_string(input) + assert_xpath "//pre", output, 1 + assert_match(/^gem install asciidoctor/, output, "Indentation should be trimmed from literal block") + end + + test "listing paragraph" do + assert_xpath "//pre[@class='highlight']/code", render_string("[source]\n----\nblah blah blah\n----") + end + + test "source code paragraph" do + assert_xpath "//pre[@class='highlight']/code[@class='perl']", render_string("[source, perl]\ndie 'zomg perl sucks';") + end + end + + context "quote" do + test "quote block" do + output = render_string("____\nFamous quote.\n____") + assert_xpath '//*[@class = "quoteblock"]', output, 1 + assert_xpath '//*[@class = "quoteblock"]//p[text() = "Famous quote."]', output, 1 + end + + test "quote block with attribution" do + output = render_string("[quote, A famous person, A famous book (1999)]\n____\nFamous quote.\n____") + assert_xpath '//*[@class = "quoteblock"]', output, 1 + assert_xpath '//*[@class = "quoteblock"]/*[@class = "attribution"]', output, 1 + assert_xpath '//*[@class = "quoteblock"]/*[@class = "attribution"]/em[text() = "A famous book (1999)"]', output, 1 + # TODO I can't seem to match the attribution (author) w/ xpath + end + + test "quote block with section body" do + output = render_string("____\nFamous quote.\n\nNOTE: That was inspiring.\n____") + assert_xpath '//*[@class = "quoteblock"]', output, 1 + assert_xpath '//*[@class = "quoteblock"]//*[@class = "admonitionblock"]', output, 1 + end + + test "single-line quote paragraph" do + output = render_string("[quote]\nFamous quote.") + assert_xpath '//*[@class = "quoteblock"]', output, 1 + assert_xpath '//*[@class = "quoteblock"]//p', output, 0 + assert_xpath '//*[@class = "quoteblock"]//*[contains(text(), "Famous quote.")]', output, 1 + end + + test "verse paragraph" do + output = render_string("[verse]\nFamous verse.") + assert_xpath '//*[@class = "verseblock"]', output, 1 + assert_xpath '//*[@class = "verseblock"]/pre', output, 1 + assert_xpath '//*[@class = "verseblock"]//p', output, 0 + assert_xpath '//*[@class = "verseblock"]/pre[normalize-space(text()) = "Famous verse."]', output, 1 + end + + test "single-line verse block" do + output = render_string("[verse]\n____\nFamous verse.\n____") + assert_xpath '//*[@class = "verseblock"]', output, 1 + assert_xpath '//*[@class = "verseblock"]/pre', output, 1 + assert_xpath '//*[@class = "verseblock"]//p', output, 0 + assert_xpath '//*[@class = "verseblock"]/pre[normalize-space(text()) = "Famous verse."]', output, 1 + end + + test "multi-line verse block" do + output = render_string("[verse]\n____\nFamous verse.\n\nStanza two.\n____") + assert_xpath '//*[@class = "verseblock"]', output, 1 + assert_xpath '//*[@class = "verseblock"]/pre', output, 1 + assert_xpath '//*[@class = "verseblock"]//p', output, 0 + assert_xpath '//*[@class = "verseblock"]/pre[contains(text(), "Famous verse.")]', output, 1 + assert_xpath '//*[@class = "verseblock"]/pre[contains(text(), "Stanza two.")]', output, 1 + end + + test "verse block does not contain block elements" do + output = render_string("[verse]\n____\nFamous verse.\n\n....\nnot a literal\n....\n____") + assert_xpath '//*[@class = "verseblock"]', output, 1 + assert_xpath '//*[@class = "verseblock"]/pre', output, 1 + assert_xpath '//*[@class = "verseblock"]//p', output, 0 + assert_xpath '//*[@class = "verseblock"]//*[@class = "literalblock"]', output, 0 + end + end + + context "special" do + test "note multiline syntax" do + Asciidoctor::ADMONITION_STYLES.each do |style| + assert_xpath "//div[@class='admonitionblock']", render_string("[#{style}]\nThis is a winner.") + end + end + + test "note block syntax" do + Asciidoctor::ADMONITION_STYLES.each do |style| + assert_xpath "//div[@class='admonitionblock']", render_string("[#{style}]\n====\nThis is a winner.\n====") + end + end + + test "note inline syntax" do + Asciidoctor::ADMONITION_STYLES.each do |style| + assert_xpath "//div[@class='admonitionblock']", render_string("#{style}: This is important, fool!") + end + end + + test "sidebar block" do + input = <<-EOS +== Section + +.Sidebar +**** +Content goes here +**** + EOS + result = render_string(input) + assert_xpath "//*[@class='sidebarblock']//p", result, 1 + end + end +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/test/preamble_test.rb b/src/main/resources/gems/asciidoctor-0.0.9/test/preamble_test.rb new file mode 100644 index 00000000..45d43032 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/test/preamble_test.rb @@ -0,0 +1,112 @@ +require 'test_helper' + +context 'Preamble' do + + test 'title and single paragraph preamble before section' do + input = <<-EOS +Title +===== + +Preamble paragraph 1. + +== First Section + +Section paragraph 1. + EOS + result = render_string(input) + assert_xpath '//p', result, 2 + assert_xpath '//*[@id="preamble"]', result, 1 + assert_xpath '//*[@id="preamble"]//p', result, 1 + assert_xpath '//*[@id="preamble"]/following-sibling::*//h2[@id="_first_section"]', result, 1 + assert_xpath '//*[@id="preamble"]/following-sibling::*//p', result, 1 + end + + test 'title and multi-paragraph preamble before section' do + input = <<-EOS +Title +===== + +Preamble paragraph 1. + +Preamble paragraph 2. + +== First Section + +Section paragraph 1. + EOS + result = render_string(input) + assert_xpath '//p', result, 3 + assert_xpath '//*[@id="preamble"]', result, 1 + assert_xpath '//*[@id="preamble"]//p', result, 2 + assert_xpath '//*[@id="preamble"]/following-sibling::*//h2[@id="_first_section"]', result, 1 + assert_xpath '//*[@id="preamble"]/following-sibling::*//p', result, 1 + end + + test 'title and preamble only' do + input = <<-EOS +Title +===== + +Preamble paragraph 1. + EOS + result = render_string(input) + assert_xpath '//p', result, 1 + assert_xpath '//*[@id="preamble"]', result, 1 + assert_xpath '//*[@id="preamble"]//p', result, 1 + assert_xpath '//*[@id="preamble"]/following-sibling::*', result, 0 + end + + test 'title and section without preamble' do + input = <<-EOS +Title +===== + +== First Section + +Section paragraph 1. + EOS + result = render_string(input) + assert_xpath '//p', result, 1 + assert_xpath '//*[@id="preamble"]', result, 0 + assert_xpath '//h2[@id="_first_section"]', result, 1 + end + + test 'no title with preamble and section' do + input = <<-EOS +Preamble paragraph 1. + +== First Section + +Section paragraph 1. + EOS + result = render_string(input) + assert_xpath '//p', result, 2 + assert_xpath '//*[@id="preamble"]', result, 0 + assert_xpath '//h2[@id="_first_section"]/preceding::p', result, 1 + end + + test 'preamble in book doctype' do + input = <<-EOS +Book +==== +:doctype: book + +Back then... + += Chapter One + +It was a dark and stormy night... + += Chapter Two + +They couldn't believe their eyes when... + EOS + + d = document_from_string(input) + assert_equal 'book', d.doctype + output = d.render + assert_xpath '//h1', output, 3 + assert_xpath %{//*[@id="preamble"]//p[text() = "Back then#{[8230].pack('U*')}"]}, output, 1 + end + +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/test/reader_test.rb b/src/main/resources/gems/asciidoctor-0.0.9/test/reader_test.rb new file mode 100644 index 00000000..49eacbf0 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/test/reader_test.rb @@ -0,0 +1,292 @@ +require 'test_helper' + +class ReaderTest < Test::Unit::TestCase + # setup for test + def setup + @src_data = File.readlines(sample_doc_path(:asciidoc_index)) + @reader = Asciidoctor::Reader.new @src_data + end + + context "has_lines?" do + test "returns false for empty document" do + assert !Asciidoctor::Reader.new.has_lines? + end + + test "returns true with lines remaining" do + assert @reader.has_lines?, "Yo, didn't work" + end + end + + context "with source data loaded" do + test "get_line returns next line" do + assert_equal @src_data[0], @reader.get_line + end + + test "get_line consumes the line it returns" do + reader = Asciidoctor::Reader.new(["foo", "bar"]) + _ = reader.get_line + second = reader.get_line + assert_equal "bar", second + end + + test "peek_line does not consume the line it returns" do + reader = Asciidoctor::Reader.new(["foo", "bar"]) + _ = reader.peek_line + second = reader.peek_line + assert_equal "foo", second + end + + test "unshift puts line onto Reader instance for the next get_line" do + reader = Asciidoctor::Reader.new(["foo"]) + reader.unshift("bar") + assert_equal "bar", reader.get_line + assert_equal "foo", reader.get_line + end + end + + context "Grab lines" do + test "Grab until end" do + input = <<-EOS +This is one paragraph. + +This is another paragraph. + EOS + + lines = input.lines.entries + reader = Asciidoctor::Reader.new(lines) + result = reader.grab_lines_until + assert_equal 3, result.size + assert_equal lines, result + assert !reader.has_lines? + assert reader.empty? + end + + test "Grab until blank line" do + input = <<-EOS +This is one paragraph. + +This is another paragraph. + EOS + + lines = input.lines.entries + reader = Asciidoctor::Reader.new(lines) + result = reader.grab_lines_until :break_on_blank_lines => true + assert_equal 1, result.size + assert_equal lines.first, result.first + assert_equal lines.last, reader.peek_line + end + + test "Grab until blank line preserving last line" do + input = <<-EOS +This is one paragraph. + +This is another paragraph. + EOS + + lines = input.lines.entries + reader = Asciidoctor::Reader.new(lines) + result = reader.grab_lines_until :break_on_blank_lines => true, :preserve_last_line => true + assert_equal 1, result.size + assert_equal lines.first, result.first + assert_equal "\n", reader.peek_line + end + + test "Grab until condition" do + input = <<-EOS +-- +This is one paragraph inside the block. + +This is another paragraph inside the block. +-- + +This is a paragraph outside the block. + EOS + + lines = input.lines.entries + reader = Asciidoctor::Reader.new(lines) + reader.get_line + result = reader.grab_lines_until {|line| line.chomp == '--' } + assert_equal 3, result.size + assert_equal lines[1, 3], result + assert_equal "\n", reader.peek_line + end + + test "Grab until condition with last line" do + input = <<-EOS +-- +This is one paragraph inside the block. + +This is another paragraph inside the block. +-- + +This is a paragraph outside the block. + EOS + + lines = input.lines.entries + reader = Asciidoctor::Reader.new(lines) + reader.get_line + result = reader.grab_lines_until(:grab_last_line => true) {|line| line.chomp == '--' } + assert_equal 4, result.size + assert_equal lines[1, 4], result + assert_equal "\n", reader.peek_line + end + + test "Grab until condition with last line and preserving last line" do + input = <<-EOS +-- +This is one paragraph inside the block. + +This is another paragraph inside the block. +-- + +This is a paragraph outside the block. + EOS + + lines = input.lines.entries + reader = Asciidoctor::Reader.new(lines) + reader.get_line + result = reader.grab_lines_until(:grab_last_line => true, :preserve_last_line => true) {|line| line.chomp == '--' } + assert_equal 4, result.size + assert_equal lines[1, 4], result + assert_equal "--\n", reader.peek_line + end + end + + context 'Include Macro' do + test 'include macro is disabled by default' do + input = <<-EOS +include::include-file.asciidoc[] + EOS + para = block_from_string input, :attributes => { 'include-depth' => 0 } + assert_equal 1, para.buffer.size + assert_equal 'include::include-file.asciidoc[]', para.buffer.join + end + + test 'include macro is enabled when safe mode is less than SECURE' do + input = <<-EOS +include::fixtures/include-file.asciidoc[] + EOS + + doc = document_from_string input, :safe => Asciidoctor::SafeMode::SAFE, :attributes => {'docdir' => File.dirname(__FILE__)} + output = doc.render + assert_match(/included content/, output) + end + + test "block is called to handle an include macro" do + input = <<-EOS +first line + +include::include-file.asciidoc[] + +last line + EOS + doc = Asciidoctor::Document.new [], :safe => Asciidoctor::SafeMode::SAFE + Asciidoctor::Reader.new(input.lines.entries, doc) {|inc| + ":file: #{inc}\n\nmiddle line".lines.entries + } + assert_equal 'include-file.asciidoc', doc.attributes['file'] + end + + test 'escaped include macro is left unprocessed' do + input = <<-EOS +\\include::include-file.asciidoc[] + EOS + para = block_from_string input + assert_equal 1, para.buffer.size + assert_equal 'include::include-file.asciidoc[]', para.buffer.join + end + + test 'include macro not at start of line is ignored' do + input = <<-EOS + include::include-file.asciidoc[] + EOS + para = block_from_string input + assert_equal 1, para.buffer.size + # NOTE the space gets stripped because the line is treated as an inline literal + assert_equal :literal, para.context + assert_equal 'include::include-file.asciidoc[]', para.buffer.join + end + + test 'include macro is disabled when include-depth attribute is 0' do + input = <<-EOS +include::include-file.asciidoc[] + EOS + para = block_from_string input, :safe => Asciidoctor::SafeMode::SAFE, :attributes => { 'include-depth' => 0 } + assert_equal 1, para.buffer.size + assert_equal 'include::include-file.asciidoc[]', para.buffer.join + end + + test 'include-depth cannot be set by document' do + input = <<-EOS +:include-depth: 1 + +include::include-file.asciidoc[] + EOS + para = block_from_string input, :safe => Asciidoctor::SafeMode::SAFE, :attributes => { 'include-depth' => 0 } + assert_equal 1, para.buffer.size + assert_equal 'include::include-file.asciidoc[]', para.buffer.join + end + end + + context 'build secure asset path' do + test 'allows us to specify a path relative to the current dir' do + doc = Asciidoctor::Document.new + reader = Asciidoctor::Reader.new(["foo"], doc) + legit_path = Dir.pwd + "/foo" + assert_equal legit_path, doc.normalize_asset_path(legit_path) + end + + test "keeps naughty absolute paths from getting outside" do + naughty_path = "/etc/passwd" + doc = Asciidoctor::Document.new + reader = Asciidoctor::Reader.new(["foo"], doc) + secure_path = doc.normalize_asset_path(naughty_path) + assert naughty_path != secure_path + assert_match(/^#{doc.base_dir}/, secure_path) + end + + test "keeps naughty relative paths from getting outside" do + naughty_path = "safe/ok/../../../../../etc/passwd" + doc = Asciidoctor::Document.new + reader = Asciidoctor::Reader.new(["foo"], doc) + secure_path = doc.normalize_asset_path(naughty_path) + assert naughty_path != secure_path + assert_match(/^#{doc.base_dir}/, secure_path) + end + end + + # TODO these tests could be expanded + context 'Conditional blocks' do + test 'ifdef with defined attribute includes block' do + input = <<-EOS +:holygrail: + +ifdef::holygrail[] +There is a holy grail! +endif::holygrail[] + EOS + + reader = Asciidoctor::Reader.new(input.lines.entries, Asciidoctor::Document.new) + assert_match(/There is a holy grail!/, reader.lines.join) + end + + test 'ifndef with undefined attribute includes block' do + input = <<-EOS +ifndef::holygrail[] +Our quest continues to find the holy grail! +endif::holygrail[] + EOS + + reader = Asciidoctor::Reader.new(input.lines.entries, Asciidoctor::Document.new) + assert_match(/Our quest continues to find the holy grail!/, reader.lines.join) + end + end + + context 'Text processing' do + test 'sanitize attribute name' do + assert_equal 'foobar', @reader.sanitize_attribute_name("Foo Bar") + assert_equal 'foo', @reader.sanitize_attribute_name("foo") + assert_equal 'foo3-bar', @reader.sanitize_attribute_name("Foo 3^ # - Bar[") + end + end +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/test/renderer_test.rb b/src/main/resources/gems/asciidoctor-0.0.9/test/renderer_test.rb new file mode 100644 index 00000000..f1d932d2 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/test/renderer_test.rb @@ -0,0 +1,22 @@ +require 'test_helper' + +context 'Renderer' do + + test 'should extract view mapping from built-in template with one segment and backend' do + view_name, view_backend = Asciidoctor::Renderer.extract_view_mapping('Asciidoctor::HTML5::DocumentTemplate') + assert_equal 'document', view_name + assert_equal 'html5', view_backend + end + + test 'should extract view mapping from built-in template with two segments and backend' do + view_name, view_backend = Asciidoctor::Renderer.extract_view_mapping('Asciidoctor::DocBook45::BlockSidebarTemplate') + assert_equal 'block_sidebar', view_name + assert_equal 'docbook45', view_backend + end + + test 'should extract view mapping from built-in template without backend' do + view_name, view_backend = Asciidoctor::Renderer.extract_view_mapping('Asciidoctor::DocumentTemplate') + assert_equal 'document', view_name + assert view_backend.nil? + end +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/test/substitutions_test.rb b/src/main/resources/gems/asciidoctor-0.0.9/test/substitutions_test.rb new file mode 100644 index 00000000..b7740ba2 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/test/substitutions_test.rb @@ -0,0 +1,414 @@ +require 'test_helper' + +# TODO +# - test negatives +# - test role on every quote type +context 'Substitutions' do + context 'Dispatcher' do + test 'apply normal substitutions' do + para = block_from_string("[blue]'http://asciidoc.org[AsciiDoc]' & [red]*Ruby*\n§ Making +++documentation+++ together +\nsince (C) {inception_year}.") + para.document.attributes['inception_year'] = '2012' + result = para.apply_normal_subs(para.buffer) + assert_equal %{AsciiDoc & Ruby\n§ Making documentation together
\nsince © 2012.}, result + end + end + + context 'Quotes' do + test 'single-line double-quoted string' do + para = block_from_string(%q{``a few quoted words''}) + assert_equal '“a few quoted words”', para.sub_quotes(para.buffer.join) + end + + test 'escaped single-line double-quoted string' do + para = block_from_string(%q{\``a few quoted words''}) + assert_equal %q(‘`a few quoted words’'), para.sub_quotes(para.buffer.join) + end + + test 'multi-line double-quoted string' do + para = block_from_string(%Q{``a few\nquoted words''}) + assert_equal "“a few\nquoted words”", para.sub_quotes(para.buffer.join) + end + + test 'double-quoted string with inline single quote' do + para = block_from_string(%q{``Here's Johnny!''}) + assert_equal %q{“Here's Johnny!”}, para.sub_quotes(para.buffer.join) + end + + test 'double-quoted string with inline backquote' do + para = block_from_string(%q{``Here`s Johnny!''}) + assert_equal %q{“Here`s Johnny!”}, para.sub_quotes(para.buffer.join) + end + + test 'single-line single-quoted string' do + para = block_from_string(%q{`a few quoted words'}) + assert_equal '‘a few quoted words’', para.sub_quotes(para.buffer.join) + end + + test 'escaped single-line single-quoted string' do + para = block_from_string(%q{\`a few quoted words'}) + assert_equal %(`a few quoted words'), para.sub_quotes(para.buffer.join) + end + + test 'multi-line single-quoted string' do + para = block_from_string(%Q{`a few\nquoted words'}) + assert_equal "‘a few\nquoted words’", para.sub_quotes(para.buffer.join) + end + + test 'single-quoted string with inline single quote' do + para = block_from_string(%q{`That isn't what I did.'}) + assert_equal %q{‘That isn't what I did.’}, para.sub_quotes(para.buffer.join) + end + + test 'single-quoted string with inline backquote' do + para = block_from_string(%q{`Here`s Johnny!'}) + assert_equal %q{‘Here`s Johnny!’}, para.sub_quotes(para.buffer.join) + end + + test 'single-line constrained unquoted string' do + para = block_from_string(%q{#a few words#}) + assert_equal 'a few words', para.sub_quotes(para.buffer.join) + end + + test 'escaped single-line constrained unquoted string' do + para = block_from_string(%q{\#a few words#}) + assert_equal '#a few words#', para.sub_quotes(para.buffer.join) + end + + test 'multi-line constrained unquoted string' do + para = block_from_string(%Q{#a few\nwords#}) + assert_equal "a few\nwords", para.sub_quotes(para.buffer.join) + end + + test 'single-line unconstrained unquoted string' do + para = block_from_string(%q{##--anything goes ##}) + assert_equal '--anything goes ', para.sub_quotes(para.buffer.join) + end + + test 'escaped single-line unconstrained unquoted string' do + para = block_from_string(%q{\##--anything goes ##}) + assert_equal '#--anything goes #', para.sub_quotes(para.buffer.join) + end + + test 'multi-line unconstrained unquoted string' do + para = block_from_string(%Q{##--anything\ngoes ##}) + assert_equal "--anything\ngoes ", para.sub_quotes(para.buffer.join) + end + + test 'single-line constrained strong string' do + para = block_from_string(%q{*a few strong words*}) + assert_equal 'a few strong words', para.sub_quotes(para.buffer.join) + end + + test 'escaped single-line constrained strong string' do + para = block_from_string(%q{\*a few strong words*}) + assert_equal '*a few strong words*', para.sub_quotes(para.buffer.join) + end + + test 'multi-line constrained strong string' do + para = block_from_string(%Q{*a few\nstrong words*}) + assert_equal "a few\nstrong words", para.sub_quotes(para.buffer.join) + end + + test 'constrained strong string containing an asterisk' do + para = block_from_string(%q{*bl*ck*-eye}) + assert_equal 'bl*ck-eye', para.sub_quotes(para.buffer.join) + end + + test 'single-line constrained quote variation emphasized string' do + para = block_from_string(%q{'a few emphasized words'}) + assert_equal 'a few emphasized words', para.sub_quotes(para.buffer.join) + end + + test 'escaped single-line constrained quote variation emphasized string' do + para = block_from_string(%q{\'a few emphasized words'}) + assert_equal %q('a few emphasized words'), para.sub_quotes(para.buffer.join) + end + + test 'multi-line constrained emphasized quote variation string' do + para = block_from_string(%Q{'a few\nemphasized words'}) + assert_equal "a few\nemphasized words", para.sub_quotes(para.buffer.join) + end + + test 'single-quoted string containing an emphasized phrase' do + para = block_from_string(%q{`I told him, 'Just go for it!''}) + assert_equal '‘I told him, Just go for it!’', para.sub_quotes(para.buffer.join) + end + + test 'escaped single-quotes inside emphasized words are restored' do + para = block_from_string(%q{'Here\'s Johnny!'}) + # NOTE the \' is replaced with ' by the :replacements substitution, later in the substitution pipeline + assert_equal %q{Here\'s Johnny!}, para.sub_quotes(para.buffer.join) + end + + test 'single-line constrained emphasized underline variation string' do + para = block_from_string(%q{_a few emphasized words_}) + assert_equal 'a few emphasized words', para.sub_quotes(para.buffer.join) + end + + test 'escaped single-line constrained emphasized underline variation string' do + para = block_from_string(%q{\_a few emphasized words_}) + assert_equal '_a few emphasized words_', para.sub_quotes(para.buffer.join) + end + + test 'multi-line constrained emphasized underline variation string' do + para = block_from_string(%Q{_a few\nemphasized words_}) + assert_equal "a few\nemphasized words", para.sub_quotes(para.buffer.join) + end + + test 'single-line constrained monospaced string' do + para = block_from_string(%q{`a few <\{monospaced\}> words`}) + # NOTE must use apply_normal_subs because constrained monospaced is handled as a passthrough + assert_equal 'a few <{monospaced}> words', para.apply_normal_subs(para.buffer) + end + + test 'escaped single-line constrained monospaced string' do + para = block_from_string(%q{\`a few words`}) + # NOTE must use apply_normal_subs because constrained monospaced is handled as a passthrough + assert_equal '`a few <monospaced> words`', para.apply_normal_subs(para.buffer) + end + + test 'multi-line constrained monospaced string' do + para = block_from_string(%Q{`a few\n<\{monospaced\}> words`}) + # NOTE must use apply_normal_subs because constrained monospaced is handled as a passthrough + assert_equal "a few\n<{monospaced}> words", para.apply_normal_subs(para.buffer) + end + + test 'single-line unconstrained strong chars' do + para = block_from_string(%q{**Git**Hub}) + assert_equal 'GitHub', para.sub_quotes(para.buffer.join) + end + + test 'escaped single-line unconstrained strong chars' do + para = block_from_string(%q{\**Git**Hub}) + assert_equal '*Git*Hub', para.sub_quotes(para.buffer.join) + end + + test 'multi-line unconstrained strong chars' do + para = block_from_string(%Q{**G\ni\nt\n**Hub}) + assert_equal "G\ni\nt\nHub", para.sub_quotes(para.buffer.join) + end + + test 'unconstrained strong chars with inline asterisk' do + para = block_from_string(%q{**bl*ck**-eye}) + assert_equal 'bl*ck-eye', para.sub_quotes(para.buffer.join) + end + + test 'unconstrained strong chars with role' do + para = block_from_string(%q{Git[blue]**Hub**}) + assert_equal %q{GitHub}, para.sub_quotes(para.buffer.join) + end + + # TODO this is not the same result as AsciiDoc, though I don't understand why AsciiDoc gets what it gets + test 'escaped unconstrained strong chars with role' do + para = block_from_string(%q{Git\[blue]**Hub**}) + assert_equal %q{Git[blue]*Hub*}, para.sub_quotes(para.buffer.join) + end + + test 'single-line unconstrained emphasized chars' do + para = block_from_string(%q{__Git__Hub}) + assert_equal 'GitHub', para.sub_quotes(para.buffer.join) + end + + test 'escaped single-line unconstrained emphasized chars' do + para = block_from_string(%q{\__Git__Hub}) + assert_equal '__Git__Hub', para.sub_quotes(para.buffer.join) + end + + test 'multi-line unconstrained emphasized chars' do + para = block_from_string(%Q{__G\ni\nt\n__Hub}) + assert_equal "G\ni\nt\nHub", para.sub_quotes(para.buffer.join) + end + + test 'unconstrained emphasis chars with role' do + para = block_from_string(%q{[gray]__Git__Hub}) + assert_equal %q{GitHub}, para.sub_quotes(para.buffer.join) + end + + test 'escaped unconstrained emphasis chars with role' do + para = block_from_string(%q{\[gray]__Git__Hub}) + assert_equal %q{[gray]__Git__Hub}, para.sub_quotes(para.buffer.join) + end + + test 'single-line unconstrained monospaced chars' do + para = block_from_string(%q{Git++Hub++}) + assert_equal 'GitHub', para.sub_quotes(para.buffer.join) + end + + test 'escaped single-line unconstrained monospaced chars' do + para = block_from_string(%q{Git\++Hub++}) + assert_equal 'Git+Hub+', para.sub_quotes(para.buffer.join) + end + + test 'multi-line unconstrained monospaced chars' do + para = block_from_string(%Q{Git++\nH\nu\nb++}) + assert_equal "Git\nH\nu\nb", para.sub_quotes(para.buffer.join) + end + + test 'single-line superscript chars' do + para = block_from_string(%q{x^2^ = x * x, e = mc^2^, there's a 1^st^ time for everything}) + assert_equal 'x2 = x * x, e = mc2, there\'s a 1st time for everything', para.sub_quotes(para.buffer.join) + end + + test 'escaped single-line superscript chars' do + para = block_from_string(%q{x\^2^ = x * x}) + assert_equal 'x^2^ = x * x', para.sub_quotes(para.buffer.join) + end + + test 'multi-line superscript chars' do + para = block_from_string(%Q{x^(n\n+\n1)^}) + assert_equal "x(n\n+\n1)", para.sub_quotes(para.buffer.join) + end + + test 'single-line subscript chars' do + para = block_from_string(%q{H~2~O}) + assert_equal 'H2O', para.sub_quotes(para.buffer.join) + end + + test 'escaped single-line subscript chars' do + para = block_from_string(%q{H\~2~O}) + assert_equal 'H~2~O', para.sub_quotes(para.buffer.join) + end + + test 'multi-line subscript chars' do + para = block_from_string(%Q{project~ view\non\nGitHub~}) + assert_equal "project view\non\nGitHub", para.sub_quotes(para.buffer.join) + end + end + + context 'Macros' do + test 'a single-line link macro should be interpreted as a link' do + para = block_from_string('link:/home.html[]') + assert_equal %q{/home.html}, para.sub_macros(para.buffer.join) + end + + test 'a single-line link macro with text should be interpreted as a link' do + para = block_from_string('link:/home.html[Home]') + assert_equal %q{Home}, para.sub_macros(para.buffer.join) + end + + test 'a single-line raw url should be interpreted as a link' do + para = block_from_string('http://google.com') + assert_equal %q{http://google.com}, para.sub_macros(para.buffer.join) + end + + test 'a single-line raw url with text should be interpreted as a link' do + para = block_from_string('http://google.com[Google]') + assert_equal %q{Google}, para.sub_macros(para.buffer.join) + end + + test 'a multi-line raw url with text should be interpreted as a link' do + para = block_from_string("http://google.com[Google\nHomepage]") + assert_equal %{Google\nHomepage}, para.sub_macros(para.buffer.join) + end + + test 'a multi-line raw url with attribute as text should be interpreted as a link with resolved attribute' do + para = block_from_string("http://google.com[{google_homepage}]") + para.document.attributes['google_homepage'] = 'Google Homepage' + assert_equal %q{Google Homepage}, para.sub_macros(para.buffer.join) + end + + test 'a single-line escaped raw url should not be interpreted as a link' do + para = block_from_string('\http://google.com') + assert_equal %q{http://google.com}, para.sub_macros(para.buffer.join) + end + + test 'a single-line image macro should be interpreted as an image' do + para = block_from_string('image:tiger.png[]') + assert_equal %{\n tiger\n}, para.sub_macros(para.buffer.join) + end + + test 'a single-line image macro with text should be interpreted as an image with alt text' do + para = block_from_string('image:tiger.png[Tiger]') + assert_equal %{\n Tiger\n}, para.sub_macros(para.buffer.join) + end + + test 'a single-line image macro with text and dimensions should be interpreted as an image with alt text and dimensions' do + para = block_from_string('image:tiger.png[Tiger, 200, 100]') + assert_equal %{\n Tiger\n}, para.sub_macros(para.buffer.join) + end + + test 'a single-line image macro with text and link should be interpreted as a linked image with alt text' do + para = block_from_string('image:tiger.png[Tiger, link="http://en.wikipedia.org/wiki/Tiger"]') + assert_equal %{\n Tiger\n}, para.sub_macros(para.buffer.join) + end + end + + context 'Passthroughs' do + test 'collect inline triple plus passthroughs' do + para = block_from_string('+++inline code+++') + result = para.extract_passthroughs(para.buffer.join) + assert_equal "\x0" + '0' + "\x0", result + assert_equal 1, para.passthroughs.size + assert_equal 'inline code', para.passthroughs.first[:text] + assert para.passthroughs.first[:subs].empty? + end + + test 'collect multi-line inline triple plus passthroughs' do + para = block_from_string("+++inline\ncode+++") + result = para.extract_passthroughs(para.buffer.join) + assert_equal "\x0" + '0' + "\x0", result + assert_equal 1, para.passthroughs.size + assert_equal "inline\ncode", para.passthroughs.first[:text] + assert para.passthroughs.first[:subs].empty? + end + + test 'collect inline double dollar passthroughs' do + para = block_from_string('$${code}$$') + result = para.extract_passthroughs(para.buffer.join) + assert_equal "\x0" + '0' + "\x0", result + assert_equal 1, para.passthroughs.size + assert_equal '{code}', para.passthroughs.first[:text] + assert_equal [:specialcharacters], para.passthroughs.first[:subs] + end + + test 'collect multi-line inline double dollar passthroughs' do + para = block_from_string("$$\n{code}\n$$") + result = para.extract_passthroughs(para.buffer.join) + assert_equal "\x0" + '0' + "\x0", result + assert_equal 1, para.passthroughs.size + assert_equal "\n{code}\n", para.passthroughs.first[:text] + assert_equal [:specialcharacters], para.passthroughs.first[:subs] + end + + test 'collect passthroughs from inline pass macro' do + para = block_from_string(%Q{pass:specialcharacters,quotes[['code'\\]]}) + result = para.extract_passthroughs(para.buffer.join) + assert_equal "\x0" + '0' + "\x0", result + assert_equal 1, para.passthroughs.size + assert_equal %q{['code']}, para.passthroughs.first[:text] + assert_equal [:specialcharacters, :quotes], para.passthroughs.first[:subs] + end + + test 'collect multi-line passthroughs from inline pass macro' do + para = block_from_string(%Q{pass:specialcharacters,quotes[['more\ncode'\\]]}) + result = para.extract_passthroughs(para.buffer.join) + assert_equal "\x0" + '0' + "\x0", result + assert_equal 1, para.passthroughs.size + assert_equal %Q{['more\ncode']}, para.passthroughs.first[:text] + assert_equal [:specialcharacters, :quotes], para.passthroughs.first[:subs] + end + + test 'restore inline passthroughs without subs' do + para = block_from_string("\x0" + '0' + "\x0") + para.passthroughs << {:text => 'inline code', :subs => []} + result = para.restore_passthroughs(para.buffer.join) + assert_equal 'inline code', result + end + + # TODO add two entries to ensure index lookup is working correctly (0 indx could be ambiguous) + test 'restore inline passthroughs with subs' do + para = block_from_string("\x0" + '0' + "\x0") + para.passthroughs << {:text => '{code}', :subs => [:specialcharacters]} + result = para.restore_passthroughs(para.buffer.join) + assert_equal '<code>{code}</code>', result + end + end + + context 'Post replacements' do + test 'line break' do + para = block_from_string("First line +\nSecond line") + result = para.apply_subs(para.buffer, :post_replacements) + assert_equal "First line
\n", result.first + end + end +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/test/tables_test.rb b/src/main/resources/gems/asciidoctor-0.0.9/test/tables_test.rb new file mode 100644 index 00000000..64fce468 --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/test/tables_test.rb @@ -0,0 +1,484 @@ +require 'test_helper' + +context 'Tables' do + + context 'PSV' do + test 'renders simple psv table' do + input = <<-EOS +|======= +|A |B |C +|a |b |c +|1 |2 |3 +|======= + EOS + cells = [%w(A B C), %w(a b c), %w(1 2 3)] + output = render_embedded_string input + assert_css 'table', output, 1 + assert_css 'table.tableblock.frame-all.grid-all[style~="width: 100%;"]', output, 1 + assert_css 'table > colgroup > col[style~="width: 33%;"]', output, 3 + assert_css 'table tr', output, 3 + assert_css 'table > tbody > tr', output, 3 + assert_css 'table td', output, 9 + assert_css 'table > tbody > tr > td.tableblock.halign-left.valign-top > p.tableblock', output, 9 + cells.each_with_index {|row, rowi| + assert_css "table tr:nth-child(#{rowi + 1}) > td", output, row.size + assert_css "table tr:nth-child(#{rowi + 1}) > td > p", output, row.size + row.each_with_index {|cell, celli| + assert_xpath "(//tr)[#{rowi + 1}]/td[#{celli + 1}]/p[text()='#{cell}']", output, 1 + } + } + end + + test 'renders caption on simple psv table' do + input = <<-EOS +.Simple psv table +|======= +|A |B |C +|a |b |c +|1 |2 |3 +|======= + EOS + output = render_embedded_string input + assert_xpath '/table/caption[@class="title"][text()="Simple psv table"]', output, 1 + assert_xpath '/table/caption/following-sibling::colgroup', output, 1 + end + + test 'ignores escaped separators' do + input = <<-EOS +|=== +|A \\| here| a \\| there +|=== + EOS + output = render_embedded_string input + assert_css 'table', output, 1 + assert_css 'table > colgroup > col', output, 2 + assert_css 'table > tbody > tr', output, 1 + assert_css 'table > tbody > tr > td', output, 2 + assert_xpath '/table/tbody/tr/td[1]/p[text()="A | here"]', output, 1 + assert_xpath '/table/tbody/tr/td[2]/p[text()="a | there"]', output, 1 + end + + test 'performs normal substitutions on cell content' do + input = <<-EOS +:show_title: Cool new show +|=== +|{show_title} |Coming soon... +|=== + EOS + output = render_embedded_string input + assert_xpath '//tbody/tr/td[1]/p[text()="Cool new show"]', output, 1 + assert_xpath %(//tbody/tr/td[2]/p[text()='Coming soon#{[8230].pack('U*')}']), output, 1 + end + + test 'table and col width not assigned when autowidth option is specified' do + input = <<-EOS +[options="autowidth"] +|======= +|A |B |C +|a |b |c +|1 |2 |3 +|======= + EOS + output = render_embedded_string input + assert_css 'table', output, 1 + assert_css 'table[style*="width"]', output, 0 + assert_css 'table colgroup col', output, 3 + assert_css 'table colgroup col[width]', output, 0 + end + + test 'first row sets number of columns when not specified' do + input = <<-EOS +|==== +|first |second |third |fourth + +|1 |2 |3 +|4 +|==== + EOS + output = render_embedded_string input + assert_css 'table', output, 1 + assert_css 'table > colgroup > col', output, 4 + assert_css 'table > tbody > tr', output, 2 + assert_css 'table > tbody > tr:nth-child(1) > td', output, 4 + assert_css 'table > tbody > tr:nth-child(2) > td', output, 4 + end + + test 'colspec attribute sets number of columns' do + input = <<-EOS +[cols="3*"] +|=== +|A |B |C |a |b |c |1 |2 |3 +|=== + EOS + output = render_embedded_string input + assert_css 'table', output, 1 + assert_css 'table > tbody > tr', output, 3 + end + + test 'table with explicit column count can have multiple rows on a single line' do + input = <<-EOS +[cols="3*"] +|=== +|one |two +|1 |2 |a |b +|=== + EOS + output = render_embedded_string input + assert_css 'table', output, 1 + assert_css 'table > colgroup > col', output, 3 + assert_css 'table > tbody > tr', output, 2 + end + + test 'table with explicit deprecated syntax column count can have multiple rows on a single line' do + input = <<-EOS +[cols="3"] +|=== +|one |two +|1 |2 |a |b +|=== + EOS + output = render_embedded_string input + assert_css 'table', output, 1 + assert_css 'table > colgroup > col', output, 3 + assert_css 'table > tbody > tr', output, 2 + end + + test 'table with header and footer' do + input = <<-EOS +[frame="topbot",options="header,footer"] +|=== +|Item |Quantity +|Item 1 |1 +|Item 2 |2 +|Item 3 |3 +|Total |6 +|=== + EOS + output = render_embedded_string input + assert_css 'table', output, 1 + assert_css 'table > colgroup > col', output, 2 + assert_css 'table > thead', output, 1 + assert_css 'table > thead > tr', output, 1 + assert_css 'table > thead > tr > th', output, 2 + assert_css 'table > tfoot', output, 1 + assert_css 'table > tfoot > tr', output, 1 + assert_css 'table > tfoot > tr > td', output, 2 + assert_css 'table > tbody', output, 1 + assert_css 'table > tbody > tr', output, 3 + end + + test 'styles not applied to header cells' do + input = <<-EOS +[cols="1h,1s,1e",options="header,footer"] +|==== +|Name |Occupation| Website +|Octocat |Social coding| http://github.com +|Name |Occupation| Website +|==== + EOS + output = render_embedded_string input + assert_css 'table', output, 1 + assert_css 'table > thead > tr > th', output, 3 + assert_css 'table > thead > tr > th > *', output, 0 + + assert_css 'table > tfoot > tr > td', output, 3 + assert_css 'table > tfoot > tr > td > p.header', output, 1 + assert_css 'table > tfoot > tr > td > p > strong', output, 1 + assert_css 'table > tfoot > tr > td > p > em', output, 1 + + assert_css 'table > tbody > tr > td', output, 3 + assert_css 'table > tbody > tr > td > p.header', output, 1 + assert_css 'table > tbody > tr > td > p > strong', output, 1 + assert_css 'table > tbody > tr > td > p > em > a', output, 1 + end + + test 'supports horizontal and vertical source data with blank lines and table header' do + input = <<-EOS +.Horizontal and vertical source data +[width="80%",cols="3,^2,^2,10",options="header"] +|=== +|Date |Duration |Avg HR |Notes + +|22-Aug-08 |10:24 | 157 | +Worked out MSHR (max sustainable heart rate) by going hard +for this interval. + +|22-Aug-08 |23:03 | 152 | +Back-to-back with previous interval. + +|24-Aug-08 |40:00 | 145 | +Moderately hard interspersed with 3x 3min intervals (2 min +hard + 1 min really hard taking the HR up to 160). + +I am getting in shape! + +|=== + EOS + output = render_embedded_string input + assert_css 'table', output, 1 + assert_css 'table[style~="width: 80%;"]', output, 1 + assert_xpath '/table/caption[@class="title"][text()="Horizontal and vertical source data"]', output, 1 + assert_css 'table > colgroup > col', output, 4 + assert_css 'table > colgroup > col:nth-child(1)[@style~="width: 17%;"]', output, 1 + assert_css 'table > colgroup > col:nth-child(2)[@style~="width: 11%;"]', output, 1 + assert_css 'table > colgroup > col:nth-child(3)[@style~="width: 11%;"]', output, 1 + assert_css 'table > colgroup > col:nth-child(4)[@style~="width: 58%;"]', output, 1 + assert_css 'table > thead', output, 1 + assert_css 'table > thead > tr', output, 1 + assert_css 'table > thead > tr > th', output, 4 + assert_css 'table > tbody > tr', output, 3 + assert_css 'table > tbody > tr:nth-child(1) > td', output, 4 + assert_css 'table > tbody > tr:nth-child(2) > td', output, 4 + assert_css 'table > tbody > tr:nth-child(3) > td', output, 4 + assert_xpath "/table/tbody/tr[1]/td[4]/p[text()='Worked out MSHR (max sustainable heart rate) by going hard\nfor this interval.']", output, 1 + assert_css 'table > tbody > tr:nth-child(3) > td:nth-child(4) > p', output, 2 + assert_xpath '/table/tbody/tr[3]/td[4]/p[2][text()="I am getting in shape!"]', output, 1 + end + + test 'spans, alignments and styles' do + input = <<-EOS +[cols="e,m,^,>s",width="25%"] +|=== +|1 >s|2 |3 |4 +^|5 2.2+^.^|6 .3+<.>m|7 +^|8 +|9 2+>|10 +|=== + EOS + output = render_embedded_string input + assert_css 'table', output, 1 + assert_css 'table > colgroup > col[style~="width: 25%;"]', output, 4 + assert_css 'table > tbody > tr', output, 4 + assert_css 'table > tbody > tr > td', output, 10 + assert_css 'table > tbody > tr:nth-child(1) > td', output, 4 + assert_css 'table > tbody > tr:nth-child(2) > td', output, 3 + assert_css 'table > tbody > tr:nth-child(3) > td', output, 1 + assert_css 'table > tbody > tr:nth-child(4) > td', output, 2 + + assert_css 'table tr:nth-child(1) > td:nth-child(1).halign-left.valign-top p em', output, 1 + assert_css 'table tr:nth-child(1) > td:nth-child(2).halign-right.valign-top p strong', output, 1 + assert_css 'table tr:nth-child(1) > td:nth-child(3).halign-center.valign-top p', output, 1 + assert_css 'table tr:nth-child(1) > td:nth-child(3).halign-center.valign-top p *', output, 0 + assert_css 'table tr:nth-child(1) > td:nth-child(4).halign-right.valign-top p strong', output, 1 + + assert_css 'table tr:nth-child(2) > td:nth-child(1).halign-center.valign-top p em', output, 1 + assert_css 'table tr:nth-child(2) > td:nth-child(2).halign-center.valign-middle[colspan="2"][rowspan="2"] p tt', output, 1 + assert_css 'table tr:nth-child(2) > td:nth-child(3).halign-left.valign-bottom[rowspan="3"] p tt', output, 1 + + assert_css 'table tr:nth-child(3) > td:nth-child(1).halign-center.valign-top p em', output, 1 + + assert_css 'table tr:nth-child(4) > td:nth-child(1).halign-left.valign-top p em', output, 1 + assert_css 'table tr:nth-child(4) > td:nth-child(2).halign-right.valign-top[colspan="2"] p tt', output, 1 + end + + test 'supports repeating cells' do + input = <<-EOS +|=== +3*|A +|1 3*|2 +|b |c +|=== + EOS + output = render_embedded_string input + assert_css 'table', output, 1 + assert_css 'table > colgroup > col', output, 3 + assert_css 'table > tbody > tr', output, 3 + assert_css 'table > tbody > tr:nth-child(1) > td', output, 3 + assert_css 'table > tbody > tr:nth-child(2) > td', output, 3 + assert_css 'table > tbody > tr:nth-child(3) > td', output, 3 + + assert_xpath '/table/tbody/tr[1]/td[1]/p[text()="A"]', output, 1 + assert_xpath '/table/tbody/tr[1]/td[2]/p[text()="A"]', output, 1 + assert_xpath '/table/tbody/tr[1]/td[3]/p[text()="A"]', output, 1 + + assert_xpath '/table/tbody/tr[2]/td[1]/p[text()="1"]', output, 1 + assert_xpath '/table/tbody/tr[2]/td[2]/p[text()="2"]', output, 1 + assert_xpath '/table/tbody/tr[2]/td[3]/p[text()="2"]', output, 1 + + assert_xpath '/table/tbody/tr[3]/td[1]/p[text()="2"]', output, 1 + assert_xpath '/table/tbody/tr[3]/td[2]/p[text()="b"]', output, 1 + assert_xpath '/table/tbody/tr[3]/td[3]/p[text()="c"]', output, 1 + end + + test 'paragraph, verse and literal content' do + input = <<-EOS +[cols=",^v,^l",options="header"] +|=== +|Paragraphs |Verse |Literal +3*|The discussion about what is good, +what is beautiful, what is noble, +what is pure, and what is true +could always go on. + +Why is that important? +Why would I like to do that? + +Because that's the only conversation worth having. + +And whether it goes on or not after I die, I don't know. +But, I do know that it is the conversation I want to have while I am still alive. + +Which means that to me the offer of certainty, +the offer of complete security, +the offer of an impermeable faith that can't give way +is an offer of something not worth having. + +I want to live my life taking the risk all the time +that I don't know anything like enough yet... +that I haven't understood enough... +that I can't know enough... +that I am always hungrily operating on the margins +of a potentially great harvest of future knowledge and wisdom. + +I wouldn't have it any other way. +|=== + EOS + output = render_embedded_string input + assert_css 'table', output, 1 + assert_css 'table > colgroup > col', output, 3 + assert_css 'table > thead', output, 1 + assert_css 'table > thead > tr', output, 1 + assert_css 'table > thead > tr > th', output, 3 + assert_css 'table > tbody', output, 1 + assert_css 'table > tbody > tr', output, 1 + assert_css 'table > tbody > tr > td', output, 3 + assert_css 'table > tbody > tr > td:nth-child(1).halign-left.valign-top > p.tableblock', output, 7 + assert_css 'table > tbody > tr > td:nth-child(2).halign-center.valign-top > div.verse', output, 1 + verse = xmlnodes_at_css 'table > tbody > tr > td:nth-child(2).halign-center.valign-top > div.verse', output, 1 + assert_equal 26, verse.text.lines.entries.size + assert_css 'table > tbody > tr > td:nth-child(3).halign-center.valign-top > div.literal > pre', output, 1 + literal = xmlnodes_at_css 'table > tbody > tr > td:nth-child(3).halign-center.valign-top > div.literal > pre', output, 1 + assert_equal 26, literal.text.lines.entries.size + end + + test 'asciidoc content' do + input = <<-EOS +[cols="1e,1,5a",frame="topbot",options="header"] +|=== +|Name |Backends |Description + +|badges |xhtml11, html5 | +Link badges ('XHTML 1.1' and 'CSS') in document footers. + +NOTE: The path names of images, icons and scripts are relative path +names to the output document not the source document. + +|[[X97]] docinfo, docinfo1, docinfo2 |All backends | +These three attributes control which document information +files will be included in the the header of the output file: + +docinfo:: Include `-docinfo.` +docinfo1:: Include `docinfo.` +docinfo2:: Include `docinfo.` and `-docinfo.` + +Where `` is the file name (sans extension) of the AsciiDoc +input file and `` is `.html` for HTML outputs or `.xml` for +DocBook outputs. If the input file is the standard input then the +output file name is used. +|=== + EOS + doc = document_from_string input + table = doc.blocks.first + assert !table.nil? + tbody = table.rows.body + assert_equal 2, tbody.size + body_cell_1_3 = tbody[0][2] + assert !body_cell_1_3.inner_document.nil? + assert body_cell_1_3.inner_document.nested? + assert_equal doc, body_cell_1_3.inner_document.parent_document + assert_equal doc.renderer, body_cell_1_3.inner_document.renderer + output = doc.render + + assert_css 'table > tbody > tr', output, 2 + assert_css 'table > tbody > tr:nth-child(1) > td:nth-child(3) div.admonitionblock', output, 1 + assert_css 'table > tbody > tr:nth-child(2) > td:nth-child(3) div.dlist', output, 1 + end + + test 'nested table' do + input = <<-EOS +[cols="1,2a"] +|=== +|Normal cell + +|Cell with nested table + +[cols="2,1"] +!=== +!Nested table cell 1 !Nested table cell 2 +!=== + +|=== + EOS + output = render_embedded_string input + assert_css 'table', output, 2 + assert_css 'table table', output, 1 + assert_css 'table table', output, 1 + assert_css 'table > tbody > tr > td:nth-child(2) table', output, 1 + assert_css 'table > tbody > tr > td:nth-child(2) table > tbody > tr > td', output, 2 + end + end + + context 'DSV' do + + test 'renders simple dsv table' do + input = <<-EOS +[width="75%",format="dsv"] +|=== +root:x:0:0:root:/root:/bin/bash +bin:x:1:1:bin:/bin:/sbin/nologin +mysql:x:27:27:MySQL\\:Server:/var/lib/mysql:/bin/bash +gdm:x:42:42::/var/lib/gdm:/sbin/nologin +sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin +nobody:x:99:99:Nobody:/:/sbin/nologin +|=== + EOS + output = render_embedded_string input + assert_css 'table', output, 1 + assert_css 'table > colgroup > col[style~="width: 14%;"]', output, 7 + assert_css 'table > tbody > tr', output, 6 + assert_xpath '//tr[4]/td[5]/p/text()', output, 0 + assert_xpath '//tr[3]/td[5]/p[text()="MySQL:Server"]', output, 1 + end + end + + context 'CSV' do + + test 'mixed unquoted records and quoted records with escaped quotes, commas and wrapped lines' do + input = <<-EOS +[format="csv",options="header"] +|=== +Year,Make,Model,Description,Price +1997,Ford,E350,"ac, abs, moon",3000.00 +1999,Chevy,"Venture ""Extended Edition""","",4900.00 +1999,Chevy,"Venture ""Extended Edition, Very Large""",,5000.00 +1996,Jeep,Grand Cherokee,"MUST SELL! +air, moon roof, loaded",4799.00 +|=== + EOS + output = render_embedded_string input + assert_css 'table', output, 1 + assert_css 'table > colgroup > col[style~="width: 20%;"]', output, 5 + assert_css 'table > thead > tr', output, 1 + assert_css 'table > tbody > tr', output, 4 + assert_xpath '((//tbody/tr)[1]/td)[4]/p[text()="ac, abs, moon"]', output, 1 + assert_xpath %(((//tbody/tr)[2]/td)[3]/p[text()='Venture "Extended Edition"']), output, 1 + assert_xpath '((//tbody/tr)[4]/td)[4]/p[text()="MUST SELL! air, moon roof, loaded"]', output, 1 + end + + test 'custom separator' do + input = <<-EOS +[format="csv", separator=";"] +|=== +a;b;c +1;2;3 +|=== + EOS + output = render_embedded_string input + assert_css 'table', output, 1 + assert_css 'table > colgroup > col', output, 3 + assert_css 'table > tbody > tr', output, 2 + assert_css 'table > tbody > tr:nth-child(1) > td', output, 3 + assert_css 'table > tbody > tr:nth-child(2) > td', output, 3 + end + end +end diff --git a/src/main/resources/gems/asciidoctor-0.0.9/test/test_helper.rb b/src/main/resources/gems/asciidoctor-0.0.9/test/test_helper.rb new file mode 100644 index 00000000..3b27218a --- /dev/null +++ b/src/main/resources/gems/asciidoctor-0.0.9/test/test_helper.rb @@ -0,0 +1,213 @@ +require 'fileutils' +require 'test/unit' + +require "#{File.expand_path(File.dirname(__FILE__))}/../lib/asciidoctor.rb" + +begin + require 'mocha/setup' +rescue LoadError + require 'mocha' +end +require 'htmlentities' +require 'nokogiri' +require 'pending' + +ENV['SUPPRESS_DEBUG'] ||= 'true' + +class Test::Unit::TestCase + def sample_doc_path(name) + name = name.to_s + unless name.include?('.') + ['asciidoc', 'txt'].each do |ext| + if File.exist?(fixture_path("#{name}.#{ext}")) + name = "#{name}.#{ext}" + break + end + end + end + fixture_path(name) + end + + def fixture_path(name) + File.join(File.dirname(__FILE__), "fixtures", name ) + end + + def example_document(name) + Asciidoctor::Document.new(File.readlines(sample_doc_path(name))) + end + + def assert_difference(expression, difference = 1, message = nil, &block) + expressions = [expression] + + exps = expressions.map { |e| + e.respond_to?(:call) ? e : lambda { eval(e, block.binding) } + } + before = exps.map { |e| e.call } + + yield + + expressions.zip(exps).each_with_index do |(code, e), i| + error = "#{code.inspect} didn't change by #{difference}" + error = "#{message}.\n#{error}" if message + assert_equal(before[i] + difference, e.call, error) + end + end + + def xmlnodes_at_css(css, content, count = nil) + xmlnodes_at_path(:css, css, content) + end + + def xmlnodes_at_xpath(css, content, count = nil) + xmlnodes_at_path(:xpath, css, content) + end + + def xmlnodes_at_path(type, path, content, count = nil) + doc = xmldoc_from_string content + case type + when :xpath + results = doc.xpath("#{path.sub('/', './')}") + when :css + results = doc.css(path) + end + count == 1 ? results.first : results + end + + def assert_css(css, content, count = nil) + assert_path(:css, css, content, count) + end + + def assert_xpath(xpath, content, count = nil) + assert_path(:xpath, xpath, content, count) + end + + def assert_path(type, path, content, count = nil) + case type + when :xpath + type_name = 'XPath' + when :css + type_name = 'CSS' + end + + results = xmlnodes_at_path type, path, content + + if (count && results.length != count) + flunk "#{type_name} #{path} yielded #{results.length} elements rather than #{count} for:\n#{content}" + elsif (count.nil? && results.empty?) + flunk "#{type_name} #{path} not found in:\n#{content}" + else + assert true + end + end + + def xmldoc_from_string(content) + match = content.match(/\s* false), 1 + end + + # NOTE this test ensures we have the encoding line on block templates too + test "proper encoding to handle utf8 characters in arbitrary block" do + input = [] + input << "[verse]\n" + input.concat(File.readlines(sample_doc_path(:encoding))) + doc = Asciidoctor::Document.new + reader = Asciidoctor::Reader.new input + block = Asciidoctor::Lexer.next_block(reader, doc) + assert_xpath '//pre', block.render.gsub(/^\s*\n/, ''), 1 + end + + test 'escaped text markup' do + assert_match(/All your <em>inline<\/em> markup belongs to <strong>us<\/strong>!/, + render_string('All your inline markup belongs to us!')) + end + + test "line breaks" do + assert_xpath "//br", render_string("Well this is +\njust fine and dandy, isn't it?"), 1 + end + + test "single- and double-quoted text" do + rendered = render_string("``Where?,'' she said, flipping through her copy of `The New Yorker.'") + assert_match(/“Where\?,”/, rendered) + assert_match(/‘The New Yorker.’/, rendered) + end + + test "separator" do + # for some reason, the html enclosure breaks the xpath //*[@id='content']//hr + assert_xpath "//*[@id='content']//hr", render_string("This is separated.\n\n'''\n\n...from this!"), 1 + end + + test "emphasized text" do + assert_xpath "//em", render_string("An 'emphatic' no") + end + + test "emphasized text with single quote" do + assert_xpath "//em[text()=\"Johnny#{[8217].pack('U*')}s\"]", render_string("It's 'Johnny's' phone") + end + + test "emphasized text with escaped single quote" do + assert_xpath "//em[text()=\"Johnny's\"]", render_string("It's 'Johnny\\'s' phone") + end + + test "escaped single quote is restored as single quote" do + assert_xpath "//p[contains(text(), \"Let's do it!\")]", render_string("Let\\'s do it!") + end + + test "emphasized text at end of line" do + assert_xpath "//em", render_string("This library is 'awesome'") + end + + test "emphasized text at beginning of line" do + assert_xpath "//em", render_string("'drop' it") + end + + test "emphasized text across line" do + assert_xpath "//em", render_string("'check it'") + end + + test "unquoted text" do + assert_no_match(/#/, render_string("An #unquoted# word")) + end + + test "backtick-escaped text followed by single-quoted text" do + assert_match(/foo<\/tt>/, render_string(%Q(run `foo` 'dog'))) + end + + context "basic styling" do + setup do + @rendered = render_string("A *BOLD* word. An _italic_ word. A +mono+ word. ^superscript!^ and some ~subscript~.") + end + + test "strong" do + assert_xpath "//strong", @rendered + end + + test "italic" do + assert_xpath "//em", @rendered + end + + test "monospaced" do + assert_xpath "//tt", @rendered + end + + test "superscript" do + assert_xpath "//sup", @rendered + end + + test "subscript" do + assert_xpath "//sub", @rendered + end + + test "backticks" do + assert_xpath "//tt", render_string("This is `totally cool`.") + end + + test "nested styles" do + rendered = render_string("Winning *big _time_* in the +city *boyeeee*+.") + + assert_xpath "//strong/em", rendered + assert_xpath "//tt/strong", rendered + end + + test "unconstrained quotes" do + rendered_chars = render_string("**B**__I__++M++") + assert_xpath "//strong", rendered_chars + assert_xpath "//em", rendered_chars + assert_xpath "//tt", rendered_chars + end + end +end diff --git a/src/main/resources/gems/tilt-1.3.3/COPYING b/src/main/resources/gems/tilt-1.3.3/COPYING new file mode 100644 index 00000000..7879e887 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/COPYING @@ -0,0 +1,18 @@ +Copyright (c) 2010 Ryan Tomayko + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/resources/gems/tilt-1.3.3/Gemfile b/src/main/resources/gems/tilt-1.3.3/Gemfile new file mode 100644 index 00000000..1aa98e4b --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/Gemfile @@ -0,0 +1,2 @@ +source "http://rubygems.org" +gemspec diff --git a/src/main/resources/gems/tilt-1.3.3/README.md b/src/main/resources/gems/tilt-1.3.3/README.md new file mode 100644 index 00000000..ba4d23c5 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/README.md @@ -0,0 +1,208 @@ +Tilt +==== + +Tilt is a thin interface over a bunch of different Ruby template engines in +an attempt to make their usage as generic possible. This is useful for web +frameworks, static site generators, and other systems that support multiple +template engines but don't want to code for each of them individually. + +The following features are supported for all template engines (assuming the +feature is relevant to the engine): + + * Custom template evaluation scopes / bindings + * Ability to pass locals to template evaluation + * Support for passing a block to template evaluation for "yield" + * Backtraces with correct filenames and line numbers + * Template file caching and reloading + * Fast, method-based template source compilation + +The primary goal is to get all of the things listed above right for all +template engines included in the distribution. + +Support for these template engines is included with the package: + + ENGINE FILE EXTENSIONS REQUIRED LIBRARIES + -------------------------- ----------------------- ---------------------------- + ERB .erb, .rhtml none (included ruby stdlib) + Interpolated String .str none (included ruby core) + Erubis .erb, .rhtml, .erubis erubis + Haml .haml haml + Sass .sass haml (< 3.1) or sass (>= 3.1) + Scss .scss haml (< 3.1) or sass (>= 3.1) + Less CSS .less less + Builder .builder builder + Liquid .liquid liquid + RDiscount .markdown, .mkd, .md rdiscount + Redcarpet .markdown, .mkd, .md redcarpet + BlueCloth .markdown, .mkd, .md bluecloth + Kramdown .markdown, .mkd, .md kramdown + Maruku .markdown, .mkd, .md maruku + RedCloth .textile redcloth + RDoc .rdoc rdoc + Radius .radius radius + Markaby .mab markaby + Nokogiri .nokogiri nokogiri + CoffeeScript .coffee coffee-script (+ javascript) + Creole (Wiki markup) .wiki, .creole creole + WikiCloth (Wiki markup) .wiki, .mediawiki, .mw wikicloth + Yajl .yajl yajl-ruby + +These template engines ship with their own Tilt integration: + + ENGINE FILE EXTENSIONS REQUIRED LIBRARIES + -------------------------- ----------------- ---------------------------- + Slim .slim slim (>= 0.7) + Embedded JavaScript sprockets + Embedded CoffeeScript sprockets + JST sprockets + +See [TEMPLATES.md][t] for detailed information on template engine +options and supported features. + +[t]: http://github.com/rtomayko/tilt/blob/master/TEMPLATES.md + "Tilt Template Engine Documentation" + +Basic Usage +----------- + +Instant gratification: + + require 'erb' + require 'tilt' + template = Tilt.new('templates/foo.erb') + => # + output = template.render + => "Hello world!" + +It's recommended that calling programs explicitly require template engine +libraries (like 'erb' above) at load time. Tilt attempts to lazy require the +template engine library the first time a template is created but this is +prone to error in threaded environments. + +The `Tilt` module contains generic implementation classes for all supported +template engines. Each template class adheres to the same interface for +creation and rendering. In the instant gratification example, we let Tilt +determine the template implementation class based on the filename, but +`Tilt::Template` implementations can also be used directly: + + template = Tilt::HamlTemplate.new('templates/foo.haml') + output = template.render + +The `render` method takes an optional evaluation scope and locals hash +arguments. Here, the template is evaluated within the context of the +`Person` object with locals `x` and `y`: + + template = Tilt::ERBTemplate.new('templates/foo.erb') + joe = Person.find('joe') + output = template.render(joe, :x => 35, :y => 42) + +If no scope is provided, the template is evaluated within the context of an +object created with `Object.new`. + +A single `Template` instance's `render` method may be called multiple times +with different scope and locals arguments. Continuing the previous example, +we render the same compiled template but this time in jane's scope: + + jane = Person.find('jane') + output = template.render(jane, :x => 22, :y => nil) + +Blocks can be passed to `render` for templates that support running +arbitrary ruby code (usually with some form of `yield`). For instance, +assuming the following in `foo.erb`: + + Hey <%= yield %>! + +The block passed to `render` is called on `yield`: + + template = Tilt::ERBTemplate.new('foo.erb') + template.render { 'Joe' } + # => "Hey Joe!" + +Template Mappings +----------------- + +The `Tilt` module includes methods for associating template implementation +classes with filename patterns and for locating/instantiating template +classes based on those associations. + +The `Tilt::register` method associates a filename pattern with a specific +template implementation. To use ERB for files ending in a `.bar` extension: + + >> Tilt.register Tilt::ERBTemplate, 'bar' + >> Tilt.new('views/foo.bar') + => # + +Retrieving the template class for a file or file extension: + + >> Tilt['foo.bar'] + => Tilt::ERBTemplate + >> Tilt['haml'] + => Tilt::HamlTemplate + +It's also possible to register template file mappings that are more specific +than a file extension. To use Erubis for `bar.erb` but ERB for all other `.erb` +files: + + >> Tilt.register Tilt::ErubisTemplate, 'bar.erb' + >> Tilt.new('views/foo.erb') + => Tilt::ERBTemplate + >> Tilt.new('views/bar.erb') + => Tilt::ErubisTemplate + +The template class is determined by searching for a series of decreasingly +specific name patterns. When creating a new template with +`Tilt.new('views/foo.html.erb')`, we check for the following template +mappings: + + 1. `views/foo.html.erb` + 2. `foo.html.erb` + 3. `html.erb` + 4. `erb` + +### Fallback mode + +If there are more than one template class registered for a file extension, Tilt +will automatically try to load the version that works on your machine: + + 1. If any of the template engines has been loaded already: Use that one. + 2. If not, it will try to initialize each of the classes with an empty template. + 3. Tilt will use the first that doesn't raise an exception. + 4. If however *all* of them failed, Tilt will raise the exception of the first + template engine, since that was the most preferred one. + +Template classes that were registered *last* would be tried first. Because the +Markdown extensions are registered like this: + + Tilt.register Tilt::BlueClothTemplate, 'md' + Tilt.register Tilt::RDiscountTemplate, 'md' + +Tilt will first try RDiscount and then BlueCloth. You could say that RDiscount +has a *higher priority* than BlueCloth. + +The fallback mode works nicely when you just need to render an ERB or Markdown +template, but if you depend on a specific implementation, you should use #prefer: + + # Prefer BlueCloth for all its registered extensions (markdown, mkd, md) + Tilt.prefer Tilt::BlueClothTemplate + + # Prefer Erubis for .erb only: + Tilt.prefer Tilt::ErubisTemplate, 'erb' + +When a file extension has a preferred template class, Tilt will *always* use +that class, even if it raises an exception. + +Template Compilation +-------------------- + +Tilt compiles generated Ruby source code produced by template engines and reuses +it on subsequent template invocations. Benchmarks show this yields a 5x-10x +performance increase over evaluating the Ruby source on each invocation. + +Template compilation is currently supported for these template engines: +StringTemplate, ERB, Erubis, Haml, Nokogiri, Builder and Yajl. + +LICENSE +------- + +Tilt is Copyright (c) 2010 [Ryan Tomayko](http://tomayko.com/about) and +distributed under the MIT license. See the `COPYING` file for more info. diff --git a/src/main/resources/gems/tilt-1.3.3/Rakefile b/src/main/resources/gems/tilt-1.3.3/Rakefile new file mode 100644 index 00000000..6106aaae --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/Rakefile @@ -0,0 +1,80 @@ +require 'rake/testtask' +task :default => :test + +# SPECS ===================================================================== + +desc 'Generate test coverage report' +task :rcov do + sh "rcov -Ilib:test test/*_test.rb" +end + +desc 'Run tests (default)' +Rake::TestTask.new(:test) do |t| + t.test_files = FileList['test/*_test.rb'] + t.ruby_opts = ['-Itest'] + t.ruby_opts << '-rubygems' if defined? Gem +end + +# PACKAGING ================================================================= + +begin + require 'rubygems' +rescue LoadError +end + +if defined?(Gem) + SPEC = eval(File.read('tilt.gemspec')) + + def package(ext='') + "pkg/tilt-#{SPEC.version}" + ext + end + + desc 'Build packages' + task :package => %w[.gem .tar.gz].map {|e| package(e)} + + desc 'Build and install as local gem' + task :install => package('.gem') do + sh "gem install #{package('.gem')}" + end + + directory 'pkg/' + + file package('.gem') => %w[pkg/ tilt.gemspec] + SPEC.files do |f| + sh "gem build tilt.gemspec" + mv File.basename(f.name), f.name + end + + file package('.tar.gz') => %w[pkg/] + SPEC.files do |f| + sh "git archive --format=tar HEAD | gzip > #{f.name}" + end + + desc 'Upload gem and tar.gz distributables to rubyforge' + task :release => [package('.gem'), package('.tar.gz')] do |t| + sh <<-SH + rubyforge add_release sinatra tilt #{SPEC.version} #{package('.gem')} && + rubyforge add_file sinatra tilt #{SPEC.version} #{package('.tar.gz')} + SH + end +end + +# GEMSPEC =================================================================== + +file 'tilt.gemspec' => FileList['{lib,test}/**','Rakefile'] do |f| + # read version from tilt.rb + version = File.read('lib/tilt.rb')[/VERSION = '(.*)'/] && $1 + # read spec file and split out manifest section + spec = File. + read(f.name). + sub(/s\.version\s*=\s*'.*'/, "s.version = '#{version}'") + parts = spec.split(" # = MANIFEST =\n") + # determine file list from git ls-files + files = `git ls-files`. + split("\n").sort.reject{ |file| file =~ /^\./ }. + map{ |file| " #{file}" }.join("\n") + # piece file back together and write... + parts[1] = " s.files = %w[\n#{files}\n ]\n" + spec = parts.join(" # = MANIFEST =\n") + spec.sub!(/s.date = '.*'/, "s.date = '#{Time.now.strftime("%Y-%m-%d")}'") + File.open(f.name, 'w') { |io| io.write(spec) } + puts "updated #{f.name}" +end diff --git a/src/main/resources/gems/tilt-1.3.3/TEMPLATES.md b/src/main/resources/gems/tilt-1.3.3/TEMPLATES.md new file mode 100644 index 00000000..929fc012 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/TEMPLATES.md @@ -0,0 +1,516 @@ +Tilt Templates +============== + +(See for a rendered, +HTML-version of this file). + +While all Tilt templates use the same basic interface for template loading and +evaluation, each varies in its capabilities and available options. Detailed +documentation on each supported template engine is provided below. + +There are also some file extensions that have several implementations +(currently ERB and Markdown). These template classes have certain features +which are guaranteed to work across all the implementations. If you wish to be +compatible with all of these template classes, you should only depend on the +cross-implementation features. + + * [ERB](#erb) - Generic ERB implementation (backed by erb.rb or Erubis) + * [erb.rb](#erbrb) - `Tilt::ERBTemplate` + * [Erubis](#erubis) - `Tilt::ErubisTemplate` + * [Haml](#haml) - `Tilt::HamlTemplate` + * [Liquid](#liquid) - `Tilt::LiquidTemplate` + * Nokogiri - `Tilt::NokogiriTemplate` + * Builder - `Tilt::BuilderTemplate` + * Markaby - `Tilt::MarkabyTemplate` + * [Radius](#radius) - `Tilt::RadiusTemplate` + +Tilt also includes support for CSS processors like [LessCSS][lesscss] and +[Sass][sass], [CoffeeScript][coffee-script] and some simple text formats. + + * Less - `Tilt::LessTemplate` + * Sass - `Tilt::SassTemplate` + * Scss - `Tilt::ScssTemplate` + * CoffeeScript - `Tilt::CoffeeScriptTemplate` + * [Textile](#redcloth) - `Tilt::RedClothTemplate` + * Creole - `Tilt::CreoleTemplate` + * [RDoc](#rdoc) - `Tilt::RDocTemplate` + +Tilt has extensive support for Markdown, backed by one of four different +implementations (depending on which are available on your system): + + * [Markdown](#markdown) - Generic Markdown implementation + * [RDiscount](#rdiscount) - `Tilt::RDiscountTemplate` + * Redcarpet - `Tilt::RedcarpetTemplate` + * BlueCloth - `Tilt::BlueClothTemplate` + * Kramdown - `Tilt::KramdownTemplate` + * Maruku - `Tilt::MarukuTemplate` + + +ERB (`erb`, `rhtml`) +-------------------- + +ERB is a simple but powerful template languge for Ruby. In Tilt it's backed by +[Erubis](#erubis) (if installed on your system) or by [erb.rb](#erbrb) (which +is included in Ruby's standard library). This documentation applies to both +implementations. + +### Example + + Hello <%= world %>! + +### Usage + +ERB templates support custom evaluation scopes and locals: + + >> require 'erb' + >> template = Tilt.new('hello.html.erb') + >> template.render(self, :world => 'World!') + => "Hello World!" + +Or, use `Tilt['erb']` directly to process strings: + + template = Tilt['erb'].new { "Hello <%= world %>!" } + template.render(self, :world => 'World!') + +### Options + +#### `:trim => trim` + +Omits newlines and spaces around certain lines (usually those that starts with +`<%` and ends with `%>`). There isn't a specification for how trimming in ERB +should work, so if you need more control over the whitespace, you should use +[erb.rb](#erbrb) or [Erubis](#erubis) directly. + + +#### `:outvar => '_erbout'` + +The name of the variable used to accumulate template output. This can be +any valid Ruby expression but must be assignable. By default a local +variable named `_erbout` is used. + + +erb.rb (`erb`, `rhtml`) +----------------------- + +[ERB](#erb) implementation available in Ruby's standard library. + +All the documentation of [ERB](#erb) applies in addition to the following: + +### Usage + +The `Tilt::ERBTemplate` class is registered for all files ending in `.erb` or +`.rhtml` by default, but with a *lower* priority than ErubisTemplate. If you +specifically want to use ERB, it's recommended to use `#prefer`: + + Tilt.prefer Tilt::ERBTemplate + +__NOTE:__ It's suggested that your program `require 'erb'` at load time when +using this template engine within a threaded environment. + +### Options + +#### `:trim => true` + +The ERB trim mode flags. This is a string consisting of any combination of the +following characters: + + * `'>'` omits newlines for lines ending in `>` + * `'<>'` omits newlines for lines starting with `<%` and ending in `%>` + * `'%'` enables processing of lines beginning with `%` + * `true` is an alias of `<>` + +#### `:safe => nil` + +The `$SAFE` level; when set, ERB code will be run in a +separate thread with `$SAFE` set to the provided level. + +#### `:outvar => '_erbout'` + +The name of the variable used to accumulate template output. This can be +any valid Ruby expression but must be assignable. By default a local +variable named `_erbout` is used. + +### See also + + * [ERB documentation](http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/classes/ERB.html) + + + +Erubis (`erb`, `rhtml`, `erubis`) +--------------------------------- + +[Erubis][erubis] is a fast, secure, and very extensible implementation of [ERB](#erb). + +All the documentation of [ERB](#erb) applies in addition to the following: + +### Usage + +The `Tilt::ErubisTemplate` class is registered for all files ending in `.erb` or +`.rhtml` by default, but with a *higher* priority than `ERBTemplate`. If you +specifically want to use Erubis, it's recommended to use `#prefer`: + + Tilt.prefer Tilt::ErubisTemplate + +__NOTE:__ It's suggested that your program `require 'erubis'` at load time when +using this template engine within a threaded environment. + +### Options + +#### `:engine_class => Erubis::Eruby` + +Allows you to specify a custom engine class to use instead of the +default which is `Erubis::Eruby`. + +#### `:escape_html => false` + +When `true`, `Erubis::EscapedEruby` will be used as the engine class +instead of the default. All content within `<%= %>` blocks will be +automatically html escaped. + +#### `:outvar => '_erbout'` + +The name of the variable used to accumulate template output. This can be +any valid Ruby expression but must be assignable. By default a local +variable named `_erbout` is used. + +#### `:pattern => '<% %>'` + +Set pattern for embedded Ruby code. + +#### `:trim => true` + +Delete spaces around `<% %>`. (But, spaces around `<%= %>` are preserved.) + +### See also + + * [Erubis Home][erubis] + * [Erubis User's Guide](http://www.kuwata-lab.com/erubis/users-guide.html) + + + +Haml (`haml`) +------------- + +[Haml][haml] is a markup language that’s used to cleanly and simply describe +the HTML of any web document without the use of inline code. Haml functions as +a replacement for inline page templating systems such as PHP, ASP, and ERB, the +templating language used in most Ruby on Rails applications. However, Haml +avoids the need for explicitly coding HTML into the template, because it itself +is a description of the HTML, with some code to generate dynamic content. +([more](http://haml-lang.com/about.html)) + + +### Example + + %html + %head + %title= @title + %body + %h1 + Hello + = world + '!' + +### Usage + +The `Tilt::HamlTemplate` class is registered for all files ending in `.haml` +by default. Haml templates support custom evaluation scopes and locals: + + >> require 'haml' + >> template = Tilt.new('hello.haml') + => # + >> @title = "Hello Haml!" + >> template.render(self, :world => 'Haml!') + => " + + + Hello Haml! + + +

Hello Haml!

+ + " + +Or, use the `Tilt::HamlTemplate` class directly to process strings: + + >> require 'haml' + >> template = Tilt::HamlTemplate.new { "%h1= 'Hello Haml!'" } + => # + >> template.render + => "

Hello Haml!

" + +__NOTE:__ It's suggested that your program `require 'haml'` at load time when +using this template engine within a threaded environment. + +### Options + +Please see the [Haml Reference](http://haml-lang.com/docs/yardoc/file.HAML_REFERENCE.html#options) for all available options. + +### See also + + * [#haml.docs](http://haml-lang.com/docs.html) + * [Haml Tutorial](http://haml-lang.com/tutorial.html) + * [Haml Reference](http://haml-lang.com/docs/yardoc/HAML_REFERENCE.md.html) + + + +Liquid (`liquid`) +----------------- + +[Liquid][liquid] is for rendering safe templates which cannot affect the +security of the server they are rendered on. + +### Example + + + + {{ title }} + + +

Hello {{ world }}!

+ + + +### Usage + +`Tilt::LiquidTemplate` is registered for all files ending in `.liquid` by +default. Liquid templates support locals and objects that respond to +`#to_h` as scopes: + + >> require 'liquid' + >> require 'tilt' + >> template = Tilt.new('hello.liquid') + => # + >> scope = { :title => "Hello Liquid Templates" } + >> template.render(nil, :world => "Liquid") + => " + + + Hello Liquid Templates + + +

Hello Liquid!

+ + " + +Or, use `Tilt::LiquidTemplate` directly to process strings: + + >> require 'haml' + >> template = Tilt::LiquidTemplate.new { "

Hello Liquid!

" } + => # + >> template.render + => "

Hello Liquid!

" + +__NOTE:__ It's suggested that your program `require 'liquid'` at load +time when using this template engine within a threaded environment. + +### See also + + * [Liquid for Programmers](http://wiki.github.com/tobi/liquid/liquid-for-programmers) + * [Liquid Docs](http://liquid.rubyforge.org/) + * GitHub: [tobi/liquid](http://github.com/tobi/liquid/) + + + +Radius (`radius`) +----------------- + +[Radius][radius] is the template language used by [Radiant CMS][radiant]. It is +a tag language designed to be valid XML/HTML. + +### Example + + + +

+
    + +
  • !
  • +
    +
+ + + + +### Usage + +To render a template such as the one above. + + scope = OpenStruct.new + scope.title = "Radius Example" + scope.hello = "Hello, World!" + + require 'radius' + template = Tilt::RadiusTemplate.new('example.radius', :tag_prefix=>'r') + template.render(scope, :type=>'hlist'){ "Jackpot!" } + +The result will be: + + + +

Radius Example

+
    +
  • Hello, World!
  • +
  • Hello, World!
  • +
  • Hello, World!
  • +
+ Jackpot! + + + +### See also + + * [Radius][radius] + * [Radiant CMS][radiant] + + + +Textile (`textile`) +------------------- + +Textile is a lightweight markup language originally developed by Dean Allen and +billed as a "humane Web text generator". Textile converts its marked-up text +input to valid, well-formed XHTML and also inserts character entity references +for apostrophes, opening and closing single and double quotation marks, +ellipses and em dashes. + +Textile formatted texts are converted to HTML with the [RedCloth][redcloth] +engine, which is a Ruby extension written in C. + +### Example + + h1. Hello Textile Templates + + Hello World. This is a paragraph. + +### Usage + +__NOTE:__ It's suggested that your program `require 'redcloth'` at load time +when using this template engine in a threaded environment. + +### See Also + + * [RedCloth][redcloth] + + + +RDoc (`rdoc`) +------------- + +[RDoc][rdoc] is the simple text markup system that comes with Ruby's standard +library. + +### Example + + = Hello RDoc Templates + + Hello World. This is a paragraph. + +### Usage + +__NOTE:__ It's suggested that your program `require 'rdoc/markup'` and +`require 'rdoc/markup/to_html'` at load time when using this template +engine in a threaded environment. + +### See also + + * [RDoc][rdoc] + + + +Markdown (`markdown`, `md`, `mkd`) +---------------------------------- + +[Markdown][markdown] is a lightweight markup language, created by John Gruber +and Aaron Swartz. For any markup that is not covered by Markdown’s syntax, HTML +is used. Marking up plain text with Markdown markup is easy and Markdown +formatted texts are readable. + +Markdown formatted texts are converted to HTML with one of these libraries: + + * [RDiscount](#rdiscount) - `Tilt::RDiscountTemplate` + * Redcarpet - `Tilt::RedcarpetTemplate` + * BlueCloth - `Tilt::BlueClothTemplate` + * Kramdown - `Tilt::KramdownTemplate` + * Maruku - `Tilt::MarukuTemplate` + +Tilt will use fallback mode (as documented in the README) for determining which +library to use. RDiscount has highest priority - Maruku has lowest. + +### Example + + Hello Markdown Templates + ======================== + + Hello World. This is a paragraph. + +### Usage + +To wrap a Markdown formatted document with a layout: + + layout = Tilt['erb'].new do + "<%= yield %>" + end + data = Tilt['md'].new { "# hello tilt" } + layout.render { data.render } + # => "

hello tilt

\n" + +### Options + +Every implementation of Markdown *should* support these options, but there are +some known problems with the Kramdown and Maruku engines. + +#### `:smartypants => true|false` + +Set `true` to enable [Smarty Pants][smartypants] +style punctuation replacement. + +#### `:escape_html => true|false` + +Set `true` disallow raw HTML in Markdown contents. HTML is converted to +literal text by escaping `<` characters. + +### See also + + * [Markdown Syntax Documentation](http://daringfireball.net/projects/markdown/syntax/) + + +RDiscount (`markdown`, `md`, `mkd`) +----------------------------------- + +[Discount][discount] is an implementation of the Markdown markup language in C. +[RDiscount][rdiscount] is a Ruby wrapper around Discount. + +All the documentation of [Markdown](#markdown) applies in addition to the following: + +### Usage + +The `Tilt::RDiscountTemplate` class is registered for all files ending in +`.markdown`, `.md` or `.mkd` by default with the highest priority. If you +specifically want to use RDiscount, it's recommended to use `#prefer`: + + Tilt.prefer Tilt::RDiscountTemplate + +__NOTE:__ It's suggested that your program `require 'erubis'` at load time when +using this template engine within a threaded environment. + +### See also + + * [Discount][discount] + * [RDiscount][rdiscount] + * GitHub: [rtomayko/rdiscount][rdiscount] + + +[lesscss]: http://lesscss.org/ "Less CSS" +[sass]: http://sass-lang.com/ "Sass" +[coffee-script]: http://jashkenas.github.com/coffee-script/ "Coffee Script" +[erubis]: http://www.kuwata-lab.com/erubis/ "Erubis" +[haml]: http://haml-lang.org/ "Haml" +[liquid]: http://www.liquidmarkup.org/ "Liquid" +[radius]: http://radius.rubyforge.org/ "Radius" +[radiant]: http://radiantcms.org/ "Radiant CMS" +[redcloth]: http://redcloth.org/ "RedCloth" +[rdoc]: http://rdoc.rubyforge.org/ "RDoc" +[discount]: http://www.pell.portland.or.us/~orc/Code/discount/ "Discount" +[rdiscount]: http://github.com/rtomayko/rdiscount/ "RDiscount" +[smartypants]: http://daringfireball.net/projects/smartypants/ "Smarty Pants" + diff --git a/src/main/resources/gems/tilt-1.3.3/bin/tilt b/src/main/resources/gems/tilt-1.3.3/bin/tilt new file mode 100755 index 00000000..91467e22 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/bin/tilt @@ -0,0 +1,110 @@ +#!/usr/bin/env ruby +require 'ostruct' +require 'optparse' +require 'tilt' + +usage = < +Process template and write output to stdout. With no or +when is '-', read template from stdin and use the --type option +to determine the template's type. + +Options + -l, --list List template engines + file patterns and exit + -t, --type= Use this template engine; required if no + -y, --layout= Use as a layout template + + -D= Define variable as + -o, --vars= Evaluate to Hash and use for variables + + -h, --help Show this help message + +Convert markdown to HTML: + $ tilt foo.markdown > foo.html + +Process ERB template: + $ echo "Answer: <%= 2 + 2 %>" | tilt -t erb + Answer: 4 + +Define variables: + $ echo "Answer: <%= 2 + n %>" | tilt --locals="{:n=>40, :x=>0}" + Answer: 42 + $ echo "Answer: <%= 2 + n %>" | tilt -Dn=40 -Dx=0 + Answer: 42 +USAGE + +script_name = File.basename($0) +pattern = nil +layout = nil +locals = {} + +ARGV.options do |o| + o.program_name = script_name + + # list all available template engines + o.on("-l", "--list") do + groups = {} + Tilt.mappings.each do |pattern,engine| + key = engine.name.split('::').last.sub(/Template$/, '') + (groups[key] ||= []) << pattern + end + groups.sort { |(k1,v1),(k2,v2)| k1 <=> k2 }.each do |engine,files| + printf "%-15s %s\n", engine, files.sort.join(', ') + end + exit + end + + # the template type / pattern + o.on("-t", "--type=PATTERN", String) do |val| + abort "unknown template type: #{val}" if Tilt[val].nil? + pattern = val + end + + # pass template output into the specified layout template + o.on("-y", "--layout=FILE", String) do |file| + paths = [file, "~/.tilt/#{file}", "/etc/tilt/#{file}"] + layout = paths. + map { |p| File.expand_path(p) }. + find { |p| File.exist?(p) } + abort "no such layout: #{file}" if layout.nil? + end + + # define a local variable + o.on("-D", "--define=PAIR", String) do |pair| + key, value = pair.split(/[=:]/, 2) + locals[key.to_sym] = value + end + + # define local variables using a Ruby hash + o.on("--vars=RUBY") do |ruby| + hash = eval(ruby) + abort "vars must be a Hash, not #{hash.inspect}" if !hash.is_a?(Hash) + hash.each { |key, value| locals[key.to_sym] = value } + end + + o.on_tail("-h", "--help") { puts usage; exit } + + o.parse! +end + +file = ARGV.first || '-' +pattern = file if pattern.nil? +abort "template type not given. see: #{$0} --help" if ['-', ''].include?(pattern) + +engine = Tilt[pattern] +abort "template engine not found for: #{pattern}" if engine.nil? + +template = + engine.new(file) { + if file == '-' + $stdin.read + else + File.read(file) + end + } +output = template.render(self, locals) + +# process layout +output = Tilt.new(layout).render(self, locals) { output } if layout + +$stdout.write(output) diff --git a/src/main/resources/gems/tilt-1.3.3/lib/tilt.rb b/src/main/resources/gems/tilt-1.3.3/lib/tilt.rb new file mode 100644 index 00000000..9cab0f75 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/lib/tilt.rb @@ -0,0 +1,190 @@ +module Tilt + VERSION = '1.3.3' + + @preferred_mappings = Hash.new + @template_mappings = Hash.new { |h, k| h[k] = [] } + + # Hash of template path pattern => template implementation class mappings. + def self.mappings + @template_mappings + end + + def self.normalize(ext) + ext.to_s.downcase.sub(/^\./, '') + end + + # Register a template implementation by file extension. + def self.register(template_class, *extensions) + if template_class.respond_to?(:to_str) + # Support register(ext, template_class) too + extensions, template_class = [template_class], extensions[0] + end + + extensions.each do |ext| + ext = normalize(ext) + mappings[ext].unshift(template_class).uniq! + end + end + + # Makes a template class preferred for the given file extensions. If you + # don't provide any extensions, it will be preferred for all its already + # registered extensions: + # + # # Prefer RDiscount for its registered file extensions: + # Tilt.prefer(Tilt::RDiscountTemplate) + # + # # Prefer RDiscount only for the .md extensions: + # Tilt.prefer(Tilt::RDiscountTemplate, '.md') + def self.prefer(template_class, *extensions) + if extensions.empty? + mappings.each do |ext, klasses| + @preferred_mappings[ext] = template_class if klasses.include? template_class + end + else + extensions.each do |ext| + ext = normalize(ext) + register(template_class, ext) + @preferred_mappings[ext] = template_class + end + end + end + + # Returns true when a template exists on an exact match of the provided file extension + def self.registered?(ext) + mappings.key?(ext.downcase) && !mappings[ext.downcase].empty? + end + + # Create a new template for the given file using the file's extension + # to determine the the template mapping. + def self.new(file, line=nil, options={}, &block) + if template_class = self[file] + template_class.new(file, line, options, &block) + else + fail "No template engine registered for #{File.basename(file)}" + end + end + + # Lookup a template class for the given filename or file + # extension. Return nil when no implementation is found. + def self.[](file) + pattern = file.to_s.downcase + until pattern.empty? || registered?(pattern) + pattern = File.basename(pattern) + pattern.sub!(/^[^.]*\.?/, '') + end + + # Try to find a preferred engine. + preferred_klass = @preferred_mappings[pattern] + return preferred_klass if preferred_klass + + # Fall back to the general list of mappings. + klasses = @template_mappings[pattern] + + # Try to find an engine which is already loaded. + template = klasses.detect do |klass| + if klass.respond_to?(:engine_initialized?) + klass.engine_initialized? + end + end + + return template if template + + # Try each of the classes until one succeeds. If all of them fails, + # we'll raise the error of the first class. + first_failure = nil + + klasses.each do |klass| + begin + klass.new { '' } + rescue Exception => ex + first_failure ||= ex + next + else + return klass + end + end + + raise first_failure if first_failure + end + + # Deprecated module. + module CompileSite + end + + # Extremely simple template cache implementation. Calling applications + # create a Tilt::Cache instance and use #fetch with any set of hashable + # arguments (such as those to Tilt.new): + # cache = Tilt::Cache.new + # cache.fetch(path, line, options) { Tilt.new(path, line, options) } + # + # Subsequent invocations return the already loaded template object. + class Cache + def initialize + @cache = {} + end + + def fetch(*key) + @cache[key] ||= yield + end + + def clear + @cache = {} + end + end + + + # Template Implementations ================================================ + + require 'tilt/string' + register StringTemplate, 'str' + + require 'tilt/erb' + register ERBTemplate, 'erb', 'rhtml' + register ErubisTemplate, 'erb', 'rhtml', 'erubis' + + require 'tilt/haml' + register HamlTemplate, 'haml' + + require 'tilt/css' + register SassTemplate, 'sass' + register ScssTemplate, 'scss' + register LessTemplate, 'less' + + require 'tilt/coffee' + register CoffeeScriptTemplate, 'coffee' + + require 'tilt/nokogiri' + register NokogiriTemplate, 'nokogiri' + + require 'tilt/builder' + register BuilderTemplate, 'builder' + + require 'tilt/markaby' + register MarkabyTemplate, 'mab' + + require 'tilt/liquid' + register LiquidTemplate, 'liquid' + + require 'tilt/radius' + register RadiusTemplate, 'radius' + + require 'tilt/markdown' + register MarukuTemplate, 'markdown', 'mkd', 'md' + register KramdownTemplate, 'markdown', 'mkd', 'md' + register BlueClothTemplate, 'markdown', 'mkd', 'md' + register RDiscountTemplate, 'markdown', 'mkd', 'md' + register RedcarpetTemplate, 'markdown', 'mkd', 'md' + + require 'tilt/textile' + register RedClothTemplate, 'textile' + + require 'tilt/rdoc' + register RDocTemplate, 'rdoc' + + require 'tilt/wiki' + register CreoleTemplate, 'wiki', 'creole' + register WikiClothTemplate, 'wiki', 'mediawiki', 'mw' + + require 'tilt/yajl' + register YajlTemplate, 'yajl' +end diff --git a/src/main/resources/gems/tilt-1.3.3/lib/tilt/builder.rb b/src/main/resources/gems/tilt-1.3.3/lib/tilt/builder.rb new file mode 100644 index 00000000..f9289528 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/lib/tilt/builder.rb @@ -0,0 +1,40 @@ +require 'tilt/template' + +module Tilt + # Builder template implementation. See: + # http://builder.rubyforge.org/ + class BuilderTemplate < Template + self.default_mime_type = 'text/xml' + + def self.engine_initialized? + defined? ::Builder + end + + def initialize_engine + require_template_library 'builder' + end + + def prepare; end + + def evaluate(scope, locals, &block) + return super(scope, locals, &block) if data.respond_to?(:to_str) + xml = ::Builder::XmlMarkup.new(:indent => 2) + data.call(xml) + xml.target! + end + + def precompiled_preamble(locals) + return super if locals.include? :xml + "xml = ::Builder::XmlMarkup.new(:indent => 2)\n#{super}" + end + + def precompiled_postamble(locals) + "xml.target!" + end + + def precompiled_template(locals) + data.to_str + end + end +end + diff --git a/src/main/resources/gems/tilt-1.3.3/lib/tilt/coffee.rb b/src/main/resources/gems/tilt-1.3.3/lib/tilt/coffee.rb new file mode 100644 index 00000000..ac6d6dc2 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/lib/tilt/coffee.rb @@ -0,0 +1,50 @@ +require 'tilt/template' + +module Tilt + # CoffeeScript template implementation. See: + # http://coffeescript.org/ + # + # CoffeeScript templates do not support object scopes, locals, or yield. + class CoffeeScriptTemplate < Template + self.default_mime_type = 'application/javascript' + + @@default_bare = false + + def self.default_bare + @@default_bare + end + + def self.default_bare=(value) + @@default_bare = value + end + + # DEPRECATED + def self.default_no_wrap + @@default_bare + end + + # DEPRECATED + def self.default_no_wrap=(value) + @@default_bare = value + end + + def self.engine_initialized? + defined? ::CoffeeScript + end + + def initialize_engine + require_template_library 'coffee_script' + end + + def prepare + if !options.key?(:bare) and !options.key?(:no_wrap) + options[:bare] = self.class.default_bare + end + end + + def evaluate(scope, locals, &block) + @output ||= CoffeeScript.compile(data, options) + end + end +end + diff --git a/src/main/resources/gems/tilt-1.3.3/lib/tilt/css.rb b/src/main/resources/gems/tilt-1.3.3/lib/tilt/css.rb new file mode 100644 index 00000000..f433904f --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/lib/tilt/css.rb @@ -0,0 +1,72 @@ +require 'tilt/template' + +module Tilt + # Sass template implementation. See: + # http://haml.hamptoncatlin.com/ + # + # Sass templates do not support object scopes, locals, or yield. + class SassTemplate < Template + self.default_mime_type = 'text/css' + + def self.engine_initialized? + defined? ::Sass::Engine + end + + def initialize_engine + require_template_library 'sass' + end + + def prepare + @engine = ::Sass::Engine.new(data, sass_options) + end + + def evaluate(scope, locals, &block) + @output ||= @engine.render + end + + private + def sass_options + options.merge(:filename => eval_file, :line => line, :syntax => :sass) + end + end + + # Sass's new .scss type template implementation. + class ScssTemplate < SassTemplate + self.default_mime_type = 'text/css' + + private + def sass_options + options.merge(:filename => eval_file, :line => line, :syntax => :scss) + end + end + + # Lessscss template implementation. See: + # http://lesscss.org/ + # + # Less templates do not support object scopes, locals, or yield. + class LessTemplate < Template + self.default_mime_type = 'text/css' + + def self.engine_initialized? + defined? ::Less + end + + def initialize_engine + require_template_library 'less' + end + + def prepare + if ::Less.const_defined? :Engine + @engine = ::Less::Engine.new(data) + else + parser = ::Less::Parser.new(:filename => eval_file, :line => line) + @engine = parser.parse(data) + end + end + + def evaluate(scope, locals, &block) + @output ||= @engine.to_css + end + end +end + diff --git a/src/main/resources/gems/tilt-1.3.3/lib/tilt/erb.rb b/src/main/resources/gems/tilt-1.3.3/lib/tilt/erb.rb new file mode 100644 index 00000000..f2b388b7 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/lib/tilt/erb.rb @@ -0,0 +1,110 @@ +require 'tilt/template' + +module Tilt + # ERB template implementation. See: + # http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/classes/ERB.html + class ERBTemplate < Template + @@default_output_variable = '_erbout' + + def self.default_output_variable + @@default_output_variable + end + + def self.default_output_variable=(name) + @@default_output_variable = name + end + + def self.engine_initialized? + defined? ::ERB + end + + def initialize_engine + require_template_library 'erb' + end + + def prepare + @outvar = options[:outvar] || self.class.default_output_variable + options[:trim] = '<>' if options[:trim].nil? || options[:trim] == true + @engine = ::ERB.new(data, options[:safe], options[:trim], @outvar) + end + + def precompiled_template(locals) + source = @engine.src + source + end + + def precompiled_preamble(locals) + <<-RUBY + begin + __original_outvar = #{@outvar} if defined?(#{@outvar}) + #{super} + RUBY + end + + def precompiled_postamble(locals) + <<-RUBY + #{super} + ensure + #{@outvar} = __original_outvar + end + RUBY + end + + # ERB generates a line to specify the character coding of the generated + # source in 1.9. Account for this in the line offset. + if RUBY_VERSION >= '1.9.0' + def precompiled(locals) + source, offset = super + [source, offset + 1] + end + end + end + + # Erubis template implementation. See: + # http://www.kuwata-lab.com/erubis/ + # + # ErubisTemplate supports the following additional options, which are not + # passed down to the Erubis engine: + # + # :engine_class allows you to specify a custom engine class to use + # instead of the default (which is ::Erubis::Eruby). + # + # :escape_html when true, ::Erubis::EscapedEruby will be used as + # the engine class instead of the default. All content + # within <%= %> blocks will be automatically html escaped. + class ErubisTemplate < ERBTemplate + def self.engine_initialized? + defined? ::Erubis + end + + def initialize_engine + require_template_library 'erubis' + end + + def prepare + @outvar = options.delete(:outvar) || self.class.default_output_variable + @options.merge!(:preamble => false, :postamble => false, :bufvar => @outvar) + engine_class = options.delete(:engine_class) + engine_class = ::Erubis::EscapedEruby if options.delete(:escape_html) + @engine = (engine_class || ::Erubis::Eruby).new(data, options) + end + + def precompiled_preamble(locals) + [super, "#{@outvar} = _buf = ''"].join("\n") + end + + def precompiled_postamble(locals) + [@outvar, super].join("\n") + end + + # Erubis doesn't have ERB's line-off-by-one under 1.9 problem. + # Override and adjust back. + if RUBY_VERSION >= '1.9.0' + def precompiled(locals) + source, offset = super + [source, offset - 1] + end + end + end +end + diff --git a/src/main/resources/gems/tilt-1.3.3/lib/tilt/haml.rb b/src/main/resources/gems/tilt-1.3.3/lib/tilt/haml.rb new file mode 100644 index 00000000..63122060 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/lib/tilt/haml.rb @@ -0,0 +1,64 @@ +require 'tilt/template' + +module Tilt + # Haml template implementation. See: + # http://haml.hamptoncatlin.com/ + class HamlTemplate < Template + self.default_mime_type = 'text/html' + + def self.engine_initialized? + defined? ::Haml::Engine + end + + def initialize_engine + require_template_library 'haml' + end + + def prepare + options = @options.merge(:filename => eval_file, :line => line) + @engine = ::Haml::Engine.new(data, options) + end + + def evaluate(scope, locals, &block) + if @engine.respond_to?(:precompiled_method_return_value, true) + super + else + @engine.render(scope, locals, &block) + end + end + + # Precompiled Haml source. Taken from the precompiled_with_ambles + # method in Haml::Precompiler: + # http://github.com/nex3/haml/blob/master/lib/haml/precompiler.rb#L111-126 + def precompiled_template(locals) + @engine.precompiled + end + + def precompiled_preamble(locals) + local_assigns = super + @engine.instance_eval do + <<-RUBY + begin + extend Haml::Helpers + _hamlout = @haml_buffer = Haml::Buffer.new(@haml_buffer, #{options_for_buffer.inspect}) + _erbout = _hamlout.buffer + __in_erb_template = true + _haml_locals = locals + #{local_assigns} + RUBY + end + end + + def precompiled_postamble(locals) + @engine.instance_eval do + <<-RUBY + #{precompiled_method_return_value} + ensure + @haml_buffer = @haml_buffer.upper + end + RUBY + end + end + end +end + diff --git a/src/main/resources/gems/tilt-1.3.3/lib/tilt/liquid.rb b/src/main/resources/gems/tilt-1.3.3/lib/tilt/liquid.rb new file mode 100644 index 00000000..74a63afc --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/lib/tilt/liquid.rb @@ -0,0 +1,41 @@ +require 'tilt/template' + +module Tilt + # Liquid template implementation. See: + # http://liquid.rubyforge.org/ + # + # Liquid is designed to be a *safe* template system and threfore + # does not provide direct access to execuatable scopes. In order to + # support a +scope+, the +scope+ must be able to represent itself + # as a hash by responding to #to_h. If the +scope+ does not respond + # to #to_h it will be ignored. + # + # LiquidTemplate does not support yield blocks. + # + # It's suggested that your program require 'liquid' at load + # time when using this template engine. + class LiquidTemplate < Template + def self.engine_initialized? + defined? ::Liquid::Template + end + + def initialize_engine + require_template_library 'liquid' + end + + def prepare + @engine = ::Liquid::Template.parse(data) + end + + def evaluate(scope, locals, &block) + locals = locals.inject({}){ |h,(k,v)| h[k.to_s] = v ; h } + if scope.respond_to?(:to_h) + scope = scope.to_h.inject({}){ |h,(k,v)| h[k.to_s] = v ; h } + locals = scope.merge(locals) + end + locals['yield'] = block.nil? ? '' : yield + locals['content'] = locals['yield'] + @engine.render(locals) + end + end +end diff --git a/src/main/resources/gems/tilt-1.3.3/lib/tilt/markaby.rb b/src/main/resources/gems/tilt-1.3.3/lib/tilt/markaby.rb new file mode 100644 index 00000000..3271e143 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/lib/tilt/markaby.rb @@ -0,0 +1,52 @@ +require 'tilt/template' + +module Tilt + # Markaby + # http://github.com/markaby/markaby + class MarkabyTemplate < Template + def self.builder_class + @builder_class ||= Class.new(Markaby::Builder) do + def __capture_markaby_tilt__(&block) + __run_markaby_tilt__ do + text capture(&block) + end + end + end + end + + def self.engine_initialized? + defined? ::Markaby + end + + def initialize_engine + require_template_library 'markaby' + end + + def prepare + end + + def evaluate(scope, locals, &block) + builder = self.class.builder_class.new({}, scope) + builder.locals = locals + + if data.kind_of? Proc + (class << builder; self end).send(:define_method, :__run_markaby_tilt__, &data) + else + builder.instance_eval <<-CODE, __FILE__, __LINE__ + def __run_markaby_tilt__ + #{data} + end + CODE + end + + if block + builder.__capture_markaby_tilt__(&block) + else + builder.__run_markaby_tilt__ + end + + builder.to_s + end + end +end + diff --git a/src/main/resources/gems/tilt-1.3.3/lib/tilt/markdown.rb b/src/main/resources/gems/tilt-1.3.3/lib/tilt/markdown.rb new file mode 100644 index 00000000..322b0f8d --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/lib/tilt/markdown.rb @@ -0,0 +1,190 @@ +require 'tilt/template' + +module Tilt + # Discount Markdown implementation. See: + # http://github.com/rtomayko/rdiscount + # + # RDiscount is a simple text filter. It does not support +scope+ or + # +locals+. The +:smart+ and +:filter_html+ options may be set true + # to enable those flags on the underlying RDiscount object. + class RDiscountTemplate < Template + self.default_mime_type = 'text/html' + + ALIAS = { + :escape_html => :filter_html, + :smartypants => :smart + } + + FLAGS = [:smart, :filter_html, :smartypants, :escape_html] + + def flags + FLAGS.select { |flag| options[flag] }.map { |flag| ALIAS[flag] || flag } + end + + def self.engine_initialized? + defined? ::RDiscount + end + + def initialize_engine + require_template_library 'rdiscount' + end + + def prepare + @engine = RDiscount.new(data, *flags) + @output = nil + end + + def evaluate(scope, locals, &block) + @output ||= @engine.to_html + end + end + + # Upskirt Markdown implementation. See: + # https://github.com/tanoku/redcarpet + # + # Supports both Redcarpet 1.x and 2.x + class RedcarpetTemplate < Template + def self.engine_initialized? + defined? ::Redcarpet + end + + def initialize_engine + require_template_library 'redcarpet' + end + + def prepare + klass = [Redcarpet1, Redcarpet2].detect { |e| e.engine_initialized? } + @engine = klass.new(file, line, options) { data } + end + + def evaluate(scope, locals, &block) + @engine.evaluate(scope, locals, &block) + end + + # Compatibility mode for Redcarpet 1.x + class Redcarpet1 < RDiscountTemplate + self.default_mime_type = 'text/html' + + def self.engine_initialized? + defined? ::RedcarpetCompat + end + + def prepare + @engine = RedcarpetCompat.new(data, *flags) + @output = nil + end + end + + # Future proof mode for Redcarpet 2.x (not yet released) + class Redcarpet2 < Template + self.default_mime_type = 'text/html' + + def self.engine_initialized? + defined? ::Redcarpet::Render + end + + def generate_renderer + renderer = options.delete(:renderer) || Redcarpet::Render::HTML + return renderer unless options.delete(:smartypants) + return renderer if renderer <= Redcarpet::Render::SmartyPants + + if renderer == Redcarpet::Render::XHTML + Redcarpet::Render::SmartyHTML.new(:xhtml => true) + elsif renderer == Redcarpet::Render::HTML + Redcarpet::Render::SmartyHTML + elsif renderer.is_a? Class + Class.new(renderer) { include Redcarpet::Render::SmartyPants } + else + renderer.extend Redcarpet::Render::SmartyPants + end + end + + def prepare + # try to support the same aliases + RDiscountTemplate::ALIAS.each do |opt, aka| + next if options.key? opt or not options.key? aka + options[opt] = options.delete(aka) + end + + # only raise an exception if someone is trying to enable :escape_html + options.delete(:escape_html) unless options[:escape_html] + + @engine = Redcarpet::Markdown.new(generate_renderer, options) + @output = nil + end + + def evaluate(scope, locals, &block) + @output ||= @engine.render(data) + end + end + end + + # BlueCloth Markdown implementation. See: + # http://deveiate.org/projects/BlueCloth/ + class BlueClothTemplate < Template + self.default_mime_type = 'text/html' + + def self.engine_initialized? + defined? ::BlueCloth + end + + def initialize_engine + require_template_library 'bluecloth' + end + + def prepare + @engine = BlueCloth.new(data, options) + @output = nil + end + + def evaluate(scope, locals, &block) + @output ||= @engine.to_html + end + end + + # Maruku markdown implementation. See: + # http://maruku.rubyforge.org/ + class MarukuTemplate < Template + def self.engine_initialized? + defined? ::Maruku + end + + def initialize_engine + require_template_library 'maruku' + end + + def prepare + @engine = Maruku.new(data, options) + @output = nil + end + + def evaluate(scope, locals, &block) + @output ||= @engine.to_html + end + end + + # Kramdown Markdown implementation. See: + # http://kramdown.rubyforge.org/ + class KramdownTemplate < Template + DUMB_QUOTES = [39, 39, 34, 34] + + def self.engine_initialized? + defined? ::Kramdown + end + + def initialize_engine + require_template_library 'kramdown' + end + + def prepare + options[:smart_quotes] = DUMB_QUOTES unless options[:smartypants] + @engine = Kramdown::Document.new(data, options) + @output = nil + end + + def evaluate(scope, locals, &block) + @output ||= @engine.to_html + end + end +end + diff --git a/src/main/resources/gems/tilt-1.3.3/lib/tilt/nokogiri.rb b/src/main/resources/gems/tilt-1.3.3/lib/tilt/nokogiri.rb new file mode 100644 index 00000000..d2300639 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/lib/tilt/nokogiri.rb @@ -0,0 +1,43 @@ +require 'tilt/template' + +module Tilt + # Nokogiri template implementation. See: + # http://nokogiri.org/ + class NokogiriTemplate < Template + self.default_mime_type = 'text/xml' + + def self.engine_initialized? + defined? ::Nokogiri + end + + def initialize_engine + require_template_library 'nokogiri' + end + + def prepare; end + + def evaluate(scope, locals, &block) + block &&= proc { yield.gsub(/^<\?xml version=\"1\.0\"\?>\n?/, "") } + + if data.respond_to?(:to_str) + super(scope, locals, &block) + else + ::Nokogiri::XML::Builder.new.tap(&data).to_xml + end + end + + def precompiled_preamble(locals) + return super if locals.include? :xml + "xml = ::Nokogiri::XML::Builder.new { |xml| }\n#{super}" + end + + def precompiled_postamble(locals) + "xml.to_xml" + end + + def precompiled_template(locals) + data.to_str + end + end +end + diff --git a/src/main/resources/gems/tilt-1.3.3/lib/tilt/radius.rb b/src/main/resources/gems/tilt-1.3.3/lib/tilt/radius.rb new file mode 100644 index 00000000..88e1a194 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/lib/tilt/radius.rb @@ -0,0 +1,51 @@ +require 'tilt/template' + +module Tilt + # Radius Template + # http://github.com/jlong/radius/ + class RadiusTemplate < Template + def self.engine_initialized? + defined? ::Radius + end + + def self.context_class + @context_class ||= Class.new(Radius::Context) do + attr_accessor :tilt_scope + + def tag_missing(name, attributes) + tilt_scope.__send__(name) + end + + def dup + i = super + i.tilt_scope = tilt_scope + i + end + end + end + + def initialize_engine + require_template_library 'radius' + end + + def prepare + end + + def evaluate(scope, locals, &block) + context = self.class.context_class.new + context.tilt_scope = scope + context.define_tag("yield") do + block.call + end + locals.each do |tag, value| + context.define_tag(tag) do + value + end + end + + options = {:tag_prefix => 'r'}.merge(@options) + parser = Radius::Parser.new(context, options) + parser.parse(data) + end + end +end diff --git a/src/main/resources/gems/tilt-1.3.3/lib/tilt/rdoc.rb b/src/main/resources/gems/tilt-1.3.3/lib/tilt/rdoc.rb new file mode 100644 index 00000000..cbec4d17 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/lib/tilt/rdoc.rb @@ -0,0 +1,32 @@ +require 'tilt/template' + +module Tilt + # RDoc template. See: + # http://rdoc.rubyforge.org/ + # + # It's suggested that your program require 'rdoc/markup' and + # 'rdoc/markup/to_html' at load time when using this template + # engine. + class RDocTemplate < Template + self.default_mime_type = 'text/html' + + def self.engine_initialized? + defined? ::RDoc::Markup + end + + def initialize_engine + require_template_library 'rdoc/markup' + require_template_library 'rdoc/markup/to_html' + end + + def prepare + markup = RDoc::Markup::ToHtml.new + @engine = markup.convert(data) + @output = nil + end + + def evaluate(scope, locals, &block) + @output ||= @engine.to_s + end + end +end diff --git a/src/main/resources/gems/tilt-1.3.3/lib/tilt/string.rb b/src/main/resources/gems/tilt-1.3.3/lib/tilt/string.rb new file mode 100644 index 00000000..5bc69580 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/lib/tilt/string.rb @@ -0,0 +1,21 @@ +require 'tilt/template' + +module Tilt + # The template source is evaluated as a Ruby string. The #{} interpolation + # syntax can be used to generated dynamic output. + class StringTemplate < Template + def prepare + hash = "TILT#{data.hash.abs}" + @code = "<<#{hash}.chomp\n#{data}\n#{hash}" + end + + def precompiled_template(locals) + @code + end + + def precompiled(locals) + source, offset = super + [source, offset + 1] + end + end +end diff --git a/src/main/resources/gems/tilt-1.3.3/lib/tilt/template.rb b/src/main/resources/gems/tilt-1.3.3/lib/tilt/template.rb new file mode 100644 index 00000000..4852ee0a --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/lib/tilt/template.rb @@ -0,0 +1,285 @@ +module Tilt + TOPOBJECT = defined?(BasicObject) ? BasicObject : Object + + # Base class for template implementations. Subclasses must implement + # the #prepare method and one of the #evaluate or #precompiled_template + # methods. + class Template + # Template source; loaded from a file or given directly. + attr_reader :data + + # The name of the file where the template data was loaded from. + attr_reader :file + + # The line number in #file where template data was loaded from. + attr_reader :line + + # A Hash of template engine specific options. This is passed directly + # to the underlying engine and is not used by the generic template + # interface. + attr_reader :options + + # Used to determine if this class's initialize_engine method has + # been called yet. + @engine_initialized = false + class << self + attr_accessor :engine_initialized + alias engine_initialized? engine_initialized + + attr_accessor :default_mime_type + end + + # Create a new template with the file, line, and options specified. By + # default, template data is read from the file. When a block is given, + # it should read template data and return as a String. When file is nil, + # a block is required. + # + # All arguments are optional. + def initialize(file=nil, line=1, options={}, &block) + @file, @line, @options = nil, 1, {} + + [options, line, file].compact.each do |arg| + case + when arg.respond_to?(:to_str) ; @file = arg.to_str + when arg.respond_to?(:to_int) ; @line = arg.to_int + when arg.respond_to?(:to_hash) ; @options = arg.to_hash.dup + else raise TypeError + end + end + + raise ArgumentError, "file or block required" if (@file || block).nil? + + # call the initialize_engine method if this is the very first time + # an instance of this class has been created. + if !self.class.engine_initialized? + initialize_engine + self.class.engine_initialized = true + end + + # used to hold compiled template methods + @compiled_method = {} + + # used on 1.9 to set the encoding if it is not set elsewhere (like a magic comment) + # currently only used if template compiles to ruby + @default_encoding = @options.delete :default_encoding + + # load template data and prepare (uses binread to avoid encoding issues) + @reader = block || lambda { |t| File.respond_to?(:binread) ? File.binread(@file) : File.read(@file) } + @data = @reader.call(self) + prepare + end + + # Render the template in the given scope with the locals specified. If a + # block is given, it is typically available within the template via + # +yield+. + def render(scope=Object.new, locals={}, &block) + evaluate scope, locals || {}, &block + end + + # The basename of the template file. + def basename(suffix='') + File.basename(file, suffix) if file + end + + # The template file's basename with all extensions chomped off. + def name + basename.split('.', 2).first if basename + end + + # The filename used in backtraces to describe the template. + def eval_file + file || '(__TEMPLATE__)' + end + + protected + # Called once and only once for each template subclass the first time + # the template class is initialized. This should be used to require the + # underlying template library and perform any initial setup. + def initialize_engine + end + + # Like Kernel::require but issues a warning urging a manual require when + # running under a threaded environment. + def require_template_library(name) + if Thread.list.size > 1 + warn "WARN: tilt autoloading '#{name}' in a non thread-safe way; " + + "explicit require '#{name}' suggested." + end + require name + end + + # Do whatever preparation is necessary to setup the underlying template + # engine. Called immediately after template data is loaded. Instance + # variables set in this method are available when #evaluate is called. + # + # Subclasses must provide an implementation of this method. + def prepare + if respond_to?(:compile!) + # backward compat with tilt < 0.6; just in case + warn 'Tilt::Template#compile! is deprecated; implement #prepare instead.' + compile! + else + raise NotImplementedError + end + end + + def evaluate(scope, locals, &block) + cached_evaluate(scope, locals, &block) + end + + # Process the template and return the result. The first time this + # method is called, the template source is evaluated with instance_eval. + # On the sequential method calls it will compile the template to an + # unbound method which will lead to better performance. In any case, + # template executation is guaranteed to be performed in the scope object + # with the locals specified and with support for yielding to the block. + def cached_evaluate(scope, locals, &block) + # Redefine itself to use method compilation the next time: + def self.cached_evaluate(scope, locals, &block) + method = compiled_method(locals.keys) + method.bind(scope).call(locals, &block) + end + + # Use instance_eval the first time: + evaluate_source(scope, locals, &block) + end + + # Generates all template source by combining the preamble, template, and + # postamble and returns a two-tuple of the form: [source, offset], where + # source is the string containing (Ruby) source code for the template and + # offset is the integer line offset where line reporting should begin. + # + # Template subclasses may override this method when they need complete + # control over source generation or want to adjust the default line + # offset. In most cases, overriding the #precompiled_template method is + # easier and more appropriate. + def precompiled(locals) + preamble = precompiled_preamble(locals) + template = precompiled_template(locals) + magic_comment = extract_magic_comment(template) + if magic_comment + # Magic comment e.g. "# coding: utf-8" has to be in the first line. + # So we copy the magic comment to the first line. + preamble = magic_comment + "\n" + preamble + end + parts = [ + preamble, + template, + precompiled_postamble(locals) + ] + [parts.join("\n"), preamble.count("\n") + 1] + end + + # A string containing the (Ruby) source code for the template. The + # default Template#evaluate implementation requires either this method + # or the #precompiled method be overridden. When defined, the base + # Template guarantees correct file/line handling, locals support, custom + # scopes, and support for template compilation when the scope object + # allows it. + def precompiled_template(locals) + raise NotImplementedError + end + + # Generates preamble code for initializing template state, and performing + # locals assignment. The default implementation performs locals + # assignment only. Lines included in the preamble are subtracted from the + # source line offset, so adding code to the preamble does not effect line + # reporting in Kernel::caller and backtraces. + def precompiled_preamble(locals) + locals.map { |k,v| "#{k} = locals[#{k.inspect}]" }.join("\n") + end + + # Generates postamble code for the precompiled template source. The + # string returned from this method is appended to the precompiled + # template source. + def precompiled_postamble(locals) + '' + end + + # The compiled method for the locals keys provided. + def compiled_method(locals_keys) + @compiled_method[locals_keys] ||= + compile_template_method(locals_keys) + end + + private + # Evaluate the template source in the context of the scope object. + def evaluate_source(scope, locals, &block) + source, offset = precompiled(locals) + scope.instance_eval(source, eval_file, line - offset) + end + + # JRuby doesn't allow Object#instance_eval to yield to the block it's + # closed over. This is by design and (ostensibly) something that will + # change in MRI, though no current MRI version tested (1.8.6 - 1.9.2) + # exhibits the behavior. More info here: + # + # http://jira.codehaus.org/browse/JRUBY-2599 + # + # We redefine evaluate_source to work around this issues. + if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby' + undef evaluate_source + def evaluate_source(scope, locals, &block) + source, offset = precompiled(locals) + file, lineno = eval_file, (line - offset) + scope.instance_eval { Kernel::eval(source, binding, file, lineno) } + end + end + + def compile_template_method(locals) + source, offset = precompiled(locals) + offset += 5 + method_name = "__tilt_#{Thread.current.object_id.abs}" + Object.class_eval <<-RUBY, eval_file, line - offset + #{extract_magic_comment source} + TOPOBJECT.class_eval do + def #{method_name}(locals) + Thread.current[:tilt_vars] = [self, locals] + class << self + this, locals = Thread.current[:tilt_vars] + this.instance_eval do + #{source} + end + end + end + end + RUBY + unbind_compiled_method(method_name) + end + + def unbind_compiled_method(method_name) + method = TOPOBJECT.instance_method(method_name) + TOPOBJECT.class_eval { remove_method(method_name) } + method + end + + def extract_magic_comment(script) + comment = script.slice(/\A[ \t]*\#.*coding\s*[=:]\s*([[:alnum:]\-_]+).*$/) + return comment if comment and not %w[ascii-8bit binary].include?($1.downcase) + "# coding: #{@default_encoding}" if @default_encoding + end + + # Special case Ruby 1.9.1's broken yield. + # + # http://github.com/rtomayko/tilt/commit/20c01a5 + # http://redmine.ruby-lang.org/issues/show/3601 + # + # Remove when 1.9.2 dominates 1.9.1 installs in the wild. + if RUBY_VERSION =~ /^1.9.1/ + undef compile_template_method + def compile_template_method(locals) + source, offset = precompiled(locals) + offset += 1 + method_name = "__tilt_#{Thread.current.object_id}" + Object.class_eval <<-RUBY, eval_file, line - offset + TOPOBJECT.class_eval do + def #{method_name}(locals) + #{source} + end + end + RUBY + unbind_compiled_method(method_name) + end + end + end +end diff --git a/src/main/resources/gems/tilt-1.3.3/lib/tilt/textile.rb b/src/main/resources/gems/tilt-1.3.3/lib/tilt/textile.rb new file mode 100644 index 00000000..fd4f4c13 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/lib/tilt/textile.rb @@ -0,0 +1,25 @@ +require 'tilt/template' + +module Tilt + # RedCloth implementation. See: + # http://redcloth.org/ + class RedClothTemplate < Template + def self.engine_initialized? + defined? ::RedCloth + end + + def initialize_engine + require_template_library 'redcloth' + end + + def prepare + @engine = RedCloth.new(data) + @output = nil + end + + def evaluate(scope, locals, &block) + @output ||= @engine.to_html + end + end +end + diff --git a/src/main/resources/gems/tilt-1.3.3/lib/tilt/wiki.rb b/src/main/resources/gems/tilt-1.3.3/lib/tilt/wiki.rb new file mode 100644 index 00000000..dd1f2852 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/lib/tilt/wiki.rb @@ -0,0 +1,50 @@ +require 'tilt/template' + +module Tilt + # Creole implementation. See: + # http://www.wikicreole.org/ + class CreoleTemplate < Template + def self.engine_initialized? + defined? ::Creole + end + + def initialize_engine + require_template_library 'creole' + end + + def prepare + opts = {} + [:allowed_schemes, :extensions, :no_escape].each do |k| + opts[k] = options[k] if options[k] + end + @engine = Creole::Parser.new(data, opts) + @output = nil + end + + def evaluate(scope, locals, &block) + @output ||= @engine.to_html + end + end + + # WikiCloth implementation. See: + # http://redcloth.org/ + class WikiClothTemplate < Template + def self.engine_initialized? + defined? ::WikiCloth::Parser + end + + def initialize_engine + require_template_library 'wikicloth' + end + + def prepare + @parser = options.delete(:parser) || WikiCloth::Parser + @engine = @parser.new options.merge(:data => data) + @output = nil + end + + def evaluate(scope, locals, &block) + @output ||= @engine.to_html + end + end +end diff --git a/src/main/resources/gems/tilt-1.3.3/lib/tilt/yajl.rb b/src/main/resources/gems/tilt-1.3.3/lib/tilt/yajl.rb new file mode 100644 index 00000000..0b9b7023 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/lib/tilt/yajl.rb @@ -0,0 +1,94 @@ +require 'tilt/template' + +module Tilt + + # Yajl Template implementation + # + # Yajl is a fast JSON parsing and encoding library for Ruby + # See https://github.com/brianmario/yajl-ruby + # + # The template source is evaluated as a Ruby string, + # and the result is converted #to_json. + # + # == Example + # + # # This is a template example. + # # The template can contain any Ruby statement. + # tpl <<-EOS + # @counter = 0 + # + # # The json variable represents the buffer + # # and holds the data to be serialized into json. + # # It defaults to an empty hash, but you can override it at any time. + # json = { + # :"user#{@counter += 1}" => { :name => "Joshua Peek", :id => @counter }, + # :"user#{@counter += 1}" => { :name => "Ryan Tomayko", :id => @counter }, + # :"user#{@counter += 1}" => { :name => "Simone Carletti", :id => @counter }, + # } + # + # # Since the json variable is a Hash, + # # you can use conditional statements or any other Ruby statement + # # to populate it. + # json[:"user#{@counter += 1}"] = { :name => "Unknown" } if 1 == 2 + # + # # The last line doesn't affect the returned value. + # nil + # EOS + # + # template = Tilt::YajlTemplate.new { tpl } + # template.render(self) + # + class YajlTemplate < Template + + self.default_mime_type = 'application/json' + + def self.engine_initialized? + defined? ::Yajl + end + + def initialize_engine + require_template_library 'yajl' + end + + def prepare + end + + def evaluate(scope, locals, &block) + decorate super(scope, locals, &block) + end + + def precompiled_preamble(locals) + return super if locals.include? :json + "json = {}\n#{super}" + end + + def precompiled_postamble(locals) + "Yajl::Encoder.new.encode(json)" + end + + def precompiled_template(locals) + data.to_str + end + + + # Decorates the +json+ input according to given +options+. + # + # json - The json String to decorate. + # options - The option Hash to customize the behavior. + # + # Returns the decorated String. + def decorate(json) + callback, variable = options[:callback], options[:variable] + if callback && variable + "var #{variable} = #{json}; #{callback}(#{variable});" + elsif variable + "var #{variable} = #{json};" + elsif callback + "#{callback}(#{json});" + else + json + end + end + end + +end diff --git a/src/main/resources/gems/tilt-1.3.3/test/contest.rb b/src/main/resources/gems/tilt-1.3.3/test/contest.rb new file mode 100644 index 00000000..075f9412 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/contest.rb @@ -0,0 +1,68 @@ +require "test/unit" + +# Test::Unit loads a default test if the suite is empty, whose purpose is to +# fail. Since having empty contexts is a common practice, we decided to +# overwrite TestSuite#empty? in order to allow them. Having a failure when no +# tests have been defined seems counter-intuitive. +class Test::Unit::TestSuite + def empty? + false + end +end + +# Contest adds +teardown+, +test+ and +context+ as class methods, and the +# instance methods +setup+ and +teardown+ now iterate on the corresponding +# blocks. Note that all setup and teardown blocks must be defined with the +# block syntax. Adding setup or teardown instance methods defeats the purpose +# of this library. +class Test::Unit::TestCase + def self.setup(&block) + define_method :setup do + super(&block) + instance_eval(&block) + end + end + + def self.teardown(&block) + define_method :teardown do + instance_eval(&block) + super(&block) + end + end + + def self.context(name, &block) + subclass = Class.new(self) + remove_tests(subclass) + subclass.class_eval(&block) if block_given? + const_set(context_name(name), subclass) + end + + def self.test(name, &block) + define_method(test_name(name), &block) + end + + class << self + alias_method :should, :test + alias_method :describe, :context + end + +private + + def self.context_name(name) + "Test#{sanitize_name(name).gsub(/(^| )(\w)/) { $2.upcase }}".to_sym + end + + def self.test_name(name) + "test_#{sanitize_name(name).gsub(/\s+/,'_')}".to_sym + end + + def self.sanitize_name(name) + name.gsub(/\W+/, ' ').strip + end + + def self.remove_tests(subclass) + subclass.public_instance_methods.grep(/^test_/).each do |meth| + subclass.send(:undef_method, meth.to_sym) + end + end +end diff --git a/src/main/resources/gems/tilt-1.3.3/test/markaby/locals.mab b/src/main/resources/gems/tilt-1.3.3/test/markaby/locals.mab new file mode 100644 index 00000000..36e29e69 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/markaby/locals.mab @@ -0,0 +1 @@ +li foo diff --git a/src/main/resources/gems/tilt-1.3.3/test/markaby/markaby.mab b/src/main/resources/gems/tilt-1.3.3/test/markaby/markaby.mab new file mode 100644 index 00000000..45f3fe47 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/markaby/markaby.mab @@ -0,0 +1 @@ +text "hello from markaby!" diff --git a/src/main/resources/gems/tilt-1.3.3/test/markaby/markaby_other_static.mab b/src/main/resources/gems/tilt-1.3.3/test/markaby/markaby_other_static.mab new file mode 100644 index 00000000..75c03fd5 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/markaby/markaby_other_static.mab @@ -0,0 +1 @@ +text "_why?" diff --git a/src/main/resources/gems/tilt-1.3.3/test/markaby/render_twice.mab b/src/main/resources/gems/tilt-1.3.3/test/markaby/render_twice.mab new file mode 100644 index 00000000..f3503229 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/markaby/render_twice.mab @@ -0,0 +1 @@ +text "foo" diff --git a/src/main/resources/gems/tilt-1.3.3/test/markaby/scope.mab b/src/main/resources/gems/tilt-1.3.3/test/markaby/scope.mab new file mode 100644 index 00000000..36e29e69 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/markaby/scope.mab @@ -0,0 +1 @@ +li foo diff --git a/src/main/resources/gems/tilt-1.3.3/test/markaby/yielding.mab b/src/main/resources/gems/tilt-1.3.3/test/markaby/yielding.mab new file mode 100644 index 00000000..6e95a1b7 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/markaby/yielding.mab @@ -0,0 +1,2 @@ +text("Hey ") +yield diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_blueclothtemplate_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_blueclothtemplate_test.rb new file mode 100644 index 00000000..44781ea8 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_blueclothtemplate_test.rb @@ -0,0 +1,45 @@ +require 'contest' +require 'tilt' + +begin + require 'bluecloth' + + class BlueClothTemplateTest < Test::Unit::TestCase + test "registered for '.md' files" do + assert Tilt.mappings['md'].include?(Tilt::BlueClothTemplate) + end + + test "registered for '.mkd' files" do + assert Tilt.mappings['mkd'].include?(Tilt::BlueClothTemplate) + end + + test "registered for '.markdown' files" do + assert Tilt.mappings['markdown'].include?(Tilt::BlueClothTemplate) + end + + test "preparing and evaluating templates on #render" do + template = Tilt::BlueClothTemplate.new { |t| "# Hello World!" } + assert_equal "

Hello World!

", template.render + end + + test "can be rendered more than once" do + template = Tilt::BlueClothTemplate.new { |t| "# Hello World!" } + 3.times { assert_equal "

Hello World!

", template.render } + end + + test "smartypants when :smart is set" do + template = Tilt::BlueClothTemplate.new(:smartypants => true) { |t| + "OKAY -- 'Smarty Pants'" } + assert_equal "

OKAY — ‘Smarty Pants’

", + template.render + end + + test "stripping HTML when :filter_html is set" do + template = Tilt::BlueClothTemplate.new(:escape_html => true) { |t| + "HELLO WORLD" } + assert_equal "

HELLO <blink>WORLD</blink>

", template.render + end + end +rescue LoadError => boom + warn "Tilt::BlueClothTemplate (disabled)\n" +end diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_buildertemplate_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_buildertemplate_test.rb new file mode 100644 index 00000000..44d8debf --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_buildertemplate_test.rb @@ -0,0 +1,59 @@ +require 'contest' +require 'tilt' + +begin + require 'builder' + class BuilderTemplateTest < Test::Unit::TestCase + test "registered for '.builder' files" do + assert_equal Tilt::BuilderTemplate, Tilt['test.builder'] + assert_equal Tilt::BuilderTemplate, Tilt['test.xml.builder'] + end + + test "preparing and evaluating the template on #render" do + template = Tilt::BuilderTemplate.new { |t| "xml.em 'Hello World!'" } + assert_equal "Hello World!\n", template.render + end + + test "can be rendered more than once" do + template = Tilt::BuilderTemplate.new { |t| "xml.em 'Hello World!'" } + 3.times { assert_equal "Hello World!\n", template.render } + end + + test "passing locals" do + template = Tilt::BuilderTemplate.new { "xml.em('Hey ' + name + '!')" } + assert_equal "Hey Joe!\n", template.render(Object.new, :name => 'Joe') + end + + test "evaluating in an object scope" do + template = Tilt::BuilderTemplate.new { "xml.em('Hey ' + @name + '!')" } + scope = Object.new + scope.instance_variable_set :@name, 'Joe' + assert_equal "Hey Joe!\n", template.render(scope) + end + + test "passing a block for yield" do + template = Tilt::BuilderTemplate.new { "xml.em('Hey ' + yield + '!')" } + 3.times { assert_equal "Hey Joe!\n", template.render { 'Joe' }} + end + + test "block style templates" do + template = + Tilt::BuilderTemplate.new do |t| + lambda { |xml| xml.em('Hey Joe!') } + end + assert_equal "Hey Joe!\n", template.render + end + + test "allows nesting raw XML" do + subtemplate = Tilt::BuilderTemplate.new { "xml.em 'Hello World!'" } + template = Tilt::BuilderTemplate.new { "xml.strong { xml << yield }" } + 3.times do + options = { :xml => Builder::XmlMarkup.new } + assert_equal "\nHello World!\n\n", + template.render(options) { subtemplate.render(options) } + end + end + end +rescue LoadError + warn "Tilt::BuilderTemplate (disabled)" +end diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_cache_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_cache_test.rb new file mode 100644 index 00000000..8c8e050c --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_cache_test.rb @@ -0,0 +1,32 @@ +require 'contest' +require 'tilt' + +class TiltCacheTest < Test::Unit::TestCase + setup { @cache = Tilt::Cache.new } + + test "caching with single simple argument to #fetch" do + template = nil + result = @cache.fetch('hello') { template = Tilt::StringTemplate.new {''} } + assert_same template, result + result = @cache.fetch('hello') { fail 'should be cached' } + assert_same template, result + end + + test "caching with multiple complex arguments to #fetch" do + template = nil + result = @cache.fetch('hello', {:foo => 'bar', :baz => 'bizzle'}) { template = Tilt::StringTemplate.new {''} } + assert_same template, result + result = @cache.fetch('hello', {:foo => 'bar', :baz => 'bizzle'}) { fail 'should be cached' } + assert_same template, result + end + + test "clearing the cache with #clear" do + template, other = nil + result = @cache.fetch('hello') { template = Tilt::StringTemplate.new {''} } + assert_same template, result + + @cache.clear + result = @cache.fetch('hello') { other = Tilt::StringTemplate.new {''} } + assert_same other, result + end +end diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_coffeescripttemplate_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_coffeescripttemplate_test.rb new file mode 100644 index 00000000..d32f3881 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_coffeescripttemplate_test.rb @@ -0,0 +1,61 @@ +require 'contest' +require 'tilt' + +begin + require 'coffee_script' + + class CoffeeScriptTemplateTest < Test::Unit::TestCase + test "is registered for '.coffee' files" do + assert_equal Tilt::CoffeeScriptTemplate, Tilt['test.coffee'] + end + + test "compiles and evaluates the template on #render" do + template = Tilt::CoffeeScriptTemplate.new { |t| "puts 'Hello, World!'\n" } + assert_match "puts('Hello, World!');", template.render + end + + test "can be rendered more than once" do + template = Tilt::CoffeeScriptTemplate.new { |t| "puts 'Hello, World!'\n" } + 3.times { assert_match "puts('Hello, World!');", template.render } + end + + test "disabling coffee-script wrapper" do + str = "puts 'Hello, World!'\n" + + template = Tilt::CoffeeScriptTemplate.new(:bare => true) { str } + assert_equal "puts('Hello, World!');", template.render + + template2 = Tilt::CoffeeScriptTemplate.new(:no_wrap => true) { str} + assert_equal "puts('Hello, World!');", template.render + end + + context "disabling coffee-script wrapper globally" do + setup do + @bare = Tilt::CoffeeScriptTemplate.default_bare + end + + teardown do + Tilt::CoffeeScriptTemplate.default_bare = @bare + end + + test "no options" do + template = Tilt::CoffeeScriptTemplate.new { |t| "puts 'Hello, World!'\n" } + assert_match "puts('Hello, World!');", template.render + assert_match "(function() {", template.render + end + + test "overridden by :bare" do + template = Tilt::CoffeeScriptTemplate.new(:bare => false) { "puts 'Hello, World!'\n" } + assert_not_equal "puts('Hello, World!');", template.render + end + + test "overridden by :no_wrap" do + template = Tilt::CoffeeScriptTemplate.new(:no_wrap => false) { "puts 'Hello, World!'\n" } + assert_not_equal "puts('Hello, World!');", template.render + end + end + end + +rescue LoadError => boom + warn "Tilt::CoffeeScriptTemplate (disabled)\n" +end diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_compilesite_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_compilesite_test.rb new file mode 100644 index 00000000..2944c842 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_compilesite_test.rb @@ -0,0 +1,51 @@ +require 'contest' +require 'tilt' +require 'thread' + +class CompileSiteTest < Test::Unit::TestCase + def setup + GC.start + end + + class CompilingTemplate < Tilt::Template + def prepare + end + + def precompiled_template(locals) + @data.inspect + end + end + + class Scope + end + + test "compiling template source to a method" do + template = CompilingTemplate.new { |t| "Hello World!" } + template.render(Scope.new) + method = template.send(:compiled_method, []) + assert_kind_of UnboundMethod, method + end + + # This test attempts to surface issues with compiling templates from + # multiple threads. + test "using compiled templates from multiple threads" do + template = CompilingTemplate.new { 'template' } + main_thread = Thread.current + 10.times do |i| + threads = + (1..50).map do |j| + Thread.new { + begin + locals = { "local#{i}" => 'value' } + res = template.render(self, locals) + thread_id = Thread.current.object_id + res = template.render(self, "local#{thread_id.abs.to_s}" => 'value') + rescue => boom + main_thread.raise(boom) + end + } + end + threads.each { |t| t.join } + end + end +end diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_creoletemplate_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_creoletemplate_test.rb new file mode 100644 index 00000000..5ef900fd --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_creoletemplate_test.rb @@ -0,0 +1,28 @@ +require 'contest' +require 'tilt' + +begin + require 'creole' + + class CreoleTemplateTest < Test::Unit::TestCase + test "is registered for '.creole' files" do + assert_equal Tilt::CreoleTemplate, Tilt['test.creole'] + end + + test "registered for '.wiki' files" do + assert Tilt.mappings['wiki'].include?(Tilt::CreoleTemplate) + end + + test "compiles and evaluates the template on #render" do + template = Tilt::CreoleTemplate.new { |t| "= Hello World!" } + assert_equal "

Hello World!

", template.render + end + + test "can be rendered more than once" do + template = Tilt::CreoleTemplate.new { |t| "= Hello World!" } + 3.times { assert_equal "

Hello World!

", template.render } + end + end +rescue LoadError => boom + warn "Tilt::CreoleTemplate (disabled)\n" +end diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_erbtemplate_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_erbtemplate_test.rb new file mode 100644 index 00000000..88be9bdf --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_erbtemplate_test.rb @@ -0,0 +1,234 @@ +# coding: utf-8 +require 'contest' +require 'tilt' +require 'erb' +require 'tempfile' + +class ERBTemplateTest < Test::Unit::TestCase + test "registered for '.erb' files" do + assert Tilt.mappings['erb'].include?(Tilt::ERBTemplate) + end + + test "registered for '.rhtml' files" do + assert Tilt.mappings['rhtml'].include?(Tilt::ERBTemplate) + end + + test "loading and evaluating templates on #render" do + template = Tilt::ERBTemplate.new { |t| "Hello World!" } + assert_equal "Hello World!", template.render + end + + test "can be rendered more than once" do + template = Tilt::ERBTemplate.new { |t| "Hello World!" } + 3.times { assert_equal "Hello World!", template.render } + end + + test "passing locals" do + template = Tilt::ERBTemplate.new { 'Hey <%= name %>!' } + assert_equal "Hey Joe!", template.render(Object.new, :name => 'Joe') + end + + test "evaluating in an object scope" do + template = Tilt::ERBTemplate.new { 'Hey <%= @name %>!' } + scope = Object.new + scope.instance_variable_set :@name, 'Joe' + assert_equal "Hey Joe!", template.render(scope) + end + + class MockOutputVariableScope + attr_accessor :exposed_buffer + end + + test "exposing the buffer to the template by default" do + begin + Tilt::ERBTemplate.default_output_variable = '@_out_buf' + template = Tilt::ERBTemplate.new { '<% self.exposed_buffer = @_out_buf %>hey' } + scope = MockOutputVariableScope.new + template.render(scope) + assert_not_nil scope.exposed_buffer + assert_equal scope.exposed_buffer, 'hey' + ensure + Tilt::ERBTemplate.default_output_variable = '_erbout' + end + end + + test "passing a block for yield" do + template = Tilt::ERBTemplate.new { 'Hey <%= yield %>!' } + assert_equal "Hey Joe!", template.render { 'Joe' } + end + + test "backtrace file and line reporting without locals" do + data = File.read(__FILE__).split("\n__END__\n").last + fail unless data[0] == ?< + template = Tilt::ERBTemplate.new('test.erb', 11) { data } + begin + template.render + fail 'should have raised an exception' + rescue => boom + assert_kind_of NameError, boom + line = boom.backtrace.grep(/^test\.erb:/).first + assert line, "Backtrace didn't contain test.erb" + file, line, meth = line.split(":") + assert_equal '13', line + end + end + + test "backtrace file and line reporting with locals" do + data = File.read(__FILE__).split("\n__END__\n").last + fail unless data[0] == ?< + template = Tilt::ERBTemplate.new('test.erb', 1) { data } + begin + template.render(nil, :name => 'Joe', :foo => 'bar') + fail 'should have raised an exception' + rescue => boom + assert_kind_of RuntimeError, boom + line = boom.backtrace.first + file, line, meth = line.split(":") + assert_equal 'test.erb', file + assert_equal '6', line + end + end + + test "default stripping trim mode" do + template = Tilt::ERBTemplate.new('test.erb', 1) { "\n<%= 1 + 1 %>\n" } + assert_equal "\n2", template.render + end + + test "stripping trim mode" do + template = Tilt::ERBTemplate.new('test.erb', 1, :trim => '-') { "\n<%= 1 + 1 -%>\n" } + assert_equal "\n2", template.render + end + + test "shorthand whole line syntax trim mode" do + template = Tilt::ERBTemplate.new('test.erb', :trim => '%') { "\n% if true\nhello\n%end\n" } + assert_equal "\nhello\n", template.render + end + + test "using an instance variable as the outvar" do + template = Tilt::ERBTemplate.new(nil, :outvar => '@buf') { "<%= 1 + 1 %>" } + scope = Object.new + scope.instance_variable_set(:@buf, 'original value') + assert_equal '2', template.render(scope) + assert_equal 'original value', scope.instance_variable_get(:@buf) + end +end + +class CompiledERBTemplateTest < Test::Unit::TestCase + def teardown + GC.start + end + + class Scope + end + + test "compiling template source to a method" do + template = Tilt::ERBTemplate.new { |t| "Hello World!" } + template.render(Scope.new) + method = template.send(:compiled_method, []) + assert_kind_of UnboundMethod, method + end + + test "loading and evaluating templates on #render" do + template = Tilt::ERBTemplate.new { |t| "Hello World!" } + assert_equal "Hello World!", template.render(Scope.new) + assert_equal "Hello World!", template.render(Scope.new) + end + + test "passing locals" do + template = Tilt::ERBTemplate.new { 'Hey <%= name %>!' } + assert_equal "Hey Joe!", template.render(Scope.new, :name => 'Joe') + end + + test "evaluating in an object scope" do + template = Tilt::ERBTemplate.new { 'Hey <%= @name %>!' } + scope = Scope.new + scope.instance_variable_set :@name, 'Joe' + assert_equal "Hey Joe!", template.render(scope) + scope.instance_variable_set :@name, 'Jane' + assert_equal "Hey Jane!", template.render(scope) + end + + test "passing a block for yield" do + template = Tilt::ERBTemplate.new { 'Hey <%= yield %>!' } + assert_equal "Hey Joe!", template.render(Scope.new) { 'Joe' } + assert_equal "Hey Jane!", template.render(Scope.new) { 'Jane' } + end + + test "backtrace file and line reporting without locals" do + data = File.read(__FILE__).split("\n__END__\n").last + fail unless data[0] == ?< + template = Tilt::ERBTemplate.new('test.erb', 11) { data } + begin + template.render(Scope.new) + fail 'should have raised an exception' + rescue => boom + assert_kind_of NameError, boom + line = boom.backtrace.grep(/^test\.erb:/).first + assert line, "Backtrace didn't contain test.erb" + file, line, meth = line.split(":") + assert_equal '13', line + end + end + + test "backtrace file and line reporting with locals" do + data = File.read(__FILE__).split("\n__END__\n").last + fail unless data[0] == ?< + template = Tilt::ERBTemplate.new('test.erb') { data } + begin + template.render(Scope.new, :name => 'Joe', :foo => 'bar') + fail 'should have raised an exception' + rescue => boom + assert_kind_of RuntimeError, boom + line = boom.backtrace.first + file, line, meth = line.split(":") + assert_equal 'test.erb', file + assert_equal '6', line + end + end + + test "default stripping trim mode" do + template = Tilt::ERBTemplate.new('test.erb') { "\n<%= 1 + 1 %>\n" } + assert_equal "\n2", template.render(Scope.new) + end + + test "stripping trim mode" do + template = Tilt::ERBTemplate.new('test.erb', :trim => '-') { "\n<%= 1 + 1 -%>\n" } + assert_equal "\n2", template.render(Scope.new) + end + + test "shorthand whole line syntax trim mode" do + template = Tilt::ERBTemplate.new('test.erb', :trim => '%') { "\n% if true\nhello\n%end\n" } + assert_equal "\nhello\n", template.render(Scope.new) + end + + test "encoding with magic comment" do + f = Tempfile.open("template") + f.puts('<%# coding: UTF-8 %>') + f.puts('ふが <%= @hoge %>') + f.close() + @hoge = "ほげ" + erb = Tilt::ERBTemplate.new(f.path) + 3.times { erb.render(self) } + f.delete + end + + test "encoding with :default_encoding" do + f = Tempfile.open("template") + f.puts('ふが <%= @hoge %>') + f.close() + @hoge = "ほげ" + erb = Tilt::ERBTemplate.new(f.path, :default_encoding => 'UTF-8') + 3.times { erb.render(self) } + f.delete + end +end + +__END__ + + +

Hey <%= name %>!

+ + +

<% fail %>

+ + diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_erubistemplate_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_erubistemplate_test.rb new file mode 100644 index 00000000..87d760a4 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_erubistemplate_test.rb @@ -0,0 +1,151 @@ +require 'contest' +require 'tilt' + +begin + require 'erubis' + class ErubisTemplateTest < Test::Unit::TestCase + test "registered for '.erubis' files" do + assert_equal Tilt::ErubisTemplate, Tilt['test.erubis'] + assert_equal Tilt::ErubisTemplate, Tilt['test.html.erubis'] + end + + test "registered above ERB" do + %w[erb rhtml].each do |ext| + mappings = Tilt.mappings[ext] + erubis_idx = mappings.index(Tilt::ErubisTemplate) + erb_idx = mappings.index(Tilt::ERBTemplate) + assert erubis_idx < erb_idx, + "#{erubis_idx} should be lower than #{erb_idx}" + end + end + + test "preparing and evaluating templates on #render" do + template = Tilt::ErubisTemplate.new { |t| "Hello World!" } + assert_equal "Hello World!", template.render + end + + test "can be rendered more than once" do + template = Tilt::ErubisTemplate.new { |t| "Hello World!" } + 3.times { assert_equal "Hello World!", template.render } + end + + test "passing locals" do + template = Tilt::ErubisTemplate.new { 'Hey <%= name %>!' } + assert_equal "Hey Joe!", template.render(Object.new, :name => 'Joe') + end + + test "evaluating in an object scope" do + template = Tilt::ErubisTemplate.new { 'Hey <%= @name %>!' } + scope = Object.new + scope.instance_variable_set :@name, 'Joe' + assert_equal "Hey Joe!", template.render(scope) + end + + class MockOutputVariableScope + attr_accessor :exposed_buffer + end + + test "exposing the buffer to the template by default" do + begin + Tilt::ErubisTemplate.default_output_variable = '@_out_buf' + template = Tilt::ErubisTemplate.new { '<% self.exposed_buffer = @_out_buf %>hey' } + scope = MockOutputVariableScope.new + template.render(scope) + assert_not_nil scope.exposed_buffer + assert_equal scope.exposed_buffer, 'hey' + ensure + Tilt::ErubisTemplate.default_output_variable = '_erbout' + end + end + + test "passing a block for yield" do + template = Tilt::ErubisTemplate.new { 'Hey <%= yield %>!' } + assert_equal "Hey Joe!", template.render { 'Joe' } + end + + test "backtrace file and line reporting without locals" do + data = File.read(__FILE__).split("\n__END__\n").last + fail unless data[0] == ?< + template = Tilt::ErubisTemplate.new('test.erubis', 11) { data } + begin + template.render + fail 'should have raised an exception' + rescue => boom + assert_kind_of NameError, boom + line = boom.backtrace.grep(/^test\.erubis:/).first + assert line, "Backtrace didn't contain test.erubis" + file, line, meth = line.split(":") + assert_equal '13', line + end + end + + test "backtrace file and line reporting with locals" do + data = File.read(__FILE__).split("\n__END__\n").last + fail unless data[0] == ?< + template = Tilt::ErubisTemplate.new('test.erubis', 1) { data } + begin + template.render(nil, :name => 'Joe', :foo => 'bar') + fail 'should have raised an exception' + rescue => boom + assert_kind_of RuntimeError, boom + line = boom.backtrace.first + file, line, meth = line.split(":") + assert_equal 'test.erubis', file + assert_equal '6', line + end + end + + test "erubis template options" do + template = Tilt::ErubisTemplate.new(nil, :pattern => '\{% %\}') { 'Hey {%= @name %}!' } + scope = Object.new + scope.instance_variable_set :@name, 'Joe' + assert_equal "Hey Joe!", template.render(scope) + end + + test "using an instance variable as the outvar" do + template = Tilt::ErubisTemplate.new(nil, :outvar => '@buf') { "<%= 1 + 1 %>" } + scope = Object.new + scope.instance_variable_set(:@buf, 'original value') + assert_equal '2', template.render(scope) + assert_equal 'original value', scope.instance_variable_get(:@buf) + end + + test "using Erubis::EscapedEruby subclass via :engine_class option" do + template = Tilt::ErubisTemplate.new(nil, :engine_class => ::Erubis::EscapedEruby) { |t| %(<%= "

Hello World!

" %>) } + assert_equal "<p>Hello World!</p>", template.render + end + + test "using :escape_html => true option" do + template = Tilt::ErubisTemplate.new(nil, :escape_html => true) { |t| %(<%= "

Hello World!

" %>) } + assert_equal "<p>Hello World!</p>", template.render + end + + test "using :escape_html => false option" do + template = Tilt::ErubisTemplate.new(nil, :escape_html => false) { |t| %(<%= "

Hello World!

" %>) } + assert_equal "

Hello World!

", template.render + end + + test "erubis default does not escape html" do + template = Tilt::ErubisTemplate.new { |t| %(<%= "

Hello World!

" %>) } + assert_equal "

Hello World!

", template.render + end + + test "does not modify options argument" do + options_hash = {:escape_html => true} + template = Tilt::ErubisTemplate.new(nil, options_hash) { |t| "Hello World!" } + assert_equal({:escape_html => true}, options_hash) + end + end +rescue LoadError => boom + warn "Tilt::ErubisTemplate (disabled)\n" +end + +__END__ + + +

Hey <%= name %>!

+ + +

<% fail %>

+ + diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_fallback_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_fallback_test.rb new file mode 100644 index 00000000..9e6d020b --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_fallback_test.rb @@ -0,0 +1,122 @@ +require 'contest' +require 'tilt' + +class TiltFallbackTest < Test::Unit::TestCase + class FailTemplate < Tilt::Template + def self.engine_initialized?; false end + def prepare; end + + def initialize_engine + raise LoadError, "can't load #{self.class}" + end + end + + class WinTemplate < Tilt::Template + def self.engine_initialized?; true end + def prepare; end + end + + FailTemplate2 = Class.new(FailTemplate) + WinTemplate2 = Class.new(WinTemplate) + + def set_ivar(obj, name, value) + obj.instance_variable_set("@#{name}", value) + end + + def clear_ivar(obj, name) + ivar = "@#{name}" + value = obj.instance_variable_get(ivar) + ensure + obj.instance_variable_set(ivar, value.dup.clear) + end + + setup do + # Make sure every test have no mappings. + @p = clear_ivar(Tilt, :preferred_mappings) + @t = clear_ivar(Tilt, :template_mappings) + end + + teardown do + set_ivar(Tilt, :preferred_mappings, @p) + set_ivar(Tilt, :template_mappings, @t) + end + + test "returns nil on unregistered extensions" do + template = Tilt["md"] + assert_equal nil, template + end + + test "returns the last registered template" do + Tilt.register("md", WinTemplate) + Tilt.register("md", WinTemplate2) + + template = Tilt["md"] + assert_equal WinTemplate2, template + end + + test "returns the last registered working template" do + Tilt.register("md", WinTemplate) + Tilt.register("md", FailTemplate) + + template = Tilt["md"] + assert_equal WinTemplate, template + end + + test "if every template fails, raise the exception from the first template" do + Tilt.register("md", FailTemplate) + Tilt.register("md", FailTemplate2) + + exc = assert_raise(LoadError) { Tilt["md"] } + assert_match /FailTemplate2/, exc.message + end + + test ".prefer should also register the template" do + Tilt.prefer(WinTemplate, "md") + assert Tilt.registered?("md") + end + + test ".prefer always win" do + Tilt.register("md", FailTemplate) + Tilt.register("md", WinTemplate) + Tilt.prefer(FailTemplate, "md") + + template = Tilt["md"] + assert_equal FailTemplate, template + end + + test ".prefer accepts multiple extensions" do + extensions = %w[md mkd markdown] + Tilt.prefer(FailTemplate, *extensions) + + extensions.each do |ext| + template = Tilt[ext] + assert_equal FailTemplate, template + end + end + + test ".prefer with no extension should use already registered extensions" do + extensions = %w[md mkd markdown] + + extensions.each do |ext| + Tilt.register(ext, FailTemplate) + Tilt.register(ext, WinTemplate) + end + + Tilt.prefer(FailTemplate) + + extensions.each do |ext| + template = Tilt[ext] + assert_equal FailTemplate, template + end + end + + test ".prefer should only override extensions the preferred library is registered for" do + Tilt.register("md", WinTemplate) + Tilt.register("mkd", FailTemplate) + Tilt.register("mkd", WinTemplate) + Tilt.prefer(FailTemplate) + assert_equal FailTemplate, Tilt["mkd"] + assert_equal WinTemplate, Tilt["md"] + end +end + diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_hamltemplate_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_hamltemplate_test.rb new file mode 100644 index 00000000..fcdaad2f --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_hamltemplate_test.rb @@ -0,0 +1,144 @@ +require 'contest' +require 'tilt' + +begin + class ::MockError < NameError + end + + require 'haml' + + class HamlTemplateTest < Test::Unit::TestCase + test "registered for '.haml' files" do + assert_equal Tilt::HamlTemplate, Tilt['test.haml'] + end + + test "preparing and evaluating templates on #render" do + template = Tilt::HamlTemplate.new { |t| "%p Hello World!" } + assert_equal "

Hello World!

\n", template.render + end + + test "can be rendered more than once" do + template = Tilt::HamlTemplate.new { |t| "%p Hello World!" } + 3.times { assert_equal "

Hello World!

\n", template.render } + end + + test "passing locals" do + template = Tilt::HamlTemplate.new { "%p= 'Hey ' + name + '!'" } + assert_equal "

Hey Joe!

\n", template.render(Object.new, :name => 'Joe') + end + + test "evaluating in an object scope" do + template = Tilt::HamlTemplate.new { "%p= 'Hey ' + @name + '!'" } + scope = Object.new + scope.instance_variable_set :@name, 'Joe' + assert_equal "

Hey Joe!

\n", template.render(scope) + end + + test "passing a block for yield" do + template = Tilt::HamlTemplate.new { "%p= 'Hey ' + yield + '!'" } + assert_equal "

Hey Joe!

\n", template.render { 'Joe' } + end + + test "backtrace file and line reporting without locals" do + data = File.read(__FILE__).split("\n__END__\n").last + fail unless data[0] == ?% + template = Tilt::HamlTemplate.new('test.haml', 10) { data } + begin + template.render + fail 'should have raised an exception' + rescue => boom + assert_kind_of NameError, boom + line = boom.backtrace.grep(/^test\.haml:/).first + assert line, "Backtrace didn't contain test.haml" + file, line, meth = line.split(":") + assert_equal '12', line + end + end + + test "backtrace file and line reporting with locals" do + data = File.read(__FILE__).split("\n__END__\n").last + fail unless data[0] == ?% + template = Tilt::HamlTemplate.new('test.haml') { data } + begin + res = template.render(Object.new, :name => 'Joe', :foo => 'bar') + rescue => boom + assert_kind_of MockError, boom + line = boom.backtrace.first + file, line, meth = line.split(":") + assert_equal 'test.haml', file + assert_equal '5', line + end + end + end + + class CompiledHamlTemplateTest < Test::Unit::TestCase + class Scope + end + + test "compiling template source to a method" do + template = Tilt::HamlTemplate.new { |t| "Hello World!" } + template.render(Scope.new) + method = template.send(:compiled_method, []) + assert_kind_of UnboundMethod, method + end + + test "passing locals" do + template = Tilt::HamlTemplate.new { "%p= 'Hey ' + name + '!'" } + assert_equal "

Hey Joe!

\n", template.render(Scope.new, :name => 'Joe') + end + + test "evaluating in an object scope" do + template = Tilt::HamlTemplate.new { "%p= 'Hey ' + @name + '!'" } + scope = Scope.new + scope.instance_variable_set :@name, 'Joe' + assert_equal "

Hey Joe!

\n", template.render(scope) + end + + test "passing a block for yield" do + template = Tilt::HamlTemplate.new { "%p= 'Hey ' + yield + '!'" } + assert_equal "

Hey Joe!

\n", template.render(Scope.new) { 'Joe' } + end + + test "backtrace file and line reporting without locals" do + data = File.read(__FILE__).split("\n__END__\n").last + fail unless data[0] == ?% + template = Tilt::HamlTemplate.new('test.haml', 10) { data } + begin + template.render(Scope.new) + fail 'should have raised an exception' + rescue => boom + assert_kind_of NameError, boom + line = boom.backtrace.grep(/^test\.haml:/).first + assert line, "Backtrace didn't contain test.haml" + file, line, meth = line.split(":") + assert_equal '12', line + end + end + + test "backtrace file and line reporting with locals" do + data = File.read(__FILE__).split("\n__END__\n").last + fail unless data[0] == ?% + template = Tilt::HamlTemplate.new('test.haml') { data } + begin + res = template.render(Scope.new, :name => 'Joe', :foo => 'bar') + rescue => boom + assert_kind_of MockError, boom + line = boom.backtrace.first + file, line, meth = line.split(":") + assert_equal 'test.haml', file + assert_equal '5', line + end + end + end +rescue LoadError => boom + warn "Tilt::HamlTemplate (disabled)\n" +end + +__END__ +%html + %body + %h1= "Hey #{name}" + + = raise MockError + + %p we never get here diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_kramdown_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_kramdown_test.rb new file mode 100644 index 00000000..d8f8ef7a --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_kramdown_test.rb @@ -0,0 +1,42 @@ +require 'contest' +require 'tilt' + +begin + require 'kramdown' + + class MarukuTemplateTest < Test::Unit::TestCase + test "registered for '.md' files" do + assert Tilt.mappings['md'].include?(Tilt::KramdownTemplate) + end + + test "registered for '.mkd' files" do + assert Tilt.mappings['mkd'].include?(Tilt::KramdownTemplate) + end + + test "registered for '.markdown' files" do + assert Tilt.mappings['markdown'].include?(Tilt::KramdownTemplate) + end + + test "registered above MarukuTemplate" do + %w[md mkd markdown].each do |ext| + mappings = Tilt.mappings[ext] + kram_idx = mappings.index(Tilt::KramdownTemplate) + maru_idx = mappings.index(Tilt::MarukuTemplate) + assert kram_idx < maru_idx, + "#{kram_idx} should be lower than #{maru_idx}" + end + end + + test "preparing and evaluating templates on #render" do + template = Tilt::KramdownTemplate.new { |t| "# Hello World!" } + assert_equal "

Hello World!

", template.render + end + + test "can be rendered more than once" do + template = Tilt::KramdownTemplate.new { |t| "# Hello World!" } + 3.times { assert_equal "

Hello World!

", template.render } + end + end +rescue LoadError => boom + warn "Tilt::KramdownTemplate (disabled)\n" +end diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_lesstemplate_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_lesstemplate_test.rb new file mode 100644 index 00000000..450d8a10 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_lesstemplate_test.rb @@ -0,0 +1,26 @@ +require 'contest' +require 'tilt' + +begin + require 'pathname' + require 'less' + + class LessTemplateTest < Test::Unit::TestCase + test "is registered for '.less' files" do + assert_equal Tilt::LessTemplate, Tilt['test.less'] + end + + test "compiles and evaluates the template on #render" do + template = Tilt::LessTemplate.new { |t| ".bg { background-color: #0000ff; } \n#main\n { .bg; }\n" } + assert_equal ".bg {\n background-color: #0000ff;\n}\n#main {\n background-color: #0000ff;\n}\n", template.render + end + + test "can be rendered more than once" do + template = Tilt::LessTemplate.new { |t| ".bg { background-color: #0000ff; } \n#main\n { .bg; }\n" } + 3.times { assert_equal ".bg {\n background-color: #0000ff;\n}\n#main {\n background-color: #0000ff;\n}\n", template.render } + end + end + +rescue LoadError => boom + warn "Tilt::LessTemplate (disabled)\n" +end diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_liquidtemplate_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_liquidtemplate_test.rb new file mode 100644 index 00000000..96627b4d --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_liquidtemplate_test.rb @@ -0,0 +1,78 @@ +require 'contest' +require 'tilt' + +begin + require 'liquid' + + class LiquidTemplateTest < Test::Unit::TestCase + test "registered for '.liquid' files" do + assert_equal Tilt::LiquidTemplate, Tilt['test.liquid'] + end + + test "preparing and evaluating templates on #render" do + template = Tilt::LiquidTemplate.new { |t| "Hello World!" } + assert_equal "Hello World!", template.render + end + + test "can be rendered more than once" do + template = Tilt::LiquidTemplate.new { |t| "Hello World!" } + 3.times { assert_equal "Hello World!", template.render } + end + + test "passing locals" do + template = Tilt::LiquidTemplate.new { "Hey {{ name }}!" } + assert_equal "Hey Joe!", template.render(nil, :name => 'Joe') + end + + # Object's passed as "scope" to LiquidTemplate may respond to + # #to_h with a Hash. The Hash's contents are merged underneath + # Tilt locals. + class ExampleLiquidScope + def to_h + { :beer => 'wet', :whisky => 'wetter' } + end + end + + test "combining scope and locals when scope responds to #to_h" do + template = + Tilt::LiquidTemplate.new { + 'Beer is {{ beer }} but Whisky is {{ whisky }}.' + } + scope = ExampleLiquidScope.new + assert_equal "Beer is wet but Whisky is wetter.", template.render(scope) + end + + test "precedence when locals and scope define same variables" do + template = + Tilt::LiquidTemplate.new { + 'Beer is {{ beer }} but Whisky is {{ whisky }}.' + } + scope = ExampleLiquidScope.new + assert_equal "Beer is great but Whisky is greater.", + template.render(scope, :beer => 'great', :whisky => 'greater') + end + + # Object's passed as "scope" to LiquidTemplate that do not + # respond to #to_h are silently ignored. + class ExampleIgnoredLiquidScope + end + + test "handling scopes that do not respond to #to_h" do + template = Tilt::LiquidTemplate.new { 'Whisky' } + scope = ExampleIgnoredLiquidScope.new + assert_equal "Whisky", template.render(scope) + end + + test "passing a block for yield" do + template = + Tilt::LiquidTemplate.new { + 'Beer is {{ yield }} but Whisky is {{ content }}ter.' + } + assert_equal "Beer is wet but Whisky is wetter.", + template.render({}) { 'wet' } + end + end + +rescue LoadError => boom + warn "Tilt::LiquidTemplate (disabled)\n" +end diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_markaby_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_markaby_test.rb new file mode 100644 index 00000000..b0f64977 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_markaby_test.rb @@ -0,0 +1,88 @@ +require 'contest' +require 'tilt' + +begin + require 'markaby' + + class MarkabyTiltTest < Test::Unit::TestCase + def setup + @block = lambda do |t| + File.read(File.dirname(__FILE__) + "/#{t.file}") + end + end + + test "should be able to render a markaby template with static html" do + tilt = Tilt::MarkabyTemplate.new("markaby/markaby.mab", &@block) + assert_equal "hello from markaby!", tilt.render + end + + test "should use the contents of the template" do + tilt = ::Tilt::MarkabyTemplate.new("markaby/markaby_other_static.mab", &@block) + assert_equal "_why?", tilt.render + end + + test "should render from a string (given as data)" do + tilt = ::Tilt::MarkabyTemplate.new { "html do; end" } + assert_equal "", tilt.render + end + + test "can be rendered more than once" do + tilt = ::Tilt::MarkabyTemplate.new { "html do; end" } + 3.times { assert_equal "", tilt.render } + end + + test "should evaluate a template file in the scope given" do + scope = Object.new + def scope.foo + "bar" + end + + tilt = ::Tilt::MarkabyTemplate.new("markaby/scope.mab", &@block) + assert_equal "
  • bar
  • ", tilt.render(scope) + end + + test "should pass locals to the template" do + tilt = ::Tilt::MarkabyTemplate.new("markaby/locals.mab", &@block) + assert_equal "
  • bar
  • ", tilt.render(Object.new, { :foo => "bar" }) + end + + test "should yield to the block given" do + tilt = ::Tilt::MarkabyTemplate.new("markaby/yielding.mab", &@block) + eval_scope = Markaby::Builder.new + + output = tilt.render(Object.new, {}) do + text("Joe") + end + + assert_equal "Hey Joe", output + end + + test "should be able to render two templates in a row" do + tilt = ::Tilt::MarkabyTemplate.new("markaby/render_twice.mab", &@block) + + assert_equal "foo", tilt.render + assert_equal "foo", tilt.render + end + + test "should retrieve a Tilt::MarkabyTemplate when calling Tilt['hello.mab']" do + assert_equal Tilt::MarkabyTemplate, ::Tilt['./markaby/markaby.mab'] + end + + test "should return a new instance of the implementation class (when calling Tilt.new)" do + assert ::Tilt.new(File.dirname(__FILE__) + "/markaby/markaby.mab").kind_of?(Tilt::MarkabyTemplate) + end + + test "should be able to evaluate block style templates" do + tilt = Tilt::MarkabyTemplate.new { |t| lambda { h1 "Hello World!" }} + assert_equal "

    Hello World!

    ", tilt.render + end + + test "should pass locals to block style templates" do + tilt = Tilt::MarkabyTemplate.new { |t| lambda { h1 "Hello #{name}!" }} + assert_equal "

    Hello _why!

    ", tilt.render(nil, :name => "_why") + end + end + +rescue LoadError => boom + warn "Tilt::MarkabyTemplate (disabled)\n" +end \ No newline at end of file diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_markdown_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_markdown_test.rb new file mode 100644 index 00000000..ef9d97b7 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_markdown_test.rb @@ -0,0 +1,161 @@ +# coding: UTF-8 +require 'tilt' + +begin +require 'nokogiri' + +module MarkdownTests + def self.included(mod) + class << mod + def template(t = nil) + t.nil? ? @template : @template = t + end + end + end + + def render(text, options = {}) + self.class.template.new(options) { text }.render + end + + def normalize(html) + Nokogiri::HTML.fragment(html).to_s + end + + def nrender(text, options = {}) + html = render(text, options) + html.encode!("UTF-8") if html.respond_to?(:encode) + normalize(html) + end + + def test_escape_html + html = nrender "Hello World" + assert_equal "

    Hello World

    ", html + end + + def test_escape_html_false + html = nrender "Hello World", :escape_html => false + assert_equal "

    Hello World

    ", html + end + + def test_escape_html_true + if self.class.template == Tilt::RedcarpetTemplate + flunk "redcarpet doesn't support :escape_html yet" + end + html = nrender "Hello World", :escape_html => true + assert_equal "

    Hello <b>World</b>

    ", html + end + + def test_smart_quotes + html = nrender 'Hello "World"' + assert_equal '

    Hello "World"

    ', html + end + + def test_smart_quotes_false + html = nrender 'Hello "World"', :smartypants => false + assert_equal '

    Hello "World"

    ', html + end + + def test_smart_quotes_true + html = nrender 'Hello "World"', :smartypants => true + assert_equal '

    Hello “World”

    ', html + end + + def test_smarty_pants + html = nrender "Hello ``World'' -- This is --- a test ..." + assert_equal "

    Hello ``World'' -- This is --- a test ...

    ", html + end + + def test_smarty_pants_false + html = nrender "Hello ``World'' -- This is --- a test ...", :smartypants => false + assert_equal "

    Hello ``World'' -- This is --- a test ...

    ", html + end + + def test_smarty_pants_true + html = nrender "Hello ``World'' -- This is --- a test ...", :smartypants => true + assert_equal "

    Hello “World” — This is —– a test …

    ", html + end +end + +begin + require 'rdiscount' + + class MarkdownRDiscountTest < Test::Unit::TestCase + include MarkdownTests + template Tilt::RDiscountTemplate + end +rescue LoadError => boom + # It should already be warned in the main tests +end + +begin + require 'redcarpet' + + class MarkdownRedcarpetTest < Test::Unit::TestCase + include MarkdownTests + template Tilt::RedcarpetTemplate + # Doesn't support escaping + undef test_escape_html_true + + def test_smarty_pants_true + html = nrender "Hello ``World'' -- This is --- a test ...", :smartypants => true + assert_equal "

    Hello “World” – This is — a test …

    ", html + end + end +rescue LoadError => boom + # It should already be warned in the main tests +end + +begin + require 'bluecloth' + + class MarkdownBlueClothTest < Test::Unit::TestCase + include MarkdownTests + template Tilt::BlueClothTemplate + end +rescue LoadError => boom + # It should already be warned in the main tests +end + +begin + require 'kramdown' + + class MarkdownKramdownTest < Test::Unit::TestCase + include MarkdownTests + template Tilt::KramdownTemplate + # Doesn't support escaping + undef test_escape_html_true + # Smarty Pants is *always* on, but doesn't support it fully + undef test_smarty_pants + undef test_smarty_pants_false + undef test_smarty_pants_true + end +rescue LoadError => boom + # It should already be warned in the main tests +end + + +begin + require 'maruku' + + class MarkdownMarukuTest < Test::Unit::TestCase + include MarkdownTests + template Tilt::MarukuTemplate + # Doesn't support escaping + undef test_escape_html_true + # Doesn't support Smarty Pants, and even fails on ``Foobar'' + undef test_smarty_pants + undef test_smarty_pants_false + undef test_smarty_pants_true + # Smart Quotes is always on + undef test_smart_quotes + undef test_smart_quotes_false + end +rescue LoadError => boom + # It should already be warned in the main tests +end + +rescue LoadError + warn "Markdown tests need Nokogiri\n" +end + + diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_marukutemplate_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_marukutemplate_test.rb new file mode 100644 index 00000000..2f2e13cb --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_marukutemplate_test.rb @@ -0,0 +1,48 @@ +require 'contest' +require 'tilt' + +begin + require 'maruku' + + class MarukuTemplateTest < Test::Unit::TestCase + test "registered for '.md' files" do + assert Tilt.mappings['md'].include?(Tilt::MarukuTemplate) + end + + test "registered for '.mkd' files" do + assert Tilt.mappings['mkd'].include?(Tilt::MarukuTemplate) + end + + test "registered for '.markdown' files" do + assert Tilt.mappings['markdown'].include?(Tilt::MarukuTemplate) + end + + test "registered below Kramdown" do + %w[md mkd markdown].each do |ext| + mappings = Tilt.mappings[ext] + kram_idx = mappings.index(Tilt::KramdownTemplate) + maru_idx = mappings.index(Tilt::MarukuTemplate) + assert maru_idx > kram_idx, + "#{maru_idx} should be higher than #{kram_idx}" + end + end + + test "preparing and evaluating templates on #render" do + template = Tilt::MarukuTemplate.new { |t| "# Hello World!" } + assert_equal "

    Hello World!

    ", template.render + end + + test "can be rendered more than once" do + template = Tilt::MarukuTemplate.new { |t| "# Hello World!" } + 3.times { assert_equal "

    Hello World!

    ", template.render } + end + + test "removes HTML when :filter_html is set" do + template = Tilt::MarukuTemplate.new(:filter_html => true) { |t| + "HELLO WORLD" } + assert_equal "

    HELLO

    ", template.render + end + end +rescue LoadError => boom + warn "Tilt::MarukuTemplate (disabled)\n" +end diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_nokogiritemplate_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_nokogiritemplate_test.rb new file mode 100644 index 00000000..22225e8a --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_nokogiritemplate_test.rb @@ -0,0 +1,87 @@ +require 'contest' +require 'tilt' + +begin + require 'nokogiri' + class NokogiriTemplateTest < Test::Unit::TestCase + test "registered for '.nokogiri' files" do + assert_equal Tilt::NokogiriTemplate, Tilt['test.nokogiri'] + assert_equal Tilt::NokogiriTemplate, Tilt['test.xml.nokogiri'] + end + + test "preparing and evaluating the template on #render" do + template = Tilt::NokogiriTemplate.new { |t| "xml.em 'Hello World!'" } + doc = Nokogiri.XML template.render + assert_equal 'Hello World!', doc.root.text + assert_equal 'em', doc.root.name + end + + test "can be rendered more than once" do + template = Tilt::NokogiriTemplate.new { |t| "xml.em 'Hello World!'" } + 3.times do + doc = Nokogiri.XML template.render + assert_equal 'Hello World!', doc.root.text + assert_equal 'em', doc.root.name + end + end + + test "passing locals" do + template = Tilt::NokogiriTemplate.new { "xml.em('Hey ' + name + '!')" } + doc = Nokogiri.XML template.render(Object.new, :name => 'Joe') + assert_equal 'Hey Joe!', doc.root.text + assert_equal 'em', doc.root.name + end + + test "evaluating in an object scope" do + template = Tilt::NokogiriTemplate.new { "xml.em('Hey ' + @name + '!')" } + scope = Object.new + scope.instance_variable_set :@name, 'Joe' + doc = Nokogiri.XML template.render(scope) + assert_equal 'Hey Joe!', doc.root.text + assert_equal 'em', doc.root.name + end + + test "passing a block for yield" do + template = Tilt::NokogiriTemplate.new { "xml.em('Hey ' + yield + '!')" } + 3.times do + doc = Nokogiri.XML template.render { 'Joe' } + assert_equal 'Hey Joe!', doc.root.text + assert_equal 'em', doc.root.name + end + end + + test "block style templates" do + template = + Tilt::NokogiriTemplate.new do |t| + lambda { |xml| xml.em('Hey Joe!') } + end + doc = Nokogiri.XML template.render + assert_equal 'Hey Joe!', doc.root.text + assert_equal 'em', doc.root.name + end + + test "allows nesting raw XML, API-compatible to Builder" do + subtemplate = Tilt::NokogiriTemplate.new { "xml.em 'Hello World!'" } + template = Tilt::NokogiriTemplate.new { "xml.strong { xml << yield }" } + 3.times do + options = { :xml => Nokogiri::XML::Builder.new } + doc = Nokogiri.XML(template.render(options) { subtemplate.render(options) }) + assert_equal 'Hello World!', doc.root.text.strip + assert_equal 'strong', doc.root.name + end + end + + test "doesn't modify self when template is a string" do + template = Tilt::NokogiriTemplate.new { "xml.root { xml.child @hello }" } + scope = Object.new + scope.instance_variable_set(:@hello, "Hello World!") + + 3.times do + doc = Nokogiri.XML(template.render(scope)) + assert_equal "Hello World!", doc.text.strip + end + end + end +rescue LoadError + warn "Tilt::NokogiriTemplate (disabled)" +end diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_radiustemplate_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_radiustemplate_test.rb new file mode 100644 index 00000000..a42b96cc --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_radiustemplate_test.rb @@ -0,0 +1,75 @@ +require 'contest' +require 'tilt' + +begin + require 'radius' + + # Disable radius tests under Ruby versions >= 1.9.1 since it's still buggy. + # Remove when fixed upstream. + raise LoadError if RUBY_VERSION >= "1.9.1" and Radius.version < "0.7" + + class RadiusTemplateTest < Test::Unit::TestCase + test "registered for '.radius' files" do + assert_equal Tilt::RadiusTemplate, Tilt['test.radius'] + end + + test "preparing and evaluating templates on #render" do + template = Tilt::RadiusTemplate.new { |t| "Hello World!" } + assert_equal "Hello World!", template.render + end + + test "can be rendered more than once" do + template = Tilt::RadiusTemplate.new { |t| "Hello World!" } + 3.times { assert_equal "Hello World!", template.render } + end + + test "passing locals" do + template = Tilt::RadiusTemplate.new { "Hey !" } + assert_equal "Hey Joe!", template.render(nil, :name => 'Joe') + end + + class ExampleRadiusScope + def beer; 'wet'; end + def whisky; 'wetter'; end + end + + test "combining scope and locals when scope responds" do + template = Tilt::RadiusTemplate.new { + 'Beer is but Whisky is .' + } + scope = ExampleRadiusScope.new + assert_equal "Beer is wet but Whisky is wetter.", template.render(scope) + end + + test "precedence when locals and scope define same variables" do + template = Tilt::RadiusTemplate.new { + 'Beer is but Whisky is .' + } + scope = ExampleRadiusScope.new + assert_equal "Beer is great but Whisky is greater.", + template.render(scope, :beer => 'great', :whisky => 'greater') + end + + #test "handles local scope" do + # beer = 'wet' + # whisky = 'wetter' + # + # template = Tilt::RadiusTemplate.new { + # 'Beer is but Whisky is .' + # } + # assert_equal "Beer is wet but Whisky is wetter.", template.render(self) + #end + + test "passing a block for yield" do + template = Tilt::RadiusTemplate.new { + 'Beer is but Whisky is ter.' + } + assert_equal "Beer is wet but Whisky is wetter.", + template.render({}) { 'wet' } + end + end + +rescue LoadError => boom + warn "Tilt::RadiusTemplate (disabled)\n" +end + diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_rdiscounttemplate_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_rdiscounttemplate_test.rb new file mode 100644 index 00000000..c5425e2c --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_rdiscounttemplate_test.rb @@ -0,0 +1,55 @@ +require 'contest' +require 'tilt' + +begin + require 'rdiscount' + + class RDiscountTemplateTest < Test::Unit::TestCase + test "registered for '.md' files" do + assert Tilt.mappings['md'].include?(Tilt::RDiscountTemplate) + end + + test "registered for '.mkd' files" do + assert Tilt.mappings['mkd'].include?(Tilt::RDiscountTemplate) + end + + test "registered for '.markdown' files" do + assert Tilt.mappings['markdown'].include?(Tilt::RDiscountTemplate) + end + + test "registered above BlueCloth" do + %w[md mkd markdown].each do |ext| + mappings = Tilt.mappings[ext] + blue_idx = mappings.index(Tilt::BlueClothTemplate) + rdis_idx = mappings.index(Tilt::RDiscountTemplate) + assert rdis_idx < blue_idx, + "#{rdis_idx} should be lower than #{blue_idx}" + end + end + + test "preparing and evaluating templates on #render" do + template = Tilt::RDiscountTemplate.new { |t| "# Hello World!" } + assert_equal "

    Hello World!

    \n", template.render + end + + test "can be rendered more than once" do + template = Tilt::RDiscountTemplate.new { |t| "# Hello World!" } + 3.times { assert_equal "

    Hello World!

    \n", template.render } + end + + test "smartypants when :smart is set" do + template = Tilt::RDiscountTemplate.new(:smart => true) { |t| + "OKAY -- 'Smarty Pants'" } + assert_equal "

    OKAY — ‘Smarty Pants’

    \n", + template.render + end + + test "stripping HTML when :filter_html is set" do + template = Tilt::RDiscountTemplate.new(:filter_html => true) { |t| + "HELLO WORLD" } + assert_equal "

    HELLO <blink>WORLD</blink>

    \n", template.render + end + end +rescue LoadError => boom + warn "Tilt::RDiscountTemplate (disabled)\n" +end diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_rdoctemplate_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_rdoctemplate_test.rb new file mode 100644 index 00000000..ef81ce2e --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_rdoctemplate_test.rb @@ -0,0 +1,24 @@ +require 'contest' +require 'tilt' + +begin + require 'rdoc/markup' + require 'rdoc/markup/to_html' + class RDocTemplateTest < Test::Unit::TestCase + test "is registered for '.rdoc' files" do + assert_equal Tilt::RDocTemplate, Tilt['test.rdoc'] + end + + test "preparing and evaluating the template with #render" do + template = Tilt::RDocTemplate.new { |t| "= Hello World!" } + assert_equal "

    Hello World!

    ", template.render.strip + end + + test "can be rendered more than once" do + template = Tilt::RDocTemplate.new { |t| "= Hello World!" } + 3.times { assert_equal "

    Hello World!

    ", template.render.strip } + end + end +rescue LoadError => boom + warn "Tilt::RDocTemplate (disabled)\n" +end diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_redcarpettemplate_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_redcarpettemplate_test.rb new file mode 100644 index 00000000..bd96e353 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_redcarpettemplate_test.rb @@ -0,0 +1,59 @@ +require 'contest' +require 'tilt' + +begin + require 'redcarpet' + + class RedcarpetTemplateTest < Test::Unit::TestCase + test "registered for '.md' files" do + assert Tilt.mappings['md'].include?(Tilt::RedcarpetTemplate) + end + + test "registered for '.mkd' files" do + assert Tilt.mappings['mkd'].include?(Tilt::RedcarpetTemplate) + end + + test "registered for '.markdown' files" do + assert Tilt.mappings['markdown'].include?(Tilt::RedcarpetTemplate) + end + + test "registered above BlueCloth" do + %w[md mkd markdown].each do |ext| + mappings = Tilt.mappings[ext] + blue_idx = mappings.index(Tilt::BlueClothTemplate) + redc_idx = mappings.index(Tilt::RedcarpetTemplate) + assert redc_idx < blue_idx, + "#{redc_idx} should be lower than #{blue_idx}" + end + end + + test "registered above RDiscount" do + %w[md mkd markdown].each do |ext| + mappings = Tilt.mappings[ext] + rdis_idx = mappings.index(Tilt::RDiscountTemplate) + redc_idx = mappings.index(Tilt::RedcarpetTemplate) + assert redc_idx < rdis_idx, + "#{redc_idx} should be lower than #{rdis_idx}" + end + end + + test "preparing and evaluating templates on #render" do + template = Tilt::RedcarpetTemplate.new { |t| "# Hello World!" } + assert_equal "

    Hello World!

    \n", template.render + end + + test "can be rendered more than once" do + template = Tilt::RedcarpetTemplate.new { |t| "# Hello World!" } + 3.times { assert_equal "

    Hello World!

    \n", template.render } + end + + test "smartypants when :smart is set" do + template = Tilt::RedcarpetTemplate.new(:smart => true) { |t| + "OKAY -- 'Smarty Pants'" } + assert_match /

    OKAY &[nm]dash; ‘Smarty Pants’<\/p>/, + template.render + end + end +rescue LoadError => boom + warn "Tilt::RedcarpetTemplate (disabled)\n" +end diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_redclothtemplate_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_redclothtemplate_test.rb new file mode 100644 index 00000000..6e5aa2af --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_redclothtemplate_test.rb @@ -0,0 +1,24 @@ +require 'contest' +require 'tilt' + +begin + require 'redcloth' + + class RedClothTemplateTest < Test::Unit::TestCase + test "is registered for '.textile' files" do + assert_equal Tilt::RedClothTemplate, Tilt['test.textile'] + end + + test "compiles and evaluates the template on #render" do + template = Tilt::RedClothTemplate.new { |t| "h1. Hello World!" } + assert_equal "

    Hello World!

    ", template.render + end + + test "can be rendered more than once" do + template = Tilt::RedClothTemplate.new { |t| "h1. Hello World!" } + 3.times { assert_equal "

    Hello World!

    ", template.render } + end + end +rescue LoadError => boom + warn "Tilt::RedClothTemplate (disabled)\n" +end diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_sasstemplate_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_sasstemplate_test.rb new file mode 100644 index 00000000..2f3bd3f8 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_sasstemplate_test.rb @@ -0,0 +1,41 @@ +require 'contest' +require 'tilt' + +begin + require 'sass' + + class SassTemplateTest < Test::Unit::TestCase + test "is registered for '.sass' files" do + assert_equal Tilt::SassTemplate, Tilt['test.sass'] + end + + test "compiles and evaluates the template on #render" do + template = Tilt::SassTemplate.new { |t| "#main\n :background-color #0000f1" } + assert_equal "#main {\n background-color: #0000f1; }\n", template.render + end + + test "can be rendered more than once" do + template = Tilt::SassTemplate.new { |t| "#main\n :background-color #0000f1" } + 3.times { assert_equal "#main {\n background-color: #0000f1; }\n", template.render } + end + end + + class ScssTemplateTest < Test::Unit::TestCase + test "is registered for '.scss' files" do + assert_equal Tilt::ScssTemplate, Tilt['test.scss'] + end + + test "compiles and evaluates the template on #render" do + template = Tilt::ScssTemplate.new { |t| "#main {\n background-color: #0000f1;\n}" } + assert_equal "#main {\n background-color: #0000f1; }\n", template.render + end + + test "can be rendered more than once" do + template = Tilt::ScssTemplate.new { |t| "#main {\n background-color: #0000f1;\n}" } + 3.times { assert_equal "#main {\n background-color: #0000f1; }\n", template.render } + end + end + +rescue LoadError => boom + warn "Tilt::SassTemplate (disabled)\n" +end diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_stringtemplate_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_stringtemplate_test.rb new file mode 100644 index 00000000..cc7b684d --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_stringtemplate_test.rb @@ -0,0 +1,170 @@ +require 'contest' +require 'tilt' + +class StringTemplateTest < Test::Unit::TestCase + test "registered for '.str' files" do + assert_equal Tilt::StringTemplate, Tilt['test.str'] + end + + test "loading and evaluating templates on #render" do + template = Tilt::StringTemplate.new { |t| "Hello World!" } + assert_equal "Hello World!", template.render + end + + test "can be rendered more than once" do + template = Tilt::StringTemplate.new { |t| "Hello World!" } + 3.times { assert_equal "Hello World!", template.render } + end + + test "passing locals" do + template = Tilt::StringTemplate.new { 'Hey #{name}!' } + assert_equal "Hey Joe!", template.render(Object.new, :name => 'Joe') + end + + test "evaluating in an object scope" do + template = Tilt::StringTemplate.new { 'Hey #{@name}!' } + scope = Object.new + scope.instance_variable_set :@name, 'Joe' + assert_equal "Hey Joe!", template.render(scope) + end + + test "passing a block for yield" do + template = Tilt::StringTemplate.new { 'Hey #{yield}!' } + assert_equal "Hey Joe!", template.render { 'Joe' } + assert_equal "Hey Moe!", template.render { 'Moe' } + end + + test "multiline templates" do + template = Tilt::StringTemplate.new { "Hello\nWorld!\n" } + assert_equal "Hello\nWorld!\n", template.render + end + + test "backtrace file and line reporting without locals" do + data = File.read(__FILE__).split("\n__END__\n").last + fail unless data[0] == ?< + template = Tilt::StringTemplate.new('test.str', 11) { data } + begin + template.render + fail 'should have raised an exception' + rescue => boom + assert_kind_of NameError, boom + line = boom.backtrace.grep(/^test\.str:/).first + assert line, "Backtrace didn't contain test.str" + file, line, meth = line.split(":") + assert_equal '13', line + end + end + + test "backtrace file and line reporting with locals" do + data = File.read(__FILE__).split("\n__END__\n").last + fail unless data[0] == ?< + template = Tilt::StringTemplate.new('test.str', 1) { data } + begin + template.render(nil, :name => 'Joe', :foo => 'bar') + fail 'should have raised an exception' + rescue => boom + assert_kind_of RuntimeError, boom + line = boom.backtrace.first + file, line, meth = line.split(":") + assert_equal 'test.str', file + assert_equal '6', line + end + end +end + + +class CompiledStringTemplateTest < Test::Unit::TestCase + def teardown + GC.start + end + + class Scope + end + + test "compiling template source to a method" do + template = Tilt::StringTemplate.new { |t| "Hello World!" } + template.render(Scope.new) + method = template.send(:compiled_method, []) + assert_kind_of UnboundMethod, method + end + + test "loading and evaluating templates on #render" do + template = Tilt::StringTemplate.new { |t| "Hello World!" } + assert_equal "Hello World!", template.render(Scope.new) + end + + test "passing locals" do + template = Tilt::StringTemplate.new { 'Hey #{name}!' } + assert_equal "Hey Joe!", template.render(Scope.new, :name => 'Joe') + assert_equal "Hey Moe!", template.render(Scope.new, :name => 'Moe') + end + + test "evaluating in an object scope" do + template = Tilt::StringTemplate.new { 'Hey #{@name}!' } + scope = Scope.new + scope.instance_variable_set :@name, 'Joe' + assert_equal "Hey Joe!", template.render(scope) + scope.instance_variable_set :@name, 'Moe' + assert_equal "Hey Moe!", template.render(scope) + end + + test "passing a block for yield" do + template = Tilt::StringTemplate.new { 'Hey #{yield}!' } + assert_equal "Hey Joe!", template.render(Scope.new) { 'Joe' } + assert_equal "Hey Moe!", template.render(Scope.new) { 'Moe' } + end + + test "multiline templates" do + template = Tilt::StringTemplate.new { "Hello\nWorld!\n" } + assert_equal "Hello\nWorld!\n", template.render(Scope.new) + end + + + test "template with '}'" do + template = Tilt::StringTemplate.new { "Hello }" } + assert_equal "Hello }", template.render + end + + test "backtrace file and line reporting without locals" do + data = File.read(__FILE__).split("\n__END__\n").last + fail unless data[0] == ?< + template = Tilt::StringTemplate.new('test.str', 11) { data } + begin + template.render(Scope.new) + fail 'should have raised an exception' + rescue => boom + assert_kind_of NameError, boom + line = boom.backtrace.first + line = boom.backtrace.grep(/^test\.str:/).first + assert line, "Backtrace didn't contain test.str" + file, line, meth = line.split(":") + assert_equal '13', line + end + end + + test "backtrace file and line reporting with locals" do + data = File.read(__FILE__).split("\n__END__\n").last + fail unless data[0] == ?< + template = Tilt::StringTemplate.new('test.str') { data } + begin + template.render(Scope.new, :name => 'Joe', :foo => 'bar') + fail 'should have raised an exception' + rescue => boom + assert_kind_of RuntimeError, boom + line = boom.backtrace.first + file, line, meth = line.split(":") + assert_equal 'test.str', file + assert_equal '6', line + end + end +end + +__END__ + + +

    Hey #{name}!

    + + +

    #{fail}

    + + diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_template_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_template_test.rb new file mode 100644 index 00000000..a16b9692 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_template_test.rb @@ -0,0 +1,154 @@ +require 'contest' +require 'tilt' + +class TiltTemplateTest < Test::Unit::TestCase + + class MockTemplate < Tilt::Template + def prepare + end + end + + test "needs a file or block" do + assert_raise(ArgumentError) { Tilt::Template.new } + end + + test "initializing with a file" do + inst = MockTemplate.new('foo.erb') {} + assert_equal 'foo.erb', inst.file + end + + test "initializing with a file and line" do + inst = MockTemplate.new('foo.erb', 55) {} + assert_equal 'foo.erb', inst.file + assert_equal 55, inst.line + end + + test "uses correct eval_file" do + inst = MockTemplate.new('foo.erb', 55) {} + assert_equal 'foo.erb', inst.eval_file + end + + test "uses a default filename for #eval_file when no file provided" do + inst = MockTemplate.new { 'Hi' } + assert_not_nil inst.eval_file + assert !inst.eval_file.include?("\n") + end + + test "calculating template's #basename" do + inst = MockTemplate.new('/tmp/templates/foo.html.erb') {} + assert_equal 'foo.html.erb', inst.basename + end + + test "calculating the template's #name" do + inst = MockTemplate.new('/tmp/templates/foo.html.erb') {} + assert_equal 'foo', inst.name + end + + test "initializing with a data loading block" do + MockTemplate.new { |template| "Hello World!" } + end + + class InitializingMockTemplate < Tilt::Template + @@initialized_count = 0 + def self.initialized_count + @@initialized_count + end + + def initialize_engine + @@initialized_count += 1 + end + + def prepare + end + end + + test "one-time template engine initialization" do + assert_nil InitializingMockTemplate.engine_initialized + assert_equal 0, InitializingMockTemplate.initialized_count + + InitializingMockTemplate.new { "Hello World!" } + assert InitializingMockTemplate.engine_initialized + assert_equal 1, InitializingMockTemplate.initialized_count + + InitializingMockTemplate.new { "Hello World!" } + assert_equal 1, InitializingMockTemplate.initialized_count + end + + class PreparingMockTemplate < Tilt::Template + include Test::Unit::Assertions + def prepare + assert !data.nil? + @prepared = true + end + def prepared? ; @prepared ; end + end + + test "raises NotImplementedError when #prepare not defined" do + assert_raise(NotImplementedError) { Tilt::Template.new { |template| "Hello World!" } } + end + + test "raises NotImplementedError when #evaluate or #template_source not defined" do + inst = PreparingMockTemplate.new { |t| "Hello World!" } + assert_raise(NotImplementedError) { inst.render } + assert inst.prepared? + end + + class SimpleMockTemplate < PreparingMockTemplate + include Test::Unit::Assertions + def evaluate(scope, locals, &block) + assert prepared? + assert !scope.nil? + assert !locals.nil? + "#{@data}" + end + end + + test "prepares and evaluates the template on #render" do + inst = SimpleMockTemplate.new { |t| "Hello World!" } + assert_equal "Hello World!", inst.render + assert inst.prepared? + end + + class SourceGeneratingMockTemplate < PreparingMockTemplate + def precompiled_template(locals) + "foo = [] ; foo << %Q{#{data}} ; foo.join" + end + end + + test "template_source with locals" do + inst = SourceGeneratingMockTemplate.new { |t| 'Hey #{name}!' } + assert_equal "Hey Joe!", inst.render(Object.new, :name => 'Joe') + assert inst.prepared? + end + + test "template_source with locals of strings" do + inst = SourceGeneratingMockTemplate.new { |t| 'Hey #{name}!' } + assert_equal "Hey Joe!", inst.render(Object.new, 'name' => 'Joe') + assert inst.prepared? + end + + class Person + CONSTANT = "Bob" + + attr_accessor :name + def initialize(name) + @name = name + end + end + + test "template_source with an object scope" do + inst = SourceGeneratingMockTemplate.new { |t| 'Hey #{@name}!' } + scope = Person.new('Joe') + assert_equal "Hey Joe!", inst.render(scope) + end + + test "template_source with a block for yield" do + inst = SourceGeneratingMockTemplate.new { |t| 'Hey #{yield}!' } + assert_equal "Hey Joe!", inst.render(Object.new){ 'Joe' } + end + + test "template which accesses a constant" do + inst = SourceGeneratingMockTemplate.new { |t| 'Hey #{CONSTANT}!' } + assert_equal "Hey Bob!", inst.render(Person.new("Joe")) + end +end diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_test.rb new file mode 100644 index 00000000..f12dacb4 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_test.rb @@ -0,0 +1,65 @@ +require 'contest' +require 'tilt' + +class TiltTest < Test::Unit::TestCase + class MockTemplate + attr_reader :args, :block + def initialize(*args, &block) + @args = args + @block = block + end + end + + test "registering template implementation classes by file extension" do + Tilt.register('mock', MockTemplate) + end + + test "an extension is registered if explicit handle is found" do + Tilt.register('mock', MockTemplate) + assert Tilt.registered?('mock') + end + + test "registering template classes by symbol file extension" do + Tilt.register(:mock, MockTemplate) + end + + test "looking up template classes by exact file extension" do + Tilt.register('mock', MockTemplate) + impl = Tilt['mock'] + assert_equal MockTemplate, impl + end + + test "looking up template classes by implicit file extension" do + Tilt.register('mock', MockTemplate) + impl = Tilt['.mock'] + assert_equal MockTemplate, impl + end + + test "looking up template classes with multiple file extensions" do + Tilt.register('mock', MockTemplate) + impl = Tilt['index.html.mock'] + assert_equal MockTemplate, impl + end + + test "looking up template classes by file name" do + Tilt.register('mock', MockTemplate) + impl = Tilt['templates/test.mock'] + assert_equal MockTemplate, impl + end + + test "looking up non-existant template class" do + assert_nil Tilt['none'] + end + + test "accessing template class mappings at Tilt::mappings" do + assert Tilt.respond_to?(:mappings) + assert Tilt.mappings.respond_to?(:[]) + end + + test "creating new template instance with a filename" do + Tilt.register('mock', MockTemplate) + template = Tilt.new('foo.mock', 1, :key => 'val') { 'Hello World!' } + assert_equal ['foo.mock', 1, {:key => 'val'}], template.args + assert_equal 'Hello World!', template.block.call + end +end diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_wikiclothtemplate_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_wikiclothtemplate_test.rb new file mode 100644 index 00000000..f9c6e6f0 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_wikiclothtemplate_test.rb @@ -0,0 +1,32 @@ +require 'contest' +require 'tilt' + +begin + require 'wikicloth' + + class WikiClothTemplateTest < Test::Unit::TestCase + test "is registered for '.mediawiki' files" do + assert_equal Tilt::WikiClothTemplate, Tilt['test.mediawiki'] + end + + test "is registered for '.mw' files" do + assert_equal Tilt::WikiClothTemplate, Tilt['test.mw'] + end + + test "is registered for '.wiki' files" do + assert_equal Tilt::WikiClothTemplate, Tilt['test.wiki'] + end + + test "compiles and evaluates the template on #render" do + template = Tilt::WikiClothTemplate.new { |t| "= Hello World! =" } + assert_match /

    .*Hello World!.*<\/h1>/, template.render + end + + test "can be rendered more than once" do + template = Tilt::WikiClothTemplate.new { |t| "= Hello World! =" } + 3.times { assert_match /

    .*Hello World!.*<\/h1>/, template.render } + end + end +rescue LoadError => boom + warn "Tilt::WikiClothTemplate (disabled)\n" +end diff --git a/src/main/resources/gems/tilt-1.3.3/test/tilt_yajltemplate_test.rb b/src/main/resources/gems/tilt-1.3.3/test/tilt_yajltemplate_test.rb new file mode 100644 index 00000000..3f6c9059 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/test/tilt_yajltemplate_test.rb @@ -0,0 +1,92 @@ +require 'contest' +require 'tilt' + +begin + require 'yajl' + + class YajlTemplateTest < Test::Unit::TestCase + test "is registered for '.yajl' files" do + assert_equal Tilt::YajlTemplate, Tilt['test.yajl'] + end + + test "compiles and evaluates the template on #render" do + template = Tilt::YajlTemplate.new { "json = { :integer => 3, :string => 'hello' }" } + assert_equal '{"integer":3,"string":"hello"}', template.render + end + + test "can be rendered more than once" do + template = Tilt::YajlTemplate.new { "json = { :integer => 3, :string => 'hello' }" } + 3.times { assert_equal '{"integer":3,"string":"hello"}', template.render } + end + + test "evaluating ruby code" do + template = Tilt::YajlTemplate.new { "json = { :integer => (3 * 2) }" } + assert_equal '{"integer":6}', template.render + end + + test "evaluating in an object scope" do + template = Tilt::YajlTemplate.new { "json = { :string => 'Hey ' + @name + '!' }" } + scope = Object.new + scope.instance_variable_set :@name, 'Joe' + assert_equal '{"string":"Hey Joe!"}', template.render(scope) + end + + test "passing locals" do + template = Tilt::YajlTemplate.new { "json = { :string => 'Hey ' + name + '!' }" } + assert_equal '{"string":"Hey Joe!"}', template.render(Object.new, :name => 'Joe') + end + + test "passing a block for yield" do + template = Tilt::YajlTemplate.new { "json = { :string => 'Hey ' + yield + '!' }" } + assert_equal '{"string":"Hey Joe!"}', template.render { 'Joe' } + assert_equal '{"string":"Hey Moe!"}', template.render { 'Moe' } + end + + test "template multiline" do + template = Tilt::YajlTemplate.new { %Q{ + json = { + :string => "hello" + } + } } + assert_equal '{"string":"hello"}', template.render + end + + test "template can reuse existing json buffer" do + template = Tilt::YajlTemplate.new { "json.merge! :string => 'hello'" } + assert_equal '{"string":"hello"}', template.render + end + + test "template can end with any statement" do + template = Tilt::YajlTemplate.new { %Q{ + json = { + :string => "hello" + } + four = 2 * 2 + json[:integer] = four + nil + } } + assert_equal '{"string":"hello","integer":4}', template.render + end + + test "option callback" do + options = { :callback => 'foo' } + template = Tilt::YajlTemplate.new(nil, options) { "json = { :string => 'hello' }" } + assert_equal 'foo({"string":"hello"});', template.render + end + + test "option variable" do + options = { :variable => 'output' } + template = Tilt::YajlTemplate.new(nil, options) { "json = { :string => 'hello' }" } + assert_equal 'var output = {"string":"hello"};', template.render + end + + test "option callback and variable" do + options = { :callback => 'foo', :variable => 'output' } + template = Tilt::YajlTemplate.new(nil, options) { "json = { :string => 'hello' }" } + assert_equal 'var output = {"string":"hello"}; foo(output);', template.render + end + + end +rescue LoadError + warn "Tilt::YajlTemplateTest (disabled)\n" +end diff --git a/src/main/resources/gems/tilt-1.3.3/tilt.gemspec b/src/main/resources/gems/tilt-1.3.3/tilt.gemspec new file mode 100644 index 00000000..80821427 --- /dev/null +++ b/src/main/resources/gems/tilt-1.3.3/tilt.gemspec @@ -0,0 +1,109 @@ +Gem::Specification.new do |s| + s.specification_version = 2 if s.respond_to? :specification_version= + s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= + + s.name = 'tilt' + s.version = '1.3.3' + s.date = '2011-08-25' + + s.description = "Generic interface to multiple Ruby template engines" + s.summary = s.description + + s.authors = ["Ryan Tomayko"] + s.email = "r@tomayko.com" + + # = MANIFEST = + s.files = %w[ + COPYING + Gemfile + README.md + Rakefile + TEMPLATES.md + bin/tilt + lib/tilt.rb + lib/tilt/builder.rb + lib/tilt/coffee.rb + lib/tilt/css.rb + lib/tilt/erb.rb + lib/tilt/haml.rb + lib/tilt/liquid.rb + lib/tilt/markaby.rb + lib/tilt/markdown.rb + lib/tilt/nokogiri.rb + lib/tilt/radius.rb + lib/tilt/rdoc.rb + lib/tilt/string.rb + lib/tilt/template.rb + lib/tilt/textile.rb + lib/tilt/wiki.rb + lib/tilt/yajl.rb + test/contest.rb + test/markaby/locals.mab + test/markaby/markaby.mab + test/markaby/markaby_other_static.mab + test/markaby/render_twice.mab + test/markaby/scope.mab + test/markaby/yielding.mab + test/tilt_blueclothtemplate_test.rb + test/tilt_buildertemplate_test.rb + test/tilt_cache_test.rb + test/tilt_coffeescripttemplate_test.rb + test/tilt_compilesite_test.rb + test/tilt_creoletemplate_test.rb + test/tilt_erbtemplate_test.rb + test/tilt_erubistemplate_test.rb + test/tilt_fallback_test.rb + test/tilt_hamltemplate_test.rb + test/tilt_kramdown_test.rb + test/tilt_lesstemplate_test.rb + test/tilt_liquidtemplate_test.rb + test/tilt_markaby_test.rb + test/tilt_markdown_test.rb + test/tilt_marukutemplate_test.rb + test/tilt_nokogiritemplate_test.rb + test/tilt_radiustemplate_test.rb + test/tilt_rdiscounttemplate_test.rb + test/tilt_rdoctemplate_test.rb + test/tilt_redcarpettemplate_test.rb + test/tilt_redclothtemplate_test.rb + test/tilt_sasstemplate_test.rb + test/tilt_stringtemplate_test.rb + test/tilt_template_test.rb + test/tilt_test.rb + test/tilt_wikiclothtemplate_test.rb + test/tilt_yajltemplate_test.rb + tilt.gemspec + ] + # = MANIFEST = + + s.executables = ['tilt'] + s.test_files = s.files.select {|path| path =~ /^test\/.*_test.rb/} + s.add_development_dependency 'contest' + s.add_development_dependency 'builder' + s.add_development_dependency 'erubis' + s.add_development_dependency 'haml', '>= 2.2.11' + s.add_development_dependency 'sass' + s.add_development_dependency 'rdiscount' + s.add_development_dependency 'liquid' + s.add_development_dependency 'less' + s.add_development_dependency 'radius' + s.add_development_dependency 'nokogiri' + s.add_development_dependency 'markaby' + s.add_development_dependency 'coffee-script' + s.add_development_dependency 'bluecloth' + s.add_development_dependency 'RedCloth' + s.add_development_dependency 'maruku' + s.add_development_dependency 'creole' + s.add_development_dependency 'kramdown' + s.add_development_dependency 'redcarpet' + s.add_development_dependency 'creole' + s.add_development_dependency 'yajl-ruby' + s.add_development_dependency 'wikicloth' + s.add_development_dependency 'redcarpet' + s.add_development_dependency 'kramdown' + + s.homepage = "http://github.com/rtomayko/tilt/" + s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Tilt", "--main", "Tilt"] + s.require_paths = %w[lib] + s.rubygems_version = '1.1.1' +end diff --git a/src/main/resources/specifications/asciidoctor-0.0.9.gemspec b/src/main/resources/specifications/asciidoctor-0.0.9.gemspec new file mode 100644 index 00000000..d7a3de46 --- /dev/null +++ b/src/main/resources/specifications/asciidoctor-0.0.9.gemspec @@ -0,0 +1,54 @@ +# -*- encoding: utf-8 -*- + +Gem::Specification.new do |s| + s.name = "asciidoctor" + s.version = "0.0.9" + + s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= + s.authors = ["Ryan Waldron", "Dan Allen", "Jeremy McAnally"] + s.date = "2013-01-16" + s.description = "A pure Ruby processor to turn Asciidoc-formatted documents into HTML (and, eventually, other formats perhaps)." + s.email = "rew@erebor.com" + s.executables = ["asciidoctor"] + s.extra_rdoc_files = ["LICENSE"] + s.files = ["bin/asciidoctor", "LICENSE"] + s.homepage = "http://github.com/erebor/asciidoctor" + s.rdoc_options = ["--charset=UTF-8"] + s.require_paths = ["lib"] + s.rubyforge_project = "asciidoctor" + s.rubygems_version = "1.8.24" + s.summary = "Pure Ruby Asciidoc to HTML rendering." + + if s.respond_to? :specification_version then + s.specification_version = 2 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + else + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + end + else + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + end +end diff --git a/src/main/resources/specifications/tilt-1.3.3.gemspec b/src/main/resources/specifications/tilt-1.3.3.gemspec new file mode 100644 index 00000000..d46b6d1e --- /dev/null +++ b/src/main/resources/specifications/tilt-1.3.3.gemspec @@ -0,0 +1,97 @@ +# -*- encoding: utf-8 -*- + +Gem::Specification.new do |s| + s.name = "tilt" + s.version = "1.3.3" + + s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= + s.authors = ["Ryan Tomayko"] + s.date = "2011-08-25" + s.description = "Generic interface to multiple Ruby template engines" + s.email = "r@tomayko.com" + s.executables = ["tilt"] + s.files = ["bin/tilt"] + s.homepage = "http://github.com/rtomayko/tilt/" + s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Tilt", "--main", "Tilt"] + s.require_paths = ["lib"] + s.rubygems_version = "1.8.24" + s.summary = "Generic interface to multiple Ruby template engines" + + if s.respond_to? :specification_version then + s.specification_version = 2 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 2.2.11"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, [">= 0"]) + else + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 2.2.11"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + end + else + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 2.2.11"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, [">= 0"]) + end +end diff --git a/src/test/groovy/org/asciidoc/maven/test/AsciidoctorMojoTest.groovy b/src/test/groovy/org/asciidoc/maven/test/AsciidoctorMojoTest.groovy new file mode 100644 index 00000000..284f492d --- /dev/null +++ b/src/test/groovy/org/asciidoc/maven/test/AsciidoctorMojoTest.groovy @@ -0,0 +1,47 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2013, Red Hat, Inc., and individual contributors + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.asciidoc.maven.test + +import org.asciidoc.maven.AsciidoctorMojo +import spock.lang.Specification + +/** + * + */ +class AsciidoctorMojoTest extends Specification { + def "renders docbook"() { + when: + File srcDir = new File('target/test-classes/src/asciidoc') + File outputDir = new File('target/asciidoc-output') + + if (!outputDir.exists()) + outputDir.mkdir() + + AsciidoctorMojo mojo = new AsciidoctorMojo() + mojo.backend = 'docbook' + mojo.sourceDirectory = srcDir + mojo.outputDirectory = outputDir + mojo.execute() + then: + outputDir.list().toList().isEmpty() == false + outputDir.list().toList().contains('sample.xml') + + File sampleOutput = new File('sample.xml', outputDir) + sampleOutput.totalSpace > 0 + } +} diff --git a/src/test/resources/src/asciidoc/sample.asciidoc b/src/test/resources/src/asciidoc/sample.asciidoc new file mode 100644 index 00000000..0b8061ee --- /dev/null +++ b/src/test/resources/src/asciidoc/sample.asciidoc @@ -0,0 +1,26 @@ +Document Title +============== +Doc Writer +:idprefix: id_ + +Preamble paragraph. + +NOTE: This is test, only a test. + +== Section A + +*Section A* paragraph. + +=== Section A Subsection + +*Section A* 'subsection' paragraph. + +== Section B + +*Section B* paragraph. + +.Section B list +* Item 1 +* Item 2 +* Item 3 +