summaryrefslogtreecommitdiffstats
path: root/lib/roo/link.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/roo/link.rb')
-rw-r--r--lib/roo/link.rb34
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/roo/link.rb b/lib/roo/link.rb
new file mode 100644
index 0000000..72dc143
--- /dev/null
+++ b/lib/roo/link.rb
@@ -0,0 +1,34 @@
+require 'uri'
+
+module Roo
+ class Link < String
+ # FIXME: Roo::Link inherits from String. A link cell is_a?(Roo::Link). **It is
+ # the only situation where a cells `value` is always a String**. Link
+ # cells have a nifty `to_uri` method, but this method isn't easily
+ # reached. (e.g. `sheet.sheet_for(nil).cells[[row,column]]).value.to_uri`;
+ # `sheet.hyperlink(row, column)` doesn't use `to_uri`).
+ #
+ # 1. Add different types of links (String, Numeric, Date, DateTime, etc.)
+ # 2. Remove Roo::Link.
+ # 3. Don't inherit the string and pass the cell's value.
+ #
+ # I don't know the historical reasons for the Roo::Link, but right now
+ # it seems uneccessary. I'm in favor of keeping it just in case.
+ #
+ # I'm also in favor of passing the cell's value to Roo::Link. The
+ # cell.value's class would still be Roo::Link, but the value itself
+ # would depend on what type of cell it is (Numeric, Date, etc.).
+ #
+ attr_reader :href
+ alias_method :url, :href
+
+ def initialize(href = '', text = href)
+ super(text)
+ @href = href
+ end
+
+ def to_uri
+ URI.parse href
+ end
+ end
+end