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 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: