class SliceGenerator

Constants

FIELD_NORMALIZATIONS

Public Instance Methods

create_set_files() click to toggle source
# File lib/generators/slice/slice_generator.rb, line 51
def create_set_files
  if set_slice?
    template "page.rb", "#{slice_path}/#{page_name}.rb"
    template "presenter.rb", "#{slice_path}/#{page_name}_presenter.rb"
  end
end
create_slices() click to toggle source
# File lib/generators/slice/slice_generator.rb, line 20
def create_slices
  if set_slice?
    template "set_slice.rb", "#{slice_path}/#{file_name}_slice.rb"
  else
    template "slice.rb", "#{slice_path}/#{file_name}_slice.rb"
  end
end
create_templates() click to toggle source
# File lib/generators/slice/slice_generator.rb, line 36
def create_templates
  if set_slice?
    template "set_slice_fields.hbs", "#{slice_path}/templates/#{file_name}.hbs"
  else
    template "slice_fields.hbs", "#{slice_path}/templates/#{file_name}.hbs"
  end

  base = set_slice? ? page_name : file_name

  if options.with_entry_templates?
    template "main_fields.hbs", "#{slice_path}/templates/#{base}_main.hbs"
    template "meta_fields.hbs", "#{slice_path}/templates/#{base}_meta.hbs"
  end
end
create_views() click to toggle source
# File lib/generators/slice/slice_generator.rb, line 28
def create_views
  if set_slice?
    template "set.html.erb", "#{slice_path}/views/set.html.erb"
  else
    template "show.html.erb", "#{slice_path}/views/show.html.erb"
  end
end

Private Instance Methods

class_for_field(type) click to toggle source
# File lib/generators/slice/slice_generator.rb, line 119
def class_for_field type
  FIELD_NORMALIZATIONS.fetch(type, type).to_s.classify
end
field_definitions() click to toggle source
# File lib/generators/slice/slice_generator.rb, line 77
def field_definitions
  out = []

  if attributes.any? { |attribute| attribute.type == :attachments }
    out << "  include Slices::HasAttachments\n"
  end

  attributes.each do |attribute|
    case attribute.type
    when :attachments
      attachment_klass = attribute.name.classify
      out << [
        "",
        "  class #{attachment_klass} < Attachment",
        "    # Extend your attachments by adding fields here e.g.",
        "    field :caption",
        "  end",
        "  has_attachments :#{attribute.name}, class_name: '#{class_name}Slice::#{attachment_klass}'",
        ""
      ].join("\n")
    else
      out << "  field :#{attribute.name}, type: #{class_for_field attribute.type}"
    end
  end

  out.join "\n"
end
form_slice?() click to toggle source
# File lib/generators/slice/slice_generator.rb, line 73
def form_slice?
  file_name.ends_with? '_form'
end
label_if_needed_for(attribute) click to toggle source
# File lib/generators/slice/slice_generator.rb, line 113
def label_if_needed_for attribute
  unless attribute.name == file_name
    %{<label for="slices-{{id}}-#{attribute.name}">#{attribute.name.humanize}</label>}
  end
end
needs_label?(attribute) click to toggle source
# File lib/generators/slice/slice_generator.rb, line 109
def needs_label? attribute
  attribute.name.underscore == class_name.underscore
end
page_name() click to toggle source
# File lib/generators/slice/slice_generator.rb, line 65
def page_name
  file_name.sub /_set$/, ''
end
set_slice?() click to toggle source
# File lib/generators/slice/slice_generator.rb, line 69
def set_slice?
  file_name.ends_with? '_set'
end
slice_input_id(name) click to toggle source
# File lib/generators/slice/slice_generator.rb, line 105
def slice_input_id name
  "slices-{{id}}-#{name}"
end
slice_path() click to toggle source
# File lib/generators/slice/slice_generator.rb, line 61
def slice_path
  "app/slices/#{file_name}"
end