Module: Refinery::ExtensionGeneration

Included in:
EngineGenerator
Defined in:
core/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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'core/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: '',
                 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: '',
                 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



108
109
110
# File 'core/lib/refinery/extension_generation.rb', line 108

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

#extension_authorsObject



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

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

#extension_class_nameObject



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

def extension_class_name
  @extension_class_name ||= extension_name.camelize
end

#extension_nameObject



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

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

#extension_plural_class_nameObject



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

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



84
85
86
87
88
89
90
91
# File 'core/lib/refinery/extension_generation.rb', line 84

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



116
117
118
# File 'core/lib/refinery/extension_generation.rb', line 116

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

#localized?Boolean

Returns:

  • (Boolean)


93
94
95
# File 'core/lib/refinery/extension_generation.rb', line 93

def localized?
  localized_attributes.any?
end

#localized_attributesObject



97
98
99
# File 'core/lib/refinery/extension_generation.rb', line 97

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

#localized_table_nameObject



101
102
103
104
105
106
# File 'core/lib/refinery/extension_generation.rb', line 101

def localized_table_name
  localized_table_name = [ 'refinery']
  localized_table_name << namespacing.underscore if table_name != namespacing.underscore.pluralize
  localized_table_name << [ singular_table_name, 'translations']
  localized_table_name.join('_')
end

#namespacingObject



48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'core/lib/refinery/extension_generation.rb', line 48

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



120
121
122
# File 'core/lib/refinery/extension_generation.rb', line 120

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

#string_attributesObject



112
113
114
# File 'core/lib/refinery/extension_generation.rb', line 112

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