Class: AdminCore::Generators::ResourceManagerGenerator::Attribute

Inherits:
Object
  • Object
show all
Defined in:
lib/generators/admin_core/resource_manager_generator.rb

Constant Summary collapse

READONLY_ATTRIBUTE_NAMES =
%w[id created_at updated_at].freeze
FIELD_MAPPING =
Hash.new { |_, k| k }.merge(
  datetime: :date_time,
  integer: :number,
  time: :date_time
)
FILTER_MAPPING =
Hash.new { |_, k| k }.merge(
  text: :string
)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(resource_class, name) ⇒ Attribute

Returns a new instance of Attribute.



39
40
41
42
# File 'lib/generators/admin_core/resource_manager_generator.rb', line 39

def initialize(resource_class, name)
  @resource_class = resource_class
  @name = name
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



37
38
39
# File 'lib/generators/admin_core/resource_manager_generator.rb', line 37

def name
  @name
end

Instance Method Details

#define_and_register_filterObject



52
53
54
# File 'lib/generators/admin_core/resource_manager_generator.rb', line 52

def define_and_register_filter
  "define_and_register_filter :#{name}, :#{filter_type}"
end

#define_fieldObject



44
45
46
47
48
49
50
# File 'lib/generators/admin_core/resource_manager_generator.rb', line 44

def define_field
  if field_implemented?
    "define_field :#{name}, :#{field_type}"
  else
    "# define_field :#{name}, :#{field_type}"
  end
end

#field_implemented?Boolean

Returns:

  • (Boolean)


64
65
66
67
68
69
# File 'lib/generators/admin_core/resource_manager_generator.rb', line 64

def field_implemented?
  AdminCore.resolve_resource_field(field_type)
  true
rescue AdminCore::ResourceFieldNotFound
  false
end

#filter_implemented?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/generators/admin_core/resource_manager_generator.rb', line 71

def filter_implemented?
  %i[boolean number string].include?(filter_type)
end

#form?Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/generators/admin_core/resource_manager_generator.rb', line 60

def form?
  READONLY_ATTRIBUTE_NAMES.exclude?(name)
end

#redundant?Boolean

Returns:

  • (Boolean)


76
77
78
79
80
81
82
83
84
85
# File 'lib/generators/admin_core/resource_manager_generator.rb', line 76

def redundant?
  case field_type
  when :string
    redundant_string?
  when :number
    redundant_number?
  else
    false
  end
end

#register_nameObject



56
57
58
# File 'lib/generators/admin_core/resource_manager_generator.rb', line 56

def register_name
  field_implemented? ? ":#{name}," : "# :#{name},"
end