glimmer-cs-calculator 1.0.0 → 1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1181ebd61993301957b214666f187c7ecf1be2aea7bb288aa6abb67ddc664225
4
- data.tar.gz: 170e6809beb9a4b6dca428a8cd83f9772d496e54ab1a8a92a15982704ffcfa14
3
+ metadata.gz: 6fc5d5bcc6de0a60924fde4949c34debaf42ba58432eb721b96929e660fb527a
4
+ data.tar.gz: a7d4865112d117fcd48d387455512eceb4541082aa6f0b8a80503b9043075bee
5
5
  SHA512:
6
- metadata.gz: 38d88bed477197cfd91b52eeac642ae31ccecdcf56df7324f1e6bbd009c15db28038486df02921ddbdcb36cf0f3858799b09dee26691c601995283e5a131c7f8
7
- data.tar.gz: 7680cbdd1555d5db2e55a2724807ad7812ca943a879bd873115150bf342d4e5d88b0845ac5dbf8ff4ac2e1d2273bc777336b0e12322c6143da73b8a207ae5aac
6
+ metadata.gz: 74bebf88eca7828bd6591fe511d3690efa032e7c4e00a18212387df3f60b6ebeaedb3d27dffc2bd24413ac41b0de8396402af83a1d5a2f1b381f8e6340f147ad
7
+ data.tar.gz: 2c38aea957bf1251614240a4fffaaac68bb87282ddf4fd7004a1c85d877aafa528e874bc14fbcf8a45a1d14eb0c1f99e1429a2cfda4d1f71c51afa8e8972b535
data/README.md CHANGED
@@ -12,7 +12,7 @@ Follows the MVP architectural pattern (Model View Presenter) thanks to [Glimmer
12
12
 
13
13
  ## Platforms
14
14
 
15
- - Mac: Tested and [packaged](https://github.com/AndyObtiva/glimmer#packaging--distribution) for the Mac. ([Download Here<img alt="Glimmer Calculator Icon" src="glimmer-cs-calculator-icon.png" width="30" />](https://www.dropbox.com/s/tdgwt2vfxfh13ro/Glimmer%20Calculator-1.0.0.dmg?dl=1))
15
+ - Mac: Tested and [packaged](https://github.com/AndyObtiva/glimmer#packaging--distribution) for the Mac. ([Download Here<img alt="Glimmer Calculator Icon" src="glimmer-cs-calculator-icon.png" width="30" />](https://www.dropbox.com/s/tdgwt2vfxfh13ro/Glimmer%20Calculator-1.0.1.dmg?dl=1))
16
16
  - Linux: Not tested/packaged for Linux, but should work by following setup instructions below.
17
17
  - Windows: Not tested/packaged for Windows, but should work by following setup instructions below.
18
18
 
@@ -43,7 +43,7 @@ To reuse Calculator as a Glimmer Custom Shell inside another Glimmer application
43
43
  following to the application's `Gemfile`:
44
44
 
45
45
  ```
46
- gem 'glimmer-cs-calculator', '1.0.0'
46
+ gem 'glimmer-cs-calculator', '1.0.1'
47
47
  ```
48
48
 
49
49
  Run:
@@ -54,6 +54,11 @@ jruby -S bundle
54
54
 
55
55
  And, then instantiate the Calculator custom shell in your Glimmer application via the `calculator` Glimmer DSL keyword.
56
56
 
57
+ ## Change Log
58
+
59
+ - 1.0.1: Upgraded to glimmer-dsl-swt v0.1.0 / added delete/backspace shortcut for AC / fixed issues with pressing operations without any number
60
+ - 1.0.0: Initial calculator implementation
61
+
57
62
  ## Contributing to glimmer-cs-calculator
58
63
 
59
64
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.0.1
@@ -1,4 +1,4 @@
1
1
  $LOAD_PATH.unshift(File.expand_path('..', __FILE__))
2
2
 
3
- require 'glimmer'
3
+ require 'glimmer-dsl-swt'
4
4
  require 'views/glimmer/calculator'
@@ -2,7 +2,7 @@ module Glimmer
2
2
  class Calculator
3
3
  class Command
4
4
  class AllClear < Command
5
- keywords 'AC', 'c', 'C', 27.chr
5
+ keywords 'AC', 'c', 'C', 8.chr, 27.chr, 127.chr
6
6
 
7
7
  def execute
8
8
  self.result = '0'
@@ -5,11 +5,11 @@ module Glimmer
5
5
  keywords '=', "\r"
6
6
 
7
7
  def execute
8
- if operation
8
+ if number1 && number2 && operation
9
9
  self.result = operation.calculate.to_s
10
10
  self.number1 = self.result
11
11
  else
12
- self.result = last_result
12
+ self.result = last_result || '0'
13
13
  end
14
14
  end
15
15
  end
@@ -2,9 +2,24 @@ module Glimmer
2
2
  class Calculator
3
3
  class Command
4
4
  class Operation < Command
5
- # Calculate operation result using number1 and number2 attributes
5
+ def execute
6
+ if number1 && number2 && operation && !last_command.equals?
7
+ self.result = operation.calculate.to_s
8
+ self.number1 = self.result
9
+ else
10
+ self.result = last_result || '0'
11
+ self.operation = self
12
+ end
13
+ end
14
+
6
15
  def calculate
7
- raise 'Not implemented! A subclass must implement to calculate operation using number1 and number2 attributes'
16
+ calculation_result = number1.send(operation_method, number2)
17
+ calculation_result.to_s.match(/\.0+$/) ? calculation_result.to_i : calculation_result
18
+ end
19
+
20
+ # Subclasses must implement to indicate operation method on number (e.g. :+ for addition)
21
+ def operation_method
22
+ raise 'Not implemented!'
8
23
  end
9
24
  end
10
25
  end
@@ -4,20 +4,9 @@ module Glimmer
4
4
  class Operation < Command
5
5
  class Add < Operation
6
6
  keyword '+'
7
-
8
- def execute
9
- if number2 && operation && !last_command.equals?
10
- self.result = operation.calculate.to_s
11
- self.number1 = self.result
12
- else
13
- self.result = last_result
14
- self.operation = self
15
- end
16
- end
17
7
 
18
- def calculate
19
- calculation_result = number1 + number2
20
- calculation_result.to_s.match(/\.0+$/) ? calculation_result.to_i : calculation_result
8
+ def operation_method
9
+ :+
21
10
  end
22
11
  end
23
12
  end
@@ -4,20 +4,9 @@ module Glimmer
4
4
  class Operation < Command
5
5
  class Divide < Operation
6
6
  keywords '÷', '/'
7
-
8
- def execute
9
- if number2 && operation && !last_command.equals?
10
- self.result = operation.calculate.to_s
11
- self.number1 = self.result
12
- else
13
- self.result = last_result
14
- self.operation = self
15
- end
16
- end
17
7
 
18
- def calculate
19
- calculation_result = number1 / number2
20
- calculation_result.to_s.match(/\.0+$/) ? calculation_result.to_i : calculation_result #TODO consider moving this to result= method in Command
8
+ def operation_method
9
+ :/
21
10
  end
22
11
  end
23
12
  end
@@ -5,19 +5,8 @@ module Glimmer
5
5
  class Multiply < Operation
6
6
  keywords '×', '*'
7
7
 
8
- def execute
9
- if number2 && operation && !last_command.equals?
10
- self.result = operation.calculate.to_s
11
- self.number1 = self.result
12
- else
13
- self.result = last_result
14
- self.operation = self
15
- end
16
- end
17
-
18
- def calculate
19
- calculation_result = number1 * number2
20
- calculation_result.to_s.match(/\.0+$/) ? calculation_result.to_i : calculation_result
8
+ def operation_method
9
+ :*
21
10
  end
22
11
  end
23
12
  end
@@ -4,20 +4,9 @@ module Glimmer
4
4
  class Operation < Command
5
5
  class Subtract < Operation
6
6
  keywords '−', '-'
7
-
8
- def execute
9
- if number2 && operation && !last_command.equals?
10
- self.result = operation.calculate.to_s
11
- self.number1 = self.result
12
- else
13
- self.result = last_result
14
- self.operation = self
15
- end
16
- end
17
7
 
18
- def calculate
19
- calculation_result = number1 - number2
20
- calculation_result.to_s.match(/\.0+$/) ? calculation_result.to_i : calculation_result
8
+ def operation_method
9
+ :-
21
10
  end
22
11
  end
23
12
  end
@@ -3,15 +3,23 @@ require 'models/glimmer/calculator/command'
3
3
  module Glimmer
4
4
  class Calculator
5
5
  class Presenter
6
+ FORMATTER = {
7
+ nil => '0',
8
+ 'NaN' => 'Not a number'
9
+ }
10
+
6
11
  attr_accessor :result
7
12
 
8
13
  def initialize
9
14
  self.result = '0'
10
15
  end
11
-
16
+
12
17
  def press(button)
13
18
  command = Command.for(button)
14
- self.result = command.result if command
19
+ if command
20
+ new_result = command.result
21
+ self.result = FORMATTER[new_result] || new_result
22
+ end
15
23
  end
16
24
  end
17
25
  end
@@ -25,6 +25,13 @@ module Glimmer
25
25
  @button_font_big = {height: 28}
26
26
  Display.setAppName('Glimmer Calculator')
27
27
  @display = display {
28
+ on_about {
29
+ display_about_dialog
30
+ }
31
+ on_preferences {
32
+ # No need for preferences. Just display about dialog.
33
+ display_about_dialog
34
+ }
28
35
  on_event_keydown { |key_event|
29
36
  char = key_event.character.chr rescue nil
30
37
  @presenter.press(char)
@@ -47,13 +54,6 @@ module Glimmer
47
54
  minimum_size 320, 240
48
55
  text "Glimmer - Calculator"
49
56
  grid_layout 4, true
50
- on_about {
51
- display_about_dialog
52
- }
53
- on_preferences {
54
- # No need for preferences. Just display about dialog.
55
- display_about_dialog
56
- }
57
57
  # Setting styled_text to multi in order for alignment options to activate
58
58
  styled_text(:multi, :wrap, :border) {
59
59
  text bind(@presenter, :result)
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimmer-cs-calculator
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Maleh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-30 00:00:00.000000000 Z
11
+ date: 2020-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: 0.7.7
19
- name: glimmer
18
+ version: 0.1.1
19
+ name: glimmer-dsl-swt
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.7.7
26
+ version: 0.1.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
@@ -83,34 +83,21 @@ dependencies:
83
83
  - !ruby/object:Gem::Dependency
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - "~>"
86
+ - - ">="
87
87
  - !ruby/object:Gem::Version
88
- version: 0.1.6
88
+ version: 0.2.0
89
89
  name: glimmer-cs-gladiator
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: 0.1.6
97
- - !ruby/object:Gem::Dependency
98
- requirement: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: 0.8.1
103
- name: puts_debuggerer
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
94
+ - - ">="
109
95
  - !ruby/object:Gem::Version
110
- version: 0.8.1
96
+ version: 0.2.0
111
97
  description: Calculator - Glimmer Custom Shell
112
98
  email: andy.am@gmail.com
113
99
  executables:
100
+ - glimmer-cs-calculator
114
101
  - calculator
115
102
  extensions: []
116
103
  extra_rdoc_files: