Module: Puppet::Network::FormatHandler
- Defined in:
- lib/puppet/network/format_handler.rb
Defined Under Namespace
Classes: FormatError
Constant Summary collapse
- ALL_MEDIA_TYPES =
'*/*'
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
13 14 15 16 17 18 |
# File 'lib/puppet/network/format_handler.rb', line 13 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
20 21 22 23 24 |
# File 'lib/puppet/network/format_handler.rb', line 20 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
26 27 28 |
# File 'lib/puppet/network/format_handler.rb', line 26 def self.format(name) @formats[name.to_s.downcase.intern] end |
.format_by_extension(ext) ⇒ Object
35 36 37 38 39 40 |
# File 'lib/puppet/network/format_handler.rb', line 35 def self.format_by_extension(ext) @formats.each do |name, format| return format if format.extension == ext end nil end |
.format_for(name) ⇒ Object
30 31 32 33 |
# File 'lib/puppet/network/format_handler.rb', line 30 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
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/puppet/network/format_handler.rb', line 57 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.
102 103 104 105 106 |
# File 'lib/puppet/network/format_handler.rb', line 102 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.
43 44 45 |
# File 'lib/puppet/network/format_handler.rb', line 43 def self.formats @formats.keys end |
.mime(mimetype) ⇒ Object
Return a format capable of handling the provided mime type.
48 49 50 51 |
# File 'lib/puppet/network/format_handler.rb', line 48 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.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/puppet/network/format_handler.rb', line 85 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 |