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 +4 -4
- data/README.md +7 -2
- data/VERSION +1 -1
- data/lib/glimmer-cs-calculator.rb +1 -1
- data/lib/models/glimmer/calculator/command/all_clear.rb +1 -1
- data/lib/models/glimmer/calculator/command/equals.rb +2 -2
- data/lib/models/glimmer/calculator/command/operation.rb +17 -2
- data/lib/models/glimmer/calculator/command/operation/add.rb +2 -13
- data/lib/models/glimmer/calculator/command/operation/divide.rb +2 -13
- data/lib/models/glimmer/calculator/command/operation/multiply.rb +2 -13
- data/lib/models/glimmer/calculator/command/operation/subtract.rb +2 -13
- data/lib/models/glimmer/calculator/presenter.rb +10 -2
- data/lib/views/glimmer/calculator.rb +7 -7
- metadata +10 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6fc5d5bcc6de0a60924fde4949c34debaf42ba58432eb721b96929e660fb527a
|
4
|
+
data.tar.gz: a7d4865112d117fcd48d387455512eceb4541082aa6f0b8a80503b9043075bee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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.
|
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.
|
1
|
+
1.0.1
|
@@ -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
|
-
|
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
|
-
|
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
|
19
|
-
|
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
|
19
|
-
|
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
|
9
|
-
|
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
|
19
|
-
|
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
|
-
|
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.
|
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-
|
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.
|
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.
|
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.
|
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.
|
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:
|