glimmer 0.1.5.470 → 0.1.8.470

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 (44) hide show
  1. checksums.yaml +4 -4
  2. data/.coveralls.yml +1 -0
  3. data/.rspec +2 -0
  4. data/Gemfile +2 -0
  5. data/README.markdown +7 -2
  6. data/Rakefile +7 -8
  7. data/TODO.md +1 -1
  8. data/VERSION +1 -1
  9. data/bin/girb +3 -0
  10. data/bin/girb_runner.rb +5 -0
  11. data/glimmer.gemspec +29 -19
  12. data/lib/glimmer_application.rb +1 -2
  13. data/lib/shine.rb +23 -21
  14. data/lib/xml_command_handlers/models/node.rb +11 -11
  15. data/lib/xml_command_handlers/models/xml_visitor.rb +12 -12
  16. data/samples/tictactoe/tic_tac_toe.rb +11 -11
  17. data/spec/lib/command_handlers/models/observable_model_spec.rb +22 -0
  18. data/spec/lib/command_handlers/models/r_widget_spec.rb +52 -0
  19. data/{test/glimmer_combo_data_binding_test.rb → spec/lib/glimmer__combo_data_binding__spec.rb} +48 -49
  20. data/spec/lib/glimmer__constant__spec.rb +30 -0
  21. data/{test/glimmer_data_binding_test.rb → spec/lib/glimmer__data_binding__spec.rb} +95 -94
  22. data/spec/lib/glimmer__list_data_binding__spec.rb +224 -0
  23. data/{test/glimmer_listeners_test.rb → spec/lib/glimmer__listeners__spec.rb} +18 -19
  24. data/spec/lib/glimmer__shine_data_binding__spec.rb +89 -0
  25. data/spec/lib/glimmer__tab_item__spec.rb +55 -0
  26. data/spec/lib/glimmer__table_data_binding__spec.rb +121 -0
  27. data/spec/lib/glimmer_spec.rb +251 -0
  28. data/spec/lib/xml/glimmer_xml_spec.rb +154 -0
  29. data/spec/samples/contactmanager/contact_manager_presenter_spec.rb +81 -0
  30. data/spec/samples/tictactoe/tic_tac_toe_spec.rb +263 -0
  31. data/spec/spec_helper.rb +123 -0
  32. metadata +50 -17
  33. data/test/glimmer_constant_test.rb +0 -30
  34. data/test/glimmer_list_data_binding_test.rb +0 -223
  35. data/test/glimmer_shine_data_binding_test.rb +0 -89
  36. data/test/glimmer_tab_item_test.rb +0 -61
  37. data/test/glimmer_table_data_binding_test.rb +0 -122
  38. data/test/glimmer_test.rb +0 -237
  39. data/test/helper.rb +0 -24
  40. data/test/observable_model_test.rb +0 -25
  41. data/test/r_widget_test.rb +0 -52
  42. data/test/samples/contactmanager/contact_manager_presenter_test.rb +0 -81
  43. data/test/samples/tictactoe/tic_tac_toe_test.rb +0 -262
  44. data/test/xml/glimmer_xml_test.rb +0 -163
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d5614f3671026c45846b7f6bfadd538f8ce93b8bddcc8b10407fa3c046b041a1
4
- data.tar.gz: 97450f0a03ea502699b7ecd38ed7444f0f6c6ab9494a6d01d12d7a5986fb7851
3
+ metadata.gz: 33d1e6ed089bc7dd67eee706f264787cda60ebe2fc1c3fdf1697c277ff5adad4
4
+ data.tar.gz: 7c7b23d0827e273289502df018308c7ab383c6e7299e75c6da89a9034113af53
5
5
  SHA512:
6
- metadata.gz: 7168e408c5b7095a7852033a33635bec397681b3211ca64bef8ff7980b7b16ec5bf3123d2f21426b8527849019539333af2d5ecee989df0b3b8eccce8e23090b
7
- data.tar.gz: 6d194c420b0daa51f2e23ceaae47e11c495aabbcf8b6a41b264b3270c5a515a2bfd25924b1582104a1e1f9ee41396b7688b2e5613473638e94e81ea31751cb78
6
+ metadata.gz: 917f8181c1085e246bca952bd4861974081a95486b415e7e6f6c1dcc465776b79ae02ad18b1071f40823c74fdc721186ae5d008a4e1cadd4da2a0da6db40136f
7
+ data.tar.gz: 2011b3eedcb1018624bdb872aef40f5900ba2892e680e5ec23cffd495fea4574fd34a66e9720263a343f4ae30e56a91adba5a87529fe9bcf50408cd0e2548c4d
data/.coveralls.yml ADDED
@@ -0,0 +1 @@
1
+ repo_token: dvAuyH3RuZ3lslleCHAeovxv0kQpFdrsB
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/Gemfile CHANGED
@@ -4,6 +4,8 @@ gem 'facets', '3.1.0'
4
4
  gem 'os', '1.0.0'
5
5
 
6
6
  group :development do
7
+ gem "rspec", "~> 3.5.0"
8
+ gem "rspec-mocks", "~> 3.5.0"
7
9
  gem "rdoc", "~> 2.3.0"
8
10
  gem "bundler", "~> 1.0"
9
11
  gem "jeweler", "~> 2.3.0"
data/README.markdown CHANGED
@@ -1,4 +1,5 @@
1
1
  # Glimmer (The Original One And Only)
2
+ [![Coverage Status](https://coveralls.io/repos/github/AndyObtiva/glimmer/badge.svg?branch=master)](https://coveralls.io/github/AndyObtiva/glimmer?branch=master)
2
3
 
3
4
  Glimmer is a cross-platform Ruby desktop development library. Glimmer's main innovation is a JRuby DSL that enables easy and efficient authoring of desktop application user-interfaces while relying on the robust platform-independent Eclipse SWT library. Glimmer additionally innovates by having built-in desktop UI data-binding support to greatly facilitate synchronizing the UI with domain models. As a result, that achieves true decoupling of object oriented components, enabling developers to solve business problems without worrying about UI concerns, or alternatively drive development UI-first, and then write clean business components test-first afterward.
4
5
 
@@ -25,7 +26,7 @@ Please follow these instructions to make the `glimmer` command available on your
25
26
 
26
27
  Add the following to `Gemfile`:
27
28
  ```
28
- gem 'glimmer', '~> 0.1.5.470'
29
+ gem 'glimmer', '~> 0.1.8.470'
29
30
  ```
30
31
 
31
32
  And, then run:
@@ -37,7 +38,7 @@ bundle install
37
38
 
38
39
  Run this command to get directly:
39
40
  ```
40
- gem install glimmer -v 0.1.5.470
41
+ gem install glimmer -v 0.1.8.470
41
42
  ```
42
43
 
43
44
  ## Usage
@@ -55,6 +56,10 @@ It downloads and sets up the SWT jar whether missing or not.
55
56
  Example 3: `glimmer --setup`
56
57
  This downloads and sets up the SWT jar whether missing or not.
57
58
 
59
+ ## Girb (Glimmer irb)
60
+
61
+ You may run girb instead of standard irb to have SWT preloaded and the Glimmer required and included for quick Glimmer coding/testing.
62
+
58
63
  ## Samples
59
64
 
60
65
  Check the "samples" folder for examples on how to write Glimmer applications.
data/Rakefile CHANGED
@@ -21,18 +21,17 @@ Jeweler::Tasks.new do |gem|
21
21
  gem.description = %Q{JRuby DSL that enables easy and efficient authoring of user-interfaces using the robust platform-independent Eclipse SWT library}
22
22
  gem.email = "andy.am@gmail.com"
23
23
  gem.authors = ["AndyMaleh"]
24
- gem.executables = ['glimmer']
24
+ gem.executables = ['glimmer', 'girb']
25
25
  # dependencies defined in Gemfile
26
26
  end
27
27
  Jeweler::RubygemsDotOrgTasks.new
28
28
 
29
- require 'rake/testtask'
30
- Rake::TestTask.new(:test) do |test|
31
- test.libs << 'lib' << 'samples' << 'test'
32
- test.pattern = 'test/**/*_test.rb'
33
- test.verbose = true
29
+ require 'rspec/core'
30
+ require 'rspec/core/rake_task'
31
+ RSpec::Core::RakeTask.new(:spec) do |spec|
32
+ spec.pattern = FileList['spec/**/*_spec.rb']
34
33
  additional_options = OS.mac? ? "-J-XstartOnFirstThread" : ""
35
- test.ruby_opts = ["#{additional_options} -J-classpath \"#{GlimmerApplication::SWT_JAR_FILE}\" -Xcli.debug=true --debug"]
34
+ spec.ruby_opts = ["#{additional_options} -J-classpath \"#{GlimmerApplication::SWT_JAR_FILE}\" -Xcli.debug=true --debug"]
36
35
  end
37
36
 
38
- task :default => :test
37
+ task :default => :spec
data/TODO.md CHANGED
@@ -2,5 +2,5 @@
2
2
 
3
3
  Here is a list of tasks to do (please delete once done):
4
4
 
5
- * Increase test coverage to 80% (debug failure of test suite despite passing tests)
6
5
  * Support Tree databinding
6
+ * Explore rewriting shine with Ruby 2 support
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.5.470
1
+ 0.1.8.470
data/bin/girb ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ system "irb -r #{File.expand_path(File.join(__FILE__, '..', 'girb_runner.rb'))}"
@@ -0,0 +1,5 @@
1
+ require_relative '../lib/glimmer_application'
2
+ include Java
3
+ $CLASSPATH << GlimmerApplication::SWT_JAR_FILE
4
+ require_relative '../lib/glimmer'
5
+ include Glimmer
data/glimmer.gemspec CHANGED
@@ -2,24 +2,26 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: glimmer 0.1.5.470 ruby lib
5
+ # stub: glimmer 0.1.8.470 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "glimmer".freeze
9
- s.version = "0.1.5.470"
9
+ s.version = "0.1.8.470"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["AndyMaleh".freeze]
14
- s.date = "2017-07-22"
14
+ s.date = "2017-07-23"
15
15
  s.description = "JRuby DSL that enables easy and efficient authoring of user-interfaces using the robust platform-independent Eclipse SWT library".freeze
16
16
  s.email = "andy.am@gmail.com".freeze
17
- s.executables = ["glimmer".freeze]
17
+ s.executables = ["glimmer".freeze, "girb".freeze]
18
18
  s.extra_rdoc_files = [
19
19
  "LICENSE.txt",
20
20
  "README.markdown"
21
21
  ]
22
22
  s.files = [
23
+ ".coveralls.yml",
24
+ ".rspec",
23
25
  ".ruby-gemset",
24
26
  ".ruby-version",
25
27
  "Gemfile",
@@ -28,6 +30,8 @@ Gem::Specification.new do |s|
28
30
  "Rakefile",
29
31
  "TODO.md",
30
32
  "VERSION",
33
+ "bin/girb",
34
+ "bin/girb_runner.rb",
31
35
  "bin/glimmer",
32
36
  "glimmer.gemspec",
33
37
  "images/Bitter-sweet.jpg",
@@ -87,21 +91,21 @@ Gem::Specification.new do |s|
87
91
  "samples/login.rb",
88
92
  "samples/tictactoe/tic_tac_toe.rb",
89
93
  "samples/tictactoe/tic_tac_toe_board.rb",
90
- "test/glimmer_combo_data_binding_test.rb",
91
- "test/glimmer_constant_test.rb",
92
- "test/glimmer_data_binding_test.rb",
93
- "test/glimmer_list_data_binding_test.rb",
94
- "test/glimmer_listeners_test.rb",
95
- "test/glimmer_shine_data_binding_test.rb",
96
- "test/glimmer_tab_item_test.rb",
97
- "test/glimmer_table_data_binding_test.rb",
98
- "test/glimmer_test.rb",
99
- "test/helper.rb",
100
- "test/observable_model_test.rb",
101
- "test/r_widget_test.rb",
102
- "test/samples/contactmanager/contact_manager_presenter_test.rb",
103
- "test/samples/tictactoe/tic_tac_toe_test.rb",
104
- "test/xml/glimmer_xml_test.rb"
94
+ "spec/lib/command_handlers/models/observable_model_spec.rb",
95
+ "spec/lib/command_handlers/models/r_widget_spec.rb",
96
+ "spec/lib/glimmer__combo_data_binding__spec.rb",
97
+ "spec/lib/glimmer__constant__spec.rb",
98
+ "spec/lib/glimmer__data_binding__spec.rb",
99
+ "spec/lib/glimmer__list_data_binding__spec.rb",
100
+ "spec/lib/glimmer__listeners__spec.rb",
101
+ "spec/lib/glimmer__shine_data_binding__spec.rb",
102
+ "spec/lib/glimmer__tab_item__spec.rb",
103
+ "spec/lib/glimmer__table_data_binding__spec.rb",
104
+ "spec/lib/glimmer_spec.rb",
105
+ "spec/lib/xml/glimmer_xml_spec.rb",
106
+ "spec/samples/contactmanager/contact_manager_presenter_spec.rb",
107
+ "spec/samples/tictactoe/tic_tac_toe_spec.rb",
108
+ "spec/spec_helper.rb"
105
109
  ]
106
110
  s.homepage = "http://github.com/AndyObtiva/glimmer".freeze
107
111
  s.licenses = ["MIT".freeze]
@@ -114,6 +118,8 @@ Gem::Specification.new do |s|
114
118
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
115
119
  s.add_runtime_dependency(%q<facets>.freeze, ["= 3.1.0"])
116
120
  s.add_runtime_dependency(%q<os>.freeze, ["= 1.0.0"])
121
+ s.add_development_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
122
+ s.add_development_dependency(%q<rspec-mocks>.freeze, ["~> 3.5.0"])
117
123
  s.add_development_dependency(%q<rdoc>.freeze, ["~> 2.3.0"])
118
124
  s.add_development_dependency(%q<bundler>.freeze, ["~> 1.0"])
119
125
  s.add_development_dependency(%q<jeweler>.freeze, ["~> 2.3.0"])
@@ -123,6 +129,8 @@ Gem::Specification.new do |s|
123
129
  else
124
130
  s.add_dependency(%q<facets>.freeze, ["= 3.1.0"])
125
131
  s.add_dependency(%q<os>.freeze, ["= 1.0.0"])
132
+ s.add_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
133
+ s.add_dependency(%q<rspec-mocks>.freeze, ["~> 3.5.0"])
126
134
  s.add_dependency(%q<rdoc>.freeze, ["~> 2.3.0"])
127
135
  s.add_dependency(%q<bundler>.freeze, ["~> 1.0"])
128
136
  s.add_dependency(%q<jeweler>.freeze, ["~> 2.3.0"])
@@ -133,6 +141,8 @@ Gem::Specification.new do |s|
133
141
  else
134
142
  s.add_dependency(%q<facets>.freeze, ["= 3.1.0"])
135
143
  s.add_dependency(%q<os>.freeze, ["= 1.0.0"])
144
+ s.add_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
145
+ s.add_dependency(%q<rspec-mocks>.freeze, ["~> 3.5.0"])
136
146
  s.add_dependency(%q<rdoc>.freeze, ["~> 2.3.0"])
137
147
  s.add_dependency(%q<bundler>.freeze, ["~> 1.0"])
138
148
  s.add_dependency(%q<jeweler>.freeze, ["~> 2.3.0"])
@@ -37,8 +37,7 @@ class GlimmerApplication
37
37
 
38
38
  if application
39
39
  puts "Starting Glimmer Application #{application}"
40
- additional_options
41
- `ruby #{additional_options} -J-classpath "#{SWT_JAR_FILE}" #{application}`
40
+ system "ruby #{additional_options} -J-classpath \"#{SWT_JAR_FILE}\" #{application}"
42
41
  end
43
42
  end
44
43
 
data/lib/shine.rb CHANGED
@@ -1,21 +1,23 @@
1
- require File.dirname(__FILE__) + "/glimmer"
2
-
3
- class Array
4
- include Glimmer
5
-
6
- alias original_compare <=>
7
-
8
- def <=>(other)
9
- if (self[0].class.name == "RWidget")
10
- add_contents(self[0]) {
11
- if (other.size == 2)
12
- eval("#{self[1]} bind (other[0], other[1])")
13
- elsif (other.size == 3)
14
- eval("#{self[1]} bind (other[0], other[1], other[2])")
15
- end
16
- }
17
- else
18
- original_compare(other)
19
- end
20
- end
21
- end
1
+ ## NOTE: Unsupported in Ruby 2 syntax
2
+ #
3
+ # require File.dirname(__FILE__) + "/glimmer"
4
+ #
5
+ # class Array
6
+ # include Glimmer
7
+ #
8
+ # alias original_compare <=>
9
+ #
10
+ # def <=>(other)
11
+ # if (self[0].class.name == "RWidget")
12
+ # add_contents(self[0]) {
13
+ # if (other.size == 2)
14
+ # eval("#{self[1]} bind (other[0], other[1])")
15
+ # elsif (other.size == 3)
16
+ # eval("#{self[1]} bind (other[0], other[1], other[2])")
17
+ # end
18
+ # }
19
+ # else
20
+ # original_compare(other)
21
+ # end
22
+ # end
23
+ # end
@@ -3,9 +3,9 @@ require File.dirname(__FILE__) + "/xml_visitor"
3
3
 
4
4
  class Node
5
5
  include Parent, Glimmer
6
-
6
+
7
7
  attr_accessor :children, :name, :contents, :attributes, :is_name_space, :is_attribute, :name_space, :parent
8
-
8
+
9
9
  def initialize(parent, name, attributes, &contents)
10
10
  @is_name_space = false
11
11
  @children = []
@@ -21,35 +21,35 @@ class Node
21
21
  if @attributes
22
22
  @attributes.each_key do |attribute|
23
23
  if attribute.is_a?(Node)
24
- attribute.is_attribute = true
24
+ attribute.is_attribute = true
25
25
  attribute.parent.children.delete(attribute) if attribute.parent
26
26
  attribute.parent = nil #attributes do not usually have parents
27
27
  end
28
28
  end
29
- p attributes
29
+ Glimmer.logger.debug(attributes)
30
30
  end
31
31
  end
32
-
32
+
33
33
  def method_missing(symbol, *args, &block)
34
34
  @is_name_space = true
35
35
  parent.children.delete(self) if parent
36
36
  Glimmer.add_contents(self) {@tag = super}
37
37
  @tag
38
38
  end
39
-
39
+
40
40
  def to_xml
41
41
  xml_visitor = XmlVisitor.new
42
42
  DepthFirstSearchIterator.new(self, xml_visitor).iterate
43
43
  xml_visitor.document
44
44
  end
45
-
45
+
46
46
  def process_block(block)
47
47
  return_value = block.call(@widget)
48
48
  if return_value.is_a?(String) and !@children.include?(return_value)
49
49
  text = return_value
50
50
  first_match = text.match(/[#][^{]+[{][^}]+[}]/)
51
51
  match = first_match
52
- while (match)
52
+ while (match)
53
53
  Glimmer.module_eval(text_command(match.pre_match))
54
54
  tag_text = match.to_s
55
55
  Glimmer.module_eval(rubyize(tag_text))
@@ -61,11 +61,11 @@ class Node
61
61
  @children << return_value unless first_match
62
62
  end
63
63
  end
64
-
64
+
65
65
  def text_command(text)
66
66
  "text \"#{text}\""
67
67
  end
68
-
68
+
69
69
  def rubyize(text)
70
70
  text = text.gsub(/[}]/, '"}')
71
71
  text = text.gsub(/[{]/, '{"')
@@ -76,5 +76,5 @@ class Node
76
76
  def id
77
77
  method_missing(:id)
78
78
  end
79
-
79
+
80
80
  end
@@ -1,13 +1,13 @@
1
1
  require File.dirname(__FILE__) + "/node_visitor"
2
2
 
3
3
  class XmlVisitor < NodeVisitor
4
-
4
+
5
5
  attr_reader :document
6
-
6
+
7
7
  def initialize
8
8
  @document = ""
9
9
  end
10
-
10
+
11
11
  def process_before_children(node)
12
12
  if (node.is_a?(String))
13
13
  @document << node
@@ -17,27 +17,27 @@ class XmlVisitor < NodeVisitor
17
17
  append_attributes(node) if node.attributes
18
18
  end_open_tag(node)
19
19
  end
20
-
20
+
21
21
  def process_after_children(node)
22
22
  return if (node.is_a?(String))
23
23
  append_close_tag(node)
24
24
  end
25
-
25
+
26
26
  def begin_open_tag(node)
27
27
  @document << "<"
28
28
  @document << "#{node.name_space.name}:" if node.name_space
29
29
  @document << node.name
30
30
  end
31
-
31
+
32
32
  def end_open_tag(node)
33
- if (node.contents)
33
+ if (node.contents)
34
34
  @document << ">"
35
35
  else
36
36
  @document << " " if node.attributes.keys.size > 0
37
37
  @document << "/>"
38
38
  end
39
39
  end
40
-
40
+
41
41
  def append_close_tag(node)
42
42
  if (node.contents)
43
43
  @document << "</"
@@ -45,15 +45,15 @@ class XmlVisitor < NodeVisitor
45
45
  @document << "#{node.name}>"
46
46
  end
47
47
  end
48
-
48
+
49
49
  def append_attributes(node)
50
50
  Glimmer.logger.debug "Take 3"
51
- p node.attributes
51
+ Glimmer.logger.debug(node.attributes)
52
52
  node.attributes.each_key do |attribute|
53
53
  attribute_name = attribute
54
54
  attribute_name = "#{attribute.name_space.name}:#{attribute.name}" if attribute.is_a?(Node)
55
55
  @document << " #{attribute_name}=\"#{node.attributes[attribute]}\""
56
56
  end
57
57
  end
58
-
59
- end
58
+
59
+ end
@@ -3,20 +3,20 @@ require_relative "tic_tac_toe_board"
3
3
 
4
4
 
5
5
  class TicTacToe
6
-
6
+
7
7
  include_package 'org.eclipse.swt'
8
8
  include_package 'org.eclipse.swt.widgets'
9
9
  include_package 'org.eclipse.swt.layout'
10
-
10
+
11
11
  include Glimmer
12
12
 
13
13
  def initialize
14
14
  @tic_tac_toe_board = TicTacToeBoard.new
15
- @main =
15
+ @main =
16
16
  @shell = shell {
17
17
  text "Tic-Tac-Toe"
18
18
  composite {
19
- layout GridLayout.new(3,true)
19
+ layout GridLayout.new(3,true)
20
20
  (1..3).each { |row_number|
21
21
  (1..3).each { |column_number|
22
22
  button {
@@ -34,20 +34,20 @@ class TicTacToe
34
34
  @tic_tac_toe_board.extend(ObservableModel) #make board an observable model
35
35
  @tic_tac_toe_board.add_observer("game_status", self)
36
36
  end
37
-
38
- def update(game_status)
37
+
38
+ def update(game_status)
39
39
  display_win_message if game_status == TicTacToeBoard::WIN
40
40
  display_draw_message if game_status == TicTacToeBoard::DRAW
41
41
  end
42
-
42
+
43
43
  def display_win_message()
44
44
  display_game_over_message("Player #{@tic_tac_toe_board.winning_sign} has won!")
45
45
  end
46
-
46
+
47
47
  def display_draw_message()
48
48
  display_game_over_message("Draw!")
49
49
  end
50
-
50
+
51
51
  def display_game_over_message(message)
52
52
  message_box = MessageBox.new(@shell.widget)
53
53
  message_box.setText("Game Over")
@@ -55,9 +55,9 @@ class TicTacToe
55
55
  message_box.open
56
56
  @tic_tac_toe_board.reset
57
57
  end
58
-
58
+
59
59
  def open
60
- @main.open
60
+ @main.open
61
61
  end
62
62
  end
63
63