Module: Sevgi::Graphics::Mixtures::RDF

Defined in:
lib/sevgi/graphics/mixtures/rdf.rb

Overview

DSL helpers for RDF and license metadata.

Examples:

Add Creative Commons metadata

Sevgi::Graphics.SVG :inkscape do
  License_CC0 title: "Example", creator: "A. Creator"
end

Instance Method Summary collapse

Instance Method Details

#License(**kwargs) { ... } ⇒ Sevgi::Graphics::Element

Adds RDF license metadata inside a metadata element.

Parameters:

  • kwargs (Hash)

    RDF work options

Yields:

  • evaluates additional RDF work metadata

Yield Returns:

  • (Object)

    ignored block result

Returns:

Raises:

  • (Sevgi::ArgumentError)

    when an option is unknown

See Also:



23
24
25
26
27
28
# File 'lib/sevgi/graphics/mixtures/rdf.rb', line 23

def License(**kwargs, &block)
  unknown = kwargs.keys - WORK_OPTIONS
  ArgumentError.("Unknown license options: #{unknown.join(", ")}") unless unknown.empty?

   { RDFWork(**kwargs, &block) }
end

#License_CC0(**kwargs) { ... } ⇒ Sevgi::Graphics::Element

Adds Creative Commons Zero metadata.

Parameters:

  • kwargs (Hash)

    RDF work options

Yields:

  • evaluates additional RDF work metadata

Yield Returns:

  • (Object)

    ignored block result

Returns:

Raises:

  • (Sevgi::ArgumentError)

    when an option is unknown

See Also:



103
104
105
# File 'lib/sevgi/graphics/mixtures/rdf.rb', line 103

def License_CC0(**kwargs, &block)
  License(**kwargs, license: "https://creativecommons.org/publicdomain/zero/1.0/", &block)
end

#License_CC_BY(**kwargs) { ... } ⇒ Sevgi::Graphics::Element

Adds Creative Commons BY license metadata.

Parameters:

  • kwargs (Hash)

    RDF work options

Yields:

  • evaluates additional RDF work metadata

Yield Returns:

  • (Object)

    ignored block result

Returns:

Raises:

  • (Sevgi::ArgumentError)

    when an option is unknown

See Also:



37
38
39
# File 'lib/sevgi/graphics/mixtures/rdf.rb', line 37

def License_CC_BY(**kwargs, &block)
  License(**kwargs, license: "https://creativecommons.org/licenses/by/4.0/", &block)
end

#License_CC_BY_NC(**kwargs) { ... } ⇒ Sevgi::Graphics::Element

Adds Creative Commons BY-NC license metadata.

Parameters:

  • kwargs (Hash)

    RDF work options

Yields:

  • evaluates additional RDF work metadata

Yield Returns:

  • (Object)

    ignored block result

Returns:

Raises:

  • (Sevgi::ArgumentError)

    when an option is unknown

See Also:



59
60
61
# File 'lib/sevgi/graphics/mixtures/rdf.rb', line 59

def License_CC_BY_NC(**kwargs, &block)
  License(**kwargs, license: "https://creativecommons.org/licenses/by-nc/4.0/", &block)
end

#License_CC_BY_NC_ND(**kwargs) { ... } ⇒ Sevgi::Graphics::Element

Adds Creative Commons BY-NC-ND license metadata.

Parameters:

  • kwargs (Hash)

    RDF work options

Yields:

  • evaluates additional RDF work metadata

Yield Returns:

  • (Object)

    ignored block result

Returns:

Raises:

  • (Sevgi::ArgumentError)

    when an option is unknown

See Also:



92
93
94
# File 'lib/sevgi/graphics/mixtures/rdf.rb', line 92

def License_CC_BY_NC_ND(**kwargs, &block)
  License(**kwargs, license: "https://creativecommons.org/licenses/by-nc-nd/4.0/", &block)
end

#License_CC_BY_NC_SA(**kwargs) { ... } ⇒ Sevgi::Graphics::Element

Adds Creative Commons BY-NC-SA license metadata.

Parameters:

  • kwargs (Hash)

    RDF work options

Yields:

  • evaluates additional RDF work metadata

Yield Returns:

  • (Object)

    ignored block result

Returns:

Raises:

  • (Sevgi::ArgumentError)

    when an option is unknown

See Also:



70
71
72
# File 'lib/sevgi/graphics/mixtures/rdf.rb', line 70

def License_CC_BY_NC_SA(**kwargs, &block)
  License(**kwargs, license: "https://creativecommons.org/licenses/by-nc-sa/4.0/", &block)
end

#License_CC_BY_ND(**kwargs) { ... } ⇒ Sevgi::Graphics::Element

Adds Creative Commons BY-ND license metadata.

Parameters:

  • kwargs (Hash)

    RDF work options

Yields:

  • evaluates additional RDF work metadata

Yield Returns:

  • (Object)

    ignored block result

Returns:

Raises:

  • (Sevgi::ArgumentError)

    when an option is unknown

See Also:



81
82
83
# File 'lib/sevgi/graphics/mixtures/rdf.rb', line 81

def License_CC_BY_ND(**kwargs, &block)
  License(**kwargs, license: "https://creativecommons.org/licenses/by-nd/4.0/", &block)
end

#License_CC_BY_SA(**kwargs) { ... } ⇒ Sevgi::Graphics::Element

Adds Creative Commons BY-SA license metadata.

Parameters:

  • kwargs (Hash)

    RDF work options

Yields:

  • evaluates additional RDF work metadata

Yield Returns:

  • (Object)

    ignored block result

Returns:

Raises:

  • (Sevgi::ArgumentError)

    when an option is unknown

See Also:



48
49
50
# File 'lib/sevgi/graphics/mixtures/rdf.rb', line 48

def License_CC_BY_SA(**kwargs, &block)
  License(**kwargs, license: "https://creativecommons.org/licenses/by-sa/4.0/", &block)
end

#License_LAL(**kwargs) { ... } ⇒ Sevgi::Graphics::Element

Adds Free Art License metadata.

Parameters:

  • kwargs (Hash)

    RDF work options

Yields:

  • evaluates additional RDF work metadata

Yield Returns:

  • (Object)

    ignored block result

Returns:

Raises:

  • (Sevgi::ArgumentError)

    when an option is unknown

See Also:



114
# File 'lib/sevgi/graphics/mixtures/rdf.rb', line 114

def License_LAL(**kwargs, &block) = License(**kwargs, license: "https://artlibre.org/licence/lal/en/", &block)

#RDF(**kwargs) { ... } ⇒ Sevgi::Graphics::Element

Builds an RDF root element.

Parameters:

  • kwargs (Hash)

    options; RDF currently accepts none

Yields:

  • evaluates the RDF drawing DSL

Yield Returns:

  • (Object)

    ignored block result

Returns:

Raises:

  • (Sevgi::ArgumentError)

    when no block is given

  • (Sevgi::ArgumentError)

    when an option is given



123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/sevgi/graphics/mixtures/rdf.rb', line 123

def RDF(**kwargs, &block)
  ArgumentError.("Unknown RDF options: #{kwargs.keys.join(", ")}") unless kwargs.empty?
  ArgumentError.("Block required") unless block

  Element(
    :"rdf:RDF",
    "xmlns:rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
    "xmlns:dc": "http://purl.org/dc/elements/1.1/",
    "xmlns:cc": "http://creativecommons.org/ns#"
  ) do
    Within(&block)
  end
end

#RDFWork(**kwargs) { ... } ⇒ Sevgi::Graphics::Element

Builds a Creative Commons RDF Work element.

Option RDF element
title dc:title
description dc:description
creator dc:creator
publisher dc:publisher
date dc:date
language dc:language
license cc:license resource

Parameters:

  • kwargs (Hash)

    RDF work options

Options Hash (**kwargs):

  • :title (String)

    work title

  • :description (String)

    work description

  • :creator (String)

    creator

  • :publisher (String)

    publisher

  • :date (String)

    date

  • :language (String)

    language

  • :license (String)

    license URL

Yields:

  • evaluates additional RDF work metadata

Yield Returns:

  • (Object)

    ignored block result

Returns:

Raises:

  • (Sevgi::ArgumentError)

    when an option is unknown



160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
# File 'lib/sevgi/graphics/mixtures/rdf.rb', line 160

def RDFWork(**kwargs, &block)
  unknown = kwargs.keys - WORK_OPTIONS
  ArgumentError.("Unknown RDF work options: #{unknown.join(", ")}") unless unknown.empty?

  RDF do
    Element(:"cc:Work", "rdf:about": "") do
      Element(:"dc:format", "image/svg+xml")
      Element(:"dc:type", "rdf:resource": "http://purl.org/dc/dcmitype/StillImage")
      Element(:"dc:title", kwargs[:title]) if kwargs[:title]
      Element(:"dc:description", kwargs[:description]) if kwargs[:description]
      Element(:"dc:creator", kwargs[:creator]) if kwargs[:creator]
      Element(:"dc:publisher", kwargs[:publisher]) if kwargs[:publisher]
      Element(:"dc:date", kwargs[:date]) if kwargs[:date]
      Element(:"dc:language", kwargs[:language]) if kwargs[:language]
      Element(:"cc:license", "rdf:resource": kwargs[:license]) if kwargs[:license]

      Within(&block) if block
    end
  end
end