REBOL [ Title: "Untitled" Date: 14-Jun-2002/9:51:42-7:00 Version: 1.0.0 File: %content-management.r Author: "Christopher Ross-Gill" Rights: "Chris and ALA readers" Purpose: "test" Email: pchadwick@internews.org Web: http://www.alistapart.com Category: [ldc] ] content-block: read/lines %content.txt while [empty-string: find content-block ""][remove empty-string] structure: copy [] foreach paragraph content-block [ parsed?: parse paragraph [ "Site Title:" copy para to end (repend structure ['site-title trim para]) | "New Page:" copy para to "(" skip copy id to ")" skip (repend structure ['h1 trim para id]) | "===" copy para to end (repend structure ['h2 para]) | "..." copy para to end (repend structure ['li para]) ] if not parsed? [repend structure ['p paragraph]] ] format-text: func [text [string!]][ replace/all text {&} {&} replace/all text { "} { “} if (first text) = #"^"" [replace text {"} {&#8220;}] replace/all text {"} {”} replace/all text { '} { ‘} if (first text) = #"'" [replace text {'} {&#8216;}] replace/all text {'} {’} replace/all text {--} {–} replace/all text { - } {–} replace/all text {. } {.  } parse/all text [ any [ thru {##} copy link to {##} 2 skip copy hlink to {##} ( href: {} hlink {} ] ) ] to end ] parse/all text [ any [ thru {**} copy emphasised to {**} ( replace text rejoin [ {**} emphasised {**} ] rejoin [ {} emphasised {} ] ) ] to end ] replace/all text {@} {@} return text ] punch-template: func [ site-title [string!] page-title [string!] page-menu [string!] page-content [string!] ][ template: read %template.html replace template <% page-title %> rejoin [site-title ": " page-title] replace template <% page-body %> rejoin [newline page-menu newline page-content newline] return template ] pages: copy [] menu: copy "" parse structure [ (append menu ) ] if not exists? %pages/ [make-dir %pages/] foreach [file content] pages [ write join %pages/ file punch-template title header menu content ]