Class: Marshalsea::Chains::Base
- Inherits:
-
Object
- Object
- Marshalsea::Chains::Base
show all
- Defined in:
- lib/marshalsea/chains/base.rb
Constant Summary
collapse
- SUBCLASS_MUST_DEFINE =
"chain must define"
- KIND_PRIMITIVE =
:primitive
- KIND_CHAIN =
:chain
2
- HASH_WITH_ONE_ENTRY =
"{\x06"
- NIL_VALUE =
"0"
- OBJECT_LINK_REFUSED =
"the payload graph contains an object link, whose index would shift " \
"when spliced behind a hash node; build it without repeated objects"
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.affected_requirements ⇒ Object
68
69
70
|
# File 'lib/marshalsea/chains/base.rb', line 68
def affected_requirements
metadata.fetch(:affected).map { |constraint| Gem::Requirement.new(constraint) }
end
|
.affects?(version) ⇒ Boolean
72
73
74
75
|
# File 'lib/marshalsea/chains/base.rb', line 72
def affects?(version)
candidate = Gem::Version.new(version.to_s)
affected_requirements.any? { |requirement| requirement.satisfied_by?(candidate) }
end
|
.chain? ⇒ Boolean
56
57
58
|
# File 'lib/marshalsea/chains/base.rb', line 56
def chain?
kind == KIND_CHAIN
end
|
.chain_name ⇒ Object
36
37
38
|
# File 'lib/marshalsea/chains/base.rb', line 36
def chain_name
metadata.fetch(:name)
end
|
.cve ⇒ Object
44
45
46
|
# File 'lib/marshalsea/chains/base.rb', line 44
def cve
metadata.fetch(:cve)
end
|
.inherited(subclass) ⇒ Object
27
28
29
30
|
# File 'lib/marshalsea/chains/base.rb', line 27
def inherited(subclass)
super
Chains.register(subclass)
end
|
.kind ⇒ Object
52
53
54
|
# File 'lib/marshalsea/chains/base.rb', line 52
def kind
metadata.fetch(:kind)
end
|
.primitive? ⇒ Boolean
60
61
62
|
# File 'lib/marshalsea/chains/base.rb', line 60
def primitive?
kind == KIND_PRIMITIVE
end
|
.required_gems ⇒ Object
64
65
66
|
# File 'lib/marshalsea/chains/base.rb', line 64
def required_gems
metadata.fetch(:requires, [])
end
|
.target_gem ⇒ Object
48
49
50
|
# File 'lib/marshalsea/chains/base.rb', line 48
def target_gem
metadata.fetch(:gem)
end
|
.vector ⇒ Object
40
41
42
|
# File 'lib/marshalsea/chains/base.rb', line 40
def vector
metadata.fetch(:vector)
end
|
Instance Method Details
#serialize ⇒ Object
82
83
84
|
# File 'lib/marshalsea/chains/base.rb', line 82
def serialize
::Marshal.dump(generate)
end
|