with /core on linux ( REBOL 2.2.0.4.2 ) this hangs, with view/beta4 it runs. ?! parse script blk-rule: [ .. str: (print copy/part str 10) prints lots of REBOL [ Ti And, my script with rebol[] in it fails, of course. will change to [join "RE" "BOL"] :-) i like this script :-) Volker > Here's a useful little script for those of you who are > diligently working on REBOL this Memorial Day weekend. > > -Carl > > REBOL [ > Title: "REBOL Script Cleaner" > Author: "Carl Sassenrath" > File: %clean-script.r > Date: 27-May-2000 > Email: [EMAIL PROTECTED] > Purpose: { > Cleans REBOL scripts by parsing the REBOL code > and supplying standard indentation and spacing. > } > Note: { > This script produces STANDARD script indentation and > spacing. No doubt you will want to modify it to use > your own rules. Send your enhancements and I will > consider adding them to the distribution... but keep > this header intact and keep the code clean. No hacks. > } > Category: [script util text 3] > History: [ > "Carl Sassenrath" 1.0.0 27-May-2000 "Original program." > ] > ] > > script-cleaner: make object! [ > > out: none ; output text > spaced: off ; add extra bracket spacing > indent: "" ; holds indentation tabs > > emit-line: func [] [append out newline] > > emit-space: func [pos] [ > append out either newline = last out [indent][ > pick [#" " ""] found? any [ > spaced > not any [find "[(" last out find ")]" first pos] > ] > ] > ] > > emit: func [p1 p2] [emit-space p1 append out copy/part p1 p2] > > set 'clean-script func [ > "Returns new script text with standard spacing." > script "Original Script text" > /spacey "Optional spaces near brackets and parens" > /local str new > ][ > spaced: found? spacey > out: append clear copy script newline > parse script blk-rule: [ > some [ > str: > newline (emit-line) | > #";" thru newline new: (emit str new) | > [#"[" | #"("] (emit str 1 append indent tab) blk-rule | > [#"]" | #")"] (remove indent emit str 1) | > skip (set [value new] load/next str emit str new) :new > ] > ] > remove out ; remove first char > ] > ] > > ;Example: print clean-script read %clean-script.r > > > >