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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 68945a79f70d617c69093a4eff7f7b6e4aad83fc
4
- data.tar.gz: 55c03290f51c15778eb500e935a675b042265fae
3
+ metadata.gz: 41dad1f55aae92f23394c0896228e323c180b505
4
+ data.tar.gz: ca86d812315874c9d1bfd5368cb6151cc1409057
5
5
  SHA512:
6
- metadata.gz: 7498be0290b087006beb3331c25785bb280adf16f1be7040ae6251c7fad781c0d63246948178134bb647a08fd528b58a94237c9ba9852edde5af9991f7487ae1
7
- data.tar.gz: 2a133c018db0f5b9c9a7eb37c0662b8c754815458dfa7deb8ae87d1d859b44030b2d0cb852280acb676ef5b649b1c1036d1dbe6871455bec4dcdba61ec7b0a2d
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,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.7.6
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: