cura 0.0.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 (115) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +15 -0
  3. data/Gemfile.lock +122 -0
  4. data/LICENSE +20 -0
  5. data/README.md +159 -0
  6. data/Rakefile +42 -0
  7. data/cura.gemspec +23 -0
  8. data/examples/box_model/bin/box_model +11 -0
  9. data/examples/box_model/debug.log +0 -0
  10. data/examples/box_model/lib/box_model.rb +21 -0
  11. data/examples/box_model/lib/box_model/application.rb +24 -0
  12. data/examples/hello_world/bin/hello_world +10 -0
  13. data/examples/hello_world/lib/hello_world.rb +201 -0
  14. data/examples/mruby-examples/README.md +10 -0
  15. data/examples/mruby-examples/include/cura_examples.h +6 -0
  16. data/examples/mruby-examples/mrbgem.rake +14 -0
  17. data/examples/mruby-examples/src/gem_init.c +34 -0
  18. data/examples/mruby-examples/tools/hello_world/hello_world.c +6 -0
  19. data/examples/todo_list/app.log +9 -0
  20. data/examples/todo_list/bin/todo_list +26 -0
  21. data/examples/todo_list/data.db +0 -0
  22. data/examples/todo_list/debug.log +0 -0
  23. data/examples/todo_list/lib/todo_list.rb +28 -0
  24. data/examples/todo_list/lib/todo_list/application.rb +54 -0
  25. data/examples/todo_list/lib/todo_list/component/header.rb +27 -0
  26. data/examples/todo_list/lib/todo_list/component/list.rb +50 -0
  27. data/examples/todo_list/lib/todo_list/component/list_item.rb +28 -0
  28. data/examples/todo_list/lib/todo_list/component/list_items.rb +97 -0
  29. data/examples/todo_list/lib/todo_list/component/lists.rb +89 -0
  30. data/examples/todo_list/lib/todo_list/database.rb +50 -0
  31. data/examples/todo_list/lib/todo_list/model/list.rb +9 -0
  32. data/examples/todo_list/lib/todo_list/model/list_item.rb +9 -0
  33. data/examples/todo_list/profile.html +11354 -0
  34. data/lib/cura.rb +13 -0
  35. data/lib/cura/adapter.rb +67 -0
  36. data/lib/cura/application.rb +245 -0
  37. data/lib/cura/attributes/has_ancestry.rb +40 -0
  38. data/lib/cura/attributes/has_application.rb +31 -0
  39. data/lib/cura/attributes/has_attributes.rb +89 -0
  40. data/lib/cura/attributes/has_children.rb +113 -0
  41. data/lib/cura/attributes/has_colors.rb +66 -0
  42. data/lib/cura/attributes/has_coordinates.rb +49 -0
  43. data/lib/cura/attributes/has_dimensions.rb +63 -0
  44. data/lib/cura/attributes/has_events.rb +89 -0
  45. data/lib/cura/attributes/has_focusability.rb +37 -0
  46. data/lib/cura/attributes/has_initialize.rb +15 -0
  47. data/lib/cura/attributes/has_offsets.rb +82 -0
  48. data/lib/cura/attributes/has_orientation.rb +53 -0
  49. data/lib/cura/attributes/has_relative_coordinates.rb +39 -0
  50. data/lib/cura/attributes/has_root.rb +104 -0
  51. data/lib/cura/attributes/has_side_attributes.rb +95 -0
  52. data/lib/cura/attributes/has_windows.rb +70 -0
  53. data/lib/cura/borders.rb +16 -0
  54. data/lib/cura/color.rb +330 -0
  55. data/lib/cura/component/base.rb +180 -0
  56. data/lib/cura/component/button.rb +57 -0
  57. data/lib/cura/component/group.rb +77 -0
  58. data/lib/cura/component/label.rb +224 -0
  59. data/lib/cura/component/listbox.rb +152 -0
  60. data/lib/cura/component/pack.rb +144 -0
  61. data/lib/cura/component/scrollbar.rb +184 -0
  62. data/lib/cura/component/textbox.rb +118 -0
  63. data/lib/cura/cursor.rb +77 -0
  64. data/lib/cura/error/base.rb +10 -0
  65. data/lib/cura/error/invalid_adapter.rb +18 -0
  66. data/lib/cura/error/invalid_application.rb +18 -0
  67. data/lib/cura/error/invalid_color.rb +18 -0
  68. data/lib/cura/error/invalid_component.rb +18 -0
  69. data/lib/cura/error/invalid_middleware.rb +18 -0
  70. data/lib/cura/event.rb +38 -0
  71. data/lib/cura/event/base.rb +108 -0
  72. data/lib/cura/event/click.rb +14 -0
  73. data/lib/cura/event/dispatcher.rb +122 -0
  74. data/lib/cura/event/focus.rb +14 -0
  75. data/lib/cura/event/handler.rb +74 -0
  76. data/lib/cura/event/key_down.rb +68 -0
  77. data/lib/cura/event/middleware/aimer/base.rb +38 -0
  78. data/lib/cura/event/middleware/aimer/dispatcher_target.rb +24 -0
  79. data/lib/cura/event/middleware/aimer/mouse_focus.rb +48 -0
  80. data/lib/cura/event/middleware/aimer/target_option.rb +38 -0
  81. data/lib/cura/event/middleware/base.rb +21 -0
  82. data/lib/cura/event/middleware/dispatch.rb +20 -0
  83. data/lib/cura/event/middleware/translator/base.rb +37 -0
  84. data/lib/cura/event/middleware/translator/mouse_click.rb +44 -0
  85. data/lib/cura/event/mouse.rb +34 -0
  86. data/lib/cura/event/mouse_button.rb +103 -0
  87. data/lib/cura/event/mouse_wheel_down.rb +14 -0
  88. data/lib/cura/event/mouse_wheel_up.rb +14 -0
  89. data/lib/cura/event/resize.rb +17 -0
  90. data/lib/cura/event/selected.rb +14 -0
  91. data/lib/cura/event/unfocus.rb +14 -0
  92. data/lib/cura/focus_controller.rb +89 -0
  93. data/lib/cura/key.rb +313 -0
  94. data/lib/cura/margins.rb +16 -0
  95. data/lib/cura/offsets.rb +91 -0
  96. data/lib/cura/padding.rb +16 -0
  97. data/lib/cura/pencil.rb +29 -0
  98. data/lib/cura/version.rb +6 -0
  99. data/lib/cura/window.rb +85 -0
  100. data/spec/cura/attributes/has_ancestry_spec.rb +108 -0
  101. data/spec/cura/attributes/has_application_spec.rb +59 -0
  102. data/spec/cura/attributes/has_attributes_spec.rb +75 -0
  103. data/spec/cura/attributes/has_children_spec.rb +169 -0
  104. data/spec/cura/attributes/has_colors_spec.rb +20 -0
  105. data/spec/cura/attributes/has_coordinates_spec.rb +19 -0
  106. data/spec/cura/attributes/has_dimensions_spec.rb +19 -0
  107. data/spec/cura/attributes/has_events_spec.rb +18 -0
  108. data/spec/cura/attributes/has_focusability_spec.rb +58 -0
  109. data/spec/cura/attributes/has_offsets_spec.rb +18 -0
  110. data/spec/cura/attributes/has_orientation_spec.rb +102 -0
  111. data/spec/cura/attributes/has_relative_coordinates_spec.rb +18 -0
  112. data/spec/cura/attributes/has_side_attributes_spec.rb +19 -0
  113. data/spec/spec_helper.rb +12 -0
  114. data/spec/support/shared_examples_for_attributes.rb +122 -0
  115. metadata +211 -0
@@ -0,0 +1,169 @@
1
+ require "spec_helper"
2
+
3
+ require "cura/component/base"
4
+
5
+ require "cura/attributes/has_children"
6
+
7
+ describe Cura::Attributes::HasChildren do
8
+
9
+ let(:instance) do
10
+ instance_class = Class.new
11
+ instance_class.include(Cura::Attributes::HasChildren)
12
+
13
+ instance_class.new
14
+ end
15
+
16
+ let(:child_class) do
17
+ instance_class = Class.new(Cura::Component::Base)
18
+ instance_class.include(Cura::Attributes::HasChildren)
19
+
20
+ instance_class
21
+ end
22
+
23
+ let(:child_1) { child_class.new }
24
+ let(:child_2) { child_class.new }
25
+ let(:children) { [child_1, child_2] }
26
+
27
+ describe "#children" do
28
+
29
+ it "should be initialized with the correct value" do
30
+ expect(instance.children).to eq([])
31
+ end
32
+
33
+ context "when recursive is unset" do
34
+
35
+ before do
36
+ instance.add_children(*children)
37
+ end
38
+
39
+ it "should return it's children" do
40
+ expect(instance.children).to eq(children)
41
+ end
42
+
43
+ end
44
+
45
+ context "when recursive is set" do
46
+
47
+ let(:child) { child_class.new }
48
+
49
+ before do
50
+ instance.add_child(child)
51
+ child.add_children(*children)
52
+ end
53
+
54
+ it "should return all of it's children's children as well" do
55
+ expect(instance.children(true)).to eq([child] + children)
56
+ end
57
+
58
+ end
59
+
60
+ end
61
+
62
+ describe "#add_child" do
63
+
64
+ before do
65
+ instance.add_child(child_1)
66
+ instance.add_child(child_2)
67
+ end
68
+
69
+ it "should add the children" do
70
+ expect(instance.children).to eq([child_1, child_2])
71
+ end
72
+
73
+ end
74
+
75
+ describe "#add_children" do
76
+
77
+ before do
78
+ instance.add_children(child_1, child_2)
79
+ end
80
+
81
+ it "should add the children" do
82
+ expect(instance.children).to eq([child_1, child_2])
83
+ end
84
+
85
+ end
86
+
87
+ describe "#delete_child_at" do
88
+
89
+ before do
90
+ instance.add_children(child_1, child_2)
91
+ end
92
+
93
+ context "when a positive index is given" do
94
+
95
+ before do
96
+ instance.delete_child_at(1)
97
+ end
98
+
99
+ it "should delete the child" do
100
+ expect(instance.children).to eq([child_1])
101
+ end
102
+
103
+ end
104
+
105
+ context "when a negative index is given" do
106
+
107
+ before do
108
+ instance.delete_child_at(-1)
109
+ end
110
+
111
+ it "should delete the child" do
112
+ expect(instance.children).to eq([child_1])
113
+ end
114
+
115
+ end
116
+
117
+ end
118
+
119
+ describe "#delete_child" do
120
+
121
+ before do
122
+ instance.add_children(child_1, child_2)
123
+ instance.delete_child(child_2)
124
+ end
125
+
126
+ it "should delete the child" do
127
+ expect(instance.children).to eq([child_1])
128
+ end
129
+
130
+ end
131
+
132
+ describe "#delete_children" do
133
+
134
+ before do
135
+ instance.add_children(child_1, child_2)
136
+ instance.delete_children
137
+ end
138
+
139
+ it "should delete all children" do
140
+ expect(instance.children).to eq([])
141
+ end
142
+
143
+ end
144
+
145
+ describe "#children?" do
146
+
147
+ context "when there aren't children" do
148
+
149
+ it "should return false" do
150
+ expect(instance.children?).to eq(false)
151
+ end
152
+
153
+ end
154
+
155
+ context "when there are children" do
156
+
157
+ before do
158
+ instance.add_children(child_1, child_2)
159
+ end
160
+
161
+ it "should return true" do
162
+ expect(instance.children?).to eq(true)
163
+ end
164
+
165
+ end
166
+
167
+ end
168
+
169
+ end
@@ -0,0 +1,20 @@
1
+ require "spec_helper"
2
+
3
+ require "support/shared_examples_for_attributes"
4
+
5
+ require "cura/attributes/has_initialize"
6
+ require "cura/attributes/has_colors"
7
+
8
+ describe Cura::Attributes::HasColors do
9
+
10
+ let(:instance) do
11
+ instance_class = Class.new
12
+ instance_class.include(Cura::Attributes::HasInitialize)
13
+ instance_class.include(Cura::Attributes::HasColors)
14
+
15
+ instance_class.new
16
+ end
17
+
18
+ it_should_behave_like "an object with color accessors", :foreground, :background
19
+
20
+ end
@@ -0,0 +1,19 @@
1
+ require "spec_helper"
2
+ require "support/shared_examples_for_attributes"
3
+
4
+ require "cura/attributes/has_initialize"
5
+ require "cura/attributes/has_coordinates"
6
+
7
+ describe Cura::Attributes::HasCoordinates do
8
+
9
+ let(:instance) do
10
+ instance_class = Class.new
11
+ instance_class.include(Cura::Attributes::HasInitialize)
12
+ instance_class.include(Cura::Attributes::HasCoordinates)
13
+
14
+ instance_class.new
15
+ end
16
+
17
+ it_should_behave_like "an object with integer accessors", :x, :y
18
+
19
+ end
@@ -0,0 +1,19 @@
1
+ require "spec_helper"
2
+ require "support/shared_examples_for_attributes"
3
+
4
+ require "cura/attributes/has_initialize"
5
+ require "cura/attributes/has_dimensions"
6
+
7
+ describe Cura::Attributes::HasDimensions do
8
+
9
+ let(:instance) do
10
+ instance_class = Class.new
11
+ instance_class.include(Cura::Attributes::HasInitialize)
12
+ instance_class.include(Cura::Attributes::HasDimensions)
13
+
14
+ instance_class.new
15
+ end
16
+
17
+ it_should_behave_like "an object with size accessors", :width, :height, default: :auto
18
+
19
+ end
@@ -0,0 +1,18 @@
1
+ require "spec_helper"
2
+
3
+ require "cura/attributes/has_initialize"
4
+ require "cura/attributes/has_events"
5
+
6
+ describe Cura::Attributes::HasEvents do
7
+
8
+ let(:instance) do
9
+ instance_class = Class.new
10
+ instance_class.include(Cura::Attributes::HasInitialize)
11
+ instance_class.include(Cura::Attributes::HasEvents)
12
+
13
+ instance_class.new
14
+ end
15
+
16
+ pending
17
+
18
+ end
@@ -0,0 +1,58 @@
1
+ require "spec_helper"
2
+
3
+ require "cura/attributes/has_initialize"
4
+ require "cura/attributes/has_focusability"
5
+
6
+ describe Cura::Attributes::HasFocusability do
7
+
8
+ let(:instance) do
9
+ instance_class = Class.new
10
+ instance_class.include(Cura::Attributes::HasInitialize)
11
+ instance_class.include(Cura::Attributes::HasFocusability)
12
+
13
+ instance_class.new
14
+ end
15
+
16
+ describe "#focusable?" do
17
+
18
+ it "should be initialized with the correct value" do
19
+ expect(instance.focusable?).to eq(false)
20
+ end
21
+
22
+ end
23
+
24
+ describe "#focusable=" do
25
+
26
+ context "when a boolean is passed" do
27
+
28
+ it "should set the attribute correctly" do
29
+ instance.focusable = true
30
+ expect(instance.focusable?).to eq(true)
31
+
32
+ instance.focusable = false
33
+ expect(instance.focusable?).to eq(false)
34
+ end
35
+
36
+ end
37
+
38
+ context "when a truthy object is passed" do
39
+
40
+ it "should set the attribute correctly" do
41
+ instance.focusable = "truthy object"
42
+ expect(instance.focusable?).to eq(true)
43
+ end
44
+
45
+ end
46
+
47
+ context "when a falsey object is passed" do
48
+
49
+ it "should set the attribute correctly" do
50
+ instance.focusable = nil
51
+ expect(instance.focusable?).to eq(false)
52
+ end
53
+
54
+ end
55
+
56
+ end
57
+
58
+ end
@@ -0,0 +1,18 @@
1
+ require "spec_helper"
2
+
3
+ require "cura/attributes/has_initialize"
4
+ require "cura/attributes/has_offsets"
5
+
6
+ describe Cura::Attributes::HasOffsets do
7
+
8
+ let(:instance) do
9
+ instance_class = Class.new
10
+ instance_class.include(Cura::Attributes::HasInitialize)
11
+ instance_class.include(Cura::Attributes::HasOffsets)
12
+
13
+ instance_class.new
14
+ end
15
+
16
+ pending
17
+
18
+ end
@@ -0,0 +1,102 @@
1
+ require "spec_helper"
2
+
3
+ require "cura/attributes/has_initialize"
4
+ require "cura/attributes/has_orientation"
5
+
6
+ describe Cura::Attributes::HasOrientation do
7
+
8
+ let(:instance_class) do
9
+ instance_class = Class.new
10
+ instance_class.include(Cura::Attributes::HasInitialize)
11
+ instance_class.include(Cura::Attributes::HasOrientation)
12
+
13
+ instance_class
14
+ end
15
+
16
+ let(:instance) { instance_class.new }
17
+
18
+ describe "#orientation" do
19
+
20
+ it "should be initialized with the correct value" do
21
+ expect(instance.orientation).to eq(:vertical)
22
+ end
23
+
24
+ end
25
+
26
+ describe "#orientation=" do
27
+
28
+ context "when a symbol is passed" do
29
+
30
+ context "and it is valid" do
31
+
32
+ it "should set the attribute correctly" do
33
+ instance.orientation = :horizontal
34
+ expect(instance.orientation).to eq(:horizontal)
35
+
36
+ instance.orientation = :vertical
37
+ expect(instance.orientation).to eq(:vertical)
38
+ end
39
+
40
+ end
41
+
42
+ context "and it is invalid" do
43
+
44
+ it "should raise an ArgumentError" do
45
+ expect { instance.orientation = :invalid_symbol }.to raise_error(ArgumentError)
46
+ end
47
+
48
+ end
49
+
50
+ end
51
+
52
+ end
53
+
54
+ describe "#horizontal?" do
55
+
56
+ context "when the orientation is set to :vertical" do
57
+
58
+ let(:instance) { instance_class.new(orientation: :vertical) }
59
+
60
+ it "should return the correct value" do
61
+ expect(instance.horizontal?).to eq(false)
62
+ end
63
+
64
+ end
65
+
66
+ context "when the orientation is set to :horizontal" do
67
+
68
+ let(:instance) { instance_class.new(orientation: :horizontal) }
69
+
70
+ it "should return the correct value" do
71
+ expect(instance.horizontal?).to eq(true)
72
+ end
73
+
74
+ end
75
+
76
+ end
77
+
78
+ describe "#vertical?" do
79
+
80
+ context "when the orientation is set to :vertical" do
81
+
82
+ let(:instance) { instance_class.new(orientation: :vertical) }
83
+
84
+ it "should return the correct value" do
85
+ expect(instance.vertical?).to eq(true)
86
+ end
87
+
88
+ end
89
+
90
+ context "when the orientation is set to :horizontal" do
91
+
92
+ let(:instance) { instance_class.new(orientation: :horizontal) }
93
+
94
+ it "should return the correct value" do
95
+ expect(instance.vertical?).to eq(false)
96
+ end
97
+
98
+ end
99
+
100
+ end
101
+
102
+ end
@@ -0,0 +1,18 @@
1
+ require "spec_helper"
2
+
3
+ require "cura/attributes/has_initialize"
4
+ require "cura/attributes/has_relative_coordinates"
5
+
6
+ describe Cura::Attributes::HasRelativeCoordinates do
7
+
8
+ let(:instance) do
9
+ instance_class = Class.new
10
+ instance_class.include(Cura::Attributes::HasInitialize)
11
+ instance_class.include(Cura::Attributes::HasRelativeCoordinates)
12
+
13
+ instance_class.new
14
+ end
15
+
16
+ pending
17
+
18
+ end