eac_rails_utils 0.8.0 → 0.9.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 (68) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +2 -0
  3. data/app/helpers/eac_rails_utils/formatter_helper.rb +2 -0
  4. data/app/helpers/eac_rails_utils/links_helper.rb +4 -1
  5. data/app/helpers/eac_rails_utils/open_graph_protocol_helper.rb +2 -0
  6. data/lib/eac/common_form_helper.rb +3 -0
  7. data/lib/eac/common_form_helper/form_builder.rb +2 -0
  8. data/lib/eac/common_form_helper/form_builder/association_select_field.rb +4 -1
  9. data/lib/eac/common_form_helper/form_builder/common_text_fields.rb +3 -2
  10. data/lib/eac/common_form_helper/form_builder/currency_field.rb +13 -11
  11. data/lib/eac/common_form_helper/form_builder/date_field.rb +2 -0
  12. data/lib/eac/common_form_helper/form_builder/fields_for.rb +2 -0
  13. data/lib/eac/common_form_helper/form_builder/file_field.rb +1 -0
  14. data/lib/eac/common_form_helper/form_builder/radio_select_field.rb +4 -1
  15. data/lib/eac/common_form_helper/form_builder/searchable_association_field.rb +6 -2
  16. data/lib/eac/common_form_helper/form_builder/select_field.rb +2 -0
  17. data/lib/eac/common_form_helper/form_builder/time_field.rb +1 -0
  18. data/lib/eac/common_form_helper/form_builder/year_month_field.rb +1 -0
  19. data/lib/eac/cpf_validator.rb +7 -3
  20. data/lib/eac/data_table_helper.rb +1 -0
  21. data/lib/eac/data_table_helper/column.rb +5 -2
  22. data/lib/eac/data_table_helper/data_table.rb +11 -9
  23. data/lib/eac/data_table_helper/setup.rb +1 -0
  24. data/lib/eac/htmlbeautifier.rb +2 -0
  25. data/lib/eac/inequality_queries.rb +2 -1
  26. data/lib/eac/menus_helper.rb +5 -1
  27. data/lib/eac/menus_helper/bootstrap_gui_builder.rb +7 -4
  28. data/lib/eac/menus_helper/data_builder.rb +6 -1
  29. data/lib/eac/menus_helper/gui_builder.rb +5 -2
  30. data/lib/eac/model.rb +8 -5
  31. data/lib/eac/no_presence_validator.rb +2 -2
  32. data/lib/eac/test_utils.rb +17 -12
  33. data/lib/eac_rails_utils.rb +4 -5
  34. data/lib/eac_rails_utils/engine.rb +1 -0
  35. data/lib/eac_rails_utils/patches/action_controller_base.rb +1 -0
  36. data/lib/eac_rails_utils/patches/model_attribute_required.rb +3 -0
  37. data/lib/eac_rails_utils/patches/ofx_parser.rb +5 -4
  38. data/lib/eac_rails_utils/tableless_model.rb +6 -4
  39. data/lib/eac_rails_utils/version.rb +2 -1
  40. data/test/app/helpers/eac_rails_utils/formatter_helper_test.rb +1 -0
  41. data/test/dummy/Rakefile +3 -1
  42. data/test/dummy/app/models/job.rb +2 -0
  43. data/test/dummy/app/models/user.rb +2 -0
  44. data/test/dummy/config.ru +2 -0
  45. data/test/dummy/config/application.rb +3 -1
  46. data/test/dummy/config/boot.rb +3 -1
  47. data/test/dummy/config/environment.rb +3 -1
  48. data/test/dummy/config/environments/test.rb +2 -0
  49. data/test/dummy/config/routes.rb +2 -0
  50. data/test/dummy/db/migrate/20160415125333_create_users.rb +2 -0
  51. data/test/dummy/db/migrate/20160415143123_create_jobs.rb +2 -0
  52. data/test/dummy/db/migrate/20160415143229_add_job_to_users.rb +2 -0
  53. data/test/lib/eac/common_form_helper_test.rb +2 -0
  54. data/test/lib/eac/cpf_validator_test.rb +2 -0
  55. data/test/lib/eac/{data_table_test_helper.rb → data_table_test_helper_test.rb} +2 -1
  56. data/test/lib/eac/model_test.rb +2 -0
  57. data/test/lib/eac_rails_utils/patches/model_attribute_required_test.rb +2 -0
  58. data/test/lib/eac_rails_utils/tableless_model_test.rb +1 -1
  59. data/test/test_helper.rb +3 -1
  60. metadata +65 -51
  61. data/lib/eac/parsers/files_test.rb +0 -63
  62. data/lib/eac/source_target_fixtures.rb +0 -66
  63. data/test/lib/eac/parsers/files_test_test.rb +0 -27
  64. data/test/lib/eac/parsers/ok_test_files/a.source.yaml +0 -1
  65. data/test/lib/eac/parsers/ok_test_files/a.target.yaml +0 -1
  66. data/test/lib/eac/parsers/ok_test_files/b.source.yaml +0 -1
  67. data/test/lib/eac/parsers/ok_test_files/b.target.yaml +0 -1
  68. data/test/lib/eac/source_target_fixtures_test.rb +0 -41
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d6110af17107237d774ea52a1ca25220fd711671526b1eeda16db466f62bdca6
4
- data.tar.gz: 67908bcdc2622d86dc2b9f7960963e2efba51150320542f028d7d433c1190b8d
3
+ metadata.gz: e5d1603f1c60e9d64e4d2acc9e399fbef95660bde8e737a4c739481b6455733c
4
+ data.tar.gz: baa588fd3f6095129486e021671f8a934d6d6728e1bbea4a2742b375dd8b5572
5
5
  SHA512:
6
- metadata.gz: 0a183c0e6065f379848fac12323028fc466cf910de11585ca09855a2c915f54aaffc0371424fef0e392a598291986148ba3af6f2d737f46de5d50314f008491e
7
- data.tar.gz: 5f9fb0839dcbf3db537cfdfc736accde82399f74452c283044a7f7cf97e844e90fd05191c6c7b1d3fb5b94af71c6a8d654ad9ac716980316eb95d122800a0748
6
+ metadata.gz: d9c2b12877f921a3fa1c5cf23a36a0b6dae7e048e1a6814cc062c3238d3abad9e14e714f82d1415b3a706fe4f9c1bbcd10da0274ce28acc90bdb7cb09b0b0ba4
7
+ data.tar.gz: 6e83568342b4b9257d3c2c87959256b3c728e8e259b17991f71709a1ed10e80a42d9d4e1b4a7b21231a285dcb2013cc45ef7e609d32eb0d035edb7e99fa6124c
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  begin
2
4
  require 'bundler/setup'
3
5
  rescue LoadError
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module EacRailsUtils
3
4
  module FormatterHelper
4
5
  extend ::ActiveSupport::Concern
@@ -10,6 +11,7 @@ module EacRailsUtils
10
11
  def value_or_sign(value, sign = '-', &block)
11
12
  return sign if value.blank?
12
13
  return yield(value) if block
14
+
13
15
  value
14
16
  end
15
17
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module EacRailsUtils
3
4
  module LinksHelper
4
5
  def short_delete_link(object)
@@ -20,7 +21,8 @@ module EacRailsUtils
20
21
  def short_goto_link(url)
21
22
  value_or_sign(url, '') do |value|
22
23
  link_to '', value, class: 'goto_link', target: '_blank',
23
- title: ::I18n.t('eac_rails_base0.links.goto_url', url: value.to_s)
24
+ title: ::I18n.t('eac_rails_base0.links.goto_url', url: value.to_s),
25
+ rel: 'noopener'
24
26
  end
25
27
  end
26
28
 
@@ -38,6 +40,7 @@ module EacRailsUtils
38
40
  while current_class
39
41
  path = object_path_by_class(current_class, action)
40
42
  return send(path, object) if respond_to?(path)
43
+
41
44
  tried_paths << path
42
45
  current_class = current_class.superclass
43
46
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module EacRailsUtils
3
4
  module OpenGraphProtocolHelper
4
5
  OGP_META_DEFAULT_PREFIX = 'og'
@@ -89,6 +90,7 @@ module EacRailsUtils
89
90
 
90
91
  def tag
91
92
  return ::ActiveSupport::SafeBuffer.new unless content?
93
+
92
94
  view.tag(:meta, prefix: view.ogp_prefix, property: property_value, content: content)
93
95
  end
94
96
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Eac
2
4
  module CommonFormHelper
3
5
  def common_form(model_instance, options = {}, &block)
@@ -29,6 +31,7 @@ module Eac
29
31
  s = ActiveSupport::SafeBuffer.new
30
32
  model_instance.errors.each do |k, v|
31
33
  next if field_errors_showed.include?(k)
34
+
32
35
  s << content_tag(:div, "#{k}: #{v}", class: 'error')
33
36
  end
34
37
  s
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Eac
3
4
  module CommonFormHelper
4
5
  class FormBuilder
@@ -67,6 +68,7 @@ module Eac
67
68
 
68
69
  def field_errors_errors(field_name)
69
70
  return nil unless model_instance.errors.messages[field_name]
71
+
70
72
  s = ActiveSupport::SafeBuffer.new
71
73
  model_instance.errors.messages[field_name].each { |error| s << field_error(error) }
72
74
  @field_errors_showed.add(field_name)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Eac
2
4
  module CommonFormHelper
3
5
  class FormBuilder
@@ -31,7 +33,8 @@ module Eac
31
33
  if model_instance.class.respond_to?(:reflect_on_association)
32
34
  return model_instance.class.reflect_on_association(field_name).send(method)
33
35
  end
34
- fail "#{model_instance.class} não possui um método \"reflect_on_association\". " \
36
+
37
+ raise "#{model_instance.class} não possui um método \"reflect_on_association\". " \
35
38
  "Defina explicitamente a opção :#{key}"
36
39
  end
37
40
  end
@@ -1,9 +1,10 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Eac
3
4
  module CommonFormHelper
4
5
  class FormBuilder
5
6
  module CommonTextFields
6
- %w(email password text).each do |t|
7
+ %w[email password text].each do |t|
7
8
  class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
8
9
  def #{t}_field(field_name, options = {}) # def text_field(field_name, options = {})
9
10
  field(field_name, options) do # field(field_name, options) do
@@ -13,7 +14,7 @@ module Eac
13
14
  input_options) # class: 'form-control')
14
15
  end # end
15
16
  end # end
16
- RUBY_EVAL
17
+ RUBY_EVAL
17
18
  end
18
19
  end
19
20
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Eac
2
4
  module CommonFormHelper
3
5
  class FormBuilder
@@ -7,8 +9,8 @@ module Eac
7
9
  visible_id = SecureRandom.hex(5)
8
10
  cf = field(field_name, options) do
9
11
  form.hidden_field(field_name, id: hidden_id) <<
10
- helper.text_field_tag("#{field_name}_visible", '',
11
- id: visible_id, class: 'form-control')
12
+ helper.text_field_tag("#{field_name}_visible", '',
13
+ id: visible_id, class: 'form-control')
12
14
  end
13
15
  cf << javascript_currency_mask(hidden_id, visible_id)
14
16
  end
@@ -23,15 +25,15 @@ module Eac
23
25
  end
24
26
 
25
27
  def mask_money_options
26
- <<-eos
27
- {
28
- prefix: '#{I18n.t('number.currency.format.unit')} ',
29
- allowNegative: true,
30
- thousands: '#{I18n.t('number.currency.format.delimiter')}',
31
- decimal: '#{I18n.t('number.currency.format.separator')}',
32
- affixesStay: false
33
- }
34
- eos
28
+ <<~JSON_CODE
29
+ {
30
+ prefix: '#{I18n.t('number.currency.format.unit')} ',
31
+ allowNegative: true,
32
+ thousands: '#{I18n.t('number.currency.format.delimiter')}',
33
+ decimal: '#{I18n.t('number.currency.format.separator')}',
34
+ affixesStay: false
35
+ }
36
+ JSON_CODE
35
37
  end
36
38
  end
37
39
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Eac
2
4
  module CommonFormHelper
3
5
  class FormBuilder
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Eac
2
4
  module CommonFormHelper
3
5
  class FormBuilder
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Eac
3
4
  module CommonFormHelper
4
5
  class FormBuilder
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Eac
2
4
  module CommonFormHelper
3
5
  class FormBuilder
@@ -35,7 +37,8 @@ module Eac
35
37
  if model_instance.class.respond_to?(:reflect_on_association)
36
38
  return model_instance.class.reflect_on_association(field_name).send(method)
37
39
  end
38
- fail "#{model_instance.class} não possui um método \"reflect_on_association\". " \
40
+
41
+ raise "#{model_instance.class} não possui um método \"reflect_on_association\". " \
39
42
  "Defina explicitamente a opção :#{key}"
40
43
  end
41
44
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Eac
2
4
  module CommonFormHelper
3
5
  class FormBuilder
@@ -42,17 +44,19 @@ module Eac
42
44
  end
43
45
 
44
46
  def association_column
45
- @form_builder.model_instance && @form_builder.model_instance.send(@field_name)
47
+ @form_builder.model_instance&.send(@field_name)
46
48
  end
47
49
 
48
50
  def initial_id
49
51
  return association_column.id if association_column
52
+
50
53
  ''
51
54
  end
52
55
 
53
56
  def initial_label
54
57
  return association_column.to_s if association_column
55
58
  return params[visible_input_name] if params.key?(visible_input_name)
59
+
56
60
  ''
57
61
  end
58
62
 
@@ -66,7 +70,7 @@ module Eac
66
70
 
67
71
  def json_options
68
72
  r = {}
69
- [:hidden_input_id, :visible_input_id, :initial_id, :initial_label, :url].each do |k|
73
+ %i[hidden_input_id visible_input_id initial_id initial_label url].each do |k|
70
74
  r[k] = send(k)
71
75
  end
72
76
  r.to_json
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Eac
3
4
  module CommonFormHelper
4
5
  class FormBuilder
@@ -19,6 +20,7 @@ module Eac
19
20
  def listable_select_options(field_name)
20
21
  return nil unless model_instance.class.respond_to?(:lists)
21
22
  return nil unless model_instance.class.lists.respond_to?(field_name)
23
+
22
24
  model_instance.class.lists.send(field_name).options
23
25
  end
24
26
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Eac
3
4
  module CommonFormHelper
4
5
  class FormBuilder
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Eac
3
4
  module CommonFormHelper
4
5
  class FormBuilder
@@ -1,7 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Eac
2
4
  class CpfValidator < ActiveModel::EachValidator
3
5
  def validate_each(record, attribute, value)
4
6
  return if Cpf.new(value).valid?
7
+
5
8
  record.errors[attribute] << (options[:message] ||
6
9
  'CPF inválido (9 caracteres, somente dígitos)')
7
10
  end
@@ -13,6 +16,7 @@ module Eac
13
16
 
14
17
  def valid?
15
18
  return false if input_invalid?
19
+
16
20
  digito_verificador1_calculo == values[9] && digito_verificador2_calculo == values[10]
17
21
  end
18
22
 
@@ -25,8 +29,8 @@ module Eac
25
29
  end
26
30
 
27
31
  def null?
28
- %w(12345678909 11111111111 22222222222 33333333333 44444444444 55555555555
29
- 66666666666 77777777777 88888888888 99999999999 00000000000).member?(digits.join)
32
+ %w[12345678909 11111111111 22222222222 33333333333 44444444444 55555555555
33
+ 66666666666 77777777777 88888888888 99999999999 00000000000].member?(digits.join)
30
34
  end
31
35
 
32
36
  def digits
@@ -53,7 +57,7 @@ module Eac
53
57
  c -= 1
54
58
  end
55
59
  s -= (11 * (s / 11))
56
- (s == 0 || s == 1) ? 0 : 11 - s
60
+ [0, 1].include?(s) ? 0 : 11 - s
57
61
  end
58
62
  end
59
63
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require_dependency 'eac/data_table_helper/column'
3
4
  require_dependency 'eac/data_table_helper/setup'
4
5
  require_dependency 'eac/data_table_helper/data_table'
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Eac
3
4
  module DataTableHelper
4
5
  class Column
@@ -12,8 +13,8 @@ module Eac
12
13
  @block = block
13
14
  end
14
15
 
15
- def record_value(r)
16
- v = Node.new(r, @path).value
16
+ def record_value(record)
17
+ v = Node.new(record, @path).value
17
18
  if v.present?
18
19
  @block ? @block.call(v) : v
19
20
  else
@@ -35,9 +36,11 @@ module Eac
35
36
 
36
37
  def value
37
38
  return @node if @node.nil? || @path.empty?
39
+
38
40
  subpath = @path.dup
39
41
  n = subpath.shift
40
42
  return Node.new(@node.send(n), subpath).value if @node.respond_to?(n)
43
+
41
44
  raise "Instance of #{@node.class} does not respond to #{n}"
42
45
  end
43
46
  end
@@ -32,20 +32,22 @@ module Eac
32
32
  end
33
33
  end
34
34
 
35
- def row(r)
35
+ def row(record)
36
36
  @view.content_tag(:tr) do
37
- @view.safe_join(@setup.columns.map { |c| @view.content_tag('td', c.record_value(r)) << "\n" })
37
+ @view.safe_join(
38
+ @setup.columns.map { |c| @view.content_tag('td', c.record_value(record)) << "\n" }
39
+ )
38
40
  end << "\n"
39
41
  end
40
42
 
41
43
  def script
42
- @view.javascript_tag <<EOS
43
- $(document).ready(function () {
44
- $('##{id}').DataTable({
45
- paging: #{@setup.paging ? 'true' : 'false'}
46
- });
47
- });
48
- EOS
44
+ @view.javascript_tag <<~JS_CODE
45
+ $(document).ready(function () {
46
+ $('##{id}').DataTable({
47
+ paging: #{@setup.paging ? 'true' : 'false'}
48
+ });
49
+ });
50
+ JS_CODE
49
51
  end
50
52
 
51
53
  def id
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Eac
3
4
  module DataTableHelper
4
5
  class Setup
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'htmlbeautifier'
2
4
 
3
5
  module Eac
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Eac
3
4
  # == Example:
4
5
  #
@@ -25,7 +26,7 @@ module Eac
25
26
 
26
27
  module ClassMethods
27
28
  def add_inequality_queries(attribute)
28
- %w(gt gteq lt lteq).each do |ineq|
29
+ %w[gt gteq lt lteq].each do |ineq|
29
30
  scope "by_#{attribute}_#{ineq}", lambda { |v|
30
31
  where(arel_table[attribute].send(ineq, v))
31
32
  }
@@ -1,16 +1,20 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Eac
2
4
  module MenusHelper
3
5
  def dropdown_menu(entries)
4
6
  entries = DataBuilder.new(self).build(entries)
5
7
  return nil unless entries
8
+
6
9
  id = SecureRandom.hex(5)
7
10
  GuiBuilder.new(self).build(entries, id: id, class: 'jMenu') <<
8
- content_tag(:script) { raw("$(document).ready(function(){$('\##{id}').jMenu();});") }
11
+ javascript_tag("$(document).ready(function(){$('\##{id}').jMenu();});")
9
12
  end
10
13
 
11
14
  def bootstrap_dropdown_menu(entries, options = {})
12
15
  entries = DataBuilder.new(self).build(entries)
13
16
  return nil unless entries
17
+
14
18
  BootstrapGuiBuilder.new(self, options).build(entries)
15
19
  end
16
20
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Eac
2
4
  module MenusHelper
3
5
  # http://bootsnipp.com/snippets/featured/multi-level-dropdown-menu-bs3
@@ -8,7 +10,8 @@ module Eac
8
10
  end
9
11
 
10
12
  def build(entries)
11
- fail "Argument \"entries\" is not a array" unless entries.is_a?(Array)
13
+ raise 'Argument "entries" is not a array' unless entries.is_a?(Array)
14
+
12
15
  @view.content_tag(:ul, class: "nav navbar-nav #{@options[:class]}".strip) do
13
16
  menu_entries(entries)
14
17
  end
@@ -28,12 +31,12 @@ module Eac
28
31
  elsif entry[:type] == :item
29
32
  menu_item(entry)
30
33
  else
31
- fail "Unknown menu entry type: \"#{entry[:type]}\""
34
+ raise "Unknown menu entry type: \"#{entry[:type]}\""
32
35
  end
33
36
  end
34
37
 
35
38
  def menu_group(entry)
36
- if entry[:level] == 0
39
+ if entry[:level].zero?
37
40
  menu_group_root(entry)
38
41
  else
39
42
  menu_group_sub(entry)
@@ -82,7 +85,7 @@ module Eac
82
85
  options[:method] = options[:link_method]
83
86
  options.delete(:link_method)
84
87
  end
85
- options[:class] = "#{@options[:button_class]}".strip if entry[:level] == 0
88
+ options[:class] = (@options[:button_class]).to_s.strip if entry[:level].zero?
86
89
  options
87
90
  end
88
91
  end