strc 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/Gemfile +13 -0
- data/Gemfile.lock +20 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +45 -0
- data/Rakefile +53 -0
- data/VERSION +1 -0
- data/lib/strc.rb +83 -0
- data/strc.gemspec +63 -0
- data/test/helper.rb +18 -0
- data/test/test_strc.rb +129 -0
- metadata +109 -0
data/.document
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
# Add dependencies required to use your gem here.
|
3
|
+
# Example:
|
4
|
+
# gem "activesupport", ">= 2.3.5"
|
5
|
+
|
6
|
+
# Add dependencies to develop your gem here.
|
7
|
+
# Include everything needed to run rake, tests, features, etc.
|
8
|
+
group :development do
|
9
|
+
gem "shoulda", ">= 0"
|
10
|
+
gem "bundler", "~> 1.0.0"
|
11
|
+
gem "jeweler", "~> 1.5.2"
|
12
|
+
gem "rcov", ">= 0"
|
13
|
+
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
git (1.2.5)
|
5
|
+
jeweler (1.5.2)
|
6
|
+
bundler (~> 1.0.0)
|
7
|
+
git (>= 1.2.5)
|
8
|
+
rake
|
9
|
+
rake (0.8.7)
|
10
|
+
rcov (0.9.9)
|
11
|
+
shoulda (2.11.3)
|
12
|
+
|
13
|
+
PLATFORMS
|
14
|
+
x86-mingw32
|
15
|
+
|
16
|
+
DEPENDENCIES
|
17
|
+
bundler (~> 1.0.0)
|
18
|
+
jeweler (~> 1.5.2)
|
19
|
+
rcov
|
20
|
+
shoulda
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 'Chris
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
= STRC - Super Terrible Redis Clone
|
2
|
+
|
3
|
+
STRC is a poor attempt to make a native Ruby clone of Redis. Why would you want that? Well, who knows. Maybe you don't feel like installing Redis for some reason. Maybe you need to be able to run tests on a machine without having to install Redis. Maybe you like badly implemented clones.
|
4
|
+
|
5
|
+
One thing STRC does kind of have going for it is that it's much more lazy in regards to what you give it. Since you're passing it Ruby objects, that means you could just plop any old object in as a key or a value. If that's something you're into.
|
6
|
+
|
7
|
+
== Usage
|
8
|
+
|
9
|
+
STRC is distributed as a gem. To install:
|
10
|
+
|
11
|
+
% gem install strc
|
12
|
+
|
13
|
+
Now you've got it all up in your computer. To use:
|
14
|
+
|
15
|
+
require 'rubygems'
|
16
|
+
require 'strc'
|
17
|
+
|
18
|
+
strc = STRC.new
|
19
|
+
|
20
|
+
Now you could start passing it commands, if they've been implemented.
|
21
|
+
|
22
|
+
=== Getting and Setting!
|
23
|
+
>> strc.set "foo", "bar"
|
24
|
+
=> "OK"
|
25
|
+
>> strc.get "foo"
|
26
|
+
=> "bar"
|
27
|
+
|
28
|
+
=== Sets!
|
29
|
+
>> strc.sadd "stuff", "abc"
|
30
|
+
=> 1
|
31
|
+
>> strc.sadd "stuff", "123", "blah"
|
32
|
+
=> 2
|
33
|
+
>> strc.scard "stuff"
|
34
|
+
=> 3
|
35
|
+
>> strc.sismember "stuff", "abc"
|
36
|
+
=> true
|
37
|
+
>> strc.sismember "stuff", "xyz"
|
38
|
+
=> false
|
39
|
+
>> strc.srem "stuff", "blah"
|
40
|
+
=> true
|
41
|
+
>> strc.smembers "stuff"
|
42
|
+
=> ["abc", "123"]
|
43
|
+
|
44
|
+
== History
|
45
|
+
* 0.0.1 - Initial release. Does some basic things.
|
data/Rakefile
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
begin
|
4
|
+
Bundler.setup(:default, :development)
|
5
|
+
rescue Bundler::BundlerError => e
|
6
|
+
$stderr.puts e.message
|
7
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
+
exit e.status_code
|
9
|
+
end
|
10
|
+
require 'rake'
|
11
|
+
|
12
|
+
require 'jeweler'
|
13
|
+
Jeweler::Tasks.new do |gem|
|
14
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
15
|
+
gem.name = "strc"
|
16
|
+
gem.homepage = "http://github.com/ctoneal/strc"
|
17
|
+
gem.license = "MIT"
|
18
|
+
gem.summary = %Q{Super Terrible Redis Clone}
|
19
|
+
gem.description = %Q{STRC is a terrible Ruby clone of Redis}
|
20
|
+
gem.email = "ctoneal@gmail.com"
|
21
|
+
gem.authors = ["Chris O'Neal"]
|
22
|
+
# Include your dependencies below. Runtime dependencies are required when using your gem,
|
23
|
+
# and development dependencies are only needed for development (ie running rake tasks, tests, etc)
|
24
|
+
# gem.add_runtime_dependency 'jabber4r', '> 0.1'
|
25
|
+
# gem.add_development_dependency 'rspec', '> 1.2.3'
|
26
|
+
end
|
27
|
+
Jeweler::RubygemsDotOrgTasks.new
|
28
|
+
|
29
|
+
require 'rake/testtask'
|
30
|
+
Rake::TestTask.new(:test) do |test|
|
31
|
+
test.libs << 'lib' << 'test'
|
32
|
+
test.pattern = 'test/**/test_*.rb'
|
33
|
+
test.verbose = true
|
34
|
+
end
|
35
|
+
|
36
|
+
require 'rcov/rcovtask'
|
37
|
+
Rcov::RcovTask.new do |test|
|
38
|
+
test.libs << 'test'
|
39
|
+
test.pattern = 'test/**/test_*.rb'
|
40
|
+
test.verbose = true
|
41
|
+
end
|
42
|
+
|
43
|
+
task :default => :test
|
44
|
+
|
45
|
+
require 'rake/rdoctask'
|
46
|
+
Rake::RDocTask.new do |rdoc|
|
47
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
48
|
+
|
49
|
+
rdoc.rdoc_dir = 'rdoc'
|
50
|
+
rdoc.title = "strc #{version}"
|
51
|
+
rdoc.rdoc_files.include('README*')
|
52
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
53
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.0.1
|
data/lib/strc.rb
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
class STRC
|
2
|
+
Exception = Class.new(StandardError)
|
3
|
+
|
4
|
+
def initialize
|
5
|
+
@dict = {}
|
6
|
+
end
|
7
|
+
|
8
|
+
# Set a given key to a value
|
9
|
+
def set(key, value)
|
10
|
+
@dict[key] = value
|
11
|
+
return "OK"
|
12
|
+
end
|
13
|
+
|
14
|
+
# Get the value for the given key
|
15
|
+
def get(key)
|
16
|
+
@dict[key]
|
17
|
+
end
|
18
|
+
|
19
|
+
# Add a member to a set
|
20
|
+
def sadd(key, *args)
|
21
|
+
if args.length < 1
|
22
|
+
raise STRC::Exception.new "Wrong number of arguments (1 for 2)"
|
23
|
+
end
|
24
|
+
if @dict.has_key?(key)
|
25
|
+
if @dict[key].class == Array
|
26
|
+
@dict[key] << args
|
27
|
+
else
|
28
|
+
raise STRC::Exception.new "ERR Operation against a key holding the wrong kind of value"
|
29
|
+
end
|
30
|
+
else
|
31
|
+
@dict[key] = args
|
32
|
+
end
|
33
|
+
return args.length
|
34
|
+
end
|
35
|
+
|
36
|
+
# Remove a member from a set
|
37
|
+
def srem(key, member)
|
38
|
+
if sismember(key, member)
|
39
|
+
@dict[key].delete_at(@dict[key].index(member))
|
40
|
+
return true
|
41
|
+
else
|
42
|
+
return false
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# Determine if the given value is a member of the set at key
|
47
|
+
def sismember(key, member)
|
48
|
+
if @dict.has_key?(key)
|
49
|
+
if @dict[key].class == Array
|
50
|
+
return true unless @dict[key].index(member).nil?
|
51
|
+
else
|
52
|
+
raise STRC::Exception .new "ERR Operation against a key holding the wrong kind of value"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
return false
|
56
|
+
end
|
57
|
+
|
58
|
+
# Returns an array of members of the set
|
59
|
+
def smembers(key)
|
60
|
+
if @dict.has_key?(key)
|
61
|
+
if @dict[key].class == Array
|
62
|
+
return @dict[key]
|
63
|
+
else
|
64
|
+
raise STRC::Exception .new "ERR Operation against a key holding the wrong kind of value"
|
65
|
+
end
|
66
|
+
else
|
67
|
+
return []
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
# Gets the length of a set
|
72
|
+
def scard(key)
|
73
|
+
if @dict.has_key?(key)
|
74
|
+
if @dict[key].class == Array
|
75
|
+
@dict[key].length
|
76
|
+
else
|
77
|
+
raise STRC::Exception.new "ERR Operation against a key holding the wrong kind of value"
|
78
|
+
end
|
79
|
+
else
|
80
|
+
return 0
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
data/strc.gemspec
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{strc}
|
8
|
+
s.version = "0.0.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Chris O'Neal"]
|
12
|
+
s.date = %q{2011-07-14}
|
13
|
+
s.description = %q{STRC is a terrible Ruby clone of Redis}
|
14
|
+
s.email = %q{ctoneal@gmail.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
"Gemfile",
|
22
|
+
"Gemfile.lock",
|
23
|
+
"LICENSE.txt",
|
24
|
+
"README.rdoc",
|
25
|
+
"Rakefile",
|
26
|
+
"VERSION",
|
27
|
+
"lib/strc.rb",
|
28
|
+
"strc.gemspec",
|
29
|
+
"test/helper.rb",
|
30
|
+
"test/test_strc.rb"
|
31
|
+
]
|
32
|
+
s.homepage = %q{http://github.com/ctoneal/strc}
|
33
|
+
s.licenses = ["MIT"]
|
34
|
+
s.require_paths = ["lib"]
|
35
|
+
s.rubygems_version = %q{1.6.2}
|
36
|
+
s.summary = %q{Super Terrible Redis Clone}
|
37
|
+
s.test_files = [
|
38
|
+
"test/helper.rb",
|
39
|
+
"test/test_strc.rb"
|
40
|
+
]
|
41
|
+
|
42
|
+
if s.respond_to? :specification_version then
|
43
|
+
s.specification_version = 3
|
44
|
+
|
45
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
46
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
47
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
48
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
49
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
50
|
+
else
|
51
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
52
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
53
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
54
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
55
|
+
end
|
56
|
+
else
|
57
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
58
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
59
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
60
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
data/test/helper.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
begin
|
4
|
+
Bundler.setup(:default, :development)
|
5
|
+
rescue Bundler::BundlerError => e
|
6
|
+
$stderr.puts e.message
|
7
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
+
exit e.status_code
|
9
|
+
end
|
10
|
+
require 'test/unit'
|
11
|
+
require 'shoulda'
|
12
|
+
|
13
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
14
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
15
|
+
require 'strc'
|
16
|
+
|
17
|
+
class Test::Unit::TestCase
|
18
|
+
end
|
data/test/test_strc.rb
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestStrc < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@test = STRC.new
|
6
|
+
end
|
7
|
+
context "initialization" do
|
8
|
+
should "create a new instance" do
|
9
|
+
assert_instance_of(STRC, @test)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
context "setting" do
|
14
|
+
should "be able to set the value of a new key" do
|
15
|
+
result = @test.set("test_key", 20)
|
16
|
+
assert_equal("OK", result)
|
17
|
+
end
|
18
|
+
|
19
|
+
should "be able to set the value of an existing key" do
|
20
|
+
@test.set("test_key", 20)
|
21
|
+
result = @test.set("test_key", 30)
|
22
|
+
assert_equal("OK", result)
|
23
|
+
end
|
24
|
+
|
25
|
+
should "be able to set different types as values" do
|
26
|
+
result = @test.set("test_key", "poop")
|
27
|
+
assert_equal("OK", result)
|
28
|
+
end
|
29
|
+
|
30
|
+
should "be able to set different types as keys" do
|
31
|
+
result = @test.set(15, "abcde")
|
32
|
+
assert_equal("OK", result)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context "getting" do
|
37
|
+
should "be able to get the value of a key" do
|
38
|
+
@test.set("test_key", 15)
|
39
|
+
result = @test.get("test_key")
|
40
|
+
assert_equal(15, result)
|
41
|
+
end
|
42
|
+
|
43
|
+
should "return nil for nonexistant keys" do
|
44
|
+
result = @test.get("blah")
|
45
|
+
assert_nil(result)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context "sets" do
|
50
|
+
context "sadd" do
|
51
|
+
should "create a new set" do
|
52
|
+
result = @test.sadd("test_key", "poop")
|
53
|
+
assert_equal(1, result)
|
54
|
+
end
|
55
|
+
|
56
|
+
should "be able to add multiple items" do
|
57
|
+
result = @test.sadd("test_key", "poop", "abc")
|
58
|
+
assert_equal(2, result)
|
59
|
+
end
|
60
|
+
|
61
|
+
should "be able to add to an existing set" do
|
62
|
+
@test.sadd("test_key", "poop")
|
63
|
+
result = @test.sadd("test_key", "blah")
|
64
|
+
assert_equal(1, result)
|
65
|
+
end
|
66
|
+
|
67
|
+
should "not be able to add to something not a set" do
|
68
|
+
@test.set("test_key", "blah")
|
69
|
+
assert_raise(STRC::Exception) { @test.sadd("test_key", "poop") }
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
context "sismember" do
|
74
|
+
should "return true if the set contains the object" do
|
75
|
+
@test.sadd("test_key", "poop", "blah", "abc")
|
76
|
+
result = @test.sismember("test_key", "poop")
|
77
|
+
assert(result)
|
78
|
+
end
|
79
|
+
|
80
|
+
should "return false if the set does not contain the object" do
|
81
|
+
@test.sadd("test_key", "poop", "blah", "abc")
|
82
|
+
result = @test.sismember("test_key", "xyz")
|
83
|
+
assert(!result)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
context "scard" do
|
88
|
+
should "return the number of items in the set" do
|
89
|
+
@test.sadd("test_key", "poop", "blah", "abc")
|
90
|
+
result = @test.scard("test_key")
|
91
|
+
assert_equal(3, result)
|
92
|
+
end
|
93
|
+
|
94
|
+
should "return 0 for nonexistant keys" do
|
95
|
+
result = @test.scard("blahblahblah")
|
96
|
+
assert_equal(0, result)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
context "srem" do
|
101
|
+
should "remove an item from the set" do
|
102
|
+
@test.sadd("test_key", "poop", "blah", "abc")
|
103
|
+
result = @test.srem("test_key", "poop")
|
104
|
+
assert(result)
|
105
|
+
assert_equal(2, @test.scard("test_key"))
|
106
|
+
end
|
107
|
+
|
108
|
+
should "not remove if the member isn't in the set" do
|
109
|
+
@test.sadd("test_key", "poop", "blah", "abc")
|
110
|
+
result = @test.srem("test_key", "xyz")
|
111
|
+
assert(!result)
|
112
|
+
assert_equal(3, @test.scard("test_key"))
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
context "smembers" do
|
117
|
+
should "return an array of items" do
|
118
|
+
@test.sadd("test_key", "poop", "blah", "abc")
|
119
|
+
result = @test.smembers("test_key")
|
120
|
+
assert_equal(["poop", "blah", "abc"], result)
|
121
|
+
end
|
122
|
+
|
123
|
+
should "return an empty array for nonexistant keys" do
|
124
|
+
result = @test.smembers("aaaaaa")
|
125
|
+
assert_equal([], result)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
metadata
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: strc
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Chris O'Neal
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-07-14 00:00:00.000000000 -05:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: shoulda
|
17
|
+
requirement: &9612756 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
23
|
+
type: :development
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *9612756
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: bundler
|
28
|
+
requirement: &9611472 !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.0.0
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: *9611472
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: jeweler
|
39
|
+
requirement: &9608676 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ~>
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: 1.5.2
|
45
|
+
type: :development
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: *9608676
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: rcov
|
50
|
+
requirement: &9608184 !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
type: :development
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: *9608184
|
59
|
+
description: STRC is a terrible Ruby clone of Redis
|
60
|
+
email: ctoneal@gmail.com
|
61
|
+
executables: []
|
62
|
+
extensions: []
|
63
|
+
extra_rdoc_files:
|
64
|
+
- LICENSE.txt
|
65
|
+
- README.rdoc
|
66
|
+
files:
|
67
|
+
- .document
|
68
|
+
- Gemfile
|
69
|
+
- Gemfile.lock
|
70
|
+
- LICENSE.txt
|
71
|
+
- README.rdoc
|
72
|
+
- Rakefile
|
73
|
+
- VERSION
|
74
|
+
- lib/strc.rb
|
75
|
+
- strc.gemspec
|
76
|
+
- test/helper.rb
|
77
|
+
- test/test_strc.rb
|
78
|
+
has_rdoc: true
|
79
|
+
homepage: http://github.com/ctoneal/strc
|
80
|
+
licenses:
|
81
|
+
- MIT
|
82
|
+
post_install_message:
|
83
|
+
rdoc_options: []
|
84
|
+
require_paths:
|
85
|
+
- lib
|
86
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
87
|
+
none: false
|
88
|
+
requirements:
|
89
|
+
- - ! '>='
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
92
|
+
segments:
|
93
|
+
- 0
|
94
|
+
hash: -949062349
|
95
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
|
+
none: false
|
97
|
+
requirements:
|
98
|
+
- - ! '>='
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
requirements: []
|
102
|
+
rubyforge_project:
|
103
|
+
rubygems_version: 1.6.2
|
104
|
+
signing_key:
|
105
|
+
specification_version: 3
|
106
|
+
summary: Super Terrible Redis Clone
|
107
|
+
test_files:
|
108
|
+
- test/helper.rb
|
109
|
+
- test/test_strc.rb
|