module Bashly::Renderable
def base_views_path
def base_views_path @base_views_path ||= File.expand_path '../views/', __dir__ end
def load_user_file(file, placeholder: true)
Reads a file from the userspace (Settings.source_dir) and returns
def load_user_file(file, placeholder: true) path = user_file_path file content = if File.exist? path File.read(path).remove_front_matter elsif placeholder 'echo "error: cannot load file"' else '' end Settings.enabled?(:view_markers) ? "#{view_marker path}\n#{content}" : content end
def render(view, render_options = {})
def render(view, render_options = {}) @render_options = render_options GTX.render_file view_path(view), context: binding, filename: "#{views_subfolder}.#{view}" end
def self_views_path
def self_views_path @self_views_path ||= "#{base_views_path}/#{views_subfolder}" end
def strings
def strings @strings ||= MessageStrings.new end
def user_file_exist?(file)
def user_file_exist?(file) File.exist? user_file_path(file) end
def user_file_path(file)
should either be without exteneion, or with the user's configured
Returns a path to a file in the user's source_dir. The file argument
def user_file_path(file) path = "#{Settings.source_dir}/#{file}" ext = ".#{Settings.partials_extension}" return path if path.end_with? ext "#{path}#{ext}" end
def view_marker(id = nil)
def view_marker(id = nil) id ||= ":#{caller_locations(1..1).first.path}" "# #{id}" if Settings.enabled? :view_markers end
def view_path(view)
def view_path(view) "#{self_views_path}/#{view}.gtx" end
def views_subfolder
def views_subfolder @views_subfolder ||= self.class.name.split('::').last.to_underscore end