diff --git a/lib/go/camli/index/doc.go b/lib/go/camli/index/doc.go new file mode 100644 index 000000000..5f8a50cc5 --- /dev/null +++ b/lib/go/camli/index/doc.go @@ -0,0 +1,32 @@ +/* +Copyright 2011 Google Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Package index provides a generic indexing system on top of an abstract +index storage system (IndexStorage). + +The following keys & values are populated by receiving blobs and queried +for search operations: + +* Recent Permanodes + "recpn:::" == "" + where reverse-modtime flips each digit to '9'- and prepends "rt" (for reverse time) + "2011-11-27T01:23:45Z" + ==> "rt7988-88-72T98:76:54Z" + + +*/ +package index diff --git a/lib/go/camli/index/index_test.go b/lib/go/camli/index/index_test.go new file mode 100644 index 000000000..514795963 --- /dev/null +++ b/lib/go/camli/index/index_test.go @@ -0,0 +1,29 @@ +/* +Copyright 2011 Google Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package index + +import ( + "testing" +) + +func TestReverseTimeString(t *testing.T) { + got := reverseTimeString("2011-11-27T01:23:45Z") + want := "rt7988-88-72T98:76:54Z" + if got != want { + t.Errorf("reverseTimeString = %q, want %q", got, want) + } +} diff --git a/lib/go/camli/index/reversetime.go b/lib/go/camli/index/reversetime.go new file mode 100644 index 000000000..1cbd555d3 --- /dev/null +++ b/lib/go/camli/index/reversetime.go @@ -0,0 +1,34 @@ +/* +Copyright 2011 Google Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package index + +import () + +func reverseTimeString(s string) string { + b := make([]byte, 0, len(s)+2) + b = append(b, 'r') + b = append(b, 't') + for i := 0; i < len(s); i++ { + c := s[i] + if c >= '0' && c <= '9' { + b = append(b, '0'+('9'-c)) + } else { + b = append(b, c) + } + } + return string(b) +}