grapht 0.1.8 → 0.1.9
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/.travis.yml +1 -13
- data/lib/graph-definitions/bar-horizontal.js +17 -17
- data/lib/graph-definitions/bar-vertical.js +20 -21
- data/lib/graph-definitions/donut.js +8 -6
- data/lib/graph-definitions/line.js +23 -24
- data/lib/grapht/shell.rb +1 -1
- data/lib/grapht/version.rb +1 -1
- data/script/grapht.coffee +110 -43
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1fe989813b4f6c56f0d18f51aaee1e4bc4f0c45b
|
4
|
+
data.tar.gz: 1f756e623419a70df6c1c2fece60324002c7b878
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a7c61bc4e4ce2936fac328cc4f033aee666a1e5e2b18b2b75d70a6a010cd7ac7512053f8ada009b5e2200a48bf80119edc013d921b5f070bac4dd293db35634
|
7
|
+
data.tar.gz: 2c77a6970a6841c43fb89f73dee9f21fe83fbddbd38cfe2da835916a6cdf0ddc0d88956fd9846a36a1d5c94142c6d46d480028f4f94942eeb20476ab1ec0fdb1
|
data/.travis.yml
CHANGED
@@ -7,16 +7,4 @@ rvm:
|
|
7
7
|
- 2.1.0
|
8
8
|
- 2.1.1
|
9
9
|
- ruby-head
|
10
|
-
- rbx-2
|
11
|
-
matrix:
|
12
|
-
include:
|
13
|
-
- rvm: jruby-18mode
|
14
|
-
env: JRUBY_OPTS="$JRUBY_OPTS --debug"
|
15
|
-
- rvm: jruby-19mode
|
16
|
-
env: JRUBY_OPTS="$JRUBY_OPTS --debug"
|
17
|
-
- rvm: jruby-head
|
18
|
-
env: JRUBY_OPTS="$JRUBY_OPTS --debug"
|
19
|
-
allow_failures:
|
20
|
-
- rvm: ruby-head
|
21
|
-
- rvm: jruby-head
|
22
|
-
fast_finish: true
|
10
|
+
- rbx-2
|
@@ -6,10 +6,13 @@ function(data) {
|
|
6
6
|
svgHeight = height + margin.top + margin.bottom;
|
7
7
|
|
8
8
|
var svg = d3.select("body").append("svg")
|
9
|
-
.
|
9
|
+
.attr('viewBox', "0 -10 " +svgWidth+ " " +svgHeight+ "")
|
10
10
|
.attr("width", svgWidth)
|
11
11
|
.attr("height", svgHeight)
|
12
|
-
.
|
12
|
+
.style("font-family", "Arial")
|
13
|
+
.style("font-size", "14px")
|
14
|
+
.style("fill", "none")
|
15
|
+
.style("background-color", "#ffffff")
|
13
16
|
.append('g')
|
14
17
|
.attr('transform', 'translate(' +margin.left+ ',' +margin.top+ ')')
|
15
18
|
.style("fill", "none");
|
@@ -50,22 +53,21 @@ function(data) {
|
|
50
53
|
.data(data)
|
51
54
|
.enter().append('rect')
|
52
55
|
.attr('class', 'bar')
|
53
|
-
.style('fill', '#428bca')
|
54
|
-
.attr('opacity', '0.3')
|
55
56
|
.attr('x', 0)
|
56
57
|
.attr('y', function(d) { return y(d.name); })
|
57
58
|
.attr('width', function(d) { return x(d.value); })
|
58
|
-
.attr('height', y.rangeBand())
|
59
|
+
.attr('height', y.rangeBand())
|
60
|
+
.style('fill', '#428bca')
|
61
|
+
.style('opacity', '0.3')
|
62
|
+
;
|
59
63
|
|
60
|
-
svg.selectAll('
|
61
|
-
.attr('font-family', 'Arial')
|
62
|
-
.selectAll('label')
|
64
|
+
svg.selectAll('label')
|
63
65
|
.attr('fill-opacity', '0.3')
|
64
66
|
|
65
67
|
var xAxisElement = svg.append('g')
|
66
68
|
.attr('class', 'x axis')
|
67
|
-
.style("fill", "none")
|
68
69
|
.attr('transform', "translate(0," +height+ ")")
|
70
|
+
.style("fill", "none")
|
69
71
|
.call(xAxis);
|
70
72
|
|
71
73
|
var yAxisElement = svg.append('g')
|
@@ -75,16 +77,14 @@ function(data) {
|
|
75
77
|
|
76
78
|
xAxisElement.selectAll('line')
|
77
79
|
.style('fill', 'none')
|
78
|
-
.
|
79
|
-
.
|
80
|
-
.
|
81
|
-
.
|
80
|
+
.style('stroke', 'black')
|
81
|
+
.style('stroke-width', '1px')
|
82
|
+
.style('stroke-opacity', 0.1)
|
83
|
+
.style('shape-rendering', 'geometricPrecision');
|
82
84
|
|
83
85
|
xAxisElement.selectAll('text')
|
84
|
-
.style('fill', '#333333')
|
85
|
-
.attr('font-family', 'Arial');
|
86
|
+
.style('fill', '#333333');
|
86
87
|
|
87
88
|
yAxisElement.selectAll('text')
|
88
|
-
.style('fill', '#333333')
|
89
|
-
.attr('font-family', 'Arial');
|
89
|
+
.style('fill', '#333333');
|
90
90
|
}
|
@@ -6,10 +6,13 @@ function(data) {
|
|
6
6
|
svgHeight = height + margin.top + margin.bottom;
|
7
7
|
|
8
8
|
var svg = d3.select("body").append("svg")
|
9
|
-
.
|
9
|
+
.attr('viewBox', "0 -10 " +svgWidth+ " " +svgHeight+ "")
|
10
10
|
.attr("width", svgWidth)
|
11
11
|
.attr("height", svgHeight)
|
12
|
-
.
|
12
|
+
.style("font-family", "Arial")
|
13
|
+
.style("font-size", "14px")
|
14
|
+
.style("fill", "none")
|
15
|
+
.style("background-color", "#ffffff")
|
13
16
|
.append('g')
|
14
17
|
.attr('transform', 'translate(' +margin.left+ ',' +margin.top+ ')')
|
15
18
|
.style("fill", "none");
|
@@ -43,17 +46,15 @@ function(data) {
|
|
43
46
|
.data(data)
|
44
47
|
.enter().append('rect')
|
45
48
|
.attr('class', 'bar')
|
46
|
-
.style('fill', '#428bca')
|
47
|
-
.attr('opacity', '0.3')
|
48
49
|
.attr('y', function(d) { return y(d.value); })
|
49
50
|
.attr('x', function(d) { return x(d.name); })
|
51
|
+
.attr('width', x.rangeBand())
|
50
52
|
.attr('height', function(d) { return height - y(d.value); })
|
51
|
-
.
|
53
|
+
.style('fill', '#428bca')
|
54
|
+
.style('opacity', '0.3');
|
52
55
|
|
53
|
-
svg.selectAll('
|
54
|
-
|
55
|
-
.selectAll('label')
|
56
|
-
.attr('fill-opacity', '0.3')
|
56
|
+
svg.selectAll('label')
|
57
|
+
.style('fill-opacity', '0.3')
|
57
58
|
|
58
59
|
var xAxisElement = svg.append('g')
|
59
60
|
.attr('class', 'x axis')
|
@@ -67,23 +68,21 @@ function(data) {
|
|
67
68
|
|
68
69
|
xAxisElement.selectAll('line')
|
69
70
|
.style('fill', 'none')
|
70
|
-
.
|
71
|
-
.
|
72
|
-
.
|
73
|
-
.
|
71
|
+
.style('stroke', 'black')
|
72
|
+
.style('stroke-width', '1px')
|
73
|
+
.style('stroke-opacity', 0.1)
|
74
|
+
.style('shape-rendering', 'geometricPrecision');
|
74
75
|
|
75
76
|
xAxisElement.selectAll('text')
|
76
|
-
.style('fill', '#333333')
|
77
|
-
.attr('font-family', 'Arial');
|
77
|
+
.style('fill', '#333333');
|
78
78
|
|
79
79
|
yAxisElement.selectAll('line')
|
80
80
|
.style('fill', 'none')
|
81
|
-
.
|
82
|
-
.
|
83
|
-
.
|
84
|
-
.
|
81
|
+
.style('stroke', 'black')
|
82
|
+
.style('stroke-width', '1px')
|
83
|
+
.style('stroke-opacity', 0.1)
|
84
|
+
.style('shape-rendering', 'geometricPrecision');
|
85
85
|
|
86
86
|
yAxisElement.selectAll('text')
|
87
|
-
.style('fill', '#333333')
|
88
|
-
.attr('font-family', 'Arial');
|
87
|
+
.style('fill', '#333333');
|
89
88
|
}
|
@@ -6,11 +6,14 @@ function(data) {
|
|
6
6
|
svgHeight = height + margin.top + margin.bottom,
|
7
7
|
radius = Math.min(width, height) / 2;
|
8
8
|
|
9
|
-
var svg = d3.select("body").append("svg")
|
10
|
-
.
|
9
|
+
var svg = d3.select("body").append("svg")
|
10
|
+
.attr('viewBox', "0 -10 " +svgWidth+ " " +svgHeight+ "")
|
11
11
|
.attr("width", svgWidth)
|
12
12
|
.attr("height", svgHeight)
|
13
|
-
.
|
13
|
+
.style("font-family", "Arial")
|
14
|
+
.style("font-size", "14px")
|
15
|
+
.style("fill", "none")
|
16
|
+
.style("background-color", "#ffffff")
|
14
17
|
.append('g')
|
15
18
|
.attr('transform', 'translate(' +(width/2)+ ',' +(height/2)+ ')')
|
16
19
|
.style("fill", "none");
|
@@ -38,10 +41,9 @@ function(data) {
|
|
38
41
|
|
39
42
|
arcElement.append("text")
|
40
43
|
.attr("transform", function(d) { return "translate(" + arc.centroid(d) + ")"; })
|
41
|
-
.attr("dy", "
|
44
|
+
.attr("dy", "5px")
|
42
45
|
.style('fill', '#FFFFFF')
|
43
|
-
.
|
44
|
-
.attr('font-weight', 'bold')
|
46
|
+
.style('font-weight', 'bold')
|
45
47
|
.style("text-anchor", "middle")
|
46
48
|
.text(function(d) { return d.data.name; });
|
47
49
|
}
|
@@ -16,15 +16,17 @@ function(data) {
|
|
16
16
|
svgHeight = height + margin.top + margin.bottom;
|
17
17
|
|
18
18
|
var svg = d3.select("body").append("svg")
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
.attr('viewBox', "0 -10 " +svgWidth+ " " +svgHeight+ "")
|
20
|
+
.attr("width", svgWidth)
|
21
|
+
.attr("height", svgHeight)
|
22
|
+
.style("font-family", "Arial")
|
23
|
+
.style("font-size", "14px")
|
24
|
+
.style("fill", "none")
|
25
|
+
.style("background-color", "#ffffff")
|
23
26
|
.append('g')
|
24
27
|
.attr('transform', 'translate(' +margin.left+ ',' +margin.top+ ')')
|
25
28
|
.style("fill", "none");
|
26
29
|
|
27
|
-
|
28
30
|
var x = d3.scale
|
29
31
|
.linear()
|
30
32
|
.range([0, width])
|
@@ -70,42 +72,39 @@ function(data) {
|
|
70
72
|
|
71
73
|
lineElements.append('path')
|
72
74
|
.attr('class', 'line')
|
73
|
-
.attr('stroke-width', '2px')
|
74
|
-
.attr('opacity', '0.3')
|
75
75
|
.attr('d', function(d) { return line(d.value) })
|
76
|
-
.
|
76
|
+
.style('stroke-width', '2px')
|
77
|
+
.style('opacity', '0.3')
|
78
|
+
.style('stroke', function(d) { return color(d.key); });
|
77
79
|
|
78
80
|
lineElements.append('text')
|
79
81
|
.datum(function(d) { return { name: d.key, value: d.value[d.value.length - 1] }; })
|
80
82
|
.attr('transform', function(d) { return "translate(" +x(d.value.x)+ "," +y(d.value.y)+ ")"; })
|
81
83
|
.attr('x', 3)
|
82
|
-
.attr('dy', '
|
84
|
+
.attr('dy', '5px')
|
83
85
|
.style('fill', '#333333')
|
84
|
-
.attr('font-family', 'Arial')
|
85
86
|
.text(function(d) { return d.name; });
|
86
87
|
|
87
88
|
// axis styling
|
88
89
|
xAxisElement.selectAll('line')
|
89
90
|
.style('fill', 'none')
|
90
|
-
.
|
91
|
-
.
|
92
|
-
.
|
93
|
-
.
|
91
|
+
.style('stroke', 'black')
|
92
|
+
.style('stroke-width', '1px')
|
93
|
+
.style('stroke-opacity', 0.1)
|
94
|
+
.style('shape-rendering', 'geometricPrecision');
|
94
95
|
|
95
96
|
xAxisElement.selectAll('text')
|
96
|
-
.
|
97
|
-
.
|
98
|
-
.attr('dy', '20px');
|
97
|
+
.attr('dy', '20px')
|
98
|
+
.style('fill', '#333333');
|
99
99
|
|
100
100
|
yAxisElement.selectAll('line')
|
101
101
|
.style('fill', 'none')
|
102
|
-
.
|
103
|
-
.
|
104
|
-
.
|
105
|
-
.
|
102
|
+
.style('stroke', 'black')
|
103
|
+
.style('stroke-width', '1px')
|
104
|
+
.style('stroke-opacity', 0.1)
|
105
|
+
.style('shape-rendering', 'geometricPrecision');
|
106
106
|
|
107
107
|
yAxisElement.selectAll('text')
|
108
|
-
.
|
109
|
-
.
|
110
|
-
.attr('dx', '-10px');
|
108
|
+
.attr('dx', '-10px')
|
109
|
+
.style('fill', '#333333');
|
111
110
|
}
|
data/lib/grapht/shell.rb
CHANGED
@@ -5,7 +5,7 @@ module Grapht
|
|
5
5
|
class Error < StandardError; end
|
6
6
|
|
7
7
|
CMD = File.join(Grapht::ROOT, 'bin/grapht')
|
8
|
-
ALLOWED_OPTIONS = %w(-f)
|
8
|
+
ALLOWED_OPTIONS = %w(-f -i)
|
9
9
|
|
10
10
|
def self.exec(type, json_data, options={})
|
11
11
|
options = *options.select { |k,v| ALLOWED_OPTIONS.include? k }.flatten
|
data/lib/grapht/version.rb
CHANGED
data/script/grapht.coffee
CHANGED
@@ -1,45 +1,65 @@
|
|
1
1
|
page = require('webpage').create()
|
2
2
|
system = require('system')
|
3
3
|
fs = require('fs')
|
4
|
+
|
4
5
|
thisFile = system.args[0]
|
5
6
|
graphType = system.args[1]
|
6
7
|
graphFormat = false
|
7
|
-
|
8
|
-
|
8
|
+
dependencies = ['d3.min.js', 'json2.js']
|
9
|
+
|
10
|
+
scriptPath = fs.absolute(thisFile).replace(/[\w\s\-\.]+?\.(js|coffee)$/i, '')
|
9
11
|
vendorPath = "#{scriptPath}../vendor/"
|
10
12
|
defsPath = "#{scriptPath}../lib/graph-definitions/"
|
11
13
|
userDefsPath = system.env['EXT_GRAPHT_DEFINITIONS_HOME']
|
12
|
-
dependencies = ['d3.min.js', 'json2.js']
|
13
14
|
niceDirPathRX = /\/$|$/
|
14
15
|
naughtyPathRX = /(?:\.{1,2}\/)+/
|
15
16
|
|
16
|
-
|
17
|
+
|
18
|
+
|
19
|
+
#------------------------------------------------------------------------------
|
17
20
|
# Helper Functions
|
18
|
-
|
21
|
+
#------------------------------------------------------------------------------
|
19
22
|
|
20
23
|
fns =
|
21
|
-
# Logs the supplied message
|
22
|
-
# with
|
23
|
-
|
24
|
+
# Logs the supplied message (and, optionally, the trace) to STDERR; then,
|
25
|
+
# exits the process with the supplied code.
|
26
|
+
#
|
27
|
+
# Return Codes:
|
28
|
+
# 0 - Success
|
29
|
+
# 1 - Naughty Type Path Error
|
30
|
+
# 2 - Graph Defintion Not Found Error
|
31
|
+
# 3 - Graph Dependency Load Error
|
32
|
+
# 4 - Graph Data Not Found Error
|
33
|
+
# 5 - Graph Data Parse Error
|
34
|
+
# 99 - Unexpected Error
|
35
|
+
#
|
36
|
+
logError: (message, code, trace) ->
|
24
37
|
fs.write '/dev/stderr', "<ERROR> #{message}\n"
|
38
|
+
fs.write '/dev/stderr', formattedTrace(trace) if trace
|
39
|
+
phantom.exit(code || 99)
|
25
40
|
|
26
|
-
if trace
|
27
|
-
traceString = trace.map (t) -> "\t#{t.file}: on line: #{t.line}"
|
28
|
-
fs.write '/dev/stderr', traceString.join('\n')
|
29
41
|
|
30
|
-
|
42
|
+
# Returns a formatted version of the trace object so it can
|
43
|
+
# be sent to std out.
|
44
|
+
#
|
45
|
+
formattedTrace: (trace) ->
|
46
|
+
traceString = trace.map (t) -> "\t#{t.file}: on line: #{t.line}"
|
47
|
+
traceString.join('\n')
|
31
48
|
|
49
|
+
|
32
50
|
# Scrubs-out any leading '/' characters from the type, and raises an error
|
33
51
|
# if any naughtier path manipulation is detected.
|
52
|
+
#
|
34
53
|
sanitizeType: (type) ->
|
35
54
|
if naughtyPathRX.test(type)
|
36
|
-
@logError
|
55
|
+
@logError('Naughty! There will be no backing out of the definition directory!', 1)
|
37
56
|
|
38
57
|
type.replace(/^\/+/, '')
|
39
58
|
|
59
|
+
|
40
60
|
# Searchs for a valid graph definition in the supplied definition paths. If
|
41
|
-
# no definition is found, we log an error to STDERR
|
42
|
-
#
|
61
|
+
# no definition is found, we log an error to STDERR.
|
62
|
+
#
|
43
63
|
findDef: (type, defPaths...) ->
|
44
64
|
type = @sanitizeType(type)
|
45
65
|
|
@@ -48,20 +68,29 @@ fns =
|
|
48
68
|
path = "#{dir}#{type}.js"
|
49
69
|
return path if fs.exists(path)
|
50
70
|
|
51
|
-
@logError
|
71
|
+
@logError("No graph definition could be found for '#{type}'", 2)
|
72
|
+
|
73
|
+
|
74
|
+
# Reads in the graph defintion file.
|
75
|
+
#
|
76
|
+
loadDef: (def) ->
|
77
|
+
fs.read(def)
|
52
78
|
|
53
|
-
loadDef: (def) -> fs.read(def)
|
54
79
|
|
55
80
|
# Wraps the supplied graph definition in a function that executes the definition
|
56
81
|
# and returns the resulting content of the document body. This function is intended
|
57
82
|
# to minimize boiler-plate in graph definitions, and reduce the likelihood of user
|
58
83
|
# error.
|
84
|
+
#
|
59
85
|
wrapDef: (def) ->
|
60
86
|
"function() {
|
61
87
|
(#{def}).apply(this, arguments);
|
62
88
|
return document.body.innerHTML;
|
63
89
|
}"
|
64
90
|
|
91
|
+
# Returns a hash composed of any optional arguments sent
|
92
|
+
# with a command.
|
93
|
+
#
|
65
94
|
getOptions: ->
|
66
95
|
optionsIn = system.args[2..]
|
67
96
|
optionsOut = {}
|
@@ -73,10 +102,25 @@ fns =
|
|
73
102
|
|
74
103
|
optionsOut
|
75
104
|
|
105
|
+
|
106
|
+
# Returns the value of the format option (nil if not
|
107
|
+
# provided)
|
108
|
+
#
|
76
109
|
getFormat: ->
|
77
110
|
options = @getOptions()
|
78
111
|
options['-f'] || options['--format']
|
79
112
|
|
113
|
+
|
114
|
+
# Returns the value of the include option (nil if not
|
115
|
+
# provided)
|
116
|
+
#
|
117
|
+
getInclude: ->
|
118
|
+
options = @getOptions()
|
119
|
+
options['-i'] || options['--include']
|
120
|
+
|
121
|
+
|
122
|
+
# Reads in json data for the graph.
|
123
|
+
#
|
80
124
|
readDataIn: ->
|
81
125
|
try
|
82
126
|
if (data = fs.read('/dev/stdin')).length
|
@@ -85,36 +129,59 @@ fns =
|
|
85
129
|
fns.logError('No graph data was received!')
|
86
130
|
|
87
131
|
catch err
|
88
|
-
@logError
|
89
|
-
|
90
|
-
|
91
|
-
#
|
132
|
+
@logError(err, 4)
|
133
|
+
|
134
|
+
|
135
|
+
# Renders the graph output based on the arguments and
|
136
|
+
# options provided.
|
137
|
+
#
|
138
|
+
renderGraph: ->
|
139
|
+
# Load all dependencies.
|
140
|
+
dependencies.forEach (dp) ->
|
141
|
+
page.injectJs(dp) || fns.logError("Dependency could not be loaded: #{dp}", 3)
|
142
|
+
|
143
|
+
# Load and evaluate the graph definition within the context of the
|
144
|
+
# arguments supplied via STDIN.
|
145
|
+
graphData = fns.readDataIn()
|
146
|
+
graphDef = fns.wrapDef fns.loadDef fns.findDef(graphType, userDefsPath, defsPath)
|
147
|
+
parsedData = try
|
148
|
+
JSON.parse(graphData)
|
149
|
+
catch err
|
150
|
+
fns.logError(err, 5)
|
151
|
+
|
152
|
+
# Configure page to remove extraneous whitespace that comes out
|
153
|
+
# of WebKit.
|
154
|
+
#
|
155
|
+
# The viewport size eliminates a minimum height of 300px that
|
156
|
+
# seems to be enforced. It does so by requiring all drawings to
|
157
|
+
# exapnd the viewport to actual size.
|
158
|
+
page.viewportSize = { width: 1, height: 1 };
|
159
|
+
|
160
|
+
# Set the content.
|
161
|
+
page.content = content = page.evaluate(graphDef, parsedData)
|
162
|
+
|
163
|
+
# Write resulting content to stdout.
|
164
|
+
if graphFormat = fns.getFormat()
|
165
|
+
page.render '/dev/stdout', { format: graphFormat, quality: 100 }
|
166
|
+
else
|
167
|
+
fs.write '/dev/stdout', "#{content}\n"
|
168
|
+
|
169
|
+
# Exit with success code
|
170
|
+
phantom.exit(0)
|
171
|
+
|
172
|
+
|
173
|
+
|
174
|
+
#------------------------------------------------------------------------------
|
92
175
|
# Core Graph Generation Logic
|
93
|
-
|
176
|
+
#------------------------------------------------------------------------------
|
94
177
|
|
95
178
|
# Configure the page context.
|
96
179
|
page.libraryPath = vendorPath
|
97
180
|
page.onError = fns.logError
|
98
181
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
# via STDIN.
|
104
|
-
graphData = fns.readDataIn()
|
105
|
-
graphDef = fns.wrapDef fns.loadDef fns.findDef(graphType, userDefsPath, defsPath)
|
106
|
-
graphFormat = fns.getFormat()
|
107
|
-
parsedData = try
|
108
|
-
JSON.parse(graphData)
|
109
|
-
catch err
|
110
|
-
fns.logError(err)
|
111
|
-
|
112
|
-
page.content = content = page.evaluate(graphDef, parsedData)
|
113
|
-
|
114
|
-
# Write resulting content to STDOUT and exit.
|
115
|
-
if graphFormat
|
116
|
-
page.render '/dev/stdout', { format: graphFormat, quality: 100 }
|
182
|
+
# Render the graph to std out. If include option provided, pull that
|
183
|
+
# in and render graph via callback.
|
184
|
+
if included_file = fns.getInclude()
|
185
|
+
page.includeJs(included_file, fns.renderGraph)
|
117
186
|
else
|
118
|
-
|
119
|
-
|
120
|
-
phantom.exit()
|
187
|
+
fns.renderGraph()
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grapht
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Lowrimore
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-09-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -120,4 +120,3 @@ test_files:
|
|
120
120
|
- spec/lib/grapht/shell_spec.rb
|
121
121
|
- spec/spec_helper.rb
|
122
122
|
- spec/support/rspec-prof.rb
|
123
|
-
has_rdoc:
|