From 53857fdfee998019c90d8d8b1d126f2a0db17cc8 Mon Sep 17 00:00:00 2001
From: Slava Pestov <slava@slava-pestovs-macbook-pro.local>
Date: Fri, 23 May 2008 22:32:39 -0500
Subject: [PATCH] Move farkup, code, inspector components to html.components

---
 extra/html/components/components-tests.factor | 27 +++++++++++++++++--
 extra/html/components/components.factor       | 23 +++++++++++++++-
 2 files changed, 47 insertions(+), 3 deletions(-)

diff --git a/extra/html/components/components-tests.factor b/extra/html/components/components-tests.factor
index 0bd5410a3b..d09f8b6b42 100644
--- a/extra/html/components/components-tests.factor
+++ b/extra/html/components/components-tests.factor
@@ -1,6 +1,7 @@
 IN: html.components.tests
-USING: html.components tools.test kernel io.streams.string
-io.streams.null accessors ;
+USING: tools.test kernel io.streams.string
+io.streams.null accessors inspector html.streams
+html.components ;
 
 [ ] [ blank-values ] unit-test
 
@@ -145,3 +146,25 @@ M: link-test link-href drop "http://www.apple.com/foo&bar" ;
 [ "<html>arbitrary <b>markup</b> for the win!</html>" ] [
     [ "html" html render ] with-string-writer
 ] unit-test
+
+[ ] [ "int x = 4;" "code" set-value ] unit-test
+
+[ ] [ "java" "mode" set-value ] unit-test
+
+[ "<span class='KEYWORD3'>int</span> x <span class='OPERATOR'>=</span> <span class='DIGIT'>4</span>;\n" ] [
+    [ "code" <code> "mode" >>mode render ] with-string-writer
+] unit-test
+
+[ ] [ "-foo\n-bar" "farkup" set-value ] unit-test
+
+[ "<ul><li>foo</li><li>bar</li></ul>" ] [
+    [ "farkup" farkup render ] with-string-writer
+] unit-test
+
+[ ] [ { 1 2 3 } "object" set-value ] unit-test
+
+[ t ] [
+    [ "object" inspector render ] with-string-writer
+    [ "object" value [ describe ] with-html-stream ] with-string-writer
+    =
+] unit-test
diff --git a/extra/html/components/components.factor b/extra/html/components/components.factor
index df1d1faa72..9c762eaa3a 100644
--- a/extra/html/components/components.factor
+++ b/extra/html/components/components.factor
@@ -4,7 +4,7 @@ USING: accessors kernel namespaces io math.parser assocs classes
 classes.tuple words arrays sequences splitting mirrors
 hashtables combinators continuations math strings
 fry locals calendar calendar.format xml.entities validators
-html.elements ;
+html.elements html.streams xmode.code2html farkup inspector ;
 IN: html.components
 
 SYMBOL: values
@@ -144,6 +144,27 @@ M: link render*
         link-title object>string escape-string write
     </a> ;
 
+! XMode code component
+TUPLE: code mode ;
+
+: <code> ( -- code )
+    code new ;
+
+M: code render*
+    [ string-lines ] [ drop ] [ mode>> value ] tri* htmlize-lines ;
+
+! Farkup component
+SINGLETON: farkup
+
+M: farkup render*
+    2drop string-lines "\n" join convert-farkup write ;
+
+! Inspector component
+SINGLETON: inspector
+
+M: inspector render*
+    2drop [ describe ] with-html-stream ;
+
 ! HTML component
 SINGLETON: html