Module: Postsvg::Svg::Elements

Defined in:
lib/postsvg/svg/elements.rb,
lib/postsvg/svg/elements/svg.rb,
lib/postsvg/svg/elements/defs.rb,
lib/postsvg/svg/elements/line.rb,
lib/postsvg/svg/elements/path.rb,
lib/postsvg/svg/elements/rect.rb,
lib/postsvg/svg/elements/text.rb,
lib/postsvg/svg/elements/group.rb,
lib/postsvg/svg/elements/image.rb,
lib/postsvg/svg/elements/circle.rb,
lib/postsvg/svg/elements/ellipse.rb,
lib/postsvg/svg/elements/polygon.rb,
lib/postsvg/svg/elements/polyline.rb,
lib/postsvg/svg/elements/clip_path.rb

Overview

Element subclass catalogue. Each subclass is registered with its SVG tag name. The load_all! class method forces each autoload to fire; this populates the Element.registry so Svg::Parser can dispatch by tag name.

Defined Under Namespace

Classes: Circle, ClipPath, Defs, Ellipse, Group, Image, Line, Path, Polygon, Polyline, Rect, Svg, Text

Class Method Summary collapse

Class Method Details

.load_all!Object



25
26
27
# File 'lib/postsvg/svg/elements.rb', line 25

def load_all!
  constants.each { |c| const_get(c) }
end

.node_attributes(node) ⇒ Object



25
26
27
28
29
# File 'lib/postsvg/svg/elements/group.rb', line 25

def self.node_attributes(node)
  attrs = {}
  node.attribute_nodes.each { |a| attrs[a.name] = a.value }
  attrs
end

.parse_clip_path_id(text) ⇒ Object



31
32
33
34
# File 'lib/postsvg/svg/elements/group.rb', line 31

def self.parse_clip_path_id(text)
  m = text&.match(/url\(\s*["']?#([^)\s"']+)/)
  m && m[1]
end