ZMediumToMarkdown 1.9.1 → 1.9.4

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: f15b01478e2f941c658c49359b921f152df549fc32778b8305ccd65f05578fbe
4
- data.tar.gz: 5707c63e3c917c8598a009b9a49952bb10f50281e085ec75f2c664e2fd6d5bb2
3
+ metadata.gz: 4d35b81935c45082bfc47c94cb990ceffb37292c4b2d535a384451341196dc37
4
+ data.tar.gz: 85817b58a2acda2a7ede68e87e29e0adb73d7bc2e8e90b1623f30886c978a346
5
5
  SHA512:
6
- metadata.gz: 1db021ec2a782ea9da912b18b78ec99295813ddc1aa64555f7026eddaf43bc42823cbc287486f2bc8ca03ccbc05022e7aa1085abdb0ae2a9af1b026661412c3f
7
- data.tar.gz: bf7bb9132809a5361a7911667cc889adf239d9322ad1fb9e8df0a325b49875fc358530d80be43450d5dccef2c5032512f37b8b81f208544c40bbc244ab5c841e
6
+ metadata.gz: ab2b7cf2f122a8458dfcee583b992e5f928d42b38fb1948c5d1204258e476106dc4b3c0097819b02ceb98a917bfffa6c4edc6bd304196d10c488bd04e7ee49f8
7
+ data.tar.gz: 4153f9e6403d7877713693f238dc6752e1c53fb20f3279b1de220c8e09ab03c462c0118f4a0ff72902262c2a462eef8bbcb91f5b165806a11cb3f716f0b1aa27
@@ -32,12 +32,12 @@ class IMGParser < Parser
32
32
  if ImageDownloader.download(absolutePath, imageURL)
33
33
  relativePath = "#{pathPolicy.getRelativePath(nil)}/#{imagePathPolicy.getRelativePath(fileName)}"
34
34
  if isForJekyll
35
- result = "\r\n![#{paragraph.orgTextWithEscape}](/#{relativePath}#{alt})\r\n"
35
+ result = "\r\n\r\n![#{paragraph.orgTextWithEscape}](/#{relativePath}#{alt})\r\n\r\n"
36
36
  else
37
- result = "\r\n![#{paragraph.orgTextWithEscape}](#{relativePath}#{alt})\r\n"
37
+ result = "\r\n\r\n![#{paragraph.orgTextWithEscape}](#{relativePath}#{alt})\r\n\r\n"
38
38
  end
39
39
  else
40
- result = "\r\n![#{paragraph.orgTextWithEscape}](#{imageURL}#{alt})\r\n"
40
+ result = "\r\n\r\n![#{paragraph.orgTextWithEscape}](#{imageURL}#{alt})\r\n\r\n"
41
41
  end
42
42
 
43
43
  if paragraph.text != ""
@@ -6,7 +6,7 @@ require "Request"
6
6
  require "Parsers/Parser"
7
7
  require 'Models/Paragraph'
8
8
  require 'nokogiri'
9
-
9
+ require 'Helper'
10
10
  require 'ImageDownloader'
11
11
  require 'PathPolicy'
12
12
 
@@ -19,12 +19,15 @@ class IframeParser < Parser
19
19
 
20
20
  def parse(paragraph)
21
21
  if paragraph.type == 'IFRAME'
22
+
22
23
  if !paragraph.iframe.src.nil? && paragraph.iframe.src != ""
23
24
  url = paragraph.iframe.src
24
25
  else
25
26
  url = "https://medium.com/media/#{paragraph.iframe.id}"
26
27
  end
27
28
 
29
+ result = "[#{paragraph.iframe.title}](#{url})"
30
+
28
31
  if !url[/(www\.youtube\.com)/].nil?
29
32
  # is youtube
30
33
  youtubeURL = URI(URI.decode(url)).query
@@ -38,12 +41,16 @@ class IframeParser < Parser
38
41
  imagePathPolicy = PathPolicy.new(pathPolicy.getAbsolutePath(nil), paragraph.postID)
39
42
  absolutePath = imagePathPolicy.getAbsolutePath(fileName)
40
43
  title = paragraph.iframe.title
44
+ if title.nil? or title == ""
45
+ title = "Youtube"
46
+ end
47
+
41
48
  if ImageDownloader.download(absolutePath, imageURL)
42
49
  relativePath = "#{pathPolicy.getRelativePath(nil)}/#{imagePathPolicy.getRelativePath(fileName)}"
43
50
  if isForJekyll
44
- result = "\r\n[![#{title}](/#{relativePath} \"#{title}\")](#{params["url"]})\r\n"
51
+ result = "\r\n\r\n[![#{title}](/#{relativePath} \"#{title}\")](#{params["url"]})\r\n\r\n"
45
52
  else
46
- result = "\r\n[![#{title}](#{relativePath} \"#{title}\")](#{params["url"]})\r\n"
53
+ result = "\r\n\r\n[![#{title}](#{relativePath} \"#{title}\")](#{params["url"]})\r\n\r\n"
47
54
  end
48
55
  else
49
56
  result = "\r\n[#{title}](#{params["url"]})\r\n"
@@ -71,18 +78,29 @@ class IframeParser < Parser
71
78
  end
72
79
  end
73
80
  else
74
- ogImageURL = Helper.fetchOGImage(url)
81
+ ogURL = url
82
+ if !url[/(cdn\.embedly\.com)/].nil?
83
+ params = URI::decode_www_form(URI(URI.decode(url)).query).to_h
84
+ if !params["url"].nil?
85
+ ogURL = params["url"]
86
+ end
87
+ end
88
+ ogImageURL = Helper.fetchOGImage(ogURL)
89
+
90
+ title = paragraph.iframe.title
91
+ if title.nil? or title == ""
92
+ title = Helper.escapeMarkdown(ogURL)
93
+ end
94
+
75
95
  if !ogImageURL.nil?
76
- result = "\r\n[![#{paragraph.iframe.title}](#{ogImageURL} \"#{paragraph.iframe.title}\")](#{url})\r\n"
96
+ result = "\r\n\r\n[![#{title}](#{ogImageURL} \"#{title}\")](#{ogURL})\r\n\r\n"
97
+ else
98
+ result = "[#{title}](#{ogURL})"
77
99
  end
78
100
  end
79
101
  end
80
102
 
81
- if result.nil?
82
- "[#{paragraph.iframe.title}](#{url})"
83
- else
84
- result
85
- end
103
+ result
86
104
  else
87
105
  if !nextParser.nil?
88
106
  nextParser.parse(paragraph)
@@ -5,9 +5,9 @@ require 'Models/Paragraph'
5
5
  class LinkParser
6
6
  attr_accessor :usersPostURLs, :isForJekyll
7
7
 
8
- def initialize(usersPostURLs, isForJekyll)
9
- @usersPostURLs = usersPostURLs
10
- @isForJekyll = isForJekyll
8
+ def initialize()
9
+ @usersPostURLs = nil
10
+ @isForJekyll = false
11
11
  end
12
12
 
13
13
  def parse(markdownString, markupLinks)
@@ -17,6 +17,14 @@ class LinkParser
17
17
 
18
18
  matchLinks.each do |matchLink|
19
19
  link = matchLink[0]
20
+ linkMarkdown = "(#{link})"
21
+ newLinkMarkdown = linkMarkdown
22
+
23
+ if isForJekyll
24
+ newLinkMarkdown = "(#{link}){:target=\"_blank\"}"
25
+ puts newLinkMarkdown
26
+ end
27
+
20
28
 
21
29
  if !usersPostURLs.nil?
22
30
  # if have provide user's post urls
@@ -30,12 +38,16 @@ class LinkParser
30
38
 
31
39
  if !usersPostURLs.find { |usersPostURL| usersPostURL.split("/").last.split("-").last == postPath.split("-").last }.nil?
32
40
  if isForJekyll
33
- markdownString = markdownString.sub! link, "../#{postPath}"
41
+ newLinkMarkdown = "(../#{postPath})"
34
42
  else
35
- markdownString = markdownString.sub! link, "#{postPath}"
43
+ newLinkMarkdown = "(#{postPath})"
36
44
  end
37
45
  end
38
46
  end
47
+
48
+ if linkMarkdown != newLinkMarkdown
49
+ markdownString = markdownString.sub! linkMarkdown, newLinkMarkdown
50
+ end
39
51
  end
40
52
  end
41
53
  end
@@ -11,7 +11,7 @@ class MIXTAPEEMBEDParser < Parser
11
11
  if !paragraph.mixtapeMetadata.nil? && !paragraph.mixtapeMetadata.href.nil?
12
12
  ogImageURL = Helper.fetchOGImage(paragraph.mixtapeMetadata.href)
13
13
  if !ogImageURL.nil?
14
- "\r\n[![#{paragraph.orgTextWithEscape}](#{ogImageURL} \"#{paragraph.orgTextWithEscape}\")](#{paragraph.mixtapeMetadata.href})\r\n"
14
+ "\r\n\r\n[![#{paragraph.orgTextWithEscape}](#{ogImageURL} \"#{paragraph.orgTextWithEscape}\")](#{paragraph.mixtapeMetadata.href})\r\n\r\n"
15
15
  else
16
16
  "\n[#{paragraph.orgTextWithEscape}](#{paragraph.mixtapeMetadata.href})"
17
17
  end
@@ -19,12 +19,12 @@ class MarkupParser
19
19
  if !paragraph.markups.nil? && paragraph.markups.length > 0
20
20
  markupRender = MarkupStyleRender.new(paragraph, isForJekyll)
21
21
 
22
- #begin
22
+ begin
23
23
  result = markupRender.parse()
24
- #rescue => e
25
- # puts e.backtrace
26
- # Helper.makeWarningText("Error occurred during render markup text, please help to open an issue on github.")
27
- #end
24
+ rescue => e
25
+ puts e.backtrace
26
+ Helper.makeWarningText("Error occurred during render markup text, please help to open an issue on github.")
27
+ end
28
28
  end
29
29
 
30
30
  result
@@ -4,7 +4,7 @@ require "Parsers/Parser"
4
4
  require 'Models/Paragraph'
5
5
 
6
6
  class OLIParser < Parser
7
- attr_accessor :nextParser, :oliIndex
7
+ attr_accessor :nextParser
8
8
 
9
9
  def self.isOLI(paragraph)
10
10
  if paragraph.nil?
@@ -16,7 +16,7 @@ class OLIParser < Parser
16
16
 
17
17
  def parse(paragraph)
18
18
  if OLIParser.isOLI(paragraph)
19
- "#{oliIndex}. #{paragraph.text}"
19
+ "#{paragraph.oliIndex}. #{paragraph.text}"
20
20
  else
21
21
  if !nextParser.nil?
22
22
  nextParser.parse(paragraph)
@@ -71,7 +71,7 @@ class ZMediumFetcher
71
71
 
72
72
  def initialize
73
73
  @progress = Progress.new()
74
- @linkParser = LinkParser.new(nil, false)
74
+ @linkParser = LinkParser.new()
75
75
  @isForJekyll = false
76
76
  end
77
77
 
@@ -223,6 +223,8 @@ class ZMediumFetcher
223
223
  progress.message = "Converting Post..."
224
224
  progress.printLog()
225
225
 
226
+ linkParser.isForJekyll = isForJekyll
227
+
226
228
  postWithDatePath = "#{postInfo.firstPublishedAt.strftime("%Y-%m-%d")}-#{postPath}"
227
229
 
228
230
  absolutePath = postPathPolicy.getAbsolutePath("#{postWithDatePath}.md")
@@ -248,10 +250,7 @@ class ZMediumFetcher
248
250
  end
249
251
 
250
252
  result = startParser.parse(paragraph)
251
-
252
- if !linkParser.nil?
253
- result = linkParser.parse(result, paragraph.markupLinks)
254
- end
253
+ result = linkParser.parse(result, paragraph.markupLinks)
255
254
 
256
255
  file.puts(result)
257
256
 
@@ -295,7 +294,7 @@ class ZMediumFetcher
295
294
  nextID = postPageInfo["nextID"]
296
295
  end while !nextID.nil?
297
296
 
298
- @linkParser = LinkParser.new(postURLS, isForJekyll)
297
+ linkParser.usersPostURLs = postURLS
299
298
 
300
299
  progress.totalPostsLength = postURLS.length
301
300
  progress.currentPostIndex = 0
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ZMediumToMarkdown
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.1
4
+ version: 1.9.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - ZhgChgLi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-20 00:00:00.000000000 Z
11
+ date: 2022-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri