Sha256: f9d1a4d87ec2e9a11f6f4cc795e0e11732c48f7abb28ad382dd690048c0f6fac

Contents?: true

Size: 913 Bytes

Versions: 1

Compression:

Stored size: 913 Bytes

Contents

module Rails
  module Redactorjs
    class Configuration
      class Function < String
	def encode_json(encoder)
	  self
	end
      end

      def self.defaults
	{

	}
      end

      attr_reader :options

      def initialize(options)
	@options = options
      end

      def options_for_redactorjs
	result = {}

	options.each do |key, value|
	  if value.is_a?(Array) && value.all? { |v| v.is_a?(String) }
	    result[key] = value.join(",")
	  elsif value.to_s.starts_with?("function(")
	    result[key] = Function.new(value)
	  else
	    result[key] = value
	  end
	end

	result
      end

      def merge(options)
	self.class.new(self.options.merge(options))
      end

      def load(filename)
	options.merge!(YAML::load(ERB.new(IO.read(filename)).result))
      end

      def self.load(filename)
	config = new(defaults)
	config.load(filename) if File.exists?(filename)
	config
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails-redactorjs-0.0.1 lib/rails-redactorjs/configuration.rb