lib/rabbit/image/dia.rb in rabbit-2.0.2 vs lib/rabbit/image/dia.rb in rabbit-2.0.3
- old
+ new
@@ -14,42 +14,41 @@
extend Forwardable
include SystemRunner
class << self
def match?(filename)
+ return true if File.extname(filename).downcase.end_with?(".dia")
File.open(filename) do |f|
- if /^<\?xml/ =~ f.gets and
- /http:\/\/www\.lysator\.liu\.se\/~alla\/dia\// =~ f.gets
- true
- else
- false
- end
+ first_line = f.gets
+ second_line = f.gets
+ return false unless second_line
+ return false unless first_line.start_with?("<?xml")
+ return false unless second_line.start_with?("<dia:diagram")
+ true
end
- rescue ArgumentError
- false
end
end
- def_delegators(:@eps_loader, :keep_ratio, :keep_ratio=)
- def_delegators(:@eps_loader, :pixbuf, :internal_pixbuf)
- def_delegators(:@eps_loader, :width, :height)
- def_delegators(:@eps_loader, :original_width, :original_height)
- def_delegators(:@eps_loader, :resize, :ensure_resize)
- def_delegators(:@eps_loader, :update_size)
+ def_delegators(:@svg_loader, :keep_ratio, :keep_ratio=)
+ def_delegators(:@svg_loader, :pixbuf, :internal_pixbuf)
+ def_delegators(:@svg_loader, :width, :height)
+ def_delegators(:@svg_loader, :original_width, :original_height)
+ def_delegators(:@svg_loader, :resize, :ensure_resize)
+ def_delegators(:@svg_loader, :update_size)
def initialize(filename, keep_ratio)
- init_eps_loader(filename, keep_ratio)
+ init_svg_loader(filename, keep_ratio)
super
end
private
- def init_eps_loader(filename, keep_ratio)
- @eps_file = Tempfile.new("rabbit-loader-dia")
- args = ["--export=#{@eps_file.path}"]
- args << "--filter=eps"
+ def init_svg_loader(filename, keep_ratio)
+ @svg_file = Tempfile.new(["rabbit-loader-dia", ".svg"])
+ args = ["--export=#{@svg_file.path}"]
+ args << "--filter=svg"
args << filename
if DIA_COMMANDS.any? {|dia| run(dia, *args)}
- @eps_loader = EPS.new(@eps_file.path, keep_ratio)
+ @svg_loader = SVG.new(@svg_file.path, keep_ratio)
else
raise DiaCanNotHandleError.new("dia #{args.join(' ')}",
DIA_COMMANDS)
end
end