hiki2md 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
- SHA1:
3
- metadata.gz: 75c588c94f143ff7531246991a1f1cd286e4d22d
4
- data.tar.gz: 9acce914fec1459b92dac42914badf6b4861bff6
2
+ SHA256:
3
+ metadata.gz: dd9f235518be1faf5230ff7f4739a1fb311727ded398fe7c44f24b459c3ec3a0
4
+ data.tar.gz: 47ae584b929f160ae9a680994dfebdacfc1fe12e7c9cb52470ae900fc0d8482a
5
5
  SHA512:
6
- metadata.gz: 81094c8d50da145dfd50b7ac42a1965404e87302185beeaa156f7f9e5d0f2162fe6a5a1ed3ac593c0c8e16bc7713b2470327c3cad59633c38dc5a48595634575
7
- data.tar.gz: 0b862ccd85bcd0f374a89b06a2b4abf5bbde43ed965e6723b6e1df1d1f099a3c27f0de8fddfed40f7ef370cc974c69de742ee2b69c89be180297014d3a54b70b
6
+ metadata.gz: b0e0d03d869dfd64587ae2b782e56d6bf5fa88e4bb8bd0eba6736b00ff06c5f0b929e41577fdbeb4cdb3a01e272400b94e95ddf3633c2ad7a3be6f7d3e37d8be
7
+ data.tar.gz: 98c7f8cda9a0d088cf26c4a4d23e340f5fbcb7b23e3cfe6e47794170166c6511c6c8324f798d9a07e8ea2a2f227c03670670b9f91fce4a6d8c07c58a65994727
data/.gitignore CHANGED
@@ -1,6 +1,5 @@
1
1
  /.bundle/
2
2
  /.yardoc
3
- /Gemfile.lock
4
3
  /_yardoc/
5
4
  /coverage/
6
5
  /doc/
data/Gemfile.lock ADDED
@@ -0,0 +1,36 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ hiki2md (0.1.3)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ diff-lcs (1.6.2)
10
+ rake (13.3.0)
11
+ rspec (3.13.1)
12
+ rspec-core (~> 3.13.0)
13
+ rspec-expectations (~> 3.13.0)
14
+ rspec-mocks (~> 3.13.0)
15
+ rspec-core (3.13.5)
16
+ rspec-support (~> 3.13.0)
17
+ rspec-expectations (3.13.5)
18
+ diff-lcs (>= 1.2.0, < 2.0)
19
+ rspec-support (~> 3.13.0)
20
+ rspec-mocks (3.13.5)
21
+ diff-lcs (>= 1.2.0, < 2.0)
22
+ rspec-support (~> 3.13.0)
23
+ rspec-support (3.13.6)
24
+
25
+ PLATFORMS
26
+ arm64-darwin-23
27
+ ruby
28
+
29
+ DEPENDENCIES
30
+ bundler
31
+ hiki2md!
32
+ rake
33
+ rspec
34
+
35
+ BUNDLED WITH
36
+ 2.6.8
data/exe/hiki2md CHANGED
@@ -1,12 +1,31 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'hiki2md'
3
+ require 'optparse'
4
+ require 'yaml'
5
+
6
+ interwiki_map = {}
7
+
8
+ OptionParser.new do |opts|
9
+ opts.banner = "Usage: hiki2md [options] <file>"
10
+
11
+ opts.on("--interwiki-map PATH", "Path to a YAML file for InterWiki definitions") do |path|
12
+ if File.exist?(path)
13
+ interwiki_map.merge!(YAML.load_file(path))
14
+ else
15
+ raise IOError.new("InterWiki map file not found: #{path}")
16
+ end
17
+ end
18
+ end.parse!
3
19
 
4
20
  if ARGV.size != 1
5
21
  raise ArgumentError.new("no file specified")
6
22
  end
7
23
 
8
- if !File.exist?(ARGV[0])
9
- raise IOError.new("no exist #{ARGV[0]}")
24
+ input_file = ARGV[0]
25
+
26
+ if !File.exist?(input_file)
27
+ raise IOError.new("no exist #{input_file}")
10
28
  end
11
29
 
12
- puts Hiki2md.new.convert(File.read(ARGV[0]))
30
+ hiki2md = Hiki2md.new(interwiki_map: interwiki_map)
31
+ puts hiki2md.convert(File.read(input_file))
data/hiki2md.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.10"
22
- spec.add_development_dependency "rake", "~> 10.0"
21
+ spec.add_development_dependency "bundler"
22
+ spec.add_development_dependency "rake"
23
23
  spec.add_development_dependency "rspec"
24
24
  end
@@ -1,3 +1,3 @@
1
1
  class Hiki2md
2
- VERSION = "0.1.3"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/hiki2md.rb CHANGED
@@ -1,7 +1,12 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  require 'hiki2md/version'
3
+ require 'cgi'
3
4
 
4
5
  class Hiki2md
6
+ def initialize(interwiki_map: {})
7
+ @interwiki_map = interwiki_map
8
+ end
9
+
5
10
  def convert(lines)
6
11
  @outputs = []
7
12
 
@@ -63,12 +68,59 @@ class Hiki2md
63
68
  # コメント削除
64
69
  next if line =~ %r|\A//.*\z|
65
70
 
71
+ # 水平線
72
+ if line =~ /\A----\z/
73
+ @outputs << "\n---\n"
74
+ next
75
+ end
76
+
77
+ # 箇条書き
78
+ line.gsub! /\A[*]{3} ?/, ' - '
79
+ line.gsub! /\A[*]{2} ?/, ' - '
80
+ line.gsub! /\A[*] ?/ , '- '
81
+
82
+ line.gsub! /\A[#]{3} ?/ , ' 1. '
83
+ line.gsub! /\A[#]{2} ?/ , ' 1. '
84
+ line.gsub! /\A[#] ?/ , '1. '
85
+
86
+ # 見出し
87
+ line.gsub! /\A!{5} ?/ , '###### '
88
+ line.gsub! /\A!{4} ?/ , '##### '
89
+ line.gsub! /\A!{3} ?/ , '#### '
90
+ line.gsub! /\A!{2} ?/ , '### '
91
+ line.gsub! /\A! ?/ , '## '
92
+
66
93
  # 引用
67
94
  line.gsub! /\A""/, '>'
68
95
 
69
96
  # リンク
70
97
  line.gsub! /\[{2}([^\[\]\|]+?)\|([^\[\]\|]+?)\]{2}/, "[\\1](\\2)"
71
98
 
99
+ # 画像 or Wiki内リンク
100
+ line.gsub!(/\[{2}(.+?)\]{2}/) do |match|
101
+ content = $1
102
+ if content =~ /\Ahttps?:\/\// || content =~ /\.(png|jpg|jpeg|gif|bmp|svg)\z/i
103
+ "![](#{content})"
104
+ elsif content =~ /\A([^:]+):(.+)\z/
105
+ interwiki_name = $1
106
+ page_name = $2
107
+ if @interwiki_map[interwiki_name]
108
+ url = @interwiki_map[interwiki_name] + CGI.escape(page_name).gsub('+', '%20')
109
+ "[#{content}](#{url})"
110
+ else
111
+ "[#{content}](#{content}.md)"
112
+ end
113
+ else
114
+ "[#{content}](#{content}.md)"
115
+ end
116
+ end
117
+
118
+ # URL自動リンク
119
+ line.gsub!(/(?<![\(\[])(https?:\/\/[^\s<>]+)/, '<\1>')
120
+
121
+ # WikiName自動リンク
122
+ line.gsub!(/(?<![\(\[\/])([A-Z][a-z0-9]+[A-Z][a-z0-9]+[A-Za-z0-9]*)/, '[\1](\1.md)')
123
+
72
124
  # 強調
73
125
  line.gsub! /'''(.+)'''/, "**\\1**"
74
126
  line.gsub! /''(.+)''/, "*\\1*"
@@ -76,14 +128,6 @@ class Hiki2md
76
128
  # 取り消し
77
129
  line.gsub! /\=\=(.+)\=\=/, "~~\\1~~"
78
130
 
79
- # 箇条書き
80
- line.gsub! /\A[*]{3} ?/, ' - '
81
- line.gsub! /\A[*]{2} ?/, ' - '
82
- line.gsub! /\A[*] ?/ , '- '
83
-
84
- line.gsub! /\A[#]{3} ?/ , ' 1. '
85
- line.gsub! /\A[#]{2} ?/ , ' 1. '
86
- line.gsub! /\A[#] ?/ , '1. '
87
131
 
88
132
  # 定義リスト
89
133
  if line =~ /\A\:(.+)\:(.+)/
@@ -102,16 +146,6 @@ class Hiki2md
102
146
  end
103
147
  end
104
148
 
105
- # 見出し
106
- line.gsub! /\A!{5} ?/ , '##### '
107
- line.gsub! /\A!{4} ?/ , '#### '
108
- line.gsub! /\A!{3} ?/ , '### '
109
- line.gsub! /\A!{2} ?/ , '## '
110
- line.gsub! /\A! ?/ , '# '
111
-
112
- # 画像
113
- line.gsub! /\[{2}([^\[\]\|]+?)\]{2}/, "![](\\1)"
114
-
115
149
  # テーブル
116
150
  if line =~ /\A\|\|/
117
151
  @in_table_block = true
metadata CHANGED
@@ -1,43 +1,42 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hiki2md
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
  - Masanori Kado
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2016-03-21 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: bundler
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
- - - "~>"
16
+ - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '1.10'
18
+ version: '0'
20
19
  type: :development
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
- - - "~>"
23
+ - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: '1.10'
25
+ version: '0'
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: rake
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
- - - "~>"
30
+ - - ">="
32
31
  - !ruby/object:Gem::Version
33
- version: '10.0'
32
+ version: '0'
34
33
  type: :development
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
- - - "~>"
37
+ - - ">="
39
38
  - !ruby/object:Gem::Version
40
- version: '10.0'
39
+ version: '0'
41
40
  - !ruby/object:Gem::Dependency
42
41
  name: rspec
43
42
  requirement: !ruby/object:Gem::Requirement
@@ -52,7 +51,6 @@ dependencies:
52
51
  - - ">="
53
52
  - !ruby/object:Gem::Version
54
53
  version: '0'
55
- description:
56
54
  email:
57
55
  - kdmsnr@gmail.com
58
56
  executables:
@@ -64,6 +62,7 @@ files:
64
62
  - ".rspec"
65
63
  - ".travis.yml"
66
64
  - Gemfile
65
+ - Gemfile.lock
67
66
  - LICENSE.txt
68
67
  - README.md
69
68
  - Rakefile
@@ -75,7 +74,6 @@ homepage: http://github.com/kdmsnr/hiki2md
75
74
  licenses:
76
75
  - MIT
77
76
  metadata: {}
78
- post_install_message:
79
77
  rdoc_options: []
80
78
  require_paths:
81
79
  - lib
@@ -90,10 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
88
  - !ruby/object:Gem::Version
91
89
  version: '0'
92
90
  requirements: []
93
- rubyforge_project:
94
- rubygems_version: 2.4.8
95
- signing_key:
91
+ rubygems_version: 3.6.8
96
92
  specification_version: 4
97
93
  summary: Converter of Hiki to Markdown
98
94
  test_files: []
99
- has_rdoc: