ZMediumToMarkdown 1.7.5 → 1.7.8

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: c346ebddf4a54f030cce4ea3248ccf3fe9d2f564f02a2d43771224677385f94a
4
- data.tar.gz: 5a69488e4d00b56480237693bff409ee8890039ef7e9470df5226882af64a7c1
3
+ metadata.gz: 38b611d86bc16468f228c710b5b7f2732b49da2178991b676c957e0aa1b8a245
4
+ data.tar.gz: fcda6c6684aad98c3b00e4d2009f4c7dc9e18a05f5a9b699a9cbee1052a2caa9
5
5
  SHA512:
6
- metadata.gz: e078b4d7d914cee844222f45dcbbd0fb756d52786e01c15cbcc5495356b35b48dca9c7d303b4fa9c2e1c11e8086f1751b4cc6df8c759573432fd546491c4a60b
7
- data.tar.gz: 586e5b2e6b6a9947ff73237edfde4c4786853eac3ec513ef089e12b018c3cc27feca53ca584f9f9ed63d74bb1990dbd3219ff02ca92744a8f142a0827d3b634d
6
+ metadata.gz: 36400640d1cf148e68b1852076ef0099a8f2100aaab8ad15d20848c081ad7f10db113f7ca18589eda27392d8a006e72c7f6ffe725b0f755b566883801da4fff2
7
+ data.tar.gz: 4c5341aaf24828956de14b9e4c60d88a98fabd99147069393f1d3695a3423de4cd6a5a75372cc375b8431d9cd418248db19a8c987408dafa1371c7a33d974630
data/lib/Helper.rb CHANGED
@@ -11,6 +11,20 @@ require 'zip'
11
11
 
12
12
  class Helper
13
13
 
14
+ def self.escapeMarkdown(text)
15
+ text.gsub(/(\*|_|`|\||\\|\{|\}\[|\]|\(|\)|#|\+|\-|\.|\!)/){ |x| "\\#{x}" }
16
+ end
17
+
18
+ def self.escapeHTML(text)
19
+ if text == "<"
20
+ "&lt;"
21
+ elsif text == ">"
22
+ "&gt;"
23
+ else
24
+ text
25
+ end
26
+ end
27
+
14
28
  def self.createDirIfNotExist(dirPath)
15
29
  dirs = dirPath.split("/")
16
30
  currentDir = ""
@@ -1,10 +1,11 @@
1
1
  $lib = File.expand_path('../', File.dirname(__FILE__))
2
2
 
3
+ require 'Helper'
3
4
  require 'Parsers/PParser'
4
5
  require 'securerandom'
5
6
 
6
7
  class Paragraph
7
- attr_accessor :postID, :name, :orgText, :text, :type, :href, :metadata, :mixtapeMetadata, :iframe, :oliIndex, :markups, :markupLinks
8
+ attr_accessor :postID, :name, :orgText, :orgTextWithEscape, :text, :type, :href, :metadata, :mixtapeMetadata, :iframe, :oliIndex, :markups, :markupLinks
8
9
 
9
10
  class Iframe
10
11
  attr_accessor :id, :title, :type, :src
@@ -65,6 +66,9 @@ class Paragraph
65
66
  @href = json['href']
66
67
  @postID = postID
67
68
 
69
+ orgTextWithEscape = Helper.escapeMarkdown(json['text'])
70
+ @orgTextWithEscape = orgTextWithEscape
71
+
68
72
  if json['metadata'].nil?
69
73
  @metadata = nil
70
74
  else
@@ -24,16 +24,20 @@ class IMGParser < Parser
24
24
  absolutePath = imagePathPolicy.getAbsolutePath(fileName)
25
25
 
26
26
  result = ""
27
+ alt = ""
28
+ if paragraph.orgTextWithEscape != ""
29
+ alt = " \"#{paragraph.orgTextWithEscape}\""
30
+ end
27
31
 
28
32
  if ImageDownloader.download(absolutePath, imageURL)
29
33
  relativePath = "#{pathPolicy.getRelativePath(nil)}/#{imagePathPolicy.getRelativePath(fileName)}"
30
34
  if isForJekyll
31
- result = "\r\n![#{paragraph.orgText}](/#{relativePath} \"#{paragraph.orgText}\")\r\n"
35
+ result = "\r\n![#{paragraph.orgTextWithEscape}](/#{relativePath}#{alt})\r\n"
32
36
  else
33
- result = "\r\n![#{paragraph.orgText}](#{relativePath} \"#{paragraph.orgText}\")\r\n"
37
+ result = "\r\n![#{paragraph.orgTextWithEscape}](#{relativePath}#{alt})\r\n"
34
38
  end
35
39
  else
36
- result = "\r\n![#{paragraph.orgText}](#{imageURL} \"#{paragraph.orgText}\")\r\n"
40
+ result = "\r\n![#{paragraph.orgTextWithEscape}](#{imageURL}#{alt})\r\n"
37
41
  end
38
42
 
39
43
  if paragraph.text != ""
@@ -8,9 +8,9 @@ class MIXTAPEEMBEDParser < Parser
8
8
  def parse(paragraph)
9
9
  if paragraph.type == 'MIXTAPE_EMBED'
10
10
  if !paragraph.mixtapeMetadata.nil? && !paragraph.mixtapeMetadata.href.nil?
11
- "\n[#{paragraph.orgText}](#{paragraph.mixtapeMetadata.href})"
11
+ "\n[#{paragraph.orgTextWithEscape}](#{paragraph.mixtapeMetadata.href})"
12
12
  else
13
- "\n#{paragraph.orgText}"
13
+ "\n#{paragraph.text}"
14
14
  end
15
15
  else
16
16
  if !nextParser.nil?
@@ -7,16 +7,17 @@ require 'securerandom'
7
7
  require 'User'
8
8
 
9
9
  class MarkupParser
10
- attr_accessor :body, :paragraph
11
-
12
- def initialize(paragraph)
10
+ attr_accessor :body, :paragraph, :isForJekyll
11
+
12
+ def initialize(paragraph, isForJekyll)
13
13
  @paragraph = paragraph
14
+ @isForJekyll = isForJekyll
14
15
  end
15
16
 
16
17
  def parse()
17
18
  result = paragraph.text
18
19
  if !paragraph.markups.nil? && paragraph.markups.length > 0
19
- markupRender = MarkupStyleRender.new(paragraph)
20
+ markupRender = MarkupStyleRender.new(paragraph, isForJekyll)
20
21
 
21
22
  begin
22
23
  result = markupRender.parse()
@@ -2,9 +2,10 @@
2
2
  $lib = File.expand_path('../', File.dirname(__FILE__))
3
3
 
4
4
  require 'Models/Paragraph'
5
+ require 'Helper'
5
6
 
6
7
  class MarkupStyleRender
7
- attr_accessor :paragraph, :chars, :encodeType
8
+ attr_accessor :paragraph, :chars, :encodeType, :isForJekyll
8
9
 
9
10
  class TextChar
10
11
  attr_accessor :chars, :type
@@ -26,8 +27,9 @@ class MarkupStyleRender
26
27
  end
27
28
 
28
29
 
29
- def initialize(paragraph)
30
+ def initialize(paragraph, isForJekyll)
30
31
  @paragraph = paragraph
32
+ @isForJekyll = isForJekyll
31
33
 
32
34
  chars = {}
33
35
  index = 0
@@ -189,7 +191,12 @@ class MarkupStyleRender
189
191
  end
190
192
 
191
193
  if char.chars.join() != "\n"
192
- response.append(TextChar.new(char.chars, 'Text'))
194
+ resultChar = Helper.escapeMarkdown(char.chars.join())
195
+ if isForJekyll
196
+ resultChar = Helper.escapeHTML(resultChar)
197
+ end
198
+
199
+ response.append(TextChar.new(resultChar.chars, "Text"))
193
200
  end
194
201
 
195
202
  endTags = tags.select { |tag| tag.endIndex == index }
@@ -220,6 +227,20 @@ class MarkupStyleRender
220
227
  response.push(tag.endChars)
221
228
  end
222
229
 
230
+ response = optimize(response)
231
+ result = response.map{ |response| response.chars }.join()
232
+
233
+ else
234
+ response = []
235
+ chars.each do |index, char|
236
+ resultChar = escapeMarkdown(char)
237
+ if isForJekyll
238
+ resultChar = escapeHTML(char)
239
+ end
240
+
241
+ response.append(resultChar)
242
+ end
243
+
223
244
  response = optimize(response)
224
245
  result = response.map{ |response| response.chars }.join()
225
246
  end
@@ -186,7 +186,7 @@ class ZMediumFetcher
186
186
  groupByText += "\n"
187
187
  end
188
188
 
189
- markupParser = MarkupParser.new(preTypeParagraph)
189
+ markupParser = MarkupParser.new(preTypeParagraph, isForJekyll)
190
190
  groupByText += markupParser.parse()
191
191
  end
192
192
 
@@ -244,7 +244,7 @@ class ZMediumFetcher
244
244
  paragraphs.each do |paragraph|
245
245
 
246
246
  if !(CodeBlockParser.isCodeBlock(paragraph) || PREParser.isPRE(paragraph))
247
- markupParser = MarkupParser.new(paragraph)
247
+ markupParser = MarkupParser.new(paragraph, isForJekyll)
248
248
  paragraph.text = markupParser.parse()
249
249
  end
250
250
 
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.7.5
4
+ version: 1.7.8
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-12 00:00:00.000000000 Z
11
+ date: 2022-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri