theme 0.1.6 → 0.2.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.
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