ascode 0.5.5 → 0.6.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2c3acce51fa7eec449751f02bba7325fae7ef52c3bff31c6613ffb4850718d60
4
- data.tar.gz: ff07ae63b600f20e2922e9241fb74dd4aafc041570227f6fbcb7a35e7d54d59d
3
+ metadata.gz: 213907cdd00229e60f474d6d67e4daf5b7a3b1ce67b0a7f9973cae5aa83854f2
4
+ data.tar.gz: 91bd1c91592074ee6688f37daa37e4e188ddd8b5b2b302740b7dcbd60ad60af4
5
5
  SHA512:
6
- metadata.gz: b9f08680ca2a5c03067793421c2d22bb786a5bc38a600fa40495a9d28bdc9a8e228183b9f1af696bef11a286b8ae040ed121bb676354e2cf07c701c570181e11
7
- data.tar.gz: bdbcfad01d5c039a6dade2c099ba460f1b8eaf698494c60703a43a400516ce607d6146250ffffaca7e0793bfb22b92012fa6e435270760ae0e43a70392c834a3
6
+ metadata.gz: 71fca1e21167ad4626dd16e703c046021b0c318a453bc80f59dcbfffe66356a6b245caed879692105ae1c6c6840dc951243e952dadd5ade870ff4609c4b2a7c9
7
+ data.tar.gz: 07f068c484bc3060aba51694c125819f08532669a5ff502465983d67bb76622c8af33a451762c2f7a8d0fc55e99160783381de10aa5f005dc72455483c174de1
data/README.md CHANGED
@@ -29,9 +29,10 @@ irb(main):001:0> require "ascode"
29
29
  irb(main):002:0> Ascode.run '"Number: "Oe["Even":"Odd"]O'
30
30
  Number: 10
31
31
  Even
32
- irb(main):003:0> Ascode.run "1.1*"
33
- 5
34
- 5.5
32
+ irb(main):003:0> Ascode.run '"A: "OI"B: "OIS>["A > B":"A <= B"]O'
33
+ A: 10
34
+ B: 5
35
+ A > B
35
36
  ```
36
37
 
37
38
  ### Features
@@ -23,6 +23,13 @@ module Ascode
23
23
  @stack.pop
24
24
  end
25
25
  end
26
+
27
+ def swap
28
+ a = pop false
29
+ b = pop false
30
+ push a
31
+ push b
32
+ end
26
33
  end
27
34
  end
28
35
  end
@@ -25,6 +25,24 @@ module Ascode
25
25
  env.push a * b
26
26
  end
27
27
 
28
+ def self.bigger_than(env)
29
+ a = env.pop
30
+ b = env.pop
31
+ env.push a > b ? 1 : 0
32
+ end
33
+
34
+ def self.less_than(env)
35
+ a = env.pop
36
+ b = env.pop
37
+ env.push a < b ? 1 : 0
38
+ end
39
+
40
+ def self.equal(env)
41
+ a = env.pop
42
+ b = env.pop
43
+ env.push a == b ? 1 : 0
44
+ end
45
+
28
46
  def self.even(env)
29
47
  env.push env.pop.even? ? 1 : 0
30
48
  end
@@ -11,8 +11,9 @@ module Ascode
11
11
  read_csv file
12
12
  end
13
13
 
14
- @csv_data.delete_at 0
15
- @csv_data.delete_at 0
14
+ @csv_data.delete_if do |e|
15
+ e[:short].nil? || e[:short].to_s.length > 1
16
+ end
16
17
  end
17
18
 
18
19
  def parse(char)
@@ -1,16 +1,37 @@
1
+ #### IO
2
+
1
3
  Character|Type|Name|`pop`s|`push`es|Description
2
4
  ---|---|---|---|---|---
3
5
  `I`|`io`|`input`||`a`|`stdin` -> `a`
4
6
  `O`|`io`|`output`|`a`||`a` -> `stdout`
5
7
  `N`|`io`|`new_line`|||`\n` -> `stdout`
8
+
9
+ #### Environment
10
+
11
+ Character|Type|Name|`pop`s|`push`es|Description
12
+ ---|---|---|---|---|---
6
13
  `P`|`env`|`pop`|`a`||
7
- `[`|`condition`|`begin`|`a`|| If `a` = `0`, `nil` or `false`, then part after `:` is executed
14
+ `S`|`env`|`swap`|`a`, `b`|`a`, `b`|Swaps first two elements in the stack
15
+
16
+ #### Condition
17
+
18
+ Character|Type|Name|`pop`s|`push`es|Description
19
+ ---|---|---|---|---|---
20
+ `[`|`condition`|`begin`|`a`|| Condition is false if `a` = `0` or `false`
8
21
  `:`|`condition`|`else`|||
9
- `]`|`condition`|`end`|||
22
+ `]`|`condition`|`end`|||
23
+
24
+ #### Math
25
+
26
+ Character|Type|Name|`pop`s|`push`es|Description
27
+ ---|---|---|---|---|---
10
28
  `+`|`math`|`plus`|`a`, `b`|`c`|`c` = `a` + `b`
11
29
  `-`|`math`|`minus`|`a`, `b`|`c`|`c` = `a` - `b`
12
30
  `/`|`math`|`divide`|`a`, `b`|`c`|`c` = `a` / `b`
13
31
  `*`|`math`|`multiply`|`a`, `b`|`c`|`c` = `a` * `b`
32
+ `>`|`math`|`bigger_than`|`a`, `b`|`c`|`c` = `1` if `a` > `b`, `0` otherwise
33
+ `<`|`math`|`less_than`|`a`, `b`|`c`|`c` = `1` if `a` < `b`, `0` otherwise
34
+ `=`|`math`|`equal`|`a`, `b`|`c`|`c` = `1` if `a` = `b`, `0` otherwise
14
35
  `e`|`math`|`even`|`a`|`b`|`b` = `1` if `a` is even, `0` otherwise
15
36
  `!`|`math`|`invert`|`a`|`b`|`b` = `1` if `a` = `0`, otherwise `0`
16
37
  `s`|`math`|`change_sign`|`a`|`b`|`b` = `-1` * `a`
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ascode
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artem Varaksa