hyper-d3 1.0.0.lap23

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.
Files changed (204) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/Gemfile +4 -0
  4. data/Gemfile.lock +313 -0
  5. data/README.md +118 -0
  6. data/Rakefile +31 -0
  7. data/hyper-d3.gemspec +27 -0
  8. data/lib/d3.rb +68 -0
  9. data/lib/d3/arc.rb +29 -0
  10. data/lib/d3/area.rb +53 -0
  11. data/lib/d3/axis.rb +79 -0
  12. data/lib/d3/band_scale.rb +30 -0
  13. data/lib/d3/collections.rb +9 -0
  14. data/lib/d3/color.rb +76 -0
  15. data/lib/d3/color_schemes.rb +34 -0
  16. data/lib/d3/continuous_scale.rb +60 -0
  17. data/lib/d3/creator.rb +11 -0
  18. data/lib/d3/curve.rb +74 -0
  19. data/lib/d3/dsv.rb +103 -0
  20. data/lib/d3/ease.rb +319 -0
  21. data/lib/d3/format.rb +95 -0
  22. data/lib/d3/histograms.rb +46 -0
  23. data/lib/d3/interpolate.rb +125 -0
  24. data/lib/d3/line.rb +27 -0
  25. data/lib/d3/map.rb +48 -0
  26. data/lib/d3/misc.rb +15 -0
  27. data/lib/d3/native.rb +112 -0
  28. data/lib/d3/nest.rb +100 -0
  29. data/lib/d3/ordinal_scale.rb +39 -0
  30. data/lib/d3/path.rb +24 -0
  31. data/lib/d3/pie.rb +25 -0
  32. data/lib/d3/point_scale.rb +27 -0
  33. data/lib/d3/polygon.rb +18 -0
  34. data/lib/d3/quadtree.rb +89 -0
  35. data/lib/d3/quantile_scale.rb +19 -0
  36. data/lib/d3/quantize_scale.rb +20 -0
  37. data/lib/d3/radial_area.rb +55 -0
  38. data/lib/d3/radial_line.rb +27 -0
  39. data/lib/d3/random.rb +14 -0
  40. data/lib/d3/search.rb +30 -0
  41. data/lib/d3/selection.rb +151 -0
  42. data/lib/d3/sequential_scale.rb +31 -0
  43. data/lib/d3/set.rb +30 -0
  44. data/lib/d3/source/d3-drag.js +234 -0
  45. data/lib/d3/source/d3-scale-chromatic.js +484 -0
  46. data/lib/d3/source/d3.js +17178 -0
  47. data/lib/d3/stack.rb +13 -0
  48. data/lib/d3/statistics.rb +81 -0
  49. data/lib/d3/symbol.rb +70 -0
  50. data/lib/d3/threshold_scale.rb +22 -0
  51. data/lib/d3/time_format.rb +47 -0
  52. data/lib/d3/time_interval.rb +85 -0
  53. data/lib/d3/transformations.rb +16 -0
  54. data/lib/hyper-d3.rb +17 -0
  55. data/lib/hyperloop/d3/component.rb +12 -0
  56. data/lib/hyperloop/d3/mixin.rb +59 -0
  57. data/lib/hyperloop/d3/version.rb +5 -0
  58. data/spec/arc_spec.rb +80 -0
  59. data/spec/area_spec.rb +98 -0
  60. data/spec/axis_spec.rb +174 -0
  61. data/spec/band_scale_spec.rb +73 -0
  62. data/spec/color_spec.rb +74 -0
  63. data/spec/continuous_scale_spec.rb +217 -0
  64. data/spec/coverage_spec.rb +16 -0
  65. data/spec/creator_spec.rb +15 -0
  66. data/spec/curve_spec.rb +206 -0
  67. data/spec/dsv_spec.rb +194 -0
  68. data/spec/ease_spec.rb +370 -0
  69. data/spec/format_spec.rb +87 -0
  70. data/spec/histograms_spec.rb +61 -0
  71. data/spec/html/index.html.erb +11 -0
  72. data/spec/interpolate_spec.rb +152 -0
  73. data/spec/line_spec.rb +54 -0
  74. data/spec/map_spec.rb +80 -0
  75. data/spec/misc_spec.rb +21 -0
  76. data/spec/nest_spec.rb +89 -0
  77. data/spec/objects_spec.rb +22 -0
  78. data/spec/ordinal_scale_spec.rb +59 -0
  79. data/spec/path_spec.rb +65 -0
  80. data/spec/pie_spec.rb +114 -0
  81. data/spec/point_scale_spec.rb +58 -0
  82. data/spec/polygon_spec.rb +51 -0
  83. data/spec/quadtree_spec.rb +128 -0
  84. data/spec/quantile_scale_spec.rb +24 -0
  85. data/spec/quantize_scale_spec.rb +40 -0
  86. data/spec/radial_area_spec.rb +123 -0
  87. data/spec/radial_line_spec.rb +50 -0
  88. data/spec/random_spec.rb +34 -0
  89. data/spec/search_spec.rb +69 -0
  90. data/spec/selection_data_spec.rb +64 -0
  91. data/spec/selection_manipulation_spec.rb +166 -0
  92. data/spec/selection_spec.rb +187 -0
  93. data/spec/sequential_scale_spec.rb +90 -0
  94. data/spec/set_spec.rb +57 -0
  95. data/spec/spec_helper.rb +1 -0
  96. data/spec/stack_spec.rb +5 -0
  97. data/spec/statistics_spec.rb +65 -0
  98. data/spec/symbol_spec.rb +116 -0
  99. data/spec/test_app/.gitignore +23 -0
  100. data/spec/test_app/Gemfile +7 -0
  101. data/spec/test_app/Gemfile.lock +206 -0
  102. data/spec/test_app/README.md +9 -0
  103. data/spec/test_app/Rakefile +6 -0
  104. data/spec/test_app/app/assets/config/manifest.js +3 -0
  105. data/spec/test_app/app/assets/images/.keep +0 -0
  106. data/spec/test_app/app/assets/javascripts/application.js +13 -0
  107. data/spec/test_app/app/assets/javascripts/cable.js +13 -0
  108. data/spec/test_app/app/assets/javascripts/channels/.keep +0 -0
  109. data/spec/test_app/app/assets/javascripts/data/elections_2016.rb +10 -0
  110. data/spec/test_app/app/assets/javascripts/data/harry_potter.rb +19 -0
  111. data/spec/test_app/app/assets/javascripts/data/iphones.rb +29 -0
  112. data/spec/test_app/app/assets/javascripts/data/london_population.rb +26 -0
  113. data/spec/test_app/app/assets/javascripts/data/man_vs_horse.rb +55 -0
  114. data/spec/test_app/app/assets/javascripts/data/mtg_modern_colors.rb +96 -0
  115. data/spec/test_app/app/assets/javascripts/data/mtg_modern_creatures.rb +116 -0
  116. data/spec/test_app/app/assets/javascripts/data/olympics_2016_medals.rb +100 -0
  117. data/spec/test_app/app/assets/javascripts/data/paradox.rb +60 -0
  118. data/spec/test_app/app/assets/javascripts/data/polish_pms.rb +28 -0
  119. data/spec/test_app/app/assets/javascripts/data/star_trek_voyager.rb +183 -0
  120. data/spec/test_app/app/assets/javascripts/data/weather_in_london.rb +381 -0
  121. data/spec/test_app/app/assets/javascripts/elections_2016.rb +27 -0
  122. data/spec/test_app/app/assets/javascripts/harry_potter.rb +42 -0
  123. data/spec/test_app/app/assets/javascripts/iphones.rb +54 -0
  124. data/spec/test_app/app/assets/javascripts/london_population.rb +53 -0
  125. data/spec/test_app/app/assets/javascripts/london_population_area.rb +49 -0
  126. data/spec/test_app/app/assets/javascripts/man_vs_horse.rb +60 -0
  127. data/spec/test_app/app/assets/javascripts/mtg_modern_colors.rb +56 -0
  128. data/spec/test_app/app/assets/javascripts/mtg_modern_creatures.rb +70 -0
  129. data/spec/test_app/app/assets/javascripts/olympics_2016_medals.rb +62 -0
  130. data/spec/test_app/app/assets/javascripts/paradox.rb +64 -0
  131. data/spec/test_app/app/assets/javascripts/polish_pms.rb +60 -0
  132. data/spec/test_app/app/assets/javascripts/star_trek_voyager.rb +44 -0
  133. data/spec/test_app/app/assets/javascripts/weather_in_london.rb +69 -0
  134. data/spec/test_app/app/assets/stylesheets/application.css +15 -0
  135. data/spec/test_app/app/channels/application_cable/channel.rb +4 -0
  136. data/spec/test_app/app/channels/application_cable/connection.rb +4 -0
  137. data/spec/test_app/app/controllers/application_controller.rb +27 -0
  138. data/spec/test_app/app/controllers/concerns/.keep +0 -0
  139. data/spec/test_app/app/helpers/application_helper.rb +2 -0
  140. data/spec/test_app/app/jobs/application_job.rb +2 -0
  141. data/spec/test_app/app/mailers/application_mailer.rb +4 -0
  142. data/spec/test_app/app/models/application_record.rb +3 -0
  143. data/spec/test_app/app/models/concerns/.keep +0 -0
  144. data/spec/test_app/app/views/application/index.erb +18 -0
  145. data/spec/test_app/app/views/application/visualization.erb +28 -0
  146. data/spec/test_app/app/views/layouts/application.html.erb +13 -0
  147. data/spec/test_app/bin/bundle +3 -0
  148. data/spec/test_app/bin/rails +4 -0
  149. data/spec/test_app/bin/rake +4 -0
  150. data/spec/test_app/bin/setup +38 -0
  151. data/spec/test_app/bin/update +29 -0
  152. data/spec/test_app/bin/yarn +11 -0
  153. data/spec/test_app/config.ru +5 -0
  154. data/spec/test_app/config/application.rb +18 -0
  155. data/spec/test_app/config/boot.rb +3 -0
  156. data/spec/test_app/config/cable.yml +10 -0
  157. data/spec/test_app/config/database.yml +25 -0
  158. data/spec/test_app/config/environment.rb +5 -0
  159. data/spec/test_app/config/environments/development.rb +54 -0
  160. data/spec/test_app/config/environments/production.rb +91 -0
  161. data/spec/test_app/config/environments/test.rb +42 -0
  162. data/spec/test_app/config/initializers/application_controller_renderer.rb +8 -0
  163. data/spec/test_app/config/initializers/assets.rb +14 -0
  164. data/spec/test_app/config/initializers/backtrace_silencers.rb +7 -0
  165. data/spec/test_app/config/initializers/cookies_serializer.rb +5 -0
  166. data/spec/test_app/config/initializers/filter_parameter_logging.rb +4 -0
  167. data/spec/test_app/config/initializers/inflections.rb +16 -0
  168. data/spec/test_app/config/initializers/mime_types.rb +4 -0
  169. data/spec/test_app/config/initializers/wrap_parameters.rb +14 -0
  170. data/spec/test_app/config/locales/en.yml +33 -0
  171. data/spec/test_app/config/puma.rb +56 -0
  172. data/spec/test_app/config/routes.rb +5 -0
  173. data/spec/test_app/config/secrets.yml +32 -0
  174. data/spec/test_app/config/spring.rb +6 -0
  175. data/spec/test_app/db/seeds.rb +7 -0
  176. data/spec/test_app/lib/assets/.keep +0 -0
  177. data/spec/test_app/lib/tasks/.keep +0 -0
  178. data/spec/test_app/log/.keep +0 -0
  179. data/spec/test_app/package.json +5 -0
  180. data/spec/test_app/public/404.html +67 -0
  181. data/spec/test_app/public/422.html +67 -0
  182. data/spec/test_app/public/500.html +66 -0
  183. data/spec/test_app/public/apple-touch-icon-precomposed.png +0 -0
  184. data/spec/test_app/public/apple-touch-icon.png +0 -0
  185. data/spec/test_app/public/favicon.ico +0 -0
  186. data/spec/test_app/public/robots.txt +1 -0
  187. data/spec/test_app/test/application_system_test_case.rb +5 -0
  188. data/spec/test_app/test/controllers/.keep +0 -0
  189. data/spec/test_app/test/fixtures/.keep +0 -0
  190. data/spec/test_app/test/fixtures/files/.keep +0 -0
  191. data/spec/test_app/test/helpers/.keep +0 -0
  192. data/spec/test_app/test/integration/.keep +0 -0
  193. data/spec/test_app/test/mailers/.keep +0 -0
  194. data/spec/test_app/test/models/.keep +0 -0
  195. data/spec/test_app/test/system/.keep +0 -0
  196. data/spec/test_app/test/test_helper.rb +10 -0
  197. data/spec/test_app/tmp/.keep +0 -0
  198. data/spec/test_app/vendor/.keep +0 -0
  199. data/spec/threshold_scale_spec.rb +28 -0
  200. data/spec/time_format_spec.rb +100 -0
  201. data/spec/time_interval_spec.rb +314 -0
  202. data/spec/transformations_spec.rb +51 -0
  203. data/startrekvoyager.png +0 -0
  204. metadata +529 -0
data/lib/d3/nest.rb ADDED
@@ -0,0 +1,100 @@
1
+ module D3
2
+ class Nest
3
+ def initialize
4
+ @native = `window.d3`.JS.nest
5
+ @depth = 0
6
+ @rollup = false
7
+ end
8
+
9
+ def key(&block)
10
+ @native.JS.key(block)
11
+ @depth += 1
12
+ self
13
+ end
14
+
15
+ def sort_keys(key=nil,&block)
16
+ if block
17
+ raise ArgumentError, "Pass block or :ascending/:descending"
18
+ else
19
+ if key == :ascending
20
+ block = `window.d3.ascending`
21
+ elsif key == :descending
22
+ block = `window.d3.descending`
23
+ else
24
+ raise ArgumentError, "Pass block or :ascending/:descending"
25
+ end
26
+ end
27
+ @native.JS.sortKeys(block)
28
+ self
29
+ end
30
+
31
+ def sort_values(key=nil,&block)
32
+ if block
33
+ raise ArgumentError, "Pass block or :ascending/:descending"
34
+ else
35
+ if key == :ascending
36
+ block = `window.d3.ascending`
37
+ elsif key == :descending
38
+ block = `window.d3.descending`
39
+ else
40
+ raise ArgumentError, "Pass block or :ascending/:descending"
41
+ end
42
+ end
43
+ @native.JS.sortValues(block)
44
+ self
45
+ end
46
+
47
+ # This is really attrocious, why don't we just return nested hash?
48
+ def map(array)
49
+ result = @native.JS.map(array)
50
+ map_map(result, @depth)
51
+ end
52
+
53
+ def entries(array)
54
+ result = @native.JS.entries(array)
55
+ map_entries(result, @depth)
56
+ end
57
+
58
+ def object(array)
59
+ @native.JS.object(array)
60
+ end
61
+
62
+ def rollup(&block)
63
+ @native.JS.rollup(block)
64
+ @rollup = true
65
+ self
66
+ end
67
+
68
+ private
69
+
70
+ def map_entries(result, depth)
71
+ if depth == 0
72
+ result
73
+ else
74
+ if @rollup and depth == 1
75
+ result.map{|o| [`o.key`, `o.value`]}
76
+ else
77
+ result.map{|o| [`o.key`, map_entries(`o.values`, depth-1)]}
78
+ end
79
+ end
80
+ end
81
+
82
+ def map_map(result, depth)
83
+ if depth == 0
84
+ result
85
+ else
86
+ output = D3::Map.new(`window.d3.map()`)
87
+ D3::Map.new(result).each do |vs, k|
88
+ output.set(k, map_map(vs, depth-1))
89
+ end
90
+ output
91
+ end
92
+ end
93
+ end
94
+
95
+ class << self
96
+ def nest
97
+ D3::Nest.new
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,39 @@
1
+ module D3
2
+ class OrdinalScale
3
+ include D3::Native
4
+
5
+ def call(t)
6
+ @native.call(t)
7
+ end
8
+ attributes_d3 %i[domain range]
9
+ alias_native_new :copy
10
+
11
+ # D3 is trying to reinvent Ruby symbols here
12
+ def unknown(new_value=nil)
13
+ if new_value == nil
14
+ v = @native.JS.unknown
15
+ if `JSON.stringify(v) === '{"name":"implicit"}'`
16
+ :implicit
17
+ else
18
+ v
19
+ end
20
+ else
21
+ if new_value == :implicit
22
+ new_value = `window.d3.scaleImplicit`
23
+ end
24
+ @native.JS.unknown(new_value)
25
+ self
26
+ end
27
+ end
28
+ end
29
+
30
+ class << self
31
+ def scale_ordinal(*args)
32
+ D3::OrdinalScale.new @d3.JS.scaleOrdinal(*args)
33
+ end
34
+
35
+ def scale_implicit
36
+ :implicit
37
+ end
38
+ end
39
+ end
data/lib/d3/path.rb ADDED
@@ -0,0 +1,24 @@
1
+ module D3
2
+ class Path
3
+ include D3::Native
4
+
5
+ # D3 methods aren't chainable, but there's no reason why they shouldn't be
6
+ aliases_native_chainable %i[
7
+ moveTo
8
+ closePath
9
+ lineTo
10
+ quadraticCurveTo
11
+ bezierCurveTo
12
+ arcTo
13
+ arc
14
+ rect
15
+ ]
16
+ alias_native :to_s, :toString
17
+ end
18
+
19
+ class << self
20
+ def path
21
+ D3::Path.new @d3.JS.path
22
+ end
23
+ end
24
+ end
data/lib/d3/pie.rb ADDED
@@ -0,0 +1,25 @@
1
+ module D3
2
+ class PieGenerator
3
+ include D3::Native
4
+ def call(*args)
5
+ @native.call(*args).map{|o|
6
+ `Opal.hash({ data: o.data, index: o.index, value: o.value, start_angle: o.startAngle, end_angle: o.endAngle, pad_angle: o.padAngle })`
7
+ }
8
+ end
9
+
10
+ attributes_d3_block %i[
11
+ startAngle
12
+ endAngle
13
+ padAngle
14
+ value
15
+ sort
16
+ sortValues
17
+ ]
18
+ end
19
+
20
+ class << self
21
+ def pie
22
+ D3::PieGenerator.new @d3.JS.pie
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,27 @@
1
+ module D3
2
+ class PointScale
3
+ include D3::Native
4
+
5
+ def call(t)
6
+ v = @native.call(t)
7
+ `v === undefined ? nil : v`
8
+ end
9
+ attributes_d3 %i[
10
+ domain
11
+ range
12
+ rangeRound
13
+ padding
14
+ align
15
+ round
16
+ ]
17
+ alias_native_new :copy
18
+ alias_native :bandwidth
19
+ alias_native :step
20
+ end
21
+
22
+ class << self
23
+ def scale_point
24
+ D3::PointScale.new @d3.JS.scalePoint
25
+ end
26
+ end
27
+ end
data/lib/d3/polygon.rb ADDED
@@ -0,0 +1,18 @@
1
+ module D3
2
+ class << self
3
+ # This could maybe use more OO interface in addition to this?
4
+ # Like D3::Polygon.new(points).area etc.
5
+
6
+ aliases_d3 %i[
7
+ polygonArea
8
+ polygonCentroid
9
+ polygonContains
10
+ polygonLength
11
+ ]
12
+
13
+ def polygon_hull(points)
14
+ hull = @d3.JS.polygonHull(points)
15
+ `hull === null ? nil : hull`
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,89 @@
1
+ module D3
2
+ class Quad
3
+ include D3::Native
4
+
5
+ def internal?
6
+ `#@native.constructor === Array`
7
+ end
8
+
9
+ def leaf?
10
+ `#@native.constructor !== Array`
11
+ end
12
+
13
+ def next
14
+ return nil if internal?
15
+ return nil if `#@native.next == undefined`
16
+ D3::Quad.new(`#@native.next`)
17
+ end
18
+
19
+ def data
20
+ return nil if internal?
21
+ `#@native.data`
22
+ end
23
+
24
+ def children
25
+ return nil if leaf?
26
+ result = (0..3).map do |i|
27
+ q = `#@native[i]`
28
+ if `q == null`
29
+ nil
30
+ else
31
+ D3::Quad.new(q)
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+ class QuadTree
38
+ include D3::Native
39
+ aliases_native %i[data find size]
40
+ aliases_native_chainable %i[add addAll cover remove removeAll]
41
+ alias_native_new :copy
42
+ attribute_d3 :extent
43
+
44
+ # visit/visitAfter functions have stupid JS habit of using non-nil return as control
45
+ # and that messes up with languages which have automatic return
46
+ # Maybe worth rewriting to require explicit StopIteration ?
47
+ def visit
48
+ @native.JS.visit(proc do |node, x0, y0, x1, y1|
49
+ yield(D3::Quad.new(node), x0, y0, x1, y1)
50
+ end)
51
+ self
52
+ end
53
+
54
+ def visit_after
55
+ @native.JS.visitAfter(proc do |node, x0, y0, x1, y1|
56
+ yield(D3::Quad.new(node), x0, y0, x1, y1)
57
+ end)
58
+ self
59
+ end
60
+
61
+ def root
62
+ D3::Quad.new @native.JS.root
63
+ end
64
+
65
+ def x(&block)
66
+ if block_given?
67
+ @native.JS.x(block)
68
+ self
69
+ else
70
+ @native.JS.x
71
+ end
72
+ end
73
+
74
+ def y(&block)
75
+ if block_given?
76
+ @native.JS.y(block)
77
+ self
78
+ else
79
+ @native.JS.y
80
+ end
81
+ end
82
+ end
83
+
84
+ class << self
85
+ def quadtree(*args)
86
+ D3::QuadTree.new @d3.JS.quadtree(*args)
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,19 @@
1
+ module D3
2
+ class QuantileScale
3
+ include D3::Native
4
+
5
+ def call(t)
6
+ @native.call(t)
7
+ end
8
+
9
+ attributes_d3 %i[domain range]
10
+ aliases_native %i[invertExtent quantiles]
11
+ alias_native_new :copy
12
+ end
13
+
14
+ class << self
15
+ def scale_quantile
16
+ D3::QuantileScale.new @d3.JS.scaleQuantile
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,20 @@
1
+ module D3
2
+ class QuantizeScale
3
+ include D3::Native
4
+
5
+ def call(t)
6
+ @native.call(t)
7
+ end
8
+
9
+ attributes_d3 %i[domain range]
10
+ aliases_native %i[invertExtent ticks tickFormat]
11
+ alias_native_chainable :nice
12
+ alias_native_new :copy
13
+ end
14
+
15
+ class << self
16
+ def scale_quantize
17
+ D3::QuantizeScale.new @d3.JS.scaleQuantize
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,55 @@
1
+ module D3
2
+ class RadialAreaGenerator
3
+ include D3::Native
4
+
5
+ def call(*args)
6
+ result = @native.call(*args)
7
+ `result === null ? nil : result`
8
+ end
9
+
10
+ attributes_d3_block %i[
11
+ angle
12
+ startAngle
13
+ endAngle
14
+ radius
15
+ innerRadius
16
+ outerRadius
17
+ defined
18
+ ]
19
+
20
+ def curve(new_value=`undefined`)
21
+ if `new_value === undefined`
22
+ D3::Curve.new @native.JS.curve
23
+ else
24
+ @native.JS.curve(new_value.to_n)
25
+ self
26
+ end
27
+ end
28
+
29
+ def line_start_angle
30
+ D3::RadialLineGenerator.new @native.JS.lineStartAngle
31
+ end
32
+
33
+ def line_end_angle
34
+ D3::RadialLineGenerator.new @native.JS.lineEndAngle
35
+ end
36
+
37
+ def line_inner_radius
38
+ D3::RadialLineGenerator.new @native.JS.lineInnerRadius
39
+ end
40
+
41
+ def line_outer_radius
42
+ D3::RadialLineGenerator.new @native.JS.lineOuterRadius
43
+ end
44
+ end
45
+
46
+ class << self
47
+ def radial_area(data = nil)
48
+ if data
49
+ D3::RadialAreaGenerator.new @d3.JS.radialArea(data.to_n)
50
+ else
51
+ D3::RadialAreaGenerator.new @d3.JS.radialArea
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,27 @@
1
+ module D3
2
+ class RadialLineGenerator
3
+ include D3::Native
4
+
5
+ def call(*args)
6
+ result = @native.call(*args)
7
+ `result === null ? nil : result`
8
+ end
9
+
10
+ attributes_d3_block %i[angle radius defined]
11
+
12
+ def curve(new_value=`undefined`)
13
+ if `new_value === undefined`
14
+ D3::Curve.new @native.JS.curve
15
+ else
16
+ @native.JS.curve(new_value.to_n)
17
+ self
18
+ end
19
+ end
20
+ end
21
+
22
+ class << self
23
+ def radial_line
24
+ D3::RadialLineGenerator.new @d3.JS.radialLine
25
+ end
26
+ end
27
+ end