vedeu 0.1.0 → 0.1.1

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 (37) hide show
  1. checksums.yaml +4 -4
  2. data/Guardfile +1 -1
  3. data/README.md +13 -0
  4. data/deps.md +13 -4
  5. data/lib/vedeu.rb +1 -1
  6. data/lib/vedeu/models/interface.rb +5 -1
  7. data/lib/vedeu/output/render_interface.rb +1 -3
  8. data/lib/vedeu/parsing/erb_parser.rb +43 -0
  9. data/lib/vedeu/parsing/json_parser.rb +13 -3
  10. data/lib/vedeu/parsing/menu_parser.rb +7 -12
  11. data/lib/vedeu/parsing/raw_parser.rb +34 -0
  12. data/lib/vedeu/parsing/text_adaptor.rb +0 -6
  13. data/lib/vedeu/parsing/view.rb +46 -0
  14. data/lib/vedeu/support/events.rb +0 -19
  15. data/lib/vedeu/support/geometry.rb +66 -46
  16. data/lib/vedeu/support/helpers.rb +43 -0
  17. data/lib/vedeu/support/input.rb +2 -0
  18. data/lib/vedeu/support/queue.rb +0 -12
  19. data/test/lib/vedeu/parsing/erb_parser_test.rb +154 -0
  20. data/test/lib/vedeu/parsing/menu_parser_test.rb +9 -0
  21. data/test/lib/vedeu/parsing/{hash_parser_test.rb → raw_parser_test.rb} +5 -5
  22. data/test/lib/vedeu/parsing/view_test.rb +38 -0
  23. data/test/lib/vedeu/support/geometry_test.rb +8 -8
  24. data/test/lib/vedeu/support/helpers_test.rb +68 -0
  25. data/test/lib/vedeu/support/queue_test.rb +3 -35
  26. data/test/lib/vedeu_test.rb +39 -0
  27. data/test/support/erb/colour.erb +3 -0
  28. data/test/support/erb/colour_style.erb +1 -0
  29. data/test/support/erb/style.erb +3 -0
  30. data/test/support/template.erb +6 -1
  31. data/vedeu.gemspec +2 -2
  32. metadata +24 -13
  33. data/lib/vedeu/output/template.rb +0 -23
  34. data/lib/vedeu/parsing/hash_parser.rb +0 -68
  35. data/lib/vedeu/parsing/parser.rb +0 -52
  36. data/test/lib/vedeu/output/template.rb +0 -21
  37. data/test/lib/vedeu/parsing/parser_test.rb +0 -31
@@ -11,10 +11,49 @@ module Vedeu
11
11
 
12
12
  describe '.run' do
13
13
  end
14
+
15
+ describe '.view' do
16
+ it 'returns the interface referenced by name' do
17
+ skip
18
+ [].must_be_instance_of(Interface)
19
+ [].name.must_equal([])
20
+ end
21
+
22
+ it 'returns false with no name' do
23
+ skip
24
+ [].must_equal(false)
25
+ end
26
+
27
+ it 'raises an exception if the interface does not exist' do
28
+ skip
29
+ proc { }.must_raise(EntityNotFound)
30
+ end
31
+ end
14
32
  end
15
33
  end
16
34
 
17
35
  describe Vedeu do
36
+ describe '.debug?' do
37
+ it 'allows me to quickly enable/disable debugging' do
38
+ skip
39
+ end
40
+ end
41
+
18
42
  describe '.events' do
43
+ it 'creates some system events for the client application' do
44
+ skip
45
+ end
46
+ end
47
+
48
+ describe '.log' do
49
+ it 'returns a logger instance for writing debug messages to' do
50
+ skip
51
+ end
52
+ end
53
+
54
+ describe '.error' do
55
+ it 'writes an error to the log' do
56
+ skip
57
+ end
19
58
  end
20
59
  end
@@ -0,0 +1,3 @@
1
+ <%= foreground('#5a0000') -%>Dark red text on default background.
2
+ <%= background('#ff00ff') -%>Default text on magenta background.
3
+ <%= foreground('#ff0000') -%><%= background('#00005a') -%>Red text on dark blue background.
@@ -0,0 +1 @@
1
+ <%= foreground('#0000ff') -%><%= style('underline') -%><%= background('#00005a') -%>Blue underline text on dark blue background.
@@ -0,0 +1,3 @@
1
+ <%= style('') -%>Empty style leads to nothing.
2
+ <%= style('underline') -%>Underlined text.
3
+ <%= style('unknown') -%>Unknown style leads to nothing.
@@ -1,3 +1,8 @@
1
1
  This is the test template.
2
2
 
3
- <%= @object.value -%>
3
+ <%= foreground('#5f00af') %><%= object.value %>
4
+ <%= background('#ffff00') %><%= object.value %>
5
+ <%= foreground('#ff8700') %><%= background('#ffff00') %><%= object.value %>
6
+ <%= style('underline') %><%= object.value %>
7
+
8
+ Some more content...
data/vedeu.gemspec CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'vedeu'
7
- spec.version = '0.1.0'
7
+ spec.version = '0.1.1'
8
8
  spec.authors = ['Gavin Laking']
9
9
  spec.email = ['gavinlaking@gmail.com']
10
10
  spec.summary = %q{A terminal case of wonderland.}
@@ -26,5 +26,5 @@ Gem::Specification.new do |spec|
26
26
  spec.add_development_dependency 'ruby-prof', '0.15.1'
27
27
  spec.add_development_dependency 'simplecov', '0.9.0'
28
28
 
29
- spec.add_dependency 'virtus', '1.0.2'
29
+ spec.add_dependency 'virtus', '1.0.3'
30
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vedeu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gavin Laking
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-27 00:00:00.000000000 Z
11
+ date: 2014-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -142,14 +142,14 @@ dependencies:
142
142
  requirements:
143
143
  - - '='
144
144
  - !ruby/object:Gem::Version
145
- version: 1.0.2
145
+ version: 1.0.3
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - '='
151
151
  - !ruby/object:Gem::Version
152
- version: 1.0.2
152
+ version: 1.0.3
153
153
  description:
154
154
  email:
155
155
  - gavinlaking@gmail.com
@@ -188,16 +188,17 @@ files:
188
188
  - lib/vedeu/models/style.rb
189
189
  - lib/vedeu/output/clear_interface.rb
190
190
  - lib/vedeu/output/render_interface.rb
191
- - lib/vedeu/output/template.rb
192
- - lib/vedeu/parsing/hash_parser.rb
191
+ - lib/vedeu/parsing/erb_parser.rb
193
192
  - lib/vedeu/parsing/json_parser.rb
194
193
  - lib/vedeu/parsing/menu_parser.rb
195
- - lib/vedeu/parsing/parser.rb
194
+ - lib/vedeu/parsing/raw_parser.rb
196
195
  - lib/vedeu/parsing/text_adaptor.rb
196
+ - lib/vedeu/parsing/view.rb
197
197
  - lib/vedeu/support/builder.rb
198
198
  - lib/vedeu/support/esc.rb
199
199
  - lib/vedeu/support/events.rb
200
200
  - lib/vedeu/support/geometry.rb
201
+ - lib/vedeu/support/helpers.rb
201
202
  - lib/vedeu/support/input.rb
202
203
  - lib/vedeu/support/menu.rb
203
204
  - lib/vedeu/support/persistence.rb
@@ -222,15 +223,17 @@ files:
222
223
  - test/lib/vedeu/models/style_test.rb
223
224
  - test/lib/vedeu/output/clear_interface_test.rb
224
225
  - test/lib/vedeu/output/render_interface_test.rb
225
- - test/lib/vedeu/output/template.rb
226
- - test/lib/vedeu/parsing/hash_parser_test.rb
226
+ - test/lib/vedeu/parsing/erb_parser_test.rb
227
227
  - test/lib/vedeu/parsing/json_parser_test.rb
228
- - test/lib/vedeu/parsing/parser_test.rb
228
+ - test/lib/vedeu/parsing/menu_parser_test.rb
229
+ - test/lib/vedeu/parsing/raw_parser_test.rb
229
230
  - test/lib/vedeu/parsing/text_adaptor_test.rb
231
+ - test/lib/vedeu/parsing/view_test.rb
230
232
  - test/lib/vedeu/support/builder_test.rb
231
233
  - test/lib/vedeu/support/esc_test.rb
232
234
  - test/lib/vedeu/support/events_test.rb
233
235
  - test/lib/vedeu/support/geometry_test.rb
236
+ - test/lib/vedeu/support/helpers_test.rb
234
237
  - test/lib/vedeu/support/input_test.rb
235
238
  - test/lib/vedeu/support/menu_test.rb
236
239
  - test/lib/vedeu/support/persistence_test.rb
@@ -243,6 +246,9 @@ files:
243
246
  - test/support/bench.rb
244
247
  - test/support/colours.rb
245
248
  - test/support/dummy_interface.rb
249
+ - test/support/erb/colour.erb
250
+ - test/support/erb/colour_style.erb
251
+ - test/support/erb/style.erb
246
252
  - test/support/json/int1_lin1_str1.json
247
253
  - test/support/json/int1_lin1_str3.json
248
254
  - test/support/json/int1_lin2_str1.json
@@ -297,15 +303,17 @@ test_files:
297
303
  - test/lib/vedeu/models/style_test.rb
298
304
  - test/lib/vedeu/output/clear_interface_test.rb
299
305
  - test/lib/vedeu/output/render_interface_test.rb
300
- - test/lib/vedeu/output/template.rb
301
- - test/lib/vedeu/parsing/hash_parser_test.rb
306
+ - test/lib/vedeu/parsing/erb_parser_test.rb
302
307
  - test/lib/vedeu/parsing/json_parser_test.rb
303
- - test/lib/vedeu/parsing/parser_test.rb
308
+ - test/lib/vedeu/parsing/menu_parser_test.rb
309
+ - test/lib/vedeu/parsing/raw_parser_test.rb
304
310
  - test/lib/vedeu/parsing/text_adaptor_test.rb
311
+ - test/lib/vedeu/parsing/view_test.rb
305
312
  - test/lib/vedeu/support/builder_test.rb
306
313
  - test/lib/vedeu/support/esc_test.rb
307
314
  - test/lib/vedeu/support/events_test.rb
308
315
  - test/lib/vedeu/support/geometry_test.rb
316
+ - test/lib/vedeu/support/helpers_test.rb
309
317
  - test/lib/vedeu/support/input_test.rb
310
318
  - test/lib/vedeu/support/menu_test.rb
311
319
  - test/lib/vedeu/support/persistence_test.rb
@@ -318,6 +326,9 @@ test_files:
318
326
  - test/support/bench.rb
319
327
  - test/support/colours.rb
320
328
  - test/support/dummy_interface.rb
329
+ - test/support/erb/colour.erb
330
+ - test/support/erb/colour_style.erb
331
+ - test/support/erb/style.erb
321
332
  - test/support/json/int1_lin1_str1.json
322
333
  - test/support/json/int1_lin1_str3.json
323
334
  - test/support/json/int1_lin2_str1.json
@@ -1,23 +0,0 @@
1
- module Vedeu
2
- class Template
3
- def self.parse(object, path)
4
- new(object, path).parse
5
- end
6
-
7
- def initialize(object, path)
8
- @object, @path = object, path
9
- end
10
-
11
- def parse
12
- ERB.new(load, nil, '-').result(binding)
13
- end
14
-
15
- private
16
-
17
- attr_reader :object, :path
18
-
19
- def load
20
- File.read(File.dirname(__FILE__) + path)
21
- end
22
- end
23
- end
@@ -1,68 +0,0 @@
1
- require 'vedeu/parsing/text_adaptor'
2
-
3
- module Vedeu
4
- class HashParser
5
- # Convert a hash into a collection of interfaces.
6
- #
7
- # @param output [Hash] a collection of interface pairs of the
8
- # format:
9
- #
10
- # {
11
- # interface_1: "A block of text containing\n" \
12
- # "new line characters.\n",
13
- # interface_2: "Some content destined for the " \
14
- # "other interface.\n"
15
- # }
16
- #
17
- # becomes:
18
- #
19
- # {
20
- # interfaces: [
21
- # {
22
- # name: 'interface_1',
23
- # lines: [{
24
- # streams: { text: "A block of text containing" }
25
- # }, {
26
- # streams: { text: "new line characters." }
27
- # }]
28
- # }, {
29
- # name: 'interface_2',
30
- # lines: [{
31
- # streams: { text: "Some content destined for the " \
32
- # "other interface." }
33
- # }]
34
- # }
35
- # ]
36
- # }
37
- #
38
- # @return [Hash]
39
- def self.parse(output = {})
40
- new(output).parse
41
- end
42
-
43
- def initialize(output = {})
44
- @output = output
45
- end
46
-
47
- def parse
48
- { interfaces: interfaces }
49
- end
50
-
51
- private
52
-
53
- attr_reader :output
54
-
55
- def interfaces
56
- stringified_keys.map do |name, content|
57
- {
58
- name: name,
59
- lines: TextAdaptor.adapt(content)
60
- }
61
- end
62
- end
63
-
64
- def stringified_keys
65
- output.inject({}) { |a, (k, v)| a[k.to_s] = v; a }
66
- end
67
- end
68
- end
@@ -1,52 +0,0 @@
1
- require 'vedeu/models/composition'
2
- require 'vedeu/parsing/hash_parser'
3
- require 'vedeu/parsing/json_parser'
4
- require 'vedeu/parsing/menu_parser'
5
-
6
- module Vedeu
7
- ParseError = Class.new(StandardError)
8
-
9
- class Parser
10
- def self.parse(output = {})
11
- return nil if output.nil? || output.empty?
12
-
13
- new(output).parse
14
- end
15
-
16
- def initialize(output = {})
17
- @output = output
18
- end
19
-
20
- def parse
21
- Composition.enqueue(parsed_output)
22
- end
23
-
24
- private
25
-
26
- attr_reader :output
27
-
28
- def parsed_output
29
- @parsed ||= parser.parse(output)
30
- end
31
-
32
- def parser
33
- return JSONParser if json?
34
- return HashParser if hash?
35
- return MenuParser if menu?
36
-
37
- fail ParseError, 'Cannot process output from command.'
38
- end
39
-
40
- def menu?
41
- output.is_a?(Array)
42
- end
43
-
44
- def hash?
45
- output.is_a?(Hash)
46
- end
47
-
48
- def json?
49
- output.is_a?(String)
50
- end
51
- end
52
- end
@@ -1,21 +0,0 @@
1
- require 'test_helper'
2
- require 'vedeu/output/template'
3
-
4
- module Vedeu
5
- describe Template do
6
- describe '#parse' do
7
- object = OpenStruct.new(value: 'Hello from variable!')
8
-
9
- it 'parses the template when the template file was found' do
10
- path = '/../../../test/support/template.erb'
11
- Template.new(object, path).parse.must_match(/This is the test template/)
12
- Template.new(object, path).parse.must_match(/Hello from variable!/)
13
- end
14
-
15
- it 'raises an exception when the template file cannot be found' do
16
- path = '/some/wrong/path/template.erb'
17
- proc { Template.new(object, path).parse }.must_raise(Errno::ENOENT)
18
- end
19
- end
20
- end
21
- end
@@ -1,31 +0,0 @@
1
- require 'test_helper'
2
- require 'vedeu/parsing/parser'
3
-
4
- module Vedeu
5
- describe Parser do
6
- describe '#parse' do
7
- it 'returns a NilClass when the output is empty' do
8
- Parser.parse.must_be_instance_of(NilClass)
9
- end
10
-
11
- it 'returns a Composition when the output is JSON' do
12
- file = File.read('test/support/json/int1_lin1_str1.json')
13
- parser = Parser.parse(file)
14
-
15
- parser.must_be_instance_of(Array)
16
- parser.size.must_equal(1)
17
- end
18
-
19
- it 'returns a collection of interfaces when the output is a Hash' do
20
- parser = Parser.parse({ parser_parse: 'Parser#parse' })
21
-
22
- parser.must_be_instance_of(Array)
23
- parser.size.must_equal(1)
24
- end
25
-
26
- it 'raises an exception when the output is anything else' do
27
- proc { Parser.parse(:invalid) }.must_raise(ParseError)
28
- end
29
- end
30
- end
31
- end