markita 3.4.211004 → 4.0.221124

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: 2a83f3ae0cb87314ee1ea28a3f5c39cd84813d9564e666f4ed474627988b12cf
4
- data.tar.gz: c180906afdac8f5343f99cc86c28d9c6db3ae38fdb8828d65f50f338d7b15757
3
+ metadata.gz: b56d7c82415c4cc7c3987168c61e94dc84a346a5e524db34683529dbb7cf0e0e
4
+ data.tar.gz: f7473780c5c0a1d3de2cc216c2eba8ff541ee337ba0effda0612e9f45e561b2e
5
5
  SHA512:
6
- metadata.gz: 98e97748ae3187b627841670a4744e55ec3a630a49839a069268ef99fdf12cecfe78589b64e7f8ab01fa2c8a4ec7f7fed07535ff5908c423190c19f807c663de
7
- data.tar.gz: 0ca77e473071ef3716812dac6d727ec21229acf42ea73d367913cbfa5ec4bb32449798a3649c74c01aaa9d5640d8d30b31aaf2140f996299a6b6efab64f1694f
6
+ metadata.gz: 266f1406ead43f83eb681010c78f196cf843fe491123689ed5adefbcfbd1fdd104ba039595113d653b761945cbc74c9619349f08530ae3844ed5217a36c7aa03
7
+ data.tar.gz: 2d0c10d772d383e50b97d308ea4cc1bd5b709b1deeef06d3489ddeb17f641761903946155c6b42ca436f86a321638e0e90048094d11340884945070dc3bd3c69
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Markita
2
2
 
3
- * [VERSION 3.4.211004](https://github.com/carlosjhr64/markita/releases)
3
+ * [VERSION 4.0.221124](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
 
@@ -28,9 +28,12 @@ Options:
28
28
  --no_about
29
29
  --no_favicon
30
30
  --no_highlight
31
- --no_navigation
32
31
  --no_login
32
+ --no_navigation
33
33
  --no_plugs
34
+ --no_readme
35
+ Exclusive:
36
+ no_login allowed
34
37
  Types:
35
38
  DIRECTORY /^~?[\/\w\.]+$/
36
39
  BIND /^[\w\.]+$/
@@ -60,11 +63,11 @@ Markdown:
60
63
 
61
64
  Markdown:
62
65
 
63
- ![ Centered Image ](/img/image.png)
64
- ![Left Floating ](/img/image.png)
65
- ![ Right Floating](/img/image.png)
66
+ ![:Centered Image:](/img/image.png)
67
+ ![Left Floating:](/img/image.png)
68
+ ![:Right Floating](/img/image.png)
66
69
  Image centered above.
67
- Image to the left with width and height set.
70
+ Image to the left.
68
71
  Image to the right.
69
72
  And set a HR bar below.
70
73
  ---
@@ -88,9 +91,11 @@ Markdown:
88
91
  A get method form without submit button on single field:
89
92
  ! Google:[q] (https://www.google.com/search)
90
93
 
91
- A post method form due to the password field with
92
- a submit button due to multiple fields:
93
- ! Username:[user] Password:[*pwd] (/login.html)
94
+ A post method form with a password field
95
+ and a submit button due to multiple fields.
96
+ Note the `*` in front of `pwd` marking it as a password field,
97
+ and the ending `!` marking the route as a post:
98
+ ! Username:[user] Password:[*pwd] (/login.html)!
94
99
 
95
100
  A multi-line form with default entry and hidden field:
96
101
  ! Name:[user] [status="active"] (/register.html)
@@ -177,9 +182,10 @@ Markdown:
177
182
  ### Inline links, code, bold, italic, strikes, and underline
178
183
 
179
184
  <p>
180
- The <b>bold</b> and <i>italics</i> <s>strikes</s> at <u>underlined</u>,
181
- while a <a href="#Markita">link to #Markita</a>
182
- sees the <code>~ code ~ "a*b*c"</code> to <a href="https://github.com">https://github.com</a>.
185
+ The <b>bold</b> and <i>italics</i> <s>strikes</s> at <u>underlined</u>, while a
186
+ <a href="#Markita">link to #Markita</a>
187
+ sees the <code>~ code ~ "a*b*c"</code> to
188
+ <a href="https://github.com">https://github.com</a>.
183
189
  </p>
184
190
 
185
191
  Markdown:
@@ -211,10 +217,9 @@ Markdown:
211
217
  * Point A
212
218
  * Point B
213
219
 
214
- : Word:
215
- : Definition of the word
216
- : Symbol:
217
- : Usage for the symbol
220
+ + Word: Definition of the word
221
+ + Symbol:
222
+ + Usage for the symbol
218
223
 
219
224
  ### Block-quote
220
225
 
@@ -287,7 +292,7 @@ Markdown:
287
292
 
288
293
  There once was a man from Nantucket[^1]
289
294
  Who kept all his cash[^2] in a bucket.
290
- But his daugter, named Nan,
295
+ But his daughter, named Nan,
291
296
  Ran away with a man
292
297
  And as for the bucket, Natucket.[^3]
293
298
 
@@ -346,7 +351,7 @@ $ GET https://raw.githubusercontent.com/carlosjhr64/markita/main/plug/todotxt.rb
346
351
  ```
347
352
  ## LICENSE
348
353
 
349
- Copyright 2021 CarlosJHR64
354
+ Copyright 2022 CarlosJHR64
350
355
 
351
356
  Permission is hereby granted, free of charge,
352
357
  to any person obtaining a copy of this software and
data/bin/markita CHANGED
@@ -14,9 +14,12 @@ Options:
14
14
  --no_about
15
15
  --no_favicon
16
16
  --no_highlight
17
- --no_navigation
18
17
  --no_login
18
+ --no_navigation
19
19
  --no_plugs
20
+ --no_readme
21
+ Exclusive:
22
+ no_login allowed
20
23
  Types:
21
24
  DIRECTORY /^~?[\\/\\w\\.]+$/
22
25
  BIND /^[\\w\\.]+$/
data/lib/markita/base.rb CHANGED
@@ -24,12 +24,21 @@ class Base < Sinatra::Base
24
24
  Markdown.new(key).filepath filepath
25
25
  end
26
26
 
27
- get IMAGE_PATH do |path, *_|
28
- send_file File.join(ROOT, path)
27
+ get SEND_FILE do |path|
28
+ pass unless params.length==1 and
29
+ filepath = File.join(ROOT, path) and
30
+ File.exist?(filepath)
31
+ send_file filepath
29
32
  end
30
33
 
31
34
  get '/' do
32
- redirect '/index'
35
+ filepath = File.join ROOT, 'index.md'
36
+ if File.exist? filepath
37
+ Markdown.new('index').filepath filepath
38
+ else
39
+ redirect '/about.html' unless OPTIONS&.no_about
40
+ raise Sinatra::NotFound
41
+ end
33
42
  end
34
43
 
35
44
  not_found do
@@ -6,7 +6,8 @@ module Markita
6
6
 
7
7
  ROOT = File.expand_path OPTIONS&.root || '~/vimwiki'
8
8
  raise "Missing site root directory: "+ROOT unless File.directory? ROOT
9
- APPDATA = File.join File.dirname(File.dirname __dir__), 'data'
9
+ APPDIR = File.dirname File.dirname __dir__
10
+ APPDATA = File.join APPDIR, 'data'
10
11
  PATH = lambda do |basename|
11
12
  [ROOT, APPDATA].map{ File.join _1, basename}.detect{ File.exist? _1}
12
13
  end
@@ -14,8 +15,8 @@ module Markita
14
15
 
15
16
  EMOJIS = Hash[*File.read(PATH['emojis.tsv']).split(/\s+/)]
16
17
 
17
- PAGE_KEY = %r{/(\w[\w\/\-]*\w)}
18
- IMAGE_PATH = %r{/(\w[\w\/\-]*\w\.((png)|(gif)))}
18
+ PAGE_KEY = %r{/(\w[\w\/\-]*\w)}
19
+ SEND_FILE = %r{/(\w[\w\/\-]*\w\.\w+)}
19
20
 
20
21
  START_TIME = Time.now
21
22
  end
@@ -63,15 +63,16 @@ class Markdown
63
63
  B = lambda {|m| "<b>#{m[1]}</b>"}
64
64
 
65
65
  CODEx = /`([^`]+)`/
66
- CODE = lambda {|m| "<code>#{m[1]}</code>"}
66
+ CODE = lambda {|m| "<code>#{m[1].gsub('<','&lt;')}</code>"}
67
67
 
68
68
  Ax = /\[([^\[\]]+)\]\(([^()]+)\)/
69
69
  def anchor(m)
70
70
  href = ((_=m[2]).match?(/^\d+$/) and @metadata[_] or _)
71
- %Q(<a href="#{href}">#{m[1]}</a>)
71
+ text = Markdown.tag(m[1], EMOJIx, EMOJI)
72
+ %Q(<a href="#{href}">#{text}</a>)
72
73
  end
73
74
 
74
- URLx = %r(\[(https?://[\w\.\-\/\&\+\?\%]+)\])
75
+ URLx = %r((https?://[\w\.\-\/\&\+\?\%]+))
75
76
  URL = lambda {|m| %Q(<a href="#{m[1]}">#{m[1]}</a>)}
76
77
 
77
78
  EMOJIx = /:(\w+):/
@@ -88,13 +89,12 @@ class Markdown
88
89
 
89
90
  def Markdown.tag(entry, regx, m2string, &block)
90
91
  if m = regx.match(entry)
91
- pre_match = (block ? block.call(m.pre_match) : m.pre_match)
92
- string = pre_match + m2string[m]
93
- post_match = m.post_match
94
- while m = regx.match(post_match)
92
+ string = ''
93
+ while m
95
94
  pre_match = (block ? block.call(m.pre_match) : m.pre_match)
96
95
  string << pre_match + m2string[m]
97
96
  post_match = m.post_match
97
+ m = regx.match(post_match)
98
98
  end
99
99
  string << (block ? block.call(post_match) : post_match)
100
100
  return string
@@ -130,15 +130,16 @@ class Markdown
130
130
  # Ordered list
131
131
  ORDERED = /^( {0,3})\d+\. (\S.*)$/
132
132
  PARSERS << :ordered
133
- def ordered(md=ORDERED.match(@line), level=0)
134
- return false unless md
133
+ def ordered(md=nil)
134
+ md ||= ORDERED.match(@line) or return false
135
+ level = md[1].length
135
136
  @html << "<ol#{@opt[:attributes]}>\n"
136
137
  @opt.delete(:attributes)
137
138
  while md and level==md[1].length
138
139
  @html << " <li>#{inline(md[2])}</li>\n"
139
140
  if md = (@line=@file.gets)&.match(ORDERED)
140
141
  if level < md[1].length
141
- ordered(md, md[1].length)
142
+ ordered(md)
142
143
  md = @line&.match(ORDERED)
143
144
  end
144
145
  end
@@ -148,7 +149,7 @@ class Markdown
148
149
  end
149
150
 
150
151
  # Paragraph
151
- PARAGRAPHS = /^[\[\(`*"~_]?\w/
152
+ PARAGRAPHS = /^[\[\(*`'"~_]?:?\w/
152
153
  PARSERS << :paragraphs
153
154
  def paragraphs
154
155
  md = PARAGRAPHS.match(@line) or return false
@@ -156,7 +157,10 @@ class Markdown
156
157
  @opt.delete(:attributes)
157
158
  while md
158
159
  @html << inline(@line)
159
- md = (@line=@file.gets)&.match PARAGRAPHS
160
+ while (@line=@file.gets)&.start_with?('<')
161
+ @html << @line # Exceptional HTML injection into the paragraph
162
+ end
163
+ md = @line&.match PARAGRAPHS
160
164
  end
161
165
  @html << "</p>\n"
162
166
  true
@@ -165,15 +169,16 @@ class Markdown
165
169
  # Unordered list
166
170
  UNORDERED = /^( {0,3})[*] (\S.*)$/
167
171
  PARSERS << :unordered
168
- def unordered(md=UNORDERED.match(@line), level=0)
169
- return false unless md
172
+ def unordered(md=nil)
173
+ md ||= UNORDERED.match(@line) or return false
174
+ level = md[1].length
170
175
  @html << "<ul#{@opt[:attributes]}>\n"
171
176
  @opt.delete(:attributes)
172
177
  while md and level==md[1].length
173
178
  @html << " <li>#{inline(md[2])}</li>\n"
174
179
  if md = (@line=@file.gets)&.match(UNORDERED)
175
180
  if level < md[1].length
176
- unordered(md, md[1].length)
181
+ unordered(md)
177
182
  md = @line&.match(UNORDERED)
178
183
  end
179
184
  end
@@ -202,16 +207,22 @@ class Markdown
202
207
  end
203
208
 
204
209
  # Definition list
205
- DEFINITIONS = /^: (.*)$/
210
+ DEFINITIONS = /^[+] (.*)$/
206
211
  PARSERS << :definitions
207
212
  def definitions
208
213
  md = DEFINITIONS.match(@line) or return false
209
214
  @html << "<dl#{@opt[:attributes]}>\n"
210
215
  @opt.delete(:attributes)
211
216
  while md
212
- item = md[1]
213
- @html << ((item[-1]==':')? "<dt>#{inline(item[0..-2])}</dt>\n" :
214
- "<dd>#{inline(item)}</dd>\n")
217
+ case md[1]
218
+ when /(.*): (.*)$/
219
+ @html << "<dt>#{inline $1.strip}</dt>\n"
220
+ @html << "<dd>#{inline $2.strip}</dd>\n"
221
+ when /(.*):$/
222
+ @html << "<dt>#{inline $1.strip}</dt>\n"
223
+ else
224
+ @html << "<dd>#{inline md[1].strip}</dd>\n"
225
+ end
215
226
  md = (@line=@file.gets)&.match DEFINITIONS
216
227
  end
217
228
  @html << "</dl>\n"
@@ -234,22 +245,27 @@ class Markdown
234
245
  end
235
246
 
236
247
  # Block-quote
237
- BLOCKQS = /^> (.*)$/
248
+ BLOCKQS = /^( {0,3})> (.*)$/
238
249
  PARSERS << :blockqs
239
- def blockqs
240
- md = BLOCKQS.match(@line) or return false
250
+ def blockqs(md=nil)
251
+ md ||= BLOCKQS.match(@line) or return false
252
+ level = md[1].length
241
253
  @html << "<blockquote#{@opt[:attributes]}>\n"
242
254
  @opt.delete(:attributes)
243
- while md
244
- @html << inline(md[1])
255
+ while md and level==md[1].length
256
+ @html << inline(md[2])
245
257
  @html << "\n"
246
- md = (@line=@file.gets)&.match BLOCKQS
258
+ if md = (@line=@file.gets)&.match(BLOCKQS)
259
+ if level < md[1].length
260
+ blockqs(md)
261
+ md = @line&.match(BLOCKQS)
262
+ end
263
+ end
247
264
  end
248
265
  @html << "</blockquote>\n"
249
266
  true
250
267
  end
251
268
 
252
-
253
269
  # Code
254
270
  CODES = /^[`~]{3}\s*(\w+)?$/
255
271
  PARSERS << :codes
@@ -375,11 +391,11 @@ class Markdown
375
391
  alt,src,href=md[1],*md[2].strip.split(/\s+/,2)
376
392
  style = ' '
377
393
  case alt
378
- when /^ .* $/
394
+ when /^:.*:$/
379
395
  style = %Q( style="display: block; margin-left: auto; margin-right: auto;" )
380
- when / $/
396
+ when /:$/
381
397
  style = %Q( style="float:left;" )
382
- when /^ /
398
+ when /^:/
383
399
  style = %Q( style="float:right;" )
384
400
  end
385
401
  if /(\d+)x(\d+)/.match alt
@@ -400,52 +416,48 @@ class Markdown
400
416
  PARSERS << :forms
401
417
  def forms
402
418
  md = FORMS.match(@line) or return false
403
- form = []
404
- n,fields,submit,method = 0,0,nil,nil
405
- action = (_=/\(([^\(\)]*)\)$/.match(@line))? _[1] : nil
419
+ fields,nl,submit = 0,false,nil
420
+ action = (_=/\(([^\(\)]*)\)!?$/.match(@line))? %Q( action="#{_[1]}") : nil
421
+ method = @line.match?(/!$/) ? ' method="post"' : nil
422
+ @html << %Q(<form#{action}#{method}#{@opt[:attributes]}>\n)
423
+ @opt.delete(:attributes)
406
424
  while md
407
- n += 1
408
- form << ' <br>' if n > 1
425
+ @html << " <br>\n" if nl
409
426
  @line.scan(FIELDS).each do |field, pwd, name, value|
410
- method ||= ' method="post"' if pwd
411
427
  field &&= field[0...-1]
412
428
  value &&= value[2...-1]
413
429
  if field
414
430
  type = (pwd)? 'password' : 'text'
415
431
  if value
416
432
  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>"
433
+ @html << %Q(#{field}:<select name="#{name}">\n)
434
+ values.each do |value|
435
+ fields += 1
436
+ @html << %Q( <option value="#{value}">#{value}</option>\n)
437
+ end
438
+ @html << "</select>\n"
423
439
  else
424
- fields += 1
425
- form << %Q{ #{field}:<input type="#{type}" name="#{name}" value="#{value}">}
440
+ fields += 1
441
+ @html << %Q{ #{field}:<input type="#{type}" name="#{name}" value="#{value}">\n}
426
442
  end
427
443
  else
428
444
  fields += 1
429
- form << %Q{ #{field}:<input type="#{type}" name="#{name}">}
445
+ @html << %Q{ #{field}:<input type="#{type}" name="#{name}">\n}
430
446
  end
431
447
  elsif name=='submit'
432
448
  submit = value
433
449
  else
434
- form << %Q{ <input type="hidden" name="#{name}" value="#{value}">}
450
+ @html << %Q{ <input type="hidden" name="#{name}" value="#{value}">\n}
435
451
  end
436
452
  end
437
- md = (@line=@file.gets)&.match FORMS
453
+ md=(@line=@file.gets)&.match(FORMS) and nl=true
438
454
  end
439
455
  if submit or not fields==1
440
456
  submit ||= 'Submit'
441
- form << ' <br>' if n > 1
442
- form << %Q( <input type="submit" value="#{submit}">)
457
+ @html << " <br>\n" if nl
458
+ @html << %Q( <input type="submit" value="#{submit}">\n)
443
459
  end
444
- form.unshift %Q(<form action="#{action}"#{method}#{@opt[:attributes]}>)
445
- form << %Q(</form>)
446
- @html << form.join("\n")
447
- @html << "\n"
448
- @opt.delete(:attributes)
460
+ @html << %Q(</form>\n)
449
461
  true
450
462
  end
451
463
 
@@ -457,17 +469,17 @@ form << %Q{ #{field}:<input type="#{type}" name="#{name}" value="#{value}">}
457
469
  if File.exist?(filename=File.join(ROOT, md[1]))
458
470
  extension,lang = filename.split('.').last,nil
459
471
  unless extension=='html'
460
- lang = Rouge::Lexer.find extension
472
+ lang = Rouge::Lexer.find(extension) unless extension=='txt'
461
473
  klass = lang ? ' class="highlight"' : nil
462
474
  @html << "<pre#{klass}#{@opt[:attributes]}>"
463
475
  @opt.delete(:attributes)
464
- @html << '<code>' unless extension=='txt'
476
+ @html << '<code>' if lang
465
477
  @html << "\n"
466
478
  end
467
479
  code = File.read(filename)
468
480
  @html << (lang ? ROUGE.format(lang.new.lex(code)) : code)
469
481
  unless extension=='html'
470
- @html << '</code>' unless extension=='txt'
482
+ @html << '</code>' if lang
471
483
  @html << '</pre>'
472
484
  @html << "\n"
473
485
  end
@@ -1,3 +1,3 @@
1
1
  module Markita
2
- NAVIGATION << %Q(![ Navigation](/favicon.ico /index)\n)
2
+ NAVIGATION << %Q(![:Navigation](/favicon.ico /index)\n)
3
3
  end
@@ -0,0 +1,7 @@
1
+ module Markita
2
+ class Base
3
+ get '/readme.html' do
4
+ Markdown.new('README').markdown File.read File.join(APPDIR,'README.md')
5
+ end
6
+ end
7
+ end
@@ -6,7 +6,7 @@ class Preprocess
6
6
  end
7
7
 
8
8
  def gets
9
- if line = @file.gets
9
+ while line = @file.gets
10
10
  case line
11
11
  when @regx
12
12
  line = @template if @template
@@ -14,17 +14,17 @@ class Preprocess
14
14
  line = line.gsub("&#{name.downcase};", value)
15
15
  line = line.gsub("&#{name.upcase};", CGI.escape(value))
16
16
  end
17
+ return line
17
18
  when %r(^! regx = /(.*)/$)
18
19
  @regx = Regexp.new $1
19
- line = gets
20
20
  when %r(^! template = "(.*)"$)
21
21
  @template = $1+"\n"
22
- line = gets
23
22
  else
24
23
  @regx &&= (@template=nil)
24
+ return line
25
25
  end
26
26
  end
27
- line
27
+ return nil
28
28
  end
29
29
  end
30
30
  end
data/lib/markita.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Markita
2
- VERSION = '3.4.211004'
2
+ VERSION = '4.0.221124'
3
3
 
4
4
  def self.run!
5
5
  # Standard libraries
@@ -16,12 +16,15 @@ module Markita
16
16
  require_relative 'markita/markdown.rb'
17
17
  require_relative 'markita/base.rb'
18
18
  # Plugs
19
+ require_relative 'markita/plug/about.rb' unless OPTIONS&.no_about
19
20
  require_relative 'markita/plug/favicon.rb' unless OPTIONS&.no_favicon
20
21
  require_relative 'markita/plug/highlight.rb' unless OPTIONS&.no_highlight
21
- require_relative 'markita/plug/navigation.rb' unless OPTIONS&.no_navigation
22
22
  require_relative 'markita/plug/login.rb' unless OPTIONS&.no_login
23
- require_relative 'markita/plug/about.rb' unless OPTIONS&.no_about
23
+ require_relative 'markita/plug/navigation.rb' unless OPTIONS&.no_navigation
24
24
  require_relative 'markita/plug/plugs.rb' unless OPTIONS&.no_plugs
25
+ require_relative 'markita/plug/readme.rb' unless OPTIONS&.no_readme
25
26
  Base.run!
26
27
  end
27
28
  end
29
+ # Requires:
30
+ #`ruby`
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.4.211004
4
+ version: 4.0.221124
5
5
  platform: ruby
6
6
  authors:
7
7
  - CarlosJHR64
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-04 00:00:00.000000000 Z
11
+ date: 2022-11-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: help_parser
@@ -36,40 +36,40 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '3.26'
39
+ version: '4.0'
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: 3.26.1
42
+ version: 4.0.0
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: '3.26'
49
+ version: '4.0'
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: 3.26.1
52
+ version: 4.0.0
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: sinatra
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
57
  - - "~>"
58
58
  - !ruby/object:Gem::Version
59
- version: '2.1'
59
+ version: '3.0'
60
60
  - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: 2.1.0
62
+ version: 3.0.3
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '2.1'
69
+ version: '3.0'
70
70
  - - ">="
71
71
  - !ruby/object:Gem::Version
72
- version: 2.1.0
72
+ version: 3.0.3
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: thin
75
75
  requirement: !ruby/object:Gem::Requirement
@@ -118,12 +118,13 @@ files:
118
118
  - lib/markita/plug/login.rb
119
119
  - lib/markita/plug/navigation.rb
120
120
  - lib/markita/plug/plugs.rb
121
+ - lib/markita/plug/readme.rb
121
122
  - lib/markita/preprocess.rb
122
123
  homepage: https://github.com/carlosjhr64/markita
123
124
  licenses:
124
125
  - MIT
125
126
  metadata: {}
126
- post_install_message:
127
+ post_install_message:
127
128
  rdoc_options: []
128
129
  require_paths:
129
130
  - lib
@@ -137,9 +138,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
137
138
  - - ">="
138
139
  - !ruby/object:Gem::Version
139
140
  version: '0'
140
- requirements: []
141
- rubygems_version: 3.2.22
142
- signing_key:
141
+ requirements:
142
+ - 'ruby: ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [aarch64-linux]'
143
+ rubygems_version: 3.3.7
144
+ signing_key:
143
145
  specification_version: 4
144
146
  summary: A Sinatra Markdown server.
145
147
  test_files: []