vedeu 0.4.60 → 0.4.61

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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/lib/vedeu.rb +2 -0
  3. data/lib/vedeu/all.rb +8 -4
  4. data/lib/vedeu/{output → borders}/border.rb +0 -0
  5. data/lib/vedeu/{output → borders}/borders.rb +0 -0
  6. data/lib/vedeu/{output → borders}/render_border.rb +24 -18
  7. data/lib/vedeu/cursor/move.rb +5 -16
  8. data/lib/vedeu/cursor/reposition.rb +3 -17
  9. data/lib/vedeu/dsl/view.rb +1 -1
  10. data/lib/vedeu/geometry/coordinate.rb +21 -11
  11. data/lib/vedeu/geometry/geometry.rb +1 -1
  12. data/lib/vedeu/geometry/position.rb +2 -2
  13. data/lib/vedeu/output/compressor.rb +3 -7
  14. data/lib/vedeu/output/style.rb +1 -1
  15. data/lib/vedeu/plugins.rb +12 -13
  16. data/lib/vedeu/plugins/plugin.rb +4 -2
  17. data/lib/vedeu/repositories/collection.rb +9 -0
  18. data/lib/vedeu/templating/all.rb +9 -0
  19. data/lib/vedeu/templating/decoder.rb +62 -0
  20. data/lib/vedeu/templating/directive.rb +0 -1
  21. data/lib/vedeu/templating/encoder.rb +62 -0
  22. data/lib/vedeu/templating/helpers.rb +10 -22
  23. data/lib/vedeu/templating/post_processor.rb +81 -0
  24. data/lib/vedeu/templating/template.rb +1 -7
  25. data/lib/vedeu/terminal_mode.rb +2 -0
  26. data/lib/vedeu/version.rb +1 -1
  27. data/test/lib/vedeu/{output → borders}/border_test.rb +0 -0
  28. data/test/lib/vedeu/{output → borders}/borders_test.rb +0 -0
  29. data/test/lib/vedeu/{output → borders}/render_border_test.rb +0 -0
  30. data/test/lib/vedeu/geometry/coordinate_test.rb +20 -17
  31. data/test/lib/vedeu/geometry/position_test.rb +1 -1
  32. data/test/lib/vedeu/models/char_test.rb +17 -18
  33. data/test/lib/vedeu/output/compressor_test.rb +5 -5
  34. data/test/lib/vedeu/output/{renderers/all_test.rb → renderers_test.rb} +0 -0
  35. data/test/lib/vedeu/output/viewport_test.rb +63 -63
  36. data/test/lib/vedeu/plugins_test.rb +12 -6
  37. data/test/lib/vedeu/repositories/collection_test.rb +14 -0
  38. data/test/lib/vedeu/templating/decoder_test.rb +37 -0
  39. data/test/lib/vedeu/templating/encoder_test.rb +38 -0
  40. data/test/lib/vedeu/templating/helpers_test.rb +11 -0
  41. data/test/lib/vedeu/templating/{preprocessor_test.rb → post_processor_test.rb} +14 -18
  42. data/test/lib/vedeu/templating/template_test.rb +3 -2
  43. data/test/support/templates/{inline.erb → plain.erb} +0 -0
  44. metadata +25 -18
  45. data/lib/vedeu/templating/preprocessor.rb +0 -81
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8ccce2439bd00b49d1f30c708db9f3f80c9b423a
4
- data.tar.gz: bf39e8c7e0c0deeba71d696ca8f71dd051dc6a4e
3
+ metadata.gz: 6ceb6ac3ef4df98a7535ceeb37ae65a39d5a6645
4
+ data.tar.gz: 21bc34bf6d44e123fe9895603bef26832738b892
5
5
  SHA512:
6
- metadata.gz: 1881880f64dbde3efd8c923a23d8dc55020d93512cefbcc9aa104909d861e75f0fbce90c7610c84bd015825cf0184c2c71a019816ad2c2ea935a638a393eb137
7
- data.tar.gz: 0a972640a9811013c39909df190d6965af0f1f21197658d9a64611ba53a811193cddf89d4d1ecf734cb919b989b0c74241311babac1aada03aac428085397ed6
6
+ metadata.gz: 879388bbd80aff90f21b262568bda67262c509efaccda7570968bf3080a1951c2be6452fb46ef4f5fb7e36ab63e15c4e56c440effd6bea59775dfcf0e020c13d
7
+ data.tar.gz: 4b2e7aefea725739b77497a3133ae74efa074add21b67ee0c4591c1d646b9764fe15e13a74b8f697f620883ae0ab0168023b3d0612ada31c740192828bf64297
data/lib/vedeu.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  $LIB_DIR = File.dirname(__FILE__) + '/../lib'
2
2
  $LOAD_PATH.unshift($LIB_DIR) unless $LOAD_PATH.include?($LIB_DIR)
3
3
 
4
+ require 'base64'
4
5
  require 'date'
5
6
  require 'drb'
6
7
  require 'erb'
@@ -14,6 +15,7 @@ require 'set'
14
15
  require 'singleton'
15
16
  require 'thread'
16
17
  require 'time'
18
+ require 'zlib'
17
19
 
18
20
  require 'thor'
19
21
 
data/lib/vedeu/all.rb CHANGED
@@ -101,9 +101,12 @@ require 'vedeu/models/groups'
101
101
  require 'vedeu/models/menu'
102
102
  require 'vedeu/models/menus'
103
103
 
104
+ require 'vedeu/templating/all'
105
+ require 'vedeu/templating/encoder'
106
+ require 'vedeu/templating/decoder'
104
107
  require 'vedeu/templating/helpers'
105
108
  require 'vedeu/templating/directive'
106
- require 'vedeu/templating/preprocessor'
109
+ require 'vedeu/templating/post_processor'
107
110
  require 'vedeu/templating/template'
108
111
 
109
112
  require 'vedeu/application/controller'
@@ -147,13 +150,14 @@ require 'vedeu/input/input'
147
150
  require 'vedeu/input/keymap'
148
151
  require 'vedeu/input/keymaps'
149
152
 
153
+ require 'vedeu/borders/render_border'
154
+ require 'vedeu/borders/border'
155
+ require 'vedeu/borders/borders'
156
+
150
157
  require 'vedeu/output/clear/named_group'
151
158
  require 'vedeu/output/clear/named_interface'
152
159
  require 'vedeu/output/esc'
153
160
  require 'vedeu/output/presentation'
154
- require 'vedeu/output/render_border'
155
- require 'vedeu/output/border'
156
- require 'vedeu/output/borders'
157
161
  require 'vedeu/output/compressor'
158
162
  require 'vedeu/output/style'
159
163
  require 'vedeu/output/text'
File without changes
File without changes
@@ -87,22 +87,32 @@ module Vedeu
87
87
 
88
88
  # @return [Vedeu::Char]
89
89
  def build_bottom_left
90
- build(bottom_left, :bottom_left, *[yn, x]) if left?
90
+ build(bottom_left, :bottom_left, yn, x) if left?
91
91
  end
92
92
 
93
93
  # @return [Vedeu::Char]
94
94
  def build_bottom_right
95
- build(bottom_right, :bottom_right, *[yn, xn]) if right?
95
+ build(bottom_right, :bottom_right, yn, xn) if right?
96
+ end
97
+
98
+ # @return [Array<Vedeu::Char>]
99
+ def build_top
100
+ build_horizontal(:bottom_horizontal, y)
101
+ end
102
+
103
+ # @return [Array<Vedeu::Char>]
104
+ def build_bottom
105
+ build_horizontal(:bottom_horizontal, yn)
96
106
  end
97
107
 
98
108
  # @return [Vedeu::Char]
99
109
  def build_top_left
100
- build(top_left, :top_left, *[y, x]) if left?
110
+ build(top_left, :top_left, y, x) if left?
101
111
  end
102
112
 
103
113
  # @return [Vedeu::Char]
104
114
  def build_top_right
105
- build(top_right, :top_right, *[y, xn]) if right?
115
+ build(top_right, :top_right, y, xn) if right?
106
116
  end
107
117
 
108
118
  # Renders the bottom border for the interface.
@@ -111,11 +121,7 @@ module Vedeu
111
121
  def bottom
112
122
  return [] unless bottom?
113
123
 
114
- [
115
- build_bottom_left,
116
- build_horizontal(:bottom_horizontal, yn),
117
- build_bottom_right,
118
- ].compact
124
+ [build_bottom_left, build_bottom, build_bottom_right].compact
119
125
  end
120
126
 
121
127
  # @return [Vedeu::Geometry]
@@ -128,7 +134,7 @@ module Vedeu
128
134
  # @return [Array<Vedeu::Char>]
129
135
  def build_horizontal(position, y_coordinate)
130
136
  Array.new(width) do |ix|
131
- build(horizontal, position, *[y_coordinate, (bx + ix)])
137
+ build(horizontal, position, y_coordinate, (bx + ix))
132
138
  end
133
139
  end
134
140
 
@@ -147,7 +153,7 @@ module Vedeu
147
153
  def left(iy = 0)
148
154
  return [] unless left?
149
155
 
150
- build(vertical, :left_vertical, *[(by + iy), x])
156
+ build(vertical, :left_vertical, (by + iy), x)
151
157
  end
152
158
 
153
159
  # Renders the right border for the interface.
@@ -157,7 +163,7 @@ module Vedeu
157
163
  def right(iy = 0)
158
164
  return [] unless right?
159
165
 
160
- build(vertical, :right_vertical, *[(by + iy), xn])
166
+ build(vertical, :right_vertical, (by + iy), xn)
161
167
  end
162
168
 
163
169
  # Renders the top border for the interface.
@@ -179,13 +185,13 @@ module Vedeu
179
185
  #
180
186
  # @return [Array<Vedeu::Char>]
181
187
  def titlebar
182
- return build_horizontal(:top_horizontal, y) unless title? && title_fits?
188
+ return build_top unless title? && title_fits?
189
+
190
+ build_top.each_with_index do |char, index|
191
+ next if index == 0 || index > title_characters.size
183
192
 
184
- build_horizontal(:top_horizontal, y).each_with_index do |char, index|
185
- if index >= 1 && index <= title_characters.size
186
- char.border = nil
187
- char.value = title_characters[(index - 1)]
188
- end
193
+ char.border = nil
194
+ char.value = title_characters[(index - 1)]
189
195
  end
190
196
  end
191
197
 
@@ -177,23 +177,9 @@ module Vedeu
177
177
 
178
178
  private
179
179
 
180
- # Returns the cursors x position based on its current offset.
181
- #
182
- # @return [Fixnum]
183
- def x_position
184
- coordinate.x_position(ox)
185
- end
186
-
187
- # Returns the cursors y position based on its current offset.
188
- #
189
- # @return [Fixnum]
190
- def y_position
191
- coordinate.y_position(oy)
192
- end
193
-
194
180
  # @return [Vedeu::Coordinate]
195
181
  def coordinate
196
- @coordinate ||= Vedeu::Coordinate.new(name)
182
+ @coordinate ||= Vedeu::Coordinate.new(name, oy, ox)
197
183
  end
198
184
 
199
185
  # @see Vedeu::Cursors#by_name
@@ -203,7 +189,10 @@ module Vedeu
203
189
 
204
190
  # @return [Hash<Symbol => void>]
205
191
  def cursor_attributes
206
- cursor.attributes.merge!(x: x_position, y: y_position, ox: ox, oy: oy)
192
+ cursor.attributes.merge!(x: coordinate.x_position,
193
+ y: coordinate.y_position,
194
+ ox: ox,
195
+ oy: oy)
207
196
  end
208
197
 
209
198
  # @see Vedeu::Geometries#by_name
@@ -27,8 +27,8 @@ module Vedeu
27
27
  # @return [Vedeu::Cursor]
28
28
  def to
29
29
  result = entity.new(name: name,
30
- y: y_position,
31
- x: x_position,
30
+ y: coordinate.y_position,
31
+ x: coordinate.x_position,
32
32
  oy: y,
33
33
  ox: x).store
34
34
 
@@ -61,21 +61,7 @@ module Vedeu
61
61
 
62
62
  # @return [Vedeu::Coordinate]
63
63
  def coordinate
64
- @coordinate ||= Vedeu::Coordinate.new(name)
65
- end
66
-
67
- # Returns the cursors x position based on the desired x position.
68
- #
69
- # @return [Fixnum]
70
- def x_position
71
- coordinate.x_position(x)
72
- end
73
-
74
- # Returns the cursors y position based on the desired y position.
75
- #
76
- # @return [Fixnum]
77
- def y_position
78
- coordinate.y_position(y)
64
+ @coordinate ||= Vedeu::Coordinate.new(name, y, x)
79
65
  end
80
66
 
81
67
  end # Reposition
@@ -163,7 +163,7 @@ module Vedeu
163
163
  # interface back buffers until a refresh event occurs. When the refresh
164
164
  # event is triggered, the back buffers are swapped into the front
165
165
  # buffers and the content here will be rendered to
166
- # {Vedeu::Terminal.output}.
166
+ # {Vedeu::Terminal#output}.
167
167
  #
168
168
  # Vedeu.views do
169
169
  # view 'some_interface' do
@@ -19,9 +19,13 @@ module Vedeu
19
19
  # Returns a new instance of Vedeu::Coordinate.
20
20
  #
21
21
  # @param name [String]
22
+ # @param oy [Fixnum]
23
+ # @param ox [Fixnum]
22
24
  # @return [Vedeu::Coordinate]
23
- def initialize(name)
25
+ def initialize(name, oy, ox)
24
26
  @name = name
27
+ @ox = ox
28
+ @oy = oy
25
29
  end
26
30
 
27
31
  # Returns the maximum y coordinate for an area.
@@ -69,17 +73,16 @@ module Vedeu
69
73
  # y_position(2) # => 9
70
74
  # y_position(7) # => 11
71
75
  #
72
- # @param index [Fixnum]
73
76
  # @return [Fixnum]
74
- def y_position(index = 0)
75
- value = if index <= 0
77
+ def y_position
78
+ value = if oy <= 0
76
79
  y
77
80
 
78
- elsif index > yn_index
81
+ elsif oy > yn_index
79
82
  yn
80
83
 
81
84
  else
82
- y_range[index]
85
+ y_range[oy]
83
86
 
84
87
  end
85
88
 
@@ -95,17 +98,16 @@ module Vedeu
95
98
  # x_position(2) # => 6
96
99
  # x_position(15) # => 13
97
100
  #
98
- # @param index [Fixnum]
99
101
  # @return [Fixnum]
100
- def x_position(index = 0)
101
- value = if index <= 0
102
+ def x_position
103
+ value = if ox <= 0
102
104
  x
103
105
 
104
- elsif index > xn_index
106
+ elsif ox > xn_index
105
107
  xn
106
108
 
107
109
  else
108
- x_range[index]
110
+ x_range[ox]
109
111
 
110
112
  end
111
113
 
@@ -118,6 +120,14 @@ module Vedeu
118
120
  # @return [String]
119
121
  attr_reader :name
120
122
 
123
+ # @!attribute [r] oy
124
+ # @return [Fixnum]
125
+ attr_reader :oy
126
+
127
+ # @!attribute [r] ox
128
+ # @return [Fixnum]
129
+ attr_reader :ox
130
+
121
131
  private
122
132
 
123
133
  # @see Vedeu::Borders#by_name
@@ -141,7 +141,7 @@ module Vedeu
141
141
 
142
142
  work = store
143
143
 
144
- Vedeu.trigger(:_refresh_, name)
144
+ Vedeu.trigger(:_refresh_)
145
145
 
146
146
  work
147
147
  end
@@ -87,9 +87,9 @@ module Vedeu
87
87
  # @yieldreturn [void] Returns the block wrapped in position escape
88
88
  # sequences.
89
89
  def to_s
90
- return sequence unless block_given?
90
+ return [sequence, yield].join if block_given?
91
91
 
92
- [sequence, yield, sequence].join
92
+ sequence
93
93
  end
94
94
  alias_method :to_str, :to_s
95
95
 
@@ -22,7 +22,8 @@ module Vedeu
22
22
  @style = ''
23
23
  end
24
24
 
25
- # @note Takes approximately ~70ms for 2100 chars. (2015-05-24)
25
+ # @note
26
+ # Takes approximately ~25ms for 2100 chars. (2015-07-25)
26
27
  # @return [String]
27
28
  def render
28
29
  if Vedeu::Configuration.compression?
@@ -57,12 +58,7 @@ module Vedeu
57
58
  # @return [String]
58
59
  def uncompress
59
60
  out = ''
60
- Array(output).flatten.each do |char|
61
- out << char.position.to_s
62
- out << char.colour.to_s
63
- out << char.style.to_s
64
- out << char.value
65
- end
61
+ Array(output).flatten.each { |char| out << char.to_s }
66
62
  out
67
63
  end
68
64
 
@@ -46,7 +46,7 @@ module Vedeu
46
46
 
47
47
  # Return an attributes hash for this class.
48
48
  #
49
- # @return [Array<String|Symbol>|String|Symbol]
49
+ # @return [Hash<Symbol => Array<String|Symbol>|String|Symbol>]
50
50
  def attributes
51
51
  {
52
52
  style: value,
data/lib/vedeu/plugins.rb CHANGED
@@ -13,11 +13,9 @@ module Vedeu
13
13
 
14
14
  # Loads all plugins that are not enabled.
15
15
  #
16
- # @return [void]
16
+ # @return [Array<void>]
17
17
  def load
18
- plugins.each do |plugin|
19
- plugin.load! unless plugin.enabled?
20
- end
18
+ plugins.each { |plugin| plugin.load! unless plugin.enabled? }
21
19
  end
22
20
 
23
21
  # Register plugin with name in an internal array.
@@ -26,21 +24,21 @@ module Vedeu
26
24
  # @param plugin [Vedeu::Plugin]
27
25
  # @return [void]
28
26
  def register(name, plugin = false)
29
- if plugin && !loaded?(name)
30
- plugins << plugin
31
- end
27
+ plugins << plugin if plugin && not_loaded?(name)
32
28
  end
33
29
 
34
30
  # Find all installed plugins and store them.
35
31
  #
36
- # @return [void]
32
+ # @return [Array<void>]
37
33
  def find
38
34
  Gem.refresh
39
35
 
40
36
  Gem::Specification.each do |gem|
41
37
  next unless gem.name =~ /^#{prefix}/
38
+
42
39
  plugin_name = gem.name[/^#{prefix}-(.*)/, 1]
43
- register(plugin_name, Plugin.new(plugin_name, gem))
40
+
41
+ register(plugin_name, Vedeu::Plugin.new(plugin_name, gem))
44
42
  end
45
43
 
46
44
  plugins
@@ -48,9 +46,10 @@ module Vedeu
48
46
 
49
47
  # Return a list of all plugin names as strings.
50
48
  #
51
- # @return [void]
49
+ # @return [Hash]
52
50
  def names
53
- plugins.reduce({}) do |hash, plugin|
51
+ collection = {}
52
+ plugins.each_with_object(collection) do |hash, plugin|
54
53
  hash[plugin.name] = plugin
55
54
  hash
56
55
  end
@@ -68,8 +67,8 @@ module Vedeu
68
67
  #
69
68
  # @param name [String]
70
69
  # @return [Boolean]
71
- def loaded?(name)
72
- plugins.any? { |plugin| plugin.gem_name == name }
70
+ def not_loaded?(name)
71
+ plugins.empty? || plugins.any? { |plugin| plugin.gem_name != name }
73
72
  end
74
73
 
75
74
  # @return [String]
@@ -40,9 +40,11 @@ module Vedeu
40
40
  begin
41
41
  require gem_name unless enabled?
42
42
  rescue LoadError => error
43
- fail VedeuError, "Unable to load plugin #{gem_name} due to #{error}."
43
+ raise Vedeu::VedeuError,
44
+ "Unable to load plugin #{gem_name} due to #{error}."
44
45
  rescue => error
45
- fail VedeuError, "require '#{gem_name}' failed with #{error}."
46
+ raise Vedeu::VedeuError,
47
+ "require '#{gem_name}' failed with #{error}."
46
48
  end
47
49
 
48
50
  @enabled = true