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: [], attributes: {}, 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.
12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/sevgi/graphics/document.rb', line 12 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: [], attributes: {}, overwrite: false) ⇒ Class
Defines or returns a document profile class.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/sevgi/graphics/document.rb', line 45 def self.define(name = Undefined, preambles: [], attributes: {}, overwrite: false) return Class.new(Base) { document(name, preambles:, attributes:, register: false) } if name == Undefined profile = Profile.new(name, attributes:, preambles:) if (current = Profile[name]) unless overwrite || current.profile == profile ArgumentError.("Document profile already defined differently: #{name}") end return current unless overwrite end Class.new(Base) { document(name, preambles:, attributes:, overwrite:) } end |