vedeu 0.4.7 → 0.4.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/lib/vedeu/all.rb +1 -2
  3. data/lib/vedeu/api.rb +1 -0
  4. data/lib/vedeu/application.rb +2 -4
  5. data/lib/vedeu/bindings.rb +13 -13
  6. data/lib/vedeu/configuration/api.rb +6 -9
  7. data/lib/vedeu/configuration/cli.rb +4 -7
  8. data/lib/vedeu/cursor/all.rb +2 -2
  9. data/lib/vedeu/cursor/{move_cursor.rb → move.rb} +6 -6
  10. data/lib/vedeu/cursor/refresh_cursor.rb +7 -4
  11. data/lib/vedeu/cursor/{toggle_cursor.rb → toggle.rb} +6 -8
  12. data/lib/vedeu/debug.rb +2 -0
  13. data/lib/vedeu/distributed/client.rb +1 -2
  14. data/lib/vedeu/distributed/server.rb +1 -1
  15. data/lib/vedeu/distributed/subprocess.rb +3 -2
  16. data/lib/vedeu/distributed/test_application.rb +2 -4
  17. data/lib/vedeu/dsl/all.rb +2 -0
  18. data/lib/vedeu/dsl/components/geometry.rb +45 -10
  19. data/lib/vedeu/dsl/interface.rb +1 -1
  20. data/lib/vedeu/events/event.rb +22 -14
  21. data/lib/vedeu/events/trigger.rb +6 -3
  22. data/lib/vedeu/geometry/all.rb +6 -1
  23. data/lib/vedeu/geometry/area.rb +151 -0
  24. data/lib/vedeu/geometry/canvas.rb +79 -0
  25. data/lib/vedeu/geometry/centre.rb +83 -0
  26. data/lib/vedeu/geometry/{content_geometry.rb → content.rb} +3 -3
  27. data/lib/vedeu/geometry/dimension.rb +81 -0
  28. data/lib/vedeu/{models → geometry}/geometry.rb +32 -0
  29. data/lib/vedeu/geometry/grid.rb +1 -2
  30. data/lib/vedeu/geometry/index_position.rb +3 -11
  31. data/lib/vedeu/geometry/limit.rb +1 -1
  32. data/lib/vedeu/geometry/position.rb +5 -0
  33. data/lib/vedeu/geometry/position_index.rb +3 -5
  34. data/lib/vedeu/geometry/position_validator.rb +1 -4
  35. data/lib/vedeu/input/input.rb +1 -2
  36. data/lib/vedeu/input/mapper.rb +2 -4
  37. data/lib/vedeu/launcher.rb +1 -1
  38. data/lib/vedeu/main_loop.rb +2 -0
  39. data/lib/vedeu/models/all.rb +1 -1
  40. data/lib/vedeu/models/cell.rb +68 -0
  41. data/lib/vedeu/models/interface.rb +4 -2
  42. data/lib/vedeu/output/all.rb +0 -1
  43. data/lib/vedeu/output/border.rb +6 -6
  44. data/lib/vedeu/output/clear.rb +6 -5
  45. data/lib/vedeu/output/colour.rb +1 -1
  46. data/lib/vedeu/output/esc.rb +2 -2
  47. data/lib/vedeu/output/output.rb +1 -3
  48. data/lib/vedeu/output/style.rb +2 -2
  49. data/lib/vedeu/output/text.rb +17 -1
  50. data/lib/vedeu/output/translator.rb +1 -8
  51. data/lib/vedeu/output/virtual_terminal.rb +3 -3
  52. data/lib/vedeu/output/wordwrap.rb +1 -1
  53. data/lib/vedeu/repositories/model.rb +1 -1
  54. data/lib/vedeu/repositories/repository.rb +1 -1
  55. data/lib/vedeu/support/log.rb +1 -1
  56. data/lib/vedeu/support/trace.rb +5 -3
  57. data/test/lib/vedeu/cursor/{move_cursor_test.rb → move_test.rb} +22 -22
  58. data/test/lib/vedeu/cursor/{toggle_cursor_test.rb → toggle_test.rb} +6 -6
  59. data/test/lib/vedeu/dsl/components/geometry_test.rb +14 -2
  60. data/test/lib/vedeu/geometry/area_test.rb +99 -0
  61. data/test/lib/vedeu/geometry/canvas_test.rb +66 -0
  62. data/test/lib/vedeu/geometry/centre_test.rb +58 -0
  63. data/test/lib/vedeu/geometry/{content_geometry_test.rb → content_test.rb} +3 -3
  64. data/test/lib/vedeu/geometry/dimension_test.rb +99 -0
  65. data/test/lib/vedeu/{models → geometry}/geometry_test.rb +0 -0
  66. data/test/lib/vedeu/geometry/index_position_test.rb +3 -9
  67. data/test/lib/vedeu/geometry/position_index_test.rb +2 -2
  68. data/test/lib/vedeu/geometry/position_test.rb +6 -0
  69. data/test/lib/vedeu/models/cell_test.rb +66 -0
  70. data/test/lib/vedeu/output/virtual_terminal_test.rb +25 -25
  71. data/vedeu.gemspec +3 -3
  72. metadata +34 -22
  73. data/lib/vedeu/output/char_builder.rb +0 -36
  74. data/test/lib/vedeu/output/char_builder_test.rb +0 -50
@@ -0,0 +1,151 @@
1
+ module Vedeu
2
+
3
+ # Define an area from dimensions or points.
4
+ #
5
+ class Area
6
+
7
+ # @!attribute [r] y
8
+ # @return [Fixnum]
9
+ attr_reader :y
10
+ alias_method :top, :y
11
+
12
+ # @!attribute [r] yn
13
+ # @return [Fixnum]
14
+ attr_reader :yn
15
+ alias_method :bottom, :yn
16
+
17
+ # @!attribute [r] x
18
+ # @return [Fixnum]
19
+ attr_reader :x
20
+ alias_method :left, :x
21
+
22
+ # @!attribute [r] xn
23
+ # @return [Fixnum]
24
+ attr_reader :xn
25
+ alias_method :right, :xn
26
+
27
+ # @param y_yn [Array<Fixnum>]
28
+ # @param x_xn [Array<Fixnum>]
29
+ # @return [Vedeu::Area]
30
+ def self.from_dimensions(y_yn:, x_xn:)
31
+ new(y: y_yn.first, yn: y_yn.last, x: x_xn.first, xn: x_xn.last)
32
+ end
33
+
34
+ # @param height [Fixnum]
35
+ # @param width [Fixnum]
36
+ # @return [Vedeu::Area]
37
+ def self.from_height_and_width(height:, width:)
38
+ new(y: 1, yn: height, x: 1, xn: width)
39
+ end
40
+
41
+ # @param (see #initialize)
42
+ # @return [Vedeu::Area]
43
+ def self.from_points(y:, yn:, x:, xn:)
44
+ new(y: y, yn: yn, x: x, xn: xn)
45
+ end
46
+
47
+ # @param y [Fixnum]
48
+ # @param yn [Fixnum]
49
+ # @param x [Fixnum]
50
+ # @param xn [Fixnum]
51
+ # @return [Vedeu::Area]
52
+ def initialize(y:, yn:, x:, xn:)
53
+ @y, @yn, @x, @xn = y, yn, x, xn
54
+ end
55
+
56
+ # @param other [Vedeu::Area]
57
+ # @return [Boolean]
58
+ def ==(other)
59
+ eql?(other)
60
+ end
61
+
62
+ # @param other [Vedeu::Area]
63
+ # @return [Boolean]
64
+ def eql?(other)
65
+ self.class == other.class &&
66
+ y == other.y &&
67
+ yn == other.yn &&
68
+ x == other.x &&
69
+ xn == other.xn
70
+ end
71
+
72
+ # @return [Array<Fixnum>]
73
+ def centre
74
+ [centre_y, centre_x]
75
+ end
76
+
77
+ # @return [Fixnum]
78
+ def centre_y
79
+ ((yn - y) / 2) + y
80
+ end
81
+
82
+ # @return [Fixnum]
83
+ def centre_x
84
+ ((xn - x) / 2) + x
85
+ end
86
+
87
+ # Returns the row above the top by default.
88
+ #
89
+ # @example
90
+ # `top` / `y` is 4.
91
+ #
92
+ # north # => 3
93
+ # north(2) # => 2
94
+ # north(-4) # => 8
95
+ #
96
+ # @param offset [Fixnum]
97
+ # @return [Fixnum]
98
+ def north(offset = 1)
99
+ y - offset
100
+ end
101
+
102
+ # Returns the column after right by default.
103
+ #
104
+ # @example
105
+ # `right` / `xn` is 19.
106
+ #
107
+ # east # => 20
108
+ # east(2) # => 21
109
+ # east(-4) # => 15
110
+ #
111
+ # @param offset [Fixnum]
112
+ # @return [Fixnum]
113
+ def east(offset = 1)
114
+ xn + offset
115
+ end
116
+
117
+ # Returns the row below the bottom by default.
118
+ #
119
+ # @example
120
+ # `bottom` / `yn` is 12.
121
+ #
122
+ # south # => 13
123
+ # south(2) # => 14
124
+ # south(-4) # => 8
125
+ #
126
+ # @param offset [Fixnum]
127
+ # @return [Fixnum]
128
+ def south(offset = 1)
129
+ yn + offset
130
+ end
131
+
132
+ # Returns the column before left by default.
133
+ #
134
+ # @example
135
+ # `left` / `x` is 8.
136
+ #
137
+ # west # => 7
138
+ # west(2) # => 6
139
+ # west(-4) # => 12
140
+ #
141
+ # @param offset [Fixnum]
142
+ # @return [Fixnum]
143
+ def west(offset = 1)
144
+ x - offset
145
+ end
146
+
147
+ private
148
+
149
+ end # Area
150
+
151
+ end # Vedeu
@@ -0,0 +1,79 @@
1
+ require 'singleton'
2
+
3
+ module Vedeu
4
+
5
+ # The size of the terminal is a limitation. Defining a canvas means we have
6
+ # more space to 'do stuff'.
7
+ #
8
+ class Canvas
9
+
10
+ include Singleton
11
+
12
+ # @return [Vedeu::Canvas]
13
+ def self.canvas
14
+ instance
15
+ end
16
+
17
+ # @param yn [Fixnum]
18
+ # @param xn [Fixnum]
19
+ # @return [Vedeu::Canvas]
20
+ def configure(yn, xn)
21
+ @yn = yn
22
+ @xn = xn
23
+
24
+ self
25
+ end
26
+
27
+ # @return [Array]
28
+ def c
29
+ [cy, cx]
30
+ end
31
+ alias_method :centre, :c
32
+
33
+ # @return [Fixnum]
34
+ def cy
35
+ ((yn - y) / 2) + y
36
+ end
37
+ alias_method :centre_y, :cy
38
+
39
+ # @return [Fixnum]
40
+ def cx
41
+ ((xn - x) / 2) + x
42
+ end
43
+ alias_method :centre_x, :cx
44
+
45
+ # @return [Fixnum]
46
+ def o
47
+ 1
48
+ end
49
+ alias_method :origin, :o
50
+
51
+ # @return [Fixnum]
52
+ def y
53
+ 1
54
+ end
55
+ alias_method :top, :y
56
+
57
+ # @return [Fixnum]
58
+ def yn
59
+ @yn
60
+ end
61
+ alias_method :bottom, :yn
62
+ alias_method :height, :yn
63
+
64
+ # @return [Fixnum]
65
+ def x
66
+ 1
67
+ end
68
+ alias_method :left, :x
69
+
70
+ # @return [Fixnum]
71
+ def xn
72
+ @xn
73
+ end
74
+ alias_method :right, :xn
75
+ alias_method :width, :xn
76
+
77
+ end # Canvas
78
+
79
+ end # Vedeu
@@ -0,0 +1,83 @@
1
+ module Vedeu
2
+
3
+ # Return the centre character position for a value (width or height), or
4
+ # starting and ending coordinate.
5
+ #
6
+ # @example
7
+ # Vedeu::Centre.for_value(27) # => 13
8
+ #
9
+ # Vedeu::Centre.for_points(3, 17) # => 10
10
+ #
11
+ # @note
12
+ # If initialized with a `:value` in the attributes, then :v and :vn are
13
+ # ignored.
14
+ #
15
+ class Centre
16
+
17
+ # @param value [Fixnum] A width of height.
18
+ # @return [Fixnum]
19
+ def self.for_value(value)
20
+ new({ value: value }).centre
21
+ end
22
+
23
+ # @param v [Fixnum] The starting coordinate value.
24
+ # @param vn [Fixnum] The ending coordinate value.
25
+ # @return [Fixnum]
26
+ def self.for_points(v, vn)
27
+ new({ v: v, vn: vn }).centre
28
+ end
29
+
30
+ # @param attributes [Hash<Symbol => Fixnum>]
31
+ # @option attributes v [Fixnum] The starting coordinate value.
32
+ # @option attributes vn [Fixnum] The ending coordinate value.
33
+ # @option attributes value [Fixnum] A width of height.
34
+ # @return [Vedeu::Centre]
35
+ def initialize(attributes = {})
36
+ @v = attributes[:v]
37
+ @vn = attributes[:vn]
38
+ @value = attributes[:value]
39
+ end
40
+
41
+ # @raise [InvalidSyntax] When :v or :vn is missing, or :vn is less than :v.
42
+ # @return [Fixnum]
43
+ def centre
44
+ if value
45
+ value / 2
46
+
47
+ else
48
+ v + (v_vn / 2)
49
+
50
+ end
51
+ end
52
+
53
+ private
54
+
55
+ # @!attribute [r] v
56
+ # @return [Fixnum]
57
+ attr_reader :v
58
+
59
+ # @!attribute [r] vn
60
+ # @return [Fixnum]
61
+ attr_reader :vn
62
+
63
+ # @!attribute [r] value
64
+ # @return [Fixnum]
65
+ attr_reader :value
66
+
67
+ # @return [Fixnum]
68
+ def v_vn
69
+ if vn.nil? || v.nil?
70
+ fail InvalidSyntax, 'Missing values for :v, :vn.'
71
+
72
+ elsif vn < v
73
+ fail InvalidSyntax, "Values invalid for :v (#{v}), :vn (#{vn})."
74
+
75
+ else
76
+ vn - v
77
+
78
+ end
79
+ end
80
+
81
+ end # Centre
82
+
83
+ end # Vedeu
@@ -2,7 +2,7 @@ module Vedeu
2
2
 
3
3
  # Provides information about the content within an interface or view.
4
4
  #
5
- class ContentGeometry
5
+ class Content
6
6
 
7
7
  extend Forwardable
8
8
 
@@ -18,7 +18,7 @@ module Vedeu
18
18
  :y
19
19
 
20
20
  # @param interface [Vedeu::Interface]
21
- # @return [Vedeu::ContentGeometry]
21
+ # @return [Vedeu::Content]
22
22
  def initialize(interface)
23
23
  @interface = interface
24
24
  end
@@ -63,6 +63,6 @@ module Vedeu
63
63
  lines.map { |line| line.size }.max
64
64
  end
65
65
 
66
- end # ContentGeometry
66
+ end # Content
67
67
 
68
68
  end # Vedeu
@@ -0,0 +1,81 @@
1
+ module Vedeu
2
+
3
+ # A Dimension is either the height or width of an entity.
4
+ #
5
+ class Dimension
6
+
7
+ # @param (see #initialize)
8
+ # @return [Array<Fixnum>]
9
+ def self.pair(attributes = {})
10
+ new(attributes).pair
11
+ end
12
+
13
+ # @param attributes [Hash<Symbol => Fixnum, NilClass>]
14
+ # @option attributes d [Fixnum|NilClass] The starting value (y or x).
15
+ # @option attributes dn [Fixnum|NilClass] The ending value (yn or xn).
16
+ # @option attributes d_dn [Fixnum|NilClass] A width or a height.
17
+ # @option attributes default [Fixnum|NilClass] The terminal width or height.
18
+ # @return [Vedeu::Dimension]
19
+ def initialize(attributes = {})
20
+ @d = attributes[:d]
21
+ @dn = attributes[:dn]
22
+ @d_dn = attributes[:d_dn]
23
+ @default = attributes[:default]
24
+ end
25
+
26
+ # @return [Fixnum]
27
+ def d1
28
+ dimension.first
29
+ end
30
+
31
+ # @return [Fixnum]
32
+ def d2
33
+ dimension.last
34
+ end
35
+
36
+ # @return [Array<Fixnum>]
37
+ def pair
38
+ dimension
39
+ end
40
+
41
+ private
42
+
43
+ # @return [Array<Fixnum>]
44
+ def dimension
45
+ @dimension ||= if @d && @dn
46
+ [@d, @dn]
47
+
48
+ elsif @d && @d_dn
49
+ [@d, (@d + @d_dn)]
50
+
51
+ elsif @d_dn
52
+ [1, @d_dn]
53
+
54
+ elsif @d
55
+ [@d, @default]
56
+
57
+ else
58
+ [1, @default]
59
+
60
+ end
61
+ end
62
+
63
+ # @!attribute [r] d
64
+ # @return [Fixnum]
65
+ attr_reader :d
66
+
67
+ # @!attribute [r] dn
68
+ # @return [Fixnum]
69
+ attr_reader :dn
70
+
71
+ # @!attribute [r] d_dn
72
+ # @return [Fixnum]
73
+ attr_reader :d_dn
74
+
75
+ # @!attribute [r] default
76
+ # @return [Fixnum]
77
+ attr_reader :default
78
+
79
+ end # Dimension
80
+
81
+ end # Vedeu
@@ -29,6 +29,7 @@ module Vedeu
29
29
  #
30
30
  class Geometry
31
31
 
32
+ extend Forwardable
32
33
  include Vedeu::Model
33
34
 
34
35
  # @!attribute [rw] centred
@@ -59,6 +60,14 @@ module Vedeu
59
60
  # @return [Fixnum]
60
61
  attr_writer :y
61
62
 
63
+ # @!attribute [w] xn
64
+ # @return [Fixnum]
65
+ attr_writer :xn
66
+
67
+ # @!attribute [w] yn
68
+ # @return [Fixnum]
69
+ attr_writer :yn
70
+
62
71
  # Returns a new instance of Geometry.
63
72
  #
64
73
  # @param attributes [Hash]
@@ -266,8 +275,31 @@ module Vedeu
266
275
  right + value
267
276
  end
268
277
 
278
+ # def_delegators :area, :north, :east, :south, :west
279
+
269
280
  private
270
281
 
282
+ # @return [Vedeu::Area]
283
+ def area
284
+ @area ||= Vedeu::Area.from_dimensions(y_yn, x_xn)
285
+ end
286
+
287
+ # @return [Array<Fixnum>]
288
+ def x_xn
289
+ @x_xn ||= Vedeu::Dimension.pair({ v: @x,
290
+ vn: @xn,
291
+ v_vn: @width,
292
+ default: Vedeu::Terminal.width })
293
+ end
294
+
295
+ # @return [Array<Fixnum>]
296
+ def y_yn
297
+ @y_yn ||= Vedeu::Dimension.pair({ v: @y,
298
+ vn: @yn,
299
+ v_vn: @height,
300
+ default: Vedeu::Terminal.height })
301
+ end
302
+
271
303
  # The default values for a new instance of this class.
272
304
  #
273
305
  # @return [Hash]
@@ -26,8 +26,7 @@ module Vedeu
26
26
  #
27
27
  class Grid
28
28
 
29
- # @param value [Fixnum]
30
- # @return [Fixnum]
29
+ # @see (#initialize)
31
30
  def self.columns(value)
32
31
  new(value).columns
33
32
  end
@@ -7,11 +7,8 @@ module Vedeu
7
7
  #
8
8
  class IndexPosition
9
9
 
10
- # @param iy [Fixnum]
11
- # @param ix [Fixnum]
12
- # @param oy [Fixnum]
13
- # @param ox [Fixnum]
14
- # @return [Array]
10
+ # @param (see #initialize)
11
+ # @return [Vedeu::Position]
15
12
  def self.[](iy, ix, oy = 1, ox = 1)
16
13
  new(iy, ix, oy, ox).[]
17
14
  end
@@ -28,13 +25,8 @@ module Vedeu
28
25
  @ox = ox
29
26
  end
30
27
 
31
- # @return [Array]
32
- def []
33
- [y, x]
34
- end
35
-
36
28
  # @return [Vedeu::Position]
37
- def to_position
29
+ def []
38
30
  Vedeu::Position.new(y, x)
39
31
  end
40
32
 
@@ -4,7 +4,7 @@ module Vedeu
4
4
  #
5
5
  class Limit
6
6
 
7
- # @see #new, #apply
7
+ # @param (see #initialize)
8
8
  def self.apply(v, vn, max, min = 1)
9
9
  new(v, vn, max, min).apply
10
10
  end
@@ -15,6 +15,11 @@ module Vedeu
15
15
  alias_method :first, :y
16
16
  alias_method :last, :x
17
17
 
18
+ # @param (see #initialize)
19
+ def self.[](y, x)
20
+ new(y, x)
21
+ end
22
+
18
23
  # @param value [Array<Fixnum>|Vedeu::Position]
19
24
  # @return [void]
20
25
  def self.coerce(value)
@@ -15,9 +15,7 @@ module Vedeu
15
15
  alias_method :first, :y
16
16
  alias_method :last, :x
17
17
 
18
- # @param y [Fixnum]
19
- # @param x [Fixnum]
20
- # @return [Array]
18
+ # @param (see #initialize)
21
19
  def self.[](y, x)
22
20
  new(y, x).[]
23
21
  end
@@ -26,8 +24,8 @@ module Vedeu
26
24
  # @param x [Fixnum]
27
25
  # @return [Vedeu::PositionIndex]
28
26
  def initialize(y, x)
29
- @y = ((y - 1) <= 1) ? 1 : (y - 1)
30
- @x = ((x - 1) <= 1) ? 1 : (x - 1)
27
+ @y = ((y - 1) <= 1) ? 0 : (y - 1)
28
+ @x = ((x - 1) <= 1) ? 0 : (x - 1)
31
29
  end
32
30
 
33
31
  # @return [Array]
@@ -40,10 +40,7 @@ module Vedeu
40
40
  # @return [Fixnum]
41
41
  attr_accessor :y
42
42
 
43
- # @param interface [Interface]
44
- # @param x [Fixnum]
45
- # @param y [Fixnum]
46
- # @return [PositionValidator]
43
+ # @param (see #initialize)
47
44
  def self.validate(interface, x, y)
48
45
  new(interface, x, y).validate
49
46
  end
@@ -7,8 +7,7 @@ module Vedeu
7
7
 
8
8
  # Instantiate Input and capture keypress(es).
9
9
  #
10
- # @param reader [IO] An object that responds to `#read`. Typically, this is
11
- # Vedeu::Terminal.
10
+ # @param (see #initialize)
12
11
  # @return [String|Symbol]
13
12
  def self.capture(reader)
14
13
  new(reader).capture
@@ -8,8 +8,7 @@ module Vedeu
8
8
  # the associated action is fired, if not, we move to the next keymap or
9
9
  # return false.
10
10
  #
11
- # @param key [NilClass|String|Symbol]
12
- # @param name [NilClass|String]
11
+ # @param (see #initialize)
13
12
  # @return [Boolean]
14
13
  def self.keypress(key = nil, name = nil)
15
14
  return false unless key
@@ -20,8 +19,7 @@ module Vedeu
20
19
  # Checks a key is valid; i.e. not already registered to a keymap. If the
21
20
  # key is registered, then the key is invalid and cannot be used again.
22
21
  #
23
- # @param key [NilClass|String|Symbol]
24
- # @param name [NilClass|String]
22
+ # @param (see #initialize)
25
23
  # @return [Boolean]
26
24
  def self.valid?(key = nil, name = nil)
27
25
  return false unless key
@@ -14,7 +14,7 @@ module Vedeu
14
14
  # error occurred (1).
15
15
  attr_reader :exit_code
16
16
 
17
- # @see Vedeu::Launcher#initialize
17
+ # @param (see #initialize)
18
18
  def self.execute!(argv = [],
19
19
  stdin = STDIN,
20
20
  stdout = STDOUT,
@@ -12,6 +12,7 @@ module Vedeu
12
12
  trap('TERM') { stop! }
13
13
  trap('INT') { stop! }
14
14
 
15
+ # :nocov:
15
16
  # Start the main loop.
16
17
  #
17
18
  # @param block [Proc]
@@ -30,6 +31,7 @@ module Vedeu
30
31
  rescue VedeuInterrupt
31
32
 
32
33
  end
34
+ # :nocov:
33
35
 
34
36
  # Signal that we wish to terminate the running application.
35
37
  #
@@ -1,5 +1,6 @@
1
1
  require 'vedeu/repositories/all'
2
2
 
3
+ require 'vedeu/models/cell'
3
4
  require 'vedeu/models/char'
4
5
  require 'vedeu/models/stream'
5
6
  require 'vedeu/models/line'
@@ -7,7 +8,6 @@ require 'vedeu/models/interface'
7
8
  require 'vedeu/models/composition'
8
9
 
9
10
  require 'vedeu/models/focus'
10
- require 'vedeu/models/geometry'
11
11
  require 'vedeu/models/group'
12
12
  require 'vedeu/models/menu'
13
13