html.parser.printer: reasonable tree-structured formatting with prettyprint-html

db4
Björn Lindqvist 2013-07-22 14:05:14 +02:00 committed by John Benediktsson
parent 490091eb22
commit 68381dd571
1 changed files with 13 additions and 12 deletions

View File

@ -1,8 +1,8 @@
USING: accessors assocs html.parser html.parser.utils combinators
continuations hashtables
hashtables.private io kernel math
namespaces prettyprint quotations sequences splitting
strings ;
hashtables.private io kernel make math
namespaces prettyprint quotations sequences sequences.repeating splitting
strings unicode.categories ;
IN: html.parser.printer
SYMBOL: printer
@ -68,22 +68,23 @@ SYMBOL: tagstack
: prettyprint-html ( vector -- )
[
T{ html-prettyprinter } printer set
T{ html-prettyprinter } html-printer set
V{ } clone tagstack set
2 tab-width set
0 #indentations set
print-tags
] with-scope ;
: print-tabs ( -- )
tab-width get #indentations get * CHAR: \s <repetition> write ;
: tabs ( -- str )
" " tab-width get #indentations get * repeat ;
M: html-prettyprinter print-opening-tag ( tag -- )
print-tabs "<" write
name>> write
">\n" write ;
name>>
[ tabs "<" append ">\n" surround write ]
[ { "br" "img" } member? [ #indentations inc ] unless ] bi ;
M: html-prettyprinter print-closing-tag ( tag -- )
"</" write
name>> write
">" write ;
#indentations dec name>> tabs "</" append ">\n" surround write ;
M: html-prettyprinter print-text-tag ( tag -- )
text>> [ blank? ] trim [ tabs "\n" surround write ] unless-empty ;