Object
# File lib/prawn/svg/parser/text.rb, line 8 def internal_parse(element, x_positions, y_positions, relative) attrs = element.attributes if attrs['x'] || attrs['y'] relative = false x_positions = attrs['x'].split(/[\s,]+/).collect {|n| element.document.x(n)} if attrs['x'] y_positions = attrs['y'].split(/[\s,]+/).collect {|n| element.document.y(n)} if attrs['y'] end if attrs['dx'] || attrs['dy'] element.add_call_and_enter "translate", element.document.distance(attrs['dx'] || 0), -element.document.distance(attrs['dy'] || 0) end opts = {} if size = element.state[:font_size] opts[:size] = size end if style = element.state[:font_style] opts[:style] = style end # This is not a prawn option but we can't work out how to render it here - # it's handled by Svg#rewrite_call_arguments if anchor = attrs['text-anchor'] opts[:text_anchor] = anchor end element.element.children.each do |child| if child.node_type == :text text = child.to_s.strip.gsub(/\s+/, " ") while text != "" opts[:at] = [x_positions.first, y_positions.first] if x_positions.length > 1 || y_positions.length > 1 element.add_call 'draw_text', text[0..0], opts.dup text = text[1..-1] x_positions.shift if x_positions.length > 1 y_positions.shift if y_positions.length > 1 else element.add_call relative ? 'relative_draw_text' : 'draw_text', text, opts.dup relative = true break end end elsif child.name == "tspan" element.add_call 'save' child_element = Prawn::Svg::Element.new(element.document, child, element.calls, element.state.dup) internal_parse(child_element, x_positions, y_positions, relative) child_element.append_calls_to_parent element.add_call 'restore' else element.warnings << "Unknown tag '#{child.name}' inside text tag; ignoring" end end end
Generated with the Darkfish Rdoc Generator 2.