Sha256: 70dcec4dc118b0c3ca1035c8320c2c084e86b748eef80371a4db9db5d1a4a178
Contents?: true
Size: 1.64 KB
Versions: 4
Compression:
Stored size: 1.64 KB
Contents
class BlockService def self.block_names(path:) form_views(path: path).map do |view| view_name(view) end end def self.form_view(name, path:) view_by_name(name, form_view_paths(path)) end def self.frontend_view(name, path:) view_by_name(name, frontend_view_paths(path)) end def self.frontend_views(path:) views(frontend_view_paths(path)) end def self.form_views(path:) views(form_view_paths(path)) end def self.view_name(view) filename = File.basename(view, '.html.erb') # Removes leading _ if exists filename.sub(/^_/, '') end private # Looks for a block view by its name. # # It will first search in a specified path and will fallback to the default path # An exception will be raised if the view is nowhere to be found def self.view_by_name(name, paths) views = views(paths) view = views.find { |view| view.include?("/_#{name}.html.erb") } unless view prefixes = paths.map { |path| path.split('app/views/').last } raise ActionView::MissingTemplate.new(paths, name, prefixes, true, "headmin") unless view end view end def self.form_view_paths(path) [app_view_path(path), app_view_path('admin/blocks')].uniq end def self.frontend_view_paths(path) [app_view_path(path), app_view_path('website/blocks')].uniq end def self.app_view_path(path) base_path = 'app/views' [base_path, path].join('/') end def self.views(paths) paths.map { |path| views_in_path(path) }.flatten end def self.views_in_path(path) files = Dir.glob("#{path}/*") files.map do |file| file.split('app/views/').last end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
headmin-0.2.9 | app/services/block_service.rb |
headmin-0.2.8 | app/services/block_service.rb |
headmin-0.2.7 | app/services/block_service.rb |
headmin-0.2.6 | app/services/block_service.rb |