script_storage 1.2.3 → 2.0.0
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/script_storage.rb +55 -70
- data/lib/script_storage_item.rb +5 -26
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 54d33d8e20dd1a6eba8f6ef42fa7fcef516ed109da45ba9e8be5ac9104d0303b
|
4
|
+
data.tar.gz: 192f2614900d7096d8a2a7d0817c7f3064454793350e1a64a18fd452374ee1b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ecb0af18db24d04c03dbbc31526f1eef431bab529cb439dbc852a60a7a3a916df22c9578b00c8563b3deae7485520c0cecc2a91bb06286caf014ef7b044b6237
|
7
|
+
data.tar.gz: f86833b01588a6c8a0e4f8cdd105bd75ba523cc94f9810c31dcc10eb7da204df1286c0b0700dec2399be7d07518e0c35050ab209fc87ec44397a02cc78f07ace
|
data/lib/script_storage.rb
CHANGED
@@ -1,90 +1,75 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
end
|
10
|
-
|
11
|
-
def write_file
|
12
|
-
File.open(path) do |file|
|
13
|
-
file_data = "#{file.read.split("\n__END__\n")[0]}\n__END__\n"
|
14
|
-
|
15
|
-
@data.each do |v|
|
16
|
-
file_data += "#{v.show}\n"
|
17
|
-
end
|
18
|
-
|
19
|
-
File.write(path, file_data)
|
20
|
-
end
|
3
|
+
if $PROGRAM_NAME == 'irb'
|
4
|
+
puts <<~HEREDOC
|
5
|
+
<>SCRIPT_STORAGE NOT LOADED<>
|
6
|
+
It seems that you are using irb, please DON'T use this gem as it is supposed to be used in a script file.
|
7
|
+
HEREDOC
|
8
|
+
return
|
21
9
|
end
|
22
10
|
|
23
|
-
|
24
|
-
File.open(path) do |file|
|
25
|
-
file_content = file.read
|
26
|
-
|
27
|
-
break if file_content.split("\n__END__\n").length == 1
|
28
|
-
|
29
|
-
file_data = file_content.split("\n__END__\n").last
|
11
|
+
require 'script_storage_item'
|
30
12
|
|
31
|
-
|
32
|
-
|
33
|
-
type = '' if type.nil?
|
13
|
+
class ScriptStorage
|
14
|
+
@@data = []
|
34
15
|
|
35
|
-
|
36
|
-
|
37
|
-
|
16
|
+
class << self
|
17
|
+
def path
|
18
|
+
"#{Dir.pwd}/#{$PROGRAM_NAME}"
|
19
|
+
end
|
38
20
|
|
39
|
-
|
40
|
-
|
41
|
-
|
21
|
+
def read(key)
|
22
|
+
item = @@data.find { |item| item.key == key }
|
23
|
+
item&.value
|
24
|
+
end
|
42
25
|
|
43
|
-
|
44
|
-
|
45
|
-
|
26
|
+
def write(key, value)
|
27
|
+
item = @@data.find { |item| item.key == key }
|
28
|
+
if item
|
29
|
+
item.value = value
|
46
30
|
else
|
47
|
-
|
31
|
+
@@data << Item.new(key, value)
|
48
32
|
end
|
33
|
+
write_file
|
49
34
|
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
def read_storage(key)
|
54
|
-
array = @data.select { |item| item.key == key }
|
55
|
-
array.first&.value
|
56
|
-
end
|
57
35
|
|
58
|
-
def
|
59
|
-
|
60
|
-
|
61
|
-
v.value = value if v.key == key
|
36
|
+
def delete(key)
|
37
|
+
@@data.reject! { |item| item.key == key }
|
38
|
+
write_file
|
62
39
|
end
|
63
|
-
else
|
64
|
-
@data.append(Item.new(key, value))
|
65
|
-
end
|
66
40
|
|
67
|
-
|
68
|
-
|
41
|
+
def delete_all
|
42
|
+
file_data = File.read(path).split("\n__END__\n")[0]
|
43
|
+
File.write(path, file_data)
|
44
|
+
end
|
69
45
|
|
70
|
-
|
71
|
-
return unless @data.include?(key)
|
46
|
+
private
|
72
47
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
File.open(path) do |file|
|
79
|
-
file_data = file.read.split("\n__END__\n")[0]
|
48
|
+
def write_file
|
49
|
+
file_data = "#{File.read(path).split("\n__END__\n")[0]}\n__END__\n"
|
50
|
+
@@data.each { |v| file_data += "#{v.show}\n" }
|
51
|
+
File.write(path, file_data)
|
52
|
+
end
|
80
53
|
|
81
|
-
|
54
|
+
def load_storage
|
55
|
+
file_content = File.read(path)
|
56
|
+
return if file_content.split("\n__END__\n").length == 1
|
57
|
+
|
58
|
+
file_data = file_content.split("\n__END__\n").last
|
59
|
+
file_data.scan(/(\w+)(\((\w+)\))?:(.*)/).each do |raw|
|
60
|
+
key, _full_type, type, raw_value = raw
|
61
|
+
value = case type
|
62
|
+
when 'array'
|
63
|
+
raw_value.split(',').map(&:strip)
|
64
|
+
when 'integer'
|
65
|
+
raw_value.to_i
|
66
|
+
else
|
67
|
+
raw_value.strip
|
68
|
+
end
|
69
|
+
@@data << Item.new(key.strip, value)
|
70
|
+
end
|
71
|
+
end
|
82
72
|
end
|
83
|
-
end
|
84
73
|
|
85
|
-
if $PROGRAM_NAME == 'irb'
|
86
|
-
puts 'It seems that you are using irb, please DON\'T use this ' \
|
87
|
-
'gem as it is supposed to be used in a script file.'
|
88
|
-
else
|
89
74
|
load_storage
|
90
|
-
end
|
75
|
+
end
|
data/lib/script_storage_item.rb
CHANGED
@@ -4,38 +4,17 @@ class Item
|
|
4
4
|
attr_accessor :key, :value
|
5
5
|
|
6
6
|
def initialize(key, value)
|
7
|
-
case value.class.to_s.downcase
|
8
|
-
when 'array'
|
9
|
-
@value = []
|
10
|
-
|
11
|
-
value.each do |v|
|
12
|
-
@value.append(v)
|
13
|
-
end
|
14
|
-
else
|
15
|
-
@value = value
|
16
|
-
end
|
17
|
-
|
18
7
|
@key = key
|
8
|
+
@value = value.is_a?(Array) ? value.dup : value
|
19
9
|
end
|
20
10
|
|
21
11
|
def show
|
22
|
-
type =
|
23
|
-
|
24
|
-
|
25
|
-
when 'string'
|
26
|
-
"#{key}: #{value}"
|
27
|
-
when 'array'
|
28
|
-
"#{key}(#{type}): #{@value.join(', ')}"
|
29
|
-
else
|
30
|
-
"#{key}(#{type}): #{value}"
|
31
|
-
end
|
12
|
+
type = value.class.to_s.downcase
|
13
|
+
formatted_value = value.is_a?(Array) ? value.join(', ') : value
|
14
|
+
"#{key}(#{type}): #{formatted_value}"
|
32
15
|
end
|
33
16
|
|
34
17
|
def ==(other)
|
35
|
-
|
36
|
-
other
|
37
|
-
else
|
38
|
-
other.key
|
39
|
-
end
|
18
|
+
key == (other.is_a?(String) ? other : other.key)
|
40
19
|
end
|
41
20
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: script_storage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- TauchMe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-05-28 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A simple gem that lets you store basic data in your ruby script without
|
14
14
|
needing to create a separate file for it
|