vita 0.2.0 → 0.3.0

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: 86ecbe16917de241d894f019175d823a4e06606cee81f5d20534210e159ac814
4
- data.tar.gz: f497eab7e3b8e2cd4828a9a39f16e792653f2583c4fa4e3b21b6fc6cdb75e806
3
+ metadata.gz: 1718643c6633bbe89990a662fd29739153a7233dd21352d8784b7af27a74383a
4
+ data.tar.gz: 89cf60afa27e2b06d8d43251c9ebe64f81a2f7b19ac8c3ecc154acd95af77943
5
5
  SHA512:
6
- metadata.gz: 73a39e21fdfe22f0b143b387e8ed06edc534ed8cd46e519f70a395b7307bc354304780111d05ee9753986393521d6f6202eeb687c99c83d770bebd623a79ffe7
7
- data.tar.gz: 5fea8bdbc8437cb18639f6f4bc5f88205ecac87621a75e57245097c95ff8000c41eabd65424ee6660c4cebb59b50a021781b2c9dfd6993d29d077dc9c1a0b4ab
6
+ metadata.gz: 18f962183bc9bf35ca240b8820ca882770b6edc3b82d0a183f3adf6553044c207ec3705dc2f6098e2113618ac9258c0d6e39c8356fd4d383989cf8cb0aed3303
7
+ data.tar.gz: e129b89cc3194e9eca15fdb1e14a786150df89a53c278fef0f250e0449d520e09f2dad7a2913158bc532736fad5d8f4b24d0bfd24dcd85d6986a7e9e46280cdd
data/README.md CHANGED
@@ -33,6 +33,8 @@ __ _(_) |_ __ _
33
33
  Starting Vita at http://localhost:9000
34
34
  ```
35
35
 
36
+ Your web browser refreshes as you make changes to your files.
37
+
36
38
  To publish:
37
39
 
38
40
  ```
data/lib/vita/garden.rb CHANGED
@@ -15,7 +15,11 @@ module Vita
15
15
  raise Vita::Error.new("Directory not found at #{root}")
16
16
  end
17
17
 
18
- Dir[File.join(root, "*.*")].map { |filename| Note.new(filename) }
18
+ Dir[note_filename_pattern(root)].map { |filename| Note.new(filename) }
19
+ end
20
+
21
+ def self.note_filename_pattern(root)
22
+ File.join(root, "*.*")
19
23
  end
20
24
 
21
25
  def initialize(root, notes)
@@ -56,6 +60,10 @@ module Vita
56
60
  links.filter { |link| link.to_note == note }
57
61
  end
58
62
 
63
+ def note_filename_pattern
64
+ self.class.note_filename_pattern(root)
65
+ end
66
+
59
67
  private
60
68
 
61
69
  def notes=(notes)
data/lib/vita/server.rb CHANGED
@@ -1,7 +1,10 @@
1
1
  require "sinatra"
2
+ require "sinatra/streaming"
2
3
 
3
4
  module Vita
4
5
  class Server < Sinatra::Base
6
+ helpers Sinatra::Streaming
7
+
5
8
  def self.await_startup
6
9
  sleep 0.1 until settings.running?
7
10
  end
@@ -25,6 +28,14 @@ module Vita
25
28
  end
26
29
  end
27
30
 
31
+ get "/events", provides: "text/event-stream" do
32
+ stream do |out|
33
+ Watcher.new(garden).watch do
34
+ out << "event: change\ndata: {}\n\n"
35
+ end
36
+ end
37
+ end
38
+
28
39
  get "/:path.html" do |path|
29
40
  note = garden.note_at_path("#{path}.html")
30
41
 
data/lib/vita/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Vita
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -0,0 +1,13 @@
1
+ require "filewatcher"
2
+
3
+ module Vita
4
+ class Watcher
5
+ def initialize(garden)
6
+ @garden = garden
7
+ end
8
+
9
+ def watch(&)
10
+ Filewatcher.new(@garden.note_filename_pattern).watch(&)
11
+ end
12
+ end
13
+ end
data/lib/vita.rb CHANGED
@@ -9,6 +9,7 @@ require "vita/note"
9
9
  require "vita/renderer"
10
10
  require "vita/rendering_context"
11
11
  require "vita/version"
12
+ require "vita/watcher"
12
13
 
13
14
  module Vita
14
15
  BASE_DIRECTORY = File.expand_path("..", __dir__)
@@ -16,6 +16,7 @@
16
16
  <script defer src="https://unpkg.com/htmx.org@1.9.10"></script>
17
17
  </head>
18
18
  <body>
19
+ <div hx-trigger="sse:change" hx-get="/<%= h note.path %>" hx-target="body">
19
20
  <nav class="navbar bg-body-tertiary mb-3">
20
21
  <div class="container">
21
22
  <a class="navbar-brand" href="/">
@@ -70,10 +71,14 @@
70
71
  </div>
71
72
  </div>
72
73
  </div>
74
+ </div>
73
75
  <script defer>
74
76
  if (location.protocol !== "file:") {
75
77
  document.body.setAttribute('hx-boost', true);
76
78
  }
79
+ if (location.port === "9000") {
80
+ document.body.setAttribute('hx-sse', 'connect:/events');
81
+ }
77
82
  </script>
78
83
  </body>
79
84
  </html>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vita
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alec Cursley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-26 00:00:00.000000000 Z
11
+ date: 2024-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redcarpet
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '4.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sinatra-contrib
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '4.0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '4.0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rackup
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +108,20 @@ dependencies:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
110
  version: '6.4'
111
+ - !ruby/object:Gem::Dependency
112
+ name: filewatcher
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '2.1'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '2.1'
97
125
  - !ruby/object:Gem::Dependency
98
126
  name: rake
99
127
  requirement: !ruby/object:Gem::Requirement
@@ -170,14 +198,14 @@ dependencies:
170
198
  requirements:
171
199
  - - "~>"
172
200
  - !ruby/object:Gem::Version
173
- version: 1.34.0
201
+ version: 1.35.1
174
202
  type: :development
175
203
  prerelease: false
176
204
  version_requirements: !ruby/object:Gem::Requirement
177
205
  requirements:
178
206
  - - "~>"
179
207
  - !ruby/object:Gem::Version
180
- version: 1.34.0
208
+ version: 1.35.1
181
209
  description:
182
210
  email:
183
211
  - alec@cursley.net
@@ -210,6 +238,7 @@ files:
210
238
  - lib/vita/rendering_context.rb
211
239
  - lib/vita/server.rb
212
240
  - lib/vita/version.rb
241
+ - lib/vita/watcher.rb
213
242
  - templates/note.html.erb
214
243
  homepage: https://github.com/cursley/vita
215
244
  licenses: