lib/stanford-mods/imprint.rb in stanford-mods-3.3.5 vs lib/stanford-mods/imprint.rb in stanford-mods-3.3.6
- old
+ new
@@ -140,13 +140,13 @@
def initialize(value)
@value = value
end
- # True if the element text isn't blank or the placeholder "9999".
- def valid?
- text.present? && !['9999', '0000-00-00', 'uuuu'].include?(text.strip)
+ # True if the element text isn't blank or one of a set of unparseable values.
+ def parseable?
+ text.present? && !['9999', '0000-00-00', 'uuuu', '[uuuu]'].include?(text.strip)
end
def key_date?
value.key?
end
@@ -159,11 +159,11 @@
date.present?
end
def sort_key
return unless date
-
+
year = if date.is_a?(EDTF::Interval)
date.from.year
else
date.year
end
@@ -339,10 +339,10 @@
end
end
def parse_dates(elements)
# convert to DateValue objects and keep only valid ones
- dates = elements.map(&:as_object).flatten.map { |element| DateValue.new(element) }.select(&:valid?)
+ dates = elements.map(&:as_object).flatten.map { |element| DateValue.new(element) }.select(&:parseable?)
# join any date ranges into DateRange objects
point_dates, dates = dates.partition(&:point)
if point_dates.any?
range = DateRange.new(start: point_dates.find { |date| date.point == 'start' },