inline_template_loader 0.2.0 → 0.3.0
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/lib/inline_template_loader/version.rb +1 -1
- data/lib/inline_template_loader.rb +22 -12
- data/spec/fixtures/dsl_uses_inline_template_loader.rb +21 -0
- data/spec/fixtures/external_file.rb +9 -0
- data/spec/fixtures/external_file_without_templates.rb +0 -0
- data/spec/lib/inline_template_loader_spec.rb +43 -8
- metadata +9 -3
@@ -1,9 +1,17 @@
|
|
1
1
|
require "inline_template_loader/version"
|
2
2
|
|
3
3
|
module InlineTemplateLoader
|
4
|
-
def self.load(
|
5
|
-
if
|
6
|
-
|
4
|
+
def self.load(arg = nil)
|
5
|
+
if arg.is_a? ::Integer
|
6
|
+
caller_pos = arg
|
7
|
+
elsif
|
8
|
+
caller_pos = 0
|
9
|
+
end
|
10
|
+
|
11
|
+
if arg.is_a? ::String
|
12
|
+
file = arg
|
13
|
+
elsif
|
14
|
+
file = caller[caller_pos].split(':').first
|
7
15
|
end
|
8
16
|
|
9
17
|
templates = {}
|
@@ -11,15 +19,17 @@ module InlineTemplateLoader
|
|
11
19
|
|
12
20
|
app, data = ::IO.read(file).gsub("\r\n", "\n").split(/^__END__$/, 2)
|
13
21
|
|
14
|
-
data
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
templates[sym]
|
21
|
-
|
22
|
-
|
22
|
+
if data
|
23
|
+
data.each_line do |line|
|
24
|
+
if line =~ /^@@\s*(.*\S)\s*$/
|
25
|
+
sym = $1.to_sym
|
26
|
+
else
|
27
|
+
if sym
|
28
|
+
unless templates[sym]
|
29
|
+
templates[sym] = line
|
30
|
+
else
|
31
|
+
templates[sym] += line
|
32
|
+
end
|
23
33
|
end
|
24
34
|
end
|
25
35
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'inline_template_loader'
|
2
|
+
|
3
|
+
class DslUsesInlineTemplateLoader
|
4
|
+
def self.load_template
|
5
|
+
# 0: dsl_uses_inline_template_loader.rb: load_templates
|
6
|
+
# 1: external_file.rb: &block passed for dsl
|
7
|
+
# 2: dsl_uses_inline_template_loader.rb: class_eval
|
8
|
+
# 3: dsl_uses_inline_template_loader.rb: dsl
|
9
|
+
# 4: external_file.rb: top
|
10
|
+
|
11
|
+
@@templates = InlineTemplateLoader.load 4
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.dsl(&block)
|
15
|
+
class_eval &block
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.templates
|
19
|
+
@@templates
|
20
|
+
end
|
21
|
+
end
|
File without changes
|
@@ -1,21 +1,56 @@
|
|
1
1
|
require 'inline_template_loader'
|
2
2
|
|
3
3
|
describe 'InlineTemplateLoader' do
|
4
|
+
let(:fixtures_dir) { File.expand_path('../fixtures', File.dirname(__FILE__)) }
|
5
|
+
let(:external_file) { fixtures_dir + '/external_file.rb' }
|
6
|
+
let(:external_file) { fixtures_dir + '/external_file.rb' }
|
7
|
+
let(:external_file_without_templates) { fixtures_dir + '/external_file_without_templates.rb' }
|
8
|
+
|
4
9
|
describe '#load' do
|
5
|
-
|
6
|
-
|
10
|
+
context 'from this file' do
|
11
|
+
shared_examples_for 'load templates correctly from this file' do
|
12
|
+
it { should == {foo: "Here is template named foo.\n\n", bar: "Here is template named bar.\n"} }
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'with filepath' do
|
16
|
+
subject { InlineTemplateLoader.load(__FILE__) }
|
17
|
+
|
18
|
+
it_behaves_like 'load templates correctly from this file'
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'without filepath' do
|
22
|
+
subject { InlineTemplateLoader.load }
|
23
|
+
|
24
|
+
it_behaves_like 'load templates correctly from this file'
|
25
|
+
end
|
7
26
|
end
|
8
27
|
|
9
|
-
context '
|
10
|
-
|
28
|
+
context 'from external file' do
|
29
|
+
shared_examples_for 'load templates correctly from external file' do
|
30
|
+
it { should == {foo: "This is an external file\n"} }
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'with filepath' do
|
34
|
+
subject { InlineTemplateLoader.load(external_file) }
|
35
|
+
|
36
|
+
it_behaves_like 'load templates correctly from external file'
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'with module uses inline template loader' do
|
40
|
+
before do
|
41
|
+
require external_file
|
42
|
+
end
|
43
|
+
|
44
|
+
subject { DslUsesInlineTemplateLoader.templates }
|
11
45
|
|
12
|
-
|
46
|
+
it_behaves_like 'load templates correctly from external file'
|
47
|
+
end
|
13
48
|
end
|
14
49
|
|
15
|
-
context 'without
|
16
|
-
subject { InlineTemplateLoader.load }
|
50
|
+
context 'from external file without templates' do
|
51
|
+
subject { InlineTemplateLoader.load(external_file_without_templates) }
|
17
52
|
|
18
|
-
|
53
|
+
it { should == {} }
|
19
54
|
end
|
20
55
|
end
|
21
56
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inline_template_loader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -94,6 +94,9 @@ files:
|
|
94
94
|
- inline_template_loader.gemspec
|
95
95
|
- lib/inline_template_loader.rb
|
96
96
|
- lib/inline_template_loader/version.rb
|
97
|
+
- spec/fixtures/dsl_uses_inline_template_loader.rb
|
98
|
+
- spec/fixtures/external_file.rb
|
99
|
+
- spec/fixtures/external_file_without_templates.rb
|
97
100
|
- spec/lib/inline_template_loader_spec.rb
|
98
101
|
homepage: ''
|
99
102
|
licenses: []
|
@@ -109,7 +112,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
109
112
|
version: '0'
|
110
113
|
segments:
|
111
114
|
- 0
|
112
|
-
hash:
|
115
|
+
hash: 2025653954573289953
|
113
116
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
117
|
none: false
|
115
118
|
requirements:
|
@@ -118,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
118
121
|
version: '0'
|
119
122
|
segments:
|
120
123
|
- 0
|
121
|
-
hash:
|
124
|
+
hash: 2025653954573289953
|
122
125
|
requirements: []
|
123
126
|
rubyforge_project:
|
124
127
|
rubygems_version: 1.8.23
|
@@ -126,4 +129,7 @@ signing_key:
|
|
126
129
|
specification_version: 3
|
127
130
|
summary: Loads inline template as a Hash
|
128
131
|
test_files:
|
132
|
+
- spec/fixtures/dsl_uses_inline_template_loader.rb
|
133
|
+
- spec/fixtures/external_file.rb
|
134
|
+
- spec/fixtures/external_file_without_templates.rb
|
129
135
|
- spec/lib/inline_template_loader_spec.rb
|