scorm2004-manifest 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.2.0
@@ -32,7 +32,7 @@ module Scorm2004
32
32
  base = basename(name)
33
33
  attributes << base
34
34
  define_method("raw_#{base}") do
35
- el.at("./@#{name}").try(:content) || options[:default].try(:to_s)
35
+ @el.at("./@#{name}").try(:content) || options[:default].try(:to_s)
36
36
  end
37
37
  send("#{type}_attribute", name, options)
38
38
  attr_reader base
@@ -9,12 +9,12 @@ module Scorm2004
9
9
 
10
10
  def at(xpath)
11
11
  xpath = './' + xpath unless /^\.\// =~ xpath
12
- el.at(xpath, NS)
12
+ @el.at(xpath, NS)
13
13
  end
14
14
 
15
15
  def search(xpath)
16
16
  xpath = './' + xpath unless /^\.\// =~ xpath
17
- el.search(xpath, NS)
17
+ @el.search(xpath, NS)
18
18
  end
19
19
 
20
20
  def create_visitor(name)
@@ -13,7 +13,7 @@ module Scorm2004
13
13
  end
14
14
 
15
15
  def referenced_resource
16
- el.at("/imscp:manifest/imscp:resources/imscp:resource[@identifier='#{identifierref}']", NS)
16
+ @el.at("/imscp:manifest/imscp:resources/imscp:resource[@identifier='#{identifierref}']", NS)
17
17
  end
18
18
  end
19
19
  end
@@ -8,7 +8,7 @@ module Scorm2004
8
8
  private
9
9
 
10
10
  def relative_href
11
- value = el.at('./@href', NS)
11
+ value = @el.at('./@href', NS)
12
12
  return unless value
13
13
  uri = URI(value)
14
14
  uri.absolute? ? uri : Pathname(uri.path)
@@ -28,7 +28,7 @@ module Scorm2004
28
28
  end
29
29
 
30
30
  def resource
31
- el.at("/imscp:manifest/imscp:resources/imscp:resource[@identifier='#{identifierref}']", NS)
31
+ @el.at("/imscp:manifest/imscp:resources/imscp:resource[@identifier='#{identifierref}']", NS)
32
32
  end
33
33
  end
34
34
  end
@@ -6,6 +6,8 @@ module Scorm2004
6
6
  include Attributes
7
7
  include XmlBase
8
8
 
9
+ VERSION_SPM = 20
10
+
9
11
  has_one_and_only_one './imscp:metadata/imscp:schema'
10
12
  has_one_and_only_one './imscp:metadata/imscp:schemaversion'
11
13
  has_one_and_only_one 'imscp:resources'
@@ -13,7 +15,7 @@ module Scorm2004
13
15
  has_zero_or_one 'imsss:sequencingCollection'
14
16
 
15
17
  attribute :id, 'identifier'
16
- attribute :string, 'version', spm: 20
18
+ attribute :string, 'version', spm: VERSION_SPM
17
19
  end
18
20
  end
19
21
  end
@@ -4,13 +4,13 @@ module Scorm2004
4
4
  include VisitorPattern
5
5
 
6
6
  def to_f
7
- Float(el.content)
7
+ Float(@el.content)
8
8
  end
9
9
 
10
10
  private
11
11
 
12
12
  def do_visit
13
- error("#{el} should be between -1 and 1.") unless (-1.0..1.0).include?(to_f)
13
+ error("#{@el} should be between -1 and 1.") unless (-1.0..1.0).include?(to_f)
14
14
  end
15
15
  end
16
16
  end
@@ -16,7 +16,7 @@ module Scorm2004
16
16
  end
17
17
 
18
18
  def default_resource
19
- el.at("/imscp:manifest/imscp:organizations/imscp:organization[@identifier='#{default}']", NS)
19
+ @el.at("/imscp:manifest/imscp:organizations/imscp:organization[@identifier='#{default}']", NS)
20
20
  end
21
21
  end
22
22
  end
@@ -14,7 +14,7 @@ module Scorm2004
14
14
  private
15
15
 
16
16
  def do_visit
17
- error(<<EOS) if el.at('./imsss:mapInfo', NS) && objective_id.nil?
17
+ error(<<EOS) if @el.at('./imsss:mapInfo', NS) && objective_id.nil?
18
18
  If a <primaryObjective> contains an objective map (<mapInfo>), then the objectiveID attribute is required.
19
19
  EOS
20
20
  end
@@ -13,7 +13,7 @@ module Scorm2004
13
13
  private
14
14
 
15
15
  def do_visit
16
- parent_name = el.at('..').name
16
+ parent_name = @el.at('..').name
17
17
  case parent_name
18
18
  when 'preConditionRule'
19
19
  error("Invalid rule action in <preConditionRule>: #{action}") unless PRE.include?(action)
@@ -6,11 +6,11 @@ module Scorm2004
6
6
  private
7
7
 
8
8
  def do_visit
9
- error("Invalid schema: #{el.content}") unless valid?
9
+ error('Invalid schema') unless valid?
10
10
  end
11
11
 
12
12
  def valid?
13
- 'ADL SCORM' == el.content
13
+ 'ADL SCORM' == @el.content
14
14
  end
15
15
  end
16
16
  end
@@ -6,11 +6,11 @@ module Scorm2004
6
6
  private
7
7
 
8
8
  def do_visit
9
- error("Invalid schemaversion: #{el.content}") unless valid?
9
+ error('Invalid schemaversion') unless valid?
10
10
  end
11
11
 
12
12
  def valid?
13
- '2004 4th Edition' == el.content
13
+ '2004 4th Edition' == @el.content
14
14
  end
15
15
  end
16
16
  end
@@ -2,7 +2,7 @@ module Scorm2004
2
2
  module Manifest
3
3
  module TextNode
4
4
  def content
5
- el.content
5
+ @el.content
6
6
  end
7
7
  alias :to_s :content
8
8
  alias :to_str :content
@@ -1,8 +1,6 @@
1
1
  module Scorm2004
2
2
  module Manifest
3
3
  module VisitorPattern
4
- attr_reader :el
5
-
6
4
  def self.included(base)
7
5
  base.class_eval do
8
6
  const_set('Error', Class.new(Scorm2004::Manifest::Error))
@@ -21,10 +19,15 @@ module Scorm2004
21
19
  self
22
20
  end
23
21
 
22
+ # @return [Nokogiri::XML::Node, nil] The <metadata> element or +nil+
23
+ def metadata
24
+ @el.at('./imscp:metadata', NS)
25
+ end
26
+
24
27
  private
25
28
 
26
29
  def error(message)
27
- raise("#{self.class}::Error".constantize, [message, el.try(:to_s)].compact.join("\n"))
30
+ raise("#{self.class}::Error".constantize, [message, @el.try(:to_s)].compact.join("\n"))
28
31
  end
29
32
 
30
33
  def check_attributes
@@ -11,7 +11,7 @@ module Scorm2004
11
11
  private
12
12
 
13
13
  def relative_base
14
- value = el.at('./@xml:base', NS)
14
+ value = @el.at('./@xml:base', NS)
15
15
  return unless value
16
16
  error("Invalid XML Base value: #{value}") if %r!^/|[^/]$! =~ value
17
17
  uri = URI(value)
@@ -3,25 +3,32 @@ require_relative '../../helper'
3
3
  module Scorm2004
4
4
  module Manifest
5
5
  class VisitorPatternTest < ActiveSupport::TestCase
6
- class DumbVisitor
6
+ include PartialManifest
7
+
8
+ class Visitor
7
9
  include VisitorPattern
8
10
  end
9
-
10
- include PartialManifest
11
11
 
12
12
  context 'Visitor visiting a element' do
13
13
  setup do
14
- @v = DumbVisitor.new
14
+ @v = Visitor.new
15
15
  el('<dummy />').accept(@v)
16
16
  end
17
17
 
18
- should 'set a Nokogiri node as an attribute named el' do
19
- assert_kind_of Nokogiri::XML::Node, @v.el
20
- end
21
-
22
18
  should 'return self when visiting a element' do
23
19
  assert_equal @v, el('<dummy />').accept(@v)
24
20
  end
21
+
22
+ should 'not have metadata' do
23
+ assert_equal nil, @v.metadata
24
+ end
25
+ end
26
+
27
+ test 'metadata' do
28
+ visitor = Visitor.new
29
+ el('<a><metadata /></a>').accept visitor
30
+ assert_kind_of Nokogiri::XML::Node, visitor.metadata
31
+ assert_equal 'metadata', visitor.metadata.name
25
32
  end
26
33
 
27
34
  context 'Visitor with do_visit method' do
@@ -47,7 +54,7 @@ module Scorm2004
47
54
 
48
55
  context 'Visitor with the attributes class method' do
49
56
  setup do
50
- @v = DumbVisitor.new
57
+ @v = Visitor.new
51
58
  @v.class.stubs(:attributes)
52
59
  end
53
60
 
@@ -65,7 +72,7 @@ module Scorm2004
65
72
 
66
73
  context 'Visitor with the children class method' do
67
74
  setup do
68
- @v = DumbVisitor.new
75
+ @v = Visitor.new
69
76
  @v.class.stubs(:children)
70
77
  end
71
78
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scorm2004-manifest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-16 00:00:00.000000000 Z
12
+ date: 2012-03-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
16
- requirement: &2159029600 !ruby/object:Gem::Requirement
16
+ requirement: &2159964920 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2159029600
24
+ version_requirements: *2159964920
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activesupport
27
- requirement: &2159029120 !ruby/object:Gem::Requirement
27
+ requirement: &2159963820 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2159029120
35
+ version_requirements: *2159963820
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: shoulda-context
38
- requirement: &2159028520 !ruby/object:Gem::Requirement
38
+ requirement: &2159963000 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '1.0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2159028520
46
+ version_requirements: *2159963000
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: mocha
49
- requirement: &2159027940 !ruby/object:Gem::Requirement
49
+ requirement: &2159985660 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.10.4
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2159027940
57
+ version_requirements: *2159985660
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: yard
60
- requirement: &2159027460 !ruby/object:Gem::Requirement
60
+ requirement: &2159985180 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0.7'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2159027460
68
+ version_requirements: *2159985180
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
- requirement: &2164333080 !ruby/object:Gem::Requirement
71
+ requirement: &2159984700 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 1.1.0
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2164333080
79
+ version_requirements: *2159984700
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: jeweler
82
- requirement: &2164332600 !ruby/object:Gem::Requirement
82
+ requirement: &2159984060 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: 1.8.3
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *2164332600
90
+ version_requirements: *2159984060
91
91
  description: ! 'scorm2004-manifest is a Ruby gem that provides a manifest file parser
92
92
  for SCORM 2004 4th edition. It parses and validates the manifest file according
93
93
  to SCORM 2004 4th Edition Content Aggregation Model (CAM) Version 1.1. After parsing
@@ -242,7 +242,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
242
242
  version: '0'
243
243
  segments:
244
244
  - 0
245
- hash: 2466788348493157142
245
+ hash: 3400129364290875966
246
246
  required_rubygems_version: !ruby/object:Gem::Requirement
247
247
  none: false
248
248
  requirements: