rubyless 0.8.5 → 0.8.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/History.txt +7 -2
- data/lib/ruby_less/info.rb +1 -1
- data/lib/ruby_less/processor.rb +16 -2
- data/rubyless.gemspec +3 -15
- data/test/RubyLess/basic.yml +10 -1
- metadata +7 -16
data/History.txt
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
-
== 0.8.
|
1
|
+
== 0.8.6 2011-11-09
|
2
|
+
|
3
|
+
* Minor enhancements
|
4
|
+
* Added support for 'nil'.
|
5
|
+
|
6
|
+
== 0.8.5 2011-07-11
|
2
7
|
|
3
8
|
* Minor enhancements
|
4
9
|
* Added support for append_args and multiple prepend arguments.
|
@@ -145,4 +150,4 @@
|
|
145
150
|
== 0.1.0 2009-06-02
|
146
151
|
|
147
152
|
* 1 major enhancement:
|
148
|
-
* Initial alpha release.
|
153
|
+
* Initial alpha release.
|
data/lib/ruby_less/info.rb
CHANGED
data/lib/ruby_less/processor.rb
CHANGED
@@ -64,6 +64,10 @@ module RubyLess
|
|
64
64
|
t 'false', {:class => Boolean, :literal => false}
|
65
65
|
end
|
66
66
|
|
67
|
+
def process_nil(*args)
|
68
|
+
t 'nil', {:class => NilClass, :literal => nil, :nil => true}
|
69
|
+
end
|
70
|
+
|
67
71
|
def process_and(exp)
|
68
72
|
t "(#{process(exp.shift)} and #{process(exp.shift)})", Boolean
|
69
73
|
end
|
@@ -86,8 +90,18 @@ module RubyLess
|
|
86
90
|
true_res = process(exp.shift)
|
87
91
|
false_res = process(exp.shift)
|
88
92
|
|
89
|
-
if true_res && false_res
|
90
|
-
|
93
|
+
if true_res && false_res
|
94
|
+
if true_res.klass != false_res.klass
|
95
|
+
if true_res.klass == NilClass
|
96
|
+
# Change true_res to false_res class (could_be_nil? is true)
|
97
|
+
true_res.opts[:class] = false_res.klass
|
98
|
+
elsif false_res.klass == NilClass
|
99
|
+
# Change false_res to true_res class (could_be_nil? is true)
|
100
|
+
false_res.opts[:class] = true_res.klass
|
101
|
+
else
|
102
|
+
raise RubyLess::SyntaxError.new("Error in conditional expression: '#{true_res}' and '#{false_res}' do not return results of same type (#{true_res.klass} != #{false_res.klass}).")
|
103
|
+
end
|
104
|
+
end
|
91
105
|
end
|
92
106
|
raise RubyLess::SyntaxError.new("Error in conditional expression.") unless true_res || false_res
|
93
107
|
opts = {}
|
data/rubyless.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rubyless}
|
8
|
-
s.version = "0.8.
|
8
|
+
s.version = "0.8.6"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Gaspard Bucher"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-11-09}
|
13
13
|
s.description = %q{RubyLess is an interpreter for "safe ruby". The idea is to transform some "unsafe" ruby code into safe, type checked ruby, eventually rewriting some variables or methods.}
|
14
14
|
s.email = %q{gaspard@teti.ch}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -54,20 +54,8 @@ Gem::Specification.new do |s|
|
|
54
54
|
]
|
55
55
|
s.homepage = %q{http://zenadmin.org/546}
|
56
56
|
s.require_paths = ["lib"]
|
57
|
-
s.rubygems_version = %q{1.6.
|
57
|
+
s.rubygems_version = %q{1.6.2}
|
58
58
|
s.summary = %q{RubyLess is an interpreter for "safe ruby"}
|
59
|
-
s.test_files = [
|
60
|
-
"test/RubyLess_test.rb",
|
61
|
-
"test/mock/active_record_mock.rb",
|
62
|
-
"test/mock/dummy_class.rb",
|
63
|
-
"test/mock/dummy_module.rb",
|
64
|
-
"test/mock/property_column.rb",
|
65
|
-
"test/safe_class_test.rb",
|
66
|
-
"test/signature_hash_test.rb",
|
67
|
-
"test/test_helper.rb",
|
68
|
-
"test/typed_method_test.rb",
|
69
|
-
"test/typed_string_test.rb"
|
70
|
-
]
|
71
59
|
|
72
60
|
if s.respond_to? :specification_version then
|
73
61
|
s.specification_version = 3
|
data/test/RubyLess/basic.yml
CHANGED
@@ -253,4 +253,13 @@ string_array:
|
|
253
253
|
|
254
254
|
array_bad_method:
|
255
255
|
src: "%w{foo bar}.plop(',')"
|
256
|
-
res: "unknown method 'plop(String)' for '[\"foo\",\"bar\"]' of type [String]."
|
256
|
+
res: "unknown method 'plop(String)' for '[\"foo\",\"bar\"]' of type [String]."
|
257
|
+
|
258
|
+
nil:
|
259
|
+
src: 'nil'
|
260
|
+
tem: 'nil'
|
261
|
+
|
262
|
+
nil_in_op:
|
263
|
+
src: '(dictionary[:foo] == "something" ? "foo" : nil)'
|
264
|
+
tem: '(get_dict[:foo]=="something") ? "foo" : nil'
|
265
|
+
res: ''
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubyless
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 51
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 8
|
9
|
-
-
|
10
|
-
version: 0.8.
|
9
|
+
- 6
|
10
|
+
version: 0.8.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Gaspard Bucher
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-11-09 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -154,18 +154,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
154
154
|
requirements: []
|
155
155
|
|
156
156
|
rubyforge_project:
|
157
|
-
rubygems_version: 1.6.
|
157
|
+
rubygems_version: 1.6.2
|
158
158
|
signing_key:
|
159
159
|
specification_version: 3
|
160
160
|
summary: RubyLess is an interpreter for "safe ruby"
|
161
|
-
test_files:
|
162
|
-
|
163
|
-
- test/mock/active_record_mock.rb
|
164
|
-
- test/mock/dummy_class.rb
|
165
|
-
- test/mock/dummy_module.rb
|
166
|
-
- test/mock/property_column.rb
|
167
|
-
- test/safe_class_test.rb
|
168
|
-
- test/signature_hash_test.rb
|
169
|
-
- test/test_helper.rb
|
170
|
-
- test/typed_method_test.rb
|
171
|
-
- test/typed_string_test.rb
|
161
|
+
test_files: []
|
162
|
+
|