Class: Writexlsx::Worksheet::ExternalHyperlink

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

Constant Summary

Constants inherited from Hyperlink

Hyperlink::MAXIMUM_URLS_SIZE

Constants included from Utility

Utility::CHAR_WIDTHS, Utility::COL_MAX, Utility::PERL_TRUE_VALUES, 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, #color, #convert_date_time, #convert_font_args, #dash_types, delete_files, #escape_url, #fill_properties, #float_to_str, #get_font_latin_attributes, #get_font_style_attributes, #get_image_properties, #layout_properties, #legend_properties, #line_fill_properties, #line_properties, #palette_color, #params_to_font, #pattern_properties, #pixels_to_points, #process_bmp, #process_gif, #process_jpg, #process_png, #process_workbook_options, #ptrue?, #put_deprecate_message, #quote_sheetname, #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_a_body_pr, #write_a_def_rpr, #write_a_end_para_rpr, #write_a_lst_style, #write_a_p_formula, #write_a_p_pr_formula, #write_a_solid_fill, #write_a_srgb_clr, #write_anchor, #write_auto_fill, #write_color, #write_comment_path, #write_def_rpr_r_pr_common, #write_div, #write_fill, #write_font, #write_stroke, #write_tx_pr, #write_xml_declaration, #xl_cell_to_rowcol, #xl_col_to_name, #xl_range, #xl_range_formula, #xl_rowcol_to_cell, #xl_string_pixel_width, #xml_str

Constructor Details

#initialize(url, str, tip, max_url_length) ⇒ ExternalHyperlink

Returns a new instance of ExternalHyperlink.



98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/write_xlsx/worksheet/hyperlink.rb', line 98

def initialize(url, str, tip, max_url_length)
  # 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 = str.gsub(%r{/}, '\\')

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

  # Split url into the link and optional anchor/location.
  url, url_str = url.split("#", 2)

  # Escape URL unless it looks already escaped.
  url = escape_url(url)

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

  # Convert a ./dir/file.xlsx link to dir/file.xlsx.
  url = url.sub(/^.\\/, '')
  @url_str   = url_str

  # Excel limits the escaped URL and location/anchor to max_url_length characters.
  raise "Ignoring URL '#{url}' where link or anchor > #{max_url_length} characters since it exceeds Excel's limit for URLS. See LIMITATIONS section of the Excel::Writer::XLSX documentation." if url.bytesize > max_url_length || (!@url_str.nil? && @url_str.bytesize > max_url_length)

  @url       = url
  @str       = str
  @tip       = tip
end