roda-plugins 0.0.6 → 0.0.7

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: a8d33a1ed3343be44f1047a168bfe07f4c4e9b1b
4
- data.tar.gz: 900ca262a62d85e050c25c996e5f09921094a709
3
+ metadata.gz: 86697f17032dfa90d874019891226bfcf00f0b91
4
+ data.tar.gz: 47add4a2ff3573bc9c77af468e2ca3cb33c58ec3
5
5
  SHA512:
6
- metadata.gz: 189ddb829ed23f18c00ff0c78a9d18fa11066cf6da96a9d6b5501f41cebb2ea3f5aab688bfcda6fb5bb23ac942f3828070b788dd7849e92440795b19d58d5d4c
7
- data.tar.gz: 85d4a640b39bba8a85fa3ba2ec7925e5d28459fa253ad639d767b56205bd72822a869e7f8c5b4744621d2b3f1b7db9a343b1da8bafd8c3dcea0fbc4ca460bf4d
6
+ metadata.gz: 04b19de5134fef9e061c17d0e5d21cedc9f608ccaaf2945d89bfcee1dfc20e4f3ebaee0b9e93b69d2d7a0172434bc7f4a92f34ccb8e32ee362c55f53162afdc6
7
+ data.tar.gz: a6298269a54fd913b2236b6a2c0f4097b543f92401ec852dda904726ed7875f023dfa4d055bd0a2c5b1d045b6c13fba34aab865ad03f54eaedfe6df528534921
@@ -1,3 +1,3 @@
1
1
  class Roda
2
- PluginsVersion = '0.0.6'.freeze
2
+ PluginsVersion = '0.0.7'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roda-plugins
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - cj
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-04 00:00:00.000000000 Z
11
+ date: 2014-10-20 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Plugins for Roda
14
14
  email:
@@ -24,7 +24,6 @@ files:
24
24
  - Makefile
25
25
  - README.md
26
26
  - lib/roda/plugins.rb
27
- - lib/roda/plugins/assets.rb
28
27
  - lib/roda/plugins/components.rb
29
28
  - lib/roda/plugins/root.rb
30
29
  - lib/roda/plugins/version.rb
@@ -1,178 +0,0 @@
1
- require "tilt"
2
-
3
- class Roda
4
- module RodaPlugins
5
- module Assets
6
- def self.load_dependencies(app, opts={})
7
- app.plugin :render
8
- end
9
-
10
- def self.configure(app, opts={}, &block)
11
- if app.opts[:assets]
12
- app.opts[:assets].merge!(opts)
13
- else
14
- app.opts[:assets] = opts.dup
15
- end
16
-
17
- opts = app.opts[:assets]
18
- opts[:css] ||= []
19
- opts[:js] ||= []
20
- opts[:js_folder] ||= 'js'
21
- opts[:css_folder] ||= 'css'
22
- opts[:path] ||= File.expand_path("assets", Dir.pwd)
23
- opts[:route] ||= 'assets'
24
- opts[:css_engine] ||= 'scss'
25
- opts[:js_engine] ||= 'coffee'
26
- opts[:headers] ||= {}
27
- opts[:cache] = app.thread_safe_cache if opts.fetch(:cache, true)
28
-
29
- yield opts if block
30
- end
31
-
32
- module ClassMethods
33
- # Copy the assets options into the subclass, duping
34
- # them as necessary to prevent changes in the subclass
35
- # affecting the parent class.
36
- def inherited(subclass)
37
- super
38
- opts = subclass.opts[:assets] = assets_opts.dup
39
- opts[:cache] = thread_safe_cache if opts[:cache]
40
- end
41
-
42
- # Return the assets options for this class.
43
- def assets_opts
44
- opts[:assets]
45
- end
46
-
47
-
48
- def asset_path file, type
49
- file.gsub!(/\.#{type}$/, '')
50
- assets = assets_opts[:"#{type}"]
51
-
52
- if assets.is_a? Array
53
- file_path = assets.select {|a| a["#{file}"]}.first
54
- else
55
- file = file.split('/')
56
- sub = file.shift.to_sym
57
- file = file.join '/'
58
- file_path = assets[sub].select {|a| a["#{file}"]}.first
59
-
60
- if file_path && !file_path[/^\.\//]
61
- file_path = "#{sub}/#{file_path}"
62
- end
63
- end
64
-
65
- folder = assets_opts[:"#{type}_folder"]
66
-
67
- if file_path
68
- if !file_path[/^\.\//]
69
- "#{assets_opts[:path]}/#{folder}/#{file_path}"
70
- else
71
- file_path
72
- end
73
- else
74
- file
75
- end
76
- end
77
- end
78
-
79
- module InstanceMethods
80
- def assets_opts
81
- self.class.assets_opts
82
- end
83
-
84
- def assets type, options = {}
85
- attrs = options.map{|k,v| "#{k}=\"#{v}\""}
86
- tags = []
87
- type = [type] unless type.is_a? Array
88
- files = type.length == 1 \
89
- ? assets_opts[:"#{type[0]}"] \
90
- : assets_opts[:"#{type[0]}"][:"#{type[1]}"]
91
-
92
- files.each do |file|
93
- file.gsub!(/\./, '$2E')
94
- file = file.split('/')
95
- file[file.length - 1] = file.last.gsub(/\$2E/, '.')
96
- file = file.join '/'
97
- path = assets_opts[:route] + '/' + assets_opts[:"#{type[0]}_folder"]
98
- attr = type[0].to_s == 'js' ? 'src' : 'href'
99
- attrs.unshift "#{attr}=\"/#{path}/#{file}\""
100
- tags << send("#{type[0]}_assets_tag", attrs.join(' '))
101
- end
102
-
103
- tags.join "\n"
104
- end
105
-
106
- private
107
-
108
- # <link rel="stylesheet" href="theme.css">
109
- def css_assets_tag attrs
110
- "<link rel=\"stylesheet\" #{attrs} />"
111
- end
112
-
113
- # <script src="scriptfile.js"></script>
114
- def js_assets_tag attrs
115
- "<script type=\"text/javascript\" #{attrs}></script>"
116
- end
117
-
118
- def render_asset *args
119
- self.class.render_asset(*args)
120
- end
121
- end
122
-
123
- module RequestClassMethods
124
- def assets_opts
125
- roda_class.assets_opts
126
- end
127
-
128
- %w(css js).each do |type|
129
- define_method "#{type}_assets_path" do
130
- Regexp.new(
131
- assets_opts[:route] + '/' + assets_opts[:"#{type}_folder"] + '/(.*)'
132
- )
133
- end
134
- end
135
- end
136
-
137
- module RequestMethods
138
- def assets
139
- %w(css js).each do |type|
140
- on self.class.public_send "#{type}_assets_path" do |file|
141
- file.gsub!(/(\$2E|%242E)/, '.')
142
-
143
- content_type = Rack::Mime.mime_type File.extname(file)
144
-
145
- response.headers.merge!({
146
- "Content-Type" => content_type + '; charset=UTF-8',
147
- }.merge(scope.assets_opts[:headers]))
148
-
149
- engine = scope.assets_opts[:"#{type}_engine"]
150
-
151
- if !file[/^\.\//]
152
- path = scope.assets_opts[:route] + '/' + scope.assets_opts[:"#{type}_folder"] + "/#{file}"
153
- else
154
- path = file
155
- end
156
-
157
- if File.exists? "#{path}.#{engine}"
158
- scope.render path: "#{path}.#{engine}"
159
- elsif File.exists? "#{path}.#{type}"
160
- File.read "#{path}.#{type}"
161
- elsif File.exists?(path) && path[/\.#{type}$/]
162
- File.read path
163
- elsif File.exists? path
164
- begin
165
- scope.render path: path
166
- rescue
167
- File.read path
168
- end
169
- end
170
- end
171
- end
172
- end
173
- end
174
- end
175
-
176
- register_plugin(:assets, Assets)
177
- end
178
- end