Class: GEDCOM::Date

Inherits:
GEDCOM_DATE_PARSER::GEDDateValue show all
Defined in:
lib/gedcom_ruby/date.rb

Overview

/ DatePart

Constant Summary collapse

NONE =

Calendar types

GEDCOM_DATE_PARSER::GCNONE
ABOUT =
GEDCOM_DATE_PARSER::GCABOUT
CALCULATED =
GEDCOM_DATE_PARSER::GCCALCULATED
ESTIMATED =
GEDCOM_DATE_PARSER::GCESTIMATED
BEFORE =
GEDCOM_DATE_PARSER::GCBEFORE
AFTER =
GEDCOM_DATE_PARSER::GCAFTER
BETWEEN =
GEDCOM_DATE_PARSER::GCBETWEEN
FROM =
GEDCOM_DATE_PARSER::GCFROM
TO =
GEDCOM_DATE_PARSER::GCTO
FROMTO =
GEDCOM_DATE_PARSER::GCFROMTO
INTERPRETED =
GEDCOM_DATE_PARSER::GCINTERPRETED
CHILD =
GEDCOM_DATE_PARSER::GCCHILD
CLEARED =
GEDCOM_DATE_PARSER::GCCLEARED
COMPLETED =
GEDCOM_DATE_PARSER::GCCOMPLETED
INFANT =
GEDCOM_DATE_PARSER::GCINFANT
PRE1970 =
GEDCOM_DATE_PARSER::GCPRE1970
QUALIFIED =
GEDCOM_DATE_PARSER::GCQUALIFIED
STILLBORN =
GEDCOM_DATE_PARSER::GCSTILLBORN
SUBMITTED =
GEDCOM_DATE_PARSER::GCSUBMITTED
UNCLEARED =
GEDCOM_DATE_PARSER::GCUNCLEARED
BIC =
GEDCOM_DATE_PARSER::GCBIC
DNS =
GEDCOM_DATE_PARSER::GCDNS
DNSCAN =
GEDCOM_DATE_PARSER::GCDNSCAN
DEAD =
GEDCOM_DATE_PARSER::GCDEAD

Instance Attribute Summary

Attributes inherited from GEDCOM_DATE_PARSER::GEDDateValue

#date1, #date2, #flags

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(date_str, calendar = DateType::DEFAULT) ⇒ Date

Returns a new instance of Date.



161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
# File 'lib/gedcom_ruby/date.rb', line 161

def initialize ( date_str, calendar=DateType::DEFAULT )
  begin
    @date1 = DatePart.new
    @date2 = DatePart.new
    super(GEDCOM_DATE_PARSER::DateParser::GEDFNONE, @date1, @date2)
    GEDCOM_DATE_PARSER::DateParser.parse_gedcom_date( date_str, self, calendar )
 rescue GEDCOM_DATE_PARSER::DateParseException
    err_msg = "format error at '"
    if (@date1 && (@date1.flags & DatePart::NONSTANDARD))
      err_msg += @date1.data.to_s
    elsif (@date2)
      err_msg += @date2.data.to_s
    end
    err_msg += "'"
    if (block_given?)
      yield( err_msg )
    else
      raise DateFormatException, err_msg
    end
  end
end

Class Method Details

.safe_new(parm) ⇒ Object



157
158
159
# File 'lib/gedcom_ruby/date.rb', line 157

def Date.safe_new( parm )
  Date.new( parm ) { |errmsg| }
end

Instance Method Details

#<=>(d) ⇒ Object



208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
# File 'lib/gedcom_ruby/date.rb', line 208

def <=>( d )
  if is_date? and d.is_date?
    rc = ( first <=> d.first )
    return rc unless rc == 0

    if is_range? and d.is_range?
      return ( last <=> d.last )
    elsif is_range?
      return 1
    elsif d.is_range?
      return -1
    end

    return 0
  elsif is_date?
    return -1
  elsif d.is_date?
    return 1
  end

  return format <=> d.format
end

#firstObject



187
188
189
# File 'lib/gedcom_ruby/date.rb', line 187

def first
  @date1
end

#formatObject



183
184
185
# File 'lib/gedcom_ruby/date.rb', line 183

def format
  @flags
end

#is_date?Boolean

Returns:

  • (Boolean)


199
200
201
202
# File 'lib/gedcom_ruby/date.rb', line 199

def is_date?
  (@flags & (NONE | ABOUT | CALCULATED | ESTIMATED | BEFORE | AFTER | BETWEEN \
        | FROM | TO | FROMTO | INTERPRETED)) != 0 ? false : true
end

#is_range?Boolean

Returns:

  • (Boolean)


204
205
206
# File 'lib/gedcom_ruby/date.rb', line 204

def is_range?
  (@flags & (BETWEEN | FROMTO)) != 0 ? true : false
end

#lastObject



191
192
193
# File 'lib/gedcom_ruby/date.rb', line 191

def last
  @date2
end

#to_sObject



195
196
197
# File 'lib/gedcom_ruby/date.rb', line 195

def to_s
  GEDCOM_DATE_PARSER::DateParser.build_gedcom_date_string( self )
end