theme 0.1.6 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 15fd74827a251a1f0ed5376357004da8d902b5f0
4
- data.tar.gz: f07758b271eea942ee3a3d3540c7e9f48d919e6a
3
+ metadata.gz: ce8d31486e669021fd7b9d454d097d1f6a274051
4
+ data.tar.gz: 55b801c6151d73af405f94fdc3ea2a939aa29bc4
5
5
  SHA512:
6
- metadata.gz: f72a3b14d27832b35d016c5b9f4d84ea66c49c849ef76f66a5fd041d5d6f3fec00a3dd072ab6209a33727eaa1f250636c36d043fc3db55bfee538d8c74c794bd
7
- data.tar.gz: da3f3ef51fcf89adc52e9ffc3382d580a762ce19462c8ef7ec231845d6593033a3b6d19d15c0a523905a013ba63c4a89c85c98cdf476c6e3214ffe8d752bb755
6
+ metadata.gz: 0833fdd497dacd4365422097155bf43f396a90c8a5a04707dceae7a1d611d3e4ce2c32eb60bdbe3fa1bb4d8859ddadda700b3d75c2de9b16228ba59e035e92cb
7
+ data.tar.gz: 4787df6f8c547e6a09808e49fb2389a734466e08ff2f0099bb85a558d7f020e5780c139ad440c6a86d18282819aa57401197e9a64075f38324b1c25cb014538b
@@ -80,7 +80,7 @@ module Theme
80
80
  when 'js', 'javascript', 'javascripts'
81
81
  content_type = 'text/javascript; charset=utf-8'
82
82
  else
83
- content_type = Rack::Mime.mime_type ext
83
+ content_type = Rack::Mime.mime_type ".#{ext}"
84
84
  end
85
85
 
86
86
  res.headers.merge!({
@@ -72,12 +72,12 @@ module Theme
72
72
  @node ||= self.class.node.clone
73
73
  end
74
74
 
75
- def render meth = 'display', options = {}
75
+ def render meth = 'display', options = {}, &block
76
76
  if method(meth).parameters.length > 0
77
77
  opts = Hashr.new(options)
78
- resp = send meth, opts
78
+ resp = send meth, opts, &block
79
79
  else
80
- resp = send meth
80
+ resp = send meth, &block
81
81
  end
82
82
 
83
83
  options.clear
data/lib/theme/mab.rb CHANGED
@@ -3,3 +3,48 @@ require 'mab'
3
3
  def mab(&blk)
4
4
  Mab::Builder.new({}, self, &blk).to_s
5
5
  end
6
+
7
+ module Theme
8
+ class MabTemplate < Tilt::Template
9
+ def self.builder_class
10
+ @builder_class ||= Class.new(Mab::Builder) do
11
+ def __capture_mab_tilt__(&block)
12
+ __run_mab_tilt__ do
13
+ text capture(&block)
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ def prepare
20
+ end
21
+
22
+ def evaluate(scope, locals, &block)
23
+ builder = self.class.builder_class.new({}, scope)
24
+
25
+ locals.each do |local, value|
26
+ (class << builder; self end).send(:define_method, local, Proc.new { value })
27
+ end
28
+
29
+ if data.kind_of? Proc
30
+ (class << builder; self end).send(:define_method, :__run_mab_tilt__, &data)
31
+ else
32
+ builder.instance_eval <<-CODE, __FILE__, __LINE__
33
+ def __run_mab_tilt__
34
+ capture(&Proc.new {#{data}})
35
+ end
36
+ CODE
37
+ end
38
+
39
+ if block
40
+ builder.__capture_mab_tilt__(&block)
41
+ else
42
+ builder.__run_mab_tilt__
43
+ end
44
+
45
+ builder
46
+ end
47
+ end
48
+ end
49
+
50
+ Tilt.register Theme::MabTemplate, 'mab'
data/lib/theme/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Theme
2
- VERSION = "0.1.6"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: theme
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - cj
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-23 00:00:00.000000000 Z
11
+ date: 2014-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tilt
@@ -100,7 +100,6 @@ files:
100
100
  - lib/theme/assets/render.rb
101
101
  - lib/theme/component.rb
102
102
  - lib/theme/events.rb
103
- - lib/theme/file.rb
104
103
  - lib/theme/mab.rb
105
104
  - lib/theme/middleware.rb
106
105
  - lib/theme/version.rb
data/lib/theme/file.rb DELETED
@@ -1,52 +0,0 @@
1
- module Theme
2
- module File
3
- extend self
4
-
5
- IMAGE_TYPES = %w(png gif jpg jpeg)
6
- FONT_TYPES = %w(eot woff ttf svg)
7
- STATIC_TYPES = %w(html js css map)
8
- VIEW_TYPES = %w(html slim haml erb md markdown mkd mab)
9
-
10
- def load path, c = {}, instance = self
11
- cache = Theme.cache.file.fetch(path) {
12
- template = false
13
-
14
- ext = path[/\.[^.]*$/][1..-1]
15
-
16
- if ext && ::File.file?(path)
17
- if STATIC_TYPES.include? ext
18
- template = Tilt::PlainTemplate.new nil, 1, outvar: '@_output', default_encoding: 'UTF-8' do |t|
19
- ::File.read(path)
20
- end
21
- elsif FONT_TYPES.include?(ext) || IMAGE_TYPES.include?(ext)
22
- template = ::File.read path
23
- else
24
- template = Tilt.new path, 1, outvar: '@_output'
25
- end
26
- else
27
- VIEW_TYPES.each do |type|
28
- f = "#{path}.#{type}"
29
-
30
- if ::File.file? f
31
- template = Tilt.new f, 1, outvar: '@_output'
32
- break
33
- end
34
- end
35
- end
36
-
37
- unless template
38
- raise Theme::No::FileFound,
39
- "Could't find file: #{path} with any of these extensions: #{VIEW_TYPES.join(', ')}."
40
- end
41
-
42
- template
43
- }
44
-
45
- if defined? cache.render
46
- cache.render instance, c.to_h
47
- else
48
- cache.to_s
49
- end
50
- end
51
- end
52
- end