erbgood 0.0.1
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/README.md +11 -0
- data/bin/erbgood +28 -0
- data/erbgood.gemspec +20 -0
- data/lib/erbgood.rb +1 -0
- data/lib/erbgood/erb_binding_check.rb +21 -0
- data/lib/erbgood/version.rb +3 -0
- data/spec/erb_binding_check_spec.rb +37 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/support/binding/binding1.rb +3 -0
- data/spec/support/erb/a.erb +1 -0
- data/spec/support/erb/b.erb +3 -0
- data/spec/support/erb/bad.erb +1 -0
- metadata +74 -0
data/README.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
Ruby gem and command line tool to verify that a binding can satisfy ERB templates.
|
|
2
|
+
|
|
3
|
+
```bash
|
|
4
|
+
mmb@mmb ~/src/erbgood git:master ?1 $ erbgood spec/support/binding/binding1.rb spec/support/erb/*
|
|
5
|
+
Binding: /Users/mmb/src/erbgood/spec/support/binding/binding1.rb
|
|
6
|
+
|
|
7
|
+
spec/support/erb/a.erb: ok
|
|
8
|
+
spec/support/erb/b.erb: ok
|
|
9
|
+
spec/support/erb/bad.erb:
|
|
10
|
+
undefined local variable or method `foo' for #<Module:0x007fb3008301e8>
|
|
11
|
+
```
|
data/bin/erbgood
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'erbgood'
|
|
4
|
+
|
|
5
|
+
binding_path, *erb_paths = ARGV
|
|
6
|
+
|
|
7
|
+
binding_path = File.expand_path(binding_path)
|
|
8
|
+
|
|
9
|
+
bindin = Module.new.module_eval("#{File.read(binding_path)}\nbinding")
|
|
10
|
+
|
|
11
|
+
return_code = 0
|
|
12
|
+
|
|
13
|
+
puts "Binding: #{binding_path}\n\n"
|
|
14
|
+
|
|
15
|
+
erb_paths.each do |erb|
|
|
16
|
+
print "#{erb}: "
|
|
17
|
+
|
|
18
|
+
error = Erbgood::ErbBindingCheck.new(bindin, File.read(erb)).error
|
|
19
|
+
|
|
20
|
+
if error
|
|
21
|
+
puts "\n #{error}"
|
|
22
|
+
return_code = 1
|
|
23
|
+
else
|
|
24
|
+
puts 'ok'
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
exit return_code
|
data/erbgood.gemspec
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
$:.unshift(File.join(File.dirname(__FILE__), 'lib'))
|
|
4
|
+
|
|
5
|
+
require 'erbgood/version'
|
|
6
|
+
|
|
7
|
+
Gem::Specification.new do |s|
|
|
8
|
+
s.name = 'erbgood'
|
|
9
|
+
s.version = Erbgood::VERSION
|
|
10
|
+
s.summary = 'Verify that a binding can satisfy ERB templates'
|
|
11
|
+
s.description = s.summary
|
|
12
|
+
s.homepage = 'https://github.com/mmb/erbgood'
|
|
13
|
+
s.authors = ['Matthew M. Boedicker']
|
|
14
|
+
s.email = %w{matthewm@boedicker.org}
|
|
15
|
+
|
|
16
|
+
s.add_development_dependency 'rspec'
|
|
17
|
+
|
|
18
|
+
s.files = `git ls-files`.split("\n")
|
|
19
|
+
s.executables = %w{erbgood}
|
|
20
|
+
end
|
data/lib/erbgood.rb
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'erbgood/erb_binding_check'
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'erb'
|
|
2
|
+
|
|
3
|
+
module Erbgood
|
|
4
|
+
|
|
5
|
+
class ErbBindingCheck
|
|
6
|
+
|
|
7
|
+
def initialize(bindin, erb)
|
|
8
|
+
@bindin = bindin
|
|
9
|
+
@erb = erb
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def error
|
|
13
|
+
ERB.new(@erb).result(@bindin)
|
|
14
|
+
nil
|
|
15
|
+
rescue => detail
|
|
16
|
+
detail
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Erbgood::ErbBindingCheck do
|
|
4
|
+
|
|
5
|
+
subject { Erbgood::ErbBindingCheck.new(bindin, erb).error }
|
|
6
|
+
|
|
7
|
+
context 'when the binding satisfies the ERB' do
|
|
8
|
+
let(:bindin) {
|
|
9
|
+
x = 1
|
|
10
|
+
binding
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
let(:erb) { <<-eos
|
|
14
|
+
<%= x %>
|
|
15
|
+
eos
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
it { should be_nil }
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
context 'when the binding does not satisfy the ERB' do
|
|
23
|
+
let(:bindin) {
|
|
24
|
+
x = 1
|
|
25
|
+
binding
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
let(:erb) { <<-eos
|
|
29
|
+
<%= y %>
|
|
30
|
+
eos
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
its(:message) { should include "undefined local variable or method `y'" }
|
|
34
|
+
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'erbgood'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= a %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= foo %>
|
metadata
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: erbgood
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
prerelease:
|
|
6
|
+
platform: ruby
|
|
7
|
+
authors:
|
|
8
|
+
- Matthew M. Boedicker
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2013-03-01 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: rspec
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
none: false
|
|
18
|
+
requirements:
|
|
19
|
+
- - ! '>='
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '0'
|
|
22
|
+
type: :development
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
none: false
|
|
26
|
+
requirements:
|
|
27
|
+
- - ! '>='
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '0'
|
|
30
|
+
description: Verify that a binding can satisfy ERB templates
|
|
31
|
+
email:
|
|
32
|
+
- matthewm@boedicker.org
|
|
33
|
+
executables:
|
|
34
|
+
- erbgood
|
|
35
|
+
extensions: []
|
|
36
|
+
extra_rdoc_files: []
|
|
37
|
+
files:
|
|
38
|
+
- README.md
|
|
39
|
+
- bin/erbgood
|
|
40
|
+
- erbgood.gemspec
|
|
41
|
+
- lib/erbgood.rb
|
|
42
|
+
- lib/erbgood/erb_binding_check.rb
|
|
43
|
+
- lib/erbgood/version.rb
|
|
44
|
+
- spec/erb_binding_check_spec.rb
|
|
45
|
+
- spec/spec_helper.rb
|
|
46
|
+
- spec/support/binding/binding1.rb
|
|
47
|
+
- spec/support/erb/a.erb
|
|
48
|
+
- spec/support/erb/b.erb
|
|
49
|
+
- spec/support/erb/bad.erb
|
|
50
|
+
homepage: https://github.com/mmb/erbgood
|
|
51
|
+
licenses: []
|
|
52
|
+
post_install_message:
|
|
53
|
+
rdoc_options: []
|
|
54
|
+
require_paths:
|
|
55
|
+
- lib
|
|
56
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
57
|
+
none: false
|
|
58
|
+
requirements:
|
|
59
|
+
- - ! '>='
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
63
|
+
none: false
|
|
64
|
+
requirements:
|
|
65
|
+
- - ! '>='
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '0'
|
|
68
|
+
requirements: []
|
|
69
|
+
rubyforge_project:
|
|
70
|
+
rubygems_version: 1.8.23
|
|
71
|
+
signing_key:
|
|
72
|
+
specification_version: 3
|
|
73
|
+
summary: Verify that a binding can satisfy ERB templates
|
|
74
|
+
test_files: []
|