shard-container 0.7.6 → 0.8.1
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.
- checksums.yaml +4 -4
- data/lib/shard/core.rb +35 -0
- data/lib/shard/util.rb +42 -0
- data/lib/shard.rb +5 -79
- data/readme.md +2 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 41dad1f55aae92f23394c0896228e323c180b505
|
4
|
+
data.tar.gz: ca86d812315874c9d1bfd5368cb6151cc1409057
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 66f12801b8790e470dcef3001f86c634e04fac548e5139c57d6cf858c711bacde2a16d1ccf718b00cffe4a8d578344f48b1fc8632f7e1abc549b8c27cb7fabea
|
7
|
+
data.tar.gz: 276631e41c9b6dab78ad0290ef54f47e646bf72d927755330b6339dbb1611efe974560c45a8fb6c3b09a047654708ef61bf70a7199dd933a92447f02279b2835
|
data/lib/shard/core.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
class Shard
|
2
|
+
#insert method, adds a Dict2 struct to values at set position
|
3
|
+
def insert(pos=-1,*args)
|
4
|
+
if args.length==@@elements.length
|
5
|
+
@values.insert(pos,@Dict2.new(*args))
|
6
|
+
elsif args.length<@@elements.length
|
7
|
+
raise "Not enough arguments to fill new Dict2 Struct. #{@@elements.length} required."
|
8
|
+
else
|
9
|
+
raise "Too many arguments supplied to fill new Dict2 Struct. #{@@elements.length} required."
|
10
|
+
end
|
11
|
+
|
12
|
+
update
|
13
|
+
end
|
14
|
+
|
15
|
+
#deletes an element from the values array based on type parameter
|
16
|
+
def delete(type,val=nil,index=0,endnum=-1)
|
17
|
+
if type
|
18
|
+
@@pntr=@@elements.index(type.to_sym)
|
19
|
+
@values[index..endnum].each{|e|
|
20
|
+
if e[@@pntr]==val
|
21
|
+
@values.delete(e)
|
22
|
+
end
|
23
|
+
}
|
24
|
+
elsif type==false
|
25
|
+
if val!=nil
|
26
|
+
index,endnum=val,index
|
27
|
+
end
|
28
|
+
[index..endnum].to_a.each{|i| @values.delete(i)}
|
29
|
+
else
|
30
|
+
raise TypeError("No type supplied")
|
31
|
+
end
|
32
|
+
|
33
|
+
update
|
34
|
+
end
|
35
|
+
end
|
data/lib/shard/util.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
class Shard
|
2
|
+
#add attribute readers for meta and value hashes
|
3
|
+
attr_reader :meta,:values
|
4
|
+
|
5
|
+
#updates meta hash
|
6
|
+
private def update
|
7
|
+
@meta.size=@values.length
|
8
|
+
@meta.is_empty=@meta.size<0
|
9
|
+
@meta.editStamp=Time.new
|
10
|
+
@meta.all[:size] = @meta.size
|
11
|
+
@meta.all[:is_empty] = @meta.is_empty
|
12
|
+
@meta.all[:num_indentifiers] = @meta.num_indentifiers
|
13
|
+
@meta.all[:identifiers] = @meta.identifiers
|
14
|
+
@meta.all[:creationStamp] = @meta.creationStamp
|
15
|
+
@meta.all[:editStamp] = @meta.editStamp
|
16
|
+
end
|
17
|
+
|
18
|
+
#return element(s) from shard (optional range)
|
19
|
+
def list(element,index=0,endnum=-1)
|
20
|
+
if @@elements.include?(element)
|
21
|
+
@@temp=[]
|
22
|
+
@values[index..endnum].each{|v| @@temp<<v[element]}
|
23
|
+
return @@temp
|
24
|
+
else
|
25
|
+
raise "Improper or no type supplied."
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
#prune by all elements
|
30
|
+
def pAll
|
31
|
+
prune(*@@elements)
|
32
|
+
end
|
33
|
+
|
34
|
+
#list element by single index
|
35
|
+
def lPos(element,index)
|
36
|
+
list(element,index,index)
|
37
|
+
end
|
38
|
+
|
39
|
+
#aliases
|
40
|
+
alias :listPos :lPos
|
41
|
+
alias :pruneAll :pAll
|
42
|
+
end
|
data/lib/shard.rb
CHANGED
@@ -1,92 +1,18 @@
|
|
1
|
+
require './shard/core'
|
2
|
+
require './shard/util'
|
1
3
|
require './shard/formatting'
|
2
4
|
|
3
5
|
class Shard
|
4
|
-
#add attribute readers for meta and value hashes
|
5
|
-
attr_reader :meta,:values
|
6
|
-
|
7
|
-
#updates meta hash
|
8
|
-
private def update
|
9
|
-
@meta.size=@values.length
|
10
|
-
@meta.is_empty=@meta.size<0
|
11
|
-
@meta.editStamp=Time.new
|
12
|
-
end
|
13
|
-
|
14
|
-
|
15
6
|
#class constructor, creates instaces for meta table, values array, and Dict2 struct using args
|
16
7
|
def initialize(*args)
|
17
8
|
args.map{|e| e.to_sym}
|
18
9
|
|
19
10
|
@@elements=args.map{|e| e.to_sym}
|
20
11
|
@Dict2=Struct.new(*@@elements)
|
21
|
-
@meta=Struct.new(:size,:is_empty,:num_indentifiers,:identifiers,:creationStamp,:editStamp)
|
22
|
-
@meta=@meta.new(0,true,@@elements.length,@@elements,Time.new,
|
12
|
+
@meta=Struct.new(:size,:is_empty,:num_indentifiers,:identifiers,:creationStamp,:editStamp,:all)
|
13
|
+
@meta=@meta.new(0,true,@@elements.length,@@elements,Time.new,nil,Hash.new)
|
23
14
|
@values=[]
|
24
15
|
|
25
16
|
update
|
26
17
|
end
|
27
|
-
|
28
|
-
#inset method, adds a Dict2 struct to values at set position
|
29
|
-
def insert(pos=-1,*args)
|
30
|
-
if args.length==@@elements.length
|
31
|
-
@values.insert(pos,@Dict2.new(*args))
|
32
|
-
elsif args.length<@@elements.length
|
33
|
-
raise "Not enough arguments to fill new Dict2 Struct. #{@@elements.length} required."
|
34
|
-
else
|
35
|
-
raise "Too many arguments supplied to fill new Dict2 Struct. #{@@elements.length} required."
|
36
|
-
end
|
37
|
-
|
38
|
-
update
|
39
|
-
end
|
40
|
-
|
41
|
-
#deletes an element from the values array based on type parameter
|
42
|
-
def delete(type,val=nil,index=0,endnum=-1)
|
43
|
-
if type
|
44
|
-
@@pntr=@@elements.index(type.to_sym)
|
45
|
-
@values[index..endnum].each{|e|
|
46
|
-
if e[@@pntr]==val
|
47
|
-
@values.delete(e)
|
48
|
-
end
|
49
|
-
}
|
50
|
-
elsif type==false
|
51
|
-
if val!=nil
|
52
|
-
index,endnum=val,index
|
53
|
-
end
|
54
|
-
[index..endnum].to_a.each{|i| @values.delete(i)}
|
55
|
-
else
|
56
|
-
raise TypeError("No type supplied")
|
57
|
-
end
|
58
|
-
|
59
|
-
update
|
60
|
-
end
|
61
|
-
|
62
|
-
#return element(s) from shard (optional range)
|
63
|
-
def list(element,index=0,endnum=-1)
|
64
|
-
if @@elements.include?(element)
|
65
|
-
@@temp=[]
|
66
|
-
@values[index..endnum].each{|v| @@temp<<v[element]}
|
67
|
-
return @@temp
|
68
|
-
else
|
69
|
-
raise "Improper or no type supplied."
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
#prune by all elements
|
74
|
-
def pAll
|
75
|
-
prune(*@@elements)
|
76
|
-
end
|
77
|
-
|
78
|
-
#list element by single index
|
79
|
-
def lPos(element,index)
|
80
|
-
list(element,index,index)
|
81
|
-
end
|
82
|
-
|
83
|
-
#aliases
|
84
|
-
alias :listPos :lPos
|
85
|
-
alias :pruneAll :pAll
|
86
|
-
end
|
87
|
-
|
88
|
-
x=Shard.new(:key,:val,:util)
|
89
|
-
x.insert(0,'foo','baz',123)
|
90
|
-
x.insert(0,'foo','bar',123)
|
91
|
-
x.delete(:val,'bar')
|
92
|
-
p x.clean
|
18
|
+
end
|
data/readme.md
CHANGED
@@ -63,4 +63,5 @@
|
|
63
63
|
> ##### Meta tags
|
64
64
|
> Getting a shard's meta information is done with the following methods or aliases
|
65
65
|
>
|
66
|
-
>
|
66
|
+
> Shard.meta.all #return a Hash of all meta tags
|
67
|
+
> Shard.meta.[metatag] #return the supplied metatag's value (can be size, is_empty, num_indentifiers, identifiers, creationStamp, or editStamp)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shard-container
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chitoge
|
@@ -19,7 +19,9 @@ extra_rdoc_files:
|
|
19
19
|
- readme.md
|
20
20
|
files:
|
21
21
|
- lib/shard.rb
|
22
|
+
- lib/shard/core.rb
|
22
23
|
- lib/shard/formatting.rb
|
24
|
+
- lib/shard/util.rb
|
23
25
|
- readme.md
|
24
26
|
homepage: https://github.com/Nevermore-BD/Shard
|
25
27
|
licenses:
|