Module: Writexlsx::Worksheet::DrawingRelations

Included in:
Writexlsx::Worksheet
Defined in:
lib/write_xlsx/worksheet/drawing_relations.rb

Instance Method Summary collapse

Instance Method Details



71
72
73
# File 'lib/write_xlsx/worksheet/drawing_relations.rb', line 71

def drawing_links
  [@drawing_links]
end

#drawing_rel_index(target = nil) ⇒ Object

DrawingRelations

Manages drawing relationships and external linkage information.

Responsibilities:

  • Relationship ID allocation for drawings and VML objects
  • Tracking drawing and VML relationship mappings
  • Managing external links for drawings, comments, tables, and media
  • Providing relationship data for rels file generation

This module handles how drawing resources are linked together. It does not prepare drawing objects or write XML output.

Get the index used to address a drawing rel link.



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/write_xlsx/worksheet/drawing_relations.rb', line 26

def drawing_rel_index(target = nil)
  if !target
    # Undefined values for drawings like charts will always be unique.
    @drawing_rels_id += 1
  elsif ptrue?(@drawing_rels[target])
    @drawing_rels[target]
  else
    @drawing_rels_id += 1
    @drawing_rels[target] = @drawing_rels_id
  end
end


60
61
62
63
64
65
66
67
68
69
# File 'lib/write_xlsx/worksheet/drawing_relations.rb', line 60

def external_links
  [
    @external_hyper_links,
    @external_drawing_links,
    @external_vml_links,
    @external_background_links,
    @external_table_links,
    @external_comment_links
  ].reject(&:empty?)
end

#get_vml_drawing_rel_index(target) ⇒ Object

Get the index used to address a vml_drawing rel link.



41
42
43
44
45
46
47
48
# File 'lib/write_xlsx/worksheet/drawing_relations.rb', line 41

def get_vml_drawing_rel_index(target)
  if @vml_drawing_rels[target]
    @vml_drawing_rels[target]
  else
    @vml_drawing_rels_id += 1
    @vml_drawing_rels[target] = @vml_drawing_rels_id
  end
end

:nodoc:



55
56
57
58
# File 'lib/write_xlsx/worksheet/drawing_relations.rb', line 55

def set_external_comment_links(comment_id) # :nodoc:
  @external_comment_links <<
    ['/comments',   "../comments#{comment_id}.xml"]
end

:nodoc:



50
51
52
53
# File 'lib/write_xlsx/worksheet/drawing_relations.rb', line 50

def set_external_vml_links(vml_drawing_id) # :nodoc:
  @external_vml_links <<
    ['/vmlDrawing', "../drawings/vmlDrawing#{vml_drawing_id}.vml"]
end