statique 0.1.2 → 0.1.3

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
  SHA256:
3
- metadata.gz: d2054cde4943aaa109efca61aaf7324a13c7b79f6799799c989a0a1741c3ca8f
4
- data.tar.gz: 72d87387e9f0efd5221f243a5ff20e005d472117d251385c91b3e2b1c48875ab
3
+ metadata.gz: dd7fb4476908430cae60c027294cfa598de01c78d0d9ca6b858051cd5e7b66c8
4
+ data.tar.gz: 919b4478902cc46c88a1e7ea9854ca6f7ec12c2ce3cfbdcd05f08e1147788aa6
5
5
  SHA512:
6
- metadata.gz: cbbd3939295f1d514c2d88d359d4378b40c035c9f1dba4277520595988a156bdd03d38699d34030850eb99051beae0f3f03740479f0db2a5be284083d056a843
7
- data.tar.gz: 299de1732a45c052a472ad81584329aae57b429d5c6eade81af2934c10171f8a6347f696b9cb392e818f4b38d1e77380c8995111a6e03ac6c4edf43528ede304
6
+ metadata.gz: ea8e8cac8cf7a453bbe5a2ddf99b147a2d185e105a80447d79d963be99577f89d1975facfae921bc1582e2140e2c21abc72260bd68415d8dcfbbf9dc8aec25e5
7
+ data.tar.gz: 76836fa5e763d1184ddab6133501d123e389767a97410952d88206d6f5578efb955004d3ab4989d0b978fb8eb9453e274c32c7a968953bf45096dc97bee5c4ad
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ### [0.1.3](https://github.com/pusewicz/statique/compare/v0.1.1...v0.1.3) (2022-02-16)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * Do not rewrite paths to keep relative paths ([285eaf3](https://github.com/pusewicz/statique/commit/285eaf3446d7de2dba4fc3b55e7dd87b16092a04))
9
+ * Initial values of the paginator ([3cbb0e0](https://github.com/pusewicz/statique/commit/3cbb0e0d680cae38e8cc65cde1299d0fca18a601))
10
+ * Update delegated root_url ([ca5ea27](https://github.com/pusewicz/statique/commit/ca5ea273d9e636ed0481fa36fc298769a8697e95))
11
+
3
12
  ## [0.1.0] - 2022-01-12
4
13
 
5
14
  - Initial release
data/lib/statique/app.rb CHANGED
@@ -3,19 +3,10 @@
3
3
  require "roda"
4
4
  require "slim"
5
5
  require "digest/sha1"
6
- require "rack/rewrite"
7
- require "pagy"
8
- require "pagy/extras/array"
9
6
 
10
7
  class Statique
11
8
  class App < Roda
12
9
  extend Forwardable
13
- include Pagy::Backend
14
-
15
- PAGE_REGEX = /(.*)\/page\/(\d+)/
16
- use Rack::Rewrite do
17
- rewrite PAGE_REGEX, "$1?page=$2"
18
- end
19
10
 
20
11
  def_delegators :Statique, :url, :root_url
21
12
 
@@ -42,30 +33,36 @@ class Statique
42
33
  end
43
34
  end
44
35
 
45
- Statique.discover.documents.each do |document|
46
- Statique.ui.debug "Defining route", {path: document.path, file: document.file}
47
- static_get document.path do |r|
48
- @document = Statique.discover.documents.find { _1.file == document.file }
36
+ route do |r|
37
+ if Statique.mode.server?
38
+ r.public if Statique.configuration.paths.public.exist?
39
+ r.assets if Statique.configuration.paths.assets.exist?
40
+ end
41
+
42
+ path, page = r.env["REQUEST_PATH"].split("/page/")
49
43
 
44
+ document = Statique.discover.documents.find { _1.path == path }
45
+
46
+ r.on(proc { document }) do
50
47
  locals = {
51
48
  documents: Statique.discover.documents,
52
49
  collections: Statique.discover.collections,
53
- document: @document
50
+ document: document
54
51
  }
55
52
 
56
- if @document.meta.paginates
57
- @pagy, items = pagy_array(Statique.discover.collections[@document.meta.paginates].to_a, {page: r.params.fetch("page", 1)})
58
- locals[@document.meta.paginates.to_sym] = items
59
- locals[:paginator] = Paginator.new(@pagy, items, document.path)
53
+ if document.meta.paginates
54
+ paginator = Paginator.new(Statique.discover.collections[document.meta.paginates].to_a, document.path, page)
55
+ locals[document.meta.paginates.to_sym] = paginator.documents
56
+ locals[:paginator] = paginator
60
57
  end
61
58
 
62
59
  options = {
63
- engine: @document.engine_name,
64
- inline: @document.content,
60
+ engine: document.engine_name,
61
+ inline: document.content,
65
62
  locals:,
66
63
  layout_opts: {locals:},
67
- cache_key: Digest::SHA1.hexdigest(@document.file.to_s + @document.content),
68
- layout: "../layouts/#{@document.layout_name}"
64
+ cache_key: Digest::SHA1.hexdigest(document.file.to_s + document.content),
65
+ layout: "../layouts/#{document.layout_name}"
69
66
  }
70
67
 
71
68
  if document.layout_name
@@ -75,12 +72,5 @@ class Statique
75
72
  end
76
73
  end
77
74
  end
78
-
79
- if Statique.mode.server?
80
- route do |r|
81
- r.public if Statique.configuration.paths.public.exist?
82
- r.assets if Statique.configuration.paths.assets.exist?
83
- end
84
- end
85
75
  end
86
76
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "set"
4
+
3
5
  class Statique
4
6
  class Discover
5
7
  attr_reader :documents, :collections, :files
@@ -16,7 +16,7 @@ class Statique
16
16
  when "index.slim" then "/"
17
17
  when "index.md" then "/"
18
18
  else
19
- "/#{meta.permalink || basename.delete_suffix(extname).delete_prefix(Statique.paths.content.to_s)}"
19
+ "/#{meta.permalink || basename.delete_suffix(extname).delete_prefix(Statique.configuration.paths.content.to_s)}"
20
20
  end.freeze
21
21
  end
22
22
 
@@ -43,7 +43,7 @@ class Statique
43
43
  def pagination_pages
44
44
  return unless Statique.discover.collections.key?(meta.paginates)
45
45
  collection = Statique.discover.collections[meta.paginates]
46
- (collection.size.to_f / Pagy::DEFAULT[:items]).ceil
46
+ (collection.size.to_f / Paginator.per_page).ceil
47
47
  end
48
48
 
49
49
  def published_at
@@ -2,42 +2,49 @@
2
2
 
3
3
  class Statique
4
4
  class Paginator
5
- attr_reader :documents
5
+ attr_reader :page, :documents, :total_pages, :total_documents
6
6
 
7
- def initialize(pagy, documents, path)
8
- @pagy, @documents, @path = pagy, documents, path
7
+ def self.per_page
8
+ @per_page ||= 10
9
9
  end
10
10
 
11
- def page
12
- @pagy.page
13
- end
11
+ def initialize(documents, path, page)
12
+ @path, @page = path, [page.to_i, 1].max
14
13
 
15
- def total_pages
16
- @pagy.pages
14
+ @total_documents = documents.size
15
+ @offset = (self.class.per_page * (@page - 1))
16
+ @total_pages = (@total_documents.to_f / self.class.per_page).ceil
17
+ @documents = documents[@offset, self.class.per_page]
17
18
  end
18
19
 
19
- def total_documents
20
- @pagy.count
20
+ def per_page
21
+ self.class.per_page
21
22
  end
22
23
 
23
24
  def previous_page
24
- @pagy.prev
25
+ page = [1, @page - 1].max
26
+ if page == @page
27
+ nil
28
+ else
29
+ page
30
+ end
25
31
  end
26
32
 
27
33
  def previous_page_path
28
- page_path(@pagy.prev)
34
+ page_path(previous_page)
29
35
  end
30
36
 
31
37
  def next_page
32
- @pagy.next
38
+ page = [@total_pages, @page + 1].min
39
+ if page == @page
40
+ nil
41
+ else
42
+ page
43
+ end
33
44
  end
34
45
 
35
46
  def next_page_path
36
- page_path(@pagy.next)
37
- end
38
-
39
- def per_page
40
- @pagy.items
47
+ page_path(next_page)
41
48
  end
42
49
 
43
50
  private
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Statique
4
- VERSION = "0.1.2"
4
+ VERSION = "0.1.3"
5
5
  end
data/lib/statique.rb CHANGED
@@ -3,7 +3,6 @@
3
3
  require "front_matter_parser"
4
4
  require "hashie"
5
5
  require "pathname"
6
- require "pagy"
7
6
  require "rack"
8
7
  require "tty-logger"
9
8
 
@@ -16,11 +15,17 @@ require "statique/cli"
16
15
  require "statique/mode"
17
16
  require "statique/discover"
18
17
  require "statique/document"
18
+ require "statique/configuration"
19
+ require "statique/paginator"
19
20
 
20
21
  class Statique
21
22
  class Error < StandardError; end
22
23
 
23
24
  class << self
25
+ extend Forwardable
26
+
27
+ def_delegators :configuration, :root_url
28
+
24
29
  def configuration
25
30
  @configuration ||= Configuration.new
26
31
  end
@@ -48,7 +53,7 @@ class Statique
48
53
  end
49
54
 
50
55
  def url(document_or_path)
51
- File.join(root_url, document_or_path.is_a?(Document) ? document_or_path.path : document_or_path)
56
+ File.join(configuration.root_url, document_or_path.is_a?(Document) ? document_or_path.path : document_or_path)
52
57
  end
53
58
 
54
59
  def build_queue
data/statique.gemspec CHANGED
@@ -36,8 +36,6 @@ Gem::Specification.new do |spec|
36
36
  spec.add_dependency "front_matter_parser", "~> 1.0.1"
37
37
  spec.add_dependency "hashie", "~> 5.0.0"
38
38
  spec.add_dependency "memo_wise", "~> 1.6.0"
39
- spec.add_dependency "pagy", "~> 5.9.3"
40
- spec.add_dependency "rack-rewrite", "~> 1.5.1"
41
39
  spec.add_dependency "roda", "~> 3.52"
42
40
  spec.add_dependency "slim", "~> 4.1.0"
43
41
  spec.add_dependency "thor", "~> 1.2.1"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: statique
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Usewicz
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-02-15 00:00:00.000000000 Z
11
+ date: 2022-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: builder
@@ -94,34 +94,6 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: 1.6.0
97
- - !ruby/object:Gem::Dependency
98
- name: pagy
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: 5.9.3
104
- type: :runtime
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: 5.9.3
111
- - !ruby/object:Gem::Dependency
112
- name: rack-rewrite
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: 1.5.1
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: 1.5.1
125
97
  - !ruby/object:Gem::Dependency
126
98
  name: roda
127
99
  requirement: !ruby/object:Gem::Requirement
@@ -254,7 +226,7 @@ licenses:
254
226
  metadata:
255
227
  homepage_uri: https://github.com/pusewicz/statique
256
228
  source_code_uri: https://github.com/pusewicz/statique
257
- changelog_uri: https://raw.githubusercontent.com/pusewicz/statique/v0.1.2/CHANGELOG.md
229
+ changelog_uri: https://raw.githubusercontent.com/pusewicz/statique/v0.1.3/CHANGELOG.md
258
230
  post_install_message:
259
231
  rdoc_options: []
260
232
  require_paths: