ZMediumToMarkdown 1.8.0 → 1.9.0

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: 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