ZMediumToMarkdown 1.8.0 → 1.9.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
  SHA256:
3
- metadata.gz: dd013ec3e5d14a70bde7a740c1bf706aab2b2f9d1cb8d51f6dba4d91de6e1a64
4
- data.tar.gz: dcb1fd33caff28304fffd152ee4e5027dfa36a149a54230a37cdb93520c0461d
3
+ metadata.gz: bc5867264a6441b236d54340f34e507ef4308f99b6908f21fd975a9061c81483
4
+ data.tar.gz: 00d61d0b23a23afe0e445f5a6d98533dd41a02cc41e6ea55168a12620860203f
5
5
  SHA512:
6
- metadata.gz: be39a4ea0bef517393348fe00cb61f9b6360197567a2edb30810909e743b833bd948b16fd42cc9bd05b4320500ab7ac54ec1da8ecdedcdc6f3c377eecc17d36e
7
- data.tar.gz: 279eb3fdbe72c3569e13b4da3411376d952ccdb835abb1d219f2b77f97ee4a620c952273c0f3831a7dd1b3954af6fb7155226f10c8b85c26e2cd655bc4d30005
6
+ metadata.gz: 23e6f4244d5c291872bcfcedfe961b30e377638e812dade41a9ade68c9e83d66dfe7e1061e2131d106b2605f61014cacc632e4a6984c09b1089e458d0d88cfda
7
+ data.tar.gz: b5577f2dd3cec3ce63f15e531b0b9a0574ff74fef8981d21d32badac236a562d1a4ad3cf14757aee8073da9877119b7f3fe64b5ef4a37abf94cbcbcdc1f409f1
data/lib/Helper.rb CHANGED
@@ -8,11 +8,19 @@ require "Request"
8
8
  require 'json'
9
9
  require 'open-uri'
10
10
  require 'zip'
11
+ require 'nokogiri'
11
12
 
12
13
  class Helper
13
14
 
14
15
  def self.escapeMarkdown(text)
15
- text.gsub(/(\*|_|`|\||\\|\{|\}\[|\]|\(|\)|#|\+|\-|\.|\!)/){ |x| "\\#{x}" }
16
+ text.gsub(/(\*|_|`|\||\\|\{|\}|\[|\]|\(|\)|#|\+|\-|\.|\!)/){ |x| "\\#{x}" }
17
+ end
18
+
19
+ def self.fetchOGImage(url)
20
+ html = Request.html(Request.URL(url))
21
+ content = html.search("meta[property='og:image']").attribute('content')
22
+
23
+ content
16
24
  end
17
25
 
18
26
  def self.escapeHTML(text)
@@ -70,6 +70,11 @@ class IframeParser < Parser
70
70
  result = "```#{lang}\n#{gistRAW}\n```"
71
71
  end
72
72
  end
73
+ else
74
+ ogImageURL = Helper.fetchOGImage(url)
75
+ if !ogImageURL.nil?
76
+ result = "\r\n[![#{paragraph.iframe.title}](#{ogImageURL} \"#{paragraph.iframe.title}\")](#{url})\r\n"
77
+ end
73
78
  end
74
79
  end
75
80
 
@@ -1,5 +1,6 @@
1
1
  $lib = File.expand_path('../', File.dirname(__FILE__))
2
2
 
3
+ require "Helper"
3
4
  require "Parsers/Parser"
4
5
  require 'Models/Paragraph'
5
6
 
@@ -8,7 +9,12 @@ class MIXTAPEEMBEDParser < Parser
8
9
  def parse(paragraph)
9
10
  if paragraph.type == 'MIXTAPE_EMBED'
10
11
  if !paragraph.mixtapeMetadata.nil? && !paragraph.mixtapeMetadata.href.nil?
11
- "\n[#{paragraph.orgTextWithEscape}](#{paragraph.mixtapeMetadata.href})"
12
+ ogImageURL = Helper.fetchOGImage(paragraph.mixtapeMetadata.href)
13
+ if !ogImageURL.nil?
14
+ "\r\n[![#{paragraph.orgTextWithEscape}](#{ogImageURL} \"#{paragraph.orgTextWithEscape}\")](#{paragraph.mixtapeMetadata.href})\r\n"
15
+ else
16
+ "\n[#{paragraph.orgTextWithEscape}](#{paragraph.mixtapeMetadata.href})"
17
+ end
12
18
  else
13
19
  "\n#{paragraph.text}"
14
20
  end
@@ -16,13 +16,14 @@ class MarkupStyleRender
16
16
  end
17
17
 
18
18
  class TagChar < TextChar
19
- attr_accessor :sort, :startIndex, :endIndex, :startChars, :endChars
20
- def initialize(sort, startIndex, endIndex, startChars, endChars)
19
+ attr_accessor :sort, :startIndex, :endIndex, :startChars, :endChars, :isCodeBlock
20
+ def initialize(sort, startIndex, endIndex, startChars, endChars, isCodeBlock = false)
21
21
  @sort = sort
22
22
  @startIndex = startIndex
23
23
  @endIndex = endIndex - 1
24
24
  @startChars = TextChar.new(startChars.chars, 'TagStart')
25
25
  @endChars = TextChar.new(endChars.chars, 'TagEnd')
26
+ @isCodeBlock = isCodeBlock
26
27
  end
27
28
  end
28
29
 
@@ -140,7 +141,7 @@ class MarkupStyleRender
140
141
  if markup.type == "EM"
141
142
  tag = TagChar.new(2, markup.start, markup.end, "_", "_")
142
143
  elsif markup.type == "CODE"
143
- tag = TagChar.new(3, markup.start, markup.end, "`", "`")
144
+ tag = TagChar.new(3, markup.start, markup.end, "`", "`", true)
144
145
  elsif markup.type == "STRONG"
145
146
  tag = TagChar.new(2, markup.start, markup.end, "**", "**")
146
147
  elsif markup.type == "A"
@@ -166,6 +167,9 @@ class MarkupStyleRender
166
167
  response = []
167
168
  stack = []
168
169
 
170
+ # markdown unsupoort style in code block
171
+ inCodeBlock = false
172
+
169
173
  chars.each do |index, char|
170
174
 
171
175
  if char.chars.join() == "\n"
@@ -185,13 +189,18 @@ class MarkupStyleRender
185
189
  startTags = tags.select { |tag| tag.startIndex == index }.sort_by(&:sort)
186
190
  if !startTags.nil?
187
191
  startTags.each do |tag|
188
- response.append(tag.startChars)
189
- stack.append(tag)
192
+ if inCodeBlock == false
193
+ response.append(tag.startChars)
194
+ stack.append(tag)
195
+ end
196
+ if tag.isCodeBlock
197
+ inCodeBlock = true
198
+ end
190
199
  end
191
200
  end
192
201
 
193
202
  if char.chars.join() != "\n"
194
- if !stack.select { |tag| tag.startChars.chars.join() == "`" }.nil?
203
+ if inCodeBlock
195
204
  # is in code block
196
205
  response.append(char)
197
206
  else
@@ -214,9 +223,17 @@ class MarkupStyleRender
214
223
  # as expected
215
224
  endTags.delete_at(stackTagInEndTagsIndex)
216
225
  else
217
- mismatchTags.append(stackTag)
226
+ if inCodeBlock == false or stackTag.isCodeBlock == true
227
+ mismatchTags.append(stackTag)
228
+ end
229
+ end
230
+ if inCodeBlock == false or stackTag.isCodeBlock == true
231
+ response.append(stackTag.endChars)
232
+ end
233
+
234
+ if stackTag.isCodeBlock
235
+ inCodeBlock = false
218
236
  end
219
- response.append(stackTag.endChars)
220
237
  end
221
238
 
222
239
  while mismatchTags.length > 0
@@ -186,8 +186,7 @@ class ZMediumFetcher
186
186
  groupByText += "\n"
187
187
  end
188
188
 
189
- markupParser = MarkupParser.new(preTypeParagraph, isForJekyll)
190
- groupByText += markupParser.parse()
189
+ groupByText += preTypeParagraph.orgText
191
190
  end
192
191
 
193
192
  lastPreTypeParagraph.text = "#{groupByText}"
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.8.0
4
+ version: 1.9.0
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-16 00:00:00.000000000 Z
11
+ date: 2022-06-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri