Module: KnuVerse::Knufactor::Helpers::ResourceClass

Included in:
Resource
Defined in:
lib/knuverse/knufactor/helpers/resource_class.rb

Overview

Simple helper class methods for Resource

Instance Method Summary collapse

Instance Method Details

#determine_getter_names(original_name, opts) ⇒ Array<Symbol>

Determine a list of names to use to access a resource entity attribute

Parameters:

Returns:

  • (Array<Symbol>)

    the list of names



10
11
12
13
14
15
16
17
18
19
# File 'lib/knuverse/knufactor/helpers/resource_class.rb', line 10

def determine_getter_names(original_name, opts)
  names = []
  names << (opts[:type] == :boolean ? "#{original_name}?" : original_name)
  if opts[:as]
    Array(opts[:as]).each do |new_name|
      names << (opts[:type] == :boolean ? "#{new_name}?" : new_name)
    end
  end
  names.map(&:to_sym).uniq
end

#determine_setter_names(original_name, opts) ⇒ Array<Symbol>

Determine a list of names to use to set a resource entity attribute

Parameters:

Returns:

  • (Array<Symbol>)

    the list of names



25
26
27
28
29
# File 'lib/knuverse/knufactor/helpers/resource_class.rb', line 25

def determine_setter_names(original_name, opts)
  names = ["#{original_name}="]
  names.concat Array(opts[:as]).map { |new_name| "#{new_name}=" } if opts[:as]
  names.map(&:to_sym).uniq
end

#humanString

Note:

ActiveRecord ActiveModel::Name compatibility method

Produce a more human-readable representation of #i18n_key

Returns:

  • (String)


34
35
36
# File 'lib/knuverse/knufactor/helpers/resource_class.rb', line 34

def human
  i18n_key.humanize
end

#i18n_keyString Also known as: singular_route_key

Note:

ActiveRecord ActiveModel::Name compatibility method

A mock internationalization key based on the class name

Returns:

  • (String)


46
47
48
# File 'lib/knuverse/knufactor/helpers/resource_class.rb', line 46

def i18n_key
  name.split('::').last.to_underscore
end

#immutable?Boolean

Check if a resource class is immutable

Returns:

  • (Boolean)


39
40
41
# File 'lib/knuverse/knufactor/helpers/resource_class.rb', line 39

def immutable?
  @immutable ||= false
end

#param_keySymbol

Note:

ActiveRecord ActiveModel::Name compatibility method

A symbolized version of #i18n_key

Returns:

  • (Symbol)


55
56
57
# File 'lib/knuverse/knufactor/helpers/resource_class.rb', line 55

def param_key
  i18n_key.to_sym
end

#propertiesHash{Symbol => Hash}

All the properties defined for this Resource class

Returns:

  • (Hash{Symbol => Hash})


61
62
63
# File 'lib/knuverse/knufactor/helpers/resource_class.rb', line 61

def properties
  @properties ||= {}
end

#route_keyString

Note:

ActiveRecord ActiveModel::Name compatibility method

A route key for building URLs

Returns:

  • (String)


68
69
70
# File 'lib/knuverse/knufactor/helpers/resource_class.rb', line 68

def route_key
  i18n_key.en.plural
end