module RDF::Serializers::Renderers
Public Class Methods
add_renderer(ext, content_type, symbol, opts = {})
click to toggle source
# File lib/rdf/serializers/renderers.rb, line 26 def self.add_renderer(ext, content_type, symbol, opts = {}) ActionController::Renderers.add ext do |resource, options| self.content_type = content_type serializer_opts = RDF::Serializers::Renderers.transform_opts( options, respond_to?(:serializer_params, true) ? serializer_params : {} ) RDF::Serializers.serializer_for(resource)&.new(resource, serializer_opts)&.dump(symbol, opts) end end
register(symbols, opts = {})
click to toggle source
# File lib/rdf/serializers/renderers.rb, line 15 def self.register(symbols, opts = {}) symbols = [symbols] unless symbols.respond_to?(:each) symbols.each do |symbol| format = RDF::Format.for(symbol) raise "#{symbol} is not a known rdf format" if format.nil? Mime::Type.register format.content_type.first, format.file_extension.first add_renderer(format.file_extension.first, format.content_type.first, format.symbols.first, opts) end end
transform_include(include, root = nil)
click to toggle source
# File lib/rdf/serializers/renderers.rb, line 37 def self.transform_include(include, root = nil) return root if include.blank? return [root, include].compact.join('.') if include.is_a?(Symbol) || include.is_a?(String) if include.is_a?(Hash) include.flat_map do |k, v| transform_include(v, [root, k].compact.join('.')) end elsif include.is_a?(Array) include.flat_map do |v| transform_include(v, root) end end.compact end
transform_opts(options, params)
click to toggle source
# File lib/rdf/serializers/renderers.rb, line 52 def self.transform_opts(options, params) (options || {}).merge( include: transform_include(options[:include]), params: params ) end