pakyow-reflection 1.0.0.rc5 → 1.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: 618685d7c15fe7b819f239838128e56e7b22dd21967e03fa2442db8c7d4eb9c9
4
- data.tar.gz: a3327260b12d6d4429121a3e0fb8bf90776abf14a2acb5ed7b59bcf94f32bd6b
3
+ metadata.gz: a6fdcf55904d4c98e4c2bbc5f5f3e16b2348e18d0740d4aff519adf174faccb6
4
+ data.tar.gz: 1a2fe4841022f58cee10db37a0e99e45b46134dd396815f4bd1605960e8d84ce
5
5
  SHA512:
6
- metadata.gz: d52757c2389c70b067b0fc9763758776cc2bcb6be75c624ff43601cc110a2350568879679aeb0094004ca418e3703494d4272fb35f3caa978543c4f3cd3a3e0d
7
- data.tar.gz: 0a36f607603da0a7573cdbb6ec1240f170a3d7a6be4180255c093c4f1baec74b7ac6340da802a9b727ee4ec4e10e299fc29ecdac6191309ad435c998876e2c63
6
+ metadata.gz: ad0da69c4fa726f1bce5aa213b745dc7aa807473d2aefb09ab847ad36c8e7c2bbea26ce68cbb5a3483134f9a530a379b9fcb3b16615224f4b2c2eeba6d3e992e
7
+ data.tar.gz: ef972e0e31525c60c7e6c43e68c4f35f08d6106a9cde13b9e423545dbfebd63585dc3acdddb677f0e1bfd838b90b1f9abe425f305e8f0b57b183be8f2ae18958
@@ -0,0 +1,5 @@
1
+ # UNRELEASED
2
+
3
+ # 1.0
4
+
5
+ * Hello, Web
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "pakyow/support/class_state"
4
+
5
+ require "pakyow/reflection/mirror"
6
+
7
+ module Pakyow
8
+ class Application
9
+ module Behavior
10
+ module Reflection
11
+ module Reflecting
12
+ extend Support::Extension
13
+
14
+ apply_extension do
15
+ attr_reader :mirror
16
+
17
+ after "initialize", priority: :high do
18
+ @mirror = Pakyow::Reflection::Mirror.new(self)
19
+
20
+ builders = Hash[
21
+ config.reflection.builders.map { |type, builder|
22
+ [type, builder.new(self, @mirror.scopes)]
23
+ }
24
+ ]
25
+
26
+ # Build the scopes.
27
+ #
28
+ @mirror.scopes.each do |scope|
29
+ builders[:source].build(scope)
30
+ end
31
+
32
+ # Build the actions.
33
+ #
34
+ @mirror.scopes.each do |scope|
35
+ builders[:actions].build(scope.actions)
36
+ end
37
+
38
+ # Build the endpoints.
39
+ #
40
+ builders[:endpoints].build(@mirror.endpoints)
41
+
42
+ # Cleanup.
43
+ #
44
+ unless Pakyow.env?(:test)
45
+ @mirror.scopes.each(&:cleanup)
46
+ @mirror.endpoints.each(&:cleanup)
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -7,17 +7,17 @@ require "pakyow/reflection/builders/endpoints"
7
7
  require "pakyow/reflection/builders/actions"
8
8
 
9
9
  module Pakyow
10
- module Reflection
11
- module Behavior
12
- module Config
10
+ class Application
11
+ module Config
12
+ module Reflection
13
13
  extend Support::Extension
14
14
 
15
15
  apply_extension do
16
16
  configurable :reflection do
17
17
  setting :builders, {
18
- source: Builders::Source,
19
- endpoints: Builders::Endpoints,
20
- actions: Builders::Actions
18
+ source: Pakyow::Reflection::Builders::Source,
19
+ endpoints: Pakyow::Reflection::Builders::Endpoints,
20
+ actions: Pakyow::Reflection::Builders::Actions
21
21
  }
22
22
 
23
23
  setting :ignored_template_stores, [:errors]
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "pakyow/support/extension"
4
+
5
+ module Pakyow
6
+ module Presenter
7
+ class Renderer
8
+ module Behavior
9
+ module Reflection
10
+ module InstallFormMetadata
11
+ extend Support::Extension
12
+
13
+ apply_extension do
14
+ build do |view, composer:|
15
+ forms = view.forms
16
+ if !view.object.is_a?(StringDoc) && view.object.significant?(:form)
17
+ forms << view
18
+ end
19
+
20
+ forms.each do |form|
21
+ form.label(:form)[:view_path] = composer.view_path
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -8,7 +8,7 @@ module Pakyow
8
8
  # @api private
9
9
  class Source < Base
10
10
  def build(scope)
11
- (source_for_scope(scope) || define_source_for_scope(scope)).class_eval do
11
+ block = Proc.new do
12
12
  scope.attributes.each do |attribute|
13
13
  unless attributes.key?(attribute.name)
14
14
  attribute attribute.name, attribute.type
@@ -25,6 +25,14 @@ module Pakyow
25
25
  end
26
26
  end
27
27
  end
28
+
29
+ (source_for_scope(scope) || define_source_for_scope(scope)).tap do |source|
30
+ unless source.__source_location
31
+ source.__source_location = block.source_location
32
+ end
33
+
34
+ source.class_eval(&block)
35
+ end
28
36
  end
29
37
 
30
38
  private
@@ -82,6 +82,10 @@ module Pakyow
82
82
  trigger 404
83
83
  else
84
84
  if !reflected_exposure.binding.to_s.include?("form") || reflected_endpoint.view_path.end_with?("/edit")
85
+ logger.debug {
86
+ "[reflection] exposing dataset for `#{reflected_exposure.binding}': #{query.inspect}"
87
+ }
88
+
85
89
  expose reflected_exposure.binding.to_s, query
86
90
  end
87
91
  end
@@ -108,11 +112,19 @@ module Pakyow
108
112
  local.__send__(:verify_nested_data, reflected_action.nested, self)
109
113
  end
110
114
  end
115
+
116
+ logger.debug {
117
+ "[reflection] verified and validated submitted values for `#{reflected_action.scope.name}'"
118
+ }
111
119
  end
112
120
  end
113
121
 
114
122
  def perform_reflected_action
115
123
  with_reflected_action do |reflected_action|
124
+ logger.debug {
125
+ "[reflection] performing `#{[self.class.name_of_self, connection.values[:__endpoint_name]].join("_")}' for `#{reflected_action.view_path}'"
126
+ }
127
+
116
128
  proxy = data.public_send(reflected_action.scope.plural_name)
117
129
 
118
130
  # Pull initial values from the params.
@@ -146,6 +158,10 @@ module Pakyow
146
158
  connection.get(:__endpoint_name), values
147
159
  )
148
160
  end
161
+
162
+ logger.debug {
163
+ "[reflection] changes have been saved to the `#{proxy.source.class.plural_name}' data source"
164
+ }
149
165
  end
150
166
  rescue Data::ConstraintViolation
151
167
  trigger 404
@@ -153,6 +169,10 @@ module Pakyow
153
169
 
154
170
  def redirect_to_reflected_destination
155
171
  if destination = reflected_destination
172
+ logger.debug {
173
+ "[reflection] redirecting to `#{destination}'"
174
+ }
175
+
156
176
  redirect destination
157
177
  end
158
178
  end
@@ -3,20 +3,20 @@
3
3
  require "pakyow/framework"
4
4
  require "pakyow/support/inflector"
5
5
 
6
- require "pakyow/reflection/behavior/config"
7
- require "pakyow/reflection/behavior/reflecting"
8
- require "pakyow/reflection/behavior/rendering/install_form_metadata"
6
+ require "pakyow/application/config/reflection"
7
+ require "pakyow/application/behavior/reflection/reflecting"
8
+ require "pakyow/presenter/renderer/behavior/reflection/install_form_metadata"
9
9
  require "pakyow/reflection/mirror"
10
10
 
11
11
  module Pakyow
12
12
  module Reflection
13
13
  class Framework < Pakyow::Framework(:reflection)
14
14
  def boot
15
- object.include Behavior::Config
16
- object.include Behavior::Reflecting
15
+ object.include Application::Config::Reflection
16
+ object.include Application::Behavior::Reflection::Reflecting
17
17
 
18
18
  object.isolated :Renderer do
19
- include Behavior::Rendering::InstallFormMetadata
19
+ include Presenter::Renderer::Behavior::Reflection::InstallFormMetadata
20
20
  end
21
21
 
22
22
  object.isolated :Controller do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pakyow-reflection
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc5
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryan Powell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-15 00:00:00.000000000 Z
11
+ date: 2019-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pakyow-core
@@ -16,72 +16,72 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 1.0.0.rc5
19
+ version: 1.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 1.0.0.rc5
26
+ version: 1.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: pakyow-data
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 1.0.0.rc5
33
+ version: 1.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 1.0.0.rc5
40
+ version: 1.0.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: pakyow-form
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: 1.0.0.rc5
47
+ version: 1.0.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: 1.0.0.rc5
54
+ version: 1.0.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: pakyow-presenter
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 1.0.0.rc5
61
+ version: 1.0.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: 1.0.0.rc5
68
+ version: 1.0.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: pakyow-support
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - '='
74
74
  - !ruby/object:Gem::Version
75
- version: 1.0.0.rc5
75
+ version: 1.0.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - '='
81
81
  - !ruby/object:Gem::Version
82
- version: 1.0.0.rc5
82
+ version: 1.0.0
83
83
  description: Reflected behavior for Pakyow
84
- email: bryan@metabahn.com
84
+ email: bryan@bryanp.org
85
85
  executables: []
86
86
  extensions: []
87
87
  extra_rdoc_files: []
@@ -89,12 +89,12 @@ files:
89
89
  - CHANGELOG.md
90
90
  - LICENSE
91
91
  - README.md
92
+ - lib/pakyow/application/behavior/reflection/reflecting.rb
93
+ - lib/pakyow/application/config/reflection.rb
94
+ - lib/pakyow/presenter/renderer/behavior/reflection/install_form_metadata.rb
92
95
  - lib/pakyow/reflection.rb
93
96
  - lib/pakyow/reflection/action.rb
94
97
  - lib/pakyow/reflection/attribute.rb
95
- - lib/pakyow/reflection/behavior/config.rb
96
- - lib/pakyow/reflection/behavior/reflecting.rb
97
- - lib/pakyow/reflection/behavior/rendering/install_form_metadata.rb
98
98
  - lib/pakyow/reflection/builders/actions.rb
99
99
  - lib/pakyow/reflection/builders/base.rb
100
100
  - lib/pakyow/reflection/builders/endpoints.rb
@@ -106,7 +106,7 @@ files:
106
106
  - lib/pakyow/reflection/mirror.rb
107
107
  - lib/pakyow/reflection/nested.rb
108
108
  - lib/pakyow/reflection/scope.rb
109
- homepage: https://pakyow.org
109
+ homepage: https://pakyow.com
110
110
  licenses:
111
111
  - LGPL-3.0
112
112
  metadata: {}
@@ -121,9 +121,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
121
121
  version: 2.5.0
122
122
  required_rubygems_version: !ruby/object:Gem::Requirement
123
123
  requirements:
124
- - - ">"
124
+ - - ">="
125
125
  - !ruby/object:Gem::Version
126
- version: 1.3.1
126
+ version: '0'
127
127
  requirements: []
128
128
  rubygems_version: 3.0.3
129
129
  signing_key:
@@ -1,52 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "pakyow/support/class_state"
4
-
5
- require "pakyow/reflection/mirror"
6
-
7
- module Pakyow
8
- module Reflection
9
- module Behavior
10
- module Reflecting
11
- extend Support::Extension
12
-
13
- apply_extension do
14
- attr_reader :mirror
15
-
16
- after "initialize", priority: :high do
17
- @mirror = Mirror.new(self)
18
-
19
- builders = Hash[
20
- config.reflection.builders.map { |type, builder|
21
- [type, builder.new(self, @mirror.scopes)]
22
- }
23
- ]
24
-
25
- # Build the scopes.
26
- #
27
- @mirror.scopes.each do |scope|
28
- builders[:source].build(scope)
29
- end
30
-
31
- # Build the actions.
32
- #
33
- @mirror.scopes.each do |scope|
34
- builders[:actions].build(scope.actions)
35
- end
36
-
37
- # Build the endpoints.
38
- #
39
- builders[:endpoints].build(@mirror.endpoints)
40
-
41
- # Cleanup.
42
- #
43
- unless Pakyow.env?(:test)
44
- @mirror.scopes.each(&:cleanup)
45
- @mirror.endpoints.each(&:cleanup)
46
- end
47
- end
48
- end
49
- end
50
- end
51
- end
52
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "pakyow/support/extension"
4
-
5
- module Pakyow
6
- module Reflection
7
- module Behavior
8
- module Rendering
9
- module InstallFormMetadata
10
- extend Support::Extension
11
-
12
- apply_extension do
13
- build do |view, composer:|
14
- forms = view.forms
15
- if !view.object.is_a?(StringDoc) && view.object.significant?(:form)
16
- forms << view
17
- end
18
-
19
- forms.each do |form|
20
- form.label(:form)[:view_path] = composer.view_path
21
- end
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end