safemode 0.0.2 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of safemode might be problematic. Click here for more details.
- data/Gemfile +15 -0
- data/Gemfile.lock +38 -0
- data/README.markdown +13 -4
- data/Rakefile +51 -5
- data/VERSION +1 -0
- data/lib/ruby_parser_string_io_patch.diff +194 -0
- data/safemode.gemspec +87 -13
- metadata +135 -24
- data/safemode.rb +0 -1
data/Gemfile
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
|
3
|
+
gem "ruby2ruby"
|
4
|
+
gem "ruby_parser"
|
5
|
+
|
6
|
+
# Add dependencies to develop your gem here.
|
7
|
+
# Include everything needed to run rake, tests, features, etc.
|
8
|
+
group :development do
|
9
|
+
gem "shoulda", ">= 0"
|
10
|
+
gem "rdoc", "~> 3.12"
|
11
|
+
gem "bundler", "~> 1.0.0"
|
12
|
+
gem "jeweler", "~> 1.8.3"
|
13
|
+
gem "rcov", ">= 0"
|
14
|
+
gem "rake"
|
15
|
+
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
git (1.2.5)
|
5
|
+
jeweler (1.8.3)
|
6
|
+
bundler (~> 1.0)
|
7
|
+
git (>= 1.2.5)
|
8
|
+
rake
|
9
|
+
rdoc
|
10
|
+
json (1.6.5)
|
11
|
+
rake (0.9.2.2)
|
12
|
+
rcov (1.0.0)
|
13
|
+
rdoc (3.12)
|
14
|
+
json (~> 1.4)
|
15
|
+
ruby2ruby (1.3.1)
|
16
|
+
ruby_parser (~> 2.0)
|
17
|
+
sexp_processor (~> 3.0)
|
18
|
+
ruby_parser (2.3.1)
|
19
|
+
sexp_processor (~> 3.0)
|
20
|
+
sexp_processor (3.1.0)
|
21
|
+
shoulda (3.0.1)
|
22
|
+
shoulda-context (~> 1.0.0)
|
23
|
+
shoulda-matchers (~> 1.0.0)
|
24
|
+
shoulda-context (1.0.0)
|
25
|
+
shoulda-matchers (1.0.0)
|
26
|
+
|
27
|
+
PLATFORMS
|
28
|
+
ruby
|
29
|
+
|
30
|
+
DEPENDENCIES
|
31
|
+
bundler (~> 1.0.0)
|
32
|
+
jeweler (~> 1.8.3)
|
33
|
+
rake
|
34
|
+
rcov
|
35
|
+
rdoc (~> 3.12)
|
36
|
+
ruby2ruby
|
37
|
+
ruby_parser
|
38
|
+
shoulda
|
data/README.markdown
CHANGED
@@ -11,6 +11,11 @@ anything beyond experiments and playing.
|
|
11
11
|
That said, please **do** play with it, read and run the unit tests and provide
|
12
12
|
feedback to help make it waterproof and finally suitable for serious purposes.
|
13
13
|
|
14
|
+
### Installation
|
15
|
+
|
16
|
+
safemode is available as gem, therefore you can use bundler or gem install to the
|
17
|
+
tool. The above warning still applies.
|
18
|
+
|
14
19
|
### Usage
|
15
20
|
|
16
21
|
For manual evaluation of Ruby code and ERB templates see demo.rb
|
@@ -35,8 +40,8 @@ can do that by defining a Safemode::Jail class for your classes, like so:
|
|
35
40
|
class Jail < Safemode::Jail
|
36
41
|
allow :name
|
37
42
|
end
|
38
|
-
end
|
39
|
-
|
43
|
+
end
|
44
|
+
|
40
45
|
This will allow your template users to access the name method on your User
|
41
46
|
objects.
|
42
47
|
|
@@ -46,7 +51,7 @@ following blog posts until a more comprehensive writeup is available:
|
|
46
51
|
* Initial reasoning: [http://www.artweb-design.de/2008/2/5/sexy-theme-templating-with-haml-safemode-finally](http://www.artweb-design.de/2008/2/5/sexy-theme-templating-with-haml-safemode-finally)
|
47
52
|
* Refined concept: [http://www.artweb-design.de/2008/2/17/sending-ruby-to-the-jail-an-attemp-on-a-haml-safemode](http://www.artweb-design.de/2008/2/17/sending-ruby-to-the-jail-an-attemp-on-a-haml-safemode)
|
48
53
|
* ActionView ERB handler: [http://www.artweb-design.de/2008/4/22/an-erb-safemode-handler-for-actionview](http://www.artweb-design.de/2008/4/22/an-erb-safemode-handler-for-actionview)
|
49
|
-
|
54
|
+
|
50
55
|
### Dependencies
|
51
56
|
|
52
57
|
Requires the gems:
|
@@ -64,8 +69,12 @@ See lib/ruby\_parser\_string\_io\_patch.diff
|
|
64
69
|
|
65
70
|
* Sven Fuchs - Maintainer
|
66
71
|
* Peter Cooper
|
72
|
+
* Ohad Levy
|
73
|
+
* Matthias Viehweger
|
67
74
|
|
68
|
-
This code and all of the Safemode library's code was initially written by
|
75
|
+
This code and all of the Safemode library's code was initially written by
|
69
76
|
Sven Fuchs to allow Haml to have a safe mode. It was then modified and
|
70
77
|
re-structured by Peter Cooper and Sven Fuchs to extend the idea to generic
|
71
78
|
Ruby eval situations.
|
79
|
+
|
80
|
+
Thanks to Ohad Levy for gemifying it.
|
data/Rakefile
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'bundler'
|
5
|
+
begin
|
6
|
+
Bundler.setup(:default, :development)
|
7
|
+
rescue Bundler::BundlerError => e
|
8
|
+
$stderr.puts e.message
|
9
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
+
exit e.status_code
|
11
|
+
end
|
12
|
+
|
1
13
|
# optional libraries
|
2
14
|
%w[ redgreen ].each do |lib|
|
3
15
|
begin
|
@@ -5,11 +17,45 @@
|
|
5
17
|
rescue LoadError
|
6
18
|
end
|
7
19
|
end
|
20
|
+
require 'rake'
|
8
21
|
|
9
|
-
|
22
|
+
require 'jeweler'
|
23
|
+
Jeweler::Tasks.new do |gem|
|
24
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
25
|
+
gem.name = "safemode"
|
26
|
+
gem.homepage = "http://github.com/svenfuchs/safemode"
|
27
|
+
gem.license = "MIT"
|
28
|
+
gem.summary = %Q{A library for safe evaluation of Ruby code based on ParseTree/RubyParser and Ruby2Ruby}
|
29
|
+
gem.description = %Q{A library for safe evaluation of Ruby code based on RubyParser and Ruby2Ruby. Provides Rails ActionView template handlers for ERB and Haml.}
|
30
|
+
gem.email = "ohadlevy@gmail.com"
|
31
|
+
gem.authors = ["Sven Fuchs"]
|
32
|
+
# dependencies defined in Gemfile
|
33
|
+
end
|
34
|
+
Jeweler::RubygemsDotOrgTasks.new
|
10
35
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
36
|
+
require 'rake/testtask'
|
37
|
+
Rake::TestTask.new(:test) do |test|
|
38
|
+
test.libs << 'lib' << 'test'
|
39
|
+
test.pattern = 'test/**/test_*.rb'
|
40
|
+
test.verbose = true
|
41
|
+
end
|
42
|
+
|
43
|
+
require 'rcov/rcovtask'
|
44
|
+
Rcov::RcovTask.new do |test|
|
45
|
+
test.libs << 'test'
|
46
|
+
test.pattern = 'test/**/test_*.rb'
|
47
|
+
test.verbose = true
|
48
|
+
test.rcov_opts << '--exclude "gems/*"'
|
49
|
+
end
|
50
|
+
|
51
|
+
task :default => :test
|
52
|
+
|
53
|
+
require 'rdoc/task'
|
54
|
+
Rake::RDocTask.new do |rdoc|
|
55
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
56
|
+
|
57
|
+
rdoc.rdoc_dir = 'rdoc'
|
58
|
+
rdoc.title = "safemode #{version}"
|
59
|
+
rdoc.rdoc_files.include('README*')
|
60
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
61
|
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
1.0.0
|
@@ -0,0 +1,194 @@
|
|
1
|
+
--- lib/ruby_lexer.rb 2008-04-27 01:07:24.000000000 +0200
|
2
|
+
+++ lib/ruby_lexer.rb 2008-04-27 01:07:03.000000000 +0200
|
3
|
+
@@ -45,7 +45,7 @@
|
4
|
+
raise "bad val: #{str.inspect}" unless String === str
|
5
|
+
|
6
|
+
self.file = file
|
7
|
+
- self.lexer.src = StringIO.new(str)
|
8
|
+
+ self.lexer.src = RubyParser::StringIO.new(str)
|
9
|
+
|
10
|
+
@yydebug = ENV.has_key? 'DEBUG'
|
11
|
+
|
12
|
+
@@ -2604,104 +2604,106 @@
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
-class StringIO # HACK: everything in here is a hack
|
17
|
+
- attr_accessor :begin_of_line, :was_begin_of_line
|
18
|
+
- alias :begin_of_line? :begin_of_line
|
19
|
+
- alias :read_all :read
|
20
|
+
+class RubyParser
|
21
|
+
+ class StringIO < StringIO # HACK: everything in here is a hack
|
22
|
+
+ attr_accessor :begin_of_line, :was_begin_of_line
|
23
|
+
+ alias :begin_of_line? :begin_of_line
|
24
|
+
+ alias :read_all :read
|
25
|
+
|
26
|
+
- alias :old_initialize :initialize
|
27
|
+
+ alias :old_initialize :initialize
|
28
|
+
|
29
|
+
- def initialize(*args)
|
30
|
+
- self.begin_of_line = true
|
31
|
+
- self.was_begin_of_line = false
|
32
|
+
- old_initialize(*args)
|
33
|
+
- @original_string = self.string.dup
|
34
|
+
- end
|
35
|
+
+ def initialize(*args)
|
36
|
+
+ self.begin_of_line = true
|
37
|
+
+ self.was_begin_of_line = false
|
38
|
+
+ old_initialize(*args)
|
39
|
+
+ @original_string = self.string.dup
|
40
|
+
+ end
|
41
|
+
|
42
|
+
- def rest
|
43
|
+
- self.string[self.pos..-1]
|
44
|
+
- end
|
45
|
+
+ def rest
|
46
|
+
+ self.string[self.pos..-1]
|
47
|
+
+ end
|
48
|
+
|
49
|
+
- def current_line # HAHA fuck you
|
50
|
+
- @original_string[0..self.pos][/\A.*__LINE__/m].split(/\n/).size
|
51
|
+
- end
|
52
|
+
+ def current_line # HAHA fuck you
|
53
|
+
+ @original_string[0..self.pos][/\A.*__LINE__/m].split(/\n/).size
|
54
|
+
+ end
|
55
|
+
|
56
|
+
- def read
|
57
|
+
- c = self.getc
|
58
|
+
+ def read
|
59
|
+
+ c = self.getc
|
60
|
+
|
61
|
+
- if c == ?\r then
|
62
|
+
- d = self.getc
|
63
|
+
- self.ungetc d if d and d != ?\n
|
64
|
+
- c = ?\n
|
65
|
+
- end
|
66
|
+
+ if c == ?\r then
|
67
|
+
+ d = self.getc
|
68
|
+
+ self.ungetc d if d and d != ?\n
|
69
|
+
+ c = ?\n
|
70
|
+
+ end
|
71
|
+
|
72
|
+
- self.was_begin_of_line = self.begin_of_line
|
73
|
+
- self.begin_of_line = c == ?\n
|
74
|
+
- if c and c != 0 then
|
75
|
+
- c.chr
|
76
|
+
- else
|
77
|
+
- ::RubyLexer::EOF
|
78
|
+
+ self.was_begin_of_line = self.begin_of_line
|
79
|
+
+ self.begin_of_line = c == ?\n
|
80
|
+
+ if c and c != 0 then
|
81
|
+
+ c.chr
|
82
|
+
+ else
|
83
|
+
+ ::RubyLexer::EOF
|
84
|
+
+ end
|
85
|
+
end
|
86
|
+
- end
|
87
|
+
|
88
|
+
- def match_string term, indent=false # TODO: add case insensitivity, or just remove
|
89
|
+
- buffer = []
|
90
|
+
+ def match_string term, indent=false # TODO: add case insensitivity, or just remove
|
91
|
+
+ buffer = []
|
92
|
+
|
93
|
+
- if indent
|
94
|
+
- while c = self.read do
|
95
|
+
- if c !~ /\s/ or c == "\n" or c == "\r" then
|
96
|
+
- self.unread c
|
97
|
+
- break
|
98
|
+
+ if indent
|
99
|
+
+ while c = self.read do
|
100
|
+
+ if c !~ /\s/ or c == "\n" or c == "\r" then
|
101
|
+
+ self.unread c
|
102
|
+
+ break
|
103
|
+
+ end
|
104
|
+
+ buffer << c
|
105
|
+
end
|
106
|
+
- buffer << c
|
107
|
+
end
|
108
|
+
- end
|
109
|
+
|
110
|
+
- term.each_byte do |c2|
|
111
|
+
- c = self.read
|
112
|
+
- c = self.read if c and c == "\r"
|
113
|
+
- buffer << c
|
114
|
+
- if c and c2 != c[0] then
|
115
|
+
- self.unread_many buffer.join # HACK omg
|
116
|
+
- return false
|
117
|
+
+ term.each_byte do |c2|
|
118
|
+
+ c = self.read
|
119
|
+
+ c = self.read if c and c == "\r"
|
120
|
+
+ buffer << c
|
121
|
+
+ if c and c2 != c[0] then
|
122
|
+
+ self.unread_many buffer.join # HACK omg
|
123
|
+
+ return false
|
124
|
+
+ end
|
125
|
+
end
|
126
|
+
+
|
127
|
+
+ return true
|
128
|
+
end
|
129
|
+
|
130
|
+
- return true
|
131
|
+
- end
|
132
|
+
+ def read_line
|
133
|
+
+ self.begin_of_line = true
|
134
|
+
+ self.was_begin_of_line = false
|
135
|
+
+ gets.sub(/\r\n?$/, "\n") # HACK
|
136
|
+
+ end
|
137
|
+
|
138
|
+
- def read_line
|
139
|
+
- self.begin_of_line = true
|
140
|
+
- self.was_begin_of_line = false
|
141
|
+
- gets.sub(/\r\n?$/, "\n") # HACK
|
142
|
+
- end
|
143
|
+
-
|
144
|
+
- def peek expected = nil # FIX: barf
|
145
|
+
- c = self.getc
|
146
|
+
- return RubyLexer::EOF if c.nil?
|
147
|
+
- self.ungetc c if c
|
148
|
+
- c = c.chr if c
|
149
|
+
- if expected then
|
150
|
+
- c == expected
|
151
|
+
- else
|
152
|
+
- c
|
153
|
+
+ def peek expected = nil # FIX: barf
|
154
|
+
+ c = self.getc
|
155
|
+
+ return RubyLexer::EOF if c.nil?
|
156
|
+
+ self.ungetc c if c
|
157
|
+
+ c = c.chr if c
|
158
|
+
+ if expected then
|
159
|
+
+ c == expected
|
160
|
+
+ else
|
161
|
+
+ c
|
162
|
+
+ end
|
163
|
+
end
|
164
|
+
- end
|
165
|
+
|
166
|
+
- def unread(c)
|
167
|
+
- return if c.nil? # UGH
|
168
|
+
+ def unread(c)
|
169
|
+
+ return if c.nil? # UGH
|
170
|
+
|
171
|
+
- # HACK: only depth is 2... who cares? really I want to remove all of this
|
172
|
+
- self.begin_of_line = self.was_begin_of_line || true
|
173
|
+
- self.was_begin_of_line = nil
|
174
|
+
+ # HACK: only depth is 2... who cares? really I want to remove all of this
|
175
|
+
+ self.begin_of_line = self.was_begin_of_line || true
|
176
|
+
+ self.was_begin_of_line = nil
|
177
|
+
|
178
|
+
- c = c[0] if String === c
|
179
|
+
- self.ungetc c
|
180
|
+
- end
|
181
|
+
+ c = c[0] if String === c
|
182
|
+
+ self.ungetc c
|
183
|
+
+ end
|
184
|
+
|
185
|
+
- def unread_many str
|
186
|
+
- str.split(//).reverse.each do |c|
|
187
|
+
- unread c
|
188
|
+
+ def unread_many str
|
189
|
+
+ str.split(//).reverse.each do |c|
|
190
|
+
+ unread c
|
191
|
+
+ end
|
192
|
+
end
|
193
|
+
end
|
194
|
+
end
|
data/safemode.gemspec
CHANGED
@@ -1,14 +1,88 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
1
6
|
Gem::Specification.new do |s|
|
2
|
-
s.name =
|
3
|
-
s.version = "0.0
|
4
|
-
|
5
|
-
s.
|
6
|
-
s.
|
7
|
-
s.
|
8
|
-
s.
|
9
|
-
s.
|
10
|
-
s.
|
11
|
-
|
12
|
-
|
13
|
-
s.
|
14
|
-
|
7
|
+
s.name = "safemode"
|
8
|
+
s.version = "1.0.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Sven Fuchs"]
|
12
|
+
s.date = "2012-03-15"
|
13
|
+
s.description = "A library for safe evaluation of Ruby code based on RubyParser and Ruby2Ruby. Provides Rails ActionView template handlers for ERB and Haml."
|
14
|
+
s.email = "ohadlevy@gmail.com"
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"README.markdown"
|
17
|
+
]
|
18
|
+
s.files = [
|
19
|
+
"Gemfile",
|
20
|
+
"Gemfile.lock",
|
21
|
+
"LICENCSE",
|
22
|
+
"README.markdown",
|
23
|
+
"Rakefile",
|
24
|
+
"VERSION",
|
25
|
+
"demo.rb",
|
26
|
+
"init.rb",
|
27
|
+
"lib/action_view/template_handlers/safe_erb.rb",
|
28
|
+
"lib/action_view/template_handlers/safe_haml.rb",
|
29
|
+
"lib/action_view/template_handlers/safemode_handler.rb",
|
30
|
+
"lib/haml/safemode.rb",
|
31
|
+
"lib/ruby_parser_string_io_patch.diff",
|
32
|
+
"lib/rubyparser_bug.rb",
|
33
|
+
"lib/safemode.rb",
|
34
|
+
"lib/safemode/blankslate.rb",
|
35
|
+
"lib/safemode/core_ext.rb",
|
36
|
+
"lib/safemode/core_jails.rb",
|
37
|
+
"lib/safemode/exceptions.rb",
|
38
|
+
"lib/safemode/jail.rb",
|
39
|
+
"lib/safemode/parser.rb",
|
40
|
+
"lib/safemode/scope.rb",
|
41
|
+
"safemode.gemspec",
|
42
|
+
"test/test_all.rb",
|
43
|
+
"test/test_erb_eval.rb",
|
44
|
+
"test/test_helper.rb",
|
45
|
+
"test/test_jail.rb",
|
46
|
+
"test/test_safemode_eval.rb",
|
47
|
+
"test/test_safemode_parser.rb"
|
48
|
+
]
|
49
|
+
s.homepage = "http://github.com/svenfuchs/safemode"
|
50
|
+
s.licenses = ["MIT"]
|
51
|
+
s.require_paths = ["lib"]
|
52
|
+
s.rubygems_version = "1.8.19"
|
53
|
+
s.summary = "A library for safe evaluation of Ruby code based on ParseTree/RubyParser and Ruby2Ruby"
|
54
|
+
|
55
|
+
if s.respond_to? :specification_version then
|
56
|
+
s.specification_version = 3
|
57
|
+
|
58
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
59
|
+
s.add_runtime_dependency(%q<ruby2ruby>, [">= 0"])
|
60
|
+
s.add_runtime_dependency(%q<ruby_parser>, [">= 0"])
|
61
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
62
|
+
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
63
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
64
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
|
65
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
66
|
+
s.add_development_dependency(%q<rake>, [">= 0"])
|
67
|
+
else
|
68
|
+
s.add_dependency(%q<ruby2ruby>, [">= 0"])
|
69
|
+
s.add_dependency(%q<ruby_parser>, [">= 0"])
|
70
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
71
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
72
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
73
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
|
74
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
75
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
76
|
+
end
|
77
|
+
else
|
78
|
+
s.add_dependency(%q<ruby2ruby>, [">= 0"])
|
79
|
+
s.add_dependency(%q<ruby_parser>, [">= 0"])
|
80
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
81
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
82
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
83
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
|
84
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
85
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
metadata
CHANGED
@@ -1,48 +1,163 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: safemode
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 23
|
5
|
+
prerelease:
|
5
6
|
segments:
|
7
|
+
- 1
|
6
8
|
- 0
|
7
9
|
- 0
|
8
|
-
|
9
|
-
version: 0.0.2
|
10
|
+
version: 1.0.0
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
|
-
-
|
13
|
+
- Sven Fuchs
|
13
14
|
autorequire:
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date:
|
18
|
-
default_executable:
|
18
|
+
date: 2012-03-15 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: ruby2ruby
|
22
22
|
prerelease: false
|
23
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
24
25
|
requirements:
|
25
26
|
- - ">="
|
26
27
|
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
27
29
|
segments:
|
28
30
|
- 0
|
29
31
|
version: "0"
|
30
32
|
type: :runtime
|
31
33
|
version_requirements: *id001
|
32
|
-
|
33
|
-
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: ruby_parser
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
version: "0"
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id002
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: shoulda
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
hash: 3
|
57
|
+
segments:
|
58
|
+
- 0
|
59
|
+
version: "0"
|
60
|
+
type: :development
|
61
|
+
version_requirements: *id003
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rdoc
|
64
|
+
prerelease: false
|
65
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ~>
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
hash: 31
|
71
|
+
segments:
|
72
|
+
- 3
|
73
|
+
- 12
|
74
|
+
version: "3.12"
|
75
|
+
type: :development
|
76
|
+
version_requirements: *id004
|
77
|
+
- !ruby/object:Gem::Dependency
|
78
|
+
name: bundler
|
79
|
+
prerelease: false
|
80
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ~>
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
hash: 23
|
86
|
+
segments:
|
87
|
+
- 1
|
88
|
+
- 0
|
89
|
+
- 0
|
90
|
+
version: 1.0.0
|
91
|
+
type: :development
|
92
|
+
version_requirements: *id005
|
93
|
+
- !ruby/object:Gem::Dependency
|
94
|
+
name: jeweler
|
95
|
+
prerelease: false
|
96
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ~>
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
hash: 49
|
102
|
+
segments:
|
103
|
+
- 1
|
104
|
+
- 8
|
105
|
+
- 3
|
106
|
+
version: 1.8.3
|
107
|
+
type: :development
|
108
|
+
version_requirements: *id006
|
109
|
+
- !ruby/object:Gem::Dependency
|
110
|
+
name: rcov
|
111
|
+
prerelease: false
|
112
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
hash: 3
|
118
|
+
segments:
|
119
|
+
- 0
|
120
|
+
version: "0"
|
121
|
+
type: :development
|
122
|
+
version_requirements: *id007
|
123
|
+
- !ruby/object:Gem::Dependency
|
124
|
+
name: rake
|
125
|
+
prerelease: false
|
126
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
127
|
+
none: false
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
hash: 3
|
132
|
+
segments:
|
133
|
+
- 0
|
134
|
+
version: "0"
|
135
|
+
type: :development
|
136
|
+
version_requirements: *id008
|
137
|
+
description: A library for safe evaluation of Ruby code based on RubyParser and Ruby2Ruby. Provides Rails ActionView template handlers for ERB and Haml.
|
138
|
+
email: ohadlevy@gmail.com
|
34
139
|
executables: []
|
35
140
|
|
36
141
|
extensions: []
|
37
142
|
|
38
|
-
extra_rdoc_files:
|
39
|
-
|
143
|
+
extra_rdoc_files:
|
144
|
+
- README.markdown
|
40
145
|
files:
|
146
|
+
- Gemfile
|
147
|
+
- Gemfile.lock
|
148
|
+
- LICENCSE
|
149
|
+
- README.markdown
|
150
|
+
- Rakefile
|
151
|
+
- VERSION
|
152
|
+
- demo.rb
|
153
|
+
- init.rb
|
41
154
|
- lib/action_view/template_handlers/safe_erb.rb
|
42
155
|
- lib/action_view/template_handlers/safe_haml.rb
|
43
156
|
- lib/action_view/template_handlers/safemode_handler.rb
|
44
157
|
- lib/haml/safemode.rb
|
158
|
+
- lib/ruby_parser_string_io_patch.diff
|
45
159
|
- lib/rubyparser_bug.rb
|
160
|
+
- lib/safemode.rb
|
46
161
|
- lib/safemode/blankslate.rb
|
47
162
|
- lib/safemode/core_ext.rb
|
48
163
|
- lib/safemode/core_jails.rb
|
@@ -50,49 +165,45 @@ files:
|
|
50
165
|
- lib/safemode/jail.rb
|
51
166
|
- lib/safemode/parser.rb
|
52
167
|
- lib/safemode/scope.rb
|
53
|
-
- lib/safemode.rb
|
54
|
-
- demo.rb
|
55
|
-
- init.rb
|
56
|
-
- LICENCSE
|
57
|
-
- Rakefile
|
58
|
-
- README.markdown
|
59
168
|
- safemode.gemspec
|
60
|
-
- safemode.rb
|
61
169
|
- test/test_all.rb
|
62
170
|
- test/test_erb_eval.rb
|
63
171
|
- test/test_helper.rb
|
64
172
|
- test/test_jail.rb
|
65
173
|
- test/test_safemode_eval.rb
|
66
174
|
- test/test_safemode_parser.rb
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
175
|
+
homepage: http://github.com/svenfuchs/safemode
|
176
|
+
licenses:
|
177
|
+
- MIT
|
71
178
|
post_install_message:
|
72
179
|
rdoc_options: []
|
73
180
|
|
74
181
|
require_paths:
|
75
182
|
- lib
|
76
183
|
required_ruby_version: !ruby/object:Gem::Requirement
|
184
|
+
none: false
|
77
185
|
requirements:
|
78
186
|
- - ">="
|
79
187
|
- !ruby/object:Gem::Version
|
188
|
+
hash: 3
|
80
189
|
segments:
|
81
190
|
- 0
|
82
191
|
version: "0"
|
83
192
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
193
|
+
none: false
|
84
194
|
requirements:
|
85
195
|
- - ">="
|
86
196
|
- !ruby/object:Gem::Version
|
197
|
+
hash: 3
|
87
198
|
segments:
|
88
199
|
- 0
|
89
200
|
version: "0"
|
90
201
|
requirements: []
|
91
202
|
|
92
|
-
rubyforge_project:
|
93
|
-
rubygems_version: 1.
|
203
|
+
rubyforge_project:
|
204
|
+
rubygems_version: 1.8.19
|
94
205
|
signing_key:
|
95
206
|
specification_version: 3
|
96
|
-
summary:
|
207
|
+
summary: A library for safe evaluation of Ruby code based on ParseTree/RubyParser and Ruby2Ruby
|
97
208
|
test_files: []
|
98
209
|
|
data/safemode.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/lib/safemode.rb'
|