From 96c29181aadb39ba92d039d9b375c7ac55ccf5bb Mon Sep 17 00:00:00 2001 From: "Rico Sta. Cruz" Date: Sat, 16 Jun 2012 06:07:44 +0800 Subject: [PATCH] Implement the :encoding setting which defaults to 'utf-8' --- .../lib/middleman-core/application.rb | 7 ++++++ .../lib/middleman-core/core_extensions.rb | 5 +++- .../core_extensions/ruby_encoding.rb | 24 +++++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 middleman-core/lib/middleman-core/core_extensions/ruby_encoding.rb diff --git a/middleman-core/lib/middleman-core/application.rb b/middleman-core/lib/middleman-core/application.rb index 08e2ec19..f00b00dc 100644 --- a/middleman-core/lib/middleman-core/application.rb +++ b/middleman-core/lib/middleman-core/application.rb @@ -117,6 +117,10 @@ module Middleman # @return [String] set :http_prefix, "/" + # Default string encoding for templates and output. + # @return [String] + set :encoding, "utf-8" + # Whether to catch and display exceptions # @return [Boolean] set :show_exceptions, true @@ -128,6 +132,9 @@ module Middleman # Activate custom features and extensions include Middleman::CoreExtensions::Extensions + # Manage Ruby string encodings + include Middleman::CoreExtensions::RubyEncoding + # Basic Rack Request Handling include Middleman::CoreExtensions::Request diff --git a/middleman-core/lib/middleman-core/core_extensions.rb b/middleman-core/lib/middleman-core/core_extensions.rb index 0b5f5ecb..2267cd7c 100644 --- a/middleman-core/lib/middleman-core/core_extensions.rb +++ b/middleman-core/lib/middleman-core/core_extensions.rb @@ -27,4 +27,7 @@ require "middleman-core/core_extensions/rendering" require "middleman-core/core_extensions/routing" # Catch and show exceptions at the Rack level -require "middleman-core/core_extensions/show_exceptions" \ No newline at end of file +require "middleman-core/core_extensions/show_exceptions" + +# Manage Ruby string encodings +require "middleman-core/core_extensions/ruby_encoding" diff --git a/middleman-core/lib/middleman-core/core_extensions/ruby_encoding.rb b/middleman-core/lib/middleman-core/core_extensions/ruby_encoding.rb new file mode 100644 index 00000000..c2f592f1 --- /dev/null +++ b/middleman-core/lib/middleman-core/core_extensions/ruby_encoding.rb @@ -0,0 +1,24 @@ +# Simple extension to manage Ruby encodings +module Middleman::CoreExtensions::RubyEncoding + + # Setup extension + class << self + + # Once registerd + def registered(app) + app.send :include, InstanceMethods + end + + end + + module InstanceMethods + def initialize + if Object.const_defined?(:Encoding) + Encoding.default_internal = encoding + Encoding.default_external = encoding + end + + super + end + end +end