fresh_vector_salad 0.0.1 → 0.2.0
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.
- checksums.yaml +4 -4
- data/bin/fresh_vector_salad +41 -83
- data/fresh_vector_salad.gemspec +4 -5
- data/lib/fresh_vector_salad/version.rb +1 -1
- data/lib/fresh_vector_salad.rb +13 -37
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a64538d275583c623fb846e733d581b1bca67317
|
4
|
+
data.tar.gz: 0cb5c1d8aceb0dd7d7bd28eea2486e5ece847720
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 951fa9c765fcd691c52b4aa4e2cad6577200ffb27cd41c2d3e66b73721213425ede928fc2ea6917921d66613a15bb903dac535183ed3a757f1df1482be256954
|
7
|
+
data.tar.gz: 422873b59b00e9d828dfd4693e54bce8b0b37e5547b38461f869638b37ab2ea8a4e4865bd8859f1a2be939e88335081f1bb8dcf627a53e810833eaf16d942f10
|
data/bin/fresh_vector_salad
CHANGED
@@ -1,109 +1,67 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
3
|
+
require "vector_salad/optparse"
|
4
|
+
require "fresh_vector_salad"
|
5
|
+
require "optparse"
|
6
|
+
require "ostruct"
|
7
|
+
require "tk"
|
8
|
+
require "tkextlib/tkimg"
|
9
|
+
require "open3"
|
10
|
+
require "expect"
|
11
|
+
require "pty"
|
11
12
|
#require 'listen'
|
12
13
|
|
13
14
|
module FreshVectorSalad
|
14
|
-
class FreshOptparse
|
15
|
-
#
|
16
|
-
# Return a structure describing the options.
|
17
|
-
#
|
18
|
-
def self.parse(args)
|
19
|
-
# The options specified on the command line will be collected in *options*.
|
20
|
-
# We set default values here.
|
21
|
-
options = OpenStruct.new
|
22
|
-
options.verbose = false
|
23
|
-
options.dpi = 90
|
24
|
-
|
25
|
-
opt_parser = OptionParser.new do |opts|
|
26
|
-
opts.banner = "Usage: vrs [options]"
|
27
|
-
|
28
|
-
opts.separator ""
|
29
|
-
opts.separator "Specific options:"
|
30
|
-
|
31
|
-
opts.on('-p', "--path PATH",
|
32
|
-
"PATH to the files.") do |path|
|
33
|
-
#strip trailing slash
|
34
|
-
path = path =~ /\/\z/ ? path[0..-2] : path
|
35
|
-
options.path = path
|
36
|
-
end
|
37
|
-
|
38
|
-
opts.on('-d', "--dpi [DPI]",
|
39
|
-
"Export DPI (default 90). Use to shrink or expand the preview.") do |dpi|
|
40
|
-
options.dpi = dpi
|
41
|
-
end
|
42
|
-
|
43
|
-
opts.on("--crop CROP",
|
44
|
-
"Set width and height manually, format WIDTHxHEIGHT, e.g: 400x600.") do |crop|
|
45
|
-
options.width, options.height = crop.split('x').map(&:to_i)
|
46
|
-
end
|
47
|
-
|
48
|
-
opts.on('-f', "--filename FILENAME",
|
49
|
-
"FILENAME (without extension) to compile from and render to.") do |file|
|
50
|
-
options.file = file
|
51
|
-
end
|
52
|
-
|
53
|
-
opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
|
54
|
-
options.verbose = v
|
55
|
-
end
|
56
|
-
|
57
|
-
opts.separator ""
|
58
|
-
opts.separator "Common options:"
|
59
|
-
|
60
|
-
# No argument, shows at tail. This will print an options summary.
|
61
|
-
# Try it and see!
|
62
|
-
opts.on_tail("-h", "--help", "Show this message") do
|
63
|
-
puts opts
|
64
|
-
exit
|
65
|
-
end
|
66
|
-
|
67
|
-
# Another typical switch to print the version.
|
68
|
-
opts.on_tail("--version", "Show version") do
|
69
|
-
puts FreshVectorSalad::VERSION
|
70
|
-
exit
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
opt_parser.parse!(args)
|
75
|
-
options
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
|
80
15
|
class Callbacks
|
81
16
|
def initialize(options, image, label)
|
82
17
|
@options, @image, @label = options, image, label
|
83
18
|
end
|
84
19
|
|
85
20
|
def success
|
86
|
-
@image.file = "#{@options.
|
21
|
+
@image.file = "#{@options.naked_file}.png"
|
87
22
|
@label.height = @image.height + 10
|
88
23
|
@label.width = @image.width + 10
|
89
|
-
@label.background =
|
24
|
+
@label.background = "white"
|
90
25
|
@label.pack
|
91
26
|
end
|
92
27
|
|
93
28
|
def error
|
94
|
-
@label.background =
|
29
|
+
@label.background = "red"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
module VectorSalad
|
35
|
+
class Optparse
|
36
|
+
defaults[:verbose] = false
|
37
|
+
defaults[:dpi] = 90
|
38
|
+
|
39
|
+
self.tool_name = "fresh_vector_salad"
|
40
|
+
|
41
|
+
optparse.on_head("-d", "--dpi DPI", "Export DPI (default 90). Use to shrink or expand the preview.") do |dpi|
|
42
|
+
options.dpi = dpi
|
43
|
+
end
|
44
|
+
|
45
|
+
optparse.on_head("-v", "--[no-]verbose", "Run verbosely") do |v|
|
46
|
+
options.verbose = v
|
47
|
+
end
|
48
|
+
|
49
|
+
optparse.on_tail("--version", "Show version") do
|
50
|
+
puts FreshVectorSalad::VERSION
|
51
|
+
exit
|
95
52
|
end
|
96
53
|
end
|
97
54
|
end
|
98
55
|
|
99
|
-
|
100
|
-
options
|
56
|
+
ARGV << "-h" if ARGV.empty?
|
57
|
+
options = VectorSalad::Optparse.parse(ARGV)
|
58
|
+
options.naked_file = options.file[0...-3]
|
101
59
|
|
102
60
|
TkRoot.new do
|
103
61
|
title "Fresh Vector Salad"
|
104
62
|
end
|
105
63
|
|
106
|
-
image = TkPhotoImage.new
|
64
|
+
image = TkPhotoImage.new
|
107
65
|
|
108
66
|
label = TkLabel.new
|
109
67
|
label.image = image
|
@@ -117,9 +75,9 @@ fvs.auto_compile
|
|
117
75
|
#fvs.auto_compile if modified.any?{ |m| m =~ /\.rb$/ }
|
118
76
|
#end.start
|
119
77
|
Thread.new do
|
120
|
-
last = File.stat(
|
121
|
-
|
122
|
-
now = File.stat(
|
78
|
+
last = File.stat(options.file).mtime
|
79
|
+
loop do
|
80
|
+
now = File.stat(options.file).mtime
|
123
81
|
if now > last
|
124
82
|
fvs.auto_compile
|
125
83
|
last = now
|
data/fresh_vector_salad.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
lib = File.expand_path(
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
4
|
+
require "fresh_vector_salad/version"
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "fresh_vector_salad"
|
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["simon@sfcgeorge.co.uk"]
|
11
11
|
spec.summary = %q{Fresh View Vector Salad Images}
|
12
12
|
spec.description = %q{Live reloads images generated by Vector Salad}
|
13
|
-
spec.homepage = ""
|
13
|
+
spec.homepage = "https://github.com/sfcgeorge/fresh_vector_salad"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0")
|
@@ -18,8 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
|
22
|
-
spec.add_dependency "vector_salad", "~> 0.0"
|
21
|
+
spec.add_dependency "vector_salad", "~> 0.2"
|
23
22
|
|
24
23
|
spec.add_development_dependency "bundler", "~> 1.7"
|
25
24
|
spec.add_development_dependency "rake", "~> 10.0"
|
data/lib/fresh_vector_salad.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require "fresh_vector_salad/version"
|
2
|
-
require
|
3
|
-
require
|
2
|
+
require "vector_salad/export_with_magic"
|
3
|
+
require "ostruct"
|
4
4
|
|
5
5
|
module FreshVectorSalad
|
6
6
|
class Fresh
|
@@ -15,72 +15,48 @@ module FreshVectorSalad
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def auto_compile
|
18
|
-
puts
|
18
|
+
puts "Compiling..."
|
19
19
|
start = Time.now
|
20
20
|
|
21
|
-
#_, _, stderr = start_vector_salad
|
22
|
-
#if e = stderr.gets
|
23
|
-
#puts e
|
24
|
-
#@callbacks.error
|
25
|
-
#else
|
26
|
-
#puts "Compiled in #{Time.now - start} seconds."
|
27
|
-
#auto_render
|
28
|
-
#end
|
29
|
-
|
30
21
|
begin
|
31
|
-
|
32
|
-
|
33
|
-
options.width = @o.width
|
34
|
-
options.height = @o.height
|
35
|
-
o = VectorSalad::ExportWithMagic.new(options).export
|
36
|
-
File.open("#{@o.path}/#{@o.file}.svg", 'w') do |file|
|
37
|
-
file.sync = true
|
38
|
-
file.write(o)
|
39
|
-
file.fsync
|
40
|
-
end
|
41
|
-
File.write("#{@o.path}/#{@o.file}.svg", o)
|
22
|
+
File.write "#{@o.naked_file}.svg",
|
23
|
+
VectorSalad::ExportWithMagic.new(@o).export
|
42
24
|
puts "Compiled in #{Time.now - start} seconds."
|
43
25
|
auto_render
|
44
26
|
rescue Exception => e
|
45
27
|
puts e.inspect
|
46
|
-
e.backtrace.each{ |l| puts l }
|
28
|
+
e.backtrace.each { |l| puts l }
|
47
29
|
@callbacks.error
|
48
30
|
end
|
49
31
|
end
|
50
32
|
|
51
|
-
def start_vector_salad
|
52
|
-
vs = "vector_salad -f \"#{@o.path}/#{@o.file}.rb\" > \"#{@o.path}/#{@o.file}.svg\""
|
53
|
-
return Open3.popen3(vs)
|
54
|
-
end
|
55
|
-
|
56
33
|
def auto_render
|
57
|
-
puts
|
34
|
+
puts "Rendering..."
|
58
35
|
start = Time.now
|
59
36
|
if @ink_i.nil?
|
60
|
-
puts
|
61
|
-
@ink_o, @ink_i,
|
37
|
+
puts "Starting Inkscape"
|
38
|
+
@ink_o, @ink_i, _x = start_inkscape
|
62
39
|
end
|
63
40
|
|
64
41
|
begin
|
65
42
|
@ink_o.expect(">") do |result|
|
66
|
-
result.each{ |r| puts r }
|
67
|
-
@ink_i.puts("\"#{@o.
|
43
|
+
result.each { |r| puts r }
|
44
|
+
@ink_i.puts("\"#{@o.naked_file}.svg\" --export-background=white --export-dpi=#{@o.dpi} --export-png=\"#{@o.naked_file}.png\"")
|
68
45
|
end
|
69
46
|
@ink_o.expect("Bitmap saved") do |result|
|
70
|
-
result.each{ |r| puts r }
|
47
|
+
result.each { |r| puts r }
|
71
48
|
end
|
72
49
|
@callbacks.success
|
73
50
|
puts "Rendered in #{Time.now - start} seconds."
|
74
51
|
rescue Exception => e
|
75
52
|
puts e.inspect
|
76
|
-
e.backtrace.each{ |l| puts l }
|
53
|
+
e.backtrace.each { |l| puts l }
|
77
54
|
@callbacks.error
|
78
55
|
end
|
79
56
|
end
|
80
57
|
|
81
58
|
def start_inkscape
|
82
59
|
ink = "inkscape -z --shell"
|
83
|
-
#Open3.popen3(ink)
|
84
60
|
PTY.spawn(ink)
|
85
61
|
end
|
86
62
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fresh_vector_salad
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simon George
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: vector_salad
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
19
|
+
version: '0.2'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0.
|
26
|
+
version: '0.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -69,7 +69,7 @@ files:
|
|
69
69
|
- fresh_vector_salad.gemspec
|
70
70
|
- lib/fresh_vector_salad.rb
|
71
71
|
- lib/fresh_vector_salad/version.rb
|
72
|
-
homepage:
|
72
|
+
homepage: https://github.com/sfcgeorge/fresh_vector_salad
|
73
73
|
licenses:
|
74
74
|
- MIT
|
75
75
|
metadata: {}
|