sorcerer 0.0.5 → 0.0.6
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.
- data/Rakefile +3 -14
- data/lib/sorcerer/resource.rb +7 -4
- data/lib/sorcerer/version.rb +11 -0
- data/rakelib/git.rake +52 -1
- data/rakelib/testing.rake +15 -0
- data/test/sorcerer/{sorcerer_test.rb → resource_test.rb} +9 -2
- metadata +4 -2
data/Rakefile
CHANGED
@@ -4,6 +4,8 @@ require 'rake/clean'
|
|
4
4
|
require 'rake/testtask'
|
5
5
|
require 'rake/rdoctask'
|
6
6
|
|
7
|
+
require 'lib/sorcerer/version'
|
8
|
+
|
7
9
|
begin
|
8
10
|
require 'rubygems'
|
9
11
|
require 'rake/gempackagetask'
|
@@ -13,7 +15,7 @@ end
|
|
13
15
|
|
14
16
|
PROJ = 'sorcerer'
|
15
17
|
RUBY = ENV['RUBY19'] || 'ruby19'
|
16
|
-
PKG_VERSION =
|
18
|
+
PKG_VERSION = Sorcerer::VERSION
|
17
19
|
|
18
20
|
PKG_FILES = FileList[
|
19
21
|
'README.textile',
|
@@ -32,19 +34,6 @@ BASE_RDOC_OPTIONS = [
|
|
32
34
|
|
33
35
|
task :default => :test
|
34
36
|
|
35
|
-
# Modify the TestTask to allow running ruby19 for the tests
|
36
|
-
class Ruby19TestTask < Rake::TestTask
|
37
|
-
def ruby(*args)
|
38
|
-
sh "#{RUBY} #{args.join(' ')}"
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
Ruby19TestTask.new(:test) do |t|
|
43
|
-
t.warning = true
|
44
|
-
t.verbose = false
|
45
|
-
t.test_files = FileList["test/#{PROJ}/*_test.rb"]
|
46
|
-
end
|
47
|
-
|
48
37
|
rd = Rake::RDocTask.new("rdoc") do |rdoc|
|
49
38
|
rdoc.rdoc_dir = 'html'
|
50
39
|
rdoc.template = 'doc/jamis.rb'
|
data/lib/sorcerer/resource.rb
CHANGED
@@ -21,7 +21,7 @@ module Sorcerer
|
|
21
21
|
|
22
22
|
def resource(sexp)
|
23
23
|
return unless sexp
|
24
|
-
handler =
|
24
|
+
handler = HANDLERS[sexp.first]
|
25
25
|
raise NoHandlerError.new(sexp.first) unless handler
|
26
26
|
if @debug
|
27
27
|
puts "----------------------------------------------------------"
|
@@ -98,11 +98,13 @@ module Sorcerer
|
|
98
98
|
|
99
99
|
VOID_STATEMENT = [:stmts_add, [:stmts_new], [:void_stmt]]
|
100
100
|
VOID_BODY = [:body_stmt, VOID_STATEMENT, nil, nil, nil]
|
101
|
+
VOID_BODY2 = [:bodystmt, VOID_STATEMENT, nil, nil, nil]
|
101
102
|
|
102
103
|
def void?(sexp)
|
103
104
|
sexp.nil? ||
|
104
105
|
sexp == VOID_STATEMENT ||
|
105
|
-
sexp == VOID_BODY
|
106
|
+
sexp == VOID_BODY ||
|
107
|
+
sexp == VOID_BODY2
|
106
108
|
end
|
107
109
|
|
108
110
|
NYI = lambda { |src, sexp| src.nyi(sexp) }
|
@@ -113,7 +115,7 @@ module Sorcerer
|
|
113
115
|
PASS2 = lambda { |src, sexp| src.resource(sexp[2]) }
|
114
116
|
EMIT1 = lambda { |src, sexp| src.emit(sexp[1]) }
|
115
117
|
|
116
|
-
|
118
|
+
HANDLERS = {
|
117
119
|
# parser keywords
|
118
120
|
|
119
121
|
:BEGIN => lambda { |src, sexp|
|
@@ -258,7 +260,7 @@ module Sorcerer
|
|
258
260
|
:call => lambda { |src, sexp|
|
259
261
|
src.resource(sexp[1])
|
260
262
|
src.emit(sexp[2])
|
261
|
-
src.resource(sexp[3])
|
263
|
+
src.resource(sexp[3]) unless sexp[3] == :call
|
262
264
|
},
|
263
265
|
:case => lambda { |src, sexp|
|
264
266
|
src.emit("case ")
|
@@ -707,6 +709,7 @@ module Sorcerer
|
|
707
709
|
:@words_beg => NYI,
|
708
710
|
:@words_sep => NYI,
|
709
711
|
}
|
712
|
+
HANDLERS[:bodystmt] = HANDLERS[:body_stmt]
|
710
713
|
end
|
711
714
|
|
712
715
|
end
|
data/rakelib/git.rake
CHANGED
@@ -5,9 +5,60 @@ namespace "git" do
|
|
5
5
|
sh "git tag #{PROJ}-#{PKG_VERSION}"
|
6
6
|
end
|
7
7
|
|
8
|
+
desc "Fail if the current project is not clean"
|
9
|
+
task :ensure_clean do
|
10
|
+
out = `git status | grep "nothing to commit"`
|
11
|
+
if out == ''
|
12
|
+
fail "Repo is not clean"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
namespace "gem" do
|
8
18
|
desc "Build and Push the current gem"
|
9
19
|
task :push => :gem do
|
20
|
+
fail "Can't push beta versions (#{PKG_VERSION})" if
|
21
|
+
Sorcerer::VERSION_NUMBERS.size > 3
|
10
22
|
sh "gem push pkg/#{PROJ}-#{PKG_VERSION}.gem"
|
11
23
|
end
|
12
|
-
|
13
24
|
end
|
25
|
+
|
26
|
+
task "version" do
|
27
|
+
puts PKG_VERSION
|
28
|
+
end
|
29
|
+
|
30
|
+
module Version
|
31
|
+
def self.write(build, beta)
|
32
|
+
open("lib/sorcerer/version.rb", "w") do |out|
|
33
|
+
out.puts "module Sorcerer"
|
34
|
+
out.puts " VERSION_MAJOR = #{Sorcerer::VERSION_MAJOR}"
|
35
|
+
out.puts " VERSION_MINOR = #{Sorcerer::VERSION_MINOR}"
|
36
|
+
out.puts " VERSION_BUILD = #{build}"
|
37
|
+
out.puts " VERSION_BETA = #{beta}"
|
38
|
+
out.puts
|
39
|
+
out.puts " VERSION_NUMBERS = [VERSION_MAJOR, VERSION_MINOR, VERSION_BUILD] +"
|
40
|
+
out.puts " (VERSION_BETA > 0 ? [VERSION_BETA] : [])"
|
41
|
+
out.puts
|
42
|
+
out.puts " VERSION = VERSION_NUMBERS.join('.')"
|
43
|
+
out.puts "end"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
namespace "version" do
|
49
|
+
desc "Cut a new version"
|
50
|
+
task "cut" => [:test, "git:ensure_clean", "git:tag", "gem:push"]
|
51
|
+
|
52
|
+
namespace "bump" do
|
53
|
+
desc "Bump the Beta version"
|
54
|
+
task "beta" do
|
55
|
+
Version.write(Sorcerer::VERSION_BUILD, Sorcerer::VERSION_BETA+1)
|
56
|
+
end
|
57
|
+
|
58
|
+
desc "Bump the Build version"
|
59
|
+
task "build" do
|
60
|
+
Version.write(Sorcerer::VERSION_BUILD+1, 0)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# Modify the TestTask to allow running ruby19 for the tests
|
4
|
+
class Ruby19TestTask < Rake::TestTask
|
5
|
+
def ruby(*args)
|
6
|
+
sh "#{RUBY} #{args.join(' ')}"
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
Ruby19TestTask.new(:test) do |t|
|
11
|
+
t.warning = true
|
12
|
+
t.verbose = false
|
13
|
+
t.test_files = FileList["test/#{PROJ}/*_test.rb"]
|
14
|
+
end
|
15
|
+
|
@@ -132,6 +132,13 @@ class SourcerTest < Test::Unit::TestCase
|
|
132
132
|
assert_resource "->(a) { b }"
|
133
133
|
end
|
134
134
|
|
135
|
+
def test_can_source_dot_calls
|
136
|
+
if RUBY_VERSION >= "1.9.2"
|
137
|
+
# This causes a bus fault on version 1.9.1
|
138
|
+
assert_resource "p.(a)"
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
135
142
|
def test_can_source_numbers
|
136
143
|
assert_resource "1"
|
137
144
|
assert_resource "3.14"
|
@@ -193,7 +200,7 @@ class SourcerTest < Test::Unit::TestCase
|
|
193
200
|
assert_resource "/\./"
|
194
201
|
assert_resource "/[a-z]/"
|
195
202
|
assert_resource "/\[a-z\]/"
|
196
|
-
assert_resource
|
203
|
+
assert_resource '/#{name}/'
|
197
204
|
end
|
198
205
|
|
199
206
|
def test_can_source_range
|
@@ -466,7 +473,7 @@ class SourcerTest < Test::Unit::TestCase
|
|
466
473
|
assert_resource "def f(a); x; y; end"
|
467
474
|
end
|
468
475
|
|
469
|
-
def
|
476
|
+
def test_can_source_class_without_parent
|
470
477
|
assert_resource "class X; end"
|
471
478
|
assert_resource "class X; x; end"
|
472
479
|
assert_resource "class X; def f(); end; end"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sorcerer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jim Weirich
|
@@ -27,10 +27,12 @@ files:
|
|
27
27
|
- doc/jamis.rb
|
28
28
|
- rakelib/git.rake
|
29
29
|
- rakelib/readme.rake
|
30
|
+
- rakelib/testing.rake
|
30
31
|
- lib/sorcerer/resource.rb
|
31
32
|
- lib/sorcerer/subexpression.rb
|
33
|
+
- lib/sorcerer/version.rb
|
32
34
|
- lib/sorcerer.rb
|
33
|
-
- test/sorcerer/
|
35
|
+
- test/sorcerer/resource_test.rb
|
34
36
|
- test/sorcerer/subexpression_test.rb
|
35
37
|
has_rdoc: true
|
36
38
|
homepage: http://github.com/jimweirich/sorcerer
|