Class: CMSScanner::Formatter::Base
- Inherits:
-
Object
- Object
- CMSScanner::Formatter::Base
- Defined in:
- lib/cms_scanner/formatter.rb
Overview
Base Formatter
Instance Attribute Summary collapse
-
#controller_name ⇒ Object
readonly
Returns the value of attribute controller_name.
Instance Method Summary collapse
-
#base_format ⇒ String
The underscored format to use as a base.
-
#beautify ⇒ Object
This is called after the scan and used in some formatters (e.g JSON) to indent results.
-
#format ⇒ String
The underscored name of the class.
- #formats ⇒ Array<String>
-
#initialize ⇒ Base
constructor
A new instance of Base.
- #output(tpl, vars = {}, controller_name = nil) ⇒ Object
- #render(tpl, vars = {}, controller_name = nil) ⇒ Object
- #template_vars(vars) ⇒ Void
- #user_interaction? ⇒ Boolean
-
#view_path(tpl) ⇒ String
The path of the view.
-
#views_directories ⇒ Array<String>
The directories to look into for views.
Constructor Details
Instance Attribute Details
#controller_name ⇒ Object (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_format ⇒ String
Returns The underscored format to use as a base.
67 |
# File 'lib/cms_scanner/formatter.rb', line 67 def base_format; end |
#beautify ⇒ Object
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 |
#format ⇒ String
Returns 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 |
#formats ⇒ 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
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
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
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
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.
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_directories ⇒ Array<String>
Returns 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 |