tramway-core 1.17.2 → 1.17.2.5

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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -2
  3. data/app/controllers/tramway/core/application_controller.rb +8 -12
  4. data/app/decorators/tramway/core/application_decorator.rb +12 -26
  5. data/app/decorators/tramway/core/associations/class_helper.rb +8 -14
  6. data/app/decorators/tramway/core/associations/object_helper.rb +31 -3
  7. data/app/decorators/tramway/core/attributes/view_helper.rb +26 -0
  8. data/app/decorators/tramway/core/concerns/attributes_decorator_helper.rb +47 -26
  9. data/app/decorators/tramway/core/delegating/class_helper.rb +2 -0
  10. data/app/forms/tramway/core/application_form.rb +87 -146
  11. data/app/forms/tramway/core/application_forms/association_object_helpers.rb +27 -0
  12. data/app/forms/tramway/core/application_forms/constant_class_actions.rb +7 -0
  13. data/app/forms/tramway/core/application_forms/constant_object_actions.rb +13 -0
  14. data/app/forms/tramway/core/application_forms/properties_object_helper.rb +23 -0
  15. data/app/forms/tramway/core/extendable_form.rb +3 -70
  16. data/app/forms/tramway/core/extendable_forms_helpers/class_builder.rb +34 -0
  17. data/app/forms/tramway/core/extendable_forms_helpers/ignored_properties_helper.rb +11 -0
  18. data/app/forms/tramway/core/extendable_forms_helpers/more_properties_helper.rb +27 -0
  19. data/app/forms/tramway/core/extendable_forms_helpers/properties_helper.rb +16 -0
  20. data/app/forms/tramway/core/extendable_forms_helpers/submit/class_helpers.rb +18 -0
  21. data/app/forms/tramway/core/extendable_forms_helpers/submit/object_helpers.rb +7 -0
  22. data/app/forms/tramway/core/extendable_forms_helpers/validators.rb +40 -0
  23. data/app/helpers/tramway/core/copy_to_clipboard_helper.rb +6 -10
  24. data/app/helpers/tramway/core/title_helper.rb +17 -22
  25. data/app/models/tramway/core/application_record.rb +38 -40
  26. data/app/uploaders/image_defaults.rb +2 -1
  27. data/app/uploaders/photo_uploader.rb +8 -8
  28. data/config/initializers/plurals.rb +2 -2
  29. data/lib/tramway/collection.rb +4 -6
  30. data/lib/tramway/collections.rb +4 -0
  31. data/lib/tramway/collections/helper.rb +15 -14
  32. data/lib/tramway/core.rb +22 -22
  33. data/lib/tramway/core/engine.rb +4 -8
  34. data/lib/tramway/core/generators.rb +6 -0
  35. data/lib/tramway/core/generators/install_generator.rb +17 -17
  36. data/lib/tramway/core/version.rb +1 -1
  37. data/lib/tramway/error.rb +12 -1
  38. data/lib/yaml/errors.yml +35 -0
  39. metadata +19 -3
@@ -4,7 +4,8 @@ module ImageDefaults
4
4
  include CarrierWave::MiniMagick
5
5
 
6
6
  def default_url
7
- "/images/fallback/#{model.class.model_name.to_s.underscore}/" << [mounted_as, version_name].compact.join('_') << '.gif'
7
+ "/images/fallback/#{model.class.model_name.to_s.underscore}/" <<
8
+ [mounted_as, version_name].compact.join('_') << '.gif'
8
9
  end
9
10
 
10
11
  def extension_white_list
@@ -44,14 +44,14 @@ class PhotoUploader < ApplicationUploader
44
44
  before :cache, :capture_size
45
45
 
46
46
  def capture_size(file)
47
- if version_name.blank?
48
- if file.path.nil?
49
- img = ::MiniMagick::Image.read(file.file)
50
- @width = img[:width]
51
- @height = img[:height]
52
- else
53
- @width, @height = `identify -format "%wx %h" #{file.path}`.split(/x/).map(&:to_i)
54
- end
47
+ return unless version_name.blank?
48
+
49
+ if file.path.nil?
50
+ img = ::MiniMagick::Image.read(file.file)
51
+ @width = img[:width]
52
+ @height = img[:height]
53
+ else
54
+ @width, @height = `identify -format "%wx %h" #{file.path}`.split(/x/).map(&:to_i)
55
55
  end
56
56
  end
57
57
  end
@@ -6,7 +6,7 @@
6
6
  plural: {
7
7
  keys: %i[zero one few many],
8
8
  rule: lambda do |n|
9
- if n == 0
9
+ if n.zero?
10
10
  :zero
11
11
  elsif n % 10 == 1 && n % 100 != 11
12
12
  # 1, 21, 31, 41, 51, 61...
@@ -14,7 +14,7 @@
14
14
  elsif [2, 3, 4].include?(n % 10) && ![12, 13, 14].include?(n % 100)
15
15
  # 2-4, 22-24, 32-34...
16
16
  :few
17
- elsif n % 10 == 0 || ![5, 6, 7, 8, 9].include?(n % 10) || ![11, 12, 13, 14].include?(n % 100)
17
+ elsif n % 10.zero? || ![5, 6, 7, 8, 9].include?(n % 10) || ![11, 12, 13, 14].include?(n % 100)
18
18
  # 0, 5-20, 25-30, 35-40...
19
19
  :many
20
20
  end
@@ -1,11 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Tramway
4
- class Collection
5
- class << self
6
- def list
7
- raise 'Please add collection to list method'
8
- end
3
+ class Tramway::Collection
4
+ class << self
5
+ def list
6
+ raise 'Please add collection to list method'
9
7
  end
10
8
  end
11
9
  end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tramway::Collections
4
+ end
@@ -1,20 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Tramway
4
- module Collections
5
- module Helper
6
- def collection_list_by(name:)
7
- begin
8
- require name # needed to load class name with collection
9
- rescue LoadError
10
- raise "No such file #{name}. You should create file in the `lib/#{name}.rb` or elsewhere you want"
11
- end
12
- unless ::Tramway::Collection.descendants.map(&:to_s).include?(name.camelize)
13
- raise "There no such collection named #{name.camelize}. Please create class with self method `list` and extended of `Tramway::Collection`. You should reload your server after creating this collection."
14
- end
3
+ require 'tramway/collections'
15
4
 
16
- name.camelize.constantize.list
17
- end
5
+ module Tramway::Collections::Helper
6
+ def collection_list_by(name:)
7
+ begin
8
+ require name # needed to load class name with collection
9
+ rescue LoadError
10
+ raise "No such file #{name}. You should create file in the `lib/#{name}.rb` or elsewhere you want"
18
11
  end
12
+ unless ::Tramway::Collection.descendants.map(&:to_s).include?(name.camelize)
13
+ ::Tramway::Error.raise_error(
14
+ :tramway, :collections, :helper, :collection_list_by, :there_no_such_collection,
15
+ name_camelize: name.camelize
16
+ )
17
+ end
18
+
19
+ name.camelize.constantize.list
19
20
  end
20
21
  end
@@ -9,37 +9,37 @@ require 'reform'
9
9
  require 'pg_search'
10
10
  require 'validators/presence_validator'
11
11
 
12
- module Tramway
13
- module Core
14
- class << self
15
- def initialize_application(**options)
16
- @application ||= Tramway::Core::Application.new
17
- options.each do |attr, value|
18
- @application.send "#{attr}=", value
19
- end
12
+ module Tramway::Core
13
+ class << self
14
+ def initialize_application(**options)
15
+ @application ||= Tramway::Core::Application.new
16
+ options.each do |attr, value|
17
+ @application.send "#{attr}=", value
20
18
  end
19
+ end
21
20
 
22
- def application_object
23
- if @application&.model_class.present?
24
- begin
25
- @application.model_class.first
26
- rescue StandardError
27
- nil
28
- end
29
- else
30
- @application
21
+ def application_object
22
+ if @application&.model_class.present?
23
+ begin
24
+ @application.model_class.first
25
+ rescue StandardError
26
+ nil
31
27
  end
28
+ else
29
+ @application
32
30
  end
31
+ end
33
32
 
34
- attr_reader :application
33
+ def root
34
+ File.dirname __dir__
35
35
  end
36
+
37
+ attr_reader :application
36
38
  end
37
39
  end
38
40
 
39
41
  # HACK: FIXME
40
42
 
41
- module ActiveModel
42
- class Errors
43
- def merge!(*args); end
44
- end
43
+ class ActiveModel::Errors
44
+ def merge!(*args); end
45
45
  end
@@ -5,14 +5,10 @@ require 'tramway/core/application'
5
5
  require 'simple_form'
6
6
  require 'enumerize'
7
7
 
8
- module Tramway
9
- module Core
10
- class Engine < ::Rails::Engine
11
- isolate_namespace Tramway::Core
8
+ class Tramway::Core::Engine < ::Rails::Engine
9
+ isolate_namespace Tramway::Core
12
10
 
13
- config.before_initialize do
14
- config.i18n.load_path += Dir["#{config.root}/config/locales/**/*.yml"]
15
- end
16
- end
11
+ config.before_initialize do
12
+ config.i18n.load_path += Dir["#{config.root}/config/locales/**/*.yml"]
17
13
  end
18
14
  end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tramway::Core
4
+ module Generators
5
+ end
6
+ end
@@ -1,27 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'rails/generators'
4
+ require 'tramway/core/generators'
4
5
 
5
- module Tramway
6
- module Core
7
- module Generators
8
- class InstallGenerator < ::Rails::Generators::Base
9
- source_root File.expand_path('templates', __dir__)
6
+ class Tramway::Core::Generators::InstallGenerator < ::Rails::Generators::Base
7
+ source_root File.expand_path('templates', __dir__)
10
8
 
11
- def run_other_generators
12
- generate 'audited:install'
13
- end
9
+ def run_other_generators
10
+ generate 'audited:install'
11
+ end
14
12
 
15
- def self.next_migration_number(path)
16
- next_migration_number = current_migration_number(path) + 1
17
- ActiveRecord::Migration.next_migration_number next_migration_number
18
- end
13
+ def self.next_migration_number(path)
14
+ next_migration_number = current_migration_number(path) + 1
15
+ ActiveRecord::Migration.next_migration_number next_migration_number
16
+ end
19
17
 
20
- def copy_initializer
21
- copy_file "/#{File.dirname __dir__}/generators/templates/initializers/simple_form.rb", 'config/initializers/simple_form.rb'
22
- copy_file "/#{File.dirname __dir__}/generators/templates/initializers/simple_form_bootstrap.rb", 'config/initializers/simple_form_bootstrap.rb'
23
- end
24
- end
18
+ def copy_initializer
19
+ simple_form_files = %w[simple_form simple_form_bootstrap]
20
+ simple_form_files.each do |file|
21
+ copy_file(
22
+ "/#{File.dirname __dir__}/generators/templates/initializers/#{file}.rb",
23
+ "config/initializers/#{file}.rb"
24
+ )
25
25
  end
26
26
  end
27
27
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Tramway
4
4
  module Core
5
- VERSION = '1.17.2'
5
+ VERSION = '1.17.2.5'
6
6
  end
7
7
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  class Tramway::Error < RuntimeError
4
4
  def initialize(*args, plugin: nil, method: nil, message: nil)
5
- @properties ||= {}
5
+ @properties = {}
6
6
  @properties[:plugin] = plugin
7
7
  @properties[:method] = method
8
8
  @properties[:message] = message
@@ -16,4 +16,15 @@ class Tramway::Error < RuntimeError
16
16
  def properties
17
17
  @properties ||= {}
18
18
  end
19
+
20
+ class << self
21
+ def raise_error(*coordinates, **options)
22
+ @errors ||= YAML.load_file("#{Tramway::Core.root}/yaml/errors.yml").with_indifferent_access
23
+ error = @errors.dig(*coordinates)
24
+ options.each do |pair|
25
+ error.gsub!("%{#{pair[0]}}", pair[1].to_s)
26
+ end
27
+ raise error
28
+ end
29
+ end
19
30
  end
@@ -0,0 +1,35 @@
1
+ tramway:
2
+ collections:
3
+ helper:
4
+ collection_list_by:
5
+ there_no_such_collection: "There no such collection named %{name_camelize}. Please create class with self method `list` and extended of `Tramway::Collection`. You should reload your server after creating this collection."
6
+ core:
7
+ title_helper:
8
+ title:
9
+ you_should_set_tramway_core_application: "You should set Tramway::Core::Application class using `::Tramway::Core.initialize_application model_class: #{model_class_name}` in config/initializers/tramway.rb OR maybe you don't have any records of application model"
10
+ application_form:
11
+ initialize:
12
+ polymorphic_class_is_nil: "Polymorphic association class is nil. Maybe, you should write `assocation #{association_name}` after `properties #{association_name}_id, #{association_name}_type`"
13
+ validates:
14
+ you_need_to_set_model_class: 'You need to set `model_class` name while using validations. Just write `self.model_class = YOUR_MODEL_NAME` in the class area.'
15
+ submit:
16
+ looks_like_you_have_method: "Looks like you have method `%{method_name}` in %{model_class}. You should rename it or rename property in %{class_name}"
17
+ params_should_not_be_nil: "ApplicationForm::Params should not be nil"
18
+ model_class:
19
+ there_is_not_model_class: "There is not model class name for %{name}. Should be %{model_class_name} or you can use another class to initialize form object or just initialize form with object."
20
+ concerns:
21
+ attribute_decorator_helper:
22
+ you_should_mount_photo_uploader: "You should mount PhotoUploader to your model. Just add `mount_uploader %{attribute_name}, PhotoUploader` to your model. %{message}"
23
+ associations:
24
+ object_helper:
25
+ please_specify_association_name: "Please, specify `%{association_name}` association class_name in %{object_class} model. For example: `has_many :%{association_name}, class_name: '%{association_class_name}'`"
26
+ class_helper:
27
+ model_does_not_have_association: "Model %{object_class} does not have association named `%{association_name}`"
28
+ application_decorator:
29
+ attributes:
30
+ method_is_reserved_word: "Method `%{attribute_name}` is reserved word. Please, create or delegate method in %{class_name} with another name."
31
+ title:
32
+ please_implement_title: "Please, implement `title` method in a %{class_name} or %{object_class}"
33
+ link:
34
+ method_link_uses_file_attribute: "Method `link` uses `file` attribute of the decorated object. If decorated object doesn't contain `file`, you shouldn't use `link` method."
35
+
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tramway-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.17.2
4
+ version: 1.17.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Kalashnikov
8
+ - moshiaan
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2020-03-16 00:00:00.000000000 Z
12
+ date: 2020-03-24 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: audited
@@ -357,10 +358,22 @@ files:
357
358
  - app/decorators/tramway/core/application_decorator.rb
358
359
  - app/decorators/tramway/core/associations/class_helper.rb
359
360
  - app/decorators/tramway/core/associations/object_helper.rb
361
+ - app/decorators/tramway/core/attributes/view_helper.rb
360
362
  - app/decorators/tramway/core/concerns/attributes_decorator_helper.rb
361
363
  - app/decorators/tramway/core/delegating/class_helper.rb
362
364
  - app/forms/tramway/core/application_form.rb
365
+ - app/forms/tramway/core/application_forms/association_object_helpers.rb
366
+ - app/forms/tramway/core/application_forms/constant_class_actions.rb
367
+ - app/forms/tramway/core/application_forms/constant_object_actions.rb
368
+ - app/forms/tramway/core/application_forms/properties_object_helper.rb
363
369
  - app/forms/tramway/core/extendable_form.rb
370
+ - app/forms/tramway/core/extendable_forms_helpers/class_builder.rb
371
+ - app/forms/tramway/core/extendable_forms_helpers/ignored_properties_helper.rb
372
+ - app/forms/tramway/core/extendable_forms_helpers/more_properties_helper.rb
373
+ - app/forms/tramway/core/extendable_forms_helpers/properties_helper.rb
374
+ - app/forms/tramway/core/extendable_forms_helpers/submit/class_helpers.rb
375
+ - app/forms/tramway/core/extendable_forms_helpers/submit/object_helpers.rb
376
+ - app/forms/tramway/core/extendable_forms_helpers/validators.rb
364
377
  - app/forms/tramway/core/extended_application_form.rb
365
378
  - app/forms/tramway/core/form_creator.rb
366
379
  - app/helpers/tramway/core/copy_to_clipboard_helper.rb
@@ -397,10 +410,12 @@ files:
397
410
  - lib/string.rb
398
411
  - lib/tasks/tramway/core_tasks.rake
399
412
  - lib/tramway/collection.rb
413
+ - lib/tramway/collections.rb
400
414
  - lib/tramway/collections/helper.rb
401
415
  - lib/tramway/core.rb
402
416
  - lib/tramway/core/application.rb
403
417
  - lib/tramway/core/engine.rb
418
+ - lib/tramway/core/generators.rb
404
419
  - lib/tramway/core/generators/install_generator.rb
405
420
  - lib/tramway/core/generators/templates/initializers/simple_form.rb
406
421
  - lib/tramway/core/generators/templates/initializers/simple_form_bootstrap.rb
@@ -408,7 +423,8 @@ files:
408
423
  - lib/tramway/error.rb
409
424
  - lib/tramway/helpers/class_name_helpers.rb
410
425
  - lib/validators/presence_validator.rb
411
- homepage: https://github.com/kalashnikovisme/tramway-core
426
+ - lib/yaml/errors.yml
427
+ homepage: https://github.com/purple-magic/tramway-core
412
428
  licenses:
413
429
  - MIT
414
430
  metadata: {}