Class: Writexlsx::Worksheet::Hyperlink
- Inherits:
-
Object
- Object
- Writexlsx::Worksheet::Hyperlink
- Includes:
- Utility
- Defined in:
- lib/write_xlsx/worksheet/hyperlink.rb
Overview
:nodoc:
Direct Known Subclasses
Constant Summary
Constants included from Utility
Utility::COL_MAX, Utility::ROW_MAX, Utility::SHEETNAME_MAX, Utility::STR_MAX
Instance Attribute Summary collapse
-
#str ⇒ Object
readonly
Returns the value of attribute str.
-
#tip ⇒ Object
readonly
Returns the value of attribute tip.
Class Method Summary collapse
Instance Method Summary collapse
- #attributes(row, col, id) ⇒ Object
- #display_on ⇒ Object
- #external_hyper_link ⇒ Object
-
#initialize(url, str, tip) ⇒ Hyperlink
constructor
A new instance of Hyperlink.
Methods included from Utility
#absolute_char, #check_dimensions, #check_dimensions_and_update_max_min_values, #check_parameter, #convert_date_time, #dash_types, delete_files, #fill_properties, #float_to_str, #layout_properties, #line_fill_properties, #line_properties, #palette_color, #pixels_to_points, #ptrue?, #put_deprecate_message, #r_id_attributes, #row_col_notation, #shape_style_base, #store_col_max_min_values, #store_row_max_min_values, #substitute_cellref, #underline_attributes, #v_shape_attributes_base, #v_shape_style_base, #value_or_raise, #write_anchor, #write_auto_fill, #write_color, #write_comment_path, #write_div, #write_fill, #write_font, #write_stroke, #write_xml_declaration, #xl_cell_to_rowcol, #xl_col_to_name, #xl_range, #xl_range_formula, #xl_rowcol_to_cell, #xml_str
Constructor Details
#initialize(url, str, tip) ⇒ Hyperlink
Returns a new instance of Hyperlink.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/write_xlsx/worksheet/hyperlink.rb', line 20 def initialize(url, str, tip) # The displayed string defaults to the url string. str ||= url.dup # Strip the mailto header. str.sub!(/^mailto:/, '') # Escape URL unless it looks already escaped. unless url =~ /%[0-9a-fA-F]{2}/ # Escape the URL escape symbol. url = url.gsub(/%/, "%25") # Escape whitespae in URL. url = url.gsub(/[\s\x00]/, '%20') # Escape other special characters in URL. re = /(["<>\[\]`^{}])/ while re =~ url match = $~[1] url = url.sub(re, sprintf("%%%x", match.ord)) end end # Excel limits escaped URL to 255 characters. if url.bytesize > 255 raise "URL '#{url}' > 255 characters, it exceeds Excel's limit for URLS." end @url = url @str = str @url_str = nil @tip = tip end |
Instance Attribute Details
#str ⇒ Object (readonly)
Returns the value of attribute str.
8 9 10 |
# File 'lib/write_xlsx/worksheet/hyperlink.rb', line 8 def str @str end |
#tip ⇒ Object (readonly)
Returns the value of attribute tip.
8 9 10 |
# File 'lib/write_xlsx/worksheet/hyperlink.rb', line 8 def tip @tip end |
Class Method Details
.factory(url, str = nil, tip = nil) ⇒ Object
10 11 12 13 14 15 16 17 18 |
# File 'lib/write_xlsx/worksheet/hyperlink.rb', line 10 def self.factory(url, str = nil, tip = nil) if url =~ /^internal:(.+)/ InternalHyperlink.new($~[1], str, tip) elsif url =~ /^external:(.+)/ ExternalHyperlink.new($~[1], str, tip) else new(url, str, tip) end end |
Instance Method Details
#attributes(row, col, id) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/write_xlsx/worksheet/hyperlink.rb', line 54 def attributes(row, col, id) ref = xl_rowcol_to_cell(row, col) attr = [ ['ref', ref] ] attr << r_id_attributes(id) attr << ['location', @url_str] if @url_str attr << ['display', @display] if @display attr << ['tooltip', @tip] if @tip attr end |
#display_on ⇒ Object
70 71 72 |
# File 'lib/write_xlsx/worksheet/hyperlink.rb', line 70 def display_on @display = @url_str end |
#external_hyper_link ⇒ Object
66 67 68 |
# File 'lib/write_xlsx/worksheet/hyperlink.rb', line 66 def external_hyper_link ['/hyperlink', @url, 'External'] end |