Class: CMSScanner::Formatter::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/cms_scanner/formatter.rb

Overview

Base Formatter

Direct Known Subclasses

Cli, Json

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeBase

Returns a new instance of Base.



52
53
54
# File 'lib/cms_scanner/formatter.rb', line 52

def initialize
  extend NS::Formatter::InstanceMethods
end

Instance Attribute Details

#controller_nameObject (readonly)

Returns the value of attribute controller_name.



50
51
52
# File 'lib/cms_scanner/formatter.rb', line 50

def controller_name
  @controller_name
end

Instance Method Details

#base_formatString

Returns The underscored format to use as a base.

Returns:

  • (String)

    The underscored format to use as a base



67
# File 'lib/cms_scanner/formatter.rb', line 67

def base_format; end

#beautifyObject

This is called after the scan and used in some formatters (e.g JSON) to indent results



77
# File 'lib/cms_scanner/formatter.rb', line 77

def beautify; end

#formatString

Returns The underscored name of the class.

Returns:

  • (String)

    The underscored name of the class



57
58
59
# File 'lib/cms_scanner/formatter.rb', line 57

def format
  self.class.name.demodulize.underscore
end

#formatsArray<String>

Returns:

  • (Array<String>)


70
71
72
# File 'lib/cms_scanner/formatter.rb', line 70

def formats
  [format, base_format].compact
end

#output(tpl, vars = {}, controller_name = nil) ⇒ Object

See Also:



80
81
82
# File 'lib/cms_scanner/formatter.rb', line 80

def output(tpl, vars = {}, controller_name = nil)
  puts render(tpl, vars, controller_name)
end

#render(tpl, vars = {}, controller_name = nil) ⇒ Object

Parameters:

  • tpl (String)
  • vars (Hash) (defaults to: {})
  • controller_name (String) (defaults to: nil)


87
88
89
90
91
92
93
94
# File 'lib/cms_scanner/formatter.rb', line 87

def render(tpl, vars = {}, controller_name = nil)
  template_vars(vars)
  @controller_name = controller_name if controller_name

  # '-' is used to disable new lines when -%> is used
  # See http://www.ruby-doc.org/stdlib-2.1.1/libdoc/erb/rdoc/ERB.html
  ERB.new(File.read(view_path(tpl)), nil, '-').result(binding)
end

#template_vars(vars) ⇒ Void

Parameters:

  • vars (Hash)

Returns:

  • (Void)


99
100
101
102
103
# File 'lib/cms_scanner/formatter.rb', line 99

def template_vars(vars)
  vars.each do |key, value|
    instance_variable_set("@#{key}", value) unless key == :views_directories
  end
end

#user_interaction?Boolean

Returns:

  • (Boolean)


62
63
64
# File 'lib/cms_scanner/formatter.rb', line 62

def user_interaction?
  format == 'cli'
end

#view_path(tpl) ⇒ String

Returns The path of the view.

Parameters:

  • tpl (String)

Returns:

  • (String)

    The path of the view



108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# File 'lib/cms_scanner/formatter.rb', line 108

def view_path(tpl)
  if tpl[0, 1] == '@' # Global Template
    tpl = tpl.delete('@')
  else
    fail 'The controller_name can not be nil' unless controller_name
    tpl = "#{controller_name}/#{tpl}"
  end

  fail "Wrong tpl format: '#{tpl}'" unless tpl =~ %r{\A[\w/_]+\z}

  views_directories.reverse_each do |dir|
    formats.each do |format|
      potential_file = File.join(dir, format, "#{tpl}.erb")

      return potential_file if File.exist?(potential_file)
    end
  end

  fail "View not found for #{format}/#{tpl}"
end

#views_directoriesArray<String>

Returns The directories to look into for views.

Returns:

  • (Array<String>)

    The directories to look into for views



130
131
132
# File 'lib/cms_scanner/formatter.rb', line 130

def views_directories
  @views_directories ||= [Pathname.new(APP_DIR).join('views').to_s]
end