foxpage 0.2.1 → 0.2.2
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/Gemfile.lock +7 -9
- data/lib/fox_page/app_parts/sprockets.rb +1 -0
- data/lib/fox_page/builders/pages.rb +18 -6
- data/lib/fox_page/controller.rb +2 -0
- data/lib/fox_page/helpers/assets_helper.rb +4 -0
- data/lib/fox_page/model.rb +5 -2
- data/lib/fox_page/router.rb +18 -12
- data/lib/fox_page/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8037f2e78043aa067766f40fff0d279c4c6b94e205656d3897ea4fa820120928
|
4
|
+
data.tar.gz: c38fa73ab21a672d01ac81de9131e7855805cadbde981a46a97fc5b891f6d8c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d100781bd93a0f7c5900f8f8a0fc062a0d4ff42459af50d8b36684b089ff68774a739458e492824079bf8bbd108bedf88d1d2b3aabe8118480db89ef3c7dd60e
|
7
|
+
data.tar.gz: 938431d7c2787a57c3f31187b6fafc0259f6bde44e8e4e8216af2255c7ca12c2610304fbdf8648b9ed4198b6eb03c5228224994b85068f97725fd67fde1082fe
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
foxpage (0.2.
|
4
|
+
foxpage (0.2.2)
|
5
5
|
haml (~> 5.1)
|
6
6
|
listen (~> 3.1)
|
7
7
|
sassc (~> 2.0)
|
@@ -22,10 +22,9 @@ GEM
|
|
22
22
|
temple (>= 0.8.0)
|
23
23
|
tilt
|
24
24
|
jaro_winkler (1.5.2)
|
25
|
-
listen (3.
|
26
|
-
rb-fsevent (~> 0.
|
27
|
-
rb-inotify (~> 0.9, >= 0.9.
|
28
|
-
ruby_dep (~> 1.2)
|
25
|
+
listen (3.2.0)
|
26
|
+
rb-fsevent (~> 0.10, >= 0.10.3)
|
27
|
+
rb-inotify (~> 0.9, >= 0.9.10)
|
29
28
|
parallel (1.17.0)
|
30
29
|
parser (2.6.3.0)
|
31
30
|
ast (~> 2.4.0)
|
@@ -56,18 +55,17 @@ GEM
|
|
56
55
|
ruby-progressbar (~> 1.7)
|
57
56
|
unicode-display_width (>= 1.4.0, < 1.6)
|
58
57
|
ruby-progressbar (1.10.1)
|
59
|
-
ruby_dep (1.5.0)
|
60
58
|
sassc (2.2.1)
|
61
59
|
ffi (~> 1.9)
|
62
|
-
sprockets (4.0.0
|
60
|
+
sprockets (4.0.0)
|
63
61
|
concurrent-ruby (~> 1.0)
|
64
62
|
rack (> 1, < 3)
|
65
63
|
temple (0.8.2)
|
66
64
|
thor (0.20.3)
|
67
65
|
tilt (2.0.10)
|
68
66
|
unicode-display_width (1.5.0)
|
69
|
-
webrick (1.
|
70
|
-
zeitwerk (2.1
|
67
|
+
webrick (1.5.0)
|
68
|
+
zeitwerk (2.2.1)
|
71
69
|
|
72
70
|
PLATFORMS
|
73
71
|
ruby
|
@@ -13,6 +13,7 @@ module FoxPage
|
|
13
13
|
env = ::Sprockets::Environment.new(root)
|
14
14
|
env.append_path("app/assets/stylesheets")
|
15
15
|
env.append_path("app/assets/images")
|
16
|
+
env.append_path("app/assets/javascripts")
|
16
17
|
|
17
18
|
manifest = ::Sprockets::Manifest.new(
|
18
19
|
env, "./#{OUTPUT_DIRECTORY}/assets/.sprockets_manifest.json"
|
@@ -12,12 +12,7 @@ module FoxPage
|
|
12
12
|
def build_pages
|
13
13
|
app.routes.each do |path, route|
|
14
14
|
if route.generate_all
|
15
|
-
|
16
|
-
|
17
|
-
model.all.each do |item|
|
18
|
-
target_path = format(path, id: item.id)
|
19
|
-
build_single_page(target_path, route, id: item.id)
|
20
|
-
end
|
15
|
+
build_all_the_pages(path, route)
|
21
16
|
next
|
22
17
|
end
|
23
18
|
|
@@ -25,6 +20,23 @@ module FoxPage
|
|
25
20
|
end
|
26
21
|
end
|
27
22
|
|
23
|
+
def build_all_the_pages(path, route)
|
24
|
+
enumerable =
|
25
|
+
if route.generate_all.is_a?(Symbol)
|
26
|
+
model = route.generate_all.camelize.constantize
|
27
|
+
model.all
|
28
|
+
else
|
29
|
+
route.generate_all.call
|
30
|
+
end
|
31
|
+
|
32
|
+
enumerable.each_with_index do |item, index|
|
33
|
+
id = (item.respond_to?(:id) && item.id) || index
|
34
|
+
# have page numbers start with 1
|
35
|
+
target_path = format(path, id: id == index ? id + 1 : id)
|
36
|
+
build_single_page(target_path, route, id: id)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
28
40
|
def build_single_page(target_path, route, params = {})
|
29
41
|
if params.empty?
|
30
42
|
params_log_str = ""
|
data/lib/fox_page/controller.rb
CHANGED
@@ -15,6 +15,8 @@ module FoxPage
|
|
15
15
|
end
|
16
16
|
|
17
17
|
# Instructs the site builder to generate pages for all records of `model`.
|
18
|
+
# model can be a symbol (which will use an actual FoxPage::Model), or a
|
19
|
+
# Proc returning an Enumerable.
|
18
20
|
def self.generate_all(model)
|
19
21
|
@__generate_all = model
|
20
22
|
end
|
@@ -13,6 +13,10 @@ module FoxPage
|
|
13
13
|
def stylesheet_link_tag(source, prepend: "")
|
14
14
|
%(<link rel="stylesheet" href=#{asset_path(source, prepend: prepend).inspect} />)
|
15
15
|
end
|
16
|
+
|
17
|
+
def javascript_include_tag(source, prepend: "")
|
18
|
+
%(<script language="JavaScript" src=#{asset_path(source, prepend: prepend).inspect}></script>)
|
19
|
+
end
|
16
20
|
end
|
17
21
|
end
|
18
22
|
end
|
data/lib/fox_page/model.rb
CHANGED
@@ -60,10 +60,13 @@ module FoxPage
|
|
60
60
|
when :dir
|
61
61
|
default_opts = { extension: :md }
|
62
62
|
opts = default_opts.merge(@__storage_type_opts)
|
63
|
-
|
63
|
+
base_data_dir = app.root.join("data", data_name)
|
64
|
+
files = Dir[File.join(base_data_dir, "**", "*.#{opts.fetch(:extension)}")]
|
64
65
|
|
65
66
|
@__data = files.map do |fn|
|
66
|
-
id = File.
|
67
|
+
id = File.join(File.dirname(fn).sub(/\A#{base_data_dir}/, ""),
|
68
|
+
File.basename(fn, ".#{opts.fetch(:extension)}"))
|
69
|
+
.sub(/\A(?:#{File::SEPARATOR})/, "")
|
67
70
|
content = IO.read(fn)
|
68
71
|
|
69
72
|
front_matter = {}
|
data/lib/fox_page/router.rb
CHANGED
@@ -39,31 +39,37 @@ module FoxPage
|
|
39
39
|
controller = controller_for(base_name)
|
40
40
|
base_path = "/#{path}"
|
41
41
|
|
42
|
-
#
|
43
|
-
|
44
|
-
|
45
|
-
method_name = :show
|
46
|
-
validate_controller_method(controller, method_name)
|
47
|
-
route_path = "#{base_path}/%<id>s"
|
42
|
+
# insert a route with id 0 as index if generate_all was specified, but without the /id in the path
|
43
|
+
if actions.find(:index)
|
44
|
+
validate_controller_method(controller, :index)
|
48
45
|
|
49
|
-
routes[
|
46
|
+
routes[base_path] = make_target(
|
50
47
|
base_name: base_name,
|
51
48
|
controller: controller,
|
52
|
-
method_name:
|
53
|
-
params: {},
|
54
|
-
generate_all:
|
49
|
+
method_name: :index,
|
50
|
+
params: { id: 0 },
|
51
|
+
generate_all: nil
|
55
52
|
)
|
56
53
|
end
|
57
54
|
|
58
55
|
actions.each do |action|
|
59
56
|
method_name = action
|
60
57
|
validate_controller_method(controller, method_name)
|
58
|
+
|
59
|
+
generate_all = controller.instance_variable_get(:@__generate_all_for)&.[](method_name)
|
60
|
+
|
61
61
|
route_path = method_name == :index ? base_path : "#{base_path}/#{method_name}"
|
62
|
+
if generate_all
|
63
|
+
# :show gets a pretty id, whereas :index (and others) get it prefixed with /page
|
64
|
+
route_path = method_name == :show ? "#{base_path}/%<id>s" : "#{route_path}/page/%<id>s"
|
65
|
+
end
|
62
66
|
|
63
|
-
routes[route_path]
|
67
|
+
routes[route_path] ||= make_target(
|
64
68
|
base_name: base_name,
|
65
69
|
controller: controller,
|
66
|
-
method_name: method_name
|
70
|
+
method_name: method_name,
|
71
|
+
params: {},
|
72
|
+
generate_all: generate_all
|
67
73
|
)
|
68
74
|
end
|
69
75
|
end
|
data/lib/fox_page/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foxpage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Georg Gadinger
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-12-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|