41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
# File 'lib/view/xml_view.rb', line 41
def render options={}
@render_options = {:lines => true, :round => 2, :outline => false}.merge(options)
pages = {}
page_params = {}
pageless = {}
objects.each_pair do |type, objs|
objs.each do |obj|
if obj.key? :page
pages[obj[:page]] ||= {}
pages[obj[:page]][type] ||= []
pages[obj[:page]][type] << obj
page_params[obj[:page]] ||= {
:width => obj[:page_width],
:height => obj[:page_height],
:number => obj[:page]
}
else
pageless[type] ||= []
pageless[type] << obj
end
end
end
builder = Nokogiri::XML::Builder.new do |xml|
xml.pdf {
pageless.each_pair do |type, objs|
objs.each do |obj| write_obj_to_xml obj, type, xml end
end
pages.each_pair do |page_number, obj_types|
xml.page(page_params[page_number]) {
obj_types.each_pair do |type, objs|
objs.each do |obj| write_obj_to_xml obj, type, xml end
end
}
end
}
end
builder.to_xml
end
|