Module: Refinery::ExtensionGeneration

Included in:
EngineGenerator, FormGenerator
Defined in:
lib/refinery/extension_generation.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
# File 'lib/refinery/extension_generation.rb', line 4

def self.included(base)
  base.class_eval do
    argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"

    class_option :namespace, :type => :string, :default => nil, :banner => 'NAMESPACE', :required => false
    class_option :extension, :type => :string, :default => nil, :banner => 'ENGINE', :required => false
    class_option :i18n, :type => :array, :default => [], :required => false, :banner => "field field", :desc => 'Indicates generated fields'

    remove_class_option :skip_namespace
  end
end

Instance Method Details

#attributes_for_translation_tableObject



59
60
61
# File 'lib/refinery/extension_generation.rb', line 59

def attributes_for_translation_table
  localized_attributes.inject([]) {|memo, attr| memo << ":#{attr.name} => :#{attr.type}"}.join(', ')
end

#extension_class_nameObject



29
30
31
# File 'lib/refinery/extension_generation.rb', line 29

def extension_class_name
  @extension_class_name ||= extension_name.camelize
end

#extension_nameObject



25
26
27
# File 'lib/refinery/extension_generation.rb', line 25

def extension_name
  @extension_name ||= options[:extension].presence || singular_name
end

#extension_plural_class_nameObject



33
34
35
36
37
38
39
40
# File 'lib/refinery/extension_generation.rb', line 33

def extension_plural_class_name
  @extension_plural_class_name ||= if options[:extension].present?
    # Use exactly what the user requested, not a plural version.
    extension_class_name
  else
    extension_class_name.pluralize
  end
end

#extension_plural_nameObject



42
43
44
45
46
47
48
49
# File 'lib/refinery/extension_generation.rb', line 42

def extension_plural_name
  @extension_plural_name ||= if options[:extension].present?
    # Use exactly what the user requested, not a plural version.
    extension_name
  else
    extension_name.pluralize
  end
end

#image_attributesObject



67
68
69
# File 'lib/refinery/extension_generation.rb', line 67

def image_attributes
  @image_attributes ||= attributes.select { |a| a.type == :image }.uniq
end

#localized?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/refinery/extension_generation.rb', line 51

def localized?
  localized_attributes.any?
end

#localized_attributesObject



55
56
57
# File 'lib/refinery/extension_generation.rb', line 55

def localized_attributes
  @localized_attributes ||= attributes.select{|a| options[:i18n].include?(a.name)}
end

#names_for_attr_accessibleObject



75
76
77
78
79
80
81
82
83
84
# File 'lib/refinery/extension_generation.rb', line 75

def names_for_attr_accessible
  @attributes_for_attr_accessible ||= attributes.map do |a|
    case a.type
    when :image, :resource
      "#{a.name}_id" unless a.name[-3..-1] == "_id"
    else
      a.name
    end
  end
end

#namespacingObject



16
17
18
19
20
21
22
23
# File 'lib/refinery/extension_generation.rb', line 16

def namespacing
  @namespacing ||= if options[:namespace].present?
    # Use exactly what the user requested, not a pluralised version.
    options[:namespace].to_s.camelize
  else
    class_name.pluralize
  end
end

#resource_attributesObject



71
72
73
# File 'lib/refinery/extension_generation.rb', line 71

def resource_attributes
  @resource_attributes ||= attributes.select { |a| a.type == :resource }.uniq
end

#string_attributesObject



63
64
65
# File 'lib/refinery/extension_generation.rb', line 63

def string_attributes
  @string_attributes ||= attributes.select {|a| /string|text/ === a.type.to_s}.uniq
end