Class: IPTCR::IPTC::Field
- Inherits:
-
Object
- Object
- IPTCR::IPTC::Field
- Defined in:
- lib/iptcr/iptc.rb
Instance Attribute Summary collapse
-
#data ⇒ Object
readonly
Returns the value of attribute data.
-
#dataset_number ⇒ Object
readonly
Returns the value of attribute dataset_number.
-
#encoding ⇒ Object
readonly
Returns the value of attribute encoding.
-
#record_number ⇒ Object
readonly
Returns the value of attribute record_number.
Instance Method Summary collapse
- #dataset ⇒ Object
- #dataset? ⇒ Boolean
- #dataset_name ⇒ Object
- #dataset_type ⇒ Object
-
#initialize(record_number:, dataset_number:, data:, encoding:) ⇒ Field
constructor
A new instance of Field.
- #inspect ⇒ Object
- #record ⇒ Object
- #record? ⇒ Boolean
- #record_name ⇒ Object
- #value ⇒ Object
Constructor Details
#initialize(record_number:, dataset_number:, data:, encoding:) ⇒ Field
Returns a new instance of Field.
122 123 124 125 126 127 |
# File 'lib/iptcr/iptc.rb', line 122 def initialize(record_number:, dataset_number:, data:, encoding:) @record_number = record_number @dataset_number = dataset_number @data = data @encoding = encoding end |
Instance Attribute Details
#data ⇒ Object (readonly)
Returns the value of attribute data.
145 146 147 |
# File 'lib/iptcr/iptc.rb', line 145 def data @data end |
#dataset_number ⇒ Object (readonly)
Returns the value of attribute dataset_number.
145 146 147 |
# File 'lib/iptcr/iptc.rb', line 145 def dataset_number @dataset_number end |
#encoding ⇒ Object (readonly)
Returns the value of attribute encoding.
173 174 175 |
# File 'lib/iptcr/iptc.rb', line 173 def encoding @encoding end |
#record_number ⇒ Object (readonly)
Returns the value of attribute record_number.
129 130 131 |
# File 'lib/iptcr/iptc.rb', line 129 def record_number @record_number end |
Instance Method Details
#dataset ⇒ Object
153 154 155 156 157 |
# File 'lib/iptcr/iptc.rb', line 153 def dataset if dataset? record[:datasets][dataset_number] end end |
#dataset? ⇒ Boolean
147 148 149 150 151 |
# File 'lib/iptcr/iptc.rb', line 147 def dataset? if record? record[:datasets] && record[:datasets].has_key?(dataset_number) end end |
#dataset_name ⇒ Object
159 160 161 162 163 |
# File 'lib/iptcr/iptc.rb', line 159 def dataset_name if dataset? dataset[:name] end end |
#dataset_type ⇒ Object
165 166 167 168 169 |
# File 'lib/iptcr/iptc.rb', line 165 def dataset_type if dataset? dataset[:type] end end |
#inspect ⇒ Object
201 202 203 |
# File 'lib/iptcr/iptc.rb', line 201 def inspect "#<%s:0x%014x record=%s dataset=%s %p>" % [self.class, object_id, inspect_record, inspect_dataset, value] end |
#record ⇒ Object
135 136 137 |
# File 'lib/iptcr/iptc.rb', line 135 def record RECORDS[record_number] end |
#record? ⇒ Boolean
131 132 133 |
# File 'lib/iptcr/iptc.rb', line 131 def record? RECORDS.has_key? record_number end |
#record_name ⇒ Object
139 140 141 142 143 |
# File 'lib/iptcr/iptc.rb', line 139 def record_name if record? record[:name] end end |
#value ⇒ Object
175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 |
# File 'lib/iptcr/iptc.rb', line 175 def value case dataset_type when "string" # Record number 1 is always the default encoding if record_number == 1 @data.force_encoding(DEFAULT_ENCODING) unless @data.nil? # Records 2-6 and 8 respect tagged encoding elsif (2..6).include?(record_number) || record_number == 8 @data.force_encoding(encoding) unless @data.nil? # Other behaviour is undefined else @data end when "digits" @data when "int8u" @data.unpack("C").first when "int16u" @data.unpack("S").first when "int32u" @data.unpack("L").first else @data end end |