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.
215 216 217 218 219 220 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 215 def initialize @asset = nil @field_name = nil @text = '' @assets = {} end |
Instance Method Details
#array_field?(field_name) ⇒ Boolean
288 289 290 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 288 def array_field?(field_name) ::ServiceDigitalAsset.array_field?(field_name) end |
#assets ⇒ Object
222 223 224 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 222 def assets @assets end |
#boolean_field?(field_name) ⇒ Boolean
280 281 282 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 280 def boolean_field?(field_name) ::ServiceDigitalAsset.boolean_field?(field_name) end |
#characters(string) ⇒ Object
238 239 240 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 238 def characters(string) @text << string end |
#convert_to_array(string) ⇒ Object
300 301 302 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 300 def convert_to_array(string) string.try(:split, ',') end |
#convert_to_boolean(string) ⇒ Object
292 293 294 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 292 def convert_to_boolean(string) !!(string =~ /Y|1|true/) end |
#convert_to_datetime(string) ⇒ Object
296 297 298 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 296 def convert_to_datetime(string) Time.strptime(string, TIME_FORMAT) unless string.blank? end |
#convert_value(field_name, string) ⇒ Object
268 269 270 271 272 273 274 275 276 277 278 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 268 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
284 285 286 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 284 def datetime_field?(field_name) ::ServiceDigitalAsset.time_field?(field_name) end |
#end_element(name) ⇒ Object
242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 242 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
259 260 261 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 259 def error(string) Daengine.log("***** Parse error - #{string} *****", 'error') end |
#name_attr_value(attrs) ⇒ Object
304 305 306 307 308 309 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 304 def name_attr_value(attrs) unless attrs.nil? hash = Hash[*attrs.flatten] hash[NAME_ATTRIBUTE] end end |
#start_element(name, attrs = []) ⇒ Object
226 227 228 229 230 231 232 233 234 235 236 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 226 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
311 312 313 |
# File 'lib/daengine/teamsite_metadata_processor.rb', line 311 def translate_field_name(name) TRANSLATION[name] end |