On May 22, 9:01 ¨Âí¬ ÒïçåÐáãë ¼òïçåòðáãë²®®®Àçíáéì®ãïí÷òïôåº > Tony's point was that certain constructs, like case statements, won't be > transformable into indentation only blocks. ¨Âïåôèáô íáëå óåîóå¿ No, it doesn't, because I don't see why case statements are not transformable into indent-only blocks. I've _done_ them using the quick-and-dirty hacky script and they work just fine. (In cases like Joshua's impossible.rb I had to make a minor modification to the script to have it inject 'end ' rather than 'end\n', but it still worked fine.) Code speaks louder than words, right? Here's some real-world code... it's application_controller.rb from the AuthLogic example (http:// github.com/binarylogic/authlogic_example/tree): ----------------- # Filters added to this controller apply to all controllers in the application. # Likewise, all the methods added will be available for all controllers. class ApplicationController < ActionController::Base helper :all helper_method :current_user_session, :current_user filter_parameter_logging :password, :password_confirmation private def current_user_session return @current_user_session if defined?(@current_user_session) @current_user_session = UserSession.find end def current_user return @current_user if defined?(@current_user) @current_user = current_user_session && current_user_session.record end def require_user unless current_user store_location flash[:notice] = "You must be logged in to access this page" redirect_to new_user_session_url return false end end def require_no_user if current_user store_location flash[:notice] = "You must be logged out to access this page" redirect_to account_url return false end end def store_location session[:return_to] = request.request_uri end def redirect_back_or_default(default) redirect_to(session[:return_to] || default) session[:return_to] = nil end end ----------------- Nothing particularly special about this code, right? Pretty standard Ruby, if a bit simple? 37 non-blank, non-comment lines, of which 9 consist of the bare word "end". I defy anyone to tell me that the code would be less readable as this: ----------------- # Filters added to this controller apply to all controllers in the application. # Likewise, all the methods added will be available for all controllers. class ApplicationController < ActionController::Base helper :all helper_method :current_user_session, :current_user filter_parameter_logging :password, :password_confirmation private def current_user_session: return @current_user_session if defined?(@current_user_session) @current_user_session = UserSession.find def current_user: return @current_user if defined?(@current_user) @current_user = current_user_session && current_user_session.record def require_user: unless current_user: store_location flash[:notice] = "You must be logged in to access this page" redirect_to new_user_session_url return false def require_no_user: if current_user: store_location flash[:notice] = "You must be logged out to access this page" redirect_to account_url return false def store_location: session[:return_to] = request.request_uri def redirect_back_or_default(default): redirect_to(session[:return_to] || default) session[:return_to] = nil