vimwiki_markdown 0.4.2 → 0.6.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: c5a191248476c71d6d9f33309db8800da0a0d7405e89f13b58b10a58187f5fde
4
- data.tar.gz: 1220ed04bf3a24eab1598e31b974b1a101351b9e7e12a7314bc98a4b63434c79
3
+ metadata.gz: 94fcdf721504210b46ed56769e3529838982092414094c950ccddaa747086f9f
4
+ data.tar.gz: 219b35ea5da34b1cf75f962432073a8f97c972a62d14403b35dfae442f98b794
5
5
  SHA512:
6
- metadata.gz: f9cfce9007b1a2627f621a7d5e2c164ef022576460d430849983a672e04bf6d5a711291793f5b89da9c483e8993c295abd57a939e01c29a10a45234d96ad9c0e
7
- data.tar.gz: e00bb2831a4a8c7af9599e51d76a4d41d3aacf6cb00a7ad768e18e7771ab581b778881048dc0d2faeec54e26bad6ecc0a881da2c82600751745f87652b6956f5
6
+ metadata.gz: 5c51b9de26115ee93f512404af7e84544088406df98a4c0861095da736dd78821f12e59b40e639f7bbea13f20bc460eb14bf9b4daa911c3bd00202ccd587f1e9
7
+ data.tar.gz: 5ccfb995fa5e7966379fc34dc40a0799614bf59b59d780fc0932a413a3876bebccdbc3bf4166cbda209a9e8bbc78593673816a44b4a5768cc90a80e6fc33f958
data/README.md CHANGED
@@ -56,14 +56,24 @@ of the site (e.g. `./` or `../../` etc)
56
56
  You can also have a `%date%` marker in your template file
57
57
  It will get rewritten with todays date in the format 29 March 2019
58
58
 
59
+ #### Support for tasklists
60
+ Vimwiki has support for complex todo lists which you can [read about in their help.txt](https://github.com/vimwiki/vimwiki/blob/619f04f89861c58e5a6415a4f83847752928252d/doc/vimwiki.txt#L1768). We do support turning them into HTML. This is _slightly different_ from the way that GitHub checklists are rendered, but, the syntax is a subset of GitHub lists so it should be fine. You can read about it in the [issue](https://github.com/patrickdavey/vimwiki_markdown/issues/27), but basically it should work fine. You will want to add `styles` in for the various states that the todo lists can be in. The easiest way is to simply add the `styles` into your template. You can see the styles [in the sample template here](https://github.com/patrickdavey/vimwiki_markdown/blob/293f99e656819b9c5ecc0c831698ce58904eb774/example_files/default.tpl#L7-L45)
61
+
62
+ #### Support for :local and :file links
63
+
64
+ We have partial support for the `:local` and `:file` link types for vimwiki.
65
+ If you are editing `foo.md` (in the root dir of your wiki) and you are linking to `bar.txt` stored in the same directory as `foo.md` you can do:
66
+
67
+ * `[link text](local:bar.txt)` when output to HTML becomes `<a href="../bar.txt">link text</a>`
68
+ * `[link text](file:bar.txt)` when output to HTML becomes `<a href="/absolute/path/to/file">link text</a>`
69
+
59
70
  #### Optional %nohtml
60
71
 
61
72
  If you place the text %nohtml anywhere in a wiki page, it will not be processed into html
62
73
 
63
74
  ## Contributing
64
75
 
65
- Pull requests are very welcome, especially if you want to implement some of the
66
- more interesting vimwiki links (e.g. :local etc.)
76
+ Pull requests are very welcome
67
77
 
68
78
  1. Fork it ( https://github.com/patrickdavey/vimwiki_markdown/fork )
69
79
  2. Create your feature branch (`git checkout -b my-new-feature`)
@@ -1,3 +1,15 @@
1
+ ## 0.6.0 [April 26 2020]
2
+ Support for todo lists with enhanced state options. Thanks to @primercuervo
3
+
4
+ ## 0.5.0 [April 26 2020]
5
+ Partial support for `local` and `file` links in urls. Thanks to @tfachmann for the PR
6
+
7
+ ## 0.4.4 [June 16 2019]
8
+ Allow fragments if they are for local vimwiki links only
9
+
10
+ ## 0.4.3 [June 16 2019]
11
+ temporarily revoke fragments until we're not altering old links
12
+
1
13
  ## 0.4.2 [June 16 2019]
2
14
  Allow "fragments" in markdown style links such as those generated by :VimwikiTOC or or when using a diary_caption_level.
3
15
  Thanks to @djeremiah - see https://github.com/patrickdavey/vimwiki_markdown/pull/23
@@ -4,6 +4,45 @@
4
4
  <title>%title%</title>
5
5
 
6
6
  %pygments%
7
+ <!--Style for Vimwiki Tasklist-->
8
+ <style>
9
+ .rejected {
10
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAMAAAAMCGV4AAAACXBIWXMAAADFAAAAxQEdzbqoAAAAB3RJTUUH4QgEFhAtuWgv9wAAAPZQTFRFmpqam5iYnJaWnJeXnpSUn5OTopCQpoqKpouLp4iIqIiIrYCAt3V1vW1tv2xsmZmZmpeXnpKS/x4e/x8f/yAg/yIi/yQk/yUl/yYm/ygo/ykp/yws/zAw/zIy/zMz/zQ0/zU1/zY2/zw8/0BA/0ZG/0pK/1FR/1JS/1NT/1RU/1VV/1ZW/1dX/1pa/15e/19f/2Zm/2lp/21t/25u/3R0/3p6/4CA/4GB/4SE/4iI/46O/4+P/52d/6am/6ur/66u/7Oz/7S0/7e3/87O/9fX/9zc/93d/+Dg/+vr/+3t/+/v//Dw//Ly//X1//f3//n5//z8////gzaKowAAAA90Uk5T/Pz8/Pz8/Pz8/Pz8/f39ppQKWQAAAAFiS0dEEnu8bAAAAACuSURBVAhbPY9ZF4FQFEZPSKbIMmWep4gMGTKLkIv6/3/GPbfF97b3w17rA0kQOPgvAeHW6uJ6+5h7HqLdwowgOzejXRXBdx6UdSru216xuOMBHHNU0clTzeSUA6EhF8V8kqroluMiU6HKcuf4phGPr1o2q9kYZWwNq1qfRRmTaXpqsyjj17KkWCxKBUBgXWueHIyiAIg18gsse4KHkLF5IKIY10WQgv7fOy4ST34BRiopZ8WLNrgAAAAASUVORK5CYII=);
11
+ background-repeat: no-repeat;
12
+ background-position: 0 .2em;
13
+ padding-left: 5.5em;
14
+ }
15
+ .done0 {
16
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAxQAAAMUBHc26qAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAA7SURBVCiR7dMxEgAgCANBI3yVRzF5KxNbW6wsuH7LQ2YKQK1mkswBVERYF5Os3UV3gwd/jF2SkXy66gAZkxS6BniubAAAAABJRU5ErkJggg==);
17
+ background-repeat: no-repeat;
18
+ background-position: 0 .2em;
19
+ padding-left: 1.5em;
20
+ }
21
+ .done1 {
22
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAxQAAAMUBHc26qAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABtSURBVCiR1ZO7DYAwDER9BDmTeZQMFXmUbGYpOjrEryA0wOvO8itOslFrJYAug5BMM4BeSkmjsrv3aVTa8p48Xw1JSkSsWVUFwD05IqS1tmYzk5zzae9jnVVVzGyXb8sALjse+euRkEzu/uirFomVIdDGOLjuAAAAAElFTkSuQmCC);
23
+ background-repeat: no-repeat;
24
+ background-position: 0 .15em;
25
+ padding-left: 1.5em;
26
+ }
27
+ .done2 {
28
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAxQAAAMUBHc26qAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAB1SURBVCiRzdO5DcAgDAVQGxjAYgTvxlDIu1FTIRYAp8qlFISkSH7l5kk+ZIwxKiI2mIyqWoeILYRgZ7GINDOLjnmF3VqklKCUMgTee2DmM661Qs55iI3Zm/1u5h9sm4ig9z4ERHTFzLyd4G4+nFlVrYg8+qoF/c0kdpeMsmcAAAAASUVORK5CYII=);
29
+ background-repeat: no-repeat;
30
+ background-position: 0 .15em;
31
+ padding-left: 1.5em;
32
+ }
33
+ .done3 {
34
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAxQAAAMUBHc26qAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABoSURBVCiR7dOxDcAgDATA/0DtUdiKoZC3YhLkHjkVKF3idJHiztKfvrHZWnOSE8Fx95RJzlprimJVnXktvXeY2S0SEZRSAAAbmxnGGKH2I5T+8VfxPhIReQSuuY3XyYWa3T2p6quvOgGrvSFGlewuUAAAAABJRU5ErkJggg==);
35
+ background-repeat: no-repeat;
36
+ background-position: 0 .15em;
37
+ padding-left: 1.5em;
38
+ }
39
+ .done4 {
40
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAQCAYAAAAbBi9cAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAzgAAAM4BlP6ToAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIISURBVDiNnZQ9SFtRFMd/773kpTaGJoQk1im4VDpWQcTNODhkFBcVTCNCF0NWyeDiIIiCm82QoIMIUkHUxcFBg1SEQoZszSat6cdTn1qNue92CMbEr9Sey+XC/Z/zu+f8h6ukUil3sVg0+M+4cFxk42/jH2wAqqqKSCSiPQdwcHHAnDHH9s/tN1h8V28ETdP+eU8fT9Nt62ancYdIPvJNtsu87bmjrJlrTDVM4RROJs1JrHPrD4Bar7A6cpc54iKOaTdJXCUI2UMVrQZ0Js7YPN18ECKkYNQcJe/OE/4dZsw7VqNXQMvHy3QZXQypQ6ycrtwDjf8aJ+PNEDSCzLpn7+m2pD8ZKHlKarYhy6XjEoCYGcN95qansQeA3fNdki+SaJZGTMQIOoL3W/Z89rxv+tokubNajlvk/vm+LFpF2XnUKZHI0I+QrI7Dw0OZTqdzUkpsM7mZTyfy5OPGyw1tK7AFSvmB/Ks8w8YwbUYbe6/3QEKv0vugfxWPnMLJun+d/kI/WLdizpNjMbAIKrhMF4OuwadBALqqs+RfInwUvuNi+fBd+wjogfogAFVRmffO02q01mZZ0HHdgXIzdz0QQLPezIQygX6llxNKKgOFARYCC49CqhoHIUTlss/Vx2phlYwjw8j1CAlfAiwQiJpiy7o1VHnsG5FISkoJu7Q/2YmmaV+i0ei7v38L2CBguSi5AAAAAElFTkSuQmCC);
41
+ background-repeat: no-repeat;
42
+ background-position: 0 .15em;
43
+ padding-left: 1.5em;
44
+ }
45
+ </style>
7
46
  </head>
8
47
  <body id="%title%">
9
48
  <h2 id="title">%title%</h2>
@@ -1,3 +1,3 @@
1
1
  module VimwikiMarkdown
2
- VERSION = "0.4.2"
2
+ VERSION = "0.6.0"
3
3
  end
@@ -11,21 +11,22 @@ module VimwikiMarkdown
11
11
  class VimwikiLink
12
12
  MARKDOWN_LINK_REGEX = /\[(?<title>.*)\]\((?<uri>(?:(?!#).)*)(?<fragment>(?:#)?.*)\)/
13
13
 
14
- attr_reader :title, :uri, :fragment, :source_markdown_directory, :markdown_extension, :root_path
14
+ attr_reader :title, :uri, :fragment, :source_markdown_directory, :markdown_extension, :root_path, :output_dir
15
15
 
16
- def initialize(markdown_link, source_markdown_filepath, markdown_extension, root_path)
16
+ def initialize(markdown_link, source_markdown_filepath, markdown_extension, root_path, output_dir)
17
17
  @title = markdown_link.match(MARKDOWN_LINK_REGEX)[:title]
18
18
  @uri = markdown_link.match(MARKDOWN_LINK_REGEX)[:uri]
19
19
  @fragment = markdown_link.match(MARKDOWN_LINK_REGEX)[:fragment]
20
20
  @markdown_extension = markdown_extension
21
21
  @root_path = root_path
22
22
  @source_markdown_directory = Pathname.new(source_markdown_filepath).dirname
23
+ @output_dir = output_dir
23
24
  rewrite_local_links!
24
25
  end
25
26
 
26
27
 
27
28
  def to_s
28
- "[#{title}](#{uri})"
29
+ "[#{title}](#{uri}#{fragment})"
29
30
  end
30
31
 
31
32
  private
@@ -34,9 +35,31 @@ module VimwikiMarkdown
34
35
  if vimwiki_markdown_file_exists?
35
36
  path = Pathname.new(uri)
36
37
  @uri = "#{path.dirname + path.basename(markdown_extension).to_s.parameterize}.html"
38
+ @fragment = fragment.parameterize.prepend("#") unless fragment.empty?
39
+ elsif /^file:/.match(uri)
40
+ # begins with file: -> force absolute path if file exists
41
+ @uri = "#{source_markdown_directory + uri}" if uri_relative_path_exists?
42
+ elsif /^local:/.match(uri)
43
+ # begins with local: -> force relative path if file exists
44
+ source = Pathname.new(source_markdown_directory)
45
+ output = Pathname.new(output_dir)
46
+ @uri = "#{source.relative_path_from(output) + uri}" if uri_relative_path_exists?
37
47
  end
48
+ end
49
+
50
+ def uri_relative_path_exists?
51
+ # remove file: or local: prefix
52
+ tmp = uri.sub(/^file:|^local:/, "") if uri.present?
53
+ path, title = tmp.split(/\.?\s+\"/) # handle image title
54
+ path = Pathname.new(path)
55
+ path = path.realpath.relative_path_from(source_markdown_directory) if path.absolute?
38
56
 
39
- @uri = "#{uri}#{fragment.empty? ? '' : '#' + fragment.parameterize}"
57
+ if File.exist?(source_markdown_directory + path)
58
+ title = "\"#{title}" unless title.nil? || title.empty?
59
+ @uri = "#{path.to_s.gsub(/\ /, '%20')} #{title}".strip
60
+ return true
61
+ end
62
+ false
40
63
  end
41
64
 
42
65
  def vimwiki_markdown_file_exists?
@@ -25,8 +25,9 @@ class VimwikiMarkdown::WikiBody
25
25
  HTML::Pipeline::SyntaxHighlightFilter,
26
26
  HTML::Pipeline::TableOfContentsFilter
27
27
  ], { scope: "highlight"})
28
- result = pipeline.call(html)
29
- result[:output].to_s
28
+ @result = pipeline.call(html)
29
+ @result = @result[:output].to_s
30
+ enrich_li_class!
30
31
  end
31
32
 
32
33
 
@@ -63,7 +64,7 @@ class VimwikiMarkdown::WikiBody
63
64
 
64
65
  def convert_markdown_local_links!
65
66
  @markdown_body = @markdown_body.gsub(/\[.*?\]\(.*?\)/) do |match|
66
- VimwikiMarkdown::VimwikiLink.new(match, options.input_file, options.extension, options.root_path).to_s
67
+ VimwikiMarkdown::VimwikiLink.new(match, options.input_file, options.extension, options.root_path, options.output_dir).to_s
67
68
  end
68
69
  end
69
70
 
@@ -74,4 +75,15 @@ class VimwikiMarkdown::WikiBody
74
75
  CommonMarker.render_html(content, commonmarker_opts, commonmarker_exts)
75
76
  }
76
77
  end
78
+
79
+ def enrich_li_class!
80
+ syms_hash = { " ]" => 0, ".]" => 1, "o]" => 2, "O]" => 3, "X]" => 4 }
81
+ checkbox = /<li>\s*\[[\s.oOX]\]/
82
+ checkbox_start = /<li>\s*\[/
83
+ @result.gsub!(checkbox) do |m|
84
+ m.sub(checkbox_start, '<li class="done')
85
+ .sub(/[\s.oOX\]]*$/, syms_hash) << '">'
86
+ end
87
+ @result
88
+ end
77
89
  end
@@ -1,24 +1,33 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  module VimwikiMarkdown
4
4
  describe VimwikiLink do
5
- let(:markdown_link) { "[title](http://www.google.com)" }
6
- let(:source_filepath) { "unimportant" }
7
5
  let(:markdown_extension) { ".md" }
8
6
  let(:root_path) { "-" }
9
7
 
10
- it "should leave external links alone" do
11
- link = VimwikiLink.new(markdown_link, source_filepath, markdown_extension, root_path)
12
- expect(link.title).to eq("title")
13
- expect(link.uri).to eq("http://www.google.com")
14
- end
8
+ context "external or fragment only" do
9
+ let(:markdown_link) { "[title](http://www.google.com)" }
10
+ let(:source_filepath) { "unimportant" }
11
+ let(:output_dir) { "unused in this scenario" }
12
+
13
+ it "should leave external links alone" do
14
+ link = VimwikiLink.new(markdown_link, source_filepath, markdown_extension, root_path, output_dir)
15
+ expect(link.to_s).to eq(markdown_link)
16
+ end
17
+
18
+ it "should not alter fragments which are part of a url" do
19
+ markdown_link = "[test](http://foo#Bar)"
20
+
21
+ link = VimwikiLink.new(markdown_link, source_filepath, markdown_extension, root_path, output_dir)
22
+ expect(link.to_s).to eq("[test](http://foo#Bar)")
23
+ end
15
24
 
16
- it "should render fragment-only links correctly" do
17
- markdown_link = "[test](#Wiki Heading)"
25
+ it "should not alter fragment-only links" do
26
+ markdown_link = "[test](#GTD)"
18
27
 
19
- link = VimwikiLink.new(markdown_link, source_filepath, markdown_extension, root_path)
20
- expect(link.title).to eq("test")
21
- expect(link.uri).to eq("#wiki-heading")
28
+ link = VimwikiLink.new(markdown_link, source_filepath, markdown_extension, root_path, output_dir)
29
+ expect(link.to_s).to eq("[test](#GTD)")
30
+ end
22
31
  end
23
32
 
24
33
  context "with an existing markdown file matching name" do
@@ -27,10 +36,12 @@ module VimwikiMarkdown
27
36
  let(:temp_wiki_dir) { Pathname.new(Dir.mktmpdir("temp_wiki_")) }
28
37
  let(:markdown_link) { "[test](#{existing_file})" }
29
38
  let(:source_filepath) { temp_wiki_dir + "index.md" }
39
+ let(:output_dir) { temp_wiki_dir + "temp_output_dir" }
30
40
 
31
41
  before(:each) do
32
42
  # here we create a stub test filename in the directory,
33
43
  FileUtils.mkdir_p((temp_wiki_dir + existing_file).dirname)
44
+ FileUtils.mkdir_p(output_dir)
34
45
  FileUtils.touch(temp_wiki_dir + existing_file)
35
46
  end
36
47
 
@@ -39,43 +50,37 @@ module VimwikiMarkdown
39
50
  end
40
51
 
41
52
  it "must convert same-directory markdown links correctly" do
42
- link = VimwikiLink.new(markdown_link, source_filepath, markdown_extension, root_path)
43
- expect(link.title).to eq("test")
44
- expect(link.uri).to eq("#{existing_file_no_extension}.html")
53
+ link = VimwikiLink.new(markdown_link, source_filepath, markdown_extension, root_path, output_dir)
54
+ expect(link.to_s).to eq("[test](#{existing_file_no_extension}.html)")
45
55
  end
46
56
 
47
57
  it "must convert same-directory markdown links with no extension correctly" do
48
- markdown_link = "[test](#{existing_file_no_extension})"
58
+ markdown_link = "[test](#{existing_file_no_extension})"
49
59
 
50
- link = VimwikiLink.new(markdown_link, source_filepath, markdown_extension, root_path)
51
- expect(link.title).to eq("test")
52
- expect(link.uri).to eq("#{existing_file_no_extension}.html")
60
+ link = VimwikiLink.new(markdown_link, source_filepath, markdown_extension, root_path, output_dir)
61
+ expect(link.to_s).to eq("[test](#{existing_file_no_extension}.html)")
53
62
  end
54
63
 
55
64
  it "must convert same-directory markdown links with url fragments correctly" do
56
65
  markdown_link = "[test](#{existing_file_no_extension}#Wiki Heading)"
57
66
 
58
- link = VimwikiLink.new(markdown_link, source_filepath, markdown_extension, root_path)
59
- expect(link.title).to eq("test")
60
- expect(link.uri).to eq("#{existing_file_no_extension}.html#wiki-heading")
67
+ link = VimwikiLink.new(markdown_link, source_filepath, markdown_extension, root_path, output_dir)
68
+ expect(link.to_s).to eq("[test](#{existing_file_no_extension}.html#wiki-heading)")
61
69
  end
62
70
 
63
71
  context "subdirectory linked files" do
64
72
  let(:existing_file) { "subdirectory/test.md" }
65
73
 
66
74
  it "must convert markdown links correctly" do
67
- link = VimwikiLink.new(markdown_link, source_filepath, markdown_extension, root_path)
68
- expect(link.title).to eq("test")
69
- expect(link.uri).to eq("#{existing_file_no_extension}.html")
75
+ link = VimwikiLink.new(markdown_link, source_filepath, markdown_extension, root_path, output_dir)
76
+ expect(link.to_s).to eq("[test](#{existing_file_no_extension}.html)")
70
77
  end
71
78
 
72
79
  it "must convert directory links correctly" do
73
- markdown_link = "[subdirectory](subdirectory/)"
74
- link = VimwikiLink.new(markdown_link, source_filepath, markdown_extension, root_path)
75
- expect(link.title).to eq("subdirectory")
76
- expect(link.uri).to eq("subdirectory/")
80
+ markdown_link = "[subdirectory](subdirectory/)"
81
+ link = VimwikiLink.new(markdown_link, source_filepath, markdown_extension, root_path, output_dir)
82
+ expect(link.to_s).to eq("[subdirectory](subdirectory/)")
77
83
  end
78
-
79
84
  end
80
85
 
81
86
  context "../ style links" do
@@ -83,9 +88,8 @@ module VimwikiMarkdown
83
88
  let(:source_filepath) { temp_wiki_dir + "subdirectory/index.md" }
84
89
 
85
90
  it "must convert sub-directory markdown links correctly" do
86
- link = VimwikiLink.new("[test](../test)", source_filepath, markdown_extension, root_path)
87
- expect(link.title).to eq("test")
88
- expect(link.uri).to eq("../test.html")
91
+ link = VimwikiLink.new("[test](../test)", source_filepath, markdown_extension, root_path, output_dir)
92
+ expect(link.to_s).to eq("[test](../test.html)")
89
93
  end
90
94
  end
91
95
 
@@ -95,24 +99,50 @@ module VimwikiMarkdown
95
99
  let(:root_path) { "../"}
96
100
 
97
101
  it "must convert absolute paths correctly" do
98
- link = VimwikiLink.new("[test](/test.md)", source_filepath, markdown_extension, root_path)
99
- expect(link.uri).to eq("/test.html")
102
+ link = VimwikiLink.new("[test](/test.md)", source_filepath, markdown_extension, root_path, output_dir)
103
+ expect(link.to_s).to eq("[test](/test.html)")
100
104
  end
101
105
 
102
106
  it "must convert absolute paths without extension correctly" do
103
- link = VimwikiLink.new("[test](/test)", source_filepath, markdown_extension, root_path)
104
- expect(link.uri).to eq("/test.html")
107
+ link = VimwikiLink.new("[test](/test)", source_filepath, markdown_extension, root_path, output_dir)
108
+ expect(link.to_s).to eq("[test](/test.html)")
105
109
  end
106
110
 
107
111
  context "from the root directory" do
108
112
  let(:source_filepath) { temp_wiki_dir + "index.md" }
109
113
 
110
114
  it "must convert absolute paths correctly" do
111
- link = VimwikiLink.new("[test](/test)", source_filepath, markdown_extension, ".")
112
- expect(link.uri).to eq("/test.html")
115
+ link = VimwikiLink.new("[test](/test)", source_filepath, markdown_extension, ".", output_dir)
116
+ expect(link.to_s).to eq("[test](/test.html)")
113
117
  end
114
118
  end
115
119
  end
120
+
121
+ context "links with local: files" do
122
+ let(:sample_png) { "foo.png" }
123
+
124
+ before do
125
+ FileUtils.touch(temp_wiki_dir + sample_png)
126
+ end
127
+
128
+ it "must convert local paths correctly" do
129
+ link = VimwikiLink.new("[test](local:#{sample_png})", source_filepath, markdown_extension, root_path, output_dir)
130
+ expect(link.to_s).to eq("[test](../#{sample_png})")
131
+ end
132
+ end
133
+
134
+ context "links with file: files" do
135
+ let(:sample_png) { "foo.png" }
136
+
137
+ before do
138
+ FileUtils.touch(temp_wiki_dir + sample_png)
139
+ end
140
+
141
+ it "must convert local paths correctly" do
142
+ link = VimwikiLink.new("[test](file:#{sample_png})", source_filepath, markdown_extension, root_path, output_dir)
143
+ expect(link.to_s).to eq("[test](#{temp_wiki_dir + sample_png})")
144
+ end
145
+ end
116
146
  end
117
147
  end
118
148
  end
@@ -6,7 +6,7 @@ require 'rspec-html-matchers'
6
6
  module VimwikiMarkdown
7
7
  describe WikiBody do
8
8
 
9
- let(:wiki_body) { WikiBody.new(double(:options, input_file: 'blah', extension: 'md', root_path: '-')) }
9
+ let(:wiki_body) { WikiBody.new(double(:options, input_file: 'blah', extension: 'md', root_path: '-', output_dir: ".")) }
10
10
  let(:markdown_file_content) { wiki_index_markdown }
11
11
 
12
12
  it "must convert wiki links" do
@@ -52,6 +52,36 @@ module VimwikiMarkdown
52
52
  expect(wiki_body.to_s).to match(/<a href="there.html">there<\/a>/)
53
53
  end
54
54
 
55
+ it "must enrich task list unchecked" do
56
+ allow_any_instance_of(VimwikiMarkdown::VimwikiLink).to receive(:vimwiki_markdown_file_exists?).and_return(true)
57
+ allow(wiki_body).to receive(:get_wiki_markdown_contents).and_return("- [ ] This is one line")
58
+ expect(wiki_body.to_s).to match(/<li class="done0"> This is one line<\/li>/)
59
+ end
60
+
61
+ it "must enrich task list checked" do
62
+ allow_any_instance_of(VimwikiMarkdown::VimwikiLink).to receive(:vimwiki_markdown_file_exists?).and_return(true)
63
+ allow(wiki_body).to receive(:get_wiki_markdown_contents).and_return("- [X] This is a checked line")
64
+ expect(wiki_body.to_s).to match(/<li class="done4"> This is a checked line<\/li>/)
65
+ end
66
+
67
+ it "must enrich task list parent 1" do
68
+ allow_any_instance_of(VimwikiMarkdown::VimwikiLink).to receive(:vimwiki_markdown_file_exists?).and_return(true)
69
+ allow(wiki_body).to receive(:get_wiki_markdown_contents).and_return("- [.] This is a parent 1 line")
70
+ expect(wiki_body.to_s).to match(/<li class="done1"> This is a parent 1 line<\/li>/)
71
+ end
72
+
73
+ it "must enrich task list parent 2" do
74
+ allow_any_instance_of(VimwikiMarkdown::VimwikiLink).to receive(:vimwiki_markdown_file_exists?).and_return(true)
75
+ allow(wiki_body).to receive(:get_wiki_markdown_contents).and_return("- [o] This is a parent 2 line")
76
+ expect(wiki_body.to_s).to match(/<li class="done2"> This is a parent 2 line<\/li>/)
77
+ end
78
+
79
+ it "must enrich task list parent 3" do
80
+ allow_any_instance_of(VimwikiMarkdown::VimwikiLink).to receive(:vimwiki_markdown_file_exists?).and_return(true)
81
+ allow(wiki_body).to receive(:get_wiki_markdown_contents).and_return("- [O] This is a parent 3 line")
82
+ expect(wiki_body.to_s).to match(/<li class="done3"> This is a parent 3 line<\/li>/)
83
+ end
84
+
55
85
  describe "syntax highlighting" do
56
86
  it "must give correct classes" do
57
87
  allow(wiki_body).to receive(:get_wiki_markdown_contents)
@@ -107,6 +107,28 @@ def wiki_index_markdown
107
107
 
108
108
  > this is a blockquote
109
109
  > without a linebreak
110
+
111
+ ## Test for checks
112
+
113
+ - [ ] This is one line
114
+ - [X] This is a checked line
115
+ - [ ] This is a parent line 1
116
+ - [ ] This is a child line 1
117
+ - [ ] This is a child line 2
118
+ - [.] This is a parent line 2
119
+ - [X] This is a child line 1
120
+ - [ ] This is a child line 2
121
+ - [ ] This is a child line 3
122
+ - [o] This is a parent line 2
123
+ - [X] This is a child line 1
124
+ - [X] This is a child line 2
125
+ - [ ] This is a child line 3
126
+ - [O] This is a parent line 3
127
+ - [X] This is a child line 1
128
+ - [X] This is a child line 2
129
+ - [X] This is a child line 3
130
+ - [ ] This is a child line 4
131
+
110
132
  "
111
133
  end
112
134
 
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.0"
22
- spec.add_development_dependency "rake", "~> 11.2"
22
+ spec.add_development_dependency "rake", "~> 12.3"
23
23
  spec.add_development_dependency "rspec", "~> 3.0"
24
24
  spec.add_development_dependency "pry", "~> 0.12"
25
25
  spec.add_development_dependency "rspec-its", "~> 1.1"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vimwiki_markdown
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Davey
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-22 00:00:00.000000000 Z
11
+ date: 2020-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '11.2'
33
+ version: '12.3'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '11.2'
40
+ version: '12.3'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -260,8 +260,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
260
260
  - !ruby/object:Gem::Version
261
261
  version: '0'
262
262
  requirements: []
263
- rubyforge_project:
264
- rubygems_version: 2.7.9
263
+ rubygems_version: 3.0.4
265
264
  signing_key:
266
265
  specification_version: 4
267
266
  summary: Converts a github flavoured markdown vimwiki file into html.