rubyvis 0.1.7 → 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.
- data.tar.gz.sig +0 -0
- data/History.txt +12 -0
- data/Manifest.txt +9 -2
- data/README.txt +30 -59
- data/examples/area_interpolation.rb +56 -0
- data/examples/{first.rb → first_protovis_api.rb} +1 -1
- data/examples/first_rbp_api.rb +21 -0
- data/examples/image.rb +0 -1
- data/examples/line.rb +0 -1
- data/examples/line_interpolation.rb +55 -0
- data/lib/rubyvis.rb +3 -3
- data/lib/rubyvis/color/color.rb +177 -20
- data/lib/rubyvis/color/colors.rb +98 -0
- data/lib/rubyvis/layout/stack.rb +271 -196
- data/lib/rubyvis/mark.rb +26 -9
- data/lib/rubyvis/mark/anchor.rb +2 -1
- data/lib/rubyvis/mark/area.rb +99 -1
- data/lib/rubyvis/mark/bar.rb +2 -2
- data/lib/rubyvis/mark/dot.rb +2 -2
- data/lib/rubyvis/mark/line.rb +116 -4
- data/lib/rubyvis/mark/panel.rb +2 -1
- data/lib/rubyvis/mark/shorcut_methods.rb +58 -0
- data/lib/rubyvis/scale/quantitative.rb +5 -3
- data/lib/rubyvis/scene/svg_area.rb +127 -121
- data/lib/rubyvis/scene/svg_curve.rb +328 -0
- data/lib/rubyvis/scene/svg_line.rb +20 -18
- data/lib/rubyvis/scene/svg_scene.rb +5 -4
- data/lib/rubyvis/sceneelement.rb +4 -1
- data/spec/area_spec.rb +48 -0
- data/spec/bar_spec.rb +1 -1
- data/spec/line_spec.rb +63 -0
- data/spec/panel_spec.rb +2 -4
- data/spec/ruby_api_spec.rb +47 -0
- data/spec/scale_linear_spec.rb +14 -1
- data/spec/spec_helper.rb +35 -0
- data/web/Rakefile +1 -1
- data/web/build_site.rb +17 -1
- data/web/examples.haml +2 -2
- data/web/index.haml +13 -7
- metadata +16 -6
- metadata.gz.sig +0 -0
- data/lib/rubyvis/color/ramp.rb +0 -1
data/lib/rubyvis/mark.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
|
1
2
|
module Rubyvis
|
2
3
|
# Constructs a new mark with default properties. Marks, with the exception of
|
3
4
|
# the root panel, are not typically constructed directly; instead, they are
|
@@ -69,7 +70,7 @@ module Rubyvis
|
|
69
70
|
# @attr [Panel]
|
70
71
|
attr_accessor :root
|
71
72
|
|
72
|
-
# The child index. -1 if the enclosing parent panel is
|
73
|
+
# The child index. -1 if the enclosing parent panel is nil; otherwise, the
|
73
74
|
# zero-based index of this mark into the parent panel's <tt>children</tt>
|
74
75
|
# array.
|
75
76
|
# @attr [Number]
|
@@ -118,7 +119,7 @@ module Rubyvis
|
|
118
119
|
# If a cast function has been assigned to the specified property name, the
|
119
120
|
# property function is wrapped by the cast function, or, if a constant is
|
120
121
|
# specified, the constant is immediately cast. Note, however, that if the
|
121
|
-
# property value is
|
122
|
+
# property value is nil, the cast function is not invoked.
|
122
123
|
#
|
123
124
|
# Parameters:
|
124
125
|
# * @param [String] name the property name.
|
@@ -128,8 +129,12 @@ module Rubyvis
|
|
128
129
|
|
129
130
|
def self.property_method(name, _def, func=nil, klass=nil)
|
130
131
|
return if klass.method_defined? name
|
131
|
-
klass.send(:define_method, name) do |*arguments|
|
132
|
+
klass.send(:define_method, name) do |*arguments,&block|
|
133
|
+
|
132
134
|
v,dummy = arguments
|
135
|
+
if block
|
136
|
+
v=block
|
137
|
+
end
|
133
138
|
if _def and self.scene
|
134
139
|
if arguments.size>0
|
135
140
|
defs[name]=OpenStruct.new({:id=>(v.nil?) ? 0 : Rubyvis.id, :value=> v})
|
@@ -137,7 +142,8 @@ module Rubyvis
|
|
137
142
|
end
|
138
143
|
return defs[name]
|
139
144
|
end
|
140
|
-
|
145
|
+
|
146
|
+
if arguments.size>0 or block
|
141
147
|
v=v.to_proc if v.respond_to? :to_proc
|
142
148
|
type=(!_def).to_i<<1 | (v.is_a? Proc).to_i
|
143
149
|
|
@@ -379,7 +385,7 @@ module Rubyvis
|
|
379
385
|
end
|
380
386
|
|
381
387
|
# Create a new Mark
|
382
|
-
def initialize(opts=Hash.new)
|
388
|
+
def initialize(opts=Hash.new, &block)
|
383
389
|
@_properties=[]
|
384
390
|
opts.each {|k,v|
|
385
391
|
self.send("#{k}=",v) if self.respond_to? k
|
@@ -390,9 +396,18 @@ module Rubyvis
|
|
390
396
|
@index_defined = true
|
391
397
|
@scale=1
|
392
398
|
@scene=nil
|
399
|
+
if block
|
400
|
+
block.arity<1 ? self.instance_eval(&block) : block.call(self)
|
401
|
+
end
|
393
402
|
end
|
394
403
|
|
395
404
|
|
405
|
+
|
406
|
+
|
407
|
+
|
408
|
+
|
409
|
+
|
410
|
+
|
396
411
|
# The mark type; a lower name. The type name controls rendering
|
397
412
|
# behavior, and unless the rendering engine is extended, must be one of the
|
398
413
|
# built-in concrete mark types: area, bar, dot, image, label, line, panel,
|
@@ -454,9 +469,9 @@ module Rubyvis
|
|
454
469
|
|
455
470
|
|
456
471
|
#Returns the previous instance of this mark in the scene graph, or
|
457
|
-
#
|
472
|
+
# nil if this is the first instance.
|
458
473
|
#
|
459
|
-
# @return a node in the scene graph, or
|
474
|
+
# @return a node in the scene graph, or nil.
|
460
475
|
def sibling
|
461
476
|
(self.index==0) ? nil: self.scene[self.index-1]
|
462
477
|
end
|
@@ -464,9 +479,9 @@ module Rubyvis
|
|
464
479
|
|
465
480
|
# Returns the current instance in the scene graph of this mark,
|
466
481
|
# in the previous instance of the enclosing parent panel.
|
467
|
-
# May return
|
482
|
+
# May return nil if this instance could not be found.
|
468
483
|
#
|
469
|
-
# @return a node in the scene graph, or
|
484
|
+
# @return a node in the scene graph, or nil.
|
470
485
|
def cousin
|
471
486
|
par=self.parent
|
472
487
|
s= par ? par.sibling : nil
|
@@ -969,3 +984,5 @@ require 'rubyvis/mark/rule'
|
|
969
984
|
require 'rubyvis/mark/label'
|
970
985
|
require 'rubyvis/mark/dot'
|
971
986
|
require 'rubyvis/mark/wedge'
|
987
|
+
require 'rubyvis/mark/shorcut_methods'
|
988
|
+
|
data/lib/rubyvis/mark/anchor.rb
CHANGED
@@ -56,9 +56,10 @@ module Rubyvis
|
|
56
56
|
# Create a new Anchor. Use Mark.add instead.
|
57
57
|
|
58
58
|
def initialize(target)
|
59
|
-
|
59
|
+
|
60
60
|
self.target=target
|
61
61
|
self.parent=target.parent
|
62
|
+
super()
|
62
63
|
end
|
63
64
|
|
64
65
|
# Sets the prototype of this anchor to the specified mark. Any properties not
|
data/lib/rubyvis/mark/area.rb
CHANGED
@@ -4,7 +4,7 @@ module Rubyvis
|
|
4
4
|
Rubyvis::Area
|
5
5
|
end
|
6
6
|
# Provides methods pertinents to area like-marks.
|
7
|
-
module AreaPrototype
|
7
|
+
module AreaPrototype # :nodoc:
|
8
8
|
def fixed
|
9
9
|
{
|
10
10
|
:line_width=> true,
|
@@ -99,9 +99,107 @@ module Rubyvis
|
|
99
99
|
return anchor
|
100
100
|
end
|
101
101
|
end
|
102
|
+
|
103
|
+
# Represents an area mark: the solid area between two series of
|
104
|
+
# connected line segments. Unsurprisingly, areas are used most frequently for
|
105
|
+
# area charts.
|
106
|
+
#
|
107
|
+
# <p>Just as a line represents a polyline, the <tt>Area</tt> mark type
|
108
|
+
# represents a <i>polygon</i>. However, an area is not an arbitrary polygon;
|
109
|
+
# vertices are paired either horizontally or vertically into parallel
|
110
|
+
# <i>spans</i>, and each span corresponds to an associated datum. Either the
|
111
|
+
# width or the height must be specified, but not both; this determines whether
|
112
|
+
# the area is horizontally-oriented or vertically-oriented. Like lines, areas
|
113
|
+
# can be stroked and filled with arbitrary colors.
|
114
|
+
|
102
115
|
class Area < Mark
|
103
116
|
include AreaPrototype
|
104
117
|
@properties=Mark.properties.dup
|
118
|
+
|
119
|
+
|
120
|
+
##
|
121
|
+
# :attr: width
|
122
|
+
# The width of a given span, in pixels; used for horizontal spans. If the width
|
123
|
+
# is specified, the height property should be 0 (the default). Either the top
|
124
|
+
# or bottom property should be used to space the spans vertically, typically as
|
125
|
+
# a multiple of the index.
|
126
|
+
|
127
|
+
|
128
|
+
##
|
129
|
+
# :attr: height
|
130
|
+
# The height of a given span, in pixels; used for vertical spans. If the height
|
131
|
+
# is specified, the width property should be 0 (the default). Either the left
|
132
|
+
# or right property should be used to space the spans horizontally, typically
|
133
|
+
# as a multiple of the index.
|
134
|
+
|
135
|
+
|
136
|
+
##
|
137
|
+
# :attr: line_width
|
138
|
+
# The width of stroked lines, in pixels; used in conjunction with
|
139
|
+
# <tt>strokeStyle</tt> to stroke the perimeter of the area. Unlike the
|
140
|
+
# {@link Line} mark type, the entire perimeter is stroked, rather than just one
|
141
|
+
# edge. The default value of this property is 1.5, but since the default stroke
|
142
|
+
# style is null, area marks are not stroked by default.
|
143
|
+
#
|
144
|
+
# <p>This property is <i>fixed</i> for non-segmented areas. See
|
145
|
+
# {@link pv.Mark}.
|
146
|
+
|
147
|
+
|
148
|
+
##
|
149
|
+
# :attr: stroke_style
|
150
|
+
# The style of stroked lines; used in conjunction with <tt>lineWidth</tt> to
|
151
|
+
# stroke the perimeter of the area. Unlike the {@link Line} mark type, the
|
152
|
+
# entire perimeter is stroked, rather than just one edge. The default value of
|
153
|
+
# this property is null, meaning areas are not stroked by default.
|
154
|
+
#
|
155
|
+
# <p>This property is <i>fixed</i> for non-segmented areas. See
|
156
|
+
# {@link pv.Mark}.
|
157
|
+
#
|
158
|
+
|
159
|
+
|
160
|
+
##
|
161
|
+
# :attr: fill_style
|
162
|
+
# The area fill style; if non-null, the interior of the polygon forming the
|
163
|
+
# area is filled with the specified color. The default value of this property
|
164
|
+
# is a categorical color.
|
165
|
+
#
|
166
|
+
# <p>This property is <i>fixed</i> for non-segmented areas. See
|
167
|
+
# {@link pv.Mark}.
|
168
|
+
|
169
|
+
|
170
|
+
##
|
171
|
+
# :attr: segmented
|
172
|
+
# Whether the area is segmented; whether variations in fill style, stroke
|
173
|
+
# style, and the other properties are treated as fixed. Rendering segmented
|
174
|
+
# areas is noticeably slower than non-segmented areas.
|
175
|
+
#
|
176
|
+
# <p>This property is <i>fixed</i>. See {@link pv.Mark}.
|
177
|
+
|
178
|
+
|
179
|
+
##
|
180
|
+
# :attr: interpolate
|
181
|
+
# How to interpolate between values. Linear interpolation ("linear") is the
|
182
|
+
# default, producing a straight line between points. For piecewise constant
|
183
|
+
# functions (i.e., step functions), either "step-before" or "step-after" can
|
184
|
+
# be specified. To draw open uniform b-splines, specify "basis".
|
185
|
+
# To draw cardinal splines, specify "cardinal"; see also Line.tension()
|
186
|
+
#
|
187
|
+
# <p>This property is <i>fixed</i>. See {@link pv.Mark}.
|
188
|
+
|
189
|
+
|
190
|
+
##
|
191
|
+
# :attr: tension
|
192
|
+
# The tension of cardinal splines; used in conjunction with
|
193
|
+
# interpolate("cardinal"). A value between 0 and 1 draws cardinal splines with
|
194
|
+
# the given tension. In some sense, the tension can be interpreted as the
|
195
|
+
# "length" of the tangent; a tension of 1 will yield all zero tangents (i.e.,
|
196
|
+
# linear interpolation), and a tension of 0 yields a Catmull-Rom spline. The
|
197
|
+
# default value is 0.7.
|
198
|
+
#
|
199
|
+
# <p>This property is <i>fixed</i>. See {@link pv.Mark}.
|
200
|
+
|
201
|
+
|
202
|
+
|
105
203
|
attr_accessor_dsl :width, :height, :line_width, [:stroke_style, lambda {|d| Rubyvis.color(d)}], [:fill_style, lambda {|d| Rubyvis.color(d)}], :segmented, :interpolate, :tension
|
106
204
|
def type
|
107
205
|
'area'
|
data/lib/rubyvis/mark/bar.rb
CHANGED
@@ -48,11 +48,11 @@ module Rubyvis
|
|
48
48
|
##
|
49
49
|
# :attr: stroke_style
|
50
50
|
# The style of stroked lines; used in conjunction with line_width to
|
51
|
-
# stroke the bar's border. The default value of this property is
|
51
|
+
# stroke the bar's border. The default value of this property is nil, meaning bars are not stroked by default.
|
52
52
|
|
53
53
|
##
|
54
54
|
# :attr: fill_style
|
55
|
-
# The bar fill style; if non-
|
55
|
+
# The bar fill style; if non-nil, the interior of the bar is filled with the
|
56
56
|
# specified color. The default value of this property is a categorical color.
|
57
57
|
|
58
58
|
attr_accessor_dsl :width, :height, :line_width, [:stroke_style, lambda {|d| Rubyvis.color(d)}], [:fill_style, lambda {|d| Rubyvis.color(d)}]
|
data/lib/rubyvis/mark/dot.rb
CHANGED
@@ -70,8 +70,8 @@ module Rubyvis
|
|
70
70
|
|
71
71
|
##
|
72
72
|
# :attr: fill_style
|
73
|
-
# The fill style; if non-
|
74
|
-
# specified color. The default value of this property is
|
73
|
+
# The fill style; if non-nil, the interior of the dot is filled with the
|
74
|
+
# specified color. The default value of this property is nil, meaning dots are
|
75
75
|
# not filled by default. See Rubyvis.color()
|
76
76
|
|
77
77
|
attr_accessor_dsl :shape, :shape_angle, :shape_radius, :shape_size, :line_width, [:stroke_style, lambda {|d| Rubyvis.color(d)}], [:fill_style, lambda {|d| Rubyvis.color(d)}]
|
data/lib/rubyvis/mark/line.rb
CHANGED
@@ -3,7 +3,8 @@ module Rubyvis
|
|
3
3
|
def self.Line
|
4
4
|
Rubyvis::Line
|
5
5
|
end
|
6
|
-
|
6
|
+
# Provides methods pertinents to line like marks.
|
7
|
+
module LinePrototype # :nodoc:
|
7
8
|
include AreaPrototype
|
8
9
|
def line_anchor(name)
|
9
10
|
anchor=area_anchor(name).text_align(lambda {|d|
|
@@ -14,26 +15,137 @@ module Rubyvis
|
|
14
15
|
return anchor
|
15
16
|
end
|
16
17
|
end
|
18
|
+
|
19
|
+
# Represents a series of connected line segments, or <i>polyline</i>,
|
20
|
+
# that can be stroked with a configurable color and thickness. Each
|
21
|
+
# articulation point in the line corresponds to a datum; for <i>n</i> points,
|
22
|
+
# <i>n</i>-1 connected line segments are drawn. The point is positioned using
|
23
|
+
# the box model. Arbitrary paths are also possible, allowing radar plots and
|
24
|
+
# other custom visualizations.
|
25
|
+
#
|
26
|
+
# <p>Like areas, lines can be stroked and filled with arbitrary colors. In most
|
27
|
+
# cases, lines are only stroked, but the fill style can be used to construct
|
28
|
+
# arbitrary polygons.
|
17
29
|
class Line < Mark
|
18
30
|
include AreaPrototype
|
19
31
|
include LinePrototype
|
20
32
|
@properties=Mark.properties.dup
|
33
|
+
|
34
|
+
|
35
|
+
##
|
36
|
+
# :attr: line_width
|
37
|
+
# The width of stroked lines, in pixels; used in conjunction with
|
38
|
+
# +stroke_style+ to stroke the line.
|
39
|
+
|
40
|
+
|
41
|
+
##
|
42
|
+
# :attr: stroke_style
|
43
|
+
# The style of stroked lines; used in conjunction with <tt>lineWidth</tt> to
|
44
|
+
# stroke the line. The default value of this property is a categorical color.
|
45
|
+
|
46
|
+
|
47
|
+
##
|
48
|
+
# :attr: line_join
|
49
|
+
# The type of corners where two lines meet. Accepted values are "bevel",
|
50
|
+
# "round" and "miter". The default value is "miter".
|
51
|
+
#
|
52
|
+
# <p>For segmented lines, only "miter" joins and "linear" interpolation are
|
53
|
+
# currently supported. Any other value, including nil, will disable joins,
|
54
|
+
# producing disjoint line segments. Note that the miter joins must be computed
|
55
|
+
# manually (at least in the current SVG renderer); since this calculation may
|
56
|
+
# be expensive and unnecessary for small lines, specifying nil can improve
|
57
|
+
# performance significantly.
|
58
|
+
#
|
59
|
+
# <p>This property is <i>fixed</i>. See Rubyvis.Mark
|
60
|
+
|
61
|
+
##
|
62
|
+
# :attr: fill_style
|
63
|
+
# The line fill style; if non-nil, the interior of the line is closed and
|
64
|
+
# filled with the specified color. The default value of this property is a
|
65
|
+
# nil, meaning that lines are not filled by default.
|
66
|
+
#
|
67
|
+
# <p>This property is <i>fixed</i>. See Rubyvis.Mark
|
68
|
+
|
69
|
+
|
70
|
+
##
|
71
|
+
# :attr: segmented
|
72
|
+
# Whether the line is segmented; whether variations in stroke style, line width and the other properties are treated as fixed. Rendering segmented lines is noticeably slower than non-segmented lines.
|
73
|
+
# <p>This property is <i>fixed</i>. See Rubyvis.Mark
|
74
|
+
|
75
|
+
|
76
|
+
##
|
77
|
+
# :attr: interpolate
|
78
|
+
# How to interpolate between values. Linear interpolation ("linear") is the
|
79
|
+
# default, producing a straight line between points. For piecewise constant
|
80
|
+
# functions (i.e., step functions), either "step-before" or "step-after"
|
81
|
+
# can be specified. To draw a clockwise circular arc between points,
|
82
|
+
# specify "polar"; to draw a counterclockwise circular arc between points,
|
83
|
+
# specify "polar-reverse". To draw open uniform b-splines, specify "basis". # To draw cardinal splines, specify "cardinal"; see also Line.tension()
|
84
|
+
#
|
85
|
+
# <p>This property is <i>fixed</i>. See Rubyvis.Mark
|
86
|
+
|
87
|
+
|
88
|
+
##
|
89
|
+
# :attr: eccentricity
|
90
|
+
# The eccentricity of polar line segments; used in conjunction with
|
91
|
+
# interpolate("polar"). The default value of 0 means that line segments are
|
92
|
+
# drawn as circular arcs. A value of 1 draws a straight line. A value between 0
|
93
|
+
# and 1 draws an elliptical arc with the given eccentricity.
|
94
|
+
|
95
|
+
|
96
|
+
##
|
97
|
+
# :attr: tension
|
98
|
+
# The tension of cardinal splines; used in conjunction with
|
99
|
+
# interpolate("cardinal"). A value between 0 and 1 draws cardinal splines with
|
100
|
+
# the given tension. In some sense, the tension can be interpreted as the
|
101
|
+
# "length" of the tangent; a tension of 1 will yield all zero tangents (i.e.,
|
102
|
+
# linear interpolation), and a tension of 0 yields a Catmull-Rom spline. The
|
103
|
+
# default value is 0.7.
|
104
|
+
#
|
105
|
+
# <p>This property is <i>fixed</i>. See Rubyvis.Mark
|
106
|
+
|
21
107
|
attr_accessor_dsl :line_width, :line_join, [:stroke_style, lambda {|d| Rubyvis.color(d)}], [:fill_style, lambda {|d| Rubyvis.color(d)}], :segmented, :interpolate, :eccentricity, :tension
|
108
|
+
# Type of line
|
22
109
|
def type
|
23
110
|
"line"
|
24
111
|
end
|
112
|
+
|
113
|
+
# Constructs a new line anchor with default properties. Lines support five
|
114
|
+
# different anchors:<ul>
|
115
|
+
#
|
116
|
+
# <li>top
|
117
|
+
# <li>left
|
118
|
+
# <li>center
|
119
|
+
# <li>bottom
|
120
|
+
# <li>right
|
121
|
+
#
|
122
|
+
# </ul>In addition to positioning properties (left, right, top bottom), the
|
123
|
+
# anchors support text rendering properties (text-align, text-baseline). Text is
|
124
|
+
# rendered to appear outside the line. Note that this behavior is different
|
125
|
+
# from other mark anchors, which default to rendering text <i>inside</i> the
|
126
|
+
# mark.
|
127
|
+
#
|
128
|
+
# <p>For consistency with the other mark types, the anchor positions are
|
129
|
+
# defined in terms of their opposite edge. For example, the top anchor defines
|
130
|
+
# the bottom property, such that a bar added to the top anchor grows upward.
|
25
131
|
def anchor(name)
|
26
132
|
line_anchor(name)
|
27
133
|
end
|
28
|
-
|
134
|
+
# Reuse Area's implementation for segmented bind & build.
|
135
|
+
def bind(*args) # :nodoc:
|
29
136
|
area_bind(*args)
|
30
137
|
end
|
31
|
-
|
138
|
+
# Reuse Area's implementation for segmented bind & build.
|
139
|
+
|
140
|
+
def build_instance(*args) # :nodoc:
|
32
141
|
area_build_instance(*args)
|
33
142
|
end
|
143
|
+
# Default properties for lines. By default, there is no fill and the stroke
|
144
|
+
# style is a categorical color. The default interpolation is linear.
|
145
|
+
|
34
146
|
def self.defaults
|
35
147
|
a=Rubyvis::Colors.category10()
|
36
|
-
Line.new.extend(Mark.defaults).line_join('miter').line_width(1.5).stroke_style( lambda {return a.scale(self.parent.index)}).interpolate('linear').eccentricity(0).tension(7)
|
148
|
+
Line.new.extend(Mark.defaults).line_join('miter').line_width(1.5).stroke_style( lambda {return a.scale(self.parent.index)}).interpolate('linear').eccentricity(0).tension(0.7)
|
37
149
|
end
|
38
150
|
end
|
39
151
|
end
|
data/lib/rubyvis/mark/panel.rb
CHANGED
@@ -0,0 +1,58 @@
|
|
1
|
+
class Rubyvis::Mark
|
2
|
+
##
|
3
|
+
# :section: Ruby API
|
4
|
+
##
|
5
|
+
|
6
|
+
# Create
|
7
|
+
def self.mark_method(name,mark) #:nodoc:
|
8
|
+
define_method(name) do |*args,&block|
|
9
|
+
opts=args[0]
|
10
|
+
opts||=Hash.new
|
11
|
+
if opts[:anchor]
|
12
|
+
base=anchor(opts[:anchor])
|
13
|
+
else
|
14
|
+
base=self
|
15
|
+
end
|
16
|
+
a=base.add(mark)
|
17
|
+
if block
|
18
|
+
block.arity<1 ? a.instance_eval(&block) : block.call(a)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
##
|
23
|
+
# :method: area(opts,&block)
|
24
|
+
#
|
25
|
+
mark_method :area, Rubyvis::Area
|
26
|
+
##
|
27
|
+
# :method: bar(opts,&block)
|
28
|
+
#
|
29
|
+
mark_method :bar, Rubyvis::Bar
|
30
|
+
##
|
31
|
+
# :method: dot(opts,&block)
|
32
|
+
#
|
33
|
+
mark_method :dot, Rubyvis::Dot
|
34
|
+
##
|
35
|
+
# :method: _image(opts,&block)
|
36
|
+
#
|
37
|
+
mark_method :_image, Rubyvis::Image
|
38
|
+
##
|
39
|
+
# :method: label(opts,&block)
|
40
|
+
#
|
41
|
+
mark_method :label, Rubyvis::Label
|
42
|
+
##
|
43
|
+
# :method: line(opts,&block)
|
44
|
+
#
|
45
|
+
mark_method :line, Rubyvis::Line
|
46
|
+
##
|
47
|
+
# :method: panel(opts,&block)
|
48
|
+
#
|
49
|
+
mark_method :panel, Rubyvis::Panel
|
50
|
+
##
|
51
|
+
# :method: rule(opts,&block)
|
52
|
+
#
|
53
|
+
mark_method :rule, Rubyvis::Rule
|
54
|
+
##
|
55
|
+
# :method: wedge(opts,&block)
|
56
|
+
#
|
57
|
+
mark_method :wedge, Rubyvis::Rule
|
58
|
+
end
|