jekyll-artisync 0.5 → 0.6

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: '0606097a6fb1063a731eb03353da74882e9d5aca8edf40143f7c6182e189c91a'
4
- data.tar.gz: 7bac92d7cae8be329f1f31c782efa8faced9f280450164f110f81f7f96865e36
3
+ metadata.gz: 94ea0a27d255bfe5841323b8a83b66d6c18831d7bfaa62623fa719f3d3015215
4
+ data.tar.gz: '0308d5172ccd557f56fcb2ceeea5b31283a39263479f67748afc7f38f9691209'
5
5
  SHA512:
6
- metadata.gz: 897c6f5173ed4af5541c0784609a136e7f09d3a22e174ea38f4fbc908471a7228a311c670d61557611bbce5d62cb62831f667506f25188f4938562d989d8b207
7
- data.tar.gz: 6b51c4520cb6a6005994184a478073dac60387e3e363f11432363bd9f38a59312f47763488d2fbdc54b4bb03db4933394ab0852fc5d73f72d75dd5e9d911d977
6
+ metadata.gz: 2d89a70068a9df3e1236e8f7d93556bf002b05c71121650bc14067a8ecad0b78f3436e711c87325ca39b518c2758634b87f11544ef247712c49c92cb2b65d283
7
+ data.tar.gz: 28e30cbcf1212dd0c9070eecf8a733c7a92e573b572e803ac9af80f7813e97474c6824c8bff7c18b5e71a28917c270d64688659de3e7616bdbb983e19c37dc6a
@@ -10,9 +10,8 @@ class ArticleSyncEmbed < Liquid::Tag
10
10
  end
11
11
 
12
12
  def render(context)
13
- url = @content.strip
13
+ url = Liquid::Template.parse(@content).render(context).strip
14
14
  uri = URI(url)
15
- page_host = uri.hostname
16
15
  syncer = SyncerFactory.get_syncer(uri)
17
16
  return syncer.gen_html
18
17
  end
@@ -0,0 +1,18 @@
1
+ require_relative 'abstract_syncer'
2
+ require 'nokogiri'
3
+
4
+
5
+ class PerNodeSyncer < AbstractSyncer
6
+
7
+ def gen_html
8
+ page_html = self._fetch_html
9
+ article = Nokogiri::HTML(page_html).xpath(self.get_article_xpath)
10
+ content = []
11
+ article.children.each do |node|
12
+ content.append self._handle_node(node)
13
+ end
14
+
15
+ content.join("\n")
16
+ end
17
+
18
+ end
@@ -1,7 +1,9 @@
1
1
  require_relative 'zhihu_syncer'
2
+ require_relative 'weixin_syncer'
2
3
 
3
4
 
4
5
  ZHIHU_ZHUANLAN = 'zhuanlan.zhihu.com'
6
+ WEIXIN = 'mp.weixin.qq.com'
5
7
 
6
8
  class SyncerFactory
7
9
  def self.get_syncer(uri)
@@ -10,6 +12,8 @@ class SyncerFactory
10
12
  case host_name
11
13
  when ZHIHU_ZHUANLAN
12
14
  return ZhihuSyncer.new(uri)
15
+ when WEIXIN
16
+ return WeixinSyncer.new(uri)
13
17
  else
14
18
  raise "Not supported website for host: #{host_name}"
15
19
  end
@@ -0,0 +1,21 @@
1
+ require_relative 'per_node_syncer'
2
+ require 'nokogiri'
3
+
4
+
5
+ class WeixinSyncer < PerNodeSyncer
6
+ def get_article_xpath
7
+ '//div[contains(@class, "rich_media_content") and contains(@id, "js_content")]'
8
+ end
9
+
10
+ def _handle_node(node)
11
+ node.children.each do |child_node|
12
+ case child_node.name
13
+ when 'img'
14
+ child_node['src'] = child_node['data-src']
15
+ child_node['data-src'] = nil
16
+ end
17
+ end
18
+ node.to_html
19
+ end
20
+
21
+ end
@@ -1,8 +1,8 @@
1
- require_relative 'abstract_syncer'
1
+ require_relative 'per_node_syncer'
2
2
  require 'nokogiri'
3
3
 
4
4
 
5
- class ZhihuSyncer < AbstractSyncer
5
+ class ZhihuSyncer < PerNodeSyncer
6
6
  def get_article_xpath
7
7
  '//div[contains(@class, "Post-RichText") and contains(@class, "ztext")]'
8
8
  end
@@ -21,15 +21,4 @@ class ZhihuSyncer < AbstractSyncer
21
21
  node.to_html
22
22
  end
23
23
 
24
- def gen_html
25
- page_html = self._fetch_html
26
- article = Nokogiri::HTML(page_html).xpath(self.get_article_xpath)
27
- content = []
28
- article.children.each do |node|
29
- content.append self._handle_node(node)
30
- end
31
-
32
- content.join("\n")
33
- end
34
-
35
24
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-artisync
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.5'
4
+ version: '0.6'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Junhan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-27 00:00:00.000000000 Z
11
+ date: 2020-05-30 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Take an article from a given site and display on current Jekyll page.
14
14
  email:
@@ -19,7 +19,9 @@ extra_rdoc_files: []
19
19
  files:
20
20
  - lib/jekyll-artisync.rb
21
21
  - lib/syncers/abstract_syncer.rb
22
+ - lib/syncers/per_node_syncer.rb
22
23
  - lib/syncers/syncer_factory.rb
24
+ - lib/syncers/weixin_syncer.rb
23
25
  - lib/syncers/zhihu_syncer.rb
24
26
  homepage: https://github.com/junhan-z/jekyll-artisync
25
27
  licenses: