From 2bbf9950645ba25f94baedf7bb6921d814e699b8 Mon Sep 17 00:00:00 2001 From: Sebastian Sastre Date: Wed, 24 Jan 2024 18:24:51 -0300 Subject: [PATCH] adjustments in the rendering API --- .../RideAppHomePresenterClassHelper.class.st | 2 +- Ride-Builder/RideCRUDHelper.class.st | 8 +- Ride-Builder/RidePresenterHelper.class.st | 2 +- Ride-Builder/RideSTTemplateHelper.class.st | 14 ++-- Ride/RideMustacheRenderer.class.st | 52 ++++++------ Ride/RidePresenter.class.st | 79 +++++++++++++------ Ride/RideProgrammaticRenderer.class.st | 2 +- Ride/RideRenderer.class.st | 2 +- Ride/RideSTTemplateRenderer.class.st | 28 +++---- Ride/RideTemplateBasedRenderer.class.st | 2 +- 10 files changed, 110 insertions(+), 81 deletions(-) diff --git a/Ride-Builder/RideAppHomePresenterClassHelper.class.st b/Ride-Builder/RideAppHomePresenterClassHelper.class.st index f3cc053..91bfc64 100644 --- a/Ride-Builder/RideAppHomePresenterClassHelper.class.st +++ b/Ride-Builder/RideAppHomePresenterClassHelper.class.st @@ -18,7 +18,7 @@ RideAppHomePresenterClassHelper class >> indexMethodFor: aSymbol [ ^ 'index - ^ self render: ''index.html'' + ^ self render ' format: { aSymbol } ] diff --git a/Ride-Builder/RideCRUDHelper.class.st b/Ride-Builder/RideCRUDHelper.class.st index 5b4ddc5..b30e36d 100644 --- a/Ride-Builder/RideCRUDHelper.class.st +++ b/Ride-Builder/RideCRUDHelper.class.st @@ -55,7 +55,7 @@ RideCRUDHelper class >> editMethodFor: aSymbol [ model ifNil: [ model := {1} findId: (self currentRequest uri segments reversed second) ]. - ^ self render: ''edit.html'' + ^ self renderUsing: ''edit.html'' ' format: { aSymbol. aSymbol asLowercase asPlural asSnakeCase } @@ -70,7 +70,7 @@ RideCRUDHelper class >> indexMethodFor: aSymbol [ model := self {3}. - ^ self render: ''index.html'' + ^ self render ' format: { aSymbol. @@ -87,7 +87,7 @@ RideCRUDHelper class >> newModelMethodFor: aSymbol [ model := {1} new. - ^ self render: ''new.html'' + ^ self renderUsing: ''new.html'' ' format: { aSymbol. aSymbol asLowercase asPlural asSnakeCase } @@ -103,7 +103,7 @@ RideCRUDHelper class >> showMethodFor: aSymbol [ model ifNil: [ model := {1} findId: (self currentRequest uri segments last) ]. - ^ self render: ''show.html'' + ^ self renderUsing: ''show.html'' ' format: { aSymbol. aSymbol asLowercase asPlural asSnakeCase } diff --git a/Ride-Builder/RidePresenterHelper.class.st b/Ride-Builder/RidePresenterHelper.class.st index ae48228..f21dcbb 100644 --- a/Ride-Builder/RidePresenterHelper.class.st +++ b/Ride-Builder/RidePresenterHelper.class.st @@ -12,7 +12,7 @@ RidePresenterHelper class >> indexMethodFor: aSymbol [ ^ 'index - ^ self render: ''index.html'' + ^ self render ' format: { aSymbol } ] diff --git a/Ride-Builder/RideSTTemplateHelper.class.st b/Ride-Builder/RideSTTemplateHelper.class.st index c1c7a30..15211d3 100644 --- a/Ride-Builder/RideSTTemplateHelper.class.st +++ b/Ride-Builder/RideSTTemplateHelper.class.st @@ -19,17 +19,17 @@ RideSTTemplateHelper class >> defaultViewTemplate [ RideSTTemplateHelper class >> defaultViewTemplateWithJs [ ^ self defaultViewTemplate - , '' + , '' ] { #category : #accessing } RideSTTemplateHelper class >> editContentFor: aSymbol [ - ^ ' + ^ '

Editing {3}

- +
Show this {3} Back to {2} @@ -60,7 +60,7 @@ RideSTTemplateHelper class >> formContentFor: aSymbol [ { #category : #accessing } RideSTTemplateHelper class >> indexContentFor: aSymbol [ - ^ ' + ^ '

{1}

@@ -95,11 +95,11 @@ RideSTTemplateHelper class >> indexContentFor: aSymbol [ { #category : #accessing } RideSTTemplateHelper class >> newContentFor: aSymbol [ - ^ ' + ^ '

New {3}

- +
Back to {2}
@@ -113,7 +113,7 @@ RideSTTemplateHelper class >> newContentFor: aSymbol [ { #category : #accessing } RideSTTemplateHelper class >> showContentFor: aSymbol [ - ^ ' + ^ '

{1}

diff --git a/Ride/RideMustacheRenderer.class.st b/Ride/RideMustacheRenderer.class.st index e8ef956..87130c9 100644 --- a/Ride/RideMustacheRenderer.class.st +++ b/Ride/RideMustacheRenderer.class.st @@ -46,7 +46,20 @@ RideMustacheRenderer >> newTemplateFrom: file [ ] { #category : #rendering } -RideMustacheRenderer >> render: aTemplateName as: aPartialName inLayout: aLayoutNameOrNil on: aTemplateContext for: aRidePresenter [ +RideMustacheRenderer >> render: aTemplateName in: aLayoutNameOrNil for: aRidePresenter [ + + "Render the template found with aTemplateName embedded + in the layout at aLayoutNameOrNil for aRidePresenter." + + ^ self + render: aRidePresenter mustacheTemplateModel + using: aTemplateName + in: aLayoutNameOrNil + for: aRidePresenter +] + +{ #category : #rendering } +RideMustacheRenderer >> render: aTemplateContext using: aTemplateName as: aPartialName in: aLayoutNameOrNil for: aRidePresenter [ | templateViews yieldTarget templateToRender | templateViews := (self getTemplatesFor: aRidePresenter) copy. @@ -73,31 +86,22 @@ RideMustacheRenderer >> render: aTemplateName as: aPartialName inLayout: aLayout ] { #category : #rendering } -RideMustacheRenderer >> render: aTemplateName for: aRidePresenter [ - - "Render the template found with aTemplateName for aRidePresenter." - - ^ self - render: aTemplateName - with: aRidePresenter mustacheTemplateModel - for: aRidePresenter -] - -{ #category : #rendering } -RideMustacheRenderer >> render: aTemplateName inLayout: aLayoutNameOrNil for: aRidePresenter [ +RideMustacheRenderer >> render: aMustacheContext using: aTemplateName for: aRidePresenter [ - "Render the template found with aTemplateName embedded - in the layout at aLayoutNameOrNil for aRidePresenter." + | layoutNameOrNil | + layoutNameOrNil := isLayoutWrapper ifTrue: [ + aRidePresenter class layoutName ]. ^ self render: aTemplateName - inLayout: aLayoutNameOrNil - on: aRidePresenter mustacheTemplateModel + using: aRidePresenter class partialYieldTargetName + as: layoutNameOrNil + in: aMustacheContext for: aRidePresenter ] { #category : #rendering } -RideMustacheRenderer >> render: aTemplateName inLayout: aLayoutNameOrNil on: aTemplateContext for: aRidePresenter [ +RideMustacheRenderer >> render: aTemplateContext using: aTemplateName in: aLayoutNameOrNil for: aRidePresenter [ "Render the template found with aTemplateName embedded in the layout at aLayoutNameOrNil for aRidePresenter." @@ -127,16 +131,12 @@ RideMustacheRenderer >> render: aTemplateName inLayout: aLayoutNameOrNil on: aTe ] { #category : #rendering } -RideMustacheRenderer >> render: aTemplateName with: aMustacheContext for: aRidePresenter [ +RideMustacheRenderer >> renderUsing: aTemplateName for: aRidePresenter [ - | layoutNameOrNil | - layoutNameOrNil := isLayoutWrapper ifTrue: [ - aRidePresenter class layoutName ]. + "Render the template found with aTemplateName for aRidePresenter." ^ self - render: aTemplateName - as: aRidePresenter class partialYieldTargetName - inLayout: layoutNameOrNil - on: aMustacheContext + render: aRidePresenter mustacheTemplateModel + using: aTemplateName for: aRidePresenter ] diff --git a/Ride/RidePresenter.class.st b/Ride/RidePresenter.class.st index 990362e..b2d45a0 100644 --- a/Ride/RidePresenter.class.st +++ b/Ride/RidePresenter.class.st @@ -18,7 +18,7 @@ Class { #instVars : [ 'model', 'subpresenters', - 'canvas' + 'renderer' ], #category : #'Ride-Presenters' } @@ -82,6 +82,14 @@ RidePresenter class >> getNormalizedModelNameForURLs [ ^ self getKebabizedModelName asSnakeCase ] +{ #category : #accessing } +RidePresenter class >> getRenderSelector [ + + "Answer the selector that detemines the rendered aspect defined for the receiver." + + ^ 'index.html' +] + { #category : #accessing } RidePresenter class >> getSnakeCasedModelName [ @@ -118,18 +126,6 @@ RidePresenter class >> partialYieldTargetName [ ^ #yield ] -{ #category : #accessing } -RidePresenter >> canvas [ - - ^ canvas -] - -{ #category : #accessing } -RidePresenter >> canvas: anObject [ - - canvas := anObject -] - { #category : #accessing } RidePresenter >> children [ @@ -160,6 +156,14 @@ RidePresenter >> getRenderContext [ ^ self ] +{ #category : #accessing } +RidePresenter >> getRenderSelector [ + + "Answer the selector that detemines the rendered aspect defined for the receiver." + + ^ self class getRenderSelector +] + { #category : #accessing } RidePresenter >> getRenderer [ @@ -172,11 +176,12 @@ RidePresenter >> getRenderer [ { #category : #actions } RidePresenter >> index [ - "Returns the rendered representation of the receiver in its main entry point. - For example, for an HTML representation what would be in it as index.html + "Returns the default rendered representation of the receiver in its main entry point. + For example, for an HTML representation what would be this + presenter rendered as intended by its corresponding index.html and for an JSON representation what would be in it as index.json" - ^ self render: #index + ^ self render ] { #category : #initialization } @@ -184,7 +189,7 @@ RidePresenter >> initialize [ super initialize. subpresenters := JsonObject new. - canvas := self getRenderer + renderer := self getRenderer ] { #category : #accessing } @@ -254,22 +259,23 @@ RidePresenter >> onBeforeAction [ { #category : #rendering } RidePresenter >> render [ - ^ self render: 'index.html' on: self getRenderContext + ^ self render: self getRenderContext ] { #category : #rendering } -RidePresenter >> render: aSelector [ +RidePresenter >> render: aRenderContext [ - ^ self render: aSelector on: self getRenderContext + ^ self render: aRenderContext using: aRenderContext getRenderSelector ] { #category : #rendering } RidePresenter >> render: aSelector inLayout: aLayoutNameOrNil on: aRenderContext [ - ^ canvas + self deprecated: 'use render:using:in:'. + ^ renderer render: aSelector - inLayout: aLayoutNameOrNil - on: aRenderContext + using: aLayoutNameOrNil + in: aRenderContext for: self ] @@ -278,19 +284,36 @@ RidePresenter >> render: aSelector model: aRideModel [ "Render the given model using aSelector to decide how it should be rendered." - self halt. - ^ canvas render: aSelector model: aRideModel for: self + self deprecated: 'use render:using:'. + ^ renderer render: aSelector model: aRideModel for: self ] { #category : #rendering } RidePresenter >> render: aSelector on: aRenderContext [ + self deprecated: 'use render:in:'. ^ self render: aSelector inLayout: self getLayoutName on: aRenderContext ] +{ #category : #rendering } +RidePresenter >> render: aRenderContext using: aSelector [ + + ^ self render: aRenderContext using: aSelector in: nil +] + +{ #category : #rendering } +RidePresenter >> render: aRenderContext using: aSelector in: aLayoutNameOrNil [ + + ^ renderer + render: aRenderContext + using: aSelector + in: aLayoutNameOrNil + for: self +] + { #category : #rendering } RidePresenter >> renderModel: aRideModel [ @@ -301,6 +324,12 @@ RidePresenter >> renderModel: aRideModel [ ^ self render: aRideModel getDefaultRenderSelector model: aRideModel ] +{ #category : #rendering } +RidePresenter >> renderUsing: aSelector [ + + ^ self render: self getRenderContext using: aSelector +] + { #category : #actions } RidePresenter >> resetSession [ diff --git a/Ride/RideProgrammaticRenderer.class.st b/Ride/RideProgrammaticRenderer.class.st index 9c26a36..96b997e 100644 --- a/Ride/RideProgrammaticRenderer.class.st +++ b/Ride/RideProgrammaticRenderer.class.st @@ -8,7 +8,7 @@ Class { } { #category : #rendering } -RideProgrammaticRenderer >> render: anAspectVariantSelector for: aRidePresenter [ +RideProgrammaticRenderer >> renderUsing: anAspectVariantSelector for: aRidePresenter [ "Since it can have many, use anAspectVariantSelector to decide in what aspect to render aRidePresenter." diff --git a/Ride/RideRenderer.class.st b/Ride/RideRenderer.class.st index 713f02d..db59108 100644 --- a/Ride/RideRenderer.class.st +++ b/Ride/RideRenderer.class.st @@ -31,7 +31,7 @@ RideRenderer >> isLayoutWrapper [ ] { #category : #rendering } -RideRenderer >> render: anAspectVariantSelector for: aRidePresenter [ +RideRenderer >> renderUsing: anAspectVariantSelector for: aRidePresenter [ "Since it can have many, use anAspectVariantSelector to decide in what aspect to render aRidePresenter." diff --git a/Ride/RideSTTemplateRenderer.class.st b/Ride/RideSTTemplateRenderer.class.st index dc8ce97..2ef3370 100644 --- a/Ride/RideSTTemplateRenderer.class.st +++ b/Ride/RideSTTemplateRenderer.class.st @@ -32,20 +32,7 @@ RideSTTemplateRenderer >> newTemplateFrom: file [ ] { #category : #rendering } -RideSTTemplateRenderer >> render: aTemplateName for: aRidePresenter [ - - "Render the template found with aTemplateName for aRidePresenter - using the layout and context that the presenter itself provides." - - ^ self - render: aTemplateName - inLayout: aRidePresenter getLayoutName - on: aRidePresenter getRenderContext - for: aRidePresenter -] - -{ #category : #rendering } -RideSTTemplateRenderer >> render: aTemplateName inLayout: aLayoutNameOrNil on: aTemplateContext for: aRidePresenter [ +RideSTTemplateRenderer >> render: aTemplateContext using: aTemplateName in: aLayoutNameOrNil for: aRidePresenter [ "Render the template found with aTemplateName embedded in the layout at aLayoutNameOrNil for aRidePresenter." @@ -89,3 +76,16 @@ RideSTTemplateRenderer >> render: aTemplateName inLayout: aLayoutNameOrNil on: a "Complete the rendering" ^ templateToRender renderOn: aTemplateContext partials: partials ] + +{ #category : #rendering } +RideSTTemplateRenderer >> renderUsing: aTemplateName for: aRidePresenter [ + + "Render the template found with aTemplateName for aRidePresenter + using the layout and context that the presenter itself provides." + + ^ self + render: aRidePresenter getRenderContext + using: aTemplateName + in: aRidePresenter getLayoutName + for: aRidePresenter +] diff --git a/Ride/RideTemplateBasedRenderer.class.st b/Ride/RideTemplateBasedRenderer.class.st index a9e04a6..803bc07 100644 --- a/Ride/RideTemplateBasedRenderer.class.st +++ b/Ride/RideTemplateBasedRenderer.class.st @@ -125,7 +125,7 @@ RideTemplateBasedRenderer >> newTemplateFrom: file [ ] { #category : #rendering } -RideTemplateBasedRenderer >> render: aTemplateName for: aRidePresenter [ +RideTemplateBasedRenderer >> renderUsing: aTemplateName for: aRidePresenter [ "Render the template found with aTemplateName for aRidePresenter."