Module: Metanorma::Mirror::Handlers::Imagemap
- Defined in:
- lib/metanorma/mirror/handlers/imagemap.rb
Overview
Image map: a wrapped figure plus hyperlinked areas (shape, link, geometry). Duck-typed over SafeAttr reads.
Class Method Summary collapse
- .area_attrs(area) ⇒ Object
- .area_list(element) ⇒ Object
- .call(element, context:) ⇒ Object
- .radius_attrs(radius) ⇒ Object
Class Method Details
.area_attrs(area) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/metanorma/mirror/handlers/imagemap.rb', line 24 def self.area_attrs(area) ref = Svgmap.reference_of(area) radius = SafeAttr.read(area, :radius) { type: SafeAttr.read(area, :area_type) || SafeAttr.read(area, :type), target: ref, coords: Array(SafeAttr.read(area, :coords)).map do |c| [SafeAttr.read(c, :x), SafeAttr.read(c, :y)] end, radius: radius && radius_attrs(radius), }.compact end |
.area_list(element) ⇒ Object
19 20 21 22 |
# File 'lib/metanorma/mirror/handlers/imagemap.rb', line 19 def self.area_list(element) areas = Array(SafeAttr.read(element, :area)).map { |a| area_attrs(a) } areas.empty? ? nil : areas end |
.call(element, context:) ⇒ Object
9 10 11 12 13 14 15 16 17 |
# File 'lib/metanorma/mirror/handlers/imagemap.rb', line 9 def self.call(element, context:) attrs = { id: SafeAttr.read(element, :id), semx_id: SafeAttr.read(element, :semx_id), areas: area_list(element), }.compact content = Svgmap.figure_content(element, context) Handlers.build_node("imagemap", attrs: attrs, content: content) end |
.radius_attrs(radius) ⇒ Object
37 38 39 |
# File 'lib/metanorma/mirror/handlers/imagemap.rb', line 37 def self.radius_attrs(radius) [SafeAttr.read(radius, :x), SafeAttr.read(radius, :y)] end |