octodown 1.4.0 → 1.4.1
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 +4 -4
- data/lib/octodown/renderer/server.rb +30 -14
- data/lib/octodown/support/services/riposter.rb +7 -1
- data/lib/octodown/template/octodown.html.erb +28 -5
- data/lib/octodown/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 060715e5ebab9c22e3f9cccc9b87f2888f2da006
|
4
|
+
data.tar.gz: a53f8dc0b0024693d073f345274281416c56c8d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7d055ab5ff014d28beca6d8e93fce961bad0f9468a10ffd86490da6ade49df078ec811c414586f85708d95e2a2c87376a6c4be4bf569cca2038a32752c8d9157
|
7
|
+
data.tar.gz: 3679b776ed450685a3469b8f2525ff6f914ce37aef844fbd94486ce74bf494479e0113543065dcf5e431cef26ba0c243854f6c07fd91384832162ff7e52b1ed7
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Octodown
|
2
2
|
module Renderer
|
3
3
|
class Server
|
4
|
-
attr_reader :file, :path, :options, :port
|
4
|
+
attr_reader :file, :path, :options, :port
|
5
5
|
|
6
6
|
def initialize(_content, options = {})
|
7
7
|
init_ws
|
@@ -10,6 +10,7 @@ module Octodown
|
|
10
10
|
@options = options
|
11
11
|
@path = File.dirname(File.expand_path(file.path))
|
12
12
|
@port = options[:port]
|
13
|
+
@websockets = []
|
13
14
|
end
|
14
15
|
|
15
16
|
def present
|
@@ -19,8 +20,8 @@ module Octodown
|
|
19
20
|
# page in a browser. I hate relying on time here, but I can't think
|
20
21
|
# of cleaner way currently.
|
21
22
|
Thread.new do |t|
|
22
|
-
sleep
|
23
|
-
Launchy.open "http://localhost:#{port}"
|
23
|
+
sleep 2.5
|
24
|
+
Launchy.open "http://localhost:#{port}" if @websockets.empty?
|
24
25
|
t.exit
|
25
26
|
end
|
26
27
|
|
@@ -39,10 +40,26 @@ module Octodown
|
|
39
40
|
|
40
41
|
private
|
41
42
|
|
43
|
+
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
42
44
|
def render_ws(env)
|
43
|
-
|
44
|
-
|
45
|
+
md = render_md(file)
|
46
|
+
|
47
|
+
socket = ::Faye::WebSocket.new(env)
|
48
|
+
|
49
|
+
socket.on(:open) do
|
50
|
+
socket.send md
|
51
|
+
puts "Clients: #{@websockets.size}" if ENV['DEBUG']
|
52
|
+
end
|
53
|
+
|
54
|
+
socket.on(:close) do
|
55
|
+
@websockets = @websockets.select { |s| s != socket }
|
56
|
+
puts "Clients: #{@websockets.size}" if ENV['DEBUG']
|
57
|
+
end
|
58
|
+
|
59
|
+
@websockets << socket
|
60
|
+
socket.rack_response
|
45
61
|
end
|
62
|
+
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
46
63
|
|
47
64
|
def render_http(env)
|
48
65
|
Rack::Response.new.tap do |res|
|
@@ -58,22 +75,21 @@ module Octodown
|
|
58
75
|
|
59
76
|
# Render HTML body from Markdown
|
60
77
|
def body
|
61
|
-
HTML.render render_md, options
|
78
|
+
HTML.render render_md(file), options
|
62
79
|
end
|
63
80
|
|
64
81
|
def register_listener
|
65
82
|
Octodown::Support::Services::Riposter.call file do
|
66
|
-
md = render_md
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
puts "Reloading #{file.path}..."
|
83
|
+
md = render_md(file)
|
84
|
+
@websockets.each do |socket|
|
85
|
+
socket.send md
|
86
|
+
end
|
71
87
|
end
|
72
88
|
end
|
73
89
|
|
74
|
-
def render_md
|
75
|
-
|
76
|
-
Renderer::GithubMarkdown.render
|
90
|
+
def render_md(f)
|
91
|
+
f.rewind unless f.pos == 0
|
92
|
+
Renderer::GithubMarkdown.render f, options
|
77
93
|
end
|
78
94
|
|
79
95
|
def init_ws
|
@@ -7,7 +7,13 @@ module Octodown
|
|
7
7
|
|
8
8
|
path = File.dirname(File.expand_path(file.path))
|
9
9
|
regex = Regexp.new(file.path)
|
10
|
-
|
10
|
+
|
11
|
+
@listener ||= Listen.to(path, only: regex) do
|
12
|
+
puts "Reloading #{file.path}..."
|
13
|
+
listener_callback.call
|
14
|
+
end
|
15
|
+
|
16
|
+
@listener.start
|
11
17
|
end
|
12
18
|
end
|
13
19
|
end
|
@@ -9,13 +9,36 @@
|
|
9
9
|
<%= highlight_stylesheet %>
|
10
10
|
<%= stylesheet %>
|
11
11
|
|
12
|
-
<script type=
|
13
|
-
|
12
|
+
<script type='text/javascript'>
|
13
|
+
'use strict';
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
document.addEventListener("DOMContentLoaded", function() {
|
16
|
+
var ws = null;
|
17
|
+
var interval = 2500;
|
18
|
+
|
19
|
+
function start() {
|
20
|
+
ws = new WebSocket(<%= host %>);
|
21
|
+
|
22
|
+
ws.onmessage = function(event) {
|
23
|
+
var body = document.querySelector('article.markdown-body');
|
24
|
+
if (body) body.innerHTML = event.data;
|
25
|
+
};
|
26
|
+
|
27
|
+
ws.onclose = function() {
|
28
|
+
check();
|
29
|
+
};
|
30
|
+
}
|
31
|
+
|
32
|
+
function check(){
|
33
|
+
if(ws.readyState == 3) start();
|
34
|
+
}
|
35
|
+
|
36
|
+
start();
|
37
|
+
|
38
|
+
setInterval(check, interval);
|
39
|
+
});
|
18
40
|
</script>
|
41
|
+
|
19
42
|
</head>
|
20
43
|
|
21
44
|
<body>
|
data/lib/octodown/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: octodown
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ian Ker-Seymer
|
@@ -294,7 +294,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
294
294
|
version: '0'
|
295
295
|
requirements: []
|
296
296
|
rubyforge_project:
|
297
|
-
rubygems_version: 2.5.1
|
297
|
+
rubygems_version: 2.4.5.1
|
298
298
|
signing_key:
|
299
299
|
specification_version: 4
|
300
300
|
summary: GitHub Markdown straight from your shell.
|