Module: Refinery::ExtensionGeneration

Included in:
EngineGenerator
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
15
16
# 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 :authors, :type => :array, :default => [], :banner => 'author author', :required => false, :desc => 'Indicates authors of this extension'
    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'
    class_option :install, :type => :boolean, :default => false, :required => false, :banner => nil, :desc => 'Bundles and runs the generated generator, rake db:migrate, rake db:seed for you'

    remove_class_option :skip_namespace
  end
end

Instance Method Details

#attributes_for_translation_tableObject



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

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

#extension_authorsObject



37
38
39
# File 'lib/refinery/extension_generation.rb', line 37

def extension_authors
  @extension_authors ||= options[:authors].presence
end

#extension_class_nameObject



41
42
43
# File 'lib/refinery/extension_generation.rb', line 41

def extension_class_name
  @extension_class_name ||= extension_name.camelize
end

#extension_nameObject



33
34
35
# File 'lib/refinery/extension_generation.rb', line 33

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

#extension_plural_class_nameObject



45
46
47
48
49
50
51
52
# File 'lib/refinery/extension_generation.rb', line 45

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



54
55
56
57
58
59
60
61
# File 'lib/refinery/extension_generation.rb', line 54

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



79
80
81
# File 'lib/refinery/extension_generation.rb', line 79

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

#localized?Boolean

Returns:

  • (Boolean)


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

def localized?
  localized_attributes.any?
end

#localized_attributesObject



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

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

#namespacingObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/refinery/extension_generation.rb', line 18

def namespacing
  @namespacing ||= if options[:namespace].present?
    # Use exactly what the user requested, not a pluralised version.
    options[:namespace].to_s.camelize
  else
    # If the user has passed an engine, we want to generate it inside of
    # that extension.
    if options[:extension].present?
      options[:extension].to_s.camelize
    else
      class_name.pluralize
    end
  end
end

#resource_attributesObject



83
84
85
# File 'lib/refinery/extension_generation.rb', line 83

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

#string_attributesObject



75
76
77
# File 'lib/refinery/extension_generation.rb', line 75

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