plezi 0.16.0 → 0.16.1
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 +4 -4
- data/CHANGELOG.md +8 -0
- data/exe/plezi +1 -0
- data/lib/plezi/render/sass.rb +44 -44
- data/lib/plezi/render/sassc.rb +61 -0
- data/lib/plezi/router/assets.rb +2 -0
- data/lib/plezi/version.rb +1 -1
- data/resources/config.ru +1 -1
- data/resources/mini_app.rb +3 -0
- data/resources/routes.rb +3 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 45f6afcb048d7e718df8f9eced81ed797c6591656da5bdc961cb83becb1a1fd7
|
4
|
+
data.tar.gz: d99fba485b851dbf8c914e50c1e34d389e760981aaaf0d26249e098affb03e3e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5f3daa504ea44e1fdf5f70ea0524fa39f79167fca6a1916232b3b21d7ce015e004e172e56987843150674c239151a2aef483325c675b0c432e9e986ebb675f7d
|
7
|
+
data.tar.gz: 2a0018cd9f6bc7717db68aafd7891f728023c8356db82627cafb8fbb04ce32481fe1914ca746cc91e9fa1cb96fdd73b6f72f6e9bfc7436e4adcb93303a83d4d4
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,14 @@
|
|
2
2
|
|
3
3
|
***
|
4
4
|
|
5
|
+
Change log v.0.16.1
|
6
|
+
|
7
|
+
**Fix**: Fix the application boilerplate code, fixing a typo in the resulting `config.ru` which resulted in boilerplate code failing to execute. Credit to @namiwang (Nami WANG) for PR #28.
|
8
|
+
|
9
|
+
**Update**: Added support for SassC for assets routing.
|
10
|
+
|
11
|
+
***
|
12
|
+
|
5
13
|
Change log v.0.16.0
|
6
14
|
|
7
15
|
**Update**: update gem dependency to utilize `iodine` 0.5.x versions.
|
data/exe/plezi
CHANGED
@@ -75,6 +75,7 @@ module Builder
|
|
75
75
|
app_tree['controllers'] ||= {}
|
76
76
|
app_tree['controllers']['example.rb'] ||= IO.read(Root.join('resources', 'ctrlr.rb')).gsub('appname', app_name)
|
77
77
|
app_tree['views'] ||= {}
|
78
|
+
app_tree['views']['assets'] ||= ''
|
78
79
|
app_tree['views']['welcome.html.erb'] ||= IO.read(Root.join('resources', 'mini_welcome_page.html')).gsub('appname', app_name)
|
79
80
|
app_tree['views']['404.html.erb'] ||= IO.read(Root.join('resources', '404.erb'))
|
80
81
|
app_tree['views']['500.html.erb'] ||= IO.read(Root.join('resources', '500.erb'))
|
data/lib/plezi/render/sass.rb
CHANGED
@@ -1,54 +1,54 @@
|
|
1
1
|
require 'plezi/render/has_cache'
|
2
|
-
#
|
3
|
-
unless defined?(::
|
4
|
-
|
5
|
-
|
6
|
-
|
2
|
+
# Support for Sass if SassC wasn't loaded.
|
3
|
+
unless defined?(::SassC)
|
4
|
+
unless defined?(::Sass)
|
5
|
+
begin
|
6
|
+
require('sass')
|
7
|
+
rescue Exception
|
7
8
|
|
9
|
+
end
|
8
10
|
end
|
9
|
-
end
|
10
|
-
|
11
|
-
if defined?(::Sass)
|
12
|
-
|
13
|
-
module Plezi
|
14
|
-
module Base
|
15
|
-
# This is a baker, not a renderer
|
16
|
-
module BakeSASS
|
17
|
-
extend HasCache
|
18
|
-
|
19
|
-
module_function
|
20
|
-
|
21
|
-
SASS_OPTIONS = { cache_store: Sass::CacheStores::Memory.new, style: (ENV['SASS_STYLE'] || ((ENV['ENV'] || ENV['RACK_ENV']) == 'production' ? :compressed : :nested)) }.dup
|
22
11
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
12
|
+
if defined?(::Sass)
|
13
|
+
module Plezi
|
14
|
+
module Base
|
15
|
+
# This is a baker, not a renderer
|
16
|
+
module BakeSASS
|
17
|
+
extend HasCache
|
18
|
+
|
19
|
+
module_function
|
20
|
+
|
21
|
+
SASS_OPTIONS = { cache_store: Sass::CacheStores::Memory.new, style: (ENV['SASS_STYLE'] || ((ENV['ENV'] || ENV['RACK_ENV']) == 'production' ? :compressed : :nested)) }.dup
|
22
|
+
|
23
|
+
# Bakes the SASS for the requested target, if a SASS source file is found.
|
24
|
+
def call(target)
|
25
|
+
return self[target] if File.extname(target) == '.map'.freeze
|
26
|
+
review_cache("#{target}.scss", target) || review_cache("#{target}.sass", target)
|
27
|
+
end
|
28
|
+
|
29
|
+
def review_cache(filename, target)
|
30
|
+
return nil unless File.exist?(filename)
|
31
|
+
eng = self[filename]
|
32
|
+
return self[target] unless eng.nil? || refresh_sass?(filename)
|
33
|
+
self[filename] = (eng = Sass::Engine.for_file(filename, SASS_OPTIONS)).dependencies
|
34
|
+
map_name = "#{target}.map".freeze
|
35
|
+
css, map = eng.render_with_sourcemap(File.basename(map_name))
|
36
|
+
self[filename.to_sym] = Time.now
|
37
|
+
IO.write map_name, map.to_json(css_uri: File.basename(target))
|
38
|
+
self[target] = css
|
39
|
+
end
|
40
|
+
|
41
|
+
def refresh_sass?(sass)
|
42
|
+
mt = self[sass.to_sym]
|
43
|
+
return true if mt < File.mtime(sass)
|
44
|
+
self[sass].each { |e| return true if File.exist?(e.options[:filename]) && (File.mtime(e.options[:filename]) > mt) }
|
45
|
+
false
|
46
|
+
end
|
27
47
|
end
|
28
48
|
|
29
|
-
|
30
|
-
|
31
|
-
eng = self[filename]
|
32
|
-
return self[target] unless eng.nil? || refresh_sass?(filename)
|
33
|
-
self[filename] = (eng = Sass::Engine.for_file(filename, SASS_OPTIONS)).dependencies
|
34
|
-
map_name = "#{target}.map".freeze
|
35
|
-
css, map = eng.render_with_sourcemap(File.basename(map_name))
|
36
|
-
self[filename.to_sym] = Time.now
|
37
|
-
IO.write map_name, map.to_json(css_uri: File.basename(target))
|
38
|
-
self[target] = css
|
39
|
-
end
|
40
|
-
|
41
|
-
def refresh_sass?(sass)
|
42
|
-
mt = self[sass.to_sym]
|
43
|
-
return true if mt < File.mtime(sass)
|
44
|
-
self[sass].each { |e| return true if File.exist?(e.options[:filename]) && (File.mtime(e.options[:filename]) > mt) }
|
45
|
-
false
|
46
|
-
end
|
49
|
+
::Plezi::AssetBaker.register :css, ::Plezi::Base::BakeSASS
|
50
|
+
::Plezi::AssetBaker.register :map, ::Plezi::Base::BakeSASS
|
47
51
|
end
|
48
|
-
|
49
|
-
::Plezi::AssetBaker.register :css, ::Plezi::Base::BakeSASS
|
50
|
-
::Plezi::AssetBaker.register :map, ::Plezi::Base::BakeSASS
|
51
52
|
end
|
52
53
|
end
|
53
|
-
|
54
54
|
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'plezi/render/has_cache'
|
2
|
+
# Redcarpet might not be available, if so, allow the require to throw it's exception.
|
3
|
+
unless defined?(::SassC)
|
4
|
+
begin
|
5
|
+
require('sassc')
|
6
|
+
rescue Exception
|
7
|
+
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
if defined?(::SassC)
|
12
|
+
|
13
|
+
module Plezi
|
14
|
+
module Base
|
15
|
+
# This is a baker, not a renderer
|
16
|
+
module BakeSASS
|
17
|
+
extend HasCache
|
18
|
+
|
19
|
+
SCSSC_OPTIONS = { filename: :filename, source_map_file: ((ENV['ENV'] || ENV['RACK_ENV']) == 'production' ? false : true), source_map_embed: ((ENV['ENV'] || ENV['RACK_ENV']) == 'production' ? false : true), load_paths: :load_paths, style: (ENV['SASS_STYLE'] || ((ENV['ENV'] || ENV['RACK_ENV']) == 'production' ? :compressed : :nested)) }.dup
|
20
|
+
|
21
|
+
module_function
|
22
|
+
|
23
|
+
# Bakes the SASS for the requested target, if a SASS source file is found.
|
24
|
+
def call(target)
|
25
|
+
return self[target] if File.extname(target) == '.map'.freeze
|
26
|
+
load_target("#{target}.scss", target) || load_target("#{target}.sass", target)
|
27
|
+
end
|
28
|
+
|
29
|
+
def load_target(filename, target)
|
30
|
+
return nil unless File.exist?(filename)
|
31
|
+
eng = self[filename]
|
32
|
+
return self[target] unless eng.nil? || refresh_sass?(filename)
|
33
|
+
map_name = "#{target}.map".freeze
|
34
|
+
opt = SCSSC_OPTIONS.dup
|
35
|
+
opt[:source_map_file] = map_name if opt[:source_map_file]
|
36
|
+
opt[:filename] = filename
|
37
|
+
opt[:load_paths] = [ File.basename(target) ]
|
38
|
+
data = IO.binread(filename)
|
39
|
+
eng = SassC::Engine.new(data, opt)
|
40
|
+
css = eng.render
|
41
|
+
map = eng.source_map
|
42
|
+
self[filename] = eng.dependencies
|
43
|
+
self[filename.to_sym] = Time.now
|
44
|
+
IO.write map_name, map.to_json(css_uri: File.basename(target))
|
45
|
+
self[target] = css
|
46
|
+
end
|
47
|
+
|
48
|
+
def refresh_sass?(sass)
|
49
|
+
mt = self[sass.to_sym]
|
50
|
+
return true if mt < File.mtime(sass)
|
51
|
+
self[sass].each { |e| return true if File.exist?(e.options[:filename]) && (File.mtime(e.options[:filename]) > mt) }
|
52
|
+
false
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
::Plezi::AssetBaker.register :css, ::Plezi::Base::BakeSASS
|
57
|
+
::Plezi::AssetBaker.register :map, ::Plezi::Base::BakeSASS
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
data/lib/plezi/router/assets.rb
CHANGED
data/lib/plezi/version.rb
CHANGED
data/resources/config.ru
CHANGED
data/resources/mini_app.rb
CHANGED
@@ -31,5 +31,8 @@ ENV['PL_REDIS_URL'] ||= ENV['REDIS_URL'] ||
|
|
31
31
|
# Map the views folder to the template root (for the {#render} function).
|
32
32
|
Plezi.templates = Root.join('views').to_s
|
33
33
|
|
34
|
+
# Map the views/assets folder to the asset root (for the assets route).
|
35
|
+
Plezi.assets = Root.join('views/assets').to_s
|
36
|
+
|
34
37
|
# load routes.
|
35
38
|
load Root.join('routes.rb').to_s
|
data/resources/routes.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: plezi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.16.
|
4
|
+
version: 0.16.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Boaz Segev
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-08-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: iodine
|
@@ -123,6 +123,7 @@ files:
|
|
123
123
|
- lib/plezi/render/markdown.rb
|
124
124
|
- lib/plezi/render/render.rb
|
125
125
|
- lib/plezi/render/sass.rb
|
126
|
+
- lib/plezi/render/sassc.rb
|
126
127
|
- lib/plezi/render/slim.rb
|
127
128
|
- lib/plezi/router/adclient.rb
|
128
129
|
- lib/plezi/router/assets.rb
|
@@ -166,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
166
167
|
version: '0'
|
167
168
|
requirements: []
|
168
169
|
rubyforge_project:
|
169
|
-
rubygems_version: 2.7.
|
170
|
+
rubygems_version: 2.7.6
|
170
171
|
signing_key:
|
171
172
|
specification_version: 4
|
172
173
|
summary: The Plezi.io Ruby Framework for real time web applications.
|