aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/chouette/objectid/netex.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/chouette/objectid/netex.rb')
-rw-r--r--app/models/chouette/objectid/netex.rb33
1 files changed, 33 insertions, 0 deletions
diff --git a/app/models/chouette/objectid/netex.rb b/app/models/chouette/objectid/netex.rb
new file mode 100644
index 000000000..5d27abb1f
--- /dev/null
+++ b/app/models/chouette/objectid/netex.rb
@@ -0,0 +1,33 @@
+module Chouette
+ module Objectid
+ class Netex
+ include ActiveModel::Model
+
+ attr_accessor :provider_id, :object_type, :local_id, :creation_id
+ validates_presence_of :provider_id, :object_type, :local_id, :creation_id
+ validate :must_respect_format
+
+ def initialize(**attributes)
+ @provider_id = attributes[:provider_id] || 'chouette'
+ @object_type = attributes[:object_type]
+ @local_id = attributes[:local_id]
+ @creation_id = attributes[:creation_id] || 'LOC'
+ end
+
+ @@format = /^([A-Za-z_-]+):([A-Za-z]+):([0-9A-Za-z_-]+):([A-Za-z]+)$/
+ cattr_reader :format
+
+ def to_s
+ "#{self.provider_id}:#{self.object_type}:#{self.local_id}:#{self.creation_id}"
+ end
+
+ def must_respect_format
+ self.to_s.match(self.class.format)
+ end
+
+ def short_id
+ local_id.try(:split, "-").try(:first)
+ end
+ end
+ end
+end \ No newline at end of file