syntropy 0.10.1 → 0.11

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: 24c519f5104a14a69acf3cf847068682158609321964e4d53f4fe9a28f747bd3
4
- data.tar.gz: 6bfac0527f800ff4106639ef25931759af06ab20cf4742abd46eb3d2996437e1
3
+ metadata.gz: 6f33d7721410d70a9d5b86977c73b36f6a410a6534c253269df5f2d47123a54f
4
+ data.tar.gz: 6f961a74dd9fa299296d6699244076dfc09fa3697faad7c28cc6c2db81f5fb46
5
5
  SHA512:
6
- metadata.gz: 42e9062d2ab5f18a14deaa61e2a6b33a1cbff5d9e5ee4e7f07fbbf7e57d67c680ef3b9b243234b4dea89470eeb74cfdbe254a3552515b8fa0ed3434aa543f72d
7
- data.tar.gz: bf0046c2b6df44a4d48ae5ece3201695bfd871ecfdac49d201f478abb6c3927584a1590ca46d52af6024210f179baf94a7e644a9971c37d4fc598d7582c85f2f
6
+ metadata.gz: 158e46fd1e09da1af72a5ffd50a1ccde7699ce52f9a9d7a317903e3aa29234a5f924371712571b4d0188bcc5e7484b7bced4be7ee7440140ba5cfb07b492bccf
7
+ data.tar.gz: 6a45ef64e1ef65cf5c86c15dd5858a3f028343c55f68be253d07626800c4f534782898e4e7d83697fb324b4169050ce913a911575d31936c5a852e12f0eb4be0
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.11 2025-08-17
2
+
3
+ - Upgrade to P2 2.8
4
+
1
5
  ## 0.10.1 2025-08-10
2
6
 
3
7
  - Fix ModuleLoader.wrap_module to work correctly with P2::Template
data/README.md CHANGED
@@ -164,7 +164,7 @@ export template { |**props|
164
164
  h1 'Foo'
165
165
  }
166
166
  content {
167
- emit_yield(**props)
167
+ render_yield(**props)
168
168
  }
169
169
  }
170
170
 
@@ -5,7 +5,7 @@ export templ { |*a, **b|
5
5
  link rel: 'stylesheet', type: 'text/css', href: '/assets/css/style.css'
6
6
  }
7
7
  body {
8
- emit_yield(*a, **b)
8
+ render_yield(*a, **b)
9
9
  }
10
10
  }
11
11
  }
data/lib/syntropy/app.rb CHANGED
@@ -116,7 +116,7 @@ module Syntropy
116
116
  headers = { 'Content-Type' => entry[:mime_type] }
117
117
  req.respond_by_http_method(
118
118
  'head' => [nil, headers],
119
- 'get' => -> { [render_markdown(entry[:fn]), headers] }
119
+ 'get' => -> { [render_markdown(entry), headers] }
120
120
  )
121
121
  end
122
122
 
@@ -139,7 +139,7 @@ module Syntropy
139
139
  def load_module(entry)
140
140
  ref = entry[:fn].gsub(%r{^#{@location}/}, '').gsub(/\.rb$/, '')
141
141
  o = @module_loader.load(ref)
142
- o.is_a?(P2::Template) ? wrap_template(o) : o
142
+ wrap_module(o)
143
143
  rescue Exception => e
144
144
  @opts[:logger]&.error(
145
145
  message: "Error while loading module #{ref}",
@@ -148,7 +148,18 @@ module Syntropy
148
148
  :invalid
149
149
  end
150
150
 
151
- def wrap_template(wrapper)
151
+ def wrap_module(mod)
152
+ case mod
153
+ when P2::Template
154
+ wrap_p2_template(mod)
155
+ when Papercraft::Template
156
+ wrap_papercraft_template(mod)
157
+ else
158
+ mod
159
+ end
160
+ end
161
+
162
+ def wrap_p2_template(wrapper)
152
163
  template = wrapper.proc
153
164
  lambda { |req|
154
165
  headers = { 'Content-Type' => 'text/html' }
@@ -159,16 +170,36 @@ module Syntropy
159
170
  }
160
171
  end
161
172
 
162
- def render_markdown(fn)
163
- atts, md = Syntropy.parse_markdown_file(fn, @opts)
173
+ def wrap_papercraft_template(template)
174
+ lambda { |req|
175
+ headers = { 'Content-Type' => template.mime_type }
176
+ req.respond_by_http_method(
177
+ 'head' => [nil, headers],
178
+ 'get' => -> { [template.render, headers] }
179
+ )
180
+ }
181
+
182
+ end
183
+
184
+ def render_markdown(entry)
185
+ atts, md = Syntropy.parse_markdown_file(entry[:fn], @opts)
164
186
 
165
- if atts[:layout]
166
- layout = @module_loader.load("_layout/#{atts[:layout]}")
167
- html = layout.apply(**atts) { emit_markdown(md) }.render
187
+ if (layout = atts[:layout])
188
+ entry[:applied_layouts] ||= {}
189
+ proc = entry[:applied_layouts][layout] ||= markdown_layout_proc(layout)
190
+ html = proc.render(md: md, **atts)
168
191
  else
169
192
  html = P2.markdown(md)
170
193
  end
171
194
  html
172
195
  end
196
+
197
+ def markdown_layout_proc(layout)
198
+ layout = @module_loader.load("_layout/#{layout}")
199
+ puts '*' * 40
200
+ puts layout.proc.compiled_code
201
+ puts
202
+ layout.apply { |md:, **atts| markdown(md) }
203
+ end
173
204
  end
174
205
  end
@@ -50,10 +50,10 @@ module Syntropy
50
50
  ->(req) { o.send(export_value, req) }
51
51
  when String
52
52
  ->(req) { req.respond(export_value) }
53
- when Proc, P2::Template
54
- export_value
55
- else
53
+ when Class
56
54
  export_value.new(@env)
55
+ else
56
+ export_value
57
57
  end
58
58
  end
59
59
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Syntropy
4
- VERSION = '0.10.1'
4
+ VERSION = '0.11'
5
5
  end
data/lib/syntropy.rb CHANGED
@@ -3,6 +3,8 @@
3
3
  require 'qeweney'
4
4
  require 'uringmachine'
5
5
  require 'tp2'
6
+ require 'p2'
7
+ require 'papercraft'
6
8
 
7
9
  require 'syntropy/app'
8
10
  require 'syntropy/connection_pool'
data/syntropy.gemspec CHANGED
@@ -23,7 +23,8 @@ Gem::Specification.new do |s|
23
23
 
24
24
  s.add_dependency 'extralite', '2.13'
25
25
  s.add_dependency 'json', '2.13.2'
26
- s.add_dependency 'p2', '2.4'
26
+ s.add_dependency 'p2', '2.8'
27
+ s.add_dependency 'papercraft', '1.4'
27
28
  s.add_dependency 'qeweney', '0.21'
28
29
  s.add_dependency 'tp2', '0.14.1'
29
30
  s.add_dependency 'uringmachine', '0.16'
@@ -3,6 +3,6 @@ export template { |**props|
3
3
  h1 'Foo'
4
4
  }
5
5
  content {
6
- emit_yield(**props)
6
+ render_yield(**props)
7
7
  }
8
8
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: syntropy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1
4
+ version: '0.11'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner
@@ -43,14 +43,28 @@ dependencies:
43
43
  requirements:
44
44
  - - '='
45
45
  - !ruby/object:Gem::Version
46
- version: '2.4'
46
+ version: '2.8'
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - '='
52
52
  - !ruby/object:Gem::Version
53
- version: '2.4'
53
+ version: '2.8'
54
+ - !ruby/object:Gem::Dependency
55
+ name: papercraft
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - '='
59
+ - !ruby/object:Gem::Version
60
+ version: '1.4'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - '='
66
+ - !ruby/object:Gem::Version
67
+ version: '1.4'
54
68
  - !ruby/object:Gem::Dependency
55
69
  name: qeweney
56
70
  requirement: !ruby/object:Gem::Requirement