Class: HexaPDF::Configuration
- Inherits:
-
Object
- Object
- HexaPDF::Configuration
- Defined in:
- lib/hexapdf/configuration.rb
Overview
Manages both the global and document specific configuration options for HexaPDF.
Overview
HexaPDF allows detailed control over many aspects of PDF manipulation. If there is a need to use a certain default value somewhere, it is defined as configuration options so that it can easily be changed.
Some options are defined as global options because they are needed on the class level - see HexaPDF::GlobalConfiguration. Other options can be configured for individual documents as they allow to fine-tune some behavior - see HexaPDF::DefaultDocumentConfiguration.
A configuration option name is dot-separted to provide a hierarchy of option names. For example, io.chunk_size.
Class Method Summary collapse
-
.with_defaults(values = {}) ⇒ Object
Creates a new document specific Configuration object by merging the values into the default configuration object.
Instance Method Summary collapse
-
#[](name) ⇒ Object
Returns the value for the configuration option
name
. -
#[]=(name, value) ⇒ Object
Uses
value
as the value for the configuration optionname
. -
#constantize(name, key = :__unset) ⇒ Object
:call-seq: config.constantize(name, key = nil) -> constant or nil config.constantize(name, key = nil) {|name| block} -> obj.
-
#initialize(options = {}) ⇒ Configuration
constructor
Creates a new Configuration object using the provided hash argument.
-
#key?(name) ⇒ Boolean
(also: #option?)
Returns
true
if the given option exists. -
#merge(config) ⇒ Object
Returns a new Configuration object containing the options from the given configuration object (or hash) and this configuration object.
Constructor Details
#initialize(options = {}) ⇒ Configuration
Creates a new Configuration object using the provided hash argument.
62 63 64 |
# File 'lib/hexapdf/configuration.rb', line 62 def initialize( = {}) @options = end |
Class Method Details
.with_defaults(values = {}) ⇒ Object
Creates a new document specific Configuration object by merging the values into the default configuration object.
56 57 58 |
# File 'lib/hexapdf/configuration.rb', line 56 def self.with_defaults(values = {}) DefaultDocumentConfiguration.merge(values) end |
Instance Method Details
#[](name) ⇒ Object
Returns the value for the configuration option name
.
73 74 75 |
# File 'lib/hexapdf/configuration.rb', line 73 def [](name) [name] end |
#[]=(name, value) ⇒ Object
Uses value
as the value for the configuration option name
.
78 79 80 |
# File 'lib/hexapdf/configuration.rb', line 78 def []=(name, value) [name] = value end |
#constantize(name, key = :__unset) ⇒ Object
:call-seq:
config.constantize(name, key = nil) -> constant or nil
config.constantize(name, key = nil) {|name| block} -> obj
Returns the constant the option name
is referring to. If key
is provided and the value of the option name
responds to #[], the constant to which key
refers is returned.
If no constant can be found and no block is provided, nil
is returned. If a block is provided it is called with the option name and its result will be returned.
config.constantize('encryption.aes') #=> HexaPDF::Encryption::FastAES
config.constantize('filter.map', :Fl) #=> HexaPDF::Filter::FlateDecode
106 107 108 109 110 111 112 |
# File 'lib/hexapdf/configuration.rb', line 106 def constantize(name, key = :__unset) data = self[name] data = data[key] if key != :__unset && data.respond_to?(:[]) (data = ::Object.const_get(data) rescue nil) if data.kind_of?(String) data = yield(name) if block_given? && data.nil? data end |
#key?(name) ⇒ Boolean Also known as: option?
Returns true
if the given option exists.
67 68 69 |
# File 'lib/hexapdf/configuration.rb', line 67 def key?(name) .key?(name) end |
#merge(config) ⇒ Object
Returns a new Configuration object containing the options from the given configuration object (or hash) and this configuration object.
If a key already has a value in this object, its value is overwritten by the one from config
. However, hash values are merged instead of being overwritten.
87 88 89 90 91 92 |
# File 'lib/hexapdf/configuration.rb', line 87 def merge(config) config = (config.kind_of?(self.class) ? config. : config) self.class.new(.merge(config) do |_key, old, new| old.kind_of?(Hash) && new.kind_of?(Hash) ? old.merge(new) : new end) end |