anchormodel 0.0.1 → 0.0.2

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: bc6cfead46a797c2039091347636575edf3b46be9172aa0b5e859d64c8dec816
4
- data.tar.gz: c195d9fbb46ea16961977818d30628c8223926708bde1385aa7ca50307820f43
3
+ metadata.gz: 2689ea9bc922423d95855c1ad4e37399ae31c67dfe7babe6a900b3c2c2cf5d4b
4
+ data.tar.gz: c2276b07545a72726e233f8d11acc8ec398f9ed4e6ab85c44ddd9d4e446154aa
5
5
  SHA512:
6
- metadata.gz: 91f34a409344033c7e04ac4eef8a5af81b0997c4c092c2a0baba3df1fcd3c00980a9e11aadee18ef410609bd2aff77476d0524384cad4a3e5d797e0e0e1fb7c2
7
- data.tar.gz: e689dd2d03bc6932b6c7ebf444e3fd8db72136f430b2863c05c9d9f7d3b65dae91f320cadb94b0eb119326244263d34540ac59cccc19310dd2d33ff3bbea3f36
6
+ metadata.gz: 49a9821044b8e5a4d05c3c095be0b39f7a1edc56ba3ad54f1dd74adccab2859ddf356fec18662d338735b132ab332f52b1903b9d82487f053401cd94e7ed734f
7
+ data.tar.gz: 6862cb3d1d31db695c8b6afec195cdd0a3a0fa02530767418b59f6a63a19a45891828cb57bb48d8b8609ee2da2c92503a1edf03a12693869ee5ae54383d1cb91
data/CHANGELOG.md ADDED
@@ -0,0 +1,7 @@
1
+ # 0.0.2 (30.12.2022)
2
+
3
+ - Fix a bug where `.all` loaded entries from all classes.
4
+
5
+ # 0.0.1 (17.12.2022)
6
+
7
+ - Initial release, MVP, early stage. Do not use.
Binary file
data/anchormodel.gemspec CHANGED
@@ -2,19 +2,19 @@
2
2
  # This file is auto-generated via: 'rake gemspec'.
3
3
 
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: anchormodel 0.0.1 ruby lib
5
+ # stub: anchormodel 0.0.2 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "anchormodel".freeze
9
- s.version = "0.0.1"
9
+ s.version = "0.0.2"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Sandro Kalbermatter".freeze]
14
- s.date = "2022-12-17"
15
- s.files = [".gitignore".freeze, ".ruby-version".freeze, ".yardopts".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "anchormodel.gemspec".freeze, "doc/Anchormodel.html".freeze, "doc/Anchormodel/ActiveModelTypeValue.html".freeze, "doc/Anchormodel/Attribute.html".freeze, "doc/Anchormodel/ModelMixin.html".freeze, "doc/Anchormodel/Version.html".freeze, "doc/_index.html".freeze, "doc/class_list.html".freeze, "doc/css/common.css".freeze, "doc/css/full_list.css".freeze, "doc/css/style.css".freeze, "doc/file.README.html".freeze, "doc/file_list.html".freeze, "doc/frames.html".freeze, "doc/index.html".freeze, "doc/js/app.js".freeze, "doc/js/full_list.js".freeze, "doc/js/jquery.js".freeze, "doc/method_list.html".freeze, "doc/top-level-namespace.html".freeze, "lib/anchormodel.rb".freeze, "lib/anchormodel/active_model_type_value.rb".freeze, "lib/anchormodel/attribute.rb".freeze, "lib/anchormodel/model_mixin.rb".freeze, "lib/anchormodel/version.rb".freeze]
14
+ s.date = "2022-12-30"
15
+ s.files = [".gitignore".freeze, ".ruby-version".freeze, ".yardopts".freeze, "CHANGELOG.md".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "anchormodel-0.0.1.gem".freeze, "anchormodel.gemspec".freeze, "doc/Anchormodel.html".freeze, "doc/Anchormodel/ActiveModelTypeValue.html".freeze, "doc/Anchormodel/Attribute.html".freeze, "doc/Anchormodel/ModelMixin.html".freeze, "doc/Anchormodel/Version.html".freeze, "doc/_index.html".freeze, "doc/class_list.html".freeze, "doc/css/common.css".freeze, "doc/css/full_list.css".freeze, "doc/css/style.css".freeze, "doc/file.README.html".freeze, "doc/file_list.html".freeze, "doc/frames.html".freeze, "doc/index.html".freeze, "doc/js/app.js".freeze, "doc/js/full_list.js".freeze, "doc/js/jquery.js".freeze, "doc/method_list.html".freeze, "doc/top-level-namespace.html".freeze, "lib/anchormodel.rb".freeze, "lib/anchormodel/active_model_type_value.rb".freeze, "lib/anchormodel/attribute.rb".freeze, "lib/anchormodel/model_mixin.rb".freeze, "lib/anchormodel/version.rb".freeze]
16
16
  s.required_ruby_version = Gem::Requirement.new(">= 3.0.0".freeze)
17
- s.rubygems_version = "3.2.33".freeze
17
+ s.rubygems_version = "3.3.26".freeze
18
18
  s.summary = "Bringing object-oriented programming to Rails enums".freeze
19
19
 
20
20
  if s.respond_to? :specification_version then
@@ -2,7 +2,7 @@ class Anchormodel
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
- PATCH = 1
5
+ PATCH = 2
6
6
 
7
7
  EDGE = false
8
8
 
data/lib/anchormodel.rb CHANGED
@@ -5,10 +5,21 @@ class Anchormodel
5
5
  attr_reader :key
6
6
  attr_reader :index
7
7
 
8
+ class_attribute :setup_completed, default: false
8
9
  class_attribute :entries_list, default: [] # For ordering
9
10
  class_attribute :entries_hash, default: {} # For quick access
10
11
  class_attribute :valid_keys, default: Set.new
11
12
 
13
+ # When a descendant of Anchormodel is first used, it must overwrite the class_attributes
14
+ # to prevent cross-class pollution.
15
+ def self.setup!
16
+ fail("`setup!` was called twice for Anchormodel subclass #{to_s}.") if setup_completed
17
+ self.entries_list = entries_list.dup
18
+ self.entries_hash = entries_hash.dup
19
+ self.valid_keys = valid_keys.dup
20
+ self.setup_completed = true
21
+ end
22
+
12
23
  # Returns all possible values this Anchormodel can take.
13
24
  def self.all
14
25
  entries_list
@@ -25,6 +36,8 @@ class Anchormodel
25
36
  # @param key [String,Symbol] The key under which the entry should be stored.
26
37
  # @param attributes All named arguments to Anchormodel are made available as instance attributes.
27
38
  def initialize(key, **attributes)
39
+ self.class.setup! unless self.class.setup_completed
40
+
28
41
  @key = key.to_sym
29
42
  @index = entries_list.count
30
43
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: anchormodel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sandro Kalbermatter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-17 00:00:00.000000000 Z
11
+ date: 2022-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -61,9 +61,11 @@ files:
61
61
  - ".gitignore"
62
62
  - ".ruby-version"
63
63
  - ".yardopts"
64
+ - CHANGELOG.md
64
65
  - LICENSE
65
66
  - README.md
66
67
  - Rakefile
68
+ - anchormodel-0.0.1.gem
67
69
  - anchormodel.gemspec
68
70
  - doc/Anchormodel.html
69
71
  - doc/Anchormodel/ActiveModelTypeValue.html
@@ -107,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
109
  - !ruby/object:Gem::Version
108
110
  version: '0'
109
111
  requirements: []
110
- rubygems_version: 3.2.33
112
+ rubygems_version: 3.3.26
111
113
  signing_key:
112
114
  specification_version: 4
113
115
  summary: Bringing object-oriented programming to Rails enums