class BrainDamage::View::Base::Base

Attributes

file_name[R]

Public Class Methods

has_template?(name) click to toggle source
# File lib/generators/brain_damage/lib/views/schemas/base/base.rb, line 63
def self.has_template?(name)
  File.exists? File.join(dir, 'templates', "#{name.to_s.gsub('.html.haml', '')}.html.haml")
end
new(resource, options = {}) click to toggle source
Calls superclass method BrainDamage::Templateable::Base::new
# File lib/generators/brain_damage/lib/views/schemas/base/base.rb, line 11
def initialize(resource, options = {})
  set_file_and_template_names(options)
  @schema = options[:schema]
  super resource, options
end

Private Class Methods

dir() click to toggle source
# File lib/generators/brain_damage/lib/views/schemas/base/base.rb, line 76
def self.dir
  __dir__
end

Public Instance Methods

fields(only: nil, except: nil) click to toggle source
# File lib/generators/brain_damage/lib/views/schemas/base/base.rb, line 55
def fields(only: nil, except: nil)
  @resource.fields
end
infer_file_name() click to toggle source
# File lib/generators/brain_damage/lib/views/schemas/base/base.rb, line 59
def infer_file_name
  "#{self.class.name.split('::')[3..-1].map(&:underscore).join('/')}.html.haml"
end
is_partial_file_name?(file_name) click to toggle source
# File lib/generators/brain_damage/lib/views/schemas/base/base.rb, line 41
def is_partial_file_name?(file_name)
  file_name.split('/').last[0] == '_'
end
method_missing(method, *args, &block) click to toggle source
# File lib/generators/brain_damage/lib/views/schemas/base/base.rb, line 67
def method_missing(method, *args, &block)
  if @schema and @schema.respond_to? method
    @schema.send method, *args, &block
  else
    super
  end
end
partialize_file_name(file_name) click to toggle source
# File lib/generators/brain_damage/lib/views/schemas/base/base.rb, line 45
def partialize_file_name(file_name)
  parts = file_name.split '/'

  if parts.length == 1
    "_#{parts.first.gsub('^_*', '')}"
  else
    (parts[0...-1] + ["_#{parts.last.gsub('^_', '')}"]).join '/'
  end
end
set_file_and_template_names(options) click to toggle source
# File lib/generators/brain_damage/lib/views/schemas/base/base.rb, line 17
def set_file_and_template_names(options)
  @file_name ||= options[:file_name]
  @template_file ||= options[:template_name]

  unless @template_file
    @template_file = infer_file_name

    unless self.class.has_template? @template_file or Pathname.new(@template_file).absolute?
      partial_version = partialize_file_name @template_file
      if self.class.has_template? partial_version
        @template_file = partial_version
      end
    end
  end

  unless @file_name
    @file_name = infer_file_name

    if is_partial_file_name? @template_file
      @file_name = partialize_file_name @file_name
    end
  end
end

Private Instance Methods

dir() click to toggle source
# File lib/generators/brain_damage/lib/views/schemas/base/base.rb, line 80
def dir
  __dir__
end