Class: Releaf::Builders::Utilities::ResolveAttributeFieldMethodName

Inherits:
Object
  • Object
show all
Includes:
Service
Defined in:
app/builders/releaf/builders/utilities/resolve_attribute_field_method_name.rb

Constant Summary collapse

FIELD_TYPE_RESOLVERS =
{
  string: [:image, :file, :password, :email, :link, :text],
  text: [:link, :richtext, :textarea],
  integer: [:item],
  datetime: [],
  date: [],
  time: [],
  float: [],
  decimal: [],
  boolean: [],
}

Instance Method Summary collapse

Instance Method Details

#callObject



19
20
21
# File 'app/builders/releaf/builders/utilities/resolve_attribute_field_method_name.rb', line 19

def call
  "releaf_#{field_type}_field"
end

#column_field_type_resolversObject



35
36
37
# File 'app/builders/releaf/builders/utilities/resolve_attribute_field_method_name.rb', line 35

def column_field_type_resolvers
  FIELD_TYPE_RESOLVERS[column_type]
end

#column_typeObject



27
28
29
# File 'app/builders/releaf/builders/utilities/resolve_attribute_field_method_name.rb', line 27

def column_type
  @column_type ||= columns_class.columns_hash[attribute_name] ? columns_class.columns_hash[attribute_name].type : :string
end

#columns_classObject



31
32
33
# File 'app/builders/releaf/builders/utilities/resolve_attribute_field_method_name.rb', line 31

def columns_class
  object.class
end

#email?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'app/builders/releaf/builders/utilities/resolve_attribute_field_method_name.rb', line 51

def email?
  attribute_name.match(/(_email$|^email$)/).present?
end

#field_typeObject



23
24
25
# File 'app/builders/releaf/builders/utilities/resolve_attribute_field_method_name.rb', line 23

def field_type
  column_field_type_resolvers.find{|resolver_name| send("#{resolver_name}?") == true } || column_type
end

#file?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'app/builders/releaf/builders/utilities/resolve_attribute_field_method_name.rb', line 43

def file?
  attribute_name.match(/_uid$/).present? && object.respond_to?(attribute_name.sub(/_uid$/, ''))
end

#image?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'app/builders/releaf/builders/utilities/resolve_attribute_field_method_name.rb', line 39

def image?
  attribute_name.match(/(thumbnail|image|photo|picture|avatar|logo|banner|icon)_uid$/).present? && file?
end

#item?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'app/builders/releaf/builders/utilities/resolve_attribute_field_method_name.rb', line 71

def item?
  attribute_name.match(/_id$/).present? && object.class.reflect_on_association(attribute_name[0..-4].to_sym).present?
end

#link?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'app/builders/releaf/builders/utilities/resolve_attribute_field_method_name.rb', line 55

def link?
  attribute_name.match(/(_url$|_link$|^url$|^link$)/).present?
end

#password?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'app/builders/releaf/builders/utilities/resolve_attribute_field_method_name.rb', line 47

def password?
  attribute_name.match(/(password|^pin$)/).present?
end

#richtext?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'app/builders/releaf/builders/utilities/resolve_attribute_field_method_name.rb', line 59

def richtext?
  attribute_name.match(/(_html$|^html$)/).present?
end

#text?Boolean

Returns:

  • (Boolean)


67
68
69
# File 'app/builders/releaf/builders/utilities/resolve_attribute_field_method_name.rb', line 67

def text?
  column_type == :string
end

#textarea?Boolean

Returns:

  • (Boolean)


63
64
65
# File 'app/builders/releaf/builders/utilities/resolve_attribute_field_method_name.rb', line 63

def textarea?
  column_type == :text
end