Module: Puppet::Network::FormatHandler
- Defined in:
- lib/puppet/network/format_handler.rb
Defined Under Namespace
Classes: FormatError
Constant Summary collapse
- ALL_MEDIA_TYPES =
'*/*'.freeze
Class Method Summary collapse
- .create(*args, &block) ⇒ Object
- .create_serialized_formats(name, options = {}, &block) ⇒ Object
- .format(name) ⇒ Object
- .format_by_extension(ext) ⇒ Object
- .format_for(name) ⇒ Object
-
.format_to_canonical_name(format) ⇒ Object
Return a format name given: * a format name * a mime-type * a format instance.
- .format_to_canonical_name_or_nil(format) ⇒ Object private
-
.formats ⇒ Object
Provide a list of all formats.
-
.mime(mimetype) ⇒ Object
Return a format capable of handling the provided mime type.
-
.most_suitable_formats_for(accepted, supported) ⇒ Array<Puppet::Network::Format>
private
Determine which of the accepted formats should be used given what is supported.
Class Method Details
.create(*args, &block) ⇒ Object
12 13 14 15 16 17 |
# File 'lib/puppet/network/format_handler.rb', line 12 def self.create(*args, &block) instance = Puppet::Network::Format.new(*args, &block) @formats[instance.name] = instance instance end |
.create_serialized_formats(name, options = {}, &block) ⇒ Object
19 20 21 22 23 |
# File 'lib/puppet/network/format_handler.rb', line 19 def self.create_serialized_formats(name, = {},&block) ["application/x-#{name}", "application/#{name}", "text/x-#{name}", "text/#{name}"].each { |mime_type| create name, {:mime => mime_type}.update(), &block } end |
.format(name) ⇒ Object
25 26 27 |
# File 'lib/puppet/network/format_handler.rb', line 25 def self.format(name) @formats[name.to_s.downcase.intern] end |
.format_by_extension(ext) ⇒ Object
34 35 36 37 38 39 |
# File 'lib/puppet/network/format_handler.rb', line 34 def self.format_by_extension(ext) @formats.each do |name, format| return format if format.extension == ext end nil end |
.format_for(name) ⇒ Object
29 30 31 32 |
# File 'lib/puppet/network/format_handler.rb', line 29 def self.format_for(name) name = format_to_canonical_name(name) format(name) end |
.format_to_canonical_name(format) ⇒ Object
Return a format name given:
* a format name
* a mime-type
* a format instance
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/puppet/network/format_handler.rb', line 56 def self.format_to_canonical_name(format) case format when Puppet::Network::Format out = format when %r{\w+/\w+} out = mime(format) else out = format(format) end if out.nil? raise ArgumentError, _("No format matches the given format name or mime-type (%{format})") % {format: format} end out.name end |
.format_to_canonical_name_or_nil(format) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
101 102 103 104 105 |
# File 'lib/puppet/network/format_handler.rb', line 101 def self.format_to_canonical_name_or_nil(format) format_to_canonical_name(format) rescue ArgumentError nil end |
.formats ⇒ Object
Provide a list of all formats.
42 43 44 |
# File 'lib/puppet/network/format_handler.rb', line 42 def self.formats @formats.keys end |
.mime(mimetype) ⇒ Object
Return a format capable of handling the provided mime type.
47 48 49 50 |
# File 'lib/puppet/network/format_handler.rb', line 47 def self.mime(mimetype) mimetype = mimetype.to_s.downcase @formats.values.find { |format| format.mime == mimetype } end |
.most_suitable_formats_for(accepted, supported) ⇒ Array<Puppet::Network::Format>
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Determine which of the accepted formats should be used given what is supported.
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/puppet/network/format_handler.rb', line 84 def self.most_suitable_formats_for(accepted, supported) accepted.collect do |format| format.to_s.sub(/;q=.*$/, '') end.collect do |format| if format == ALL_MEDIA_TYPES supported.first else format_to_canonical_name_or_nil(format) end end.compact.find_all do |format| supported.include?(format) end.collect do |format| format_for(format) end end |