glimmer-cs-calculator 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|