madride 1.0.7 → 1.1.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/example/README.md +1 -1
- data/example/pages/_default.slim +13 -0
- data/example/pages/index.slim +45 -0
- data/lib/madride/context.rb +62 -0
- data/lib/madride/directive_processor.rb +11 -0
- data/lib/madride/environment.rb +9 -8
- data/lib/madride/version.rb +1 -1
- data/spec/environment_spec.rb +11 -0
- data/spec/fixtures/data.yml +5 -0
- data/spec/fixtures/layouts/_simple.slim +6 -0
- data/spec/fixtures/pages/video/index.html.slim +4 -0
- metadata +12 -6
- data/example/pages/index.html.slim +0 -57
- data/lib/madride/context_patch.rb +0 -48
data/example/README.md
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
doctype
|
2
|
+
html[lang="en"]
|
3
|
+
head
|
4
|
+
meta[charset="utf-8"]
|
5
|
+
title Madride Demo
|
6
|
+
meta[name="viewport" content="width=device-width, initial-scale=1.0"]
|
7
|
+
meta[name="description" content=""]
|
8
|
+
meta[name="author" content=""]
|
9
|
+
link[href="/app.css" rel="stylesheet"]
|
10
|
+
style[type="text/css"] body { margin-top: 30px; }
|
11
|
+
|
12
|
+
body
|
13
|
+
.container == yield
|
@@ -0,0 +1,45 @@
|
|
1
|
+
//= layout _default
|
2
|
+
.hero-unit
|
3
|
+
h1#madride Hello, world!
|
4
|
+
p
|
5
|
+
| This is a template for a simple marketing or informational website.
|
6
|
+
| It includes a large callout called the hero unit and three
|
7
|
+
| supporting pieces of content. Use it as a starting point to create
|
8
|
+
| something more unique.
|
9
|
+
p
|
10
|
+
a.btn.btn-primary.btn-large Learn more »
|
11
|
+
|
12
|
+
.row
|
13
|
+
.span4
|
14
|
+
h2 Heading
|
15
|
+
p
|
16
|
+
| Donec id elit non mi porta gravida at eget metus. Fusce dapibus,
|
17
|
+
| tellus ac cursus commodo, tortor mauris condimentum nibh, ut
|
18
|
+
| fermentum massa justo sit amet risus. Etiam porta sem malesuada
|
19
|
+
| magna mollis euismod. Donec sed odio dui.
|
20
|
+
p
|
21
|
+
a.btn[href="#"] View details »
|
22
|
+
.span4
|
23
|
+
h2 Heading
|
24
|
+
p
|
25
|
+
| Donec id elit non mi porta gravida at eget metus. Fusce dapibus,
|
26
|
+
| tellus ac cursus commodo, tortor mauris condimentum nibh, ut
|
27
|
+
| fermentum massa justo sit amet risus. Etiam porta sem malesuada
|
28
|
+
| magna mollis euismod. Donec sed odio dui.
|
29
|
+
p
|
30
|
+
a.btn[href="#"] View details »
|
31
|
+
.span4
|
32
|
+
h2 Heading
|
33
|
+
p
|
34
|
+
| Donec sed odio dui. Cras justo odio, dapibus ac facilisis in,
|
35
|
+
| egestas eget quam. Vestibulum id ligula porta felis euismod
|
36
|
+
| semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris
|
37
|
+
| condimentum nibh, ut fermentum massa justo sit amet risus.
|
38
|
+
p
|
39
|
+
a.btn[href="#"] View details »
|
40
|
+
hr
|
41
|
+
footer
|
42
|
+
p
|
43
|
+
' This is a demo of madride.
|
44
|
+
' Based on a <a href="#{bootstrap_demo_url}">Basic marketing site</a>
|
45
|
+
' example of Bootstrap from Twitter.
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'sprockets/context'
|
2
|
+
|
3
|
+
|
4
|
+
module Madride
|
5
|
+
class Context < Sprockets::Context
|
6
|
+
def self.locals
|
7
|
+
@locals ||= {}
|
8
|
+
end
|
9
|
+
|
10
|
+
|
11
|
+
def locals
|
12
|
+
self.class.locals
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
def layout= path
|
17
|
+
depend_on_asset path
|
18
|
+
@layout = path
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
def evaluate(path, options = {}, &block)
|
23
|
+
pathname = resolve(path)
|
24
|
+
attributes = environment.attributes_for(pathname)
|
25
|
+
processors = options[:processors] || attributes.processors
|
26
|
+
|
27
|
+
if options[:data]
|
28
|
+
result = options[:data]
|
29
|
+
else
|
30
|
+
if environment.respond_to?(:default_external_encoding)
|
31
|
+
mime_type = environment.mime_types(pathname.extname)
|
32
|
+
encoding = environment.encoding_for_mime_type(mime_type)
|
33
|
+
result = Sprockets::Utils.read_unicode(pathname, encoding)
|
34
|
+
else
|
35
|
+
result = Sprockets::Utils.read_unicode(pathname)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
processors.each do |processor|
|
40
|
+
begin
|
41
|
+
template = processor.new(pathname.to_s) { result }
|
42
|
+
result = template.render(self, locals){ options[:yield] }
|
43
|
+
rescue Exception => e
|
44
|
+
annotate_exception! e
|
45
|
+
raise
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
if @layout
|
50
|
+
begin
|
51
|
+
layout = self.class.new(environment, @layout, resolve(@layout))
|
52
|
+
result = layout.evaluate(@layout, :yield => result)
|
53
|
+
rescue Exception => e
|
54
|
+
annotate_exception! e
|
55
|
+
raise
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
result
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/lib/madride/environment.rb
CHANGED
@@ -3,7 +3,8 @@ require "tilt/haml"
|
|
3
3
|
|
4
4
|
|
5
5
|
require "madride/templates/slim"
|
6
|
-
require "madride/
|
6
|
+
require "madride/context"
|
7
|
+
require "madride/directive_processor"
|
7
8
|
|
8
9
|
|
9
10
|
module Madride
|
@@ -11,20 +12,20 @@ module Madride
|
|
11
12
|
def initialize *args
|
12
13
|
super
|
13
14
|
|
15
|
+
@context_class = Class.new(Context)
|
16
|
+
|
17
|
+
# unregister .htm and register .html instead
|
18
|
+
register_mime_type nil, '.htm'
|
19
|
+
register_mime_type 'text/html', '.html'
|
20
|
+
|
14
21
|
register_engine '.slim', SlimTemplate
|
15
22
|
register_engine '.haml', Tilt::HamlTemplate
|
16
23
|
|
17
|
-
|
18
|
-
|
19
|
-
@trail.alias_extension '.slim', '.html'
|
20
|
-
@trail.alias_extension '.haml', '.html'
|
21
|
-
@trail.alias_extension '.htm', '.html'
|
24
|
+
register_preprocessor 'text/html', DirectiveProcessor
|
22
25
|
|
23
26
|
Madride.paths.each do |path|
|
24
27
|
append_path path
|
25
28
|
end
|
26
|
-
|
27
|
-
@context_class.send(:include, ContextPatch)
|
28
29
|
end
|
29
30
|
|
30
31
|
|
data/lib/madride/version.rb
CHANGED
data/spec/environment_spec.rb
CHANGED
@@ -46,5 +46,16 @@ module Madride
|
|
46
46
|
asset.should_not be_nil
|
47
47
|
asset.to_s.should match(%r{<title>\s*Simple Page\s*</title>})
|
48
48
|
end
|
49
|
+
|
50
|
+
|
51
|
+
it "should use default layout if layouts path provided" do
|
52
|
+
env = environment
|
53
|
+
env.append_path "layouts"
|
54
|
+
env.locals.merge! YAML.load_file fixtures_path('data.yml').to_s
|
55
|
+
|
56
|
+
asset = env["video/index.html"]
|
57
|
+
asset.should_not be_nil
|
58
|
+
asset.to_s.should match(%r{<title>\s*Default Layout\s*</title>})
|
59
|
+
end
|
49
60
|
end
|
50
61
|
end
|
data/spec/fixtures/data.yml
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: madride
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -159,9 +159,11 @@ files:
|
|
159
159
|
- example/README.md
|
160
160
|
- example/assets/app.css
|
161
161
|
- example/data.yml
|
162
|
-
- example/pages/
|
162
|
+
- example/pages/_default.slim
|
163
|
+
- example/pages/index.slim
|
163
164
|
- lib/madride.rb
|
164
|
-
- lib/madride/
|
165
|
+
- lib/madride/context.rb
|
166
|
+
- lib/madride/directive_processor.rb
|
165
167
|
- lib/madride/environment.rb
|
166
168
|
- lib/madride/templates/slim.rb
|
167
169
|
- lib/madride/version.rb
|
@@ -172,11 +174,13 @@ files:
|
|
172
174
|
- spec/fixtures/assets/app.js
|
173
175
|
- spec/fixtures/assets/madride.js
|
174
176
|
- spec/fixtures/data.yml
|
177
|
+
- spec/fixtures/layouts/_simple.slim
|
175
178
|
- spec/fixtures/pages/about/index.html.slim
|
176
179
|
- spec/fixtures/pages/index.html.slim
|
177
180
|
- spec/fixtures/pages/music.html.slim
|
178
181
|
- spec/fixtures/pages/music/bands.html.slim
|
179
182
|
- spec/fixtures/pages/simple.slim
|
183
|
+
- spec/fixtures/pages/video/index.html.slim
|
180
184
|
- spec/server_spec.rb
|
181
185
|
- spec/spec_helper.rb
|
182
186
|
homepage: https://github.com/madride/madride
|
@@ -193,7 +197,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
193
197
|
version: '0'
|
194
198
|
segments:
|
195
199
|
- 0
|
196
|
-
hash:
|
200
|
+
hash: 316891443
|
197
201
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
198
202
|
none: false
|
199
203
|
requirements:
|
@@ -202,13 +206,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
202
206
|
version: '0'
|
203
207
|
segments:
|
204
208
|
- 0
|
205
|
-
hash:
|
209
|
+
hash: 316891443
|
206
210
|
requirements: []
|
207
211
|
rubyforge_project:
|
208
212
|
rubygems_version: 1.8.23
|
209
213
|
signing_key:
|
210
214
|
specification_version: 3
|
211
|
-
summary: madride-1.0
|
215
|
+
summary: madride-1.1.0
|
212
216
|
test_files:
|
213
217
|
- spec/.gitkeep
|
214
218
|
- spec/environment_spec.rb
|
@@ -216,10 +220,12 @@ test_files:
|
|
216
220
|
- spec/fixtures/assets/app.js
|
217
221
|
- spec/fixtures/assets/madride.js
|
218
222
|
- spec/fixtures/data.yml
|
223
|
+
- spec/fixtures/layouts/_simple.slim
|
219
224
|
- spec/fixtures/pages/about/index.html.slim
|
220
225
|
- spec/fixtures/pages/index.html.slim
|
221
226
|
- spec/fixtures/pages/music.html.slim
|
222
227
|
- spec/fixtures/pages/music/bands.html.slim
|
223
228
|
- spec/fixtures/pages/simple.slim
|
229
|
+
- spec/fixtures/pages/video/index.html.slim
|
224
230
|
- spec/server_spec.rb
|
225
231
|
- spec/spec_helper.rb
|
@@ -1,57 +0,0 @@
|
|
1
|
-
doctype
|
2
|
-
html[lang="en"]
|
3
|
-
head
|
4
|
-
meta[charset="utf-8"]
|
5
|
-
title Madride Demo
|
6
|
-
meta[name="viewport" content="width=device-width, initial-scale=1.0"]
|
7
|
-
meta[name="description" content=""]
|
8
|
-
meta[name="author" content=""]
|
9
|
-
link[href="/app.css" rel="stylesheet"]
|
10
|
-
style[type="text/css"] body { margin-top: 30px; }
|
11
|
-
|
12
|
-
body
|
13
|
-
.container
|
14
|
-
.hero-unit
|
15
|
-
h1#madride Hello, world!
|
16
|
-
p
|
17
|
-
| This is a template for a simple marketing or informational website.
|
18
|
-
| It includes a large callout called the hero unit and three
|
19
|
-
| supporting pieces of content. Use it as a starting point to create
|
20
|
-
| something more unique.
|
21
|
-
p
|
22
|
-
a.btn.btn-primary.btn-large Learn more »
|
23
|
-
|
24
|
-
.row
|
25
|
-
.span4
|
26
|
-
h2 Heading
|
27
|
-
p
|
28
|
-
| Donec id elit non mi porta gravida at eget metus. Fusce dapibus,
|
29
|
-
| tellus ac cursus commodo, tortor mauris condimentum nibh, ut
|
30
|
-
| fermentum massa justo sit amet risus. Etiam porta sem malesuada
|
31
|
-
| magna mollis euismod. Donec sed odio dui.
|
32
|
-
p
|
33
|
-
a.btn[href="#"] View details »
|
34
|
-
.span4
|
35
|
-
h2 Heading
|
36
|
-
p
|
37
|
-
| Donec id elit non mi porta gravida at eget metus. Fusce dapibus,
|
38
|
-
| tellus ac cursus commodo, tortor mauris condimentum nibh, ut
|
39
|
-
| fermentum massa justo sit amet risus. Etiam porta sem malesuada
|
40
|
-
| magna mollis euismod. Donec sed odio dui.
|
41
|
-
p
|
42
|
-
a.btn[href="#"] View details »
|
43
|
-
.span4
|
44
|
-
h2 Heading
|
45
|
-
p
|
46
|
-
| Donec sed odio dui. Cras justo odio, dapibus ac facilisis in,
|
47
|
-
| egestas eget quam. Vestibulum id ligula porta felis euismod
|
48
|
-
| semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris
|
49
|
-
| condimentum nibh, ut fermentum massa justo sit amet risus.
|
50
|
-
p
|
51
|
-
a.btn[href="#"] View details »
|
52
|
-
hr
|
53
|
-
footer
|
54
|
-
p
|
55
|
-
' This is a demo of madride.
|
56
|
-
' Based on a <a href="#{bootstrap_demo_url}">Basic marketing site</a>
|
57
|
-
' example of Bootstrap from Twitter.
|
@@ -1,48 +0,0 @@
|
|
1
|
-
module Madride
|
2
|
-
module ContextPatch
|
3
|
-
def self.included(base)
|
4
|
-
base.send(:include, InstanceMethods)
|
5
|
-
|
6
|
-
base.class_eval do
|
7
|
-
@locals = {}
|
8
|
-
|
9
|
-
class << self
|
10
|
-
attr_reader :locals
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
|
16
|
-
module InstanceMethods
|
17
|
-
def evaluate(path, options = {})
|
18
|
-
pathname = resolve(path)
|
19
|
-
attributes = environment.attributes_for(pathname)
|
20
|
-
processors = options[:processors] || attributes.processors
|
21
|
-
|
22
|
-
if options[:data]
|
23
|
-
result = options[:data]
|
24
|
-
else
|
25
|
-
if environment.respond_to?(:default_external_encoding)
|
26
|
-
mime_type = environment.mime_types(pathname.extname)
|
27
|
-
encoding = environment.encoding_for_mime_type(mime_type)
|
28
|
-
result = Sprockets::Utils.read_unicode(pathname, encoding)
|
29
|
-
else
|
30
|
-
result = Sprockets::Utils.read_unicode(pathname)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
processors.each do |processor|
|
35
|
-
begin
|
36
|
-
template = processor.new(pathname.to_s) { result }
|
37
|
-
result = template.render(self, self.class.locals)
|
38
|
-
rescue Exception => e
|
39
|
-
annotate_exception! e
|
40
|
-
raise
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
result
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|