vedeu 0.4.35 → 0.4.36

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -0
  3. data/Dockerfile +56 -35
  4. data/bin/vedeu +54 -13
  5. data/docs/applications.md +92 -0
  6. data/features/cli_vedeu.feature +5 -0
  7. data/features/start_stop.feature +1 -1
  8. data/features/step_definitions/vedeu_steps.rb +0 -0
  9. data/features/support/env.rb +3 -2
  10. data/lib/vedeu.rb +1 -0
  11. data/lib/vedeu/all.rb +6 -0
  12. data/lib/vedeu/application/all.rb +2 -0
  13. data/lib/vedeu/application/application_controller.rb +7 -0
  14. data/lib/vedeu/application/application_helper.rb +7 -0
  15. data/lib/vedeu/bootstrap.rb +73 -0
  16. data/lib/vedeu/distributed/templates/default_configuration.vedeu +7 -14
  17. data/lib/vedeu/generator/all.rb +13 -0
  18. data/lib/vedeu/generator/application.rb +108 -0
  19. data/lib/vedeu/generator/helpers.rb +55 -0
  20. data/lib/vedeu/generator/templates/application/Gemfile +3 -0
  21. data/lib/vedeu/generator/templates/application/app/controllers/application_controller.erb +7 -0
  22. data/lib/vedeu/generator/templates/application/app/controllers/name.erb +10 -0
  23. data/lib/vedeu/generator/templates/application/app/helpers/application_helper.erb +9 -0
  24. data/lib/vedeu/generator/templates/application/app/helpers/name.erb +9 -0
  25. data/lib/vedeu/generator/templates/application/app/models/keymaps/_global_.rb +2 -0
  26. data/lib/vedeu/generator/templates/application/app/models/keymaps/_system_.rb +2 -0
  27. data/lib/vedeu/generator/templates/application/app/views/interfaces/name.erb +44 -0
  28. data/lib/vedeu/generator/templates/application/app/views/name.erb +0 -0
  29. data/lib/vedeu/generator/templates/application/app/views/templates/name.erb +0 -0
  30. data/lib/vedeu/generator/templates/application/application.rb +9 -0
  31. data/lib/vedeu/generator/templates/application/bin/name +7 -0
  32. data/lib/vedeu/generator/templates/application/config/app_name.erb +1 -0
  33. data/lib/vedeu/generator/templates/application/config/configuration.rb +22 -0
  34. data/lib/vedeu/generator/templates/application/lib/.gitkeep +0 -0
  35. data/lib/vedeu/generator/templates/application/test/.gitkeep +0 -0
  36. data/lib/vedeu/generator/templates/application/vendor/.gitkeep +0 -0
  37. data/lib/vedeu/generator/view.rb +71 -0
  38. data/lib/vedeu/geometry/area.rb +21 -21
  39. data/lib/vedeu/main_loop.rb +0 -1
  40. data/lib/vedeu/output/esc.rb +5 -4
  41. data/lib/vedeu/output/refresh.rb +9 -3
  42. data/lib/vedeu/output/view_helpers/all.rb +0 -2
  43. data/lib/vedeu/support/log.rb +1 -1
  44. data/lib/vedeu/support/template.rb +1 -1
  45. data/lib/vedeu/support/terminal.rb +10 -2
  46. data/lib/vedeu/tasks/application.rake +28 -0
  47. data/lib/vedeu/tasks/vedeu.rake +3 -0
  48. data/lib/vedeu/templating/directive.rb +1 -8
  49. data/lib/vedeu/traps.rb +2 -2
  50. data/lib/vedeu/version.rb +1 -1
  51. data/test/lib/vedeu/application/application_controller_test.rb +12 -0
  52. data/test/lib/vedeu/application/application_helper_test.rb +18 -0
  53. data/test/lib/vedeu/bootstrap_test.rb +30 -0
  54. data/test/lib/vedeu/buffers/buffer_test.rb +7 -0
  55. data/test/lib/vedeu/buffers/display_buffer_test.rb +2 -0
  56. data/test/lib/vedeu/configuration/api_test.rb +6 -0
  57. data/test/lib/vedeu/cursor/move_test.rb +7 -0
  58. data/test/lib/vedeu/distributed/client_test.rb +4 -0
  59. data/test/lib/vedeu/distributed/server_test.rb +9 -0
  60. data/test/lib/vedeu/dsl/use_test.rb +4 -0
  61. data/test/lib/vedeu/generator/application_test.rb +55 -0
  62. data/test/lib/vedeu/generator/helpers_test.rb +80 -0
  63. data/test/lib/vedeu/generator/view_test.rb +35 -0
  64. data/test/lib/vedeu/geometry/area_test.rb +8 -0
  65. data/test/lib/vedeu/launcher_test.rb +2 -0
  66. data/test/lib/vedeu/main_loop_test.rb +2 -0
  67. data/test/lib/vedeu/null/interface_test.rb +1 -0
  68. data/test/lib/vedeu/output/clear_test.rb +3 -0
  69. data/test/lib/vedeu/output/refresh_test.rb +1 -0
  70. data/test/lib/vedeu/output/renderers/file_test.rb +1 -0
  71. data/test/lib/vedeu/repositories/repositories/events_repository_test.rb +2 -0
  72. data/test/lib/vedeu/repositories/repositories/interfaces_repository_test.rb +3 -0
  73. data/test/lib/vedeu/repositories/repositories/keymaps_test.rb +2 -0
  74. data/test/lib/vedeu/repositories/repositories/menus_test.rb +2 -0
  75. data/test/lib/vedeu/repositories/repository_test.rb +1 -0
  76. data/test/lib/vedeu/support/log_test.rb +5 -0
  77. data/test/lib/vedeu/support/terminal_test.rb +1 -0
  78. data/test/lib/vedeu/traps_test.rb +1 -1
  79. data/test/lib/vedeu_test.rb +1 -0
  80. data/vedeu.gemspec +7 -4
  81. metadata +97 -25
@@ -1,12 +1,11 @@
1
1
  Vedeu.configure do
2
- colour_mode 256
3
- log '/tmp/vedeu_test_helper.log'
4
- debug!
5
- drb!
6
- drb_host 'localhost'
7
- drb_port 21420
8
- drb_width 80
9
- drb_height 25
2
+ # log '/tmp/your_app.log'
3
+ # debug!
4
+ # drb!
5
+ # drb_host 'localhost'
6
+ # drb_port 21420
7
+ # drb_width 80
8
+ # drb_height 25
10
9
 
11
10
  # cooked!
12
11
  # raw!
@@ -16,12 +15,6 @@ Vedeu.configure do
16
15
  # interactive!
17
16
  # standalone!
18
17
 
19
- # System keys can be redefined
20
- # exit_key 'q'
21
- # focus_next_key :tab
22
- # focus_prev_key :shift_tab
23
- # mode_switch_key :escape
24
-
25
18
  # Not used yet
26
19
  # stdin File.open("/dev/tty", "r")
27
20
  # stdout File.open("/dev/tty", "w")
@@ -0,0 +1,13 @@
1
+ require 'vedeu/generator/helpers'
2
+ require 'vedeu/generator/application'
3
+ require 'vedeu/generator/view'
4
+
5
+ module Vedeu
6
+
7
+ # Provides helper classes for the various rake tasks.
8
+ #
9
+ module Generator
10
+
11
+ end # Generator
12
+
13
+ end # Vedeu
@@ -0,0 +1,108 @@
1
+ module Vedeu
2
+
3
+ module Generator
4
+
5
+ class Application
6
+
7
+ include Vedeu::Generator::Helpers
8
+
9
+ # @param name [String] The name of the application.
10
+ # @return [Vedeu::Generator::Application]
11
+ def self.generate(name)
12
+ new(name).generate
13
+ end
14
+
15
+ # @param name [String] The name of the application.
16
+ # @return [Vedeu::Generator::Application]
17
+ def initialize(name)
18
+ @name = name
19
+ end
20
+
21
+ # @return [void]
22
+ def generate
23
+ make_directory_structure
24
+
25
+ copy_gemfile
26
+ copy_application_controller
27
+ copy_application_helper
28
+ copy_global_keymap
29
+ copy_system_keymap
30
+ copy_application_executable
31
+ make_application_executable
32
+ copy_configuration
33
+ copy_app_name
34
+ end
35
+
36
+ private
37
+
38
+ # @return [void]
39
+ def make_directory_structure
40
+ FileUtils.mkdir_p(name + '/app/controllers')
41
+ FileUtils.mkdir_p(name + '/app/helpers')
42
+ FileUtils.mkdir_p(name + '/app/models/keymaps')
43
+ FileUtils.mkdir_p(name + '/app/views/interfaces')
44
+ FileUtils.mkdir_p(name + '/app/views/templates')
45
+ FileUtils.mkdir_p(name + '/bin')
46
+ FileUtils.mkdir_p(name + '/config')
47
+ FileUtils.mkdir_p(name + '/lib')
48
+ FileUtils.mkdir_p(name + '/test')
49
+ FileUtils.mkdir_p(name + '/vendor')
50
+ end
51
+
52
+ # @return [void]
53
+ def copy_application_controller
54
+ make_file(source + '/app/controllers/application_controller.erb',
55
+ name + '/app/controllers/application_controller.rb')
56
+ end
57
+
58
+ # @return [void]
59
+ def copy_application_helper
60
+ make_file(source + '/app/helpers/application_helper.erb',
61
+ name + '/app/helpers/application_helper.rb')
62
+ end
63
+
64
+ # @return [void]
65
+ def copy_application_executable
66
+ FileUtils.cp(source + '/bin/name',
67
+ "#{name}/bin/#{name}")
68
+ end
69
+
70
+ # @return [void]
71
+ def copy_configuration
72
+ FileUtils.cp(source + '/config/configuration.rb',
73
+ "#{name}/config/configuration.rb")
74
+ end
75
+
76
+ # @return [void]
77
+ def copy_app_name
78
+ make_file(source + '/config/app_name.erb',
79
+ name + '/config/app_name')
80
+ end
81
+
82
+ # @return [void]
83
+ def copy_gemfile
84
+ FileUtils.cp(source + '/Gemfile', "#{name}/Gemfile")
85
+ end
86
+
87
+ # @return [void]
88
+ def make_application_executable
89
+ FileUtils.chmod(0755, "#{name}/bin/#{name}")
90
+ end
91
+
92
+ # @return [void]
93
+ def copy_global_keymap
94
+ FileUtils.cp(source + '/app/models/keymaps/_global_.rb',
95
+ "#{name}/app/models/keymaps/_global_.rb")
96
+ end
97
+
98
+ # @return [void]
99
+ def copy_system_keymap
100
+ FileUtils.cp(source + '/app/models/keymaps/_system_.rb',
101
+ "#{name}/app/models/keymaps/_system_.rb")
102
+ end
103
+
104
+ end # Application
105
+
106
+ end # Generator
107
+
108
+ end # Vedeu
@@ -0,0 +1,55 @@
1
+ module Vedeu
2
+
3
+ module Generator
4
+
5
+ module Helpers
6
+
7
+ # @return [String]
8
+ def app_name
9
+ @app_name ||= File.read('./config/app_name')
10
+ end
11
+
12
+ # @param name [String]
13
+ # @return [String]
14
+ def app_name_as_snake_case(name = app_name)
15
+ name.gsub!(/::/, '/')
16
+ name.gsub!(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
17
+ name.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
18
+ name.tr!('-', '_')
19
+ name.downcase!
20
+ name
21
+ end
22
+
23
+ # @param source [String]
24
+ # @param destination [String]
25
+ # @return [void]
26
+ def make_file(source, destination)
27
+ File.write(destination, parse(source))
28
+ end
29
+
30
+ # @return [String]
31
+ def name
32
+ @_name ||= @name.downcase
33
+ end
34
+
35
+ # @return [String]
36
+ def name_as_class
37
+ name.downcase.split(/_|-/).map(&:capitalize).join
38
+ end
39
+
40
+ # @param source [String]
41
+ # @return [String]
42
+ def parse(source)
43
+ Vedeu::Template.parse(self, source)
44
+ end
45
+
46
+ # @return [String]
47
+ def source
48
+ File.dirname(__FILE__) + '/templates/application/.'
49
+ end
50
+
51
+ end # Helpers
52
+
53
+ end # Generator
54
+
55
+ end # Vedeu
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'vedeu'
@@ -0,0 +1,7 @@
1
+ module <%= object.name_as_class %>
2
+
3
+ class ApplicationController < Vedeu::ApplicationController
4
+
5
+ end
6
+
7
+ end
@@ -0,0 +1,10 @@
1
+ module <%= object.app_name %>
2
+
3
+ class <%= object.name_as_class %> < <%= object.app_name -%>::ApplicationController
4
+
5
+ def initialize
6
+ end
7
+
8
+ end
9
+
10
+ end
@@ -0,0 +1,9 @@
1
+ module <%= object.name_as_class %>
2
+
3
+ module ApplicationHelper
4
+
5
+ include Vedeu::ApplicationHelper
6
+
7
+ end
8
+
9
+ end
@@ -0,0 +1,9 @@
1
+ module <%= object.app_name %>
2
+
3
+ module <%= object.name_as_class %>
4
+
5
+ include <%= object.app_name -%>::ApplicationHelper
6
+
7
+ end
8
+
9
+ end
@@ -0,0 +1,2 @@
1
+ Vedeu.keymap('_global_') do
2
+ end
@@ -0,0 +1,2 @@
1
+ Vedeu.keymap('_system_') do
2
+ end
@@ -0,0 +1,44 @@
1
+ Vedeu.interface '<%= object.name %>' do
2
+ # border do
3
+ # Define colour and style of border
4
+ # colour foreground: '#ffffff', background: '#000000'
5
+ # style 'normal'
6
+
7
+ # Define visibility of border
8
+ # show_bottom!
9
+ # show_left!
10
+ # show_right!
11
+ # show_top!
12
+
13
+ # Define characters used to draw border
14
+ # bottom_right '+'
15
+ # bottom_left '+'
16
+ # horizontal '-'
17
+ # top_right '+'
18
+ # top_left '+'
19
+ # vertical '|'
20
+
21
+ # Define the title of the interface
22
+ # title '<%= object.name %>'
23
+ # end
24
+
25
+ # background
26
+
27
+ # cursor!
28
+
29
+ # foreground
30
+
31
+ # geometry do
32
+ # centred!
33
+ # x 1
34
+ # y 1
35
+ # xn 11
36
+ # yn 11
37
+ # height 10
38
+ # width 10
39
+ # end
40
+
41
+ # style
42
+
43
+ # zindex
44
+ end
@@ -0,0 +1,9 @@
1
+ module YourAppName
2
+
3
+ class Application
4
+
5
+ Vedeu::Bootstrap.start(ARGV)
6
+
7
+ end
8
+
9
+ end
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __FILE__)
4
+
5
+ require 'bundler/setup' # Set up gems listed in the Gemfile.
6
+
7
+ require_relative '../application'
@@ -0,0 +1 @@
1
+ <%= object.name_as_class -%>
@@ -0,0 +1,22 @@
1
+ Vedeu.configure do
2
+ # log '/tmp/your_app.log'
3
+ # debug!
4
+ # drb!
5
+ # drb_host 'localhost'
6
+ # drb_port 21420
7
+ # drb_width 80
8
+ # drb_height 25
9
+
10
+ # cooked!
11
+ # raw!
12
+
13
+ # run_once!
14
+
15
+ # interactive!
16
+ # standalone!
17
+
18
+ # Not used yet
19
+ # stdin File.open("/dev/tty", "r")
20
+ # stdout File.open("/dev/tty", "w")
21
+ # stderr File.open("/tmp/vedeu_error.log", "w+")
22
+ end
@@ -0,0 +1,71 @@
1
+ require 'fileutils'
2
+
3
+ module Vedeu
4
+
5
+ module Generator
6
+
7
+ class View
8
+
9
+ include Vedeu::Generator::Helpers
10
+
11
+ # @param name [String] The name of the view.
12
+ # @return [Vedeu::Generator::View]
13
+ def self.generate(name)
14
+ new(name).generate
15
+ end
16
+
17
+ # @param name [String] The name of the view.
18
+ # @return [Vedeu::Generator::View]
19
+ def initialize(name)
20
+ @name = name
21
+ end
22
+
23
+ # @return [void]
24
+ def generate
25
+ make_controller_file
26
+
27
+ make_helper_file
28
+
29
+ make_interface_file
30
+
31
+ make_template_file
32
+
33
+ make_view_class_file
34
+ end
35
+
36
+ private
37
+
38
+ # @return [void]
39
+ def make_controller_file
40
+ make_file(source + '/app/controllers/name.erb',
41
+ app_name + "/app/controllers/#{name}.rb")
42
+ end
43
+
44
+ # @return [void]
45
+ def make_helper_file
46
+ make_file(source + '/app/helpers/name.erb',
47
+ app_name + "/app/helpers/#{name}.rb")
48
+ end
49
+
50
+ # @return [void]
51
+ def make_interface_file
52
+ make_file(source + '/app/views/interfaces/name.erb',
53
+ app_name + "/app/views/interfaces/#{name}.rb")
54
+ end
55
+
56
+ # @return [void]
57
+ def make_template_file
58
+ FileUtils.touch(app_name + "/app/views/templates/#{name}.erb")
59
+ end
60
+
61
+ # @return [void]
62
+ def make_view_class_file
63
+ make_file(source + '/app/views/name.erb',
64
+ app_name + "/app/views/#{name}.rb")
65
+ end
66
+
67
+ end # View
68
+
69
+ end # Generator
70
+
71
+ end # Vedeu