Module: Sevgi::Graphics::Document
- Defined in:
- lib/sevgi/graphics/document.rb,
lib/sevgi/graphics/document/base.rb,
lib/sevgi/graphics/document/html.rb,
lib/sevgi/graphics/document/default.rb,
lib/sevgi/graphics/document/minimal.rb,
lib/sevgi/graphics/document/inkscape.rb
Overview
SVG document profile factory.
Defined Under Namespace
Classes: Base, Default, HTML, Inkscape, Minimal, Proto
Constant Summary collapse
- DEFAULTS =
Default render-time checks.
{lint: true, validate: true}.freeze
Class Method Summary collapse
-
.call(document, canvas = Undefined, &block) ⇒ Sevgi::Graphics::Document::Proto
Builds a root SVG element from a document profile.
-
.define(name = Undefined, preambles: Undefined, attributes: Undefined, overwrite: false) ⇒ Class
Defines or returns a document profile class.
Class Method Details
.call(document, canvas = Undefined, &block) ⇒ Sevgi::Graphics::Document::Proto
Builds a root SVG element from a document profile.
56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/sevgi/graphics/document.rb', line 56 def self.call(document, canvas = Undefined, **, &block) klass = case document when ::Class document if document <= Proto else Profile[document] end ArgumentError.("Unknown document profile: #{document}") unless klass klass.root(**klass.attributes, **canvas_attributes(canvas), **, &block) end |
.define(name = Undefined, preambles: Undefined, attributes: Undefined, overwrite: false) ⇒ Class
Defines or returns a document profile class.
89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/sevgi/graphics/document.rb', line 89 def self.define(name = Undefined, preambles: Undefined, attributes: Undefined, overwrite: false) return anonymous(attributes:, preambles:) if name == Undefined if (current = Profile[name]) reject_conflict(name, current, attributes:, preambles:) unless overwrite return current unless overwrite end attributes, preambles = defaults(attributes:, preambles:) Class.new(Base) { document(name, preambles:, attributes:, overwrite:) } end |