gembase 0.1.0.pre → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/main.rb +236 -15
  3. metadata +10 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8dd465d6cc50ca0cd8e22abe6e2492ae48931b9385128e44a22074e32e552d45
4
- data.tar.gz: a9cce23e99f98136c983f9d08c4fc0bcf7875b995851ec3fafab2512cf93d228
3
+ metadata.gz: deb4dbb31cbfe652b4ac768e296bcede2ffdbc19473850786808ec3d34d9a6c6
4
+ data.tar.gz: af22f113ecff87ed52020d9165db3bb153e72b81477cbe39c700a135afad7e79
5
5
  SHA512:
6
- metadata.gz: b669c63f19426afc153c6bd1a2a3063df1301afd702e607db83556db62544f5a53378730eff8d2e3b0187ca34401c11ae2f063fae126c7cc55e5ea1dd8fd28ce
7
- data.tar.gz: 371b128e7b32b2c422b4bc058c6d26987655ff20940d4fb4edafac630fc07b7a50e0e0d42876c17faecadecf9afd926ce2b5680ce888acd827f520c6c94d23f8
6
+ metadata.gz: c0322593fc697d8c40458351f9d512bddccce4e127b94a2f2bbfd4fb06c41aded132e9dc3813dd90774d6bd2454da4b660dd1be359b24fa28283c6ca322ae9c0
7
+ data.tar.gz: ac2893bae265dbe20e69a9f4eaff05010916ec6c5291a37de3cc52cccee30a785ae8ff4b93c8ee38a2ed6d4b6d023b489c19b5fbe23f4adaffa1930b1ac25f82
data/lib/main.rb CHANGED
@@ -1,24 +1,245 @@
1
1
  #!usr/bin/env ruby
2
- # ScriptHub | Gembase - Ruby DataBase
2
+ # NTBBloodbath | Gembase - Ruby DataBase
3
3
 
4
- require 'fileutils' # Requires fileutils gem
5
- require 'yaml' # Requires yaml gem
4
+ require 'yaml'
6
5
 
7
- module Gembase # Main DataBase Module
8
- def Gembase.create_db(name) # Create_db method
9
- raise "name must be an String" until name.is_a?(String) # Error if name isn't an String
10
- @name = name # Set instamce variable name as name
11
- FileUtils.touch("#{name}.rudb") # Create database file
6
+ # @author NTBBloodbath
7
+ module Gembase
8
+
9
+ # @!method create_db(name) {https://asciinema.org/a/l8CbUREGwZScWN2XJXv2lsTHt}
10
+ # Create a new DataBase file with the given name
11
+ # @param name [String] the name for your DataBase file
12
+ #
13
+ # @example Create a DB called example
14
+ # create_db("example") #=> "example.rudb"
15
+ def Gembase.create_db(name)
16
+ raise "name must be an String" until name.is_a?(String)
17
+ FileUtils.touch("#{name}.rudb")
12
18
  end
13
19
 
14
- def Gembase.create_category(category) #Create_category method
15
- raise "category must be an String" until category.is_a?(String) # Error if category isn't an String
16
- # YAML Structure (cat_name)
17
- cat_name = {
18
- "#{category}": [{}]
20
+ # @!method create_category(db, category) {https://asciinema.org/a/Chz5eeUJdjFl8I07Lq4hY4X8y}
21
+ # Create a new Category inside our DataBase
22
+ # @param db [String] the name of your DataBase file
23
+ # @param category [String] the name of your category
24
+ #
25
+ # @example Creating the users category
26
+ # create_category("example", "users")
27
+ def Gembase.create_category(db, category)
28
+ raise "db must be an String" until db.is_a?(String)
29
+ raise "category must be an String" until category.is_a?(String)
30
+
31
+ category_name = {
32
+ "#{category}" => {}
19
33
  }
20
- File.open("#{@name}.rudb", "r+") do |f| # Open DataBase file
21
- f.write(cat_name.to_yaml) # Write changes to DataBase file
34
+
35
+ File.open("#{db}.rudb", "a+") do |f|
36
+ f.write(category_name.to_yaml)
22
37
  end
23
38
  end
39
+
40
+ # @!method nested_category(db, parent_category, nested_category)
41
+ # Create a new nested category
42
+ # @param db [String] the nme of your DataBase file
43
+ # @param parent_category [String] the name of your parent category
44
+ # @param nested_category [String] the name of the nested category
45
+ #
46
+ # @example Creating a premium nested category
47
+ # nested_category("example", "users", "premium")
48
+ #
49
+ # @since 0.5.0
50
+ def Gembase.nested_category(db, parent_category, nested_category)
51
+ raise "db must be an String" until db.is_a?(String)
52
+ raise "parent_category must be an String" until parent_category.is_a?(String)
53
+ raise "nested_category must be an String" until nested_category.is_a?(String)
54
+
55
+ @database = File.open("#{db}.rudb")
56
+ @data = YAML.load(@database)
57
+ @data["#{parent_category}"].store("#{nested_category}", "{}")
58
+ @save = File.write(@database, @data.to_yaml)
59
+ end
60
+
61
+ # @!method add_object(db, category, key, value)
62
+ # Create an object inside a category
63
+ # @param db [String] the name of your DataBase file
64
+ # @param category [String] the name of your category
65
+ # @param key [String] the key name of your object
66
+ # @param value [String, Integer, Boolean] the value of your key
67
+ #
68
+ # @example Add object "bloodbath" with value "premium"
69
+ # add_object("example", "users", "bloodbath", "premium")
70
+ #
71
+ # @deprecated Use {#create_object-class_method} instead.
72
+ def Gembase.add_object(db, category, key, value)
73
+ raise "db must be an String" until db.is_a?(String)
74
+ raise "category must be an String" until category.is_a?(String)
75
+ raise "key must be an String" until key.is_a?(String)
76
+
77
+ puts "WARNING | add_object Method is deprecated. Please use create_object Method instead."
78
+ @database
79
+ @data
80
+ @data["#{category}"].store("#{key}", "#{value}")
81
+ end
82
+
83
+ # @!method create_object(db, key, value, category=nil, subcategory=nil)
84
+ # Create an object outside a category
85
+ # @param db [String] the name of your DataBase file
86
+ # @param key [String] the key name of your object
87
+ # @param value [String, Integer, Boolean] the value of your key
88
+ # @param category [String] the name of your category
89
+ # @param subcategory [String] the name of your subcategory
90
+ #
91
+ # @example Create object "server" with value "localhost:8080". Without categories.
92
+ # create_object("example", "server", "localhost:8080")
93
+ #
94
+ # @example Create object "users-limit" with value 5 in "users" category.
95
+ # create_object("example", "users-limit", 5, "users")
96
+ #
97
+ # @example Create object "bloodbath" with value true in "premium" subcategory.
98
+ # create_object("example", "bloodbath", true, "users", "premium")
99
+ def Gembase.create_object(db, key, value, category=nil, subcategory=nil)
100
+ raise "db must be an String" until db.is_a?(String)
101
+ raise "key must be an String" until key.is_a?(String)
102
+
103
+ if category.to_s.length == 0
104
+ @database
105
+ @data
106
+ @data.store("#{key}", "#{value}")
107
+ @save
108
+ else
109
+ raise "category must be an String" until category.is_a?(String)
110
+ if subcategory.to_s.length == 0
111
+ @database
112
+ @data
113
+ @data["#{category}"].store("#{key}", "#{value}")
114
+ @save
115
+ else
116
+ raise "subcategory must be an String" until subcategory.is_a?(String)
117
+ @database
118
+ @data
119
+ @data["#{category}"]["#{subcategory}"].store("#{key}", "#{value}")
120
+ @save
121
+ end
122
+ end
123
+ end
124
+
125
+ # @!method delete_object(db, key, category=nil, subcategory=nil)
126
+ # Delete an object inside/outside a category.
127
+ # @param db [String] the name of your DataBase file
128
+ # @param key [String] the key name of your object
129
+ # @param category [String] the name of your category
130
+ # @param subcategory [String] the name of your subcategory
131
+ #
132
+ # @example Deleting object inside a category
133
+ # delete_object("example", "users-limit", "users")
134
+ #
135
+ # @ example Deleting object inside a subcategory
136
+ # delete_object("example", "bloodbath", "users", "premium")
137
+ #
138
+ # @example Deleting object outside a category
139
+ # delete_object("example", "server")
140
+ #
141
+ # @note Category is an optional parameter. Use this only when you want to delete an object inside a category.
142
+ def Gembase.delete_object(db, key, category=nil, subcategory=nil)
143
+ raise "db must be an String" until db.is_a?(String)
144
+ raise "key must be an String" until key.is_a?(String)
145
+
146
+ if category.to_s.length == 0 # If there's no category argument declared.
147
+ @database
148
+ @data
149
+ @data.delete("#{key}")
150
+ File.open("#{db}.rudb", "w+") do |f|
151
+ f.write(@data.to_yaml)
152
+ end
153
+ else
154
+ if subcategory.to_s.length == 0 # If there's no subcategory argument declared.
155
+ raise "category must be an String" until category.is_a?(String)
156
+ @database
157
+ @data
158
+ @data["#{category}"].delete("#{key}")
159
+ File.open("#{db}.rudb", "w+") do |f|
160
+ f.write(@data.to_yaml)
161
+ end
162
+ else
163
+ raise "subcategory must be an String" until subcategory.is_a?(String)
164
+ @database
165
+ @data
166
+ @data["#{category}"]["#{subcategory}"].delete("#{key}")
167
+ File.open("#{db}.rudb", "w+") do |f|
168
+ f.write(@data.to_yaml)
169
+ end
170
+ end
171
+ end
172
+ end
173
+
174
+ # @!method change_object(db, key, new_value, category=nil, subcategory=nil)
175
+ # Change the value of an existing object
176
+ # @param db [String] the name of your DataBase file
177
+ # @param key [String] the key name of your object
178
+ # @param new_value [String,Integer, Boolean] the new value of your key
179
+ # @param category [String] the name of your category
180
+ # @param subcategory [String] the name of your subcategory
181
+ #
182
+ # @example Change key server value from localhost:8080 to example_host.com outside categories
183
+ # change_object("example", "server", "example_host.com")
184
+ #
185
+ # @example Change key users-limit value from 5 to 10 into users category
186
+ # change_object("example", "users-limit", "10", "users")
187
+ #
188
+ # @example Change key bloodbath value from true to false into premium subcategory
189
+ # change_object("example", "bloodbath", false, "users", "category")
190
+ #
191
+ # @since 0.5.0
192
+ def Gembase.change_object(db, key, new_value, category=nil, subcategory=nil)
193
+ raise "db must be an String" until db.is_a?(String)
194
+ raise "key must be an String" until key.is_a?(String)
195
+
196
+ if category.to_s.length == 0
197
+ @database
198
+ @data
199
+ @data["#{key}"] = new_value
200
+ @save
201
+ else
202
+ raise "category must be an String" until category.is_a?(String)
203
+ if subcategory.to_s.length == 0
204
+ @database
205
+ @data
206
+ @data["#{category}"]["#{key}"] = new_value
207
+ @save
208
+ else
209
+ raise "subcategory must be an String" until subcategory.is_a?(String)
210
+ @database
211
+ @data
212
+ @data["#{category}"]["#{subcategory}"]["#{key}"] = new_value
213
+ @save
214
+ end
215
+ end
216
+ end
217
+
218
+ # @!method parse(db)
219
+ # Parse the DataBase structure to modify it
220
+ # @param db [String] the name of your DataBase file
221
+ #
222
+ # @example Parsing the DB called "example"
223
+ # parse("example")
224
+ #
225
+ # @note You can use these two methods (parse and generate) instead of YAML vanilla methods (load and to_yaml).
226
+ def Gembase.parse(db)
227
+ raise "db must be an String" until db.is_a?(String)
228
+
229
+ @database
230
+ @data
231
+ end
232
+
233
+ # @!method regenerate(db)
234
+ # Regenerate the DataBase stucture to YAML structure
235
+ # @param db [String] the name of your DataBase file
236
+ #
237
+ # @example Regenerating the DB called "example"
238
+ # regenerate("example")
239
+ def Gembase.regenerate(db)
240
+ raise "db must be an String" until db.is_a?(String)
241
+
242
+ @database
243
+ @data.to_yaml
244
+ end
24
245
  end
metadata CHANGED
@@ -1,21 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gembase
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.pre
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
- - MagicNeko15 (NTB Bloodbath)
8
- - Laauuu
7
+ - NTB Bloodbath
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2019-11-02 00:00:00.000000000 Z
11
+ date: 2020-02-08 00:00:00.000000000 Z
13
12
  dependencies: []
14
13
  description: Gembase is a database gem for Ruby. Very powerful, simple and effective
15
14
  based on YAML.
16
15
  email:
17
16
  - bloodbathalchemist@protonmail.com
18
- - lauywe23@gmail.com
19
17
  executables: []
20
18
  extensions: []
21
19
  extra_rdoc_files: []
@@ -25,7 +23,8 @@ homepage: https://rubygems.org/gems/gembase
25
23
  licenses:
26
24
  - MIT
27
25
  metadata:
28
- source_code_uri: https://github.com/MagicNeko15/Gembase
26
+ source_code_uri: https://github.com/NTBBloodbath/Gembase
27
+ documentation_uri: https://rubydoc.info/github/NTBBloodbath/Gembase/master/index
29
28
  post_install_message:
30
29
  rdoc_options: []
31
30
  require_paths:
@@ -34,15 +33,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
34
33
  requirements:
35
34
  - - ">="
36
35
  - !ruby/object:Gem::Version
37
- version: '0'
36
+ version: 2.6.0preview2
38
37
  required_rubygems_version: !ruby/object:Gem::Requirement
39
38
  requirements:
40
- - - ">"
39
+ - - ">="
41
40
  - !ruby/object:Gem::Version
42
- version: 1.3.1
41
+ version: '0'
43
42
  requirements: []
44
- rubygems_version: 3.0.6
43
+ rubygems_version: 3.0.3
45
44
  signing_key:
46
45
  specification_version: 4
47
- summary: Gembase is a database gem for Ruby.
46
+ summary: Gembase is a database gem based on YAML for Ruby.
48
47
  test_files: []