kapusta 0.9.0 → 0.11.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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -2
  3. data/bin/check-all +17 -0
  4. data/bin/compile-examples +70 -0
  5. data/bin/fennel-parity +4 -38
  6. data/examples/account-lockout.kap +11 -0
  7. data/examples/accumulator.kap +2 -0
  8. data/examples/bank-account.kap +2 -0
  9. data/examples/bst-iterator.kap +52 -0
  10. data/examples/circle.kap +18 -0
  11. data/examples/convert-temperature.kap +14 -0
  12. data/examples/count-effects.kap +13 -0
  13. data/examples/counter.kap +2 -0
  14. data/examples/falling-drops.kap +12 -0
  15. data/examples/fennel-parity-examples.txt +40 -0
  16. data/examples/hit-counter.kap +2 -0
  17. data/examples/max-achievable.kap +8 -0
  18. data/examples/module-header.kap +4 -2
  19. data/examples/mruby-runtime-examples.txt +92 -0
  20. data/examples/number-of-1-bits.kap +13 -0
  21. data/examples/number-of-steps.kap +15 -0
  22. data/examples/parking-system.kap +2 -0
  23. data/examples/recent-counter.kap +17 -0
  24. data/examples/scopes.kap +2 -0
  25. data/examples/signal-harvest.kap +16 -0
  26. data/examples/stack.kap +2 -0
  27. data/examples/two-sum-hash.kap +11 -14
  28. data/examples/underscore-patterns.kap +1 -1
  29. data/examples/valid-parentheses-1.kap +2 -0
  30. data/lib/kapusta/cli.rb +11 -6
  31. data/lib/kapusta/compiler/emitter/bindings.rb +27 -2
  32. data/lib/kapusta/compiler/emitter/control_flow.rb +97 -14
  33. data/lib/kapusta/compiler/emitter/expressions.rb +1 -0
  34. data/lib/kapusta/compiler/emitter/interop.rb +4 -2
  35. data/lib/kapusta/compiler/emitter/patterns.rb +125 -0
  36. data/lib/kapusta/compiler/emitter/support.rb +63 -24
  37. data/lib/kapusta/compiler/emitter.rb +2 -1
  38. data/lib/kapusta/compiler/normalizer.rb +6 -0
  39. data/lib/kapusta/compiler.rb +15 -6
  40. data/lib/kapusta/errors.rb +6 -0
  41. data/lib/kapusta/formatter.rb +1 -2
  42. data/lib/kapusta/lsp/definition.rb +17 -0
  43. data/lib/kapusta/lsp/rename.rb +3 -1
  44. data/lib/kapusta/lsp/scope_walker.rb +40 -11
  45. data/lib/kapusta/lsp.rb +2 -1
  46. data/lib/kapusta/version.rb +1 -1
  47. data/lib/kapusta.rb +2 -2
  48. data/spec/cli_spec.rb +35 -0
  49. data/spec/examples_errors_spec.rb +20 -0
  50. data/spec/examples_spec.rb +136 -0
  51. data/spec/lsp_spec.rb +71 -3
  52. data/spec/spec_helper.rb +9 -0
  53. metadata +14 -1
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kapusta
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evgenii Morozov
@@ -26,6 +26,7 @@ files:
26
26
  - bin/console
27
27
  - bin/fennel-parity
28
28
  - bin/setup
29
+ - examples/account-lockout.kap
29
30
  - examples/accumulator.kap
30
31
  - examples/ackermann.kap
31
32
  - examples/anagram.kap
@@ -37,10 +38,14 @@ files:
37
38
  - examples/binary-to-decimal.kap
38
39
  - examples/block-sort.kap
39
40
  - examples/blocks-and-kwargs.kap
41
+ - examples/bst-iterator.kap
40
42
  - examples/calc.kap
43
+ - examples/circle.kap
41
44
  - examples/classify-wallet.kap
42
45
  - examples/climbing-stairs.kap
43
46
  - examples/contains-duplicate.kap
47
+ - examples/convert-temperature.kap
48
+ - examples/count-effects.kap
44
49
  - examples/counter.kap
45
50
  - examples/describe.kap
46
51
  - examples/destructure.kap
@@ -50,6 +55,8 @@ files:
50
55
  - examples/even-squares.kap
51
56
  - examples/exceptions.kap
52
57
  - examples/factorial.kap
58
+ - examples/falling-drops.kap
59
+ - examples/fennel-parity-examples.txt
53
60
  - examples/fib.kap
54
61
  - examples/files.kap
55
62
  - examples/fizzbuzz.kap
@@ -74,10 +81,14 @@ files:
74
81
  - examples/majority-element.kap
75
82
  - examples/manhattan-distance.kap
76
83
  - examples/match.kap
84
+ - examples/max-achievable.kap
77
85
  - examples/maximum-subarray.kap
78
86
  - examples/min-max.kap
79
87
  - examples/module-header.kap
80
88
  - examples/move-zeroes.kap
89
+ - examples/mruby-runtime-examples.txt
90
+ - examples/number-of-1-bits.kap
91
+ - examples/number-of-steps.kap
81
92
  - examples/or-patterns.kap
82
93
  - examples/packet-router.kap
83
94
  - examples/palindrome.kap
@@ -91,6 +102,7 @@ files:
91
102
  - examples/power-of-three.kap
92
103
  - examples/primes.kap
93
104
  - examples/raindrops.kap
105
+ - examples/recent-counter.kap
94
106
  - examples/record.kap
95
107
  - examples/regex.kap
96
108
  - examples/reverse-integer.kap
@@ -100,6 +112,7 @@ files:
100
112
  - examples/scopes.kap
101
113
  - examples/shapes.kap
102
114
  - examples/shared-macros.kapm
115
+ - examples/signal-harvest.kap
103
116
  - examples/single-number.kap
104
117
  - examples/squares.kap
105
118
  - examples/stack.kap