Class: Writexlsx::Worksheet::ExternalHyperlink

Inherits:
Hyperlink
  • Object
show all
Defined in:
lib/write_xlsx/worksheet/hyperlink.rb

Constant Summary

Constants included from Utility

Utility::COL_MAX, Utility::ROW_MAX, Utility::SHEETNAME_MAX, Utility::STR_MAX

Instance Attribute Summary

Attributes inherited from Hyperlink

#str, #tip

Instance Method Summary collapse

Methods inherited from Hyperlink

#attributes, #display_on, #external_hyper_link, factory

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) ⇒ ExternalHyperlink

Returns a new instance of ExternalHyperlink.



109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# File 'lib/write_xlsx/worksheet/hyperlink.rb', line 109

def initialize(url, str, tip)
  # The displayed string defaults to the url string.
  str ||= url.dup

  # For external links change the directory separator from Unix to Dos.
  url = url.gsub(%r|/|, '\\')
  str.gsub!(%r|/|, '\\')

  # Strip the mailto header.
  str.sub!(/^mailto:/, '')

  # External Workbook links need to be modified into the right format.
  # The URL will look something like 'c:\temp\file.xlsx#Sheet!A1'.
  # We need the part to the left of the # as the URL and the part to
  # the right as the "location" string (if it exists).
  url, url_str = url.split(/#/)

  # Add the file:/// URI to the url if non-local.
  if url =~ %r![:]! ||        # Windows style "C:/" link.
      url =~ %r!^\\\\!        # Network share.
    url = "file:///#{url}"
  end

  # Convert a ./dir/file.xlsx link to dir/file.xlsx.
  url = url.sub(%r!^.\\!, '')

  # 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   = url_str
  @tip       = tip
end