Class: Daengine::Document
- Inherits:
-
Nokogiri::XML::SAX::Document
- Object
- Nokogiri::XML::SAX::Document
- Daengine::Document
- Defined in:
- lib/daengine/teamsite_metadata_processor.rb
Constant Summary collapse
- DATA_TUPLE_ELEMENT =
'data-tuple'
- TUPLE_FIELD_ELEMENT =
'tuple-field'
- NAME_ATTRIBUTE =
'name'
- TIME_FORMAT =
Teamsite Date example: Dec 29 2008 12:00:00:000AM
'%b %d %Y %k:%M:%S:%L%p'
- TRANSLATION =
{ 'TeamSite/Metadata/rttTitle' => 'title', 'TeamSite/Metadata/enterprise_last_updated_date' => 'changed_at', 'TeamSite/Metadata/enterprise_audience_id' => 'audiences', 'TeamSite/Metadata/enterprise_sami_desc' => 'sami_code', 'TeamSite/Metadata/enterprise_last_publication_date' => 'published_at', 'TeamSite/Metadata/enterprise_unpublish_date' => 'unpublished_at', 'TeamSite/Metadata/enterprise_expiration_date' => 'expires_at', #'TeamSite/Metadata/enterprise_guid' => 'guid', 'TeamSite/Metadata/enterprise_guid' => 'digital_asset_id', 'TeamSite/Metadata/shortSynopsis' => 'summary', 'TeamSite/Metadata/business_owner' => 'business_owner', 'TeamSite/Metadata/enterprise_product_id' => 'product_ids', 'TeamSite/Metadata/enterprise_content_organization_id' => 'content_organization_ids', 'TeamSite/Metadata/enterprise_program_id' => 'program_ids', 'TeamSite/Metadata/omnitureSiteSection_codes' => 'omniture_codes', 'TeamSite/Metadata/display_on_website' => 'display_on_website', 'path' => 'path', 'TeamSite/Metadata/enterprise_last_content_update_date' => 'doc_changed_at', 'TeamSite/Metadata/enterprise_content_type_id' => 'content_type' }
Instance Method Summary collapse
- #array_field?(field_name) ⇒ Boolean
- #assets ⇒ Object
- #boolean_field?(field_name) ⇒ Boolean
- #characters(string) ⇒ Object
- #convert_to_array(string) ⇒ Object
- #convert_to_boolean(string) ⇒ Object
- #convert_to_datetime(string) ⇒ Object
- #convert_value(field_name, string) ⇒ Object
- #datetime_field?(field_name) ⇒ Boolean
- #end_element(name) ⇒ Object
- #error(string) ⇒ Object
-
#initialize ⇒ Document
constructor
A new instance of Document.
- #name_attr_value(attrs) ⇒ Object
- #start_element(name, attrs = []) ⇒ Object
- #translate_field_name(name) ⇒ Object
- #warning(string) ⇒ Object
Constructor Details
#initialize ⇒ Document
Returns a new instance of Document.
218 219 220 221 222 223 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 218 def initialize @asset = nil @field_name = nil @text = '' @assets = {} end |
Instance Method Details
#array_field?(field_name) ⇒ Boolean
291 292 293 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 291 def array_field?(field_name) ::ServiceDigitalAsset.array_field?(field_name) end |
#assets ⇒ Object
225 226 227 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 225 def assets @assets end |
#boolean_field?(field_name) ⇒ Boolean
283 284 285 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 283 def boolean_field?(field_name) ::ServiceDigitalAsset.boolean_field?(field_name) end |
#characters(string) ⇒ Object
241 242 243 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 241 def characters(string) @text << string end |
#convert_to_array(string) ⇒ Object
303 304 305 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 303 def convert_to_array(string) string.try(:split, ',') end |
#convert_to_boolean(string) ⇒ Object
295 296 297 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 295 def convert_to_boolean(string) !!(string =~ /Y|1|true/) end |
#convert_to_datetime(string) ⇒ Object
299 300 301 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 299 def convert_to_datetime(string) Time.strptime(string, TIME_FORMAT) unless string.blank? end |
#convert_value(field_name, string) ⇒ Object
271 272 273 274 275 276 277 278 279 280 281 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 271 def convert_value(field_name, string) begin return convert_to_boolean(string) if boolean_field?(field_name) return convert_to_datetime(string) if datetime_field?(field_name) return convert_to_array(string) if array_field?(field_name) rescue => ex Daengine.log("***** convert-value('#{field_name}', '#{string}') - #{ex.inspect}", 'error') end string end |
#datetime_field?(field_name) ⇒ Boolean
287 288 289 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 287 def datetime_field?(field_name) ::ServiceDigitalAsset.time_field?(field_name) end |
#end_element(name) ⇒ Object
245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 245 def end_element(name) case name when DATA_TUPLE_ELEMENT @assets[@asset.digital_asset_id] = [] if @assets[@asset.digital_asset_id].nil? @assets[@asset.digital_asset_id] << @asset @asset = nil when TUPLE_FIELD_ELEMENT unless @field_name.nil? value = convert_value(@field_name, @text) setter_name = "#{@field_name}=".to_sym @asset.send(setter_name, value) if @asset.respond_to?(setter_name) end end @field_name, @text = nil, '' end |
#error(string) ⇒ Object
262 263 264 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 262 def error(string) Daengine.log("***** Parse error - #{string} *****", 'error') end |
#name_attr_value(attrs) ⇒ Object
307 308 309 310 311 312 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 307 def name_attr_value(attrs) unless attrs.nil? hash = Hash[*attrs.flatten] hash[NAME_ATTRIBUTE] end end |
#start_element(name, attrs = []) ⇒ Object
229 230 231 232 233 234 235 236 237 238 239 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 229 def start_element(name, attrs = []) case name when DATA_TUPLE_ELEMENT @asset = ::ServiceDigitalAsset.new @field_name = nil when TUPLE_FIELD_ELEMENT @field_name = translate_field_name(name_attr_value(attrs)) end @text = '' end |
#translate_field_name(name) ⇒ Object
314 315 316 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 314 def translate_field_name(name) TRANSLATION[name] end |