Skip to content
This repository
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 252 lines (202 sloc) 12.048 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251
== 0.9.0

* Finally merged bigfix/rails3 branch - Erector now works with either Rails 2 or Rails 3 (or neither)
* 'scss' external type [needs tests]
* dot-class and dot-id-bang syntax
* expanded widget hierarchy; now XMLWidget can be used as the base for a non-HTML widget (for XML formats that may not want the HTML tags and methods)
* 'emit' method as preferred synonym for to_html (since we now support non-HTML widgets)
* 'tag' macro to add your own tag types (esp. to XML widgets)
* :snake_case option to tag (if you want the method name to be nice for a CamelCase tag name)
* remove dependency on rake gem
* rename 'render' method to 'emit' (to reduce confusion with Rails' "render" methods)

Deprecated or Removed:

* text(widget) -- passing a widget to the text method is now an error
* element! -- removed
* empty_element -- removed
* all_tags -- removed (perhaps to be replaced)
* to\_s -- use emit or to\_html instead
* join -- use the :join option instead

== 0.8.3

* Finally merged bigfix/rails3 branch - Erector now works with either Rails 2 or Rails 3 (or neither)

== 0.8.2 - 2011-02-16

* Close tags on exception or return
* Gem dependency cleanup
* Bug: Dependency did not correctly work with uniq (reported by Daniel Barlow)

== 0.8.1 - 2010-07-17

Bugfix release to improve Ruby 1.9 compatibility

== 0.8.0 - 2010-07-07

Core:
* deprecated to_s in favor of to_html
* to_text does some formatting
* barebones Sass support
* "depends_on" is the new way to include JS and CSS files (replacing "external"). More flexible calling structure.
* line wrapping via the :max_length parameter to to_html
* line wrapping preserves leading and trailing spaces
* jquery method takes optional first parameter (:load or :ready)
* delegate method_missing to parent widget
* 'embed' and 'param' are now self-closing tags (as per browser warnings)
* Converted Widget#context to take a params hash.
* Exposed an Output object, with rather useful #placeholder method
* Defined Widget#output to delegate to #parent if @parent is not already set.
* Removed :parent param for Output#initialize in favor of a block.
* Page#extra_widgets
* Page only emits externals from widgets that have been rendered on it
* in-memory widget caching (still experimental)

Rails:
* Compatibility with Rails 2.3.5 HTML safety
* Rails 2.3.8 compatibility
* To render from a Rails context, you must now go through Erector::Rails.render; do not call to_s(:parent => @view) directly
* rails_xss plugin support
* additional render :widget options passed to to_s. This means that you can do:
      render :widget => MyWidget, :content_method_name => :my_content
* Widget#h is now idempotent

Bugs:
* [bug] http://github.com/pivotal/erector/issues/#issue/5
* [bug] http://github.com/pivotal/erector/issues/closed#issue/3
* [bug] double-rendering


== 0.7.3 - 2009-12-01
* fix bug in pass-block-to-new inline page rendering
* externals can accept a File (or any IO, actually)

Rails:
 * Add Widget.controller_assigns_propagate_to_partials: lets you keep controller instance variables from propagating to partials, so that you don't have this giant "global" namespace that partials can pull from. Enforces encapsulation much better.
 * Add Widget.ignore_extra_controller_assigns, which allows widgets to use #needs but silently ignore excess controller variables, rather than raising an exception instead. This can be very useful for transitioning large codebases to Erector.
 * Factor out directly-delegated methods into an array; add url_for and image_path.
 * Make Erector work with the Cells plugin for Rails (http://cells.rubyforge.org/).

Erector tool:
 * Make 'erector' ignore ERb trim markers ("-%>").
 * Make 'erector' process ERb escapes in HTML attributes correctly.
 * Make sure 'erector' adds parentheses to function calls when necessary.
 * Don't add empty strings to the end of converted attributes.
 * Don't omit empty attribute strings.
 * Allow setting an alternate superclass for the new widget coming from the 'erector' tool.
 * Add --method switch to 'erector', in case you don't want the base 'content' method overridden, but something it calls in your superclass, instead.

== 0.7.2 - 2009-11-16
* Widget#url and #css accept optional extra attributes (e.g. 'media')
* Externals accept optional extra attributes (e.g. 'media')
* Page:
  * body\_attributes and html\_attributes
  * allow suppressing of basic styles (right/left/clear)
  * now an InlineWidget
* erector method passes in parameters to both to\_s and the widget's constructor
* Widget#dom\_id method to generate a unique id
* Widget#to\_text method to strip tags
* supports HTML5 element names
* Widget#text! and #element! which don't escape their parameters
* Better Rails initialization
* Don't emit an attribute with an empty array of values
* Enhanced support for comments, including IE conditional comments
* jQuery method now compatible with jQuery.noConflict()

== 0.7.1
* externals mechanism
* Page widget
* FieldTable widget
* EnvironmentBadge widget - inspired by http://blog.labnotes.org/2009/10/08/using-a-badge-to-distinguish-development-and-production-environments
* added 'jquery' method to perform a script on $(document).ready
* removed the "alias\_method :inspect, :to\_s" since it made debugging inside widget constructors hard, and what was it for anyway?
* Instance variables may begin with a '@'
* Fixed Rails integration regressions
* Added *.ert templates (Erector Template, similar to Markaby)
* #comment method to emit HTML comments (naturally)

== 0.7.0 / 2009-09-27
* Changed behavior of inline blocks. See Widget#new documentation.
* Introduced "Erector::Inline" and "Erector.inline" so people using the old inline semantics can upgrade more easily.
* Likewise for "Erector::InlineRailsWidget" and "Erector::RailsWidget.inline".
* Due to popular demand, parameters no longer automatically create accessor methods, even if you declare them with 'needs'. You'll have to type out "attr\_accessor :underpants" yourself.

== 0.6.8 / 2009-09
* Added missing tag 'embed'

== 0.6.7 / 2009-06-17
* Fixed bug where needs did not get propagated when including modules.

== 0.6.6 / 2009-05-25
* fix to_a bug that slipped in yesterday when I wasn't looking
* attempting to assign a local variable that overlaps with an internal one raises error
* attempting to 'needs' a variable that overlaps with an existing method raises error

== 0.6.4 / 2009-05-24
* mixin: do "include Erector::Mixin" and now "erector { }" will instantiate and to_html a widget for you
* "erector" command-line tool improved:
  * if converting an HTML/ERB file under a "views" directory, uses "Erector::RailsWidget" as parent class
  * no longer chokes on "if IE" directives
  * changes 'yield' in a scriptlet to use a missing "@content_for_layout"
  * escapes single quotes inside text strings
* requires treetop 1.2.5
* documentation overhaul, web site arguably prettier

== 0.6.3 / 2009-05-06
* Major update to API. You *will* have to change your code. There are deprecation warnings/errors
and there should be an upgrade guide up on the website soon.
* 'render' renamed to 'content'
* widget constructor only takes one parameter, an 'assigns' hash (plus the optional default block)
* to render one widget from inside another, use the 'widget' method (not 'render_to'). This method
accepts either a widget instance, or a widget class and an assigns hash.
* 'needs' macro to declare the variables your widget accepts via the 'assigns' constructor parameter
* Removed Widget#to_html caching, which fixed indentation issues.
* BUGFIX: Indentation level is now correctly propagated to nested widgets.
* Erector's Rails support strategy has changed. The released version of Erector only supports the latest stable
Rails version (currently 2.3.2). If you need support for earlier versions of Rails, there are separate
Git branches for each one, but we will not be in the habit of keeping these up to date with the latest
features and patches.
* Renamed the command line tool to 'erector'

== 0.5.1
* Added methods to easily render additional HTML elements (col, object, and about a dozen others). There are now methods for all non-deprecated elements from the HTML 4.0.1 spec. As before, if erector doesn't have a method built-in, you can still call the element or empty_element method to output any tag.
* The method instruct!, which was a deprecated synonym for instruct, has been removed.
* Fixed bug in resolving view files for pluralized controllers

=== 0.5.0 / 2008-12-13
* install_dependencies refreshes the rails_versions directory
* Widget takes a string instead of an IO object to be more compatible with Rails.
* Removed Doc
* Widget writes directly to output string instead of to #doc

=== 0.4.200 / 2008-10-11
* Erector can now pretty-print the generated HTML to make it easier to read.
* Add join method to Erector::Widget.

=== 0.4.191 / 2008-07-29
* Renamed HtmlParts to Doc
* Widget#doc is now a HtmlParts which proxies to the passed in IO stream
* Better compatibility with standard Rails rendering because ActionController::Base#render and #render_widget now have the Widget write directly to _erbout.
* ActionView::Base objects run with Erector now receive all of the instance variables
* Erector works with erb layouts
* Deprecate fake_erbout
* Better handling for file with .html.rb extension.
* Fix overwriting issue when using Rails helpers
* New method Widget#character
* Widget#nbsp without arguments now outputs a single non-breaking space.

=== 0.3.110 / 2008-05-29

* support capture from rails helpers, allowing form_for/form_tag to work right
* fix bug in view_paths support (finding views was hosed)

=== 0.3.105 / 2008-05-29

* Lots of changes to support Rails integration better.
* Add partial support for render :partial.
* More Rails helpers proxies added to helpers.rb.
* Fake erbouts can now nest, allowing better support for Rails helpers like form_for (though they're currently capped at 10 deep to head off infinite regress).
* Rails finds both .rb and .html.rb files inside the app/views directories.
* Use Rails view_paths instead of hardcoded RAILS_ROOT/app/views (patch by Rami Grossman)
* add 'url' and 'css' convenience methods to Widget

=== 0.2.83 / 2008-04-23

* "erect" supports command-line options
* "erect" now works backwards -- you can output static html from a widget.rb file
* The web site is generated from erector classes (still pretty minimal though)

=== 0.2.61 / 2008-04-18

* Improvements to "erect"
  * works on HTML attributes (including namespaced attributes and hyphenated attributes)
  * works on directories (recursively looking for .html and .html.erb and .rhtml files)
  * converts DOCTYPE nodes
  * deals with HTML entities inside text and attributes

=== 0.2.54 / 2008-04-15

* New script "erect" to convert (some) .html.erb files into erector classes.

=== 0.2.42 / 2008-04-11

* Rails Controller now can render Erector widgets using #render
* Erector views can live inside Rails "app/views" directory, just like other views

=== 0.1.25 / 2008-02-26

* nbsp method
* :class => ['one', 'two'] (that is, passing an array rather than a string)
... perhaps one or two I forgot.
* rename tag to element
* add empty_element feature
* for the built-in HTML tags, knows which ones should be empty and which shouldn't be.
  For example, generates `<input />` rather than `<input></input>`
* text and attributes are quoted by default; call raw to avoid this
* h is rarely necessary now, but it returns a string rather than appending to the buffer
* nbsp method turns spaces into non-breaking spaces
* sending in an array for attribute values (typically CSS classes) concatenates them separated by spaces
* The column definition name can be a Proc that gets executed.
* Renamed instruct! to instruct (old one remains as a deprecated method for now), as it is no more side-effecting (or dangerous or whatever) than any other method in Widget.

=== 0.1.0 / 2008-02-13

* First public release

=== 0.0.1

* Was on pivotalrb.rubyforge.org


Something went wrong with that request. Please try again.