syntropy 0.9.1 → 0.10

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: ac20c68dfab62e2aab24c48477bf6fb456430385e9035c21365f025b3f766881
4
- data.tar.gz: 65991a442dc9b19e6f5bc3a6806de65f9fcc57cc82c4b1e20b2f4988ed76daa1
3
+ metadata.gz: 5a73932b30656f39aa80ecfdd0161a04bb6aff7d0895d24c092d89422bc5cebe
4
+ data.tar.gz: 07266a98667a5a9b45756d25a79abc0143f7f99f786fa8fde1e2a5d58f237392
5
5
  SHA512:
6
- metadata.gz: a1a30fbaa0a19a74b3828f8d840eef418da25f3ac74be36e38a9f3f7d4e3f9de4cb8e14ef806a27cff08986923c07f0dc7969ac70e6cb19c7f27bb1471fa69ee
7
- data.tar.gz: 91c8b4a5fe6ccef0241744163bd04294a62e50cae79e564f99b37a40c68075507436ae07c62a3539a89977a4f9980b53e140d28e51b2f4ceb5340bee925f5e1d
6
+ metadata.gz: e84b35bff3fd83e038488aa581710c79dd23adaa11777cdb2872fc06562f3e79e2ce000afd270677feaead75cff90a07a8e88f312b4fae4fcd4772cfa3b3c228
7
+ data.tar.gz: b8788e723ca3108c78e65bcd445fa91184e0835f602b1fdb46bf06add11681e61cc1429f6e9f72f415bc33b1b80e9dc7e56587881c02401e0e5ecde5d0551714
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## 0.10 2025-08-10
2
+
3
+ - Add query, execute methods to ConnectionPool
4
+ - Switch from Papercraft to P2
5
+
6
+ ## 0.9.2 2025-07-24
7
+
8
+ - Fix logging
9
+
1
10
  ## 0.9.1 2025-07-08
2
11
 
3
12
  - Update TP2
data/README.md CHANGED
@@ -42,8 +42,7 @@ Syntropy is based on:
42
42
  concurrent Ruby apps.
43
43
  - [Qeweney](https://github.com/digital-fabric/qeweney) a uniform interface for
44
44
  working with HTTP requests and responses.
45
- - [Papercraft](https://github.com/digital-fabric/papercraft) HTML templating
46
- with plain Ruby.
45
+ - [P2](https://github.com/digital-fabric/p2) HTML templating with plain Ruby.
47
46
  - [Extralite](https://github.com/digital-fabric/extralite) a fast and innovative
48
47
  SQLite wrapper for Ruby.
49
48
 
data/TODO.md CHANGED
@@ -1,3 +1,5 @@
1
+ - a way to inject cookies into the response
2
+
1
3
  - add support for applets
2
4
 
3
5
  - can be implemented as separate gems
data/lib/syntropy/app.rb CHANGED
@@ -4,7 +4,7 @@ require 'json'
4
4
  require 'yaml'
5
5
 
6
6
  require 'qeweney'
7
- require 'papercraft'
7
+ require 'p2'
8
8
 
9
9
  require 'syntropy/errors'
10
10
  require 'syntropy/file_watch'
@@ -45,7 +45,9 @@ module Syntropy
45
45
  # we do startup stuff asynchronously, in order to first let TP2 do its
46
46
  # setup tasks
47
47
  @machine.sleep 0.15
48
- @opts[:logger]&.call("Serving from #{File.expand_path(@location)}")
48
+ @opts[:logger]&.info(
49
+ message: "Serving from #{File.expand_path(@location)}"
50
+ )
49
51
  @router.start_file_watcher if opts[:watch_files]
50
52
  end
51
53
  end
@@ -137,15 +139,19 @@ module Syntropy
137
139
  def load_module(entry)
138
140
  ref = entry[:fn].gsub(%r{^#{@location}/}, '').gsub(/\.rb$/, '')
139
141
  o = @module_loader.load(ref)
140
- o.is_a?(Papercraft::Template) ? wrap_template(o) : o
142
+ o.is_a?(P2::Template) ? wrap_template(o) : o
141
143
  rescue Exception => e
142
- @opts[:logger]&.call("Error while loading module #{ref}: #{e.message}")
144
+ @opts[:logger]&.error(
145
+ message: "Error while loading module #{ref}",
146
+ error: e
147
+ )
143
148
  :invalid
144
149
  end
145
150
 
146
- def wrap_template(template)
151
+ def wrap_template(wrapper)
152
+ template = wrapper.proc
147
153
  lambda { |req|
148
- headers = { 'Content-Type' => template.mime_type }
154
+ headers = { 'Content-Type' => 'text/html' }
149
155
  req.respond_by_http_method(
150
156
  'head' => [nil, headers],
151
157
  'get' => -> { [template.render, headers] }
@@ -160,7 +166,7 @@ module Syntropy
160
166
  layout = @module_loader.load("_layout/#{atts[:layout]}")
161
167
  html = layout.apply(**atts) { emit_markdown(md) }.render
162
168
  else
163
- html = Papercraft.markdown(md)
169
+ html = P2.markdown(md)
164
170
  end
165
171
  html
166
172
  end
@@ -31,6 +31,14 @@ module Syntropy
31
31
  end
32
32
  end
33
33
 
34
+ def query(sql, *, **, &)
35
+ with_db { it.query(sql, *, **, &) }
36
+ end
37
+
38
+ def execute(sql, *, **)
39
+ with_db { it.execute(sql, *, **) }
40
+ end
41
+
34
42
  private
35
43
 
36
44
  def checkout
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'papercraft'
3
+ require 'p2'
4
4
 
5
5
  module Syntropy
6
6
  class ModuleLoader
@@ -32,7 +32,7 @@ module Syntropy
32
32
 
33
33
  mod_body = IO.read(fn)
34
34
  mod_ctx = Class.new(Syntropy::Module)
35
- mod_ctx.prepare(loader: self, env: @env)
35
+ mod_ctx.prepare(loader: self, env: @env, ref: ref)
36
36
  mod_ctx.module_eval(mod_body, fn, 1)
37
37
 
38
38
  export_value = mod_ctx.__export_value__
@@ -64,10 +64,11 @@ module Syntropy
64
64
  end
65
65
 
66
66
  class << self
67
- def prepare(loader:, env:)
67
+ def prepare(loader:, env:, ref:)
68
68
  @loader = loader
69
69
  @env = env
70
70
  @machine = env[:machine]
71
+ @ref = ref
71
72
  const_set(:MODULE, self)
72
73
  end
73
74
 
@@ -81,9 +82,13 @@ module Syntropy
81
82
  @__export_value__ = ref
82
83
  end
83
84
 
84
- def template(&block)
85
- Papercraft.html(&block)
85
+ def template(proc = nil, &block)
86
+ proc ||= block
87
+ raise "No template block/proc given" if !proc
88
+
89
+ P2::Template.new(proc)
86
90
  end
91
+ alias_method :html, :template
87
92
 
88
93
  def route_by_host(map = nil)
89
94
  root = @env[:location]
@@ -26,7 +26,9 @@ module Syntropy
26
26
  end
27
27
 
28
28
  def start_file_watcher
29
- @opts[:logger]&.call('Watching for file changes...', nil)
29
+ @opts[:logger]&.info(
30
+ message: 'Watching for file changes...'
31
+ )
30
32
  @machine.spin { file_watcher_loop }
31
33
  end
32
34
 
@@ -170,7 +172,9 @@ module Syntropy
170
172
  end
171
173
 
172
174
  def handle_changed_file(event, fn)
173
- @opts[:logger]&.call("Detected changed file: #{event} #{fn}")
175
+ @opts[:logger]&.info(
176
+ message: "Detected changed file: #{event} #{fn}"
177
+ )
174
178
  @module_loader&.invalidate(fn)
175
179
  case event
176
180
  when :added
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Syntropy
4
- VERSION = '0.9.1'
4
+ VERSION = '0.10'
5
5
  end
data/syntropy.gemspec CHANGED
@@ -21,9 +21,9 @@ Gem::Specification.new do |s|
21
21
  s.required_ruby_version = '>= 3.4'
22
22
  s.executables = ['syntropy']
23
23
 
24
- s.add_dependency 'extralite', '2.12'
25
- s.add_dependency 'json', '2.12.2'
26
- s.add_dependency 'papercraft', '1.4'
24
+ s.add_dependency 'extralite', '2.13'
25
+ s.add_dependency 'json', '2.13.2'
26
+ s.add_dependency 'p2', '2.4'
27
27
  s.add_dependency 'qeweney', '0.21'
28
28
  s.add_dependency 'tp2', '0.14.1'
29
29
  s.add_dependency 'uringmachine', '0.16'
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.9.1
4
+ version: '0.10'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner
@@ -15,42 +15,42 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: '2.12'
18
+ version: '2.13'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: '2.12'
25
+ version: '2.13'
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: json
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - '='
31
31
  - !ruby/object:Gem::Version
32
- version: 2.12.2
32
+ version: 2.13.2
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - '='
38
38
  - !ruby/object:Gem::Version
39
- version: 2.12.2
39
+ version: 2.13.2
40
40
  - !ruby/object:Gem::Dependency
41
- name: papercraft
41
+ name: p2
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - '='
45
45
  - !ruby/object:Gem::Version
46
- version: '1.4'
46
+ version: '2.4'
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: '1.4'
53
+ version: '2.4'
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: qeweney
56
56
  requirement: !ruby/object:Gem::Requirement
@@ -258,7 +258,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
258
258
  - !ruby/object:Gem::Version
259
259
  version: '0'
260
260
  requirements: []
261
- rubygems_version: 3.6.8
261
+ rubygems_version: 3.6.9
262
262
  specification_version: 4
263
263
  summary: Syntropic Web Framework
264
264
  test_files: []