vimwiki_markdown 0.1.3 → 0.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
  SHA1:
3
- metadata.gz: de2e7b948c3ae02f7dcda86ea0adc4f8868fb00b
4
- data.tar.gz: 67c994ac7ea16eb5087d3dbbf3b65d591d2e8322
3
+ metadata.gz: 726b831c9bb819ebbe7bd054e85d47926d008142
4
+ data.tar.gz: 2fc210b9ee34a717e9ea98b51122f646e1e8629f
5
5
  SHA512:
6
- metadata.gz: 5f4e57d022af88b4eeacbc550ac7b68d80c12d846537c2cf2b5805be41868fc36ea65cfc44b098dea113e08444cbe2f90a508c5ce65ecd5b1b4c7dc534a381dd
7
- data.tar.gz: 4f19b24a1fd5ed29ffc67b3843ae9cf5f4b29bf6e03fbb1ced98ce8824152a3c2d5600af2c501c0c54e9a6b39b81afedde5b77773aa847a2d1cb21e3d1a52879
6
+ metadata.gz: aa137e60a6d1e2e53ee2f0a46a55b14de20971ddb29d31eafe182adb3b9dd4a228596fb8210d9b2f3ce2f56e8b9d81db14220f15c2d3407074cb013151ff37c8
7
+ data.tar.gz: d71c4e2e0ff8e45d2dac61f6c3ebd1de3bfe4e784880113becaeb13ec06302a9db09ef5eb0265ff097478ead5378c8c31434707b692cc169e11d1fe1cda25aa2
data/README.md CHANGED
@@ -8,7 +8,7 @@ It is currently a work in progress (but working for me ;)
8
8
 
9
9
  ## Requirements
10
10
 
11
- Ruby installed on your computer
11
+ Ruby installed on your computer & up to date version of vimwiki
12
12
 
13
13
  https://www.ruby-lang.org/en/installation/
14
14
 
@@ -16,11 +16,6 @@ Install the vimwiki_markdown gem
16
16
 
17
17
  $ gem install vimwiki_markdown
18
18
 
19
- Note, the current version of vimwiki does not allow binaries to be called
20
- for the generation of html. This was added on the master branch in [this commit](https://github.com/vimwiki/vimwiki/commit/c1a5bb51adc8cacaa70e2804106817b68295f932)
21
-
22
- Currently you will need to make sure you are running the dev branch of vimwiki, or add that commit in yourself
23
-
24
19
  ## Setup
25
20
 
26
21
  Ensure that your vimiwiki directive in your .vimrc is setup for markdown. For
@@ -64,6 +59,9 @@ A sample tpl file is available here https://raw.githubusercontent.com/patrickdav
64
59
 
65
60
  ## Contributing
66
61
 
62
+ Pull requests are very welcome, especially if you want to implement some of the
63
+ more interesting vimwiki links (e.g. :local etc.)
64
+
67
65
  1. Fork it ( https://github.com/patrickdavey/vimwiki_markdown/fork )
68
66
  2. Create your feature branch (`git checkout -b my-new-feature`)
69
67
  3. Commit your changes (`git commit -am 'Add some feature'`)
data/changelog.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## 0.2.0 [March 6th 2016]
2
+ * Adds the ability for `[[source|title]]` style links to be parsed correctly
3
+ * Allows links with subdirectories `[[path/in/a/subdir/file]]` links to work
4
+ * Also allows vimwiki links formatted with markdown syntax to work, this
5
+ feature is currently implemented on the dev branch. This means you can
6
+ link to [my markdownfile](blah.md) and it'll be parsed correctly
7
+
1
8
  ## 0.1.3 [August 11th 2015]
2
9
  * Adding the TableOfContents filter so that bookmarks are created.
3
10
 
@@ -5,13 +5,13 @@ module VimwikiMarkdown
5
5
  DEFAULTS = ["1", #force - 1/0
6
6
  "markdown",
7
7
  "md",
8
- "/home/patrick/vimwiki/site_html/",
9
- "/home/patrick/vimwiki/index.md",
10
- "/home/patrick/vimwiki/site_html/style.css",
11
- "/home/patrick/vimwiki/templates/",
8
+ "~/vimwiki/site_html/",
9
+ "~/vimwiki/index.md",
10
+ "~/vimwiki/site_html/style.css",
11
+ "~/vimwiki/templates/",
12
12
  "default",
13
13
  ".tpl",
14
- "-"]
14
+ "-"].freeze
15
15
 
16
16
  FORCE = 0
17
17
  SYNTAX = 1
@@ -53,6 +53,7 @@ module VimwikiMarkdown
53
53
  @template_default = arguments[TEMPLATE_DEFAULT]
54
54
  @template_ext = arguments[TEMPLATE_EXT]
55
55
  @root_path = arguments[ROOT_PATH]
56
+ @root_path = "." if @root_path == "-"
56
57
  raise "Must be markdown" unless syntax == 'markdown'
57
58
  end
58
59
 
@@ -1,3 +1,3 @@
1
1
  module VimwikiMarkdown
2
- VERSION = "0.1.3"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -0,0 +1,52 @@
1
+ # This class takes in a string of a markdown link and spits out
2
+ # a correctly formed markdown link, with absolute and relative
3
+ # links to markdown files correctly altered.
4
+ #
5
+ # The main thing we're working around is that markdown files can
6
+ # be linked to with (or without) an extension. That and we're also
7
+ # rewiring the filenames to be parameterized
8
+
9
+
10
+ module VimwikiMarkdown
11
+ class VimwikiLink
12
+ MARKDOWN_LINK_REGEX = /\[(?<title>.*)\]\((?<uri>.*)\)/
13
+
14
+ attr_reader :title, :uri, :source_markdown_directory, :markdown_extension, :root_path
15
+
16
+ def initialize(markdown_link, source_markdown_filepath, markdown_extension, root_path)
17
+ @title = markdown_link.match(MARKDOWN_LINK_REGEX)[:title]
18
+ @uri = markdown_link.match(MARKDOWN_LINK_REGEX)[:uri]
19
+ @markdown_extension = markdown_extension
20
+ @root_path = root_path
21
+ @source_markdown_directory = Pathname.new(source_markdown_filepath).dirname
22
+ rewrite_local_links!
23
+ end
24
+
25
+
26
+ def to_s
27
+ "[#{title}](#{uri})"
28
+ end
29
+
30
+ private
31
+
32
+ def rewrite_local_links!
33
+ if vimwiki_markdown_file_exists?
34
+ path = Pathname.new(uri)
35
+ @uri = "#{path.dirname + path.basename(markdown_extension).to_s.parameterize}.html"
36
+ end
37
+ end
38
+
39
+ def vimwiki_markdown_file_exists?
40
+ File.exist?(source_markdown_directory + uri) ||
41
+ File.exist?(source_markdown_directory + "#{uri}.#{markdown_extension}") ||
42
+ absolute_path_exists?
43
+ end
44
+
45
+ def absolute_path_exists?
46
+ path = Pathname(uri)
47
+ path.absolute? && (
48
+ File.exist?(source_markdown_directory + root_path + path.to_s.sub(/^\//,"")) ||
49
+ File.exist?(source_markdown_directory + root_path + path.to_s.sub(/^\//,"").sub(/$/, ".#{markdown_extension}")))
50
+ end
51
+ end
52
+ end
@@ -1,6 +1,8 @@
1
1
  require 'active_support/inflector'
2
2
  require 'github/markup'
3
3
  require 'html/pipeline'
4
+ require 'pathname'
5
+ require "vimwiki_markdown/vimwiki_link"
4
6
 
5
7
  class VimwikiMarkdown::WikiBody
6
8
 
@@ -31,11 +33,32 @@ class VimwikiMarkdown::WikiBody
31
33
  end
32
34
 
33
35
  def fixlinks
34
- #convert wiki_links to markdown links
35
- # [This link](http://example.net/)
36
+ convert_wiki_style_links_with_title_bar!
37
+ convert_wiki_style_links!
38
+ convert_markdown_local_links!
39
+ end
40
+
41
+ def convert_wiki_style_links_with_title_bar!
42
+ wiki_bar = /\[\[(?<source>.*)\|(?<title>.*)\]\]/
43
+ @markdown_body.gsub!(wiki_bar) do
44
+ source = Regexp.last_match[:source]
45
+ title = Regexp.last_match[:title]
46
+ "[#{title}](#{source})"
47
+ end
48
+ end
49
+
50
+ def convert_wiki_style_links!
36
51
  @markdown_body.gsub!(/\[\[(.*?)\]\]/) do
37
- link_title = Regexp.last_match[1]
38
- "[#{link_title}](#{link_title.parameterize}.html)"
52
+ link= Regexp.last_match[1]
53
+ "[#{link}](#{link})"
39
54
  end
40
55
  end
56
+
57
+ def convert_markdown_local_links!
58
+ @markdown_body.gsub!(/\[.*\]\(.*\)/) do |match|
59
+ VimwikiMarkdown::VimwikiLink.new(match, options.input_file, options.extension, options.root_path).to_s
60
+ end
61
+
62
+ end
63
+
41
64
  end
@@ -1,6 +1,7 @@
1
1
  require "vimwiki_markdown/version"
2
2
  require "vimwiki_markdown/options"
3
3
  require "vimwiki_markdown/template"
4
+ require "vimwiki_markdown/vimwiki_link"
4
5
  require "vimwiki_markdown/wiki_body"
5
6
  require "vimwiki_markdown/exceptions"
6
7
 
@@ -13,7 +13,7 @@ module VimwikiMarkdown
13
13
  its(:force) { should be(true) }
14
14
  its(:syntax) { should eq('markdown') }
15
15
  its(:output_fullpath) { should eq("#{subject.output_dir}#{subject.title.parameterize}.html") }
16
- its(:template_filename) { should eq('/home/patrick/vimwiki/templates/default.tpl') }
16
+ its(:template_filename) { should eq('~/vimwiki/templates/default.tpl') }
17
17
  end
18
18
  end
19
19
  end
@@ -0,0 +1,94 @@
1
+ require 'spec_helper'
2
+
3
+ module VimwikiMarkdown
4
+ describe VimwikiLink do
5
+ let(:markdown_link) { "[title](http://www.google.com)" }
6
+ let(:source_filepath) { "unimportant" }
7
+ let(:markdown_extension) { "md" }
8
+ let(:root_path) { "-" }
9
+
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
15
+
16
+ context "with an existing markdown file matching name" do
17
+ let(:existing_file) { "test.#{markdown_extension}" }
18
+ let(:existing_file_no_extension) { existing_file.gsub(/\.#{markdown_extension}$/,"") }
19
+ let(:temp_wiki_dir) { Pathname.new(Dir.mktmpdir("temp_wiki_")) }
20
+ let(:markdown_link) { "[test](#{existing_file})" }
21
+ let(:source_filepath) { temp_wiki_dir + "index.md" }
22
+
23
+ before(:each) do
24
+ # here we create a stub test filename in the directory,
25
+ FileUtils.mkdir_p((temp_wiki_dir + existing_file).dirname)
26
+ FileUtils.touch(temp_wiki_dir + existing_file)
27
+ end
28
+
29
+ after(:each) do
30
+ FileUtils.rm_r(temp_wiki_dir)
31
+ end
32
+
33
+ it "must convert same-directory markdown links correctly" do
34
+ link = VimwikiLink.new(markdown_link, source_filepath, markdown_extension, root_path)
35
+ expect(link.title).to eq("test")
36
+ expect(link.uri).to eq("#{existing_file_no_extension}.html")
37
+ end
38
+
39
+ it "must convert same-directory markdown links with no extension correctly" do
40
+ markdown_link = "[test](#{existing_file_no_extension})"
41
+
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")
45
+ end
46
+
47
+ context "subdirectory linked files" do
48
+ let(:existing_file) { "subdirectory/test.md" }
49
+
50
+ it "must convert markdown links correctly" do
51
+ link = VimwikiLink.new(markdown_link, source_filepath, markdown_extension, root_path)
52
+ expect(link.title).to eq("test")
53
+ expect(link.uri).to eq("#{existing_file_no_extension}.html")
54
+ end
55
+ end
56
+
57
+ context "../ style links" do
58
+ let(:existing_file) { "test.md" }
59
+ let(:source_filepath) { temp_wiki_dir + "subdirectory/index.md" }
60
+
61
+ it "must convert sub-directory markdown links correctly" do
62
+ link = VimwikiLink.new("[test](../test)", source_filepath, markdown_extension, root_path)
63
+ expect(link.title).to eq("test")
64
+ expect(link.uri).to eq("../test.html")
65
+ end
66
+ end
67
+
68
+ context "aboslutely linked files" do
69
+ let(:existing_file) { "test.md" }
70
+ let(:source_filepath) { temp_wiki_dir + "subdirectory/index.md" }
71
+ let(:root_path) { "../"}
72
+
73
+ it "must convert absolute paths correctly" do
74
+ link = VimwikiLink.new("[test](/test.md)", source_filepath, markdown_extension, root_path)
75
+ expect(link.uri).to eq("/test.html")
76
+ end
77
+
78
+ it "must convert absolute paths without extension correctly" do
79
+ link = VimwikiLink.new("[test](/test)", source_filepath, markdown_extension, root_path)
80
+ expect(link.uri).to eq("/test.html")
81
+ end
82
+
83
+ context "from the root directory" do
84
+ let(:source_filepath) { temp_wiki_dir + "index.md" }
85
+
86
+ it "must convert absolute paths correctly" do
87
+ link = VimwikiLink.new("[test](/test)", source_filepath, markdown_extension, ".")
88
+ expect(link.uri).to eq("/test.html")
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
@@ -6,20 +6,31 @@ require 'rspec-html-matchers'
6
6
  module VimwikiMarkdown
7
7
  describe WikiBody do
8
8
 
9
- let(:options) { Options.new }
10
- let(:wiki_body) { WikiBody.new(options) }
11
- before do
12
- allow(Options).to receive(:arguments).and_return(Options::DEFAULTS)
13
- allow(wiki_body).to receive(:get_wiki_markdown_contents).and_return(wiki_index_markdown)
14
- end
9
+ let(:wiki_body) { WikiBody.new(double(:options, input_file: 'blah', extension: 'md', root_path: '-')) }
10
+ let(:markdown_file_content) { wiki_index_markdown }
15
11
 
16
12
  it "must convert wiki links" do
13
+ allow(wiki_body).to receive(:get_wiki_markdown_contents).and_return(markdown_file_content)
14
+ allow_any_instance_of(VimwikiMarkdown::VimwikiLink).to receive(:vimwiki_markdown_file_exists?).and_return(true)
17
15
  expect(wiki_body.to_s).to match(/<a href="books.html">Books<\/a>/)
18
16
  end
19
17
 
18
+ it "must convert wiki links with separate titles correctly" do
19
+ allow(wiki_body).to receive(:get_wiki_markdown_contents).and_return("[[http://www.google.com|google]]")
20
+ expect(wiki_body.to_s).to match(/<a href="http:\/\/www.google.com">google<\/a>/)
21
+ end
22
+
20
23
  it "must not put a break tag in a blockquote" do
24
+ allow(wiki_body).to receive(:get_wiki_markdown_contents).and_return(markdown_file_content)
25
+ allow_any_instance_of(VimwikiMarkdown::VimwikiLink).to receive(:vimwiki_markdown_file_exists?).and_return(true)
21
26
  expect(wiki_body.to_s).not_to match(/blockquote<br>/)
22
27
  end
23
28
 
29
+ it "must leave normal content alone" do
30
+ allow_any_instance_of(VimwikiMarkdown::VimwikiLink).to receive(:vimwiki_markdown_file_exists?).and_return(true)
31
+ allow(wiki_body).to receive(:get_wiki_markdown_contents).and_return("hello")
32
+ expect(wiki_body.to_s).to match(/hello/)
33
+ end
24
34
  end
35
+
25
36
  end
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.1.3
4
+ version: 0.2.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: 2015-08-11 00:00:00.000000000 Z
11
+ date: 2016-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -216,9 +216,11 @@ files:
216
216
  - lib/vimwiki_markdown/options.rb
217
217
  - lib/vimwiki_markdown/template.rb
218
218
  - lib/vimwiki_markdown/version.rb
219
+ - lib/vimwiki_markdown/vimwiki_link.rb
219
220
  - lib/vimwiki_markdown/wiki_body.rb
220
221
  - spec/lib/vimwiki_markdown/options_spec.rb
221
222
  - spec/lib/vimwiki_markdown/template_spec.rb
223
+ - spec/lib/vimwiki_markdown/vimwiki_link_spec.rb
222
224
  - spec/lib/vimwiki_markdown/wiki_body_spec.rb
223
225
  - spec/spec_helper.rb
224
226
  - vimwiki_markdown.gemspec
@@ -242,12 +244,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
242
244
  version: '0'
243
245
  requirements: []
244
246
  rubyforge_project:
245
- rubygems_version: 2.4.6
247
+ rubygems_version: 2.4.8
246
248
  signing_key:
247
249
  specification_version: 4
248
250
  summary: Converts a github flavoured markdown vimwiki file into html.
249
251
  test_files:
250
252
  - spec/lib/vimwiki_markdown/options_spec.rb
251
253
  - spec/lib/vimwiki_markdown/template_spec.rb
254
+ - spec/lib/vimwiki_markdown/vimwiki_link_spec.rb
252
255
  - spec/lib/vimwiki_markdown/wiki_body_spec.rb
253
256
  - spec/spec_helper.rb