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