Module: Svgcode

Defined in:
lib/svgcode.rb,
lib/svgcode/version.rb,
lib/svgcode/svg/path.rb,
lib/svgcode/svg/point.rb,
lib/svgcode/svg/command.rb,
lib/svgcode/gcode/command.rb,
lib/svgcode/gcode/program.rb,
lib/svgcode/svg/transform.rb,
lib/svgcode/gcode/converter.rb,
lib/svgcode/gcode/invalid_command_error.rb

Defined Under Namespace

Modules: GCode, SVG

Constant Summary collapse

VERSION =
'0.3.0'

Class Method Summary collapse

Class Method Details

.parse(xml_str, opts = {}) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/svgcode.rb', line 10

def self.parse(xml_str, opts = {})
  doc = Nokogiri.parse(xml_str)
  doc.remove_namespaces!

  view_box = doc.xpath('/svg').first.attributes['viewBox'].value
  opts[:max_y] = view_box.split(/\s+/).last.to_f
  converter = Converter.new(opts)

  doc.xpath('//path').each do |path|
    if opts[:comments]
      ids = path.xpath('ancestor::g[@id]').collect do |t|
        t.attributes['id'].value
      end

      converter.comment!(ids.join(' '))
    end

    converter.transforms = path.xpath('ancestor::g[@transform]').collect do |t|
      Transform.new(t.attributes['transform'].value)
    end

    converter << path.attributes['d'].value
  end

  converter.finish
  converter.to_s
end