public
Description: StrokeDB is an embeddable distributed document database written in Ruby
Homepage: http://strokedb.com/
Clone URL: git://github.com/yrashk/strokedb.git
Default key encoder for Meta
yrashk (author)
Sat May 24 13:23:48 -0700 2008
commit  f1c717512dd43956ca4bfca09b8d3da905ca1013
tree    fa2ef64acb6f942440d2a1b5ffa32a0dfdb79e0a
parent  e4cf4984b94eeff4b1921f943431d7d78c7c3513
...
76
77
78
 
 
 
 
 
 
 
79
80
81
...
86
87
88
 
89
90
91
...
98
99
100
 
101
102
103
...
125
126
127
 
 
128
129
130
...
76
77
78
79
80
81
82
83
84
85
86
87
88
...
93
94
95
96
97
98
99
...
106
107
108
109
110
111
112
...
134
135
136
137
138
139
140
141
0
@@ -76,6 +76,13 @@ module StrokeDB
0
     end
0
   end
0
   
0
+  class <<Meta
0
+    AT_SIGN = "#".freeze
0
+    def default_key_encode
0
+      AT_SIGN + meta_uuid
0
+    end
0
+  end
0
+  
0
   module DefaultKeyEncoder
0
     
0
     # nil       -> "A"  
0
@@ -86,6 +93,7 @@ module StrokeDB
0
     # Time      -> "T<xmlschema>"
0
     # Array     -> "<elem1 elem2 ...>"
0
     # Document  -> "@<UUID>"
0
+    # Meta      -> "#<UUID>"
0
     # 
0
     def self.encode(json)
0
       json.default_key_encode
0
@@ -98,6 +106,7 @@ module StrokeDB
0
     S = "S".freeze
0
     T = "T".freeze
0
     X = "@".freeze
0
+    M = "#".freeze
0
     S_= " ".freeze
0
     R = (1..-1).freeze
0
     
0
@@ -125,6 +134,8 @@ module StrokeDB
0
           token[R]
0
         when X
0
           token[R]
0
+        when M
0
+          token[R]
0
         when T
0
           Time.xmlschema(token[R]).localtime
0
         else
...
85
86
87
 
 
 
 
 
88
89
90
...
85
86
87
88
89
90
91
92
93
94
95
0
@@ -85,6 +85,11 @@ describe DefaultKeyEncoder do
0
     arr2.should == arr
0
   end
0
   
0
+  it "should decode meta modules" do
0
+    meta = DefaultKeyEncoder.decode(DefaultKeyEncoder.encode(Meta))
0
+    meta.should == Meta.meta_uuid
0
+  end
0
+  
0
   it "should encode/decode string with spaces gracefully" do
0
     DefaultKeyEncoder.decode(DefaultKeyEncoder.encode("a b")).should == ["a", "b"]
0
     DefaultKeyEncoder.decode(DefaultKeyEncoder.encode(["1", "a b"])).should == ["1", "a", "b"]

Comments