statique 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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: