]> gitweb.factorcode.org Git - factor.git/blobdiff - unmaintained/4DNav/space-file-decoder/space-file-decoder.factor
tools.test: Make the flag public. Finish porting tester changes to fuzzer.
[factor.git] / unmaintained / 4DNav / space-file-decoder / space-file-decoder.factor
old mode 100755 (executable)
new mode 100644 (file)
index 8ef5c9e..92f39e2
@@ -1,55 +1,64 @@
-! Copyright (C) 2008 Jeff Bigot\r
-! See http://factorcode.org/license.txt for BSD license.\r
-USING: adsoda xml xml.utilities xml.dispatch accessors combinators\r
-sequences math.parser kernel splitting values continuations ;\r
-IN: 4DNav.space-file-decoder\r
-\r
-: decode-number-array ( x -- y )  "," split [ string>number ] map ;\r
-\r
-PROCESS: adsoda-read-model ( tag -- )\r
-\r
-TAG: dimension adsoda-read-model children>> first string>number ;\r
-TAG: direction adsoda-read-model children>> first decode-number-array ;\r
-TAG: color     adsoda-read-model children>> first decode-number-array ;\r
-TAG: name      adsoda-read-model children>> first ;\r
-TAG: face      adsoda-read-model children>> first decode-number-array ;\r
-\r
-TAG: solid adsoda-read-model \r
-    <solid> swap  \r
-    { \r
-        [ "dimension" tag-named adsoda-read-model >>dimension ] \r
-        [ "name"      tag-named adsoda-read-model >>name ] \r
-        [ "color"     tag-named adsoda-read-model >>color ] \r
-        [ "face"      tags-named [ adsoda-read-model cut-solid ] each ] \r
-    } cleave\r
-    ensure-adjacencies\r
-;\r
-\r
-TAG: light adsoda-read-model \r
-   <light> swap  \r
-    { \r
-        [ "direction" tag-named adsoda-read-model >>direction ] \r
-        [ "color"     tag-named adsoda-read-model >>color ] \r
-    } cleave\r
-;\r
-\r
-TAG: space adsoda-read-model \r
-    <space> swap  \r
-    { \r
-        [ "dimension" tag-named adsoda-read-model >>dimension ] \r
-        [ "name"      tag-named adsoda-read-model >>name ] \r
-        [ "color"     tag-named adsoda-read-model >>ambient-color ] \r
-        [ "solid"     tags-named [ adsoda-read-model suffix-solids ] each ] \r
-        [ "light"     tags-named [ adsoda-read-model suffix-lights ] each ]         \r
-    } cleave\r
-;\r
-\r
-: read-model-file ( path -- x )\r
-  dup\r
-  [\r
-    [ file>xml "space" tags-named first adsoda-read-model ] \r
-    [ drop <space> ] recover \r
-  ] [  drop <space> ] if \r
-\r
-;\r
-\r
+! Copyright (C) 2008 Jeff Bigot
+! See http://factorcode.org/license.txt for BSD license.
+USING: adsoda xml xml.traversal xml.syntax accessors 
+combinators sequences math.parser kernel splitting values 
+continuations ;
+IN: 4DNav.space-file-decoder
+
+: decode-number-array ( x -- y )  
+    "," split [ string>number ] map ;
+
+TAGS: adsoda-read-model ( tag -- model )
+
+TAG: dimension adsoda-read-model 
+    children>> first string>number ;
+TAG: direction adsoda-read-model 
+    children>> first decode-number-array ;
+TAG: color     adsoda-read-model 
+    children>> first decode-number-array ;
+TAG: name      adsoda-read-model 
+    children>> first ;
+TAG: face      adsoda-read-model 
+    children>> first decode-number-array ;
+
+TAG: solid adsoda-read-model 
+    <solid> swap  
+    { 
+        [ "dimension" tag-named adsoda-read-model >>dimension ]
+        [ "name"      tag-named adsoda-read-model >>name ] 
+        [ "color"     tag-named adsoda-read-model >>color ] 
+        [ "face"      
+            tags-named [ adsoda-read-model cut-solid ] each ] 
+    } cleave
+    ensure-adjacencies
+;
+
+TAG: light adsoda-read-model 
+   <light> swap  
+    { 
+        [ "direction" tag-named adsoda-read-model >>direction ]
+        [ "color"     tag-named adsoda-read-model >>color ] 
+    } cleave
+;
+
+TAG: space adsoda-read-model 
+    <space> swap  
+    { 
+        [ "dimension" tag-named adsoda-read-model >>dimension ]
+        [ "name"      tag-named adsoda-read-model >>name ] 
+        [ "color"     tag-named 
+            adsoda-read-model >>ambient-color ] 
+        [ "solid"     tags-named 
+            [ adsoda-read-model suffix-solids ] each ] 
+        [ "light"     tags-named 
+            [ adsoda-read-model suffix-lights ] each ]
+    } cleave
+;
+
+: read-model-file ( path -- x )
+    [
+        [ file>xml "space" tag-named adsoda-read-model ] 
+        [ 2drop <space> ] recover 
+    ] [ <space> ] if*
+;
+