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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/jekyll-pdf-embed.rb +90 -8
  3. metadata +8 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 075c009a163d584198fde754bdad54fa8f4758d6b0c4517c60b3c708c8ffa779
4
- data.tar.gz: 407db47ce8f348f3450465071a2156dbd7f4bc461ded7f415d694ad868aea1df
3
+ metadata.gz: a200282b5c85cab73729e58efb740bed697c25868ba9181e4fd3db57b5ac799b
4
+ data.tar.gz: ec680e5ceb0c41a4eb39048447c2a95cce698baedb35882b2525b9d774b9ea5f
5
5
  SHA512:
6
- metadata.gz: eeb4006ffb5980dd93c120514e55f1a25fbd78c25bf6375baf0dc6c2fdcc5f6f830ba2108b3b9c35a5d20823754a89d24d26737d5a950210ff584e3339d16d7e
7
- data.tar.gz: f3bd7e1f22061f719075d22f41a38ee95cab82c7dca441221888102c128777a6a691f982d6c11b765fbbe19fdaafece44bc8ab7a42fc504ac0d21a84e0a3f6dc
6
+ metadata.gz: 8b50713dbf73074347588e2115f4c5c3d4a0850702d8088a808386fd95bdd3979b18f678ba4a4334d38a91ff9e58aefbae2f608526d3309c37f88683eba1c149
7
+ data.tar.gz: 44a29554ff3d855c665dff439718740e83406740b2536c1e43b53a49e3aa4fe6d91ea2204bb9c44ba157a91d103c7e1a96e950e84047eebf1fb5a617a918389b
@@ -1,16 +1,98 @@
1
1
  require "jekyll"
2
+ require "securerandom"
2
3
 
3
- class PDFEmbed < Liquid::Tag
4
-
5
- def initialize(tag_name, text, tokens)
4
+ class PDFEmbedTest < Liquid::Tag
5
+
6
+ NO_LINK_ARG = "no_link".freeze
7
+
8
+ def initialize(tagName, content, tokens)
6
9
  super
7
- @text = text
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
- %Q{<style>.pdf-embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; margin-bottom: 20px; } .pdf-embed-container iframe, .pdf-embed-container object, .pdf-embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style><div class='pdf-embed-container'><iframe title="PDF file" width="640" height="390" src=#{@text} frameborder="0" allowfullscreen></iframe></div>}
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.0.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: 2019-09-08 00:00:00.000000000 Z
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: Jekyll plugin to generate html snippets for embedding PDF files
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
- - MIT
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
- rubyforge_project:
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 to generate html snippets for embedding PDF files
58
+ summary: Jekyll plugin for embedding PDF files to any page or post
58
59
  test_files: []