gembase 0.1.0.pre → 0.5.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.
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: []