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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '081d810c4d790e1ce28fd8951621d736c270e00a1ec8752125288d19d03042a6'
4
- data.tar.gz: a2c3e1e8083fc365fffa277fb862ace748fa036a00a37b24efffc691bc2e320b
3
+ metadata.gz: 54d33d8e20dd1a6eba8f6ef42fa7fcef516ed109da45ba9e8be5ac9104d0303b
4
+ data.tar.gz: 192f2614900d7096d8a2a7d0817c7f3064454793350e1a64a18fd452374ee1b8
5
5
  SHA512:
6
- metadata.gz: c5b9ff4db2c1ef22ac2954c1e70642121c2cd8bba5b5e6def1d871d7882f5ec874774f976558f49a92725c0ce34ec016067a495a615a6cb93515831b36cc6951
7
- data.tar.gz: 1e777d7a330a9640ec2b67133c57156b8e8de68b820a228cfda5e82478c015fb0f8083907f3a524bff79ed4d714e20d0fe5a3ccb4dd4681e07aa0bb9bacc1d2a
6
+ metadata.gz: ecb0af18db24d04c03dbbc31526f1eef431bab529cb439dbc852a60a7a3a916df22c9578b00c8563b3deae7485520c0cecc2a91bb06286caf014ef7b044b6237
7
+ data.tar.gz: f86833b01588a6c8a0e4f8cdd105bd75ba523cc94f9810c31dcc10eb7da204df1286c0b0700dec2399be7d07518e0c35050ab209fc87ec44397a02cc78f07ace
@@ -1,90 +1,75 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'script_storage_item'
4
-
5
- @data = []
6
-
7
- def path
8
- "#{`pwd`.strip}/#{$PROGRAM_NAME}"
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
- def load_storage
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
- file_data.scan(/([A-z]*)(.*[()]*):(.*)/).each do |raw|
32
- type = raw[1].strip[1..-2]
33
- type = '' if type.nil?
13
+ class ScriptStorage
14
+ @@data = []
34
15
 
35
- case type
36
- when 'array'
37
- value = []
16
+ class << self
17
+ def path
18
+ "#{Dir.pwd}/#{$PROGRAM_NAME}"
19
+ end
38
20
 
39
- raw[2].strip.split(',').each do |v|
40
- value.append(v.strip)
41
- end
21
+ def read(key)
22
+ item = @@data.find { |item| item.key == key }
23
+ item&.value
24
+ end
42
25
 
43
- @data.append(Item.new(raw[0].strip, value))
44
- when 'integer'
45
- @data.append(Item.new(raw[0].strip, raw[2].strip.to_i))
26
+ def write(key, value)
27
+ item = @@data.find { |item| item.key == key }
28
+ if item
29
+ item.value = value
46
30
  else
47
- @data.append(Item.new(raw[0].strip, raw[2].strip))
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 write_storage(key, value)
59
- if @data.include?(key)
60
- @data.each do |v|
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
- write_file
68
- end
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
- def delete_storage(key)
71
- return unless @data.include?(key)
46
+ private
72
47
 
73
- @data.delete(key)
74
- write_file
75
- end
76
-
77
- def delete_all_storage
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
- File.write(path, file_data)
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
@@ -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 = @value.class.to_s.downcase
23
-
24
- case type
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
- @key == if other.class == String
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: 1.2.3
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: 2023-08-04 00:00:00.000000000 Z
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