From e9d19338a908987f63c51f7a0b9c3bf4b32774dc Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alexis=20Laferri=C3=A8re?= Date: Sun, 1 May 2016 15:10:44 -0400 Subject: [PATCH] calculator: use Unicode strings instead of single chars for operators MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Alexis Laferrière --- examples/calculator/src/calculator.nit | 8 +++---- examples/calculator/src/calculator_logic.nit | 24 ++++++++++----------- examples/calculator/src/calculator_test.nit | 30 +++++++++++++------------- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/examples/calculator/src/calculator.nit b/examples/calculator/src/calculator.nit index 76c3a0a..c049d21 100644 --- a/examples/calculator/src/calculator.nit +++ b/examples/calculator/src/calculator.nit @@ -66,8 +66,8 @@ class CalculatorWindow # All the button labels, row by row var rows = [["7", "8", "9", "+"], ["4", "5", "6", "-"], - ["1", "2", "3", "*"], - ["0", ".", "C", "/"], + ["1", "2", "3", "×"], + ["0", ".", "C", "÷"], ["="]] for row in rows do @@ -94,9 +94,9 @@ class CalculatorWindow else if op.is_numeric then var n = op.to_i context.push_digit n - else + else if op != null then buttons["."].enabled = true - context.push_op op.chars.first + context.push_op op end display.text = context.display_text diff --git a/examples/calculator/src/calculator_logic.nit b/examples/calculator/src/calculator_logic.nit index e5e492b..249962c 100644 --- a/examples/calculator/src/calculator_logic.nit +++ b/examples/calculator/src/calculator_logic.nit @@ -25,7 +25,7 @@ class CalculatorContext var result: nullable Numeric = null # Last operation pushed with `push_op`, to be executed on the next push - var last_op: nullable Char = null + var last_op: nullable Text = null # Value currently being entered var current: nullable FlatBuffer = null @@ -39,15 +39,15 @@ class CalculatorContext var buf = new FlatBuffer - if result != null and (current == null or last_op != '=') then - if last_op == '=' then buf.append "= " + if result != null and (current == null or last_op != "=") then + if last_op == "=" then buf.append "= " buf.append result.to_s buf.add ' ' end - if last_op != null and last_op != '=' then - buf.add last_op + if last_op != null and last_op != "=" then + buf.append last_op buf.add ' ' end @@ -60,10 +60,10 @@ class CalculatorContext end # Push operation `op`, will usually execute the last operation - fun push_op(op: Char) + fun push_op(op: Text) do apply_last_op_if_any - if op == 'C' then + if op == "C" then self.result = null last_op = null else @@ -82,7 +82,7 @@ class CalculatorContext current.add digit.to_s.chars.first self.current = current - if last_op == '=' then + if last_op == "=" then self.result = null last_op = null end @@ -110,13 +110,13 @@ class CalculatorContext if op == null then result = current.to_n else if result != null then - if op == '+' then + if op == "+" then result = result.add(current.to_n) - else if op == '-' then + else if op == "-" then result = result.sub(current.to_n) - else if op == '/' then + else if op == "/" or op == "÷" then result = result.div(current.to_n) - else if op == '*' then + else if op == "*" or op == "×" then result = result.mul(current.to_n) end end diff --git a/examples/calculator/src/calculator_test.nit b/examples/calculator/src/calculator_test.nit index 270854c..610b7a9 100644 --- a/examples/calculator/src/calculator_test.nit +++ b/examples/calculator/src/calculator_test.nit @@ -23,11 +23,11 @@ import calculator_logic var context = new CalculatorContext context.push_digit( 1 ) context.push_digit( 2 ) -context.push_op( '+' ) +context.push_op( "+" ) context.push_digit( 3 ) -context.push_op( '*' ) +context.push_op( "*" ) context.push_digit( 2 ) -context.push_op( '=' ) +context.push_op( "=" ) var r = context.result assert r == 30 else print r or else "-" @@ -36,16 +36,16 @@ context.push_digit( 1 ) context.push_digit( 4 ) context.switch_to_decimals context.push_digit( 1 ) -context.push_op( '*' ) +context.push_op( "*" ) context.push_digit( 3 ) -context.push_op( '=' ) +context.push_op( "=" ) r = context.result assert r == 42.3 else print r or else "-" -context.push_op( '+' ) +context.push_op( "+" ) context.push_digit( 1 ) context.push_digit( 1 ) -context.push_op( '=' ) +context.push_op( "=" ) r = context.result assert r == 53.3 else print r or else "-" @@ -54,9 +54,9 @@ context.push_digit( 4 ) context.push_digit( 2 ) context.switch_to_decimals context.push_digit( 3 ) -context.push_op( '/' ) +context.push_op( "/" ) context.push_digit( 3 ) -context.push_op( '=' ) +context.push_op( "=" ) r = context.result assert r == 14.1 else print r or else "-" @@ -68,20 +68,20 @@ context.switch_to_decimals context.push_digit( 1 ) context.push_digit( 2 ) context.push_digit( 3 ) -context.push_op( '+' ) +context.push_op( "+" ) context.push_digit( 1 ) -context.push_op( '=' ) +context.push_op( "=" ) r = context.result assert r == 51.123 else print r or else "-" -#test 'C' button +#test "C" button context = new CalculatorContext context.push_digit( 1 ) context.push_digit( 0 ) -context.push_op( '+' ) +context.push_op( "+" ) context.push_digit( 1 ) context.push_digit( 0 ) -context.push_op( '=' ) -context.push_op( 'C' ) +context.push_op( "=" ) +context.push_op( "C" ) r = context.result assert r == null else print r -- 1.7.9.5