class Lt::Lcms::Metadata::Service
Public Class Methods
agenda()
click to toggle source
# File lib/lt/lcms/metadata/service.rb, line 9 def agenda @agenda.data.presence || [] end
foundational_metadata()
click to toggle source
# File lib/lt/lcms/metadata/service.rb, line 13 def foundational_metadata @foundational_metadata.data.presence || {} end
materials_metadata()
click to toggle source
# File lib/lt/lcms/metadata/service.rb, line 17 def materials_metadata DocTemplate::Objects::MaterialMetadata end
options_for(context)
click to toggle source
Calls superclass method
Lt::Lcms::Metadata::BaseService::options_for
# File lib/lt/lcms/metadata/service.rb, line 21 def options_for(context) super.merge( if material? { metadata: DocTemplate::Objects::MaterialMetadata.build_from(metadata.data), material: true } else { foundational_metadata: DocTemplate::Objects::BaseMetadata.build_from(@foundational_metadata.data), metadata: DocTemplate::Objects::BaseMetadata.build_from(metadata.data), parts: @target_table.try(:parts) } end ) end
parse(content, *args)
click to toggle source
Calls superclass method
Lt::Lcms::Metadata::BaseService::parse
# File lib/lt/lcms/metadata/service.rb, line 38 def parse(content, *args) # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity super if material? @metadata = DocTemplate::Tables::MaterialMetadata.parse content @errors.concat @metadata.errors raise ::MaterialError, 'No metadata present' if !@metadata&.table_exist? || @metadata&.data&.empty? else @metadata = DocTemplate::Tables::Metadata.parse content @errors.concat @metadata.errors raise ::DocumentError, 'No metadata present' unless @metadata&.table_exist? @agenda = DocTemplate::Tables::Agenda.parse content @section_metadata = DocTemplate::Tables::Section.parse content, force_inject_section: force_inject_section? @activity_metadata = DocTemplate::Tables::Activity.parse content, template_type: template_type @target_table = DocTemplate::Tables::Target.parse(content) if target_table? @foundational_metadata = if foundational? @metadata else DocTemplate::Tables::FoundationalMetadata.parse content end end self end
Private Class Methods
force_inject_section?()
click to toggle source
Force injecting of Section metadata only if there are no Agenda tables
# File lib/lt/lcms/metadata/service.rb, line 70 def force_inject_section? @agenda.data.empty? && metadata.data.any? end
foundational?()
click to toggle source
# File lib/lt/lcms/metadata/service.rb, line 74 def foundational? metadata.data['type'].to_s.casecmp('fs').zero? end
lesson_options()
click to toggle source
# File lib/lt/lcms/metadata/service.rb, line 78 def lesson_options { activity: DocTemplate::Objects::ActivityMetadata.build_from(@activity_metadata), agenda: DocTemplate::Objects::AgendaMetadata.build_from(@agenda.data), sections: DocTemplate::Objects::SectionsMetadata.build_from(@section_metadata, template_type) } end
target_table?()
click to toggle source
# File lib/lt/lcms/metadata/service.rb, line 86 def target_table? return false unless metadata.present? metadata.data['subject']&.downcase == 'ela' && metadata.data['grade'] == '6' end
template_type()
click to toggle source
# File lib/lt/lcms/metadata/service.rb, line 92 def template_type foundational? ? 'fs' : 'core' end