kioku 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []