Sha256: c02908e1f670e5805f9f5273526ea017269390b03a4f83f2053e62c73c23bbeb
Contents?: true
Size: 1.59 KB
Versions: 1
Compression:
Stored size: 1.59 KB
Contents
module Locomotive::Steam class Server # Sanitize the path from the previous middleware in order # to make it work for the renderer. # class Page < Middleware def call(env) self.set_accessors(env) self.set_page!(env) app.call(env) end protected def set_page!(env) page = self.fetch_page if page self.log "Found page \"#{page.title}\" [#{page.safe_fullpath}]" end env['steam.page'] = page end def fetch_page matchers = self.path_combinations(self.path) pages = self.mounting_point.pages.values.find_all do |_page| matchers.include?(_page.safe_fullpath) || matchers.include?(_page.safe_fullpath.try(:underscore)) end.sort_by { |p| p.position || Float::INFINITY } if pages.size > 1 self.log "Found multiple pages: #{pages.collect(&:title).join(', ')}" end pages.first end def path_combinations(path) self._path_combinations(path.split('/')) end def _path_combinations(segments, can_include_template = true) return nil if segments.empty? segment = segments.shift (can_include_template ? [segment, '*'] : [segment]).map do |_segment| if (_combinations = _path_combinations(segments.clone, can_include_template && _segment != '*')) [*_combinations].map do |_combination| File.join(_segment, _combination) end else [_segment] end end.flatten end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
locomotivecms_steam-0.1.0 | lib/locomotive/steam/server/page.rb |