Class: Actions::Helpers::Humanizer
- Inherits:
-
Object
- Object
- Actions::Helpers::Humanizer
show all
- Defined in:
- app/lib/actions/helpers/humanizer.rb
Defined Under Namespace
Classes: ActivationKeyResource, ContentViewResource, ContentViewVersionResource, OrganizationResource, ProductResource, RepositoryResource, Resource, SystemResource, UserResource
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(action) ⇒ Humanizer
Returns a new instance of Humanizer.
4
5
6
7
8
9
10
|
# File 'app/lib/actions/helpers/humanizer.rb', line 4
def initialize(action)
@action = action
@input = action.respond_to?(:task_input) ? action.task_input : action.input
@input ||= {}
@output = action.respond_to?(:task_output) ? action.task_output : action.output
@output ||= {}
end
|
Class Method Details
.default_parts ⇒ Object
20
21
22
|
# File 'app/lib/actions/helpers/humanizer.rb', line 20
def self.default_parts
resource_classes_order.map { |klass| klass.new.name }
end
|
.register_resource(resource_class) ⇒ Object
Registers the resource class to the humanizer. Usually, this happens when the resource class is defined. The order of resources in the humanized input is determined by the registration order. The ‘register_resource` can be run more times for the same class, effectively moving the resource to the end of the humanized form.
29
30
31
32
|
# File 'app/lib/actions/helpers/humanizer.rb', line 29
def self.register_resource(resource_class)
resource_classes_order.delete_if { |klass| klass.name == resource_class.name }
resource_classes_order << resource_class
end
|
.resource(name) ⇒ Object
16
17
18
|
# File 'app/lib/actions/helpers/humanizer.rb', line 16
def self.resource(name)
resource_classes_order.map(&:new).find { |resource| resource.name == name }
end
|
.resource_classes_order ⇒ Object
12
13
14
|
# File 'app/lib/actions/helpers/humanizer.rb', line 12
def self.resource_classes_order
@resource_classes_order ||= []
end
|
Instance Method Details
#humanize_resource(name, data) ⇒ Object
45
46
47
48
49
50
|
# File 'app/lib/actions/helpers/humanizer.rb', line 45
def humanize_resource(name, data)
if (resource = self.class.resource(name))
{ text: "#{resource.humanized_name} '#{resource.humanized_value(data)}'",
link: resource.link(data) }
end
end
|
#included_parts(parts, data) ⇒ Object
41
42
43
|
# File 'app/lib/actions/helpers/humanizer.rb', line 41
def included_parts(parts, data)
parts.select { |part| data.key?(part) }
end
|
34
35
36
37
38
39
|
# File 'app/lib/actions/helpers/humanizer.rb', line 34
def input(*parts)
parts = self.class.default_parts if parts.empty?
included_parts(parts, @input).map do |part|
[part, humanize_resource(part, @input)]
end
end
|