webamm_to_rails 7.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +3 -0
- data/lib/webamm_to_rails/features/definitions.rb +19 -0
- data/lib/webamm_to_rails/features/devise_onlineable/definition.rb +44 -0
- data/lib/webamm_to_rails/features/devise_onlineable/definitions/connection/presenter.rb +29 -0
- data/lib/webamm_to_rails/features/devise_onlineable/definitions/connection/template.erb +17 -0
- data/lib/webamm_to_rails/features/devise_onlineable/templates/app/channels/online_channel.rb.erb +13 -0
- data/lib/webamm_to_rails/features/devise_onlineable/templates/app/javascript/channels/consumer.js.erb +6 -0
- data/lib/webamm_to_rails/features/devise_onlineable/templates/app/javascript/channels/index.js.erb +5 -0
- data/lib/webamm_to_rails/features/devise_onlineable/templates/app/javascript/channels/online_channel.js.erb +48 -0
- data/lib/webamm_to_rails/features/devise_onlineable/templates/app/models/concerns/devise_onlineable.rb.erb +39 -0
- data/lib/webamm_to_rails/rails_boilerplate/builder.rb +318 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/Dockerfile.erb +83 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/Procfile.dev.erb +3 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/README.md.erb +24 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/Rakefile.erb +6 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/app/assets/config/manifest.js.erb +2 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/app/assets/stylesheets/application.tailwind.css.erb +3 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/app/channels/application_cable/channel.rb.erb +4 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/app/channels/application_cable/connection.rb.erb +4 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/app/helpers/application_helper.rb.erb +2 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/app/javascript/application.js.erb +3 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/app/javascript/controllers/application.js.erb +9 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/app/javascript/controllers/hello_controller.js.erb +7 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/app/javascript/controllers/index.js.erb +8 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/app/jobs/application_job.rb.erb +7 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/app/mailers/application_mailer.rb.erb +4 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/app/models/application_record.rb.erb +3 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/app/views/layouts/application.html.erb +44 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/app/views/layouts/mailer.html.erb +13 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/app/views/layouts/mailer.text.erb +1 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/app/views/pwa/manifest.json.erb +22 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/app/views/pwa/service-worker.js.erb +26 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/bin/brakeman.erb +7 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/bin/bundle.erb +109 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/bin/dev.erb +11 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/bin/docker-entrypoint.erb +13 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/bin/rails.erb +4 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/bin/rake.erb +4 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/bin/rubocop.erb +8 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/bin/setup.erb +40 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/config/application.rb.erb +42 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/config/boot.rb.erb +4 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/config/cable.yml.erb +11 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/config/credentials.yml.enc.erb +1 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/config/database.yml.erb +85 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/config/environment.rb.erb +5 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/config/environments/development.rb.erb +84 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/config/environments/production.rb.erb +102 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/config/environments/test.rb.erb +67 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/config/initializers/assets.rb.erb +12 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/config/initializers/content_security_policy.rb.erb +25 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/config/initializers/filter_parameter_logging.rb.erb +8 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/config/initializers/inflections.rb.erb +16 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/config/initializers/permissions_policy.rb.erb +13 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/config/locales/en.yml.erb +31 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/config/master.key.erb +1 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/config/puma.rb.erb +33 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/config/storage.yml.erb +34 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/config.ru.erb +6 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/db/seeds.rb.erb +9 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/dockerignore.erb +48 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/gitattributes.erb +9 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/github/dependabot.yml.erb +0 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/github/workflows/ci.yml.erb +38 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/gitignore.erb +40 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/node-version.erb +1 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/public/404.html.erb +67 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/public/406-unsupported-browser.html.erb +66 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/public/422.html.erb +67 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/public/500.html.erb +66 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/public/icon.png.erb +0 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/public/icon.svg.erb +3 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/public/robots.txt.erb +1 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/rubocop.yml.erb +8 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/ruby-version.erb +1 -0
- data/lib/webamm_to_rails/rails_boilerplate/templates/tailwind.config.js.erb +8 -0
- data/lib/webamm_to_rails/sources/controllers/actions/create_definition/presenter.rb +50 -0
- data/lib/webamm_to_rails/sources/controllers/actions/create_definition/template.erb +9 -0
- data/lib/webamm_to_rails/sources/controllers/actions/definition.rb +66 -0
- data/lib/webamm_to_rails/sources/controllers/actions/destroy_definition/presenter.rb +52 -0
- data/lib/webamm_to_rails/sources/controllers/actions/destroy_definition/template.erb +6 -0
- data/lib/webamm_to_rails/sources/controllers/actions/edit_definition/presenter.rb +40 -0
- data/lib/webamm_to_rails/sources/controllers/actions/edit_definition/template.erb +3 -0
- data/lib/webamm_to_rails/sources/controllers/actions/index_definition/presenter.rb +40 -0
- data/lib/webamm_to_rails/sources/controllers/actions/index_definition/template.erb +3 -0
- data/lib/webamm_to_rails/sources/controllers/actions/new_definition/presenter.rb +40 -0
- data/lib/webamm_to_rails/sources/controllers/actions/new_definition/template.erb +3 -0
- data/lib/webamm_to_rails/sources/controllers/actions/show_definition/presenter.rb +40 -0
- data/lib/webamm_to_rails/sources/controllers/actions/show_definition/template.erb +3 -0
- data/lib/webamm_to_rails/sources/controllers/actions/strong_parameters_definition/presenter.rb +50 -0
- data/lib/webamm_to_rails/sources/controllers/actions/strong_parameters_definition/template.erb +3 -0
- data/lib/webamm_to_rails/sources/controllers/actions/update_definition/presenter.rb +54 -0
- data/lib/webamm_to_rails/sources/controllers/actions/update_definition/template.erb +9 -0
- data/lib/webamm_to_rails/sources/controllers/application_controller/authentication/devise_groups/presenter.rb +49 -0
- data/lib/webamm_to_rails/sources/controllers/application_controller/authentication/devise_groups_definition/presenter.rb +30 -0
- data/lib/webamm_to_rails/sources/controllers/application_controller/definition.rb +36 -0
- data/lib/webamm_to_rails/sources/controllers/application_controller/template.erb +5 -0
- data/lib/webamm_to_rails/sources/controllers/class_definition/presenter.rb +17 -0
- data/lib/webamm_to_rails/sources/controllers/definition.rb +44 -0
- data/lib/webamm_to_rails/sources/controllers/filters/definition.rb +32 -0
- data/lib/webamm_to_rails/sources/controllers/filters/devise_definition/presenter.rb +55 -0
- data/lib/webamm_to_rails/sources/controllers/template.erb +17 -0
- data/lib/webamm_to_rails/sources/gemfile/default_set.rb +27 -0
- data/lib/webamm_to_rails/sources/gemfile/definition.rb +31 -0
- data/lib/webamm_to_rails/sources/gemfile/gem.rb +8 -0
- data/lib/webamm_to_rails/sources/gemfile/gem_definition/presenter.rb +22 -0
- data/lib/webamm_to_rails/sources/gemfile/project_set.rb +21 -0
- data/lib/webamm_to_rails/sources/gemfile/sets/authentication.rb +34 -0
- data/lib/webamm_to_rails/sources/gemfile/template.erb +17 -0
- data/lib/webamm_to_rails/sources/helpers/definitions.rb +21 -0
- data/lib/webamm_to_rails/sources/helpers/devise/presenter.rb +27 -0
- data/lib/webamm_to_rails/sources/helpers/devise/qr_code_helper/presenter.rb +19 -0
- data/lib/webamm_to_rails/sources/helpers/devise/qr_code_helper/template.erb +22 -0
- data/lib/webamm_to_rails/sources/initializers/definitions.rb +26 -0
- data/lib/webamm_to_rails/sources/initializers/devise_definition/presenter.rb +27 -0
- data/lib/webamm_to_rails/sources/initializers/devise_definition/template.erb +397 -0
- data/lib/webamm_to_rails/sources/migrations/active_storage_definition/presenter.rb +29 -0
- data/lib/webamm_to_rails/sources/migrations/active_storage_definition/template.erb +57 -0
- data/lib/webamm_to_rails/sources/migrations/associations.rb +49 -0
- data/lib/webamm_to_rails/sources/migrations/class_definition/presenter.rb +17 -0
- data/lib/webamm_to_rails/sources/migrations/column_definition/presenter.rb +38 -0
- data/lib/webamm_to_rails/sources/migrations/columns.rb +33 -0
- data/lib/webamm_to_rails/sources/migrations/definition.rb +52 -0
- data/lib/webamm_to_rails/sources/migrations/devise/definition.rb +278 -0
- data/lib/webamm_to_rails/sources/migrations/files_list.rb +98 -0
- data/lib/webamm_to_rails/sources/migrations/index_definition/presenter.rb +34 -0
- data/lib/webamm_to_rails/sources/migrations/indices.rb +33 -0
- data/lib/webamm_to_rails/sources/migrations/table_definition/presenter.rb +21 -0
- data/lib/webamm_to_rails/sources/migrations/template.erb +12 -0
- data/lib/webamm_to_rails/sources/migrations/uuid_definition/presenter.rb +29 -0
- data/lib/webamm_to_rails/sources/migrations/uuid_definition/template.erb +5 -0
- data/lib/webamm_to_rails/sources/models/association_definition/presenter.rb +49 -0
- data/lib/webamm_to_rails/sources/models/associations.rb +113 -0
- data/lib/webamm_to_rails/sources/models/attachment_definition/presenter.rb +21 -0
- data/lib/webamm_to_rails/sources/models/attachments.rb +25 -0
- data/lib/webamm_to_rails/sources/models/class_definition/presenter.rb +17 -0
- data/lib/webamm_to_rails/sources/models/concerns.rb +27 -0
- data/lib/webamm_to_rails/sources/models/definition.rb +57 -0
- data/lib/webamm_to_rails/sources/models/devise_definition/presenter.rb +49 -0
- data/lib/webamm_to_rails/sources/models/enum_definition/presenter.rb +19 -0
- data/lib/webamm_to_rails/sources/models/enums.rb +25 -0
- data/lib/webamm_to_rails/sources/models/template.erb +7 -0
- data/lib/webamm_to_rails/sources/package_json/definition.rb +27 -0
- data/lib/webamm_to_rails/sources/package_json/template.erb +21 -0
- data/lib/webamm_to_rails/sources/routes/authentication_definition/presenter.rb +21 -0
- data/lib/webamm_to_rails/sources/routes/definition.rb +38 -0
- data/lib/webamm_to_rails/sources/routes/resource_definition/presenter.rb +25 -0
- data/lib/webamm_to_rails/sources/routes/template.erb +14 -0
- data/lib/webamm_to_rails/sources/views/definition.rb +28 -0
- data/lib/webamm_to_rails/sources/views/devise/invitable/presenter.rb +31 -0
- data/lib/webamm_to_rails/sources/views/devise/invitable/templates/invitations/edit.html.erb +38 -0
- data/lib/webamm_to_rails/sources/views/devise/invitable/templates/invitations/new.html.erb +31 -0
- data/lib/webamm_to_rails/sources/views/devise/invitable/templates/mailer/invitation_instructions.html.erb +23 -0
- data/lib/webamm_to_rails/sources/views/devise/otp/presenter.rb +32 -0
- data/lib/webamm_to_rails/sources/views/devise/otp/templates/otp_credentials/refresh.html.erb +19 -0
- data/lib/webamm_to_rails/sources/views/devise/otp/templates/otp_credentials/show.html.erb +70 -0
- data/lib/webamm_to_rails/sources/views/devise/otp/templates/otp_tokens/_token_secret.html.erb +21 -0
- data/lib/webamm_to_rails/sources/views/devise/otp/templates/otp_tokens/_trusted_devices.html.erb +12 -0
- data/lib/webamm_to_rails/sources/views/devise/otp/templates/otp_tokens/edit.html.erb +48 -0
- data/lib/webamm_to_rails/sources/views/devise/otp/templates/otp_tokens/recovery.html.erb +21 -0
- data/lib/webamm_to_rails/sources/views/devise/otp/templates/otp_tokens/recovery_codes.html.erb +3 -0
- data/lib/webamm_to_rails/sources/views/devise/otp/templates/otp_tokens/show.html.erb +21 -0
- data/lib/webamm_to_rails/sources/views/devise/presenter.rb +37 -0
- data/lib/webamm_to_rails/sources/views/devise/standard/presenter.rb +39 -0
- data/lib/webamm_to_rails/sources/views/devise/standard/templates/confirmations/new.html.erb +31 -0
- data/lib/webamm_to_rails/sources/views/devise/standard/templates/mailer/confirmation_instructions.html.erb +17 -0
- data/lib/webamm_to_rails/sources/views/devise/standard/templates/mailer/email_changed.html.erb +7 -0
- data/lib/webamm_to_rails/sources/views/devise/standard/templates/mailer/password_change.html.erb +3 -0
- data/lib/webamm_to_rails/sources/views/devise/standard/templates/mailer/reset_password_instructions.html.erb +22 -0
- data/lib/webamm_to_rails/sources/views/devise/standard/templates/passwords/edit.html.erb +36 -0
- data/lib/webamm_to_rails/sources/views/devise/standard/templates/passwords/new.html.erb +31 -0
- data/lib/webamm_to_rails/sources/views/devise/standard/templates/registrations/edit.html.erb +43 -0
- data/lib/webamm_to_rails/sources/views/devise/standard/templates/registrations/new.html.erb +39 -0
- data/lib/webamm_to_rails/sources/views/devise/standard/templates/sessions/new.html.erb +23 -0
- data/lib/webamm_to_rails/sources/views/devise/standard/templates/shared/_links.html.erb +27 -0
- data/lib/webamm_to_rails/sources/views/resource/edit_definition/presenter.rb +41 -0
- data/lib/webamm_to_rails/sources/views/resource/edit_definition/template.erb +1 -0
- data/lib/webamm_to_rails/sources/views/resource/form_definition/presenter.rb +50 -0
- data/lib/webamm_to_rails/sources/views/resource/form_definition/template.erb +82 -0
- data/lib/webamm_to_rails/sources/views/resource/index_definition/presenter.rb +69 -0
- data/lib/webamm_to_rails/sources/views/resource/index_definition/template.erb +78 -0
- data/lib/webamm_to_rails/sources/views/resource/new_definition/presenter.rb +41 -0
- data/lib/webamm_to_rails/sources/views/resource/new_definition/template.erb +1 -0
- data/lib/webamm_to_rails/sources/views/resource/presenter.rb +41 -0
- data/lib/webamm_to_rails/sources/views/resource/show_definition/presenter.rb +61 -0
- data/lib/webamm_to_rails/sources/views/resource/show_definition/template.erb +34 -0
- data/lib/webamm_to_rails/utils/format_code.rb +11 -0
- data/lib/webamm_to_rails/utils/format_template.rb +11 -0
- data/lib/webamm_to_rails/version.rb +5 -0
- data/lib/webamm_to_rails.rb +112 -0
- data/webamm_to_rails.gemspec +28 -0
- metadata +332 -0
@@ -0,0 +1 @@
|
|
1
|
+
<%%= render "form", <%= single_record_name %>: @<%= single_record_name %> %>
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module WebammToRails
|
2
|
+
module Sources
|
3
|
+
module Views
|
4
|
+
module Resource
|
5
|
+
module FormDefinition
|
6
|
+
class Presenter
|
7
|
+
def initialize(crud_definition:, waml_definition:)
|
8
|
+
@crud_definition = crud_definition
|
9
|
+
@waml_definition = waml_definition
|
10
|
+
end
|
11
|
+
|
12
|
+
def render?
|
13
|
+
@crud_definition.actions.find { |action| action.name == 'create' || action.name == 'update' }.present?
|
14
|
+
end
|
15
|
+
|
16
|
+
def render
|
17
|
+
template_path = File.expand_path('template.erb', __dir__)
|
18
|
+
template_content = File.read(template_path)
|
19
|
+
raw_content = ERB.new(template_content, trim_mode: '-').result(instance_eval { binding })
|
20
|
+
|
21
|
+
::WebammToRails::Utils::FormatTemplate.call(raw_content)
|
22
|
+
end
|
23
|
+
|
24
|
+
def path_name
|
25
|
+
"app/views/#{resource_name}/_form.html.erb"
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def singular_resource_name
|
31
|
+
resource_name.singularize
|
32
|
+
end
|
33
|
+
|
34
|
+
def resource_name
|
35
|
+
@crud_definition.table
|
36
|
+
end
|
37
|
+
|
38
|
+
def columns
|
39
|
+
@waml_definition.database.schema.find { |schema| schema.table == @crud_definition.table }.columns
|
40
|
+
end
|
41
|
+
|
42
|
+
def class_name
|
43
|
+
resource_name.classify
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
<div class="max-w-4xl px-4 py-10 sm:px-6 lg:px-8 lg:py-14 mx-auto">
|
2
|
+
<%%= form_with(model: <%= singular_resource_name %>) do |form| %>
|
3
|
+
<div class="bg-white rounded-xl shadow dark:bg-neutral-900">
|
4
|
+
<div class="pt-0 p-4 sm:pt-0 sm:p-7">
|
5
|
+
<div class="space-y-4 sm:space-y-6">
|
6
|
+
<%% if <%= singular_resource_name %>.errors.any? %>
|
7
|
+
<div class="rounded-md bg-red-50 p-4 mb-4">
|
8
|
+
<div class="flex">
|
9
|
+
<div class="flex-shrink-0">
|
10
|
+
<svg class="h-5 w-5 text-red-400" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
|
11
|
+
<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z" clip-rule="evenodd" />
|
12
|
+
</svg>
|
13
|
+
</div>
|
14
|
+
<div class="ml-3">
|
15
|
+
<h3 class="text-sm font-medium text-red-800"><%%= pluralize(<%= singular_resource_name %>.errors.count, "error") %> prohibited this plan from being saved:</h3>
|
16
|
+
<div class="mt-2 text-sm text-red-700">
|
17
|
+
<ul role="list" class="list-disc space-y-1 pl-5">
|
18
|
+
<%% <%= singular_resource_name %>.errors.each do |error| %>
|
19
|
+
<li><%%= error.full_message %></li>
|
20
|
+
<%% end %>
|
21
|
+
</ul>
|
22
|
+
</div>
|
23
|
+
</div>
|
24
|
+
</div>
|
25
|
+
</div>
|
26
|
+
<%% end %>
|
27
|
+
<% columns.each do |column| %>
|
28
|
+
<% if column.type == 'string' %>
|
29
|
+
<div class="space-y-2">
|
30
|
+
<label class="inline-block text-sm font-medium text-gray-800 mt-2.5 dark:text-neutral-200"><%= column.name.humanize %>:</label>
|
31
|
+
<%%= form.text_field :<%= column.name %>, class: 'py-2 px-3 pe-11 block w-full border-2 border-gray-200 shadow-sm text-sm rounded-lg' %>
|
32
|
+
</div>
|
33
|
+
<% elsif column.type == 'integer' || column.type == 'float' %>
|
34
|
+
<div class="space-y-2">
|
35
|
+
<label class="inline-block text-sm font-medium text-gray-800 mt-2.5 dark:text-neutral-200"><%= column.name.humanize %>:</label>
|
36
|
+
<%%= form.number_field :<%= column.name %>, class: 'py-2 px-3 pe-11 block w-full border-2 border-gray-200 shadow-sm text-sm rounded-lg' %>
|
37
|
+
</div>
|
38
|
+
<% elsif column.type == 'boolean' %>
|
39
|
+
<div class="space-y-2">
|
40
|
+
<label class="inline-block text-sm font-medium text-gray-800 mt-2.5 dark:text-neutral-200"><%= column.name.humanize %>:</label>
|
41
|
+
<%%= form.select :<%= column.name %>, options_for_select([['Yes', true], ['No', false]], <%= singular_resource_name %>.<%= column.name %>), {}, class: 'py-2 px-3 pe-9 block w-full border-gray-200 shadow-sm rounded-lg text-sm' %>
|
42
|
+
</div>
|
43
|
+
<% elsif column.type == 'text' %>
|
44
|
+
<div class="space-y-2">
|
45
|
+
<label class="inline-block text-sm font-medium text-gray-800 mt-2.5 dark:text-neutral-200"><%= column.name.humanize %>:</label>
|
46
|
+
<%%= form.text_area :<%= column.name %>, class: 'py-2 px-3 block w-full border-2 border-gray-200 rounded-lg text-sm' %>
|
47
|
+
</div>
|
48
|
+
<% elsif column.type == 'datetime' %>
|
49
|
+
<div class="space-y-2">
|
50
|
+
<label class="inline-block text-sm font-medium text-gray-800 mt-2.5 dark:text-neutral-200"><%= column.name.humanize %>:</label>
|
51
|
+
<%%= form.datetime_field :<%= column.name %>, class: 'py-2 px-3 pe-11 block w-full border-2 border-gray-200 shadow-sm text-sm rounded-lg' %>
|
52
|
+
</div>
|
53
|
+
<% elsif column.type == 'time' %>
|
54
|
+
<div class="space-y-2">
|
55
|
+
<label class="inline-block text-sm font-medium text-gray-800 mt-2.5 dark:text-neutral-200"><%= column.name.humanize %>:</label>
|
56
|
+
<%%= form.time_field :<%= column.name %>, class: 'py-2 px-3 pe-11 block w-full border-2 border-gray-200 shadow-sm text-sm rounded-lg' %>
|
57
|
+
</div>
|
58
|
+
<% elsif column.type == 'date' %>
|
59
|
+
<div class="space-y-2">
|
60
|
+
<label class="inline-block text-sm font-medium text-gray-800 mt-2.5 dark:text-neutral-200"><%= column.name.humanize %>:</label>
|
61
|
+
<%%= form.date_field :<%= column.name %>, class: 'py-2 px-3 pe-11 block w-full border-2 border-gray-200 shadow-sm text-sm rounded-lg' %>
|
62
|
+
</div>
|
63
|
+
<% elsif column.type == 'enum_column' %>
|
64
|
+
<div class="space-y-2">
|
65
|
+
<label class="inline-block text-sm font-medium text-gray-800 mt-2.5 dark:text-neutral-200"><%= column.name.humanize %>:</label>
|
66
|
+
<%%= form.select :<%= column.name %>, options_for_select(<%= class_name %>.<%= column.name.pluralize %>.keys, <%= singular_resource_name %>.<%= column.name %>), {}, class: 'py-2 px-3 pe-9 block w-full border-gray-200 shadow-sm rounded-lg text-sm' %>
|
67
|
+
</div>
|
68
|
+
<% elsif column.type == 'file' && column.name.singularize == column.name %>
|
69
|
+
<div class="space-y-2">
|
70
|
+
<label class="inline-block text-sm font-medium text-gray-800 mt-2.5 dark:text-neutral-200"><%= column.name.humanize %>:</label>
|
71
|
+
<%%= form.file_field :<%= column.name %>, class: 'block w-full text-sm text-gray-500 file:me-4 file:py-2 file:px-4 file:rounded-lg file:border-0 file:text-sm file:font-semibold file:bg-blue-600 file:text-white' %>
|
72
|
+
</div>
|
73
|
+
<% end %>
|
74
|
+
<% end %>
|
75
|
+
</div>
|
76
|
+
<div class="mt-5 flex justify-center gap-x-2">
|
77
|
+
<%%= form.submit 'Submit', class: 'py-3 px-4 inline-flex items-center gap-x-2 text-sm font-medium rounded-lg border border-transparent bg-blue-600 text-white hover:bg-blue-700 focus:outline-none focus:bg-blue-700 disabled:opacity-50 disabled:pointer-events-none' %>
|
78
|
+
</div>
|
79
|
+
</div>
|
80
|
+
</div>
|
81
|
+
<%% end %>
|
82
|
+
</div>
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module WebammToRails
|
2
|
+
module Sources
|
3
|
+
module Views
|
4
|
+
module Resource
|
5
|
+
module IndexDefinition
|
6
|
+
class Presenter
|
7
|
+
def initialize(crud_definition:)
|
8
|
+
@crud_definition = crud_definition
|
9
|
+
end
|
10
|
+
|
11
|
+
def render?
|
12
|
+
@crud_definition.actions.find { |action| action.name == 'index' }.present?
|
13
|
+
end
|
14
|
+
|
15
|
+
def render
|
16
|
+
template_path = File.expand_path('template.erb', __dir__)
|
17
|
+
template_content = File.read(template_path)
|
18
|
+
raw_content = ERB.new(template_content, trim_mode: '-').result(instance_eval { binding })
|
19
|
+
|
20
|
+
::WebammToRails::Utils::FormatTemplate.call(raw_content)
|
21
|
+
end
|
22
|
+
|
23
|
+
def path_name
|
24
|
+
"app/views/#{resource_name}/index.html.erb"
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def resource_name
|
30
|
+
@crud_definition.table
|
31
|
+
end
|
32
|
+
|
33
|
+
def title
|
34
|
+
@crud_definition.table.humanize
|
35
|
+
end
|
36
|
+
|
37
|
+
def enabled?(view_action)
|
38
|
+
@crud_definition.actions.find { |action| action.name == view_action }.present?
|
39
|
+
end
|
40
|
+
|
41
|
+
def new_resource_path
|
42
|
+
"new_#{resource_name.singularize}_path"
|
43
|
+
end
|
44
|
+
|
45
|
+
def edit_resource_path
|
46
|
+
"edit_#{resource_name.singularize}_path(#{resource_name.singularize})"
|
47
|
+
end
|
48
|
+
|
49
|
+
def resource_path
|
50
|
+
"#{resource_name.singularize}_path(#{resource_name.singularize})"
|
51
|
+
end
|
52
|
+
|
53
|
+
def singular_variable
|
54
|
+
resource_name.singularize
|
55
|
+
end
|
56
|
+
|
57
|
+
def plural_variable
|
58
|
+
resource_name
|
59
|
+
end
|
60
|
+
|
61
|
+
def model_attributes
|
62
|
+
@crud_definition.actions.find { |action| action.name == 'index' }.options.model_attributes
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
<div class="mb-5 pb-5 flex justify-between items-center border-b border-gray-200 dark:border-neutral-700">
|
2
|
+
<div>
|
3
|
+
<h2 class="text-2xl font-semibold text-gray-800 dark:text-neutral-200"><%= title %></h2>
|
4
|
+
</div>
|
5
|
+
<% if enabled?('create') %>
|
6
|
+
<div class="inline-flex gap-x-2">
|
7
|
+
<%%= link_to('+ Add', <%= new_resource_path %>, class: 'py-2 px-3 inline-flex items-center gap-x-2 text-sm font-medium rounded-lg border border-gray-200 bg-white text-gray-800 shadow-sm hover:bg-gray-50 disabled:opacity-50 disabled:pointer-events-none focus:outline-none focus:bg-gray-50 dark:bg-transparent dark:border-neutral-700 dark:text-neutral-300 dark:hover:bg-neutral-800 dark:focus:bg-neutral-800') %>
|
8
|
+
</div>
|
9
|
+
<% end %>
|
10
|
+
</div>
|
11
|
+
<div class="max-w-[85rem] px-4 py-10 sm:px-6 lg:px-8 lg:py-14 mx-auto">
|
12
|
+
<div class="flex flex-col">
|
13
|
+
<div class="-m-1.5 overflow-x-auto">
|
14
|
+
<div class="p-1.5 min-w-full inline-block align-middle">
|
15
|
+
<div class="bg-white border border-gray-200 rounded-xl shadow-sm overflow-hidden dark:bg-neutral-800 dark:border-neutral-700">
|
16
|
+
<table class="min-w-full divide-y divide-gray-200 dark:divide-neutral-700">
|
17
|
+
<thead class="bg-gray-50 dark:bg-neutral-800">
|
18
|
+
<tr>
|
19
|
+
<% model_attributes.each do |attribute| %>
|
20
|
+
<th scope="col" class="px-6 py-3 text-start">
|
21
|
+
<div class="flex items-center gap-x-2">
|
22
|
+
<span class="text-xs font-semibold uppercase tracking-wide text-gray-800 dark:text-neutral-200">
|
23
|
+
<%= attribute.capitalize %>
|
24
|
+
</span>
|
25
|
+
</div>
|
26
|
+
</th>
|
27
|
+
<% end %>
|
28
|
+
<% if enabled?('show') %>
|
29
|
+
<th scope="col" class="px-6 py-3 text-end"></th>
|
30
|
+
<% end %>
|
31
|
+
<% if enabled?('update') %>
|
32
|
+
<th scope="col" class="px-6 py-3 text-end"></th>
|
33
|
+
<% end %>
|
34
|
+
<% if enabled?('destroy') %>
|
35
|
+
<th scope="col" class="px-6 py-3 text-end"></th>
|
36
|
+
<% end %>
|
37
|
+
</tr>
|
38
|
+
</thead>
|
39
|
+
<tbody class="divide-y divide-gray-200 dark:divide-neutral-700">
|
40
|
+
<%% @<%= plural_variable %>.each do |<%= singular_variable %>| %>
|
41
|
+
<tr>
|
42
|
+
<% model_attributes.each do |attribute| %>
|
43
|
+
<td class="size-px whitespace-nowrap">
|
44
|
+
<div class="px-6 py-3">
|
45
|
+
<span class="text-sm text-gray-500"><%%= <%= singular_variable %>.<%= attribute %> %></span>
|
46
|
+
</div>
|
47
|
+
</td>
|
48
|
+
<% end %>
|
49
|
+
<% if enabled?('show') %>
|
50
|
+
<td class="size-px whitespace-nowrap">
|
51
|
+
<div class="px-6 py-1.5">
|
52
|
+
<%%= link_to('Show', <%= resource_path %>, class: 'inline-flex items-center gap-x-1 text-sm text-blue-600 decoration-2 hover:underline focus:outline-none focus:underline font-medium dark:text-blue-500') %>
|
53
|
+
</div>
|
54
|
+
</td>
|
55
|
+
<% end %>
|
56
|
+
<% if enabled?('update') %>
|
57
|
+
<td class="size-px whitespace-nowrap">
|
58
|
+
<div class="px-6 py-1.5">
|
59
|
+
<%%= link_to('Edit', <%= edit_resource_path %>, class: 'inline-flex items-center gap-x-1 text-sm text-blue-600 decoration-2 hover:underline focus:outline-none focus:underline font-medium dark:text-blue-500') %>
|
60
|
+
</div>
|
61
|
+
</td>
|
62
|
+
<% end %>
|
63
|
+
<% if enabled?('destroy') %>
|
64
|
+
<td class="size-px whitespace-nowrap">
|
65
|
+
<div class="px-6 py-1.5">
|
66
|
+
<%%= button_to('Delete', <%= resource_path %>, method: :delete, data: { turbo: false },class: 'inline-flex items-center gap-x-1 text-sm text-blue-600 decoration-2 hover:underline focus:outline-none focus:underline font-medium dark:text-blue-500') %>
|
67
|
+
</div>
|
68
|
+
</td>
|
69
|
+
<% end %>
|
70
|
+
</tr>
|
71
|
+
<%% end %>
|
72
|
+
</tbody>
|
73
|
+
</table>
|
74
|
+
</div>
|
75
|
+
</div>
|
76
|
+
</div>
|
77
|
+
</div>
|
78
|
+
</div>
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module WebammToRails
|
2
|
+
module Sources
|
3
|
+
module Views
|
4
|
+
module Resource
|
5
|
+
module NewDefinition
|
6
|
+
class Presenter
|
7
|
+
def initialize(crud_definition:)
|
8
|
+
@crud_definition = crud_definition
|
9
|
+
end
|
10
|
+
|
11
|
+
def render?
|
12
|
+
@crud_definition.actions.find { |action| action.name == 'create' }.present?
|
13
|
+
end
|
14
|
+
|
15
|
+
def render
|
16
|
+
template_path = File.expand_path('template.erb', __dir__)
|
17
|
+
template_content = File.read(template_path)
|
18
|
+
raw_content = ERB.new(template_content, trim_mode: '-').result(instance_eval { binding })
|
19
|
+
|
20
|
+
::WebammToRails::Utils::FormatTemplate.call(raw_content)
|
21
|
+
end
|
22
|
+
|
23
|
+
def path_name
|
24
|
+
"app/views/#{resource_name}/new.html.erb"
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def resource_name
|
30
|
+
@crud_definition.table
|
31
|
+
end
|
32
|
+
|
33
|
+
def single_record_name
|
34
|
+
@crud_definition.table.singularize
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
<%%= render "form", <%= single_record_name %>: @<%= single_record_name %> %>
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require_relative 'index_definition/presenter'
|
2
|
+
require_relative 'edit_definition/presenter'
|
3
|
+
require_relative 'new_definition/presenter'
|
4
|
+
require_relative 'show_definition/presenter'
|
5
|
+
require_relative 'form_definition/presenter'
|
6
|
+
|
7
|
+
module WebammToRails
|
8
|
+
module Sources
|
9
|
+
module Views
|
10
|
+
module Resource
|
11
|
+
class Presenter
|
12
|
+
def initialize(crud_definition:, waml_definition:)
|
13
|
+
@crud_definition = crud_definition
|
14
|
+
@waml_definition = waml_definition
|
15
|
+
end
|
16
|
+
|
17
|
+
def collection
|
18
|
+
views.select(&:render?).map do |view|
|
19
|
+
{
|
20
|
+
path: view.path_name,
|
21
|
+
content: view.render
|
22
|
+
}
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def views
|
29
|
+
[
|
30
|
+
::WebammToRails::Sources::Views::Resource::IndexDefinition::Presenter.new(crud_definition: @crud_definition),
|
31
|
+
::WebammToRails::Sources::Views::Resource::EditDefinition::Presenter.new(crud_definition: @crud_definition),
|
32
|
+
::WebammToRails::Sources::Views::Resource::NewDefinition::Presenter.new(crud_definition: @crud_definition),
|
33
|
+
::WebammToRails::Sources::Views::Resource::ShowDefinition::Presenter.new(crud_definition: @crud_definition),
|
34
|
+
::WebammToRails::Sources::Views::Resource::FormDefinition::Presenter.new(crud_definition: @crud_definition, waml_definition: @waml_definition),
|
35
|
+
]
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module WebammToRails
|
2
|
+
module Sources
|
3
|
+
module Views
|
4
|
+
module Resource
|
5
|
+
module ShowDefinition
|
6
|
+
class Presenter
|
7
|
+
def initialize(crud_definition:)
|
8
|
+
@crud_definition = crud_definition
|
9
|
+
end
|
10
|
+
|
11
|
+
def render?
|
12
|
+
@crud_definition.actions.find { |action| action.name == 'show' }.present?
|
13
|
+
end
|
14
|
+
|
15
|
+
def render
|
16
|
+
template_path = File.expand_path('template.erb', __dir__)
|
17
|
+
template_content = File.read(template_path)
|
18
|
+
raw_content = ERB.new(template_content, trim_mode: '-').result(instance_eval { binding })
|
19
|
+
|
20
|
+
::WebammToRails::Utils::FormatTemplate.call(raw_content)
|
21
|
+
end
|
22
|
+
|
23
|
+
def path_name
|
24
|
+
"app/views/#{resource_name}/show.html.erb"
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def resource_name
|
30
|
+
@crud_definition.table
|
31
|
+
end
|
32
|
+
|
33
|
+
def title
|
34
|
+
@crud_definition.table.singularize.humanize
|
35
|
+
end
|
36
|
+
|
37
|
+
def enabled?(view_action)
|
38
|
+
@crud_definition.actions.find { |action| action.name == view_action }.present?
|
39
|
+
end
|
40
|
+
|
41
|
+
def resource_singular_name
|
42
|
+
@crud_definition.table.singularize
|
43
|
+
end
|
44
|
+
|
45
|
+
def edit_resource_path
|
46
|
+
"edit_#{resource_name.singularize}_path(@#{resource_name.singularize})"
|
47
|
+
end
|
48
|
+
|
49
|
+
def index_resource_path
|
50
|
+
"#{@crud_definition.table}_path"
|
51
|
+
end
|
52
|
+
|
53
|
+
def model_attributes
|
54
|
+
@crud_definition.actions.find { |action| action.name == 'show' }.options.model_attributes
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<div class="p-4 sm:p-7 overflow-y-auto">
|
2
|
+
<div class="text-center">
|
3
|
+
<h3 id="hs-ai-modal-label" class="text-lg font-semibold text-gray-800 dark:text-neutral-200">
|
4
|
+
<%= title %>
|
5
|
+
</h3>
|
6
|
+
<p class="text-sm text-gray-500 dark:text-neutral-500">
|
7
|
+
ID: <%%= @<%= resource_singular_name %>.id %>
|
8
|
+
</p>
|
9
|
+
</div>
|
10
|
+
<div class="mt-5 sm:mt-10">
|
11
|
+
<h4 class="text-xs font-semibold uppercase text-gray-800 dark:text-neutral-200">Details</h4>
|
12
|
+
<ul class="mt-3 flex flex-col">
|
13
|
+
<% model_attributes.each do |attribute| %>
|
14
|
+
<li class="inline-flex items-center gap-x-2 py-3 px-4 text-sm border text-gray-800 -mt-px first:rounded-t-lg first:mt-0 last:rounded-b-lg dark:border-neutral-700 dark:text-neutral-200">
|
15
|
+
<div class="flex items-center justify-between w-full">
|
16
|
+
<span><%= attribute.capitalize %></span>
|
17
|
+
<span><%%= @<%= resource_singular_name %>.<%= attribute %> %></span>
|
18
|
+
</div>
|
19
|
+
</li>
|
20
|
+
<% end %>
|
21
|
+
</ul>
|
22
|
+
</div>
|
23
|
+
<div class="mt-5 flex justify-end gap-x-2">
|
24
|
+
<% if enabled?('index') %>
|
25
|
+
<%%= link_to "Back to list", <%= index_resource_path %>, class: "py-2 px-3 inline-flex items-center gap-x-2 text-sm font-medium rounded-lg border border-gray-200 bg-white text-gray-800 shadow-sm hover:bg-gray-50 disabled:opacity-50 disabled:pointer-events-none focus:outline-none focus:bg-gray-50 dark:bg-transparent dark:border-neutral-700 dark:text-neutral-300 dark:hover:bg-neutral-800 dark:focus:bg-neutral-800" %>
|
26
|
+
<% end %>
|
27
|
+
<% if enabled?('update') %>
|
28
|
+
<%%= link_to "Edit", <%= edit_resource_path %>, class: "py-2 px-3 inline-flex items-center gap-x-2 text-sm font-medium rounded-lg border border-gray-200 bg-white text-gray-800 shadow-sm hover:bg-gray-50 disabled:opacity-50 disabled:pointer-events-none focus:outline-none focus:bg-gray-50 dark:bg-transparent dark:border-neutral-700 dark:text-neutral-300 dark:hover:bg-neutral-800 dark:focus:bg-neutral-800" %>
|
29
|
+
<% end %>
|
30
|
+
<% if enabled?('destroy') %>
|
31
|
+
<%%= button_to "Remove", @<%= resource_singular_name %>, method: :delete, data: { turbo: false },class: "py-2 px-3 inline-flex items-center gap-x-2 text-sm font-medium rounded-lg border border-transparent bg-red-600 text-white focus:outline-none focus:bg-blue-700 disabled:opacity-50 disabled:pointer-events-none" %>
|
32
|
+
<% end %>
|
33
|
+
</div>
|
34
|
+
</div>
|
@@ -0,0 +1,112 @@
|
|
1
|
+
require 'webamm'
|
2
|
+
require 'active_support/all'
|
3
|
+
|
4
|
+
require 'webamm_to_rails/utils/format_code'
|
5
|
+
require 'webamm_to_rails/utils/format_template'
|
6
|
+
|
7
|
+
require 'webamm_to_rails/version'
|
8
|
+
require 'webamm_to_rails/sources/models/definition'
|
9
|
+
require 'webamm_to_rails/sources/migrations/files_list'
|
10
|
+
require 'webamm_to_rails/sources/gemfile/definition'
|
11
|
+
require 'webamm_to_rails/sources/routes/definition'
|
12
|
+
require 'webamm_to_rails/sources/initializers/definitions'
|
13
|
+
require 'webamm_to_rails/sources/views/definition'
|
14
|
+
require 'webamm_to_rails/sources/helpers/definitions'
|
15
|
+
require 'webamm_to_rails/sources/package_json/definition'
|
16
|
+
require 'webamm_to_rails/features/definitions'
|
17
|
+
require 'webamm_to_rails/sources/controllers/definition'
|
18
|
+
require 'webamm_to_rails/sources/controllers/application_controller/definition'
|
19
|
+
|
20
|
+
require 'webamm_to_rails/rails_boilerplate/builder'
|
21
|
+
|
22
|
+
module WebammToRails
|
23
|
+
class << self
|
24
|
+
def generate(waml_json)
|
25
|
+
files = ::WebammToRails::RailsBoilerplate::Builder.call
|
26
|
+
|
27
|
+
waml_definition = ::Webamm::Definition.new(waml_json.deep_symbolize_keys)
|
28
|
+
|
29
|
+
# Models
|
30
|
+
waml_definition.database.schema.each do |table_schema|
|
31
|
+
model_code = ::WebammToRails::Sources::Models::Definition.new(
|
32
|
+
table_definition: table_schema, waml_definition: waml_definition
|
33
|
+
).render
|
34
|
+
|
35
|
+
files << {
|
36
|
+
path: "app/models/#{table_schema.table.singularize}.rb",
|
37
|
+
content: model_code
|
38
|
+
}
|
39
|
+
end
|
40
|
+
|
41
|
+
# Controllers
|
42
|
+
waml_definition.database.crud.each do |crud_definition|
|
43
|
+
controller_code = ::WebammToRails::Sources::Controllers::Definition.new(
|
44
|
+
crud_definition: crud_definition, waml_definition: waml_definition
|
45
|
+
).render
|
46
|
+
|
47
|
+
files << {
|
48
|
+
path: "app/controllers/#{crud_definition.table.pluralize}_controller.rb",
|
49
|
+
content: controller_code
|
50
|
+
}
|
51
|
+
end
|
52
|
+
|
53
|
+
files << {
|
54
|
+
path: 'app/controllers/application_controller.rb',
|
55
|
+
content: ::WebammToRails::Sources::Controllers::ApplicationController::Definition.new(
|
56
|
+
waml_definition: waml_definition
|
57
|
+
).render
|
58
|
+
}
|
59
|
+
|
60
|
+
# package.json
|
61
|
+
files << {
|
62
|
+
path: 'package.json',
|
63
|
+
content: ::WebammToRails::Sources::PackageJson::Definition.new(
|
64
|
+
waml_definition: waml_definition
|
65
|
+
).render
|
66
|
+
}
|
67
|
+
|
68
|
+
# Gemfile
|
69
|
+
files << {
|
70
|
+
path: 'Gemfile',
|
71
|
+
content: ::WebammToRails::Sources::Gemfile::Definition.new(
|
72
|
+
waml_definition: waml_definition
|
73
|
+
).render
|
74
|
+
}
|
75
|
+
|
76
|
+
# Routes
|
77
|
+
files << {
|
78
|
+
path: 'config/routes.rb',
|
79
|
+
content: ::WebammToRails::Sources::Routes::Definition.new(
|
80
|
+
waml_definition: waml_definition
|
81
|
+
).render
|
82
|
+
}
|
83
|
+
|
84
|
+
# Initializers
|
85
|
+
files |= ::WebammToRails::Sources::Initializers::Definitions.new(
|
86
|
+
waml_definition: waml_definition
|
87
|
+
).collection
|
88
|
+
|
89
|
+
# Migrations
|
90
|
+
files |= ::WebammToRails::Sources::Migrations::FilesList.new(
|
91
|
+
waml_definition: waml_definition, database_tables: waml_definition.database.schema
|
92
|
+
).collection
|
93
|
+
|
94
|
+
# Views
|
95
|
+
files |= ::WebammToRails::Sources::Views::Definition.new(
|
96
|
+
waml_definition: waml_definition
|
97
|
+
).collection
|
98
|
+
|
99
|
+
# Helpers
|
100
|
+
files |= ::WebammToRails::Sources::Helpers::Definitions.new(
|
101
|
+
waml_definition: waml_definition
|
102
|
+
).collection
|
103
|
+
|
104
|
+
# Features
|
105
|
+
files |= ::WebammToRails::Features::Definitions.new(
|
106
|
+
waml_definition: waml_definition
|
107
|
+
).collection
|
108
|
+
|
109
|
+
files
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
require 'webamm_to_rails/version'
|
6
|
+
|
7
|
+
Gem::Specification.new do |spec|
|
8
|
+
spec.name = 'webamm_to_rails'
|
9
|
+
spec.authors = ['Paweł Dąbrowski']
|
10
|
+
spec.email = ['contact@paweldabrowski.com']
|
11
|
+
spec.license = 'MIT'
|
12
|
+
spec.version = WebammToRails::VERSION.dup
|
13
|
+
spec.summary = 'Library to convert WEBAMM definition to Ruby on Rails code'
|
14
|
+
spec.description = spec.summary
|
15
|
+
spec.files = Dir['README.md', 'webamm_to_rails.gemspec', 'lib/**/*']
|
16
|
+
spec.require_paths = ['lib']
|
17
|
+
|
18
|
+
spec.add_runtime_dependency 'activesupport', '7.2'
|
19
|
+
spec.add_runtime_dependency 'rufo', '0.18.0'
|
20
|
+
spec.add_runtime_dependency 'dry-struct', '1.6.0'
|
21
|
+
spec.add_runtime_dependency 'webamm', '0.0.1'
|
22
|
+
spec.add_runtime_dependency 'htmlbeautifier', '1.4.3'
|
23
|
+
|
24
|
+
spec.add_development_dependency 'rspec'
|
25
|
+
spec.add_development_dependency 'pry'
|
26
|
+
|
27
|
+
spec.required_ruby_version = '>= 3.2.2'
|
28
|
+
end
|