svg_profiler 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +10 -1
- data/lib/svg_profiler.rb +2 -1
- data/lib/svg_profiler/base.rb +7 -24
- data/lib/svg_profiler/inkscape.rb +35 -0
- metadata +6 -19
data/README.md
CHANGED
@@ -2,9 +2,18 @@
|
|
2
2
|
|
3
3
|
Profiles a Scalable Vector Graphics xml string.
|
4
4
|
|
5
|
-
##
|
5
|
+
## Setup
|
6
|
+
|
7
|
+
SVG Profiler depends on an open-source application called Inkscape.
|
6
8
|
|
7
9
|
```
|
10
|
+
brew install inkscape
|
11
|
+
gem install svg_profiler
|
12
|
+
```
|
13
|
+
|
14
|
+
## Usage
|
15
|
+
|
16
|
+
```ruby
|
8
17
|
require "svg_profiler"
|
9
18
|
|
10
19
|
profile = SVGProfiler.new(File.read("file.svg"))
|
data/lib/svg_profiler.rb
CHANGED
data/lib/svg_profiler/base.rb
CHANGED
@@ -1,40 +1,23 @@
|
|
1
1
|
class SVGProfiler
|
2
2
|
|
3
|
-
attr_reader :xml
|
4
|
-
|
5
3
|
def initialize(xml_string)
|
6
|
-
@
|
7
|
-
end
|
8
|
-
|
9
|
-
def dimensions
|
10
|
-
svg = xml.css("svg")
|
11
|
-
|
12
|
-
width, height = %w(width height).map { |s| attribute(svg, s) }
|
13
|
-
view_box = attribute(svg, "viewBox")
|
14
|
-
|
15
|
-
if view_box
|
16
|
-
_, _, v_width, v_height = view_box.split(" ")
|
17
|
-
end
|
18
|
-
|
19
|
-
[width || v_width, height || v_height].map(&:to_i)
|
4
|
+
@inkscape = Inkscape.new(xml_string)
|
20
5
|
end
|
21
6
|
|
22
7
|
def width
|
23
|
-
|
8
|
+
@inkscape.width
|
24
9
|
end
|
25
10
|
|
26
11
|
def height
|
27
|
-
|
12
|
+
@inkscape.height
|
28
13
|
end
|
29
14
|
|
30
|
-
def
|
31
|
-
width
|
15
|
+
def dimensions
|
16
|
+
[width, height]
|
32
17
|
end
|
33
18
|
|
34
|
-
|
35
|
-
|
36
|
-
a = node.attr(attribute)
|
37
|
-
a.value if a
|
19
|
+
def aspect
|
20
|
+
width.to_f / height
|
38
21
|
end
|
39
22
|
|
40
23
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
class SVGProfiler::Inkscape
|
2
|
+
|
3
|
+
def initialize(xml)
|
4
|
+
check_for_inkscape
|
5
|
+
|
6
|
+
input = Tempfile.new(["input", ".svg"])
|
7
|
+
input.write(xml.to_s)
|
8
|
+
input.close
|
9
|
+
@path = input.path
|
10
|
+
end
|
11
|
+
|
12
|
+
def width
|
13
|
+
exec("-W").to_i
|
14
|
+
end
|
15
|
+
|
16
|
+
def height
|
17
|
+
exec("-H").to_i
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
def check_for_inkscape
|
22
|
+
unless system("which inkscape &>/dev/null")
|
23
|
+
raise DependencyError.new(
|
24
|
+
"Could not locate Inkscape, try `brew install inkscape'"
|
25
|
+
)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def exec(command)
|
30
|
+
`inkscape -z #{command} #@path`
|
31
|
+
end
|
32
|
+
|
33
|
+
class DependencyError < StandardError; end
|
34
|
+
|
35
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: svg_profiler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 1
|
10
|
+
version: 1.0.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Chris Patuzzo
|
@@ -18,24 +18,10 @@ cert_chain: []
|
|
18
18
|
date: 2013-03-09 00:00:00 +00:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
22
|
-
name: nokogiri
|
23
|
-
prerelease: false
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ">="
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 3
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
version: "0"
|
33
|
-
type: :runtime
|
34
|
-
version_requirements: *id001
|
35
21
|
- !ruby/object:Gem::Dependency
|
36
22
|
name: rspec
|
37
23
|
prerelease: false
|
38
|
-
requirement: &
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
39
25
|
none: false
|
40
26
|
requirements:
|
41
27
|
- - ">="
|
@@ -45,7 +31,7 @@ dependencies:
|
|
45
31
|
- 0
|
46
32
|
version: "0"
|
47
33
|
type: :development
|
48
|
-
version_requirements: *
|
34
|
+
version_requirements: *id001
|
49
35
|
description: Profiles a Scalable Vector Graphics xml string.
|
50
36
|
email: chris@patuzzo.co.uk
|
51
37
|
executables: []
|
@@ -57,6 +43,7 @@ extra_rdoc_files: []
|
|
57
43
|
files:
|
58
44
|
- README.md
|
59
45
|
- lib/svg_profiler/base.rb
|
46
|
+
- lib/svg_profiler/inkscape.rb
|
60
47
|
- lib/svg_profiler.rb
|
61
48
|
has_rdoc: true
|
62
49
|
homepage: https://github.com/cpatuzzo/svg_profiler
|