aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/chouette/wayback.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/chouette/wayback.rb')
-rw-r--r--app/models/chouette/wayback.rb50
1 files changed, 50 insertions, 0 deletions
diff --git a/app/models/chouette/wayback.rb b/app/models/chouette/wayback.rb
new file mode 100644
index 000000000..b2950449d
--- /dev/null
+++ b/app/models/chouette/wayback.rb
@@ -0,0 +1,50 @@
+class Chouette::Wayback < ActiveSupport::StringInquirer
+
+ def initialize(text_code, numerical_code)
+ super text_code.to_s
+ @numerical_code = numerical_code
+ end
+
+ def self.new(text_code, numerical_code = nil)
+ if text_code and numerical_code
+ super
+ elsif self === text_code
+ text_code
+ else
+ if Fixnum === text_code
+ text_code, numerical_code = definitions.rassoc(text_code)
+ else
+ text_code, numerical_code = definitions.assoc(text_code.to_s)
+ end
+
+ super text_code, numerical_code
+ end
+ end
+
+ def to_i
+ @numerical_code
+ end
+
+ def inspect
+ "#{to_s}/#{to_i}"
+ end
+
+ def name
+ to_s
+ end
+
+ @@definitions = [
+ ["straight_forward", 0],
+ ["backward", 1]
+ ]
+ cattr_reader :definitions
+
+ @@all = nil
+ def self.all
+ @@all ||= definitions.collect do |text_code, numerical_code|
+ new(text_code, numerical_code)
+ end
+ end
+
+end
+