docwatch-bin 2.1.2 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ec0e54556c556d854ab9d5c1d9b65c3ab620b2af53c2db5ddf3b3dc1402dc2cb
4
- data.tar.gz: 33781694291a7223069ae7af8fd9c295f9554ce4a7361b8fbdd50f6717f9b301
3
+ metadata.gz: 2b4c55f23d291bc317c8b3da127549ae74d8a1307368c040efe016a9d350d678
4
+ data.tar.gz: efedeb51bdfdbc88735f1c63f720becd91d9a68305654473ad0c7104214b129a
5
5
  SHA512:
6
- metadata.gz: a4e11ad0754ee9d7e67faaf2fd09d892474c4a154120f43d6d1a040dcab68eb5ca61489c88156f8dc88b9b039c6d273d0d7c6e252994d441f264b5b1eb298289
7
- data.tar.gz: d19b1c2b0bf7ac0a0974107931a84a4515e3e8ae8f9e5638344f0c3391d5ae6b79247d6e0df4c1089ec276ace0acdf4d26ba73b1ef10b1f892ae45d8fc8fd575
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.2'
2
+ VERSION = '2.2.0'
3
3
  end
data/res/styles.css CHANGED
@@ -1,167 +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: 15px;
41
+ blockquote>:first-child {
42
+ margin-top: 0
43
+ }
44
+
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
37
61
  }
38
62
 
39
63
  h1,
40
64
  h2,
41
- p {
42
- margin: 1rem 0;
65
+ h3,
66
+ h4,
67
+ h5,
68
+ h6 {
69
+ margin-top: 24px;
70
+ margin-bottom: 16px;
71
+ font-weight: 600;
72
+ line-height: 1.25
43
73
  }
44
74
 
45
- li,
46
- p {
47
- 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
48
88
  }
49
89
 
50
- code {
51
- line-height: 1.4rem;
90
+ h1 {
91
+ font-size: 2em
52
92
  }
53
93
 
54
- pre,
55
- pre > code {
56
- font-variant-ligatures: none;
57
- white-space: pre;
58
- padding: 0;
94
+ h1,
95
+ h2 {
96
+ padding-bottom: .3em;
97
+ border-bottom: 1px solid #eaecef
59
98
  }
60
99
 
61
- pre {
62
- font-variant-ligatures: none;
63
- border: 1px solid #CBE7F6;
64
- padding: 0.6rem;
65
- padding-left: 1rem;
66
- overflow: auto;
67
- word-wrap: normal;
100
+ h2 {
101
+ font-size: 1.5em
68
102
  }
69
103
 
70
- pre,
71
- code {
72
- background-color: #eef7fc;
73
- font-family: monospace;
74
- font-size: 13px;
104
+ h3 {
105
+ font-size: 1.25em
75
106
  }
76
107
 
77
- code {
78
- color: #444;
79
- padding: 2px;
80
- padding-left: 4px;
81
- white-space: nowrap;
108
+ h4 {
109
+ font-size: 1em
82
110
  }
83
111
 
84
- blockquote {
85
- border: 1px solid #CBE7F6;
86
- font-style: italic;
87
- overflow-x: auto;
88
- margin: 0;
89
- padding: 0.6rem;
90
- padding-left: 1rem;
91
- background-color: #eef7fc;
112
+ h5 {
113
+ font-size: .875em
92
114
  }
93
115
 
94
- blockquote p:first-child {
95
- margin-top: 0 !important;
116
+ h6 {
117
+ font-size: .85em;
118
+ color: #6a737d
96
119
  }
97
120
 
98
- blockquote p:last-child {
99
- margin-bottom: 0 !important;
121
+ ol,
122
+ ul {
123
+ padding-left: 2em
100
124
  }
101
125
 
102
- /*
103
- https://github.com/rouge-ruby/rouge/wiki/List-of-tokens
104
- */
126
+ ol.no-list,
127
+ ul.no-list {
128
+ padding: 0;
129
+ list-style-type: none
130
+ }
105
131
 
106
- /* Highlighting: Keywords */
107
- .highlight .k,
108
- .highlight .kn,
109
- .highlight .kd,
110
- .highlight .kp,
111
- .highlight .kr,
112
- .highlight .kc,
113
- .highlight .kt,
114
- .highlight .kv {
115
- color: #0000b3;
132
+ ol ol,
133
+ ol ul,
134
+ ul ol,
135
+ ul ul {
136
+ margin-top: 0;
137
+ margin-bottom: 0
116
138
  }
117
139
 
118
- /* Highlighting: Strings */
119
- .highlight .s,
120
- .highlight .sa,
121
- .highlight .se,
122
- .highlight .sb,
123
- .highlight .sc,
124
- .highlight .dl,
125
- .highlight .sd,
126
- .highlight .s2,
127
- .highlight .sh,
128
- .highlight .sx,
129
- .highlight .s1 {
130
- color: #b30000;
140
+ li {
141
+ word-wrap: break-all
131
142
  }
132
143
 
133
- /* Highlighting: Comments */
134
- .highlight .c,
135
- .highlight .cm,
136
- .highlight .c1,
137
- .highlight .cs {
138
- color: green;
144
+ li>p {
145
+ margin-top: 16px
139
146
  }
140
147
 
148
+ li+li {
149
+ margin-top: .25em
150
+ }
151
+
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
162
+ }
163
+
164
+ dl dd {
165
+ padding: 0 16px;
166
+ margin-bottom: 16px
167
+ }
141
168
 
142
169
  table {
170
+ display: block;
143
171
  width: 100%;
172
+ overflow: auto
144
173
  }
145
174
 
146
175
  table th {
147
- font-weight: 600;
176
+ font-weight: 600
148
177
  }
149
178
 
150
179
  table td,
151
180
  table th {
152
181
  padding: 6px 13px;
153
- border: 1px solid #dfe2e5;
182
+ border: 1px solid #dfe2e5
154
183
  }
155
184
 
156
185
  table tr {
157
186
  background-color: #fff;
158
- border-top: 1px solid #c6cbd1;
187
+ border-top: 1px solid #c6cbd1
159
188
  }
160
189
 
161
190
  table tr:nth-child(2n) {
162
- background-color: #f6f8fa;
191
+ background-color: #f6f8fa
163
192
  }
164
193
 
165
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;
166
272
  background-color: initial;
273
+ border: 0
167
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.2
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - crdx