Class: Emfsvg::Svg::Element
- Inherits:
-
Object
- Object
- Emfsvg::Svg::Element
- Defined in:
- lib/emfsvg/svg/element.rb
Overview
Base value object for an SVG element. Subclasses (Svg::Elements::*) carry typed semantic fields; the base provides a uniform interface for the translation layer's dispatch.
Element instances are immutable: built once from a Nokogiri node via the .from_node factory. The node is not retained.
Direct Known Subclasses
Emfsvg::Svg::Elements::Circle, Emfsvg::Svg::Elements::ClipPath, Emfsvg::Svg::Elements::Defs, Emfsvg::Svg::Elements::Ellipse, Emfsvg::Svg::Elements::Group, Emfsvg::Svg::Elements::Image, Emfsvg::Svg::Elements::Line, Emfsvg::Svg::Elements::Path, Emfsvg::Svg::Elements::Polygon, Emfsvg::Svg::Elements::Polyline, Emfsvg::Svg::Elements::Rect, Emfsvg::Svg::Elements::Text, OpenElement
Constant Summary collapse
- ELEMENT_NAME =
"abstract"
Class Attribute Summary collapse
-
.registry ⇒ Object
readonly
Returns the value of attribute registry.
Class Method Summary collapse
Instance Method Summary collapse
- #children ⇒ Object
-
#clip_path ⇒ Object
All elements expose
clip_path(nil by default) so the SharedGdi module can treat every element uniformly. - #element_name ⇒ Object
Class Attribute Details
.registry ⇒ Object (readonly)
Returns the value of attribute registry.
35 36 37 |
# File 'lib/emfsvg/svg/element.rb', line 35 def registry @registry end |
Class Method Details
.from_node(node) ⇒ Object
41 42 43 44 45 46 47 48 |
# File 'lib/emfsvg/svg/element.rb', line 41 def from_node(node) subclass = @registry[node.name] return subclass.from_node(node) if subclass OpenElement.new(name: node.name, children: node.element_children.map do |c| from_node(c) end) end |
.register(element_name, subclass) ⇒ Object
37 38 39 |
# File 'lib/emfsvg/svg/element.rb', line 37 def register(element_name, subclass) @registry[element_name] = subclass end |
Instance Method Details
#children ⇒ Object
18 19 20 |
# File 'lib/emfsvg/svg/element.rb', line 18 def children [] end |
#clip_path ⇒ Object
All elements expose clip_path (nil by default) so the SharedGdi
module can treat every element uniformly. Subclasses with the
attribute override via attr_reader.
25 26 27 |
# File 'lib/emfsvg/svg/element.rb', line 25 def clip_path nil end |
#element_name ⇒ Object
14 15 16 |
# File 'lib/emfsvg/svg/element.rb', line 14 def element_name self.class::ELEMENT_NAME end |