@@ -2,18 +2,13 @@ module UnicodePlot
22 class Canvas
33 include BorderPrinter
44
5+ CANVAS_CLASS_MAP = { }
6+
57 def self . create ( canvas_type , width , height , **kw )
6- case canvas_type
7- when :ascii
8- AsciiCanvas . new ( width , height , **kw )
9- when :braille
10- BrailleCanvas . new ( width , height , **kw )
11- when :density
12- DensityCanvas . new ( width , height , **kw )
13- when :dot
14- DotCanvas . new ( width , height , **kw )
15- when :block
16- BlockCanvas . new ( width , height , **kw )
8+ canvas_class = CANVAS_CLASS_MAP [ canvas_type ]
9+ case canvas_class
10+ when Class
11+ canvas_class . new ( width , height , **kw )
1712 else
1813 raise ArgumentError , "unknown canvas type: #{ canvas_type } "
1914 end
@@ -168,4 +163,16 @@ def lines!(x, y, color = :normal)
168163 raise ArgumentError , "#{ name } has to be positive"
169164 end
170165 end
166+
167+ def self . canvas_types
168+ Canvas ::CANVAS_CLASS_MAP . keys
169+ end
171170end
171+
172+ require_relative 'canvas/ascii_canvas'
173+ require_relative 'canvas/block_canvas'
174+ require_relative 'canvas/braille_canvas'
175+ require_relative 'canvas/density_canvas'
176+ require_relative 'canvas/dot_canvas'
177+
178+ UnicodePlot ::Canvas ::CANVAS_CLASS_MAP . freeze
0 commit comments