# frozen_string_literal: true # Full demo of all Notare features # Run with: bundle exec ruby examples/full_demo.rb require_relative "../lib/notare" OUTPUT_FILE = File.expand_path("../example.docx", __dir__) FIXTURES_DIR = File.expand_path("../test/fixtures", __dir__) Notare::Document.create(OUTPUT_FILE) do |doc| # ============================================================================ # Custom Styles # ============================================================================ doc.define_style :highlight, bold: true, color: "FF6600" doc.define_style :success, color: "228B22", italic: true doc.define_style :centered_large, align: :center, size: 16, bold: true # ============================================================================ # Title and Introduction # ============================================================================ doc.h1 "Notare Feature Demo" doc.p "A comprehensive example of all supported features", style: :subtitle # ============================================================================ # 1. Text Formatting # ============================================================================ doc.h2 "1. Text Formatting" doc.p do doc.text "This paragraph demonstrates " doc.b { doc.text "bold" } doc.text ", " doc.i { doc.text "italic" } doc.text ", " doc.u { doc.text "underlined" } doc.text ", and " doc.b do doc.i do doc.u { doc.text "combined" } end end doc.text " formatting." end # ============================================================================ # 2. Headings # ============================================================================ doc.h2 "2. Headings" doc.h3 "This is Heading 3" doc.h4 "This is Heading 4" doc.h5 "This is Heading 5" doc.h6 "This is Heading 6" # ============================================================================ # 3. Built-in Styles # ============================================================================ doc.h2 "3. Built-in Styles" doc.p "This is styled as a title", style: :title doc.p "This is styled as a subtitle", style: :subtitle doc.p "This is styled as a quote - perfect for citations and quotations.", style: :quote doc.p "def hello; puts \"world\"; end", style: :code # ============================================================================ # 4. Custom Styles # ============================================================================ doc.h2 "4. Custom Styles" doc.p "This text uses our custom highlight style!", style: :highlight doc.p do doc.text "Mixed styles: " doc.text "success message", style: :success doc.text " and " doc.text "highlighted text", style: :highlight doc.text " in one paragraph." end doc.p "Centered and large text", style: :centered_large # ============================================================================ # 5. Lists # ============================================================================ doc.h2 "5. Lists" doc.h3 "Bullet List" doc.ul do doc.li "First item" doc.li "Second item" doc.li do doc.text "Item with " doc.b { doc.text "bold" } doc.text " text" end end doc.h3 "Numbered List" doc.ol do doc.li "Step one" doc.li "Step two" doc.li "Step three" end # ============================================================================ # 6. Tables # ============================================================================ doc.h2 "6. Tables" doc.table do doc.tr do doc.td { doc.b { doc.text "Feature" } } doc.td { doc.b { doc.text "Status" } } doc.td { doc.b { doc.text "Notes" } } end doc.tr do doc.td "Paragraphs" doc.td { doc.text "Complete", style: :success } doc.td "Basic text support" end doc.tr do doc.td "Formatting" doc.td { doc.text "Complete", style: :success } doc.td "Bold, italic, underline" end doc.tr do doc.td "Headings" doc.td { doc.text "Complete", style: :success } doc.td "h1 through h6" end doc.tr do doc.td "Styles" doc.td { doc.text "Complete", style: :success } doc.td "Built-in and custom" end doc.tr do doc.td "Images" doc.td { doc.text "Complete", style: :success } doc.td "PNG and JPEG" end end # ============================================================================ # 7. Images # ============================================================================ doc.h2 "7. Images" doc.p "Image with explicit dimensions:" doc.p do doc.image File.join(FIXTURES_DIR, "test.png"), width: "2in", height: "2in" end doc.p "Inline image with text:" doc.p do doc.text "Before " doc.image File.join(FIXTURES_DIR, "test.jpg"), width: "0.75in", height: "0.75in" doc.text " After" end doc.p "Image in a table:" doc.table do doc.tr do doc.td "Description" doc.td do doc.image File.join(FIXTURES_DIR, "test.png"), width: "1in", height: "1in" end end end # ============================================================================ # 8. Combined Features # ============================================================================ doc.h2 "8. Combined Features" doc.p do doc.text "This final paragraph combines " doc.b { doc.text "multiple" } doc.text " " doc.i { doc.text "formatting" } doc.text " options with " doc.text "custom styles", style: :highlight doc.text " to demonstrate the full power of Notare." end doc.p "End of demo document.", style: :centered_large end puts "Created #{OUTPUT_FILE}"