Releases: dry-rb/dry-view
Releases · dry-rb/dry-view
v0.8.0
v0.7.1
Fixed
Changed
- Compatible with Ruby 2.7/3.0 keyword argument handling (@flash-gordon in 4e7cefb)
- dry-equalizer dependency dropped in favor of dry-core (@solnic)
v0.7.0
0.7.0 / 2019-03-06
Added
- Raise a
Dry::View::UndefinedConfigErrorwhen a view is called but no paths have been configured (timriley in #130)
Changed
- [BREAKING] Move
Dry::View::Renderer::TemplateNotFoundErrortoDry::View::TemplateNotFoundError(timriley in #130) - [BREAKING]
Dry::View::UndefinedConfigErroris raised instead ofDry::View::UndefinedTemplateErrorwhen a view is called but no template has been configured (timriley in #130) - Stop searching upwards through parent directories when rendering a view's template (as opposed to partials) (timriley in #130)
- Stop searching in
shared/subdirectories when rendering a view's template (as opposed to partials) (timriley in #130) - Adjust template lookup cache keys to ensure no false hits (timriley in #130)
Fixed
- Avoid a
SystemStackErrorwhen a view is configured with a template that cannot be found on the filesystem (timriley in #129)
v0.6.0
0.6.0 / 2019-01-30
Added
- [BREAKING]
Dry::View#callnow returns aDry::View::Renderedinstance, which carries both the rendered output (accessible via#to_sor#to_str) as well as all of the view's locals, wrapped in their view parts (accessible via#localsor individually via#[]) (timriley in #72) - [BREAKING] Added
Dry::View::PartBuilder(renamed fromDry::View::Decorator), which resolves part classes from a namespace configured via View'spart_namespacesetting. A custom part builder can be specified via a View'spart_buildersetting. (timriley in #80) - [BREAKING] Context classes can now declare decorated attributes just like part classes, via
.decorateclass-level API. Context classes are now required to inherit fromDry::View::Context.Dry::View::Contextprovides a#withmethod for creating copies of itself while preserving the rendering details needed for decorated attributes to work (timriley in #89 and #91) - Customizable scope objects, which work like view parts, but instead of encapsulating a single value, they encapsulate a whole template or partial and all of its locals. Scopes can be created via
#scopemethod in templates, parts, as well as scope classes themselves. Scope classes are resolved via a View'sscope_buildersetting, which defaults to an instance ofDry::View::ScopeBuilder. - Added
inflectorsetting to View, which is used by the part and scope builders to resolve classes for a given part or scope name. Defaults toDry::Inflector.new(timriley in #80 and #90) - Exposures can be sent to the layout template when defined with
layout: trueoption (GustavoCaso in #87) - Exposures can be left undecorated by a part when defined with
decorate: falseoption (timriley in #88) - Part classes have access to the current template format via a private
#_formatmethod (timriley in #118) - Added "Tilt adapter" layer, to ensure a rendering engine compatible with dry-view's features is being used. Added adapters for "haml" and "erb" templates to ensure that "hamlit-block" and "erbse" are required and used as engines (unlike their more common counterparts, both of these engines support the implicit block capturing that is a central part of dry-view rendering behaviour) (timriley in #106)
- Added
renderer_engine_mappingsetting to View, which allows an explicit engine class to be provided for the rendering of a given type of template (e.g.config.renderer_engine_mapping = {erb: Tilt::ErubiTemplate}) (timriley in #106)
Changed
- [BREAKING]
Dry::View::Controllerrenamed toDry::View(timriley in #115) - [BREAKING]
Dry::Viewcontextsetting renamed todefault_context(GustavoCaso in #86) - Exposure values are wrapped in their view parts before being made available as exposure dependencies (timriley in #80)
- Exposures can access current context object through
context:block or method parameter (timriley in #119) - Improved performance due to caching various lookups (timriley and GustavoCaso in #97)
Part#inspectoutput simplified to include only name and value (timriley in #98)- Attribute decoration in
Partnow achieved via a prepended module, which means it is possible to decorate an attribute provided by an instance method directly on the part class, which wasn't possible with the previousmethod_missing-based approach (timriley in #110) Partclasses can be initialized with missingname:andrendering:values, which can be useful for unit testing Part methods that don't use any rendering facilities (timriley in #116)
Fixed
- Preserve renderer options when chdir-ing (timriley in 889ac7b)
0.5.3
0.5.2
0.5.2 / 2018-06-13
Changed
- Only truthy view part attributes are decorated (timriley)
0.5.1
Added
- Exposures are inherited from parent view controller classes (GustavoCaso)
0.5.0 / 2018-01-23
0.5.0
Added
- Support for parts with decorated attributes (timriley + GustavoCaso)
- Ability to easily create another part instance via
Part#new(GustavoCaso)