klam 0.0.6 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b3c2a2a79c7fc9bd757b979c7e30ddb9db372ee3
4
- data.tar.gz: 331259be37b2fd3c7581bd65907b3c0bfbebae5d
3
+ metadata.gz: bc3dcaef0efecdb916e9c2907f08db38c0ea5a5e
4
+ data.tar.gz: a5751310c733519a4815040f0005fff1f36196b3
5
5
  SHA512:
6
- metadata.gz: 3803840c457f33c6d61b0615fe8f09199829ee71ca1f22e4ec3a1c3ada28439e648a404266f2242e755fec8bca9f60b9a9043ef20f7936ae5e40866cc9de3ef5
7
- data.tar.gz: 7485c26bc1e70d7d0b45b4d7fba90162b9110af12d7a729133ba0c298b54d2f5af8650a7453dd610f773e8ea2c630b52d1a26eb07e30a66455521324562bff8d
6
+ metadata.gz: 41d80904122f50bbd3b1d7c1586e5666e44f38135d680ae5ca81844df4ca100c693bdc9f031eaf6b698f76881fe5f2db916b80a9d340981839481d23ff725802
7
+ data.tar.gz: 9635963254c84641c58e9d69f3bb4a803fd7e1702a0b7360b7b3a397ac940ffa04a3674f248be4d1224a8f964336420fe0da1590e1276e75f07fd4ea44b8209f
data/HISTORY.asciidoc CHANGED
@@ -1,6 +1,24 @@
1
1
  Relase History
2
2
  ==============
3
3
 
4
+ v0.0.7 -- February 24, 2015
5
+ ---------------------------
6
+ New Features
7
+ ~~~~~~~~~~~~
8
+ * Debugging output enabled by global flags:
9
+ ** `*dump-kl*` causes the KLambda code received by the compiler to be dumped
10
+ to stdout.
11
+ ** `*dump-rb*` causes the Ruby code generated by the compiler to be dumped
12
+ to stdout.
13
+ ** `*include-backtrace-in-error-string*` causes the backtrace from the error
14
+ object to be appended to the string returned by error-to-string.
15
+
16
+ Bug Fixes
17
+ ~~~~~~~~~
18
+ * Carriage return and new line are now properly escaped in emitted Ruby code. This
19
+ fixes "warning: encountered \r in middle of line, treated as a mere space" messages
20
+ that show up, e.g., when using a unit string like "c#13;" in Shen.
21
+
4
22
  v0.0.6 -- February 1, 2015
5
23
  --------------------------
6
24
  Breaking Changes
@@ -193,7 +193,7 @@ module Klam
193
193
  end
194
194
 
195
195
  def emit_string(str)
196
- "'" + escape_string(str) + "'"
196
+ str.inspect
197
197
  end
198
198
 
199
199
  def emit_symbol(sym)
@@ -211,23 +211,6 @@ module Klam
211
211
  render_string('(begin; $2; rescue => $1; $3; end)', err_var_rb,
212
212
  expr_rb, apply_handler_rb)
213
213
  end
214
-
215
- # Escape single quotes and backslashes
216
- def escape_string(str)
217
- new_str = ""
218
- str.each_char do |c|
219
- if c == "'"
220
- new_str << "\\"
221
- new_str << "'"
222
- elsif c == '\\'
223
- new_str << '\\'
224
- new_str << '\\'
225
- else
226
- new_str << c
227
- end
228
- end
229
- new_str
230
- end
231
214
  end
232
215
  end
233
216
  end
@@ -34,6 +34,9 @@ module Klam
34
34
 
35
35
  # The open primitive depends on having *home-directory* assigned.
36
36
  set(:"*home-directory*", ::Dir.pwd)
37
+ set(:"*dump-kl*", false)
38
+ set(:"*dump-rb*", false)
39
+ set(:"*include-backtrace-in-error-string*", false)
37
40
  end
38
41
 
39
42
  def __apply(rator, *rands)
@@ -10,7 +10,11 @@ module Klam
10
10
  # trap-error is a special form and implemented in the compiler
11
11
 
12
12
  def error_to_string(err)
13
- err.message
13
+ if value(:"*include-backtrace-in-error-string*")
14
+ ([err.message] + err.backtrace).join("\n")
15
+ else
16
+ err.message
17
+ end
14
18
  end
15
19
  alias_method :"error-to-string", :error_to_string
16
20
  remove_method :error_to_string
@@ -8,7 +8,9 @@ module Klam
8
8
  remove_method :equal
9
9
 
10
10
  def eval_kl(form)
11
+ ::Kernel.puts form.inspect if value(:"*dump-kl*")
11
12
  code = @compiler.compile(form)
13
+ ::Kernel.puts code if value(:"*dump-rb*")
12
14
  instance_eval code
13
15
  end
14
16
  alias_method :"eval-kl", :eval_kl
data/lib/klam/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Klam
2
- VERSION = '0.0.6'
2
+ VERSION = '0.0.7'
3
3
  end
@@ -3,6 +3,10 @@ require 'spec_helper'
3
3
  describe Klam::Primitives::ErrorHandling do
4
4
  include Klam::Primitives::ErrorHandling
5
5
 
6
+ def value(sym)
7
+ false
8
+ end
9
+
6
10
  describe '#simple-error' do
7
11
  it 'raises an error having the supplied message' do
8
12
  expect {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: klam
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Greg Spurrier
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-01 00:00:00.000000000 Z
11
+ date: 2015-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake