diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..485dee6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea diff --git a/lib/scorm.rb b/lib/scorm.rb index 1bd9be1..a8496d5 100644 --- a/lib/scorm.rb +++ b/lib/scorm.rb @@ -1,5 +1,5 @@ module Scorm - VERSION = '1.0.2' + VERSION = '1.0.4' end -require 'scorm/package' \ No newline at end of file +require 'scorm/package' diff --git a/lib/scorm/datatypes.rb b/lib/scorm/datatypes.rb index 5bf3196..17fdfce 100644 --- a/lib/scorm/datatypes.rb +++ b/lib/scorm/datatypes.rb @@ -51,6 +51,24 @@ def to_s sec -= min*60 return "#{hours}:#{min}:#{sec}" end + + def to_scorm_s + sec = self.to_f + hours = (sec/60/60).to_i + sec -= hours*60*60 + min = (sec/60).to_i + sec -= min*60 + sec = (sec*100).round/100.0 + + rtn_str = "PT" + if hours > 0 + rtn_str += "#{hours}H" + end + if min > 0 + rtn_str += "#{min}M" + end + rtn_str += "#{sec}S" + end end end diff --git a/lib/scorm/resource.rb b/lib/scorm/resource.rb index 3626a72..cc37b86 100644 --- a/lib/scorm/resource.rb +++ b/lib/scorm/resource.rb @@ -28,19 +28,28 @@ def initialize(id, type, scorm_type, href = nil, metadata = nil, files = nil, de def self.from_xml(element) metadata = nil files = [] + xml_base = element.attribute('xml:base').to_s + REXML::XPath.each(element, 'file') do |file_el| - files << element.attribute('xml:base').to_s + file_el.attribute('href').to_s + file = file_el.attribute('href').to_s + if xml_base.end_with?('/') || file.start_with?('/') + files << xml_base + file + else + files << xml_base + '/' + file + end end dependencies = [] REXML::XPath.each(element, 'dependency') do |dep_el| dependencies << dep_el.attribute('identifierref').to_s end - + + + res = self.new( element.attribute('identifier'), element.attribute('type'), element.attribute('scormType', 'adlcp') || element.attribute('scormtype', 'adlcp'), - element.attribute('xml:base').to_s + element.attribute('href').to_s, + xml_base + element.attribute('href').to_s, metadata, files, dependencies) diff --git a/scorm.gemspec b/scorm.gemspec index dd86e97..5c02864 100644 --- a/scorm.gemspec +++ b/scorm.gemspec @@ -15,5 +15,5 @@ Gem::Specification.new do |s| s.executables = ['scorm'] s.default_executable = 'scorm' - s.add_dependency('rubyzip', '~> 0.9.4') -end \ No newline at end of file + s.add_dependency('rubyzip', '~> 1.0.0') +end