kioku 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -17,8 +17,9 @@ Jeweler::Tasks.new do |gem|
17
17
  gem.name = "kioku"
18
18
  gem.homepage = "http://github.com/Anonyfox/kioku"
19
19
  gem.license = "MIT"
20
- gem.summary = %Q{A leightweight key-value store solution.}
21
- gem.description = %Q{See the Homepage for more Informations!}
20
+ gem.summary = %Q{A leightweight key-value store solution written in pure Ruby.}
21
+ gem.description = %Q{A leightweight key-value store solution written in pure Ruby.
22
+ See the Homepage for more Informations!}
22
23
  gem.email = "Fox56@gmx.de"
23
24
  gem.authors = ["Maximilian Stroh"]
24
25
  # dependencies defined in Gemfile
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
data/kioku.gemspec CHANGED
@@ -4,14 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{kioku}
8
- s.version = "0.0.1"
7
+ s.name = "kioku"
8
+ s.version = "0.0.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = [%q{Maximilian Stroh}]
12
- s.date = %q{2012-01-11}
13
- s.description = %q{See the Homepage for more Informations!}
14
- s.email = %q{Fox56@gmx.de}
11
+ s.authors = ["Maximilian Stroh"]
12
+ s.date = "2012-01-12"
13
+ s.description = "A leightweight key-value store solution written in pure Ruby.\n See the Homepage for more Informations!"
14
+ s.email = "Fox56@gmx.de"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE.txt",
17
17
  "README.rdoc"
@@ -29,13 +29,14 @@ Gem::Specification.new do |s|
29
29
  "test/bindata.bz2",
30
30
  "test/helper.rb",
31
31
  "test/sample.yml",
32
+ "test/test_gui.rb",
32
33
  "test/test_kioku_basics.rb"
33
34
  ]
34
- s.homepage = %q{http://github.com/Anonyfox/kioku}
35
- s.licenses = [%q{MIT}]
36
- s.require_paths = [%q{lib}]
37
- s.rubygems_version = %q{1.8.6}
38
- s.summary = %q{A leightweight key-value store solution.}
35
+ s.homepage = "http://github.com/Anonyfox/kioku"
36
+ s.licenses = ["MIT"]
37
+ s.require_paths = ["lib"]
38
+ s.rubygems_version = "1.8.10"
39
+ s.summary = "A leightweight key-value store solution written in pure Ruby."
39
40
 
40
41
  if s.respond_to? :specification_version then
41
42
  s.specification_version = 3
data/lib/kioku.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  #encoding: utf-8
2
2
 
3
3
  require 'yaml'
4
- require 'profile'
4
+ #require 'profile'
5
5
 
6
6
  class Kioku
7
7
 
@@ -42,23 +42,31 @@ class Kioku
42
42
  data
43
43
  end
44
44
 
45
+ # remove all datasets from the database
45
46
  def clear
46
47
  @data_base = {}
47
48
  update_database
48
49
  end
49
50
 
51
+ # deletes the current database file and locks the database-object
52
+ # so it can't be used anymore
50
53
  def destroy
51
54
  File.delete @filepath
52
55
  self.freeze
53
56
  end
54
57
 
55
- def exists? key
56
- @data_base.has_key? key
58
+ # returns all keys which are actually in the database
59
+ def all
60
+ @data_base.keys.dup || []
57
61
  end
58
62
 
59
- def keys
60
- @data_base.keys
61
- #puts @data_base.values
63
+ # returns all keys in the database that matches the given pattern-string
64
+ def search pattern
65
+ results = all.map {|key|
66
+ key if key.to_s =~ /#{pattern}/i
67
+ }
68
+ results.delete nil
69
+ results
62
70
  end
63
71
 
64
72
  private
@@ -68,10 +76,6 @@ private
68
76
  f = File.open @filepath, 'r'
69
77
  @data_base = YAML.load_file @filepath
70
78
  f.close
71
-
72
- #f = File.open @filepath, 'rb'
73
- #@data_base = Marshal.load f.read
74
- #f.close
75
79
  else
76
80
  f = File.new @filepath, 'wb'
77
81
  f.close
@@ -82,10 +86,22 @@ private
82
86
  f = File.new @filepath, 'w'
83
87
  f << @data_base.to_yaml
84
88
  f.close
89
+ end
85
90
 
86
- #f = File.new @filepath, 'wb'
87
- #f << Marshal.dump(@data_base)
88
- #f.close
91
+ #############################################
92
+ ### other serialization formats
93
+ #############################################
94
+
95
+ def init_database_marshal
96
+ f = File.open @filepath, 'rb'
97
+ @data_base = Marshal.load f.read
98
+ f.close
99
+ end
100
+
101
+ def update_database_marshal
102
+ f = File.new @filepath, 'wb'
103
+ f << Marshal.dump(@data_base)
104
+ f.close
89
105
  end
90
106
 
91
107
  end
data/test/sample.yml CHANGED
@@ -1,6 +1,8 @@
1
1
  ---
2
+ höhö: süß
2
3
  obj:
3
4
  - 1
4
5
  - 2
5
6
  - 4
6
- höhö: süß
7
+ bin: !binary |-
8
+ QlpoOTFBWSZTWZQkfA4AAACBAAMkIAAhmmgzTRM8XckU4UJCUJHwOA==
data/test/test_gui.rb ADDED
@@ -0,0 +1,22 @@
1
+ #encoding: utf-8
2
+
3
+ require './helper'
4
+
5
+ Shoes.app do
6
+ stack do
7
+
8
+ # input line
9
+ flow do
10
+ @in_key = edit_line
11
+ @in_val = edit_line
12
+ @in_go = button("add")
13
+ end
14
+
15
+ # elements
16
+ @k = Kioku.new "./sample.yml"
17
+ @k.get_all.each do {|key|
18
+ para "#{key}: #{@k[key]}", size: 9
19
+ }
20
+
21
+ end
22
+ end
@@ -5,11 +5,11 @@ require_relative 'helper'
5
5
  class TestKiokuBasics < Test::Unit::TestCase
6
6
 
7
7
  def setup
8
- @k = Kioku.new "sample.yml"
8
+ require 'pp'
9
9
  end
10
10
 
11
11
  def test_general_working_and_syntax
12
- @k.clear
12
+ @k = Kioku.new "sample.yml"
13
13
  @k["entry"] = "a sample"
14
14
  assert_equal( "a sample", @k["entry"] )
15
15
  @k.delete "entry"
@@ -17,27 +17,43 @@ class TestKiokuBasics < Test::Unit::TestCase
17
17
  end
18
18
 
19
19
  def test_general_serialization
20
+ @k = Kioku.new "sample.yml"
20
21
  @k["entry"] = "This!"
21
- tmp = Kioku.new "sample.yml"
22
- assert_equal( @k["entry"], tmp["entry"] )
23
- tmp.destroy
22
+ assert_equal( @k["entry"], "This!" )
24
23
  end
25
24
 
26
25
  def test_umlauts
26
+ @k = Kioku.new "sample.yml"
27
27
  @k["höhö"] = "süß"
28
28
  assert_equal( @k["höhö"], "süß" )
29
29
  end
30
30
 
31
31
  def test_object_data
32
+ @k = Kioku.new "sample.yml"
32
33
  @k["obj"] = [1,2,4]
33
34
  assert_equal( @k["obj"], [1,2,4] )
34
35
  end
35
36
 
36
37
  def test_binary_data
38
+ @k = Kioku.new "sample.yml"
37
39
  f = File.open("bindata.bz2","rb").read
38
40
  @k["bin"] = f.dup
39
- tmp = Kioku.new "sample.yml"
40
- assert_equal( tmp.exists?("bin"), true)
41
- assert_equal( tmp["bin"], @k["bin"] )
41
+ assert_equal( @k["bin"], f )
42
+ end
43
+
44
+ def test_all
45
+ @k = Kioku.new "sample.yml"
46
+ @k["entry"] = "a sample"
47
+ @k["höhö"] = "süß"
48
+ @k["obj"] = [1,2,4]
49
+ assert_equal( @k.all.sort, ["entry","höhö","obj","bin"].sort)
50
+ #pp @k
51
+ end
52
+
53
+ def test_search
54
+ @k = Kioku.new "sample.yml"
55
+ assert_equal( @k.search("obj"), ["obj"] )
56
+ assert_equal( @k.search("bin"), ["bin"] )
57
+ assert_equal( @k.search("höhö"), ["höhö"])
42
58
  end
43
59
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kioku
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-11 00:00:00.000000000Z
12
+ date: 2012-01-12 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: yard
16
- requirement: &22960400 !ruby/object:Gem::Requirement
16
+ requirement: &22231540 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.6.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *22960400
24
+ version_requirements: *22231540
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &22959560 !ruby/object:Gem::Requirement
27
+ requirement: &22230560 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.0.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *22959560
35
+ version_requirements: *22230560
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: jeweler
38
- requirement: &22958420 !ruby/object:Gem::Requirement
38
+ requirement: &22229800 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.6.4
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *22958420
46
+ version_requirements: *22229800
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rcov
49
- requirement: &22957140 !ruby/object:Gem::Requirement
49
+ requirement: &22228960 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,8 +54,9 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *22957140
58
- description: See the Homepage for more Informations!
57
+ version_requirements: *22228960
58
+ description: ! "A leightweight key-value store solution written in pure Ruby.\n See
59
+ the Homepage for more Informations!"
59
60
  email: Fox56@gmx.de
60
61
  executables: []
61
62
  extensions: []
@@ -75,6 +76,7 @@ files:
75
76
  - test/bindata.bz2
76
77
  - test/helper.rb
77
78
  - test/sample.yml
79
+ - test/test_gui.rb
78
80
  - test/test_kioku_basics.rb
79
81
  homepage: http://github.com/Anonyfox/kioku
80
82
  licenses:
@@ -91,7 +93,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
91
93
  version: '0'
92
94
  segments:
93
95
  - 0
94
- hash: -4502759015728651600
96
+ hash: 4136768825215228497
95
97
  required_rubygems_version: !ruby/object:Gem::Requirement
96
98
  none: false
97
99
  requirements:
@@ -100,8 +102,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
102
  version: '0'
101
103
  requirements: []
102
104
  rubyforge_project:
103
- rubygems_version: 1.8.6
105
+ rubygems_version: 1.8.10
104
106
  signing_key:
105
107
  specification_version: 3
106
- summary: A leightweight key-value store solution.
108
+ summary: A leightweight key-value store solution written in pure Ruby.
107
109
  test_files: []