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