Class: Cul::Hydra::Datastreams::EncodedTextDatastream
- Inherits:
-
ActiveFedora::Datastream
- Object
- ActiveFedora::Datastream
- Cul::Hydra::Datastreams::EncodedTextDatastream
- Defined in:
- app/models/cul/hydra/datastreams/encoded_text_datastream.rb
Constant Summary collapse
- DEFAULT_PRIORITIES =
[ Encoding::UTF_8, Encoding::WINDOWS_1252, Encoding::ISO_8859_1 ]
Class Method Summary collapse
Instance Method Summary collapse
- #content ⇒ Object
- #content=(value) ⇒ Object
-
#initialize(digital_object = nil, dsid = nil, options = {}) ⇒ EncodedTextDatastream
constructor
A new instance of EncodedTextDatastream.
- #utf8able!(data) ⇒ Object
Constructor Details
#initialize(digital_object = nil, dsid = nil, options = {}) ⇒ EncodedTextDatastream
Returns a new instance of EncodedTextDatastream.
7 8 9 10 |
# File 'app/models/cul/hydra/datastreams/encoded_text_datastream.rb', line 7 def initialize(digital_object=nil, dsid=nil, ={}) @encoding_priorities = .delete(:encodings) || DEFAULT_PRIORITIES super end |
Class Method Details
.utf8able!(data, encoding_priorities = DEFAULT_PRIORITIES) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'app/models/cul/hydra/datastreams/encoded_text_datastream.rb', line 24 def self.utf8able!(data, encoding_priorities = DEFAULT_PRIORITIES) return unless data data = data.read if data.is_a? IO content_encoding = encoding_priorities.detect do |enc| begin data.force_encoding(enc).valid_encoding? rescue Encoding::UndefinedConversionError, Encoding::InvalidByteSequenceError false end end raise "could not encode text datastream content" unless content_encoding data.force_encoding(content_encoding) end |
Instance Method Details
#content ⇒ Object
16 17 18 |
# File 'app/models/cul/hydra/datastreams/encoded_text_datastream.rb', line 16 def content utf8able!(super.to_s).encode!(Encoding::UTF_8) end |
#content=(value) ⇒ Object
12 13 14 |
# File 'app/models/cul/hydra/datastreams/encoded_text_datastream.rb', line 12 def content=(value) super(utf8able!(value).encode!(Encoding::UTF_8)) end |
#utf8able!(data) ⇒ Object
20 21 22 |
# File 'app/models/cul/hydra/datastreams/encoded_text_datastream.rb', line 20 def utf8able!(data) EncodedTextDatastream.utf8able!(data, @encoding_priorities) end |