Skip to content

Latest commit

 

History

History
87 lines (72 loc) · 1.92 KB

DESIGN.md

File metadata and controls

87 lines (72 loc) · 1.92 KB

PathResolver (Rails Specific)

Status: Implemented

Resolves the full path for views/partials. Might want to give it a RequestHandler.

Basic Syntax

dtp = PathResolver.new(template_context)
dtp.path_for('')

TemplateContext

controller:string
action:string
type: :view, :controller

Examples

For the Foo controller inside of the view

dtp = PathResolver.new(controller: Foo, action: :index, type: :view)
dtp.path_for('table') == foo/_table
dtp.path_for('shared/dialogs/bar') == shared/dialogs/bar (Or should it also search foo/shared/..?)
dtp.path_for('') == InvalidPath_forException

For the Foo controler inside of the controller

dtp = PathResolver.new(controller: Foo, action: :index, type: :controller)
dtp.path_for('') == foo/index
dtp.path_for('bar') == foo/bar

ViewRenderer (Rails Specific)

Status: Implemented

Interfaces between the rails renderer and rest of code.

Basic Syntax

vr = ViewRenderer.new
# Render a specific partial (just placeholder likely)
vr.render_partial(full_partial_path)
# Render a full view
vr.render_view(full_view_path)
# Render a full view and extract a single fragment
vr.render_fragment(full_view_path, fragment_name)

RequestHandler (Rack Specific)

Status: Implemented

Parses the request object to determine if this is the main load of the app and if not, what partial view is being requested

Basic Syntax

rh = RequestHandler.new(request)
rh.main_load?
rh.fragment_name
rh.load_path(fragment_name)
rh.should_render_partial?(fragment_name)

Rails Engine

Status: Implemented

Installs the view/controller renderer into ActionView/ActionController

Basic Syntax

class Engine < ::Rails::Engine
  # .. installation code ..
end

Structure

lib/
  progressive_render.rb
  rails/
    rails.rb
    engine.rb
    builder.rb
    view_renderer.rb
    path_resolver.rb
  rack/
    request_handler.rb