crisp 0.0.5 → 0.0.7

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 (41) hide show
  1. data/CHANGELOG.md +10 -2
  2. data/README.md +2 -1
  3. data/Rakefile +2 -2
  4. data/autotest/discover.rb +1 -0
  5. data/crisp.gemspec +32 -8
  6. data/examples/fibonacci.crisp +6 -0
  7. data/lib/crisp.rb +3 -1
  8. data/lib/crisp/chained_env.rb +13 -0
  9. data/lib/crisp/crisp.treetop +23 -15
  10. data/lib/crisp/env.rb +7 -0
  11. data/lib/crisp/function.rb +6 -42
  12. data/lib/crisp/function_runner.rb +37 -0
  13. data/lib/crisp/functions.rb +5 -3
  14. data/lib/crisp/functions/arithmetic.rb +64 -9
  15. data/lib/crisp/functions/core.rb +80 -18
  16. data/lib/crisp/native_call_invoker.rb +16 -0
  17. data/lib/crisp/nodes.rb +30 -59
  18. data/lib/crisp/nodes/array_literal.rb +21 -0
  19. data/lib/crisp/nodes/base.rb +22 -0
  20. data/lib/crisp/nodes/block.rb +22 -0
  21. data/lib/crisp/nodes/false_literal.rb +11 -0
  22. data/lib/crisp/nodes/float_literal.rb +11 -0
  23. data/lib/crisp/nodes/integer_literal.rb +11 -0
  24. data/lib/crisp/nodes/nil_literal.rb +11 -0
  25. data/lib/crisp/nodes/operation.rb +20 -0
  26. data/lib/crisp/nodes/primitive.rb +16 -0
  27. data/lib/crisp/nodes/string_literal.rb +11 -0
  28. data/lib/crisp/nodes/symbol_literal.rb +15 -0
  29. data/lib/crisp/nodes/true_literal.rb +11 -0
  30. data/lib/crisp/parser.rb +7 -0
  31. data/lib/crisp/runtime.rb +7 -0
  32. data/lib/crisp/shell.rb +4 -0
  33. data/spec/crisp/arithmetics_spec.rb +39 -11
  34. data/spec/crisp/basic_spec.rb +7 -72
  35. data/spec/crisp/core_spec.rb +83 -0
  36. data/spec/crisp/function_spec.rb +49 -0
  37. data/spec/crisp/internal_spec.rb +60 -0
  38. data/spec/crisp/native_call_invoker_spec.rb +23 -0
  39. data/spec/crisp/string_spec.rb +1 -1
  40. data/spec/spec_helper.rb +2 -0
  41. metadata +34 -10
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe "NativeCallInvoker functionality" do
4
+ include Crisp::SpecHelper
5
+
6
+ it "should execute String#reverse probably" do
7
+ evaluate('(. reverse "foobar")').should == 'raboof'
8
+ end
9
+
10
+ it "should execute Array#first probably" do
11
+ evaluate('(. first [1 2 3])').should == 1
12
+ end
13
+
14
+ it "should execute Array#first(n) probably" do
15
+ evaluate('(. first [1 2 3] 2)').should == [1,2]
16
+ end
17
+
18
+ it "should raise a named exception on invalid method" do
19
+ lambda do
20
+ evaluate('(. foo "bar")')
21
+ end.should raise_error(NoMethodError, %q{undefined method `foo' for "bar":String})
22
+ end
23
+ end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "when evaluating string expressions, the language" do
3
+ describe "string functionality" do
4
4
  include Crisp::SpecHelper
5
5
 
6
6
  it "should concat strings" do
data/spec/spec_helper.rb CHANGED
@@ -8,6 +8,8 @@ SPEC_ROOT = Pathname(__FILE__).dirname.expand_path
8
8
 
9
9
  require SPEC_ROOT.parent + 'lib/crisp'
10
10
 
11
+ # Helper module for including into the specs,
12
+ # to parse and evaluate crisp code easily.
11
13
  module Crisp
12
14
  module SpecHelper
13
15
  def parse(expr)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crisp
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 17
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 5
10
- version: 0.0.5
9
+ - 7
10
+ version: 0.0.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - Markus Gerdes
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-11-29 00:00:00 +01:00
18
+ date: 2010-12-17 00:00:00 +01:00
19
19
  default_executable: crisp
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -26,12 +26,12 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- hash: 7
29
+ hash: 21
30
30
  segments:
31
31
  - 1
32
32
  - 4
33
- - 0
34
- version: 1.4.0
33
+ - 9
34
+ version: 1.4.9
35
35
  type: :runtime
36
36
  version_requirements: *id001
37
37
  - !ruby/object:Gem::Dependency
@@ -42,12 +42,12 @@ dependencies:
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- hash: 7
45
+ hash: 3
46
46
  segments:
47
47
  - 2
48
- - 2
48
+ - 3
49
49
  - 0
50
- version: 2.2.0
50
+ version: 2.3.0
51
51
  type: :development
52
52
  version_requirements: *id002
53
53
  description:
@@ -64,23 +64,43 @@ files:
64
64
  - LICENSE
65
65
  - README.md
66
66
  - Rakefile
67
+ - autotest/discover.rb
67
68
  - bin/crisp
68
69
  - crisp.gemspec
70
+ - examples/fibonacci.crisp
69
71
  - lib/crisp.rb
70
72
  - lib/crisp/chained_env.rb
71
73
  - lib/crisp/crisp.treetop
72
74
  - lib/crisp/env.rb
73
75
  - lib/crisp/errors.rb
74
76
  - lib/crisp/function.rb
77
+ - lib/crisp/function_runner.rb
75
78
  - lib/crisp/functions.rb
76
79
  - lib/crisp/functions/arithmetic.rb
77
80
  - lib/crisp/functions/core.rb
81
+ - lib/crisp/native_call_invoker.rb
78
82
  - lib/crisp/nodes.rb
83
+ - lib/crisp/nodes/array_literal.rb
84
+ - lib/crisp/nodes/base.rb
85
+ - lib/crisp/nodes/block.rb
86
+ - lib/crisp/nodes/false_literal.rb
87
+ - lib/crisp/nodes/float_literal.rb
88
+ - lib/crisp/nodes/integer_literal.rb
89
+ - lib/crisp/nodes/nil_literal.rb
90
+ - lib/crisp/nodes/operation.rb
91
+ - lib/crisp/nodes/primitive.rb
92
+ - lib/crisp/nodes/string_literal.rb
93
+ - lib/crisp/nodes/symbol_literal.rb
94
+ - lib/crisp/nodes/true_literal.rb
79
95
  - lib/crisp/parser.rb
80
96
  - lib/crisp/runtime.rb
81
97
  - lib/crisp/shell.rb
82
98
  - spec/crisp/arithmetics_spec.rb
83
99
  - spec/crisp/basic_spec.rb
100
+ - spec/crisp/core_spec.rb
101
+ - spec/crisp/function_spec.rb
102
+ - spec/crisp/internal_spec.rb
103
+ - spec/crisp/native_call_invoker_spec.rb
84
104
  - spec/crisp/string_spec.rb
85
105
  - spec/spec_helper.rb
86
106
  has_rdoc: true
@@ -120,5 +140,9 @@ summary: a tiny lisp-like language written in ruby using treetop.
120
140
  test_files:
121
141
  - spec/crisp/arithmetics_spec.rb
122
142
  - spec/crisp/basic_spec.rb
143
+ - spec/crisp/core_spec.rb
144
+ - spec/crisp/function_spec.rb
145
+ - spec/crisp/internal_spec.rb
146
+ - spec/crisp/native_call_invoker_spec.rb
123
147
  - spec/crisp/string_spec.rb
124
148
  - spec/spec_helper.rb