docwatch-bin 2.1.3 → 2.2.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: 7d080fdfc0ad02761106b72d6b4ca20778d5832313000604ce2feed592d09fa1
4
- data.tar.gz: 76fca373752f15ed733b0cf4088099515c1a3077b5c44dd7542e534540146664
3
+ metadata.gz: 2b4c55f23d291bc317c8b3da127549ae74d8a1307368c040efe016a9d350d678
4
+ data.tar.gz: efedeb51bdfdbc88735f1c63f720becd91d9a68305654473ad0c7104214b129a
5
5
  SHA512:
6
- metadata.gz: 61ad209a045668831b3f2fde78a49bc809c3b18b762f78ff157fc1e34a74e6af9ee16a9b78189df9d1d397a6901b3f05e88bc20c77163dda7a4ac9514994b08f
7
- data.tar.gz: 4d4e22b25576a4d43eb87425788c3df3a8764a052116c460e4dbd382210a0118e7addf5974faf58221590a04e0136e8cf553bea3c2fd2dccbcf17f8cb4a8e7ee
6
+ metadata.gz: fc65417b707be0b65bca16f28ce072cc4765802ca77bdd34517715dd71d5f92edd07b9dea9e87fdfedf183096fda5c2fed71fe22aaf623be3d9635bbc940b553
7
+ data.tar.gz: c390dbd697f8f138de53e06a550f23d1ef4f96c7d67dbb21031b1935b391731299c55375176d197f0c091f8f6308334d04ba499367497f3faad34cda4cf942ff
data/bin/docwatch CHANGED
@@ -6,6 +6,7 @@ Params = Struct.new(
6
6
  :verbose,
7
7
  :version,
8
8
  :file_path,
9
+ :default_styles,
9
10
  keyword_init: true,
10
11
  )
11
12
 
@@ -23,6 +24,7 @@ class Main
23
24
  verbose: @opts['--verbose'],
24
25
  version: @opts['--version'],
25
26
  file_path: @opts['<file-path>'],
27
+ default_styles: @opts['--default-styles'],
26
28
  )
27
29
  end
28
30
 
@@ -67,7 +69,7 @@ class Main
67
69
  exit_invalid_file unless File.exist?(params.file_path)
68
70
  exit_invalid_port unless port_valid
69
71
 
70
- renderer = Renderer.by_filetype(params.file_path)
72
+ renderer = Renderer.by_filetype(params.file_path, params.default_styles)
71
73
  exit_unknown_renderer if renderer.nil?
72
74
 
73
75
  server = TCPServer.new(port)
@@ -108,20 +110,16 @@ usage = <<~EOF
108
110
  #{PROGRAM_NAME} ( --version | --help )
109
111
 
110
112
  Options:
111
- -p, --port=VALUE Listen port [default: 8888]
112
- --verbose Be verbose
113
- -v, --version Show version
114
- -h, --help Show help
113
+ -p, --port VALUE Listen port [default: 8888]
114
+ Set to 'random' for a random port
115
+ -d, --default-styles Use default styling
116
+ --verbose Be verbose
117
+ -v, --version Show version
118
+ -h, --help Show help
115
119
 
116
120
  Renderers:
117
121
  markdown (.md)
118
122
  html (.html)
119
-
120
- If #{'--port'.bold} is #{'random'.bold} a random port will be chosen, otherwise the specified
121
- one will be used. The default is 8888.
122
-
123
- In #{'--verbose'.bold} mode, incoming HTTP requests and file change event notifications will be
124
- printed to standard output.
125
123
  EOF
126
124
 
127
125
  begin
@@ -7,10 +7,26 @@ module Docwatch
7
7
  include Rouge::Plugins::Redcarpet
8
8
  end
9
9
 
10
+ def default_css
11
+ File.read(Docwatch.root_dir + '/res/styles.css')
12
+ end
13
+
14
+ def css
15
+ return default_css if @default_styles
16
+
17
+ config_dir = ENV.fetch('XDG_CONFIG_HOME', File.expand_path('~/.config'))
18
+ styles_path = File.join(config_dir, 'docwatch', 'styles.css')
19
+
20
+ if File.exist?(styles_path)
21
+ File.read(styles_path)
22
+ else
23
+ default_css
24
+ end
25
+ end
26
+
10
27
  def head
11
- css = File.read(Docwatch.root_dir + '/res/styles.css')
12
28
  return <<~EOF
13
- <title>#{file_path} - docwatch</title>
29
+ <title>#{file_path} docwatch</title>
14
30
  <style>
15
31
  #{css}
16
32
  </style>
@@ -7,15 +7,16 @@ module Docwatch
7
7
  (@@extensions[sym] ||= []) << self
8
8
  end
9
9
 
10
- def self.by_filetype(file_path)
10
+ def self.by_filetype(file_path, default_styles)
11
11
  extname = File.extname(file_path)[1..]
12
12
  return if extname.length == 0
13
13
 
14
- @@extensions[extname.to_sym].first.new(file_path)
14
+ @@extensions[extname.to_sym].first.new(file_path, default_styles)
15
15
  end
16
16
 
17
- def initialize(file_path)
17
+ def initialize(file_path, default_styles)
18
18
  @file_path = file_path
19
+ @default_styles = default_styles
19
20
  end
20
21
 
21
22
  def js
@@ -1,3 +1,3 @@
1
1
  module Docwatch
2
- VERSION = '2.1.3'
2
+ VERSION = '2.2.0'
3
3
  end
data/res/styles.css CHANGED
@@ -1,172 +1,274 @@
1
- * {
2
- box-sizing: border-box;
3
- }
4
-
5
1
  body {
6
2
  font-family: sans-serif;
7
3
  font-size: 16px;
8
- color: #444;
9
- background-color: white;
10
- max-width: 70ch;
11
- padding: 0.6rem;
4
+ line-height: 1.5;
5
+ word-wrap: break-word;
6
+ width: 900px;
12
7
  margin: 0 auto;
13
8
  }
14
9
 
15
- a {
16
- text-decoration: none;
17
- color: #0000b3;
10
+ a:not([href]) {
11
+ color: inherit;
12
+ text-decoration: none
18
13
  }
19
14
 
20
- a:hover {
21
- text-decoration: underline;
15
+ blockquote,
16
+ details,
17
+ dl,
18
+ ol,
19
+ p,
20
+ pre,
21
+ table,
22
+ ul {
23
+ margin-top: 0;
24
+ margin-bottom: 16px
22
25
  }
23
26
 
24
27
  hr {
25
- border: 1px solid #ccc;
26
- width: 100%;
27
- border-bottom: 0;
28
- margin: 1rem 0;
28
+ height: .25em;
29
+ padding: 0;
30
+ margin: 24px 0;
31
+ background-color: #e1e4e8;
32
+ border: 0
29
33
  }
30
34
 
31
- h1 {
32
- font-size: 20px;
35
+ blockquote {
36
+ padding: 0 1em;
37
+ color: #6a737d;
38
+ border-left: .25em solid #dfe2e5
33
39
  }
34
40
 
35
- h2 {
36
- font-size: 18px;
41
+ blockquote>:first-child {
42
+ margin-top: 0
37
43
  }
38
44
 
39
- h3 {
40
- font-size: 16px;
45
+ blockquote>:last-child {
46
+ margin-bottom: 0
47
+ }
48
+
49
+ kbd {
50
+ display: inline-block;
51
+ padding: 3px 5px;
52
+ font-size: 11px;
53
+ line-height: 10px;
54
+ color: #444d56;
55
+ vertical-align: middle;
56
+ background-color: #fafbfc;
57
+ border: 1px solid #c6cbd1;
58
+ border-bottom-color: #959da5;
59
+ border-radius: 3px;
60
+ box-shadow: inset 0 -1px 0 #959da5
41
61
  }
42
62
 
43
63
  h1,
44
64
  h2,
45
65
  h3,
46
- p {
47
- margin: 1rem 0;
66
+ h4,
67
+ h5,
68
+ h6 {
69
+ margin-top: 24px;
70
+ margin-bottom: 16px;
71
+ font-weight: 600;
72
+ line-height: 1.25
48
73
  }
49
74
 
50
- li,
51
- p {
52
- line-height: 1.7rem;
75
+ h1 code,
76
+ h1 tt,
77
+ h2 code,
78
+ h2 tt,
79
+ h3 code,
80
+ h3 tt,
81
+ h4 code,
82
+ h4 tt,
83
+ h5 code,
84
+ h5 tt,
85
+ h6 code,
86
+ h6 tt {
87
+ font-size: inherit
53
88
  }
54
89
 
55
- code {
56
- line-height: 1.4rem;
90
+ h1 {
91
+ font-size: 2em
57
92
  }
58
93
 
59
- pre,
60
- pre > code {
61
- font-variant-ligatures: none;
62
- white-space: pre;
63
- padding: 0;
94
+ h1,
95
+ h2 {
96
+ padding-bottom: .3em;
97
+ border-bottom: 1px solid #eaecef
64
98
  }
65
99
 
66
- pre {
67
- font-variant-ligatures: none;
68
- border: 1px solid #CBE7F6;
69
- padding: 0.6rem;
70
- padding-left: 1rem;
71
- overflow: auto;
72
- word-wrap: normal;
100
+ h2 {
101
+ font-size: 1.5em
73
102
  }
74
103
 
75
- pre,
76
- code {
77
- background-color: #eef7fc;
78
- font-family: monospace;
79
- font-size: 13px;
104
+ h3 {
105
+ font-size: 1.25em
80
106
  }
81
107
 
82
- code {
83
- color: #444;
84
- padding: 2px;
85
- padding-left: 4px;
86
- white-space: nowrap;
108
+ h4 {
109
+ font-size: 1em
87
110
  }
88
111
 
89
- blockquote {
90
- border: 1px solid #CBE7F6;
91
- font-style: italic;
92
- overflow-x: auto;
93
- margin: 0;
94
- padding: 0.6rem;
95
- padding-left: 1rem;
96
- background-color: #eef7fc;
112
+ h5 {
113
+ font-size: .875em
97
114
  }
98
115
 
99
- blockquote p:first-child {
100
- margin-top: 0 !important;
116
+ h6 {
117
+ font-size: .85em;
118
+ color: #6a737d
101
119
  }
102
120
 
103
- blockquote p:last-child {
104
- margin-bottom: 0 !important;
121
+ ol,
122
+ ul {
123
+ padding-left: 2em
105
124
  }
106
125
 
107
- /*
108
- https://github.com/rouge-ruby/rouge/wiki/List-of-tokens
109
- */
126
+ ol.no-list,
127
+ ul.no-list {
128
+ padding: 0;
129
+ list-style-type: none
130
+ }
131
+
132
+ ol ol,
133
+ ol ul,
134
+ ul ol,
135
+ ul ul {
136
+ margin-top: 0;
137
+ margin-bottom: 0
138
+ }
139
+
140
+ li {
141
+ word-wrap: break-all
142
+ }
110
143
 
111
- /* Highlighting: Keywords */
112
- .highlight .k,
113
- .highlight .kn,
114
- .highlight .kd,
115
- .highlight .kp,
116
- .highlight .kr,
117
- .highlight .kc,
118
- .highlight .kt,
119
- .highlight .kv {
120
- color: #0000b3;
144
+ li>p {
145
+ margin-top: 16px
121
146
  }
122
147
 
123
- /* Highlighting: Strings */
124
- .highlight .s,
125
- .highlight .sa,
126
- .highlight .se,
127
- .highlight .sb,
128
- .highlight .sc,
129
- .highlight .dl,
130
- .highlight .sd,
131
- .highlight .s2,
132
- .highlight .sh,
133
- .highlight .sx,
134
- .highlight .s1 {
135
- color: #b30000;
148
+ li+li {
149
+ margin-top: .25em
136
150
  }
137
151
 
138
- /* Highlighting: Comments */
139
- .highlight .c,
140
- .highlight .cm,
141
- .highlight .c1,
142
- .highlight .cs {
143
- color: green;
152
+ dl {
153
+ padding: 0
154
+ }
155
+
156
+ dl dt {
157
+ padding: 0;
158
+ margin-top: 16px;
159
+ font-size: 1em;
160
+ font-style: italic;
161
+ font-weight: 600
144
162
  }
145
163
 
164
+ dl dd {
165
+ padding: 0 16px;
166
+ margin-bottom: 16px
167
+ }
146
168
 
147
169
  table {
170
+ display: block;
148
171
  width: 100%;
172
+ overflow: auto
149
173
  }
150
174
 
151
175
  table th {
152
- font-weight: 600;
176
+ font-weight: 600
153
177
  }
154
178
 
155
179
  table td,
156
180
  table th {
157
181
  padding: 6px 13px;
158
- border: 1px solid #dfe2e5;
182
+ border: 1px solid #dfe2e5
159
183
  }
160
184
 
161
185
  table tr {
162
186
  background-color: #fff;
163
- border-top: 1px solid #c6cbd1;
187
+ border-top: 1px solid #c6cbd1
164
188
  }
165
189
 
166
190
  table tr:nth-child(2n) {
167
- background-color: #f6f8fa;
191
+ background-color: #f6f8fa
168
192
  }
169
193
 
170
194
  table img {
195
+ background-color: initial
196
+ }
197
+
198
+ img {
199
+ max-width: 100%;
200
+ box-sizing: initial;
201
+ background-color: #fff
202
+ }
203
+
204
+ img[align=right] {
205
+ padding-left: 20px
206
+ }
207
+
208
+ img[align=left] {
209
+ padding-right: 20px
210
+ }
211
+
212
+ code,
213
+ tt {
214
+ padding: .2em .4em;
215
+ margin: 0;
216
+ font-size: 85%;
217
+ background-color: rgba(27, 31, 35, .05);
218
+ border-radius: 3px
219
+ }
220
+
221
+ code br,
222
+ tt br {
223
+ display: none
224
+ }
225
+
226
+ del code {
227
+ text-decoration: inherit
228
+ }
229
+
230
+ pre {
231
+ word-wrap: normal
232
+ }
233
+
234
+ pre>code {
235
+ padding: 0;
236
+ margin: 0;
237
+ font-size: 100%;
238
+ word-break: normal;
239
+ white-space: pre;
240
+ background: transparent;
241
+ border: 0
242
+ }
243
+
244
+ .highlight {
245
+ margin-bottom: 16px
246
+ }
247
+
248
+ .highlight pre {
249
+ margin-bottom: 0;
250
+ word-break: normal
251
+ }
252
+
253
+ .highlight pre,
254
+ pre {
255
+ padding: 16px;
256
+ overflow: auto;
257
+ font-size: 85%;
258
+ line-height: 1.45;
259
+ background-color: #f6f8fa;
260
+ border-radius: 3px
261
+ }
262
+
263
+ pre code,
264
+ pre tt {
265
+ display: inline;
266
+ max-width: auto;
267
+ padding: 0;
268
+ margin: 0;
269
+ overflow: visible;
270
+ line-height: inherit;
271
+ word-wrap: normal;
171
272
  background-color: initial;
273
+ border: 0
172
274
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docwatch-bin
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.3
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - crdx