Class: Sablon::Processor::Document::ImageBlock
- Inherits:
-
ParagraphBlock
- Object
- Block
- ParagraphBlock
- Sablon::Processor::Document::ImageBlock
- Defined in:
- lib/sablon/processor/document/blocks.rb
Instance Attribute Summary
Attributes inherited from Block
Class Method Summary collapse
Instance Method Summary collapse
Methods inherited from Block
#body, enclosed_by, #end_node, #initialize, parent, parent_selector, #process, #remove_control_elements, #start_node
Constructor Details
This class inherits a constructor from Sablon::Processor::Document::Block
Class Method Details
.encloses?(start_field, end_field) ⇒ Boolean
90 91 92 |
# File 'lib/sablon/processor/document/blocks.rb', line 90 def self.encloses?(start_field, end_field) start_field.expression.start_with?('@') end |
Instance Method Details
#replace(image) ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/sablon/processor/document/blocks.rb', line 94 def replace(image) # we need to include the start and end nodes incase the image is # inline with the merge fields nodes = [start_node] + body + [end_node] # if image nodes.each do |node| pic_prop = node.at_xpath('.//pic:cNvPr', pic: 'http://schemas.openxmlformats.org/drawingml/2006/picture') pic_prop.attributes['name'].value = image.name if pic_prop blip = node.at_xpath('.//a:blip', a: 'http://schemas.openxmlformats.org/drawingml/2006/main') blip.attributes['embed'].value = image.local_rid if blip drawing_size = node.at_xpath('.//wp:extent') # if image properties are defined, the size of the placeholder image # should be replaced with the actual values if image.width && image.height drawing_size.attributes['cx'].value = image.width.to_s if drawing_size drawing_size.attributes['cy'].value = image.height.to_s if drawing_size pic_size = node.at_xpath('.//a:xfrm//a:ext', a: 'http://schemas.openxmlformats.org/drawingml/2006/main') pic_size.attributes['cx'].value = image.width.to_s if pic_size pic_size.attributes['cy'].value = image.height.to_s if pic_size end end end # start_field.remove end_field.remove end |