Author: coke
Date: Fri Oct 21 10:25:03 2005
New Revision: 9532

Modified:
   trunk/runtime/parrot/library/JSON.imc
Log:
Sort hash by key.



Modified: trunk/runtime/parrot/library/JSON.imc
==============================================================================
--- trunk/runtime/parrot/library/JSON.imc       (original)
+++ trunk/runtime/parrot/library/JSON.imc       Fri Oct 21 10:25:03 2005
@@ -259,6 +259,23 @@ done:
   .param int pretty
   .param int indent
 
+  .local pmc keys
+  keys = new .ResizablePMCArray
+  .local pmc iter 
+  iter = new .Iterator, thing
+  iter = 0
+  .local string key
+
+iter_loop:
+  unless iter, done_iter
+  shift key, iter
+  push keys, key
+  goto iter_loop
+
+done_iter:
+  $P0 = find_global 'Data::Sort', 'simple' 
+  $P0( keys ) 
+
   .local string result,separator
 
   result = '{'
@@ -279,14 +296,10 @@ pre_loop:
   len = thing
   unless pretty goto loop
   result .= "\n"
-  .local pmc iter 
-  iter = new .Iterator, thing
-  iter = 0
-  .local string key
 
 loop:
   if pos >= len goto done_loop
-  key = shift iter
+  key = keys[pos]
   $S0 = _json_string(key,pretty,indent)
   result .= $S0
   result .= separator
@@ -321,7 +334,8 @@ done:
   .return (result)
 .end
 
-.include  "library/Data/Escape.imc"
+.include  'library/Data/Escape.imc'
+.include  'library/Data/Sort.imc'
 
 =head1 TODO
 
@@ -331,8 +345,6 @@ done:
 
 =item Pending a more comprehensive test suite from Roger Browne
 
-=item String Escaping
-
 =item implement _jsan_to_pmc
 
 =cut

Reply via email to