REBOL [ Title: "Indent {}" Date: 24-Jan-2003 Version: 2.0.0 File: %indent.r Author: "Gregory Pecheret" Usage: "rebol -s indent.r CATx.cpp Cfgx.java " Purpose: {This utility is to indent programs using {} as blocks like CPP or Java. Almost a one-liner !!} Email: gregory.pecheret@free.fr Web: http://reviewer.free.fr Category: [util text 3] ] indent: func [f [file!]][ t: 0 code: detab read f code: next code while [not tail? code][ if newline = first code [loop t [insert next code tab]] if #"{" = first code [t: t + 1] if #"}" = first code [t: t - 1] either all [#" " = first back code #" " = first code] [remove back code] [code: next code] ] code: head code code: next code while [not tail? code][ either all [tab = first back code #" " = first code] [remove code] [code: next code] ] code: head code code: next code while [not tail? code][ either all [tab = first back code #"}" = first code] [remove back code] [code: next code] ] code: head code write f code print rejoin [f " done"] ] args: copy system/options/args while [not tail? args] [ indent to-file first args args: next args ]