jekyll-pdf-embed 1.0.1 → 1.1.1
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 +4 -4
- data/lib/jekyll-pdf-embed.rb +90 -8
- metadata +8 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a200282b5c85cab73729e58efb740bed697c25868ba9181e4fd3db57b5ac799b
|
4
|
+
data.tar.gz: ec680e5ceb0c41a4eb39048447c2a95cce698baedb35882b2525b9d774b9ea5f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b50713dbf73074347588e2115f4c5c3d4a0850702d8088a808386fd95bdd3979b18f678ba4a4334d38a91ff9e58aefbae2f608526d3309c37f88683eba1c149
|
7
|
+
data.tar.gz: 44a29554ff3d855c665dff439718740e83406740b2536c1e43b53a49e3aa4fe6d91ea2204bb9c44ba157a91d103c7e1a96e950e84047eebf1fb5a617a918389b
|
data/lib/jekyll-pdf-embed.rb
CHANGED
@@ -1,16 +1,98 @@
|
|
1
1
|
require "jekyll"
|
2
|
+
require "securerandom"
|
2
3
|
|
3
|
-
class
|
4
|
-
|
5
|
-
|
4
|
+
class PDFEmbedTest < Liquid::Tag
|
5
|
+
|
6
|
+
NO_LINK_ARG = "no_link".freeze
|
7
|
+
|
8
|
+
def initialize(tagName, content, tokens)
|
6
9
|
super
|
7
|
-
@
|
10
|
+
@content = content
|
11
|
+
|
12
|
+
# define allowed extensions
|
13
|
+
@allowed_files = [".pdf", ".ppt", ".pptx"]
|
14
|
+
|
15
|
+
# current container uuid
|
16
|
+
@uuid = SecureRandom.uuid
|
8
17
|
end
|
9
|
-
|
18
|
+
|
10
19
|
def render(context)
|
11
|
-
|
20
|
+
@parsed_content = Liquid::Template.parse(@content).render(context)
|
21
|
+
@args = @parsed_content.split(/ /)
|
22
|
+
|
23
|
+
@link_raw = @args.first
|
24
|
+
@link = @link_raw.tr('\"', '')
|
25
|
+
|
26
|
+
@no_link = @args.include? NO_LINK_ARG
|
27
|
+
@extension = File.extname(@link)
|
28
|
+
@is_allowed = @allowed_files.include? @extension
|
29
|
+
|
30
|
+
@other_args_raw = @parsed_content.clone
|
31
|
+
@other_args_raw.slice! @link_raw
|
32
|
+
@other_args_raw.slice! NO_LINK_ARG
|
33
|
+
@other_args_raw.strip!
|
34
|
+
|
35
|
+
@other_args_array = @other_args_raw.split(/ /)
|
36
|
+
|
37
|
+
@other_args = hash_from_args(@other_args_array)
|
38
|
+
@w = @other_args["width"]
|
39
|
+
@h = @other_args["height"]
|
40
|
+
|
41
|
+
# default width and height values
|
42
|
+
if @w == nil
|
43
|
+
@w = "100%"
|
44
|
+
end
|
45
|
+
|
46
|
+
if @h == nil
|
47
|
+
@h = "500px"
|
48
|
+
end
|
49
|
+
|
50
|
+
if !@is_allowed
|
51
|
+
raise ArgumentError, 'ERROR:file_not_allowed -> ' + @link
|
52
|
+
end
|
53
|
+
|
54
|
+
if @extension == ".pdf"
|
55
|
+
if @no_link
|
56
|
+
%Q{<style>.pdf-embed-wrap-#{@uuid} { display:flex; flex-direction: column; width: #{@w}; height: #{@h}; } .pdf-embed-container-#{@uuid} { height: 100%; } .pdf-embed-container-#{@uuid} iframe { width: 100%; height: 100%; }</style><div class="pdf-embed-wrap-#{@uuid}"><div class='pdf-embed-container-#{@uuid}'><iframe title="PDF file" src="#{@link}" frameborder="0" allowfullscreen></iframe></div></div>}
|
57
|
+
else
|
58
|
+
%Q{<style>.pdf-embed-wrap-#{@uuid} { display:flex; flex-direction: column; width: #{@w}; height: #{@h}; } .pdf-embed-container-#{@uuid} { height: 100%; } .pdf-link-#{@uuid} { background-color: white; text-align: center; border-style: solid; } .pdf-embed-container-#{@uuid} iframe { width: 100%; height: 100%; }</style><div class="pdf-embed-wrap-#{@uuid}"><div class='pdf-link-#{@uuid}'><a href="#{@link}" target="_blank">View PDF</a></div><div class='pdf-embed-container-#{@uuid}'><iframe title="PDF file" src="#{@link}" frameborder="0" allowfullscreen></iframe></div></div>}
|
59
|
+
end
|
60
|
+
elsif @extension == ".ppt" or @extension == ".pptx"
|
61
|
+
|
62
|
+
# checks if the presentation is not on remote address
|
63
|
+
if !@link.include? "http://" and !@link.include? "https://"
|
64
|
+
# get base url and appent file location to it
|
65
|
+
@baseurl = "#{context.registers[:site].config['url']}"
|
66
|
+
@link = "https://view.officeapps.live.com/op/embed.aspx?src=#{@baseurl}#{@link}"
|
67
|
+
# locally, this will not work
|
68
|
+
# but once the Jekyll site is hosted remotely, the baseurl will not be 'localhost'
|
69
|
+
else
|
70
|
+
@link = "https://view.officeapps.live.com/op/embed.aspx?src=#{@link}"
|
71
|
+
end
|
72
|
+
|
73
|
+
if @no_link
|
74
|
+
%Q{<style>.pdf-embed-wrap-#{@uuid} { display:flex; flex-direction: column; width: #{@w}; height: #{@h}; } .pdf-embed-container-#{@uuid} { height: 100%; } .pdf-embed-container-#{@uuid} iframe { width: 100%; height: 100%; }</style><div class="pdf-embed-wrap-#{@uuid}"><div class='pdf-embed-container-#{@uuid}'><iframe title="Presentation file" src="#{@link}" frameborder="0" allowfullscreen></iframe></div></div>}
|
75
|
+
else
|
76
|
+
%Q{<style>.pdf-embed-wrap-#{@uuid} { display:flex; flex-direction: column; width: #{@w}; height: #{@h}; } .pdf-embed-container-#{@uuid} { height: 100%; } .pdf-link-#{@uuid} { background-color: white; text-align: center; border-style: solid; } .pdf-embed-container-#{@uuid} iframe { width: 100%; height: 100%; }</style><div class="pdf-embed-wrap-#{@uuid}"><div class='pdf-link-#{@uuid}'><a href="#{@link}" target="_blank">View presentation</a></div><div class='pdf-embed-container-#{@uuid}'><iframe title="Presentation file" src="#{@link}" frameborder="0" allowfullscreen></iframe></div></div>}
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
# Transform 'a=b c=d' into hash
|
83
|
+
def hash_from_args(args_array)
|
84
|
+
keys_values = args_array.map {|item| item.split /\s*=\s*/ }
|
85
|
+
return Hash[keys_values]
|
12
86
|
end
|
13
87
|
|
88
|
+
def remove_quotations(str)
|
89
|
+
if str.start_with?('"')
|
90
|
+
str = str.slice(1..-1)
|
91
|
+
end
|
92
|
+
if str.end_with?('"')
|
93
|
+
str = str.slice(0..-2)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
14
97
|
Liquid::Template.register_tag('pdf', self)
|
15
|
-
end
|
16
|
-
|
98
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-pdf-embed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mihajlo Nesic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-04-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -24,7 +24,9 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
-
description:
|
27
|
+
description: "\n\tJekyll PDF Embed is a ruby gem for Jekyll static site generator.\n\tIt
|
28
|
+
allows user to easily embed external or local PDF files to any page or blog post.\n
|
29
|
+
\ "
|
28
30
|
email: nesicmihajlo98@gmail.com
|
29
31
|
executables: []
|
30
32
|
extensions: []
|
@@ -33,7 +35,7 @@ files:
|
|
33
35
|
- lib/jekyll-pdf-embed.rb
|
34
36
|
homepage: https://github.com/MihajloNesic/jekyll-pdf-embed
|
35
37
|
licenses:
|
36
|
-
-
|
38
|
+
- GPL-3.0
|
37
39
|
metadata: {}
|
38
40
|
post_install_message:
|
39
41
|
rdoc_options: []
|
@@ -50,9 +52,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
50
52
|
- !ruby/object:Gem::Version
|
51
53
|
version: '0'
|
52
54
|
requirements: []
|
53
|
-
|
54
|
-
rubygems_version: 2.7.6.2
|
55
|
+
rubygems_version: 3.0.3
|
55
56
|
signing_key:
|
56
57
|
specification_version: 4
|
57
|
-
summary: Jekyll plugin
|
58
|
+
summary: Jekyll plugin for embedding PDF files to any page or post
|
58
59
|
test_files: []
|