uddf 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,838 @@
1
+ # frozen_string_literal: true
2
+
3
+ module UDDF
4
+ module Base
5
+ module Models
6
+ ##
7
+ # Inside <address> the own (<owner> element) address data,
8
+ # or that of dive buddies (<buddy> element),
9
+ # or that of a shop (<shop> element) etc., are given.
10
+ class Address
11
+ include HappyMapper
12
+
13
+ tag "address"
14
+
15
+ has_one :street, String
16
+ has_one :city, String
17
+ has_one :postcode, String
18
+ has_one :country, String
19
+ has_one :province, String
20
+ end
21
+
22
+ ##
23
+ # Inside <contact> data concerning getting in touch with some one are
24
+ # given, like phone number, email address, language etc.
25
+ class Contact
26
+ include HappyMapper
27
+
28
+ tag "contact"
29
+
30
+ has_many :emails, String, tag: "email"
31
+ has_many :faxes, String, tag: "fax"
32
+ has_many :homepages, String, tag: "homepage"
33
+ has_many :languages, String, tag: "language"
34
+ has_many :mobile_phones, String, tag: "mobilephone"
35
+ has_many :phones, String, tag: "phone"
36
+ end
37
+
38
+ class DateTimeField
39
+ include HappyMapper
40
+
41
+ element :raw, String, tag: "datetime"
42
+
43
+ # Lazily parse on first access; memoize in @date_time
44
+ def date_time
45
+ return @date_time if @date_time
46
+
47
+ content = raw.to_s.strip
48
+ return nil if content.empty?
49
+
50
+ @date_time =
51
+ case content
52
+ when /^\d{4}$/ # "YYYY"
53
+ DateTime.new(content.to_i, 1, 1)
54
+ when /^\d{4}-\d{2}$/ # "YYYY-MM"
55
+ y, m = content.split("-").map!(&:to_i)
56
+ DateTime.new(y, m, 1)
57
+ else
58
+ begin
59
+ DateTime.iso8601(content)
60
+ rescue ArgumentError, DateError
61
+ begin
62
+ DateTime.rfc3339(content)
63
+ rescue ArgumentError, DateError
64
+ DateTime.parse(content)
65
+ end
66
+ end
67
+ end
68
+ end
69
+
70
+ # Allow manual assignment if you ever need it
71
+ attr_writer :date_time
72
+ end
73
+
74
+ class Manufacturer
75
+ include HappyMapper
76
+
77
+ tag "manufacturer"
78
+
79
+ attribute :id, String
80
+ has_one :address, Address
81
+ has_many :alias_names, String, tag: "aliasname"
82
+ has_one :contact, Contact
83
+ has_one :name, String
84
+ end
85
+
86
+ class Link
87
+ include HappyMapper
88
+
89
+ tag "link"
90
+
91
+ attribute :ref, String
92
+ end
93
+
94
+ class Generator
95
+ include HappyMapper
96
+
97
+ tag "generator"
98
+
99
+ has_many :alias_names, String, tag: "aliasname"
100
+ has_one :datetime, DateTime
101
+ has_many :links, Link, tag: "link"
102
+ has_one :name, String
103
+ has_one :type, String
104
+ has_one :version, String
105
+ end
106
+
107
+ class Notes
108
+ include HappyMapper
109
+
110
+ tag "notes"
111
+
112
+ has_many :paras, String, tag: "para"
113
+ has_many :links, Link, tag: "link"
114
+ end
115
+
116
+ class Price
117
+ include HappyMapper
118
+
119
+ tag "price"
120
+
121
+ attribute :currency, String
122
+ content :value, Float
123
+ end
124
+
125
+ class Shop
126
+ include HappyMapper
127
+
128
+ tag "shop"
129
+
130
+ has_many :alias_names, String, tag: "aliasname"
131
+ has_one :address, Address
132
+ has_one :contact, Contact
133
+ has_one :name, String
134
+ has_one :notes, Notes
135
+ end
136
+
137
+ class Purchase
138
+ include HappyMapper
139
+
140
+ tag "purchase"
141
+
142
+ has_one :datetime, DateTime
143
+ has_one :link, Link
144
+ has_one :price, Price
145
+ has_one :shop, Shop
146
+ end
147
+
148
+ class Mix
149
+ include HappyMapper
150
+
151
+ tag "mix"
152
+
153
+ attribute :id, String
154
+ has_many :alias_names, String, tag: "aliasname"
155
+ has_one :ar, Float
156
+ has_one :equivalent_air_depth, Float, tag: "equivalentairdepth"
157
+ has_one :h2, Float
158
+ has_one :he, Float
159
+ has_one :maximum_operation_depth, Float, tag: "maximumoperationdepth"
160
+ has_one :maximum_po2, Float, tag: "maximumpo2"
161
+ has_one :n2, Float
162
+ has_one :name, String
163
+ has_one :o2, Float
164
+ has_one :price_per_litre, Price, tag: "priceperlitre"
165
+ end
166
+
167
+ class GasDefinitions
168
+ include HappyMapper
169
+
170
+ tag "gasdefinitions"
171
+
172
+ has_many :mixes, Mix, tag: "mix"
173
+ end
174
+
175
+ class Medicine
176
+ include HappyMapper
177
+
178
+ tag "medicine"
179
+
180
+ has_many :alias_names, String, tag: "aliasname"
181
+ has_one :name, String
182
+ has_one :notes, Notes
183
+ has_one :periodically_taken, String, tag: "periodicallytaken"
184
+ has_one :timespan_before_dive, Float, tag: "timespanbeforedive"
185
+ end
186
+
187
+ class MedicationBeforeDive
188
+ include HappyMapper
189
+
190
+ tag "medicationbeforedive"
191
+
192
+ has_many :medicines, Medicine, tag: "medicine"
193
+ end
194
+
195
+ class Drink
196
+ include HappyMapper
197
+
198
+ tag "drink"
199
+
200
+ has_many :alias_names, String, tag: "aliasname"
201
+ has_one :name, String
202
+ has_one :notes, Notes
203
+ has_one :periodically_taken, String, tag: "periodicallytaken"
204
+ has_one :timespan_before_dive, Float, tag: "timespanbeforedive"
205
+ end
206
+
207
+ class AlcoholBeforeDive
208
+ include HappyMapper
209
+
210
+ tag "alcoholbeforedive"
211
+
212
+ has_many :drinks, Drink, tag: "drink"
213
+ end
214
+
215
+ class AnySymptoms
216
+ include HappyMapper
217
+
218
+ tag "anysymptoms"
219
+
220
+ has_one :notes, Notes
221
+ end
222
+
223
+ class Abundance
224
+ include HappyMapper
225
+
226
+ tag "abundance"
227
+
228
+ attribute :quality, String
229
+ attribute :occurrence, String
230
+ content :value, Integer
231
+ end
232
+
233
+ class Species
234
+ include HappyMapper
235
+
236
+ tag "species"
237
+
238
+ attribute :id, String
239
+ has_one :abundance, Abundance
240
+ has_one :age, Integer
241
+ has_one :dominance, String
242
+ has_one :life_stage, String, tag: "lifestage"
243
+ has_one :notes, Notes
244
+ has_one :scientific_name, String, tag: "scientificname"
245
+ has_one :sex, String
246
+ has_one :size, Float
247
+ has_one :trivial_name, String, tag: "trivialname"
248
+ end
249
+
250
+ class WithSpecies
251
+ include HappyMapper
252
+
253
+ has_many :species, Species, tag: "species"
254
+ end
255
+
256
+ class Invertebrata
257
+ include HappyMapper
258
+
259
+ tag "invertebrata"
260
+
261
+ has_one :ascidiacea, WithSpecies
262
+ has_one :bryozoan, WithSpecies
263
+ has_one :cnidaria, WithSpecies
264
+ has_one :coelenterata, WithSpecies
265
+ has_one :crustacea, WithSpecies
266
+ has_one :ctenophora, WithSpecies
267
+ has_one :echinodermata, WithSpecies
268
+ has_one :invertebrata_various, WithSpecies, tag: "invertebratavarious"
269
+ has_one :mollusca, WithSpecies
270
+ has_one :phoronidea, WithSpecies
271
+ has_one :plathelminthes, WithSpecies
272
+ has_one :porifera, WithSpecies
273
+ end
274
+
275
+ class Vertebrata
276
+ include HappyMapper
277
+
278
+ tag "vertebrata"
279
+
280
+ has_one :amphibia, WithSpecies
281
+ has_one :chondrichthyes, WithSpecies
282
+ has_one :mammalia, WithSpecies
283
+ has_one :osteichthyes, WithSpecies
284
+ has_one :reptilia, WithSpecies
285
+ has_one :vertebrata_various, WithSpecies, tag: "vertebratavarious"
286
+ end
287
+
288
+ class Fauna
289
+ include HappyMapper
290
+
291
+ tag "fauna"
292
+
293
+ has_one :invertebrata, Invertebrata
294
+ has_one :notes, Notes
295
+ has_one :vertebrata, Vertebrata
296
+ end
297
+
298
+ class Flora
299
+ include HappyMapper
300
+
301
+ tag "flora"
302
+
303
+ has_one :chlorophyceae, WithSpecies
304
+ has_one :flora_various, WithSpecies, tag: "floravarious"
305
+ has_one :notes, Notes
306
+ has_one :phaeophyceae, WithSpecies
307
+ has_one :rhodophyceae, WithSpecies
308
+ has_one :spermatophyta, WithSpecies
309
+ end
310
+
311
+ class Observations
312
+ include HappyMapper
313
+
314
+ tag "observations"
315
+
316
+ has_one :fauna, Fauna
317
+ has_one :flora, Flora
318
+ has_one :notes, Notes
319
+ end
320
+
321
+ class Geography
322
+ include HappyMapper
323
+
324
+ tag "geography"
325
+
326
+ has_one :address, Address
327
+ has_one :altitude, Float
328
+ has_one :latitude, Float
329
+ has_one :location, String
330
+ has_one :longitude, Float
331
+ has_one :time_zone, Float, tag: "timezone"
332
+ end
333
+
334
+ class Ecology
335
+ include HappyMapper
336
+
337
+ tag "ecology"
338
+
339
+ has_one :fauna, Fauna
340
+ has_one :flora, Flora
341
+ end
342
+
343
+ class Built
344
+ include HappyMapper
345
+
346
+ tag "built"
347
+
348
+ has_one :launching_date, DateTimeField, tag: "launchingdate"
349
+ has_one :ship_yard, String, tag: "shipyard"
350
+ end
351
+
352
+ class ShipDimension
353
+ include HappyMapper
354
+
355
+ tag "shipdimension"
356
+
357
+ has_one :beam, Float
358
+ has_one :displacement, Float
359
+ has_one :draught, Float
360
+ has_one :length, Float
361
+ has_one :tonnage, Float
362
+ end
363
+
364
+ class Wreck
365
+ include HappyMapper
366
+
367
+ tag "wreck"
368
+
369
+ has_many :alias_names, String, tag: "aliasname"
370
+ has_one :built, Built
371
+ has_one :name, String
372
+ has_one :nationality, String
373
+ has_one :ship_dimension, ShipDimension, tag: "shipdimension"
374
+ has_one :ship_type, String, tag: "shiptype"
375
+ has_one :sunk, DateTimeField
376
+ end
377
+
378
+ class Shore
379
+ include HappyMapper
380
+
381
+ tag "shore"
382
+
383
+ attribute :id, String
384
+ has_many :alias_names, String, tag: "aliasname"
385
+ has_one :name, String
386
+ has_one :notes, Notes
387
+ end
388
+
389
+ class River
390
+ include HappyMapper
391
+
392
+ tag "river"
393
+
394
+ attribute :id, String
395
+ has_many :alias_names, String, tag: "aliasname"
396
+ has_one :name, String
397
+ has_one :notes, Notes
398
+ end
399
+
400
+ class Lake
401
+ include HappyMapper
402
+
403
+ tag "lake"
404
+
405
+ attribute :id, String
406
+ has_many :alias_names, String, tag: "aliasname"
407
+ has_one :name, String
408
+ has_one :notes, Notes
409
+ end
410
+
411
+ class Indoor
412
+ include HappyMapper
413
+
414
+ tag "indoor"
415
+
416
+ has_one :address, Address
417
+ has_many :alias_names, String, tag: "aliasname"
418
+ has_one :contact, Contact
419
+ has_one :name, String
420
+ has_one :notes, Notes
421
+ end
422
+
423
+ class Cave
424
+ include HappyMapper
425
+
426
+ tag "cave"
427
+
428
+ attribute :id, String
429
+ has_many :alias_names, String, tag: "aliasname"
430
+ has_one :name, String
431
+ has_one :notes, Notes
432
+ end
433
+
434
+ class SiteData
435
+ include HappyMapper
436
+
437
+ tag "sidedata"
438
+
439
+ has_one :area_length, Float, tag: "arealength"
440
+ has_one :area_width, Float, tag: "areawidth"
441
+ has_one :average_visibility, Float, tag: "averagevisibility"
442
+ has_one :bottom, String
443
+ has_one :cave, Cave
444
+ has_one :density, Float
445
+ has_one :difficulty, Integer
446
+ has_one :global_light_intensity, String, tag: "globallightintensity"
447
+ has_one :indoor, Indoor
448
+ has_one :maximum_depth, Float, tag: "maximumdepth"
449
+ has_one :maximum_visibility, Float, tag: "maximumvisibility"
450
+ has_one :minimum_depth, Float, tag: "minimumdepth"
451
+ has_one :minimum_visibility, Float, tag: "minimumvisibility"
452
+ has_one :river, River
453
+ has_one :shore, Shore
454
+ has_one :terrain, String
455
+ has_one :wreck, Wreck
456
+ end
457
+
458
+ class Rating
459
+ include HappyMapper
460
+
461
+ tag "rating"
462
+
463
+ has_one :datetime, DateTime
464
+ has_one :rating_value, Integer, tag: "ratingvalue"
465
+ end
466
+
467
+ class Site
468
+ include HappyMapper
469
+
470
+ tag "site"
471
+
472
+ attribute :id, String
473
+ has_many :alias_names, String, tag: "aliasname"
474
+ has_one :ecology, Ecology
475
+ has_one :environment, String
476
+ has_one :geography, Geography
477
+ has_many :links, Link, tag: "link"
478
+ has_one :name, String
479
+ has_one :notes, Notes
480
+ has_many :ratings, Rating, tag: "rating"
481
+ has_one :side_data, SiteData, tag: "sitedata"
482
+ end
483
+
484
+ class Membership
485
+ include HappyMapper
486
+
487
+ tag "membership"
488
+
489
+ attribute :organisation, String
490
+ attribute :member_id, String, tag: "memberid"
491
+ end
492
+
493
+ class NumberOfDives
494
+ include HappyMapper
495
+
496
+ tag "numberofdives"
497
+
498
+ has_one :start_date, DateTime, tag: "startdate"
499
+ has_one :end_date, DateTime, tag: "enddate"
500
+ has_one :dives, Integer
501
+ end
502
+
503
+ class Personal
504
+ include HappyMapper
505
+
506
+ tag "personal"
507
+
508
+ has_one :birth_date, DateTimeField, tag: "birthdate"
509
+ has_one :birth_name, String, tag: "birthname"
510
+ has_one :blood_group, String, tag: "bloodgroup"
511
+ has_one :first_name, String, tag: "firstname"
512
+ has_one :height, Float
513
+ has_one :honorific, String
514
+ has_one :last_name, String, tag: "lastname"
515
+ has_one :membership, Membership
516
+ has_one :middle_name, String, tag: "middlename"
517
+ has_one :number_of_dives, NumberOfDives, tag: "numberofdives"
518
+ has_one :sex, String
519
+ has_one :smoking, String
520
+ has_one :weight, Float
521
+ end
522
+
523
+ class Instructor
524
+ include HappyMapper
525
+
526
+ tag "instructor"
527
+
528
+ has_one :address, Address
529
+ has_one :contact, Contact
530
+ has_one :personal, Personal
531
+ end
532
+
533
+ class Doctor
534
+ include HappyMapper
535
+
536
+ tag "doctor"
537
+
538
+ attribute :id, String
539
+ has_one :address, Address
540
+ has_one :contact, Contact
541
+ has_one :personal, Personal
542
+ end
543
+
544
+ class Examination
545
+ include HappyMapper
546
+
547
+ tag "examination"
548
+
549
+ has_one :datetime, DateTime
550
+ has_one :doctor, Doctor
551
+ has_one :examination_result, String, tag: "examinationresult"
552
+ has_many :links, Link, tag: "link"
553
+ has_one :notes, Notes
554
+ has_one :total_lung_capacity, Float, tag: "totallungcapacity"
555
+ has_one :vital_capacity, Float, tag: "vitalcapacity"
556
+ end
557
+
558
+ class Medical
559
+ include HappyMapper
560
+
561
+ tag "medical"
562
+
563
+ has_one :examination, Examination
564
+ end
565
+
566
+ class Certification
567
+ include HappyMapper
568
+
569
+ tag "certification"
570
+
571
+ has_one :instructor, Instructor
572
+ has_one :issue_date, DateTimeField, tag: "issuedate"
573
+ has_one :level, String
574
+ has_one :link, Link
575
+ has_one :organization, String
576
+ has_one :specialty, String
577
+ has_one :valid_date, DateTimeField, tag: "validdate"
578
+ end
579
+
580
+ class CertificationV322 < Certification
581
+ include HappyMapper
582
+
583
+ # Added in v3.2.2
584
+ has_one :certificate_number, String, tag: "certificatenumber"
585
+ end
586
+
587
+ class Education
588
+ include HappyMapper
589
+
590
+ tag "education"
591
+
592
+ has_many :certifications, Certification, tag: "certification"
593
+ end
594
+
595
+ class EducationV322 < Education
596
+ include HappyMapper
597
+
598
+ has_many :certifications, CertificationV322, tag: "certification"
599
+ end
600
+
601
+ class Vessel
602
+ include HappyMapper
603
+
604
+ tag "vessel"
605
+
606
+ has_one :address, Address
607
+ has_many :alias_names, String, tag: "aliasname"
608
+ has_one :contact, Contact
609
+ has_one :marina, String
610
+ has_one :name, String
611
+ has_one :notes, Notes
612
+ has_many :ratings, Rating, tag: "rating"
613
+ has_one :ship_dimension, ShipDimension, tag: "shipdimension"
614
+ has_one :ship_type, String, tag: "shiptype"
615
+ end
616
+
617
+ class Operator
618
+ include HappyMapper
619
+
620
+ tag "operator"
621
+
622
+ has_many :alias_names, String, tag: "aliasname"
623
+ has_one :address, Address
624
+ has_one :contact, Contact
625
+ has_one :name, String
626
+ has_one :notes, Notes
627
+ has_many :ratings, Rating, tag: "rating"
628
+ end
629
+
630
+ class DateOfTrip
631
+ include HappyMapper
632
+
633
+ tag "dateoftrip"
634
+
635
+ attribute :start_date, DateTime, tag: "startdate"
636
+ attribute :end_date, DateTime, tag: "enddate"
637
+ end
638
+
639
+ class Accommodation
640
+ include HappyMapper
641
+
642
+ tag "accommodation"
643
+
644
+ has_one :address, Address
645
+ has_many :alias_names, String, tag: "aliasname"
646
+ has_one :category, String
647
+ has_one :contact, Contact
648
+ has_one :name, String
649
+ has_one :notes, Notes
650
+ has_many :ratings, Rating, tag: "rating"
651
+ end
652
+
653
+ class PriceDivePackage
654
+ include HappyMapper
655
+
656
+ tag "pricedivepackage"
657
+
658
+ attribute :currency, String
659
+ attribute :no_of_dives, Integer, tag: "noofdives"
660
+ content :value, Float
661
+ end
662
+
663
+ class RelatedDives
664
+ include HappyMapper
665
+
666
+ tag "relateddives"
667
+
668
+ has_many :links, Link, tag: "link"
669
+ end
670
+
671
+ class TripPart
672
+ include HappyMapper
673
+
674
+ tag "trippart"
675
+
676
+ attribute :type, String
677
+ has_one :accommodation, Accommodation
678
+ has_one :date_of_trip, DateOfTrip, tag: "dateoftrip"
679
+ has_one :geography, Geography
680
+ has_many :links, Link, tag: "link"
681
+ has_one :name, String
682
+ has_one :notes, Notes
683
+ has_one :operator, Operator
684
+ has_one :price_dive_package, PriceDivePackage, tag: "pricedivepackage"
685
+ has_one :price_per_dive, Price, tag: "priceperdive"
686
+ has_one :related_dives, RelatedDives, tag: "relateddives"
687
+ has_one :vessel, Vessel
688
+ end
689
+
690
+ class Trip
691
+ include HappyMapper
692
+
693
+ tag "trip"
694
+
695
+ attribute :id, String
696
+ has_many :alias_names, String, tag: "aliasname"
697
+ has_one :name, String
698
+ has_many :ratings, Rating, tag: "rating"
699
+ has_many :trip_parts, TripPart, tag: "trippart"
700
+ end
701
+
702
+ class DiveTrip
703
+ include HappyMapper
704
+
705
+ tag "divetrip"
706
+
707
+ has_many :trips, Trip, tag: "trip"
708
+ end
709
+
710
+ class Guide
711
+ include HappyMapper
712
+
713
+ tag "guide"
714
+
715
+ has_many :links, Link, tag: "link"
716
+ end
717
+
718
+ class DiveBase
719
+ include HappyMapper
720
+
721
+ tag "divebase"
722
+
723
+ attribute :id, String
724
+ has_one :address, Address
725
+ has_many :alias_names, String, tag: "aliasname"
726
+ has_one :contact, Contact
727
+ has_many :guides, Guide, tag: "guide"
728
+ has_many :links, Link, tag: "link"
729
+ has_one :name, String
730
+ has_one :notes, Notes
731
+ has_one :price_dive_package, PriceDivePackage, tag: "pricedivepackage"
732
+ has_one :price_per_dive, Price, tag: "priceperdive"
733
+ has_many :ratings, Rating, tag: "rating"
734
+ end
735
+
736
+ class DiveSite
737
+ include HappyMapper
738
+
739
+ tag "divesite"
740
+
741
+ has_many :dive_bases, DiveBase, tag: "divebase"
742
+ has_many :sites, Site, tag: "site"
743
+ end
744
+
745
+ class Insurance
746
+ include HappyMapper
747
+
748
+ tag "insurance"
749
+
750
+ has_many :alias_names, String, tag: "aliasname"
751
+ has_one :issue_date, DateTimeField, tag: "issuedate"
752
+ has_one :name, String
753
+ has_one :notes, Notes
754
+ has_one :valid_date, DateTimeField, tag: "validdate"
755
+ end
756
+
757
+ class DiveInsurances
758
+ include HappyMapper
759
+
760
+ tag "diveinsurances"
761
+
762
+ has_many :insurances, Insurance, tag: "insurance"
763
+ end
764
+
765
+ class Permit
766
+ include HappyMapper
767
+
768
+ tag "permit"
769
+
770
+ has_many :alias_names, String, tag: "aliasname"
771
+ has_one :issue_date, DateTimeField, tag: "issuedate"
772
+ has_one :name, String
773
+ has_one :notes, Notes
774
+ has_one :region, String
775
+ has_one :valid_date, DateTimeField, tag: "validdate"
776
+ end
777
+
778
+ class DivePermissions
779
+ include HappyMapper
780
+
781
+ tag "divepermissions"
782
+
783
+ has_many :permits, Permit, tag: "permit"
784
+ end
785
+
786
+ class GlobalAlarmsGiven
787
+ include HappyMapper
788
+
789
+ tag "globalalarmsgiven"
790
+
791
+ has_many :global_alarms, String, tag: "globalalarm"
792
+ end
793
+
794
+ class WayAltitude
795
+ include HappyMapper
796
+
797
+ tag "wayaltitude"
798
+
799
+ attribute :way_time, Float, tag: "waytime"
800
+ content :value, Float
801
+ end
802
+
803
+ class ExposureToAltitude
804
+ include HappyMapper
805
+
806
+ tag "exposuretoaltitude"
807
+
808
+ has_one :altitude_of_exposure, Float, tag: "altitudeofexposure"
809
+ has_one :date_of_flight, Base::Models::DateTimeField, tag: "dateofflight"
810
+ has_one :surface_interval_before_altitude_exposure, Float, tag: "surfaceintervalbeforealtitudeexposure"
811
+ has_one :total_length_of_exposure, Float, tag: "totallengthofexposure"
812
+ has_one :transportation, String
813
+ end
814
+
815
+ class SurfaceIntervalBeforeDive
816
+ include HappyMapper
817
+
818
+ tag "surfaceintervalbeforedive"
819
+
820
+ has_one :exposure_to_altitude, ExposureToAltitude, tag: "exposuretoaltitude"
821
+ has_one :infinity, String
822
+ has_one :passed_time, Float, tag: "passedtime"
823
+ has_many :way_altitudes, WayAltitude, tag: "wayaltitude"
824
+ end
825
+
826
+ class SurfaceIntervalAfterDive
827
+ include HappyMapper
828
+
829
+ tag "surfaceintervalafterdive"
830
+
831
+ has_one :exposure_to_altitude, ExposureToAltitude, tag: "exposuretoaltitude"
832
+ has_one :infinity, String
833
+ has_one :passed_time, Float, tag: "passedtime"
834
+ has_many :way_altitudes, WayAltitude, tag: "wayaltitude"
835
+ end
836
+ end
837
+ end
838
+ end