text-db 0.2.0.beta → 0.3.0.beta
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/lib/textdb.rb +1 -0
- data/lib/textdb/data/key.rb +13 -11
- data/lib/textdb/data/value.rb +14 -2
- data/lib/textdb/event/listener.rb +0 -3
- data/lib/textdb/event/processor.rb +23 -49
- data/lib/textdb/version.rb +1 -1
- data/spec/lib/03_create_spec.rb +16 -2
- data/spec/lib/04_update_spec.rb +22 -2
- data/spec/lib/06_delete_spec.rb +22 -3
- metadata +1 -1
data/lib/textdb.rb
CHANGED
data/lib/textdb/data/key.rb
CHANGED
@@ -52,32 +52,34 @@ module Textdb
|
|
52
52
|
self[name]
|
53
53
|
end
|
54
54
|
|
55
|
+
# Listener listen only for file
|
55
56
|
def build_value(name)
|
56
57
|
name_without_ext = name.gsub(Textdb.config.data_file_extension, "")
|
57
58
|
|
58
|
-
|
59
|
-
|
59
|
+
begin
|
60
|
+
self[name_without_ext]
|
61
|
+
rescue Textdb::ExistError
|
62
|
+
self[name_without_ext] = Textdb::Data::Value.new(File.join(@path, name), self)
|
63
|
+
self[name_without_ext]
|
64
|
+
end
|
60
65
|
end
|
61
66
|
|
62
67
|
def create_key(name)
|
63
|
-
|
64
|
-
Textdb::Event.listener.create_skip << File.join(@path, name)
|
65
|
-
end
|
68
|
+
to_return = build_key(name)
|
66
69
|
|
67
70
|
Dir.mkdir(File.join(@full_path, name))
|
68
71
|
|
69
|
-
|
72
|
+
to_return
|
70
73
|
end
|
71
74
|
|
72
75
|
def create_value(name)
|
73
76
|
name = "#{name}#{Textdb.config.data_file_extension}"
|
74
77
|
|
75
|
-
|
76
|
-
|
77
|
-
end
|
78
|
-
|
78
|
+
to_return = build_value(name)
|
79
|
+
|
79
80
|
File.open(File.join(@full_path, name), 'w') { |f| f.write('') }
|
80
|
-
|
81
|
+
|
82
|
+
to_return
|
81
83
|
end
|
82
84
|
|
83
85
|
def show
|
data/lib/textdb/data/value.rb
CHANGED
@@ -25,6 +25,10 @@ module Textdb
|
|
25
25
|
@data = File.read(@full_path)
|
26
26
|
end
|
27
27
|
|
28
|
+
def nil_data
|
29
|
+
@data = nil
|
30
|
+
end
|
31
|
+
|
28
32
|
def update(value)
|
29
33
|
File.open(@full_path, 'w') { |f| f.write(value) }
|
30
34
|
show!
|
@@ -32,8 +36,8 @@ module Textdb
|
|
32
36
|
|
33
37
|
def destroy
|
34
38
|
begin
|
35
|
-
|
36
|
-
|
39
|
+
destroy_file
|
40
|
+
destroy_value
|
37
41
|
rescue
|
38
42
|
return false
|
39
43
|
end
|
@@ -41,6 +45,14 @@ module Textdb
|
|
41
45
|
return true
|
42
46
|
end
|
43
47
|
|
48
|
+
def destroy_file
|
49
|
+
File.delete(@full_path)
|
50
|
+
end
|
51
|
+
|
52
|
+
def destroy_value
|
53
|
+
parent.delete(@name)
|
54
|
+
end
|
55
|
+
|
44
56
|
def inspect
|
45
57
|
%{#<Value::0x#{object_id} @data="#{@data}">}
|
46
58
|
end
|
@@ -1,13 +1,15 @@
|
|
1
1
|
module Textdb
|
2
2
|
module Event
|
3
3
|
class Processor
|
4
|
-
|
4
|
+
|
5
5
|
def initialize
|
6
6
|
end
|
7
7
|
|
8
|
-
def
|
9
|
-
|
8
|
+
def config
|
9
|
+
Textdb.config
|
10
|
+
end
|
10
11
|
|
12
|
+
def create(files)
|
11
13
|
files.each do |file|
|
12
14
|
pointer, value = get(file, true)
|
13
15
|
pointer.build_value(value)
|
@@ -15,11 +17,23 @@ module Textdb
|
|
15
17
|
end
|
16
18
|
|
17
19
|
def update(files)
|
18
|
-
|
20
|
+
files.each do |file|
|
21
|
+
pointer, value = get(file)
|
22
|
+
|
23
|
+
value = remove_ext(value)
|
24
|
+
|
25
|
+
pointer[value].nil_data
|
26
|
+
end
|
19
27
|
end
|
20
28
|
|
21
29
|
def delete(files)
|
22
|
-
|
30
|
+
files.each do |file|
|
31
|
+
pointer, value = get(file)
|
32
|
+
|
33
|
+
value = remove_ext(value)
|
34
|
+
|
35
|
+
pointer[value].destroy_value
|
36
|
+
end
|
23
37
|
end
|
24
38
|
|
25
39
|
def get(relative, create = false)
|
@@ -34,57 +48,17 @@ module Textdb
|
|
34
48
|
if create
|
35
49
|
pointer = pointer.build_key(key)
|
36
50
|
else
|
37
|
-
pointer[key]
|
51
|
+
pointer = pointer[key]
|
38
52
|
end
|
39
53
|
end
|
40
54
|
end
|
41
55
|
|
42
56
|
return pointer, value
|
43
57
|
end
|
44
|
-
|
45
|
-
# def get(r, remove_ext = false)
|
46
|
-
# keys = r.split('/')
|
47
|
-
# last = keys.pop
|
48
58
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
# pointer = Textdb.root
|
54
|
-
# keys.each do |key|
|
55
|
-
# pointer = pointer[key]
|
56
|
-
# end
|
57
|
-
|
58
|
-
# return pointer, last
|
59
|
-
# end
|
60
|
-
|
61
|
-
# def create(b, r, t)
|
62
|
-
# pointer, last = get(r)
|
63
|
-
|
64
|
-
# unless @create_skip.delete('/' + r).nil?
|
65
|
-
# return pointer[last]
|
66
|
-
# end
|
67
|
-
|
68
|
-
# if t == :directory
|
69
|
-
# pointer.build_key(last)
|
70
|
-
# else
|
71
|
-
# pointer.build_value(last)
|
72
|
-
# end
|
73
|
-
|
74
|
-
# puts "create (directory: #{t == :directory ? "true " : "false"}): ---#{r}---"
|
75
|
-
# end
|
76
|
-
|
77
|
-
# def update(b, r, t)
|
78
|
-
# pointer, last = get(r, true)
|
79
|
-
|
80
|
-
# pointer[last].show!
|
81
|
-
|
82
|
-
# puts "update (directory: #{t == :directory ? "true " : "false"}): ---#{r}---"
|
83
|
-
# end
|
84
|
-
|
85
|
-
# def delete(b, r, t)
|
86
|
-
# puts "delete (directory: #{t == :directory ? "true " : "false"}): ---#{r}---"
|
87
|
-
# end
|
59
|
+
def remove_ext(name)
|
60
|
+
name.gsub(config.data_file_extension, '')
|
61
|
+
end
|
88
62
|
|
89
63
|
end
|
90
64
|
end
|
data/lib/textdb/version.rb
CHANGED
data/spec/lib/03_create_spec.rb
CHANGED
@@ -39,9 +39,23 @@ describe "Textdb.create" do
|
|
39
39
|
expect { Textdb.create }.to raise_error(Textdb::BlockRequired)
|
40
40
|
end
|
41
41
|
|
42
|
-
context "listen
|
43
|
-
|
42
|
+
context "listen" do
|
44
43
|
|
44
|
+
it "create a file" do
|
45
|
+
expect { Textdb.read { key2.value2_2 } }.to raise_error(Textdb::ExistError)
|
46
|
+
|
47
|
+
File.open(File.join(Textdb.config.base_folder, 'key2', 'value2_2.data'), 'w') { |f| f.write("text") }
|
48
|
+
|
49
|
+
sleep 0.5
|
50
|
+
|
51
|
+
expect(Textdb.read { key2.value2_2 }).to eql("text")
|
52
|
+
end
|
53
|
+
|
54
|
+
it ".create overrites .listen.create" do
|
55
|
+
value_class = Textdb.create { key2.value2_3 }
|
56
|
+
|
57
|
+
expect( Textdb.root['key2']['value2_3'] ).to eql(value_class)
|
58
|
+
end
|
45
59
|
|
46
60
|
end
|
47
61
|
|
data/spec/lib/04_update_spec.rb
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe "Textdb.update" do
|
4
|
+
let(:base_folder) { Textdb.config.base_folder }
|
5
|
+
let(:data_file_ext) { Textdb.config.data_file_extension }
|
6
|
+
|
4
7
|
it "create with update" do
|
5
|
-
file = File.join
|
8
|
+
file = File.join base_folder, "key3", "value3_1#{data_file_ext}"
|
6
9
|
|
7
10
|
expect( File.exist?(file) ).to eql(false)
|
8
11
|
|
@@ -14,11 +17,28 @@ describe "Textdb.update" do
|
|
14
17
|
end
|
15
18
|
|
16
19
|
it "update" do
|
17
|
-
file = File.join
|
20
|
+
file = File.join base_folder, "key3", "value3_1#{data_file_ext}"
|
18
21
|
|
19
22
|
Textdb.update("text 2") { key3.value3_1 }
|
20
23
|
|
21
24
|
expect( File.read(file) ).to eql("text 2")
|
22
25
|
end
|
23
26
|
|
27
|
+
context "listen" do
|
28
|
+
it "update a file" do
|
29
|
+
Textdb.create { key3.value3_2 }.update("text")
|
30
|
+
|
31
|
+
sleep 0.5
|
32
|
+
|
33
|
+
expect( Textdb.read { key3.value3_2 } ).to eql("text")
|
34
|
+
|
35
|
+
file = File.join Textdb.config.base_folder, "key3", "value3_2#{data_file_ext}"
|
36
|
+
|
37
|
+
File.open(file, 'w') { |f| f.write("text 2") }
|
38
|
+
|
39
|
+
sleep 0.5
|
40
|
+
|
41
|
+
expect( Textdb.read { key3.value3_2 } ).to eql("text 2")
|
42
|
+
end
|
43
|
+
end
|
24
44
|
end
|
data/spec/lib/06_delete_spec.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe "Textdb.delete" do
|
4
|
+
let(:base_folder) { Textdb.config.base_folder }
|
5
|
+
let(:data_file_ext) { Textdb.config.data_file_extension }
|
6
|
+
|
4
7
|
before(:all) do
|
5
8
|
Textdb.create { key5.key5_1.value5_1_1 }
|
6
9
|
Textdb.create { key5.key5_1.value5_1_2 }
|
@@ -11,7 +14,7 @@ describe "Textdb.delete" do
|
|
11
14
|
end
|
12
15
|
|
13
16
|
it "value" do
|
14
|
-
file = File.join
|
17
|
+
file = File.join base_folder, "key5", "key5_1", "value5_1_1#{data_file_ext}"
|
15
18
|
|
16
19
|
expect( File.exist?(file) ).to eql(true)
|
17
20
|
|
@@ -23,7 +26,7 @@ describe "Textdb.delete" do
|
|
23
26
|
end
|
24
27
|
|
25
28
|
it "key" do
|
26
|
-
dir = File.join
|
29
|
+
dir = File.join base_folder, "key6"
|
27
30
|
|
28
31
|
expect( Dir.exist?(dir) ).to eql(true)
|
29
32
|
|
@@ -35,7 +38,7 @@ describe "Textdb.delete" do
|
|
35
38
|
end
|
36
39
|
|
37
40
|
it "recursive" do
|
38
|
-
dir = File.join
|
41
|
+
dir = File.join base_folder, "key5"
|
39
42
|
|
40
43
|
Textdb.delete { key5 }
|
41
44
|
|
@@ -45,4 +48,20 @@ describe "Textdb.delete" do
|
|
45
48
|
expect { Textdb.read { key5.key5_1.value5_1_3 } }.to raise_error(Textdb::ExistError)
|
46
49
|
expect { Textdb.read { key5.value5_1 } }.to raise_error(Textdb::ExistError)
|
47
50
|
end
|
51
|
+
|
52
|
+
context "listen" do
|
53
|
+
it "delete a file" do
|
54
|
+
Textdb.create { key5.key5_2.value5_2_1 }
|
55
|
+
|
56
|
+
sleep 0.5
|
57
|
+
|
58
|
+
file = File.join base_folder, "key5", "key5_2", "value5_2_1#{data_file_ext}"
|
59
|
+
|
60
|
+
File.delete(file)
|
61
|
+
|
62
|
+
sleep 0.5
|
63
|
+
|
64
|
+
expect { Textdb.read { key5.key5_2.value5_2_1 } }.to raise_error(Textdb::ExistError)
|
65
|
+
end
|
66
|
+
end
|
48
67
|
end
|