plutonium 0.18.1 → 0.18.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: 88bd246377e8856c517f60c191b31d1b2eb13eb8a1c9a990c9a9b741a5f7a2a3
4
- data.tar.gz: 8f9ded2215f9163046d4d8104cfccfa481973b0933535b55f4dcc4221bd96fec
3
+ metadata.gz: 775b695dd0cd3f04c4817bef87ae0f8e5b8fabb585fc5e63e81cfae06af2b14f
4
+ data.tar.gz: 1441e95717e7f77364ea475921ca39650754081d0c713a9c8faf9a1f7c6591fc
5
5
  SHA512:
6
- metadata.gz: 7187049aa7f7f918d8901bdc1c0e6f06f9310837c81d92307759460f4206b8e6d38929eb4c7e8b03991c3042fcefa1b678852de2a659e18937f3cf99d3af553e
7
- data.tar.gz: 207acefbfd0c57bb46de444476ae5fe52c5f7d0958c355da9f04f3993fca8fe30e9b93dc4dd007eb90571fb95a3d321ab39b2d45ab1d88d64111ca714a991e67
6
+ metadata.gz: 71c47b2bc994e2ce899e604360059e4f517f89224f693266e7a81ff51bc350db8aaf81b87680a4bef8cac13fe8ea1283eb57b996693cfebc5aada1c59836fcff
7
+ data.tar.gz: 6f410b2938d5909aca6ddcb960766f65a37fc706e659a733e497f51a651ffb0a2ac56a336ae046d7ce043d052b85fc4b3703c1d00a701722304db5b6cfccfba2
@@ -43,8 +43,6 @@ module Pu
43
43
  template "app/definitions/resource_definition.rb",
44
44
  "packages/#{package_namespace}/app/definitions/#{package_namespace}/#{resource.underscore}_definition.rb"
45
45
  end
46
- # template "app/presenters/resource_presenter.rb", "packages/#{package_namespace}/app/presenters/#{package_namespace}/#{resource.underscore}_presenter.rb" unless expected_parent_presenter
47
- # template "app/query_objects/resource_query_object.rb", "packages/#{package_namespace}/app/query_objects/#{package_namespace}/#{resource.underscore}_query_object.rb" unless expected_parent_query_object
48
46
 
49
47
  template "app/controllers/resource_controller.rb",
50
48
  "packages/#{package_namespace}/app/controllers/#{package_namespace}/#{resource.pluralize.underscore}_controller.rb"
@@ -88,24 +86,6 @@ module Pu
88
86
  expected_parent_policy || "ResourcePolicy"
89
87
  end
90
88
 
91
- def expected_parent_presenter
92
- expected_parent_presenter = "::#{resource_class.classify}Presenter".safe_constantize
93
- expected_parent_presenter if expected_parent_presenter.present? && expected_parent_presenter < ::ResourcePresenter
94
- end
95
-
96
- def parent_presenter
97
- expected_parent_presenter || "ResourcePresenter"
98
- end
99
-
100
- def expected_parent_query_object
101
- expected_parent_query_object = "::#{resource_class.classify}QueryObject".safe_constantize
102
- expected_parent_query_object if expected_parent_query_object.present? && expected_parent_query_object < ::ResourceQueryObject
103
- end
104
-
105
- def parent_query_object
106
- expected_parent_query_object || "ResourceQueryObject"
107
- end
108
-
109
89
  def expected_parent_definition
110
90
  expected_parent_definition = "::#{resource_class.classify}Definition".safe_constantize
111
91
  expected_parent_definition if expected_parent_definition.present? && expected_parent_definition < ::ResourceDefinition
@@ -90,17 +90,6 @@ module Plutonium
90
90
  )
91
91
  end
92
92
 
93
- # Creates a resource presenter
94
- # @param [Class] resource_class The resource class
95
- # @param [ActiveRecord::Base] resource_record The resource record
96
- # @return [Object] The resource presenter
97
- def resource_presenter(resource_class, resource_record)
98
- presenter_class = [current_package, "#{resource_class}Presenter"].compact.join("::").constantize
99
- presenter_class.new resource_context, resource_record
100
- rescue NameError
101
- super
102
- end
103
-
104
93
  # Creates a resource definition
105
94
  # @param [Class] resource_class The resource class
106
95
  # @return [Object] The resource definition
@@ -111,17 +100,6 @@ module Plutonium
111
100
  super
112
101
  end
113
102
 
114
- # Creates a resource query object
115
- # @param [Class] resource_class The resource class
116
- # @param [ActionController::Parameters] params The request parameters
117
- # @return [Object] The resource query object
118
- def resource_query_object(resource_class, params)
119
- query_object_class = [current_package, "#{resource_class}QueryObject"].compact.join("::").constantize
120
- query_object_class.new resource_context, params
121
- rescue NameError
122
- super
123
- end
124
-
125
103
  # Applies submitted resource params if they have been passed
126
104
  def maybe_apply_submitted_resource_params!
127
105
  ensure_get_request
@@ -8,11 +8,6 @@ module Plutonium
8
8
  helper_method :raw_resource_query_params, :current_query_object
9
9
  end
10
10
 
11
- def resource_query_object(resource_class, params)
12
- query_object_class = "#{resource_class}QueryObject".constantize
13
- query_object_class.new resource_context, params
14
- end
15
-
16
11
  def current_query_object
17
12
  @current_query_object ||=
18
13
  Plutonium::Resource::QueryObject.new(resource_class, raw_resource_query_params, request.path) do |query_object|
@@ -1,5 +1,5 @@
1
1
  module Plutonium
2
- VERSION = "0.18.1"
2
+ VERSION = "0.18.2"
3
3
  NEXT_MAJOR_VERSION = VERSION.split(".").tap { |v|
4
4
  v[1] = v[1].to_i + 1
5
5
  v[2] = 0
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plutonium
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.1
4
+ version: 0.18.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Froelich
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-12-30 00:00:00.000000000 Z
11
+ date: 2024-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: zeitwerk
@@ -784,7 +784,6 @@ files:
784
784
  - lib/plutonium/resource/definition.rb
785
785
  - lib/plutonium/resource/interaction.rb
786
786
  - lib/plutonium/resource/policy.rb
787
- - lib/plutonium/resource/presenter.rb
788
787
  - lib/plutonium/resource/query_object.rb
789
788
  - lib/plutonium/resource/record.rb
790
789
  - lib/plutonium/resource/register.rb
@@ -1,111 +0,0 @@
1
- module Plutonium
2
- module Resource
3
- # Presenter class to define actions and fields for a resource
4
- # @abstract
5
- class Presenter
6
- include Plutonium::Core::Definers::FieldDefiner
7
- include Plutonium::Core::Definers::ActionDefiner
8
- include Plutonium::Core::Definers::AssociationRendererDefiner
9
-
10
- # Initializes the presenter with context and resource record
11
- # @param [Object] context The context in which the presenter is used
12
- # @param [ActiveRecord::Base] resource_record The resource record being presented
13
- def initialize(context, resource_record)
14
- @context = context
15
- @resource_record = resource_record
16
-
17
- define_standard_actions
18
- define_actions
19
- define_fields
20
- end
21
-
22
- private
23
-
24
- attr_reader :context, :resource_record
25
-
26
- # Define fields for the resource
27
- # @note Override this in child presenters for custom field definitions
28
- def define_fields
29
- end
30
-
31
- # Define actions for the resource
32
- # @note Override this in child presenters for custom action definitions
33
- def define_actions
34
- end
35
-
36
- # Define standard actions for the resource
37
- def define_standard_actions
38
- define_action Plutonium::Core::Actions::NewAction.new(:new)
39
- define_action Plutonium::Core::Actions::ShowAction.new(:show)
40
- define_action Plutonium::Core::Actions::EditAction.new(:edit)
41
- define_action Plutonium::Core::Actions::DestroyAction.new(:destroy)
42
- end
43
-
44
- # Define an interactive action
45
- # @param [Symbol] name The name of the action
46
- # @param [Object] interaction The interaction object
47
- # @param [Hash] options Additional options for the action
48
- # @note This should be moved to its own definer
49
- def define_interactive_action(name, interaction:, **)
50
- define_action Plutonium::Core::Actions::InteractiveAction.new(name, interaction:, **)
51
- end
52
-
53
- # Define a nested input for the resource
54
- # @param [Symbol] name The name of the input
55
- # @param [Array] inputs The inputs for the nested field
56
- # @param [Class, nil] model_class The model class for the nested field
57
- # @param [Hash] options Additional options for the nested field
58
- # @yield [input] Gives the input object to the block
59
- # @note This should be moved to its own definer
60
- # @raise [ArgumentError] if model_class is not provided for polymorphic associations
61
- def define_nested_input(name, inputs:, model_class: nil, **options)
62
- nested_attribute_options = resource_class.all_nested_attributes_options[name]
63
-
64
- nested_attribute_options_class = nested_attribute_options&.[](:class)
65
- if nested_attribute_options_class.nil? && model_class.nil?
66
- raise ArgumentError, "model_class is required if your field is not an association or is polymorphic. also ensure you have called `accepts_nested_attributes_for :#{name}`"
67
- end
68
- model_class ||= nested_attribute_options_class
69
-
70
- macro = nested_attribute_options&.[](:macro)
71
- allow_destroy = nested_attribute_options&.[](:allow_destroy).presence
72
- update_only = nested_attribute_options&.[](:update_only).presence
73
- limit = determine_nested_input_limit(macro, options[:limit], nested_attribute_options&.[](:limit))
74
-
75
- input = Plutonium::Core::Fields::Inputs::NestedInput.new(
76
- name,
77
- inputs:,
78
- allow_destroy: options.key?(:allow_destroy) ? options[:allow_destroy] : allow_destroy,
79
- update_only: options.key?(:update_only) ? options[:update_only] : update_only,
80
- limit: limit,
81
- resource_class: model_class,
82
- **options
83
- )
84
- yield input if block_given?
85
-
86
- define_field_input name, input:
87
- end
88
-
89
- # Determines the limit for a nested input
90
- # @param [Symbol, nil] macro The macro of the association
91
- # @param [Integer, nil] option_limit The limit provided in options
92
- # @param [Integer, nil] nested_attribute_limit The limit from nested attributes
93
- # @return [Integer, nil] The determined limit
94
- def determine_nested_input_limit(macro, option_limit, nested_attribute_limit)
95
- if %i[belongs_to has_one].include? macro
96
- 1
97
- elsif option_limit
98
- option_limit
99
- else
100
- nested_attribute_limit
101
- end
102
- end
103
-
104
- # Returns the resource class
105
- # @return [Class] The resource class
106
- def resource_class
107
- context.resource_class
108
- end
109
- end
110
- end
111
- end