compony 0.7.1 → 0.8.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.
Files changed (119) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +34 -0
  3. data/Gemfile.lock +1 -1
  4. data/README.md +10 -14
  5. data/VERSION +1 -1
  6. data/compony.gemspec +4 -4
  7. data/doc/ComponentGenerator.html +1 -1
  8. data/doc/Components.html +1 -1
  9. data/doc/ComponentsGenerator.html +1 -1
  10. data/doc/Compony/Component.html +193 -457
  11. data/doc/Compony/ComponentMixins/Default/Labelling.html +1 -1
  12. data/doc/Compony/ComponentMixins/Default/Standalone/ResourcefulVerbDsl.html +1 -1
  13. data/doc/Compony/ComponentMixins/Default/Standalone/StandaloneDsl.html +3 -3
  14. data/doc/Compony/ComponentMixins/Default/Standalone/VerbDsl.html +1 -1
  15. data/doc/Compony/ComponentMixins/Default/Standalone.html +187 -1
  16. data/doc/Compony/ComponentMixins/Default.html +1 -1
  17. data/doc/Compony/ComponentMixins/Resourceful.html +2 -2
  18. data/doc/Compony/ComponentMixins.html +1 -1
  19. data/doc/Compony/Components/Button.html +2 -2
  20. data/doc/Compony/Components/Buttons/CssButton.html +282 -0
  21. data/doc/Compony/Components/Buttons/Link.html +252 -0
  22. data/doc/Compony/Components/Buttons.html +126 -0
  23. data/doc/Compony/Components/Destroy.html +11 -11
  24. data/doc/Compony/Components/Edit.html +14 -14
  25. data/doc/Compony/Components/Form.html +100 -100
  26. data/doc/Compony/Components/Index.html +2 -2
  27. data/doc/Compony/Components/List.html +3 -3
  28. data/doc/Compony/Components/New.html +2 -2
  29. data/doc/Compony/Components/Show.html +24 -24
  30. data/doc/Compony/Components/WithForm.html +3 -3
  31. data/doc/Compony/Components.html +5 -3
  32. data/doc/Compony/ControllerMixin.html +2 -2
  33. data/doc/Compony/Engine.html +1 -1
  34. data/doc/Compony/ExposedIntentsDsl.html +403 -0
  35. data/doc/Compony/Intent.html +1503 -0
  36. data/doc/Compony/MethodAccessibleHash.html +1 -1
  37. data/doc/Compony/ModelFields/Anchormodel.html +1 -1
  38. data/doc/Compony/ModelFields/Association.html +2 -2
  39. data/doc/Compony/ModelFields/Attachment.html +1 -1
  40. data/doc/Compony/ModelFields/Base.html +1 -1
  41. data/doc/Compony/ModelFields/Boolean.html +1 -1
  42. data/doc/Compony/ModelFields/Color.html +1 -1
  43. data/doc/Compony/ModelFields/Currency.html +1 -1
  44. data/doc/Compony/ModelFields/Date.html +1 -1
  45. data/doc/Compony/ModelFields/Datetime.html +1 -1
  46. data/doc/Compony/ModelFields/Decimal.html +1 -1
  47. data/doc/Compony/ModelFields/Email.html +1 -1
  48. data/doc/Compony/ModelFields/Float.html +1 -1
  49. data/doc/Compony/ModelFields/Integer.html +1 -1
  50. data/doc/Compony/ModelFields/Percentage.html +1 -1
  51. data/doc/Compony/ModelFields/Phone.html +1 -1
  52. data/doc/Compony/ModelFields/RichText.html +1 -1
  53. data/doc/Compony/ModelFields/String.html +1 -1
  54. data/doc/Compony/ModelFields/Text.html +1 -1
  55. data/doc/Compony/ModelFields/Time.html +1 -1
  56. data/doc/Compony/ModelFields/Url.html +1 -1
  57. data/doc/Compony/ModelFields.html +1 -1
  58. data/doc/Compony/ModelMixin.html +1 -1
  59. data/doc/Compony/NaturalOrdering.html +1 -1
  60. data/doc/Compony/RequestContext.html +177 -14
  61. data/doc/Compony/Version.html +1 -1
  62. data/doc/Compony/ViewHelpers.html +15 -272
  63. data/doc/Compony/VirtualModel.html +1 -1
  64. data/doc/Compony.html +303 -837
  65. data/doc/ComponyController.html +1 -1
  66. data/doc/_index.html +30 -2
  67. data/doc/class_list.html +1 -1
  68. data/doc/file.README.html +11 -18
  69. data/doc/guide/basic_component.md +12 -8
  70. data/doc/guide/example.md +17 -17
  71. data/doc/guide/feasibility.md +4 -2
  72. data/doc/guide/generators.md +4 -2
  73. data/doc/guide/inheritance.md +4 -2
  74. data/doc/guide/installation.md +4 -2
  75. data/doc/guide/intents.md +167 -0
  76. data/doc/guide/internal_datastructures.md +4 -2
  77. data/doc/guide/model_fields.md +4 -2
  78. data/doc/guide/nesting.md +5 -3
  79. data/doc/guide/ownership.md +5 -3
  80. data/doc/guide/pre_built_components/destroy.md +3 -3
  81. data/doc/guide/pre_built_components/edit.md +1 -1
  82. data/doc/guide/pre_built_components/form.md +1 -1
  83. data/doc/guide/pre_built_components/index.md +1 -1
  84. data/doc/guide/pre_built_components/list.md +1 -1
  85. data/doc/guide/pre_built_components/new.md +2 -2
  86. data/doc/guide/pre_built_components/show.md +1 -1
  87. data/doc/guide/pre_built_components/with_form.md +1 -1
  88. data/doc/guide/pre_built_components.md +4 -3
  89. data/doc/guide/resourceful.md +5 -3
  90. data/doc/guide/standalone.md +10 -2
  91. data/doc/guide/virtual_models.md +4 -2
  92. data/doc/index.html +11 -18
  93. data/doc/method_list.html +273 -161
  94. data/doc/top-level-namespace.html +1 -1
  95. data/lib/compony/component.rb +19 -48
  96. data/lib/compony/component_mixins/default/standalone/standalone_dsl.rb +2 -2
  97. data/lib/compony/component_mixins/default/standalone.rb +16 -0
  98. data/lib/compony/component_mixins/resourceful.rb +1 -1
  99. data/lib/compony/components/buttons/css_button.rb +32 -0
  100. data/lib/compony/components/buttons/link.rb +31 -0
  101. data/lib/compony/components/destroy.rb +9 -8
  102. data/lib/compony/components/edit.rb +5 -4
  103. data/lib/compony/components/form.rb +7 -1
  104. data/lib/compony/components/index.rb +2 -2
  105. data/lib/compony/components/list.rb +4 -4
  106. data/lib/compony/components/new.rb +1 -1
  107. data/lib/compony/components/show.rb +8 -11
  108. data/lib/compony/components/with_form.rb +1 -1
  109. data/lib/compony/exposed_intents_dsl.rb +29 -0
  110. data/lib/compony/intent.rb +145 -0
  111. data/lib/compony/model_fields/association.rb +1 -1
  112. data/lib/compony/request_context.rb +21 -0
  113. data/lib/compony/view_helpers.rb +5 -48
  114. data/lib/compony.rb +63 -149
  115. metadata +12 -6
  116. data/doc/guide/helpers.md +0 -156
  117. data/doc/guide/pre_built_components/button.md +0 -8
  118. data/doc/guide/root_actions.md +0 -67
  119. data/lib/compony/components/button.rb +0 -61
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f370d3509af479647cefb4889e4b8ae5214f9279a581ba4bf8254ab38b85ffad
4
- data.tar.gz: ec3e94f9a7b73b4fbd6219e1d74ad287870d86b3ac2bc808713ac40f790f0714
3
+ metadata.gz: 7c86661ace81edbc9e70bafc696e79ec4f6b841f922101438c9e3045961abc97
4
+ data.tar.gz: 0c64af093433a17038dbf61cfafaf29f055c8bc17b34b2b533ad197fc6bb2185
5
5
  SHA512:
6
- metadata.gz: 6056562bf46feed464208dcd97989e52ab5bd577162bcd220d6295b7d8201127cec3874b7cc69ecd92ec954e3d817c0aec77f5bc9d56e798f9b0c6d4b5346e8f
7
- data.tar.gz: fea9be679b4e245e85fe6e6c5a5e1fb9c2ac2ad73360c5a8806efe347014f7687f099482cb9b89488dd572a091eaca90c49a89acaed414bcf6876838c8cc11bb
6
+ metadata.gz: c45a94a487cf2ed9073ab09ec4728923142be3b28086746b42bb11a9b920520d5df949214e37f3dba43946a6f68627af7f522725b07b500a6774b3d8ff6ac433
7
+ data.tar.gz: b228eb689d514810a2bad4f53187899d4d931b5cd70979cd3447b9fe5bf29e2b05faa1352e7a87d6ee1a270f70a789e7934b4ff95b221ec3f0874a56de607850
data/CHANGELOG.md CHANGED
@@ -1,3 +1,37 @@
1
+ # 0.8.0
2
+
3
+ Be advised that this version brings major interface changes that will break existing applications. When upgrading, carefully follow sthe steps unter "Steps to take" and test your application thoroughly.
4
+
5
+ - Add `render_sub_comp` helper
6
+ - Major API change: implement `Compony::Intent` as discussed in Issue #14:
7
+ - Rewire many pure helpers to use intents instead, greatly cleaning up their interface
8
+ - Remove pure helpers `rails_action_name`, `path_helper_name`, `comp_cst` and `family_cst`
9
+ - Remove `button_defaults` and associated logic, as it was rarely used
10
+ - Remove `Compony::Components::Button` and replace it by `Compony::Components::Buttons::Link` and `Compony::Components::Buttons::CssButton`
11
+ - Remove `Compony.button`, `compony_button` and `compony_link`
12
+ - Use intents in `sub_comp` and thus also in `resourceful_sub_comp`, allowing tho write something like `sub_comp :list, user.quotes`
13
+ - Update documentation
14
+
15
+ ## Steps to take
16
+
17
+ - Make sure you no longer use the following methods that have been removed:
18
+ - `Compony.rails_action_name`
19
+ - `Compony.path_helper_name`
20
+ - `Compony.button_defaults`
21
+ - `Compony.with_button_defaults`
22
+ - `Compony.button_component_class=` (replace by button styles, see documentation)
23
+ - `Component.comp_cst` (replace by `comp_name`)
24
+ - `Component.family_cst` (replace by `family_name`)
25
+ - If using custom buttons, inherit from `Compony::Components::Buttons::Link` and adjust code as needed. Register your button with `Compony.register_button_style` and consider setting `Compony.default_button_style=`.
26
+ - Search for each following keywords in your application and replace it as follows:
27
+ - Replace root actions (`action ... do` and `skip_action`) by exposed intents (see documentation).
28
+ - Replace `render_actions` or `compony_actions` by a custom loop of the kind `Compony.root_comp&.exposed_intents&.map { |i| i.render(controller) }`
29
+ - Replace buttons and change any `params:` to `path:`; as well as `label_format` or `label_opts: { format: ... }` by something like: `render_intent(:show, @data, button: { label: { format: :short } })`:
30
+ - `Compony.button` was typically used in a component's root actions and should thus already have been replaced in the previous step.
31
+ - Replace `compony_button` by `render_intent`
32
+ - Replace `compony_link` by `render_intent` and pass `button: { style: :link }` as an argument
33
+ - Enhancement: Consider replacing patterns like `sub_comp(Components::Quotes::List, data: user.quotes).render(controller)` by `render_sub_comp(:list, user.quotes)`.
34
+
1
35
  # 0.7.1
2
36
 
3
37
  - Implement `Compony::VirtualModel` and document it in the Readme file
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- compony (0.7.1.edge)
4
+ compony (0.7.2.edge)
5
5
  anchormodel (~> 0.2.1)
6
6
  cancancan (~> 3.6.1)
7
7
  dslblend (>= 0.0.3)
data/README.md CHANGED
@@ -8,25 +8,25 @@
8
8
 
9
9
  # About Compony
10
10
 
11
- Compony is a Gem that allows you to write your Rails application in component-style fashion. It combines a controller action and route along with its view into a single Ruby class. This allows writing much DRYer code, using inheritance even in views and much easier refactoring for your Rails applications, helping you to keep the code clean as the application evolves.
11
+ Compony is a Gem that allows you to write your Rails application in **component-style** fashion. It combines a controller action and route along with its view into a single Ruby class. Along with the DSL approach and a powerful model mixin, Compony **makes your application's code more semantic**, allows writing **much DRYer code**, using inheritance even in views and **much easier refactoring** for your Rails applications, helping you to **keep the code clean as the application evolves**.
12
12
 
13
13
  Compony's key aspects:
14
14
 
15
15
  - A Compony component is a single class that exports route(s), controller action(s) and a view to Rails.
16
16
  - Refactor common logic into your own components and inherit from them to DRY up your code.
17
- - Compony's powerful model mixin allows you to define metadata in your models and react to them. Examples:
18
- - Compony fields capture attributes that should be made visible in your UI. They allow you to implement formatting behavior and parameter sanitization for various types, e.g. URLs, phone numbers, colors etc. ready to be used in your lists, detail panels, or forms.
19
- - Compony's feasibility framework allows you to prohibit actions based on conditions, along with an error message. This causes all buttons pointing to that action to be disabled with a meaningful error message.
17
+ - Compony's model mixin allows you to define metadata in your models and react to them, resulting in more semantic code. Examples:
18
+ - Compony fields capture attributes that should be made visible in your UI. They allow you to implement formatting behavior and parameter sanitization for various types, e.g. URLs, phone numbers, colors etc. ready to be used in your lists, detail panels, or forms.
19
+ - Compony's feasibility framework allows you to prohibit actions based on conditions, along with an error message. This causes all buttons pointing to that action to be disabled with a meaningful error message.
20
20
  - Compony only structures your code, but provides no style whatsoever. It is like a bookshelf rather than a reader's library. You still implement your own layouts, CSS and Javascript to define the behavior of your front-end.
21
- - Using Compony, you **can** write your application as components, but it is still possible to have regular routes, controllers and views side-to-side to it. This way, you can migrate your applications to Compony little by little and enter and leave the Compony world as you please. It is also possible to render Compony components from regular views and vice versa.
22
- - Compony is built for Rails 7 and fully supports Stimulus and Turbo Drive. Turbo Frames and Streams are not yet targeted, so Compony is currently meant for websites where every click triggers a "full page load" (in quotes because they are not actually full page loads due to Turbo Drive).
21
+ - Compony seamlessly integrates with Rails and does not interfere with existing code. Using Compony, you **can** write your application as components, but it is still possible to have regular routes, controllers and views side-to-side to it. This way, you can migrate your applications to Compony little by little and enter and leave the Compony world as you please. It is also possible to render Compony components from regular views and vice versa.
22
+ - Compony is built for Rails 7, 7.1 and 8, and fully supports Stimulus and Turbo Drive. Turbo Frames and Streams are not yet targeted, but can be used alongside, just like with any Rails application.
23
23
  - Compony uses [CanCanCan](https://github.com/CanCanCommunity/cancancan) for authorization but does not provide an authentication mechanism. You can easily build your own by creating login/logout components that manage cookies, and configure Compony to enforce authentication using the `Compony.authentication_before_action` setter. I have also successfully tested Compony to work with [Devise](https://github.com/heartcombo/devise).
24
24
 
25
25
  ## State of the project
26
26
 
27
27
  I am actively using this framework in various applications and both performance and reliability are good. However, the project is experimental and lacking peer reviews and especially automatic testing, such as unit and integration tests. Also, expect there to be ([documented](/CHANGELOG.md)) breaking changes in the future, as the API will likely be further refined, resulting in renamings and deprecation of various methods.
28
28
 
29
- ## Related projects
29
+ ## Other projects exploring similar concepts
30
30
 
31
31
  A project with a similar aim, but a different approach, is [Phlex](https://github.com/phlex-ruby/phlex).
32
32
 
@@ -42,9 +42,8 @@ The following topics should help you get started. Please note that the links wil
42
42
  - [Inheritance](./doc/guide/inheritance.md): DRY up your code by providing base components
43
43
  - [Nesting](./doc/guide/nesting.md): How to instanciate components inside other components
44
44
  - [Resourceful components](./doc/guide/resourceful.md): How to create components that deal with Rails-style resources
45
- - [Compony helpers, links and buttons](./doc/guide/helpers.md): Important tools for concise Compony programming
46
- - [Root actions](./doc/guide/root_actions.md): How to provide context-sensitive buttons to your application
47
- - [Feasibility](./doc/guide/feasibility.md): Disabiling buttons based on context (contains `prevent`)
45
+ - [Intents](./doc/guide/intents.md): How to point to a component and provide custom components for rendering intents
46
+ - [Feasibility](./doc/guide/feasibility.md): Disabiling intents based on context (contains `prevent`)
48
47
  - [Ownership](./doc/guide/ownership.md): Informing Compony that a resource is conceptually part of another resource
49
48
  - [Model fields](./doc/guide/model_fields.md): Allowing Compony to auto-generate UI elements by telling it about the structure of your model
50
49
  - [Rails generators](./doc/guide/generators.md): Creating components quickly
@@ -52,7 +51,6 @@ The following topics should help you get started. Please note that the links wil
52
51
  - [Virtual models](./doc/guide/internal_datastructures.md): Unleashing non-persistent interactions through Compony's `ActiveType` integration
53
52
  - Pre-built components shipped with Compony
54
53
  - [Introduction](./doc/guide/pre_built_components.md)
55
- - [Button](./doc/guide/pre_built_components/button.md): This component class gets instanciated whenever using `Compony.button` or `compony_button`.
56
54
  - [Show](./doc/guide/pre_built_components/show.md): Compony's equivalent to Rail's `show` controller action
57
55
  - [Index](./doc/guide/pre_built_components/index.md): Compony's equivalent to Rail's `index` controller action
58
56
  - [List](./doc/guide/pre_built_components/list.md): Compony's equivalent to Rail's `_list` partial
@@ -78,9 +76,7 @@ Compony is Free Software under the LGPLv3 and you are most welcome to contribute
78
76
  - Verb DSL hooks still take precedence over global hooks, but if given, they MUST provide a block.
79
77
  - If global hooks are present, they will be executed in every verb.
80
78
  - At this point, I haven't gotten into Turbo Streams and Turbo Frames. It would be interesting to extend Compony such it also makes writing applications using these features much easier.
81
- - Feasibility:
82
- - The feasibility framework does not yet enforce prevention, but only has effects on buttons. Actions should be structured more explicitly such that prevention becomes as tight as authorization.
83
- - Feasibility for links is not yet implemented.
79
+ - The feasibility framework does not yet enforce prevention, but only has effects on buttons.
84
80
  - Compony is not compatible with `tailwindcss-rails`. This is likely due to Tailwind automatically removing any CSS that is not used by the application and the usage detection not picking up Compony components, as their content is not provided in views.
85
81
 
86
82
  # Acknowledgements
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.1
1
+ 0.8.0
data/compony.gemspec CHANGED
@@ -2,17 +2,17 @@
2
2
  # This file is auto-generated via: 'rake gemspec'.
3
3
 
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: compony 0.7.1 ruby lib
5
+ # stub: compony 0.8.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "compony".freeze
9
- s.version = "0.7.1".freeze
9
+ s.version = "0.8.0".freeze
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, "contributors".freeze]
14
- s.date = "2025-11-20"
15
- s.files = [".gitignore".freeze, ".ruby-version".freeze, ".yardopts".freeze, "CHANGELOG.md".freeze, "Gemfile".freeze, "Gemfile.lock".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "TODO.md".freeze, "VERSION".freeze, "app/controllers/compony_controller.rb".freeze, "compony.gemspec".freeze, "config/locales/de.yml".freeze, "config/locales/en.yml".freeze, "config/locales/fr.yml".freeze, "config/routes.rb".freeze, "doc/ComponentGenerator.html".freeze, "doc/Components.html".freeze, "doc/ComponentsGenerator.html".freeze, "doc/Compony.html".freeze, "doc/Compony/Component.html".freeze, "doc/Compony/ComponentMixins.html".freeze, "doc/Compony/ComponentMixins/Default.html".freeze, "doc/Compony/ComponentMixins/Default/Labelling.html".freeze, "doc/Compony/ComponentMixins/Default/Standalone.html".freeze, "doc/Compony/ComponentMixins/Default/Standalone/ResourcefulVerbDsl.html".freeze, "doc/Compony/ComponentMixins/Default/Standalone/StandaloneDsl.html".freeze, "doc/Compony/ComponentMixins/Default/Standalone/VerbDsl.html".freeze, "doc/Compony/ComponentMixins/Resourceful.html".freeze, "doc/Compony/Components.html".freeze, "doc/Compony/Components/Button.html".freeze, "doc/Compony/Components/Destroy.html".freeze, "doc/Compony/Components/Edit.html".freeze, "doc/Compony/Components/Form.html".freeze, "doc/Compony/Components/Index.html".freeze, "doc/Compony/Components/List.html".freeze, "doc/Compony/Components/New.html".freeze, "doc/Compony/Components/Show.html".freeze, "doc/Compony/Components/WithForm.html".freeze, "doc/Compony/ControllerMixin.html".freeze, "doc/Compony/Engine.html".freeze, "doc/Compony/MethodAccessibleHash.html".freeze, "doc/Compony/ModelFields.html".freeze, "doc/Compony/ModelFields/Anchormodel.html".freeze, "doc/Compony/ModelFields/Association.html".freeze, "doc/Compony/ModelFields/Attachment.html".freeze, "doc/Compony/ModelFields/Base.html".freeze, "doc/Compony/ModelFields/Boolean.html".freeze, "doc/Compony/ModelFields/Color.html".freeze, "doc/Compony/ModelFields/Currency.html".freeze, "doc/Compony/ModelFields/Date.html".freeze, "doc/Compony/ModelFields/Datetime.html".freeze, "doc/Compony/ModelFields/Decimal.html".freeze, "doc/Compony/ModelFields/Email.html".freeze, "doc/Compony/ModelFields/Float.html".freeze, "doc/Compony/ModelFields/Integer.html".freeze, "doc/Compony/ModelFields/Percentage.html".freeze, "doc/Compony/ModelFields/Phone.html".freeze, "doc/Compony/ModelFields/RichText.html".freeze, "doc/Compony/ModelFields/String.html".freeze, "doc/Compony/ModelFields/Text.html".freeze, "doc/Compony/ModelFields/Time.html".freeze, "doc/Compony/ModelFields/Url.html".freeze, "doc/Compony/ModelMixin.html".freeze, "doc/Compony/NaturalOrdering.html".freeze, "doc/Compony/RequestContext.html".freeze, "doc/Compony/Version.html".freeze, "doc/Compony/ViewHelpers.html".freeze, "doc/Compony/VirtualModel.html".freeze, "doc/ComponyController.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/guide/basic_component.md".freeze, "doc/guide/example.md".freeze, "doc/guide/feasibility.md".freeze, "doc/guide/generators.md".freeze, "doc/guide/helpers.md".freeze, "doc/guide/inheritance.md".freeze, "doc/guide/installation.md".freeze, "doc/guide/internal_datastructures.md".freeze, "doc/guide/model_fields.md".freeze, "doc/guide/nesting.md".freeze, "doc/guide/ownership.md".freeze, "doc/guide/pre_built_components.md".freeze, "doc/guide/pre_built_components/button.md".freeze, "doc/guide/pre_built_components/destroy.md".freeze, "doc/guide/pre_built_components/edit.md".freeze, "doc/guide/pre_built_components/form.md".freeze, "doc/guide/pre_built_components/index.md".freeze, "doc/guide/pre_built_components/list.md".freeze, "doc/guide/pre_built_components/new.md".freeze, "doc/guide/pre_built_components/show.md".freeze, "doc/guide/pre_built_components/with_form.md".freeze, "doc/guide/resourceful.md".freeze, "doc/guide/root_actions.md".freeze, "doc/guide/standalone.md".freeze, "doc/guide/virtual_models.md".freeze, "doc/imgs/intro-example-destroy.png".freeze, "doc/imgs/intro-example-edit.png".freeze, "doc/imgs/intro-example-index.png".freeze, "doc/imgs/intro-example-new.png".freeze, "doc/imgs/intro-example-show.png".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/resourceful_lifecycle.graphml".freeze, "doc/resourceful_lifecycle.pdf".freeze, "doc/resourceful_lifecycle.png".freeze, "doc/top-level-namespace.html".freeze, "lib/compony.rb".freeze, "lib/compony/component.rb".freeze, "lib/compony/component_mixins/default/labelling.rb".freeze, "lib/compony/component_mixins/default/standalone.rb".freeze, "lib/compony/component_mixins/default/standalone/resourceful_verb_dsl.rb".freeze, "lib/compony/component_mixins/default/standalone/standalone_dsl.rb".freeze, "lib/compony/component_mixins/default/standalone/verb_dsl.rb".freeze, "lib/compony/component_mixins/resourceful.rb".freeze, "lib/compony/components/button.rb".freeze, "lib/compony/components/destroy.rb".freeze, "lib/compony/components/edit.rb".freeze, "lib/compony/components/form.rb".freeze, "lib/compony/components/index.rb".freeze, "lib/compony/components/list.rb".freeze, "lib/compony/components/new.rb".freeze, "lib/compony/components/show.rb".freeze, "lib/compony/components/with_form.rb".freeze, "lib/compony/controller_mixin.rb".freeze, "lib/compony/engine.rb".freeze, "lib/compony/method_accessible_hash.rb".freeze, "lib/compony/model_fields/anchormodel.rb".freeze, "lib/compony/model_fields/association.rb".freeze, "lib/compony/model_fields/attachment.rb".freeze, "lib/compony/model_fields/base.rb".freeze, "lib/compony/model_fields/boolean.rb".freeze, "lib/compony/model_fields/color.rb".freeze, "lib/compony/model_fields/currency.rb".freeze, "lib/compony/model_fields/date.rb".freeze, "lib/compony/model_fields/datetime.rb".freeze, "lib/compony/model_fields/decimal.rb".freeze, "lib/compony/model_fields/email.rb".freeze, "lib/compony/model_fields/float.rb".freeze, "lib/compony/model_fields/integer.rb".freeze, "lib/compony/model_fields/percentage.rb".freeze, "lib/compony/model_fields/phone.rb".freeze, "lib/compony/model_fields/rich_text.rb".freeze, "lib/compony/model_fields/string.rb".freeze, "lib/compony/model_fields/text.rb".freeze, "lib/compony/model_fields/time.rb".freeze, "lib/compony/model_fields/url.rb".freeze, "lib/compony/model_mixin.rb".freeze, "lib/compony/natural_ordering.rb".freeze, "lib/compony/request_context.rb".freeze, "lib/compony/version.rb".freeze, "lib/compony/view_helpers.rb".freeze, "lib/compony/virtual_model.rb".freeze, "lib/generators/component/USAGE".freeze, "lib/generators/component/component_generator.rb".freeze, "lib/generators/component/templates/component.rb.erb".freeze, "lib/generators/component/templates/destroy.rb.erb".freeze, "lib/generators/component/templates/edit.rb.erb".freeze, "lib/generators/component/templates/form.rb.erb".freeze, "lib/generators/component/templates/index.rb.erb".freeze, "lib/generators/component/templates/list.rb.erb".freeze, "lib/generators/component/templates/new.rb.erb".freeze, "lib/generators/component/templates/show.rb.erb".freeze, "lib/generators/component/templates/with_base_component.rb.erb".freeze, "lib/generators/components/USAGE".freeze, "lib/generators/components/components_generator.rb".freeze, "logo.svg".freeze]
14
+ s.date = "2025-11-27"
15
+ s.files = [".gitignore".freeze, ".ruby-version".freeze, ".yardopts".freeze, "CHANGELOG.md".freeze, "Gemfile".freeze, "Gemfile.lock".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "TODO.md".freeze, "VERSION".freeze, "app/controllers/compony_controller.rb".freeze, "compony.gemspec".freeze, "config/locales/de.yml".freeze, "config/locales/en.yml".freeze, "config/locales/fr.yml".freeze, "config/routes.rb".freeze, "doc/ComponentGenerator.html".freeze, "doc/Components.html".freeze, "doc/ComponentsGenerator.html".freeze, "doc/Compony.html".freeze, "doc/Compony/Component.html".freeze, "doc/Compony/ComponentMixins.html".freeze, "doc/Compony/ComponentMixins/Default.html".freeze, "doc/Compony/ComponentMixins/Default/Labelling.html".freeze, "doc/Compony/ComponentMixins/Default/Standalone.html".freeze, "doc/Compony/ComponentMixins/Default/Standalone/ResourcefulVerbDsl.html".freeze, "doc/Compony/ComponentMixins/Default/Standalone/StandaloneDsl.html".freeze, "doc/Compony/ComponentMixins/Default/Standalone/VerbDsl.html".freeze, "doc/Compony/ComponentMixins/Resourceful.html".freeze, "doc/Compony/Components.html".freeze, "doc/Compony/Components/Button.html".freeze, "doc/Compony/Components/Buttons.html".freeze, "doc/Compony/Components/Buttons/CssButton.html".freeze, "doc/Compony/Components/Buttons/Link.html".freeze, "doc/Compony/Components/Destroy.html".freeze, "doc/Compony/Components/Edit.html".freeze, "doc/Compony/Components/Form.html".freeze, "doc/Compony/Components/Index.html".freeze, "doc/Compony/Components/List.html".freeze, "doc/Compony/Components/New.html".freeze, "doc/Compony/Components/Show.html".freeze, "doc/Compony/Components/WithForm.html".freeze, "doc/Compony/ControllerMixin.html".freeze, "doc/Compony/Engine.html".freeze, "doc/Compony/ExposedIntentsDsl.html".freeze, "doc/Compony/Intent.html".freeze, "doc/Compony/MethodAccessibleHash.html".freeze, "doc/Compony/ModelFields.html".freeze, "doc/Compony/ModelFields/Anchormodel.html".freeze, "doc/Compony/ModelFields/Association.html".freeze, "doc/Compony/ModelFields/Attachment.html".freeze, "doc/Compony/ModelFields/Base.html".freeze, "doc/Compony/ModelFields/Boolean.html".freeze, "doc/Compony/ModelFields/Color.html".freeze, "doc/Compony/ModelFields/Currency.html".freeze, "doc/Compony/ModelFields/Date.html".freeze, "doc/Compony/ModelFields/Datetime.html".freeze, "doc/Compony/ModelFields/Decimal.html".freeze, "doc/Compony/ModelFields/Email.html".freeze, "doc/Compony/ModelFields/Float.html".freeze, "doc/Compony/ModelFields/Integer.html".freeze, "doc/Compony/ModelFields/Percentage.html".freeze, "doc/Compony/ModelFields/Phone.html".freeze, "doc/Compony/ModelFields/RichText.html".freeze, "doc/Compony/ModelFields/String.html".freeze, "doc/Compony/ModelFields/Text.html".freeze, "doc/Compony/ModelFields/Time.html".freeze, "doc/Compony/ModelFields/Url.html".freeze, "doc/Compony/ModelMixin.html".freeze, "doc/Compony/NaturalOrdering.html".freeze, "doc/Compony/RequestContext.html".freeze, "doc/Compony/Version.html".freeze, "doc/Compony/ViewHelpers.html".freeze, "doc/Compony/VirtualModel.html".freeze, "doc/ComponyController.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/guide/basic_component.md".freeze, "doc/guide/example.md".freeze, "doc/guide/feasibility.md".freeze, "doc/guide/generators.md".freeze, "doc/guide/inheritance.md".freeze, "doc/guide/installation.md".freeze, "doc/guide/intents.md".freeze, "doc/guide/internal_datastructures.md".freeze, "doc/guide/model_fields.md".freeze, "doc/guide/nesting.md".freeze, "doc/guide/ownership.md".freeze, "doc/guide/pre_built_components.md".freeze, "doc/guide/pre_built_components/destroy.md".freeze, "doc/guide/pre_built_components/edit.md".freeze, "doc/guide/pre_built_components/form.md".freeze, "doc/guide/pre_built_components/index.md".freeze, "doc/guide/pre_built_components/list.md".freeze, "doc/guide/pre_built_components/new.md".freeze, "doc/guide/pre_built_components/show.md".freeze, "doc/guide/pre_built_components/with_form.md".freeze, "doc/guide/resourceful.md".freeze, "doc/guide/standalone.md".freeze, "doc/guide/virtual_models.md".freeze, "doc/imgs/intro-example-destroy.png".freeze, "doc/imgs/intro-example-edit.png".freeze, "doc/imgs/intro-example-index.png".freeze, "doc/imgs/intro-example-new.png".freeze, "doc/imgs/intro-example-show.png".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/resourceful_lifecycle.graphml".freeze, "doc/resourceful_lifecycle.pdf".freeze, "doc/resourceful_lifecycle.png".freeze, "doc/top-level-namespace.html".freeze, "lib/compony.rb".freeze, "lib/compony/component.rb".freeze, "lib/compony/component_mixins/default/labelling.rb".freeze, "lib/compony/component_mixins/default/standalone.rb".freeze, "lib/compony/component_mixins/default/standalone/resourceful_verb_dsl.rb".freeze, "lib/compony/component_mixins/default/standalone/standalone_dsl.rb".freeze, "lib/compony/component_mixins/default/standalone/verb_dsl.rb".freeze, "lib/compony/component_mixins/resourceful.rb".freeze, "lib/compony/components/buttons/css_button.rb".freeze, "lib/compony/components/buttons/link.rb".freeze, "lib/compony/components/destroy.rb".freeze, "lib/compony/components/edit.rb".freeze, "lib/compony/components/form.rb".freeze, "lib/compony/components/index.rb".freeze, "lib/compony/components/list.rb".freeze, "lib/compony/components/new.rb".freeze, "lib/compony/components/show.rb".freeze, "lib/compony/components/with_form.rb".freeze, "lib/compony/controller_mixin.rb".freeze, "lib/compony/engine.rb".freeze, "lib/compony/exposed_intents_dsl.rb".freeze, "lib/compony/intent.rb".freeze, "lib/compony/method_accessible_hash.rb".freeze, "lib/compony/model_fields/anchormodel.rb".freeze, "lib/compony/model_fields/association.rb".freeze, "lib/compony/model_fields/attachment.rb".freeze, "lib/compony/model_fields/base.rb".freeze, "lib/compony/model_fields/boolean.rb".freeze, "lib/compony/model_fields/color.rb".freeze, "lib/compony/model_fields/currency.rb".freeze, "lib/compony/model_fields/date.rb".freeze, "lib/compony/model_fields/datetime.rb".freeze, "lib/compony/model_fields/decimal.rb".freeze, "lib/compony/model_fields/email.rb".freeze, "lib/compony/model_fields/float.rb".freeze, "lib/compony/model_fields/integer.rb".freeze, "lib/compony/model_fields/percentage.rb".freeze, "lib/compony/model_fields/phone.rb".freeze, "lib/compony/model_fields/rich_text.rb".freeze, "lib/compony/model_fields/string.rb".freeze, "lib/compony/model_fields/text.rb".freeze, "lib/compony/model_fields/time.rb".freeze, "lib/compony/model_fields/url.rb".freeze, "lib/compony/model_mixin.rb".freeze, "lib/compony/natural_ordering.rb".freeze, "lib/compony/request_context.rb".freeze, "lib/compony/version.rb".freeze, "lib/compony/view_helpers.rb".freeze, "lib/compony/virtual_model.rb".freeze, "lib/generators/component/USAGE".freeze, "lib/generators/component/component_generator.rb".freeze, "lib/generators/component/templates/component.rb.erb".freeze, "lib/generators/component/templates/destroy.rb.erb".freeze, "lib/generators/component/templates/edit.rb.erb".freeze, "lib/generators/component/templates/form.rb.erb".freeze, "lib/generators/component/templates/index.rb.erb".freeze, "lib/generators/component/templates/list.rb.erb".freeze, "lib/generators/component/templates/new.rb.erb".freeze, "lib/generators/component/templates/show.rb.erb".freeze, "lib/generators/component/templates/with_base_component.rb.erb".freeze, "lib/generators/components/USAGE".freeze, "lib/generators/components/components_generator.rb".freeze, "logo.svg".freeze]
16
16
  s.required_ruby_version = Gem::Requirement.new(">= 3.3.5".freeze)
17
17
  s.rubygems_version = "3.5.16".freeze
18
18
  s.summary = "Compony is a Gem that allows you to write your Rails application in component-style fashion. It combines a controller action and route along \\ with its view into a single Ruby class. This allows writing much DRYer code, using inheritance even in views and much easier refactoring for your Rails \\ applications, helping you to keep the code clean as the application evolves.".freeze
@@ -249,7 +249,7 @@
249
249
  </div>
250
250
 
251
251
  <div id="footer">
252
- Generated on Thu Nov 20 12:44:25 2025 by
252
+ Generated on Thu Nov 27 16:02:23 2025 by
253
253
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
254
254
  0.9.34 (ruby-3.3.5).
255
255
  </div>
data/doc/Components.html CHANGED
@@ -95,7 +95,7 @@
95
95
  </div>
96
96
 
97
97
  <div id="footer">
98
- Generated on Thu Nov 20 12:44:23 2025 by
98
+ Generated on Thu Nov 27 16:02:22 2025 by
99
99
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
100
100
  0.9.34 (ruby-3.3.5).
101
101
  </div>
@@ -193,7 +193,7 @@
193
193
  </div>
194
194
 
195
195
  <div id="footer">
196
- Generated on Thu Nov 20 12:44:25 2025 by
196
+ Generated on Thu Nov 27 16:02:23 2025 by
197
197
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
198
198
  0.9.34 (ruby-3.3.5).
199
199
  </div>