calculate-bot 0.0.2 → 0.0.3

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/calculate-bot.rb +51 -7
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a90de87ac5f71eee2614dae47a1c38651e827a83
4
- data.tar.gz: 9ea98ef1e965f46a8e8711ce0e5d3f6ac0d588dc
3
+ metadata.gz: e59b83fa001831ec4e00441e1d4ffd96a63db444
4
+ data.tar.gz: 250f2e74d97ba8b66f3db2e031329ba9f7b5c8d8
5
5
  SHA512:
6
- metadata.gz: 554298d0928d101330e1c41c798b1dab7b5f23005725c4dbd742bdb86b2ad80fcfc067c2f90cdead14646fc0fd489a0bb33f826ee8156729a9b6b6e0097130a4
7
- data.tar.gz: d9a12f15c99fd5f9be3caa2d683ccb2031df7bb91a11e6197d683444ce3f9cf103cbea6c510e5af273eb231cab0e6e4d9c38dec0a5685f6a812b047082b5da47
6
+ metadata.gz: 0c52cd77ae07128d74297813d554e1479848c1b06c423797d2c5959cc396e9c2aacd6a522aeadc0b8e66a47696f3405ccd6c83bac4e8958faee857e9dede4c0f
7
+ data.tar.gz: 4e3138459df1a4246334d61a488bcb91674baff6ae84500ca60da40248a3a169a938d0bd37ae1e8d0210e3988532efd09fabd9835461c77fc025b78c256be7e6
@@ -2,9 +2,10 @@ class CalculateBot
2
2
 
3
3
  def self.compute(expression)
4
4
  enable = true
5
+ expression.gsub!("!", "!")
5
6
  expression = expression.chars.reject { |c| c == ' ' }.join('')
6
7
  expression.chars.each do |c|
7
- if !"+-*/0123456789(). !%^cgilnops".include?(c)
8
+ if !"+-*/0123456789(). !%^acdgilnoprst".include?(c)
8
9
  enable = false
9
10
  break
10
11
  end
@@ -14,6 +15,7 @@ class CalculateBot
14
15
 
15
16
  result = compute_sub(expression)
16
17
  return {:status => :no_result} if result == nil
18
+ return {:status => :too_big_result} if result == :too_big_result
17
19
 
18
20
  {:status => :normal, :result => result.to_s }
19
21
  end
@@ -27,13 +29,17 @@ class CalculateBot
27
29
  if expression[-1] == '!'
28
30
  number = check_number expression[0..-2]
29
31
 
30
- if number != nil
31
- ret = 1
32
- (1..number).each do |n|
33
- ret = ret * n
34
- end
32
+ if number != nil
33
+ if number > 200
34
+ return :too_big_result
35
+ else
36
+ ret = 1
37
+ (1..number).each do |n|
38
+ ret = ret * n
39
+ end
35
40
 
36
- return ret
41
+ return ret
42
+ end
37
43
  end
38
44
  end
39
45
 
@@ -95,6 +101,44 @@ class CalculateBot
95
101
  def self.check_number(expression)
96
102
  if expression == 'pi'
97
103
  return 3.14159265359
104
+ elsif expression == 'rand'
105
+ r = Random.new
106
+ return r.rand(0..999) / 1000
107
+ elsif expression.index('log(') == 0 and expression.rindex(')') == expression.length - 1
108
+ inside = check_number(expression[4..-2])
109
+ if inside != nil
110
+ return Math.log10(inside)
111
+ else
112
+ return nil
113
+ end
114
+ elsif expression.index('ln(') == 0 and expression.rindex(')') == expression.length - 1
115
+ inside = check_number(expression[3..-2])
116
+ if inside != nil
117
+ return Math.log(inside)
118
+ else
119
+ return nil
120
+ end
121
+ elsif expression.index('sin(') == 0 and expression.rindex(')') == expression.length - 1
122
+ inside = check_number(expression[4..-2])
123
+ if inside != nil
124
+ return Math.sin(inside)
125
+ else
126
+ return nil
127
+ end
128
+ elsif expression.index('cos(') == 0 and expression.rindex(')') == expression.length - 1
129
+ inside = check_number(expression[4..-2])
130
+ if inside != nil
131
+ return Math.cos(inside)
132
+ else
133
+ return nil
134
+ end
135
+ elsif expression.index('tan(') == 0 and expression.rindex(')') == expression.length - 1
136
+ inside = check_number(expression[4..-2])
137
+ if inside != nil
138
+ return Math.tan(inside)
139
+ else
140
+ return nil
141
+ end
98
142
  end
99
143
 
100
144
  index = expression.rindex('^')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: calculate-bot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jianfeng Tu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-11 00:00:00.000000000 Z
11
+ date: 2015-06-20 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A calculator lib for computing result from string
14
14
  email: tujf.cn@gmail.com