Class: Puppet::Pops::Types::PAbstractTimeDataType
- Inherits:
-
PAbstractRangeType
- Object
- TypedModelObject
- PAnyType
- PScalarType
- PAbstractRangeType
- Puppet::Pops::Types::PAbstractTimeDataType
- Defined in:
- lib/puppet/pops/types/p_timespan_type.rb
Direct Known Subclasses
Constant Summary
Constants inherited from PScalarType
Puppet::Pops::Types::PScalarType::DEFAULT
Constants inherited from PAnyType
Puppet::Pops::Types::PAnyType::DEFAULT
Instance Method Summary collapse
- #_assignable?(o, guard) ⇒ Boolean
- #convert_arg(arg, min) ⇒ Object
-
#initialize(min = nil, max = nil) ⇒ PAbstractTimeDataType
constructor
A new instance of PAbstractTimeDataType.
-
#merge(o) ⇒ PAbstractTimeDataType?
Concatenates this range with another range provided that the ranges intersect or are adjacent.
Methods inherited from PAbstractRangeType
#eql?, #from, #hash, #instance?, #intersect?, #numeric_from, #numeric_to, #to, #unbounded?
Methods inherited from PScalarType
Methods inherited from PAnyType
#==, #accept, #assignable?, #callable?, #callable_args?, #check_self_recursion, #eql?, #generalize, #hash, #instance?, #iterable?, #iterable_type, #kind_of_callable?, #name, new_function, #new_function, #normalize, #really_instance?, register_ptype, #resolve, simple_name, #simple_name, #to_alias_expanded_s, #to_s
Methods inherited from TypedModelObject
_ptype, create_ptype, register_ptypes
Methods included from Visitable
Methods included from PuppetObject
Constructor Details
#initialize(min = nil, max = nil) ⇒ PAbstractTimeDataType
Returns a new instance of PAbstractTimeDataType.
6 7 8 |
# File 'lib/puppet/pops/types/p_timespan_type.rb', line 6 def initialize(min = nil, max = nil) super(convert_arg(min, true), convert_arg(max, false)) end |
Instance Method Details
#_assignable?(o, guard) ⇒ Boolean
46 47 48 |
# File 'lib/puppet/pops/types/p_timespan_type.rb', line 46 def _assignable?(o, guard) self.class == o.class && numeric_from <= o.numeric_from && numeric_to >= o.numeric_to end |
#convert_arg(arg, min) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/puppet/pops/types/p_timespan_type.rb', line 10 def convert_arg(arg, min) case arg when impl_class arg when Hash impl_class.from_hash(arg) when nil, :default nil when String impl_class.parse(arg) when Integer arg == impl_class.new(arg * Time::NSECS_PER_SEC) when Float arg == (min ? -Float::INFINITY : Float::INFINITY) ? arg : impl_class.new(arg * Time::NSECS_PER_SEC) else raise ArgumentError, "Unable to create a #{impl_class.name} from a #{arg.class.name}" unless arg.nil? || arg == :default nil end end |
#merge(o) ⇒ PAbstractTimeDataType?
Concatenates this range with another range provided that the ranges intersect or are adjacent. When that’s not the case, this method will return ‘nil`
36 37 38 39 40 41 42 43 44 |
# File 'lib/puppet/pops/types/p_timespan_type.rb', line 36 def merge(o) if intersect?(o) || adjacent?(o) new_min = numeric_from <= o.numeric_from ? numeric_from : o.numeric_from new_max = numeric_to >= o.numeric_to ? numeric_to : o.numeric_to self.class.new(new_min, new_max) else nil end end |