lib/rails_view.rb in rails_view-1.2.0 vs lib/rails_view.rb in rails_view-2.0.0
- old
+ new
@@ -1,71 +1,74 @@
require 'rails' unless defined?(::Rails)
require 'action_controller' unless defined?(::ActionController)
class View
- VERSION = '1.2.0'
+ VERSION = '2.0.0'
def View.version
View::VERSION
end
- if defined?(Rails::Engine)
- class Engine < Rails::Engine
- config.after_initialize do
- ::View.generate_controller!
+ def View.load_shit!
+ @loaded_shit ||= (
+ unless defined?(::Rails)
+ require 'rails'
end
- end
- else
- ::View.generate_controller!
- end
- def View.generate_controller!
- #base = (defined?(ApplicationController) ? ApplicationController : ::ActionController::Base)
- base = ::ActionController::Base
-
- c = Class.new(base) do
- layout false
- helper :all
-
- def self.context(*args, &block)
- require 'rails'
+ unless defined?(::ActionController)
require 'action_controller'
+ end
+
+ unless defined?(::ActionDispatch::TestRequest)
require 'action_dispatch/testing/test_request.rb'
+ end
+
+ unless defined?(::ActionDispatch::TestResponse)
require 'action_dispatch/testing/test_response.rb'
+ end
- default_url_options =
- begin
- require 'rails_default_url_options'
- DefaultUrlOptions
- rescue LoadError
- options[:default_url_options] || {}
- end
+ true
+ )
+ end
- store = ActiveSupport::Cache::MemoryStore.new
- request = ActionDispatch::TestRequest.new
- response = ActionDispatch::TestResponse.new
+ def View.controller(&block)
+ load_shit!
- controller = new()
-
- controller.perform_caching = false
- controller.cache_store = store
- controller.request = request
- controller.response = response
- #controller.send(:initialize_template_class, response)
- #controller.send(:assign_shortcuts, request, response)
- controller.send(:default_url_options).merge!(default_url_options)
- block ? controller.instance_eval(&block) : controller
- end
+ controller_class = Class.new(::ActionController::Base) do
+ layout false
+ helper :all
end
- const_set(:Controller, c)
- end
+ default_url_options =
+ begin
+ require 'rails_default_url_options'
+ DefaultUrlOptions
+ rescue LoadError
+ options[:default_url_options] || {}
+ end
+ store = ActiveSupport::Cache::MemoryStore.new
+ request = ActionDispatch::TestRequest.new
+ response = ActionDispatch::TestResponse.new
+ controller = controller_class.new()
+
+ controller.perform_caching = false
+ controller.cache_store = store
+ controller.request = request
+ controller.response = response
+ #controller.send(:initialize_template_class, response)
+ #controller.send(:assign_shortcuts, request, response)
+ controller.send(:default_url_options).merge!(default_url_options)
+ block ? controller.instance_eval(&block) : controller
+ end
+
def View.render(*args)
- Array(Controller.context{ render(*args) }).join.html_safe
+ Array(View.controller{ render(*args) }).join.html_safe
end
end
+
+Rails_view = ::View
__END__
puts View.render(:inline => "<%= Time.now %> <%= link_to :foo, root_path %><%= solid :bar %><%= link_to :chiclet, Chiclet.first %>")
puts View.render(:inline => "* one\n* two\n* three\n", :type => :markdown)