markita 3.0.210912 → 3.4.210922

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: b39bace23d9d3e2c779379b38fe440abe26213ad3c0b6933fd9d7f6d2679b4af
4
- data.tar.gz: aeafe146d44a85bcc4aafb16130f964701134c7b7c7bb8dec2bd82fe00e30186
3
+ metadata.gz: df6d287bdc5a83164680b7218d6a1b097dddc703ba731f5ae3568e51756385c7
4
+ data.tar.gz: eca3f9de5cd993be7c206c8bdd8cbcf89d99bb0799960aed60a3140d3f3ba9e6
5
5
  SHA512:
6
- metadata.gz: 17775d54b7269655d00792aaed965f332b9c29ff063f9a333794ef32f1d07bc7f05d3c663ec616ddd462059ed6e03e9282669e9db7eabb37d0bfc8cb7f11d17f
7
- data.tar.gz: 58285bfad94c859d7c5ab0780647b725eb78b317c34fbcda306c11d117aa31cc699a297f27c0e34a6b86dd0577b9cafd4f6c5049f5d4dabda80f418a91352e83
6
+ metadata.gz: 87f88ceb92a5bd24eddcaf3cbefa4dce1a4098befe0534eef5f68a90931441dd7324bfd5d1cb135351c28451d2a3891c259cbf8e7e2433cdbff54e76a4fbcf15
7
+ data.tar.gz: c691c08fde7db7ff8ee8f3b72a17b7f8cd32df9bf6b4b970699102b6c9dc3aedae4ce19c183ae912527b9c55432a75f47b337c85c8802130116fca708aa27e32
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Markita
2
2
 
3
- * [VERSION 3.0.210912](https://github.com/carlosjhr64/markita/releases)
3
+ * [VERSION 3.4.210922](https://github.com/carlosjhr64/markita/releases)
4
4
  * [github](https://www.github.com/carlosjhr64/markita)
5
5
  * [rubygems](https://rubygems.org/gems/markita)
6
6
 
@@ -23,18 +23,20 @@ Options:
23
23
  --root=DIRECTORY ~/vimwiki
24
24
  --bind=BIND 0.0.0.0
25
25
  --port=PORT 8080
26
+ --theme=THEME base16.light
26
27
  --allowed=IPS
27
28
  --no_about
28
29
  --no_favicon
29
30
  --no_highlight
31
+ --no_navigation
30
32
  --no_login
31
33
  --no_plugs
32
34
  Types:
33
35
  DIRECTORY /^~?[\/\w\.]+$/
34
36
  BIND /^[\w\.]+$/
35
37
  PORT /^\d+$/
36
- THEME /^[\w\.]+$/
37
38
  IPS /^[\d\.\,]+$/
39
+ THEME /^[\w\.]+$/
38
40
  # NOTE:
39
41
  # Assuming site is in ~/vimwiki,
40
42
  # when ~/vimwiki/.valid-id is set with a sha256sum of a password,
@@ -62,11 +64,23 @@ Markdown:
62
64
  ![Left Floating ](/img/image.png)
63
65
  ![ Right Floating](/img/image.png)
64
66
  Image centered above.
65
- Image to the left.
67
+ Image to the left with width and height set.
66
68
  Image to the right.
67
69
  And set a HR bar below.
68
70
  ---
69
71
 
72
+ ### Image size
73
+
74
+ Markdown:
75
+
76
+ ![In alt text say 100x100](/img/image.png)
77
+
78
+ ### Image link
79
+
80
+ Markdown:
81
+
82
+ ![Alt text](/img/image.png /href_to/page)
83
+
70
84
  ### Forms
71
85
 
72
86
  Markdown:
@@ -83,6 +97,9 @@ Markdown:
83
97
  ! Address:[address]
84
98
  ! Code:[code="1234"]
85
99
 
100
+ A selection list:
101
+ ! Color:[color="Red","White","Blue"]
102
+
86
103
  ### Template substitutions
87
104
 
88
105
  Markdown:
@@ -252,8 +269,9 @@ Markdown:
252
269
 
253
270
  !> /path-to/ascii_art.txt
254
271
 
255
- Must be a `*.txt` file.
256
272
  Useful for ASCII art.
273
+ Unless an `*.html` file, the text is embedded in `pre` tags.
274
+ Further more unless a `*.txt` file, the text is embedded in `code` tags.
257
275
 
258
276
  ### Emojis
259
277
 
@@ -277,6 +295,16 @@ Markdown:
277
295
  [^2]: Cash is money in currency.
278
296
  [^3]: Read as "Nan took it."
279
297
 
298
+ ### Meta-data
299
+
300
+ Markdown:
301
+
302
+ ---
303
+ Title: The Title You Want For Your Page
304
+ 1: https://way.to/create/ref/links
305
+ ---
306
+ You can now [link](1) with a reference number.
307
+
280
308
  ## HOW-TOs
281
309
 
282
310
  ### Set site password:
@@ -284,12 +312,11 @@ Markdown:
284
312
  $ # Assuming ~/vimwiki is your site's root...
285
313
  $ echo -n '<SitePasswordHere>' | sha256sum | grep -o '^\w*' > ~/vimwiki/.valid-id
286
314
  ```
287
- ### Set site custom favicon, css, not found page, and login form and fail page:
315
+ ### Set site custom favicon, not found page, and login form and fail page:
288
316
  ```console
289
317
  $ # Assuming ~/vimwiki is your site's root...
290
318
  $ # Note that you'll have to restart the server on any change to these:
291
319
  $ cp /path-to/custom/favicon.ico ~/vimwiki/favicon.ico
292
- $ cp /path-to/custom/highlight.css ~/vimwiki/highlight.css
293
320
  $ cp /path-to/custom/not_found.html ~/vimwiki/not_found.html
294
321
  $ cp /path-to/custom/login_form.html ~/vimwiki/login_form.html
295
322
  $ cp /path-to/custom/login_fail.html ~/vimwiki/login_fail.html
data/bin/markita CHANGED
@@ -9,18 +9,20 @@ Options:
9
9
  --root=DIRECTORY \t ~/vimwiki
10
10
  --bind=BIND \t 0.0.0.0
11
11
  --port=PORT \t 8080
12
+ --theme=THEME \t base16.light
12
13
  --allowed=IPS
13
14
  --no_about
14
15
  --no_favicon
15
16
  --no_highlight
17
+ --no_navigation
16
18
  --no_login
17
19
  --no_plugs
18
20
  Types:
19
21
  DIRECTORY /^~?[\\/\\w\\.]+$/
20
22
  BIND /^[\\w\\.]+$/
21
23
  PORT /^\\d+$/
22
- THEME /^[\\w\\.]+$/
23
24
  IPS /^[\\d\\.\\,]+$/
25
+ THEME /^[\\w\\.]+$/
24
26
  # NOTE:
25
27
  # Assuming site is in ~/vimwiki,
26
28
  # when ~/vimwiki/.valid-id is set with a sha256sum of a password,
@@ -2,6 +2,7 @@ module Markita
2
2
  OPTIONS ||= nil
3
3
 
4
4
  HEADER_LINKS = ''
5
+ NAVIGATION = ''
5
6
 
6
7
  ROOT = File.expand_path OPTIONS&.root || '~/vimwiki'
7
8
  raise "Missing site root directory: "+ROOT unless File.directory? ROOT
data/lib/markita/html.rb CHANGED
@@ -11,6 +11,10 @@ module HTML
11
11
  HEADER
12
12
  end
13
13
 
14
+ def HTML.navigation
15
+ NAVIGATION
16
+ end
17
+
14
18
  def HTML.footer
15
19
  <<~FOOTER
16
20
  </body>
@@ -6,14 +6,20 @@ class Markdown
6
6
  def initialize(title)
7
7
  @title = title
8
8
  @line=@html=@file=@opt=nil
9
+ @metadata = {}
9
10
  end
10
11
 
11
12
  def start
12
- @line,@html,@opt = HTML.header(@title),'',{}
13
+ @html << HTML.header(@title)
14
+ @line = HTML.navigation
13
15
  end
14
16
 
15
17
  def finish
18
+ if title = @metadata['Title']
19
+ @html << %Q(<script> document.title = "#{title}" </script>\n)
20
+ end
16
21
  @html << HTML.footer
22
+ @line = nil
17
23
  end
18
24
 
19
25
  def default
@@ -21,8 +27,12 @@ class Markdown
21
27
  @line = @file.gets
22
28
  end
23
29
 
30
+ def init(fh)
31
+ @file,@html,@opt = Preprocess.new(fh),'',{}
32
+ end
33
+
24
34
  def parse(fh)
25
- @file = Preprocess.new(fh)
35
+ init(fh)
26
36
  start
27
37
  while @line
28
38
  PARSERS.detect{method(_1).call} or default
@@ -56,7 +66,10 @@ class Markdown
56
66
  CODE = lambda {|m| "<code>#{m[1]}</code>"}
57
67
 
58
68
  Ax = /\[([^\[\]]+)\]\(([^()]+)\)/
59
- A = lambda {|m| %Q(<a href="#{m[2]}">#{m[1]}</a>)}
69
+ def anchor(m)
70
+ href = ((_=m[2]).match?(/^\d+$/) and @metadata[_] or _)
71
+ %Q(<a href="#{href}">#{m[1]}</a>)
72
+ end
60
73
 
61
74
  URLx = %r(\[(https?://[\w\.\-\/\&\+\?\%]+)\])
62
75
  URL = lambda {|m| %Q(<a href="#{m[1]}">#{m[1]}</a>)}
@@ -89,9 +102,9 @@ class Markdown
89
102
  return (block ? block.call(entry) : entry)
90
103
  end
91
104
 
92
- INLINE = lambda do |entry|
105
+ def inline(entry)
93
106
  string = Markdown.tag(entry, CODEx, CODE) do |entry|
94
- Markdown.tag(entry, Ax, A) do |entry|
107
+ Markdown.tag(entry, Ax, method(:anchor)) do |entry|
95
108
  Markdown.tag(entry, URLx, URL) do |entry|
96
109
  entry = Markdown.tag(entry, EMOJIx, EMOJI)
97
110
  entry = Markdown.tag(entry, Bx, B)
@@ -115,15 +128,20 @@ class Markdown
115
128
  end
116
129
 
117
130
  # Ordered list
118
- ORDERED = /^\d+. (.*)$/
131
+ ORDERED = /^( {0,3})\d+\. (\S.*)$/
119
132
  PARSERS << :ordered
120
- def ordered
121
- md = ORDERED.match(@line) or return false
133
+ def ordered(md=ORDERED.match(@line), level=0)
134
+ return false unless md
122
135
  @html << "<ol#{@opt[:attributes]}>\n"
123
136
  @opt.delete(:attributes)
124
- while md
125
- @html << " <li>#{INLINE[md[1]]}</li>\n"
126
- md = (@line=@file.gets)&.match ORDERED
137
+ while md and level==md[1].length
138
+ @html << " <li>#{inline(md[2])}</li>\n"
139
+ if md = (@line=@file.gets)&.match(ORDERED)
140
+ if level < md[1].length
141
+ ordered(md, md[1].length)
142
+ md = @line&.match(ORDERED)
143
+ end
144
+ end
127
145
  end
128
146
  @html << "</ol>\n"
129
147
  true
@@ -137,7 +155,7 @@ class Markdown
137
155
  @html << "<p#{@opt[:attributes]}>\n"
138
156
  @opt.delete(:attributes)
139
157
  while md
140
- @html << INLINE[@line]
158
+ @html << inline(@line)
141
159
  md = (@line=@file.gets)&.match PARAGRAPHS
142
160
  end
143
161
  @html << "</p>\n"
@@ -145,15 +163,20 @@ class Markdown
145
163
  end
146
164
 
147
165
  # Unordered list
148
- UNORDERED = /^[*] (.*)$/
166
+ UNORDERED = /^( {0,3})[*] (\S.*)$/
149
167
  PARSERS << :unordered
150
- def unordered
151
- md = UNORDERED.match(@line) or return false
168
+ def unordered(md=UNORDERED.match(@line), level=0)
169
+ return false unless md
152
170
  @html << "<ul#{@opt[:attributes]}>\n"
153
171
  @opt.delete(:attributes)
154
- while md
155
- @html << " <li>#{INLINE[md[1]]}</li>\n"
156
- md = (@line=@file.gets)&.match UNORDERED
172
+ while md and level==md[1].length
173
+ @html << " <li>#{inline(md[2])}</li>\n"
174
+ if md = (@line=@file.gets)&.match(UNORDERED)
175
+ if level < md[1].length
176
+ unordered(md, md[1].length)
177
+ md = @line&.match(UNORDERED)
178
+ end
179
+ end
157
180
  end
158
181
  @html << "</ul>\n"
159
182
  true
@@ -171,7 +194,7 @@ class Markdown
171
194
  li = (x=='x')?
172
195
  %q{<li style="list-style-type: '&#9745; '">} :
173
196
  %q{<li style="list-style-type: '&#9744; '">}
174
- @html << " #{li}#{INLINE[t]}</li>\n"
197
+ @html << " #{li}#{inline(t)}</li>\n"
175
198
  md = (@line=@file.gets)&.match BALLOTS
176
199
  end
177
200
  @html << "</ul>\n"
@@ -187,8 +210,8 @@ class Markdown
187
210
  @opt.delete(:attributes)
188
211
  while md
189
212
  item = md[1]
190
- @html << ((item[-1]==':')? "<dt>#{INLINE[item[0..-2]]}</dt>\n" :
191
- "<dd>#{INLINE[item]}</dd>\n")
213
+ @html << ((item[-1]==':')? "<dt>#{inline(item[0..-2])}</dt>\n" :
214
+ "<dd>#{inline(item)}</dd>\n")
192
215
  md = (@line=@file.gets)&.match DEFINITIONS
193
216
  end
194
217
  @html << "</dl>\n"
@@ -201,9 +224,9 @@ class Markdown
201
224
  def headers
202
225
  md = HEADERS.match(@line) or return false
203
226
  i,header = md[1].length,md[2]
204
- id = header.strip.gsub(/\s+/,'+')
227
+ id = header.gsub(/\([^\(\)]*\)/,'').scan(/\w+/).join('+')
205
228
  @html << %Q(<a id="#{id}">\n)
206
- @html << " <h#{i}#{@opt[:attributes]}>#{INLINE[header]}</h#{i}>\n"
229
+ @html << " <h#{i}#{@opt[:attributes]}>#{inline(header)}</h#{i}>\n"
207
230
  @html << "</a>\n"
208
231
  @opt.delete(:attributes)
209
232
  @line = @file.gets
@@ -218,7 +241,7 @@ class Markdown
218
241
  @html << "<blockquote#{@opt[:attributes]}>\n"
219
242
  @opt.delete(:attributes)
220
243
  while md
221
- @html << INLINE[md[1]]
244
+ @html << inline(md[1])
222
245
  @html << "\n"
223
246
  md = (@line=@file.gets)&.match BLOCKQS
224
247
  end
@@ -262,14 +285,31 @@ class Markdown
262
285
  true
263
286
  end
264
287
 
265
- # Horizontal rule
288
+ # Meta-data
289
+ METADATAS = /^(\w+): (.*)$/
290
+ def metadata
291
+ md = METADATAS.match(@line) or return false
292
+ while md
293
+ @metadata[md[1]] = md[2]
294
+ md = (@line=@file.gets)&.match METADATAS
295
+ end
296
+ true
297
+ end
298
+
299
+ # Horizontal rule or Meta-data
266
300
  HRS = /^---+$/
267
301
  PARSERS << :hrs
268
302
  def hrs
269
303
  HRS.match? @line or return false
270
- @html << "<hr#{@opt[:attributes]}>\n"
271
- @opt.delete(:attributes)
272
304
  @line = @file.gets
305
+ if metadata
306
+ # Optional closing HRS
307
+ @line = @file.gets if @line&.match? HRS
308
+ else
309
+ # Display HR
310
+ @html << "<hr#{@opt[:attributes]}>\n"
311
+ @opt.delete(:attributes)
312
+ end
273
313
  true
274
314
  end
275
315
 
@@ -281,7 +321,7 @@ class Markdown
281
321
  @html << "<table#{@opt[:attributes]}>\n"
282
322
  @opt.delete(:attributes)
283
323
  @html << '<thead><tr><th>'
284
- @html << @line[1...-1].split('|').map{INLINE[_1.strip]}.join('</th><th>')
324
+ @html << @line[1...-1].split('|').map{inline(_1.strip)}.join('</th><th>')
285
325
  @html << "</th></tr></thead>\n"
286
326
  align = []
287
327
  while (@line=@file.gets)&.match TABLES
@@ -298,7 +338,7 @@ class Markdown
298
338
  align[i] = ' align="left"'
299
339
  @html << '<td><hr></td>'
300
340
  else
301
- @html << "<td#{align[i]}>#{INLINE[cell.strip]}</td>"
341
+ @html << "<td#{align[i]}>#{inline(cell.strip)}</td>"
302
342
  end
303
343
  end
304
344
  @html << "</tr>\n"
@@ -332,7 +372,7 @@ class Markdown
332
372
  PARSERS << :images
333
373
  def images
334
374
  md = IMAGES.match(@line) or return false
335
- alt,src=md[1],md[2]
375
+ alt,src,href=md[1],*md[2].strip.split(/\s+/,2)
336
376
  style = ' '
337
377
  case alt
338
378
  when /^ .* $/
@@ -342,14 +382,21 @@ class Markdown
342
382
  when /^ /
343
383
  style = %Q( style="float:right;" )
344
384
  end
385
+ if /(\d+)x(\d+)/.match alt
386
+ style << %Q(width="#{$1}" height="#{$2}" )
387
+ end
388
+ @html << %Q(<a href="#{href}">\n) if href
345
389
  @html << %Q(<img src="#{src}"#{style}alt="#{alt.strip}"#{@opt[:attributes]}>\n)
390
+ @html << %Q(</a>\n) if href
346
391
  @opt.delete(:attributes)
347
392
  @line = @file.gets
348
393
  true
349
394
  end
350
395
 
351
396
  # Forms
352
- FORMS = /^!( (\w+:)?\[\*?\w+(="[^"]*")?\])+/
397
+ FIELD = '(\w+:)?\[(\*)?(\w+)(=("[^"]+")(,"[^"]+")*)?\]'
398
+ FIELDS = Regexp.new FIELD
399
+ FORMS = Regexp.new "^!( #{FIELD})+"
353
400
  PARSERS << :forms
354
401
  def forms
355
402
  md = FORMS.match(@line) or return false
@@ -359,16 +406,26 @@ class Markdown
359
406
  while md
360
407
  n += 1
361
408
  form << ' <br>' if n > 1
362
- @line.scan(/(\w+:)?\[(\*)?(\w+)(="[^"]*")?\]/).each do |field, pwd, name, value|
409
+ @line.scan(FIELDS).each do |field, pwd, name, value|
363
410
  method ||= ' method="post"' if pwd
364
411
  field &&= field[0...-1]
365
412
  value &&= value[2...-1]
366
413
  if field
367
- fields += 1
368
414
  type = (pwd)? 'password' : 'text'
369
415
  if value
370
- form << %Q{ #{field}:<input type="#{type}" name="#{name}" value="#{value}">}
416
+ if (values = value.split('","')).length > 1
417
+ form << %Q(#{field}:<select name="#{name}">)
418
+ values.each do |value|
419
+ fields += 1
420
+ form << %Q( <option value="#{value}">#{value}</option>)
421
+ end
422
+ form << "</select>"
423
+ else
424
+ fields += 1
425
+ form << %Q{ #{field}:<input type="#{type}" name="#{name}" value="#{value}">}
426
+ end
371
427
  else
428
+ fields += 1
372
429
  form << %Q{ #{field}:<input type="#{type}" name="#{name}">}
373
430
  end
374
431
  elsif name=='submit'
@@ -393,14 +450,27 @@ class Markdown
393
450
  end
394
451
 
395
452
  # Embed text
396
- EMBED_TEXTS = /^!> (#{PAGE_KEY}\.txt)$/
453
+ EMBED_TEXTS = /^!> (#{PAGE_KEY}\.\w+)$/
397
454
  PARSERS << :embed_texts
398
455
  def embed_texts
399
456
  md = EMBED_TEXTS.match(@line) or return false
400
457
  if File.exist?(filename=File.join(ROOT, md[1]))
401
- @html << "<pre>\n"
402
- @html << File.read(filename)
403
- @html << "</pre>\n"
458
+ extension,lang = filename.split('.').last,nil
459
+ unless extension=='html'
460
+ lang = Rouge::Lexer.find extension
461
+ klass = lang ? ' class="highlight"' : nil
462
+ @html << "<pre#{klass}#{@opt[:attributes]}>"
463
+ @opt.delete(:attributes)
464
+ @html << '<code>' unless extension=='txt'
465
+ @html << "\n"
466
+ end
467
+ code = File.read(filename)
468
+ @html << (lang ? ROUGE.format(lang.new.lex(code)) : code)
469
+ unless extension=='html'
470
+ @html << '</code>' unless extension=='txt'
471
+ @html << '</pre>'
472
+ @html << "\n"
473
+ end
404
474
  else
405
475
  @html << @line
406
476
  end
@@ -415,7 +485,7 @@ class Markdown
415
485
  md = FOOTNOTES.match(@line) or return false
416
486
  @html << "<small>\n"
417
487
  while md
418
- @html << INLINE[@line.chomp]+"<br>\n"
488
+ @html << inline(@line.chomp)+"<br>\n"
419
489
  md = (@line=@file.gets)&.match FOOTNOTES
420
490
  end
421
491
  @html << "</small>\n"
@@ -1,5 +1,5 @@
1
1
  module Markita
2
- class Base < Sinatra::Base
2
+ class Base
3
3
  HEADER_LINKS << %Q( <link rel="icon" type="image/x-icon" href="/favicon.ico">\n)
4
4
  module Favicon
5
5
  ICO = File.read PATH['favicon.ico']
@@ -1,8 +1,10 @@
1
1
  module Markita
2
- class Base < Sinatra::Base
2
+ class Base
3
3
  HEADER_LINKS << %Q( <link rel="stylesheet" href="/highlight.css" type="text/css">\n)
4
4
  module Highlight
5
- CSS = File.read PATH['highlight.css']
5
+ theme = OPTIONS&.theme || 'base16.light'
6
+ CSS = Rouge::Theme.find(theme)&.render(scope: '.highlight')
7
+ raise "Can't find Rouge Theme "+theme unless CSS
6
8
  end
7
9
 
8
10
  get '/highlight.css' do
@@ -0,0 +1,3 @@
1
+ module Markita
2
+ NAVIGATION << %Q(![ Navigation](/favicon.ico /index)\n)
3
+ end
data/lib/markita.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Markita
2
- VERSION = '3.0.210912'
2
+ VERSION = '3.4.210922'
3
3
 
4
4
  def self.run!
5
5
  # Standard libraries
@@ -18,6 +18,7 @@ module Markita
18
18
  # Plugs
19
19
  require_relative 'markita/plug/favicon.rb' unless OPTIONS&.no_favicon
20
20
  require_relative 'markita/plug/highlight.rb' unless OPTIONS&.no_highlight
21
+ require_relative 'markita/plug/navigation.rb' unless OPTIONS&.no_navigation
21
22
  require_relative 'markita/plug/login.rb' unless OPTIONS&.no_login
22
23
  require_relative 'markita/plug/about.rb' unless OPTIONS&.no_about
23
24
  require_relative 'markita/plug/plugs.rb' unless OPTIONS&.no_plugs
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: markita
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.210912
4
+ version: 3.4.210922
5
5
  platform: ruby
6
6
  authors:
7
7
  - CarlosJHR64
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-12 00:00:00.000000000 Z
11
+ date: 2021-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: help_parser
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '7.0'
19
+ version: '8.0'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 7.0.200907
22
+ version: 8.0.210917
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: '7.0'
29
+ version: '8.0'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 7.0.200907
32
+ version: 8.0.210917
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rouge
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -39,7 +39,7 @@ dependencies:
39
39
  version: '3.26'
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: 3.26.0
42
+ version: 3.26.1
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
@@ -49,7 +49,7 @@ dependencies:
49
49
  version: '3.26'
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: 3.26.0
52
+ version: 3.26.1
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: sinatra
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -104,7 +104,6 @@ files:
104
104
  - bin/markita
105
105
  - data/emojis.tsv
106
106
  - data/favicon.ico
107
- - data/highlight.css
108
107
  - data/login_failed.html
109
108
  - data/login_form.html
110
109
  - data/not_found.html
@@ -117,6 +116,7 @@ files:
117
116
  - lib/markita/plug/favicon.rb
118
117
  - lib/markita/plug/highlight.rb
119
118
  - lib/markita/plug/login.rb
119
+ - lib/markita/plug/navigation.rb
120
120
  - lib/markita/plug/plugs.rb
121
121
  - lib/markita/preprocess.rb
122
122
  homepage: https://github.com/carlosjhr64/markita
data/data/highlight.css DELETED
@@ -1,81 +0,0 @@
1
- /* Ruby Gem Rouge's base16.light */
2
- .highlight table td { padding: 5px; }
3
- .highlight table pre { margin: 0; }
4
- .highlight, .highlight .w {
5
- color: #303030;
6
- }
7
- .highlight .err {
8
- color: #151515;
9
- background-color: #ac4142;
10
- }
11
- .highlight .c, .highlight .ch, .highlight .cd, .highlight .cm, .highlight .cpf, .highlight .c1, .highlight .cs {
12
- color: #505050;
13
- }
14
- .highlight .cp {
15
- color: #f4bf75;
16
- }
17
- .highlight .nt {
18
- color: #f4bf75;
19
- }
20
- .highlight .o, .highlight .ow {
21
- color: #d0d0d0;
22
- }
23
- .highlight .p, .highlight .pi {
24
- color: #d0d0d0;
25
- }
26
- .highlight .gi {
27
- color: #90a959;
28
- }
29
- .highlight .gd {
30
- color: #ac4142;
31
- }
32
- .highlight .gh {
33
- color: #6a9fb5;
34
- background-color: #151515;
35
- font-weight: bold;
36
- }
37
- .highlight .k, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .kv {
38
- color: #aa759f;
39
- }
40
- .highlight .kc {
41
- color: #d28445;
42
- }
43
- .highlight .kt {
44
- color: #d28445;
45
- }
46
- .highlight .kd {
47
- color: #d28445;
48
- }
49
- .highlight .s, .highlight .sb, .highlight .sc, .highlight .dl, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .s1 {
50
- color: #90a959;
51
- }
52
- .highlight .sa {
53
- color: #aa759f;
54
- }
55
- .highlight .sr {
56
- color: #75b5aa;
57
- }
58
- .highlight .si {
59
- color: #8f5536;
60
- }
61
- .highlight .se {
62
- color: #8f5536;
63
- }
64
- .highlight .nn {
65
- color: #f4bf75;
66
- }
67
- .highlight .nc {
68
- color: #f4bf75;
69
- }
70
- .highlight .no {
71
- color: #f4bf75;
72
- }
73
- .highlight .na {
74
- color: #6a9fb5;
75
- }
76
- .highlight .m, .highlight .mb, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mx {
77
- color: #90a959;
78
- }
79
- .highlight .ss {
80
- color: #90a959;
81
- }