cabi 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -0
- data/Rakefile +0 -1
- data/cabi.gemspec +1 -1
- data/lib/cabi.rb +15 -4
- data/lib/data.rb +6 -2
- data/lib/datafile.rb +15 -3
- data/lib/list.rb +7 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ef8499690487070c9e95e0f172f87d60b6891c28
|
4
|
+
data.tar.gz: 6ff6984f617c702abe45ef66d06a714a5b9614b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ca62a4ff0f7e567ec88228e2a827e82360ba431d65c74c8e09615b622b26f20e1b54521c3edc9a18461a50cba90f10c5ab5e30dee581b0e04d82e8fce3cc6236
|
7
|
+
data.tar.gz: 4f4b15e3f1c5d8b4d88551b8a1686942cab1b9aca2d554506ed05c54a314a07830c9d53a559230bb2d3f2fb63877c69a1bea5a0521ce462f860f985de13b0468
|
data/README.md
CHANGED
@@ -63,6 +63,10 @@ Cabi.read('pages:about:meta:foo:bar') # contents of ['foo']['bar'] in pa
|
|
63
63
|
Cabi.read('pages:about:meta.yml:foo:bar') # same as above
|
64
64
|
Cabi.read('info:foo:bar:baz') # contents of ['foo']['bar']['baz'] in info.yml hash
|
65
65
|
Cabi.read('info.yml:foo:bar:baz') # same as above
|
66
|
+
|
67
|
+
# Return a file path for a Cabi ID.
|
68
|
+
Cabi.file('pages:about:meta:foo:bar') # path fo file at /pages/about/meta/foo/bar
|
69
|
+
Cabi.path_to_id('/pages/about/meta/foo/bar') # pages:about:meta:foo:bar
|
66
70
|
```
|
67
71
|
|
68
72
|
### Custom Data Directory
|
data/Rakefile
CHANGED
data/cabi.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'cabi'
|
3
|
-
s.version = '0.1.
|
3
|
+
s.version = '0.1.8'
|
4
4
|
s.summary = "A simple, flat-file datastore for Ruby."
|
5
5
|
|
6
6
|
s.description = "Cabi is a flat-file datastore where data is stored by directory stucture and accessed by colon-delimited strings."
|
data/lib/cabi.rb
CHANGED
@@ -13,20 +13,31 @@ module Cabi
|
|
13
13
|
CABI_DATA_ID = '.cabi-data'
|
14
14
|
CABI_DATA_DIR = './cabi-data'
|
15
15
|
|
16
|
-
def self.read(id)
|
17
|
-
Data.read(id)
|
16
|
+
def self.read(id, opts={})
|
17
|
+
Data.read(id, opts)
|
18
18
|
end
|
19
19
|
|
20
20
|
def self.write(id, content)
|
21
21
|
Data.write(id, content)
|
22
22
|
end
|
23
23
|
|
24
|
+
def self.create(id, content='')
|
25
|
+
Data.write(id, content)
|
26
|
+
end
|
27
|
+
|
24
28
|
def self.file(id, opts={})
|
25
29
|
DataFile.file_yaml_or_non_extension_file(id)
|
26
30
|
end
|
27
31
|
|
28
|
-
def self.list(id)
|
29
|
-
Cabi::List.list(id)
|
32
|
+
def self.list(id='*', opts={})
|
33
|
+
Cabi::List.list(id, opts)
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.path_to_id(path)
|
37
|
+
path = path.split(Cabi.data_dir).last
|
38
|
+
path = path[1..-1] if path[0] == '/'
|
39
|
+
path = path.gsub('/', DELIMITER)
|
40
|
+
path
|
30
41
|
end
|
31
42
|
|
32
43
|
end
|
data/lib/data.rb
CHANGED
@@ -2,14 +2,18 @@ module Cabi
|
|
2
2
|
|
3
3
|
class Data
|
4
4
|
|
5
|
-
def self.read(id)
|
6
|
-
DataFile.contents(id) || nil
|
5
|
+
def self.read(id, opts={})
|
6
|
+
DataFile.contents(id, opts) || nil
|
7
7
|
end
|
8
8
|
|
9
9
|
def self.write(id, content)
|
10
10
|
file = DataFile.write(id, content)
|
11
11
|
end
|
12
12
|
|
13
|
+
def self.create(id, content)
|
14
|
+
file = DataFile.create(id, content)
|
15
|
+
end
|
16
|
+
|
13
17
|
def self.user_data_dir
|
14
18
|
dir = false
|
15
19
|
|
data/lib/datafile.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
-
module Cabi
|
2
1
|
|
2
|
+
require 'FileUtils'
|
3
|
+
|
4
|
+
module Cabi
|
3
5
|
class DataFile
|
4
6
|
|
5
|
-
def self.contents(id)
|
7
|
+
def self.contents(id, opts={})
|
6
8
|
return self.bulk_selection(id) if self.bulk_selection?(id)
|
7
|
-
return YAML.load(File.read( self.yaml_file(id) )) if self.yaml_exists?(id)
|
9
|
+
return YAML.load(File.read( self.yaml_file(id) )) if self.yaml_exists?(id) and !opts[:no_yaml]
|
8
10
|
return File.read( self.file(id) ) if self.file_exists?(id)
|
9
11
|
return File.read( self.non_extension_file(id) ) if self.non_extension_file(id)
|
10
12
|
return self.sub_yaml(id)
|
@@ -25,6 +27,16 @@ module Cabi
|
|
25
27
|
File.open( file, 'w') {|f| f.write(content) }
|
26
28
|
end
|
27
29
|
|
30
|
+
def self.create(id, content="")
|
31
|
+
file = self.file(id)
|
32
|
+
raise "File exists." if self.file_exists?(id)
|
33
|
+
dir = File.dirname(file)
|
34
|
+
|
35
|
+
FileUtils.mkdir_p(dir) unless File.exists?(dir)
|
36
|
+
FileUtils.touch(file)
|
37
|
+
Cabi.write(id, content)
|
38
|
+
end
|
39
|
+
|
28
40
|
def self.file_yaml_or_non_extension_file(id, opts={})
|
29
41
|
return self.bulk_selection(id, only_file: true) if self.bulk_selection?(id)
|
30
42
|
return self.yaml_file(id) if self.yaml_exists?(id)
|
data/lib/list.rb
CHANGED
@@ -2,13 +2,17 @@ module Cabi
|
|
2
2
|
class List
|
3
3
|
|
4
4
|
def self.list(id, opts={})
|
5
|
-
ls
|
5
|
+
ls = []
|
6
|
+
path = id.gsub( DELIMITER, '/')
|
6
7
|
|
7
|
-
Dir.glob( "#{Cabi.data_dir}/#{
|
8
|
+
Dir.glob( "#{Cabi.data_dir}/#{path}") do |item|
|
8
9
|
next if item == '.' or item == '..'
|
9
|
-
|
10
|
+
|
11
|
+
i = opts[:full_path] ? item : Cabi.path_to_id(item)
|
12
|
+
ls << [ i, File.directory?(item) ? "dir" : "file", File.basename(item) ]
|
10
13
|
end
|
11
14
|
|
15
|
+
ls.sort_by!{ |f| f[1] } if opts[:dirs_first] # "dir" < "file"
|
12
16
|
ls
|
13
17
|
end
|
14
18
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cabi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Gonzalez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-11-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|