jekyll-jupyter-notebook 0.0.2 → 0.0.3

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
- SHA1:
3
- metadata.gz: 2d8a308475c3bbced91a8f917dd2269cd5841f2f
4
- data.tar.gz: 7bfd27ff41148e95d335eb16a53ef5649227156d
2
+ SHA256:
3
+ metadata.gz: 672a0c4369f87053a77bc6065f5fe6c7793c530c006cb92d54ba894efc83879e
4
+ data.tar.gz: 9d6548fbab78a3632b5e1feb81cf98b0602ad3f7366af1e3b623d3fac2f53497
5
5
  SHA512:
6
- metadata.gz: 3cdf4e001557890333f746d30ce5c4b6b790ccd61215b0c1fe0a0a5167a16de48436e93040ebc266b8170901b5c64f8709705e9b5ad8aba8d3f193454d17bd43
7
- data.tar.gz: 774011d293718da25e201b8348dda74c597e470fc3c9e8e4e5de473accfda7258eda13bf8ffb79aaa04b98be9b607f521cbe3e65648e5655f0daec281a35516d
6
+ metadata.gz: e84f567d3997d8799d419f0f0a6f7f5c60c46204b8a34b145e62d37f0bfc91e43e27d0182e407c5288b9fe988bf51d7e6aa38d5ba6e4f3cfedd6e5e220058271
7
+ data.tar.gz: 1093ca8d586c5c3f442ec1710822c11298a0ab2dfe8ae566339ee1e6693fc3c589c1ec57b44897e617f019194bd9ad56f1da73d03b5fbb349b154f17712a2e74
data/README.md CHANGED
@@ -16,10 +16,16 @@ Add the following line to your site's `Gemfile`:
16
16
  gem "jekyll-jupyter-notebook"
17
17
  ```
18
18
 
19
+ Run the following command line to make the gem available:
20
+
21
+ ```console
22
+ % bundle install
23
+ ```
24
+
19
25
  Add the following line to your site's `_config.yml`:
20
26
 
21
27
  ```yaml
22
- gems:
28
+ plugins:
23
29
  - jekyll-jupyter-notebook
24
30
  ```
25
31
 
data/doc/text/news.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # News
2
2
 
3
+ ## 0.0.3 - 2018-03-31
4
+
5
+ ### Improvements
6
+
7
+ * Improved install document.
8
+ [GitHub#5][Patch by Jake VanCampen]
9
+
10
+ * Changed to use `iframe` instead of embedding `nbconvert`-ed HTML directory.
11
+ It required JavaScript.
12
+
13
+ ### Thanks
14
+
15
+ * Jake VanCampen
16
+
3
17
  ## 0.0.2 - 2017-09-03
4
18
 
5
19
  ### Improvements
@@ -12,4 +12,6 @@
12
12
 
13
13
  require "jekyll-jupyter-notebook/version"
14
14
 
15
+ require "jekyll-jupyter-notebook/converter"
16
+ require "jekyll-jupyter-notebook/generator"
15
17
  require "jekyll-jupyter-notebook/tag"
@@ -0,0 +1,70 @@
1
+ # Licensed under the Apache License, Version 2.0 (the "License");
2
+ # you may not use this file except in compliance with the License.
3
+ # You may obtain a copy of the License at
4
+ #
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software
8
+ # distributed under the License is distributed on an "AS IS" BASIS,
9
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ # See the License for the specific language governing permissions and
11
+ # limitations under the License.
12
+
13
+ require "tempfile"
14
+
15
+ module JekyllJupyterNotebook
16
+ class Converter < Jekyll::Converter
17
+ def matches(ext)
18
+ ext == ".ipynb"
19
+ end
20
+
21
+ def output_ext(ext)
22
+ ".html"
23
+ end
24
+
25
+ def convert(content)
26
+ config = @config["jupyter_notebook"] || {}
27
+
28
+ html = convert_notebook(content)
29
+ html.sub!(/<link.+?href="custom.css">/, "")
30
+ case config["content"] || "html"
31
+ when "html"
32
+ when "body"
33
+ html.sub!(/\A.*?<\/title>/m, "")
34
+ html.sub!(/<\/head>/, "")
35
+ html.sub!(/<body>/, "")
36
+ html.sub!(/<\/body>.*?\z/m, "")
37
+ when "body-without-style"
38
+ html.sub!(/\A.*?<body>/m, "")
39
+ html.sub!(/<\/body>.*?\z/m, "")
40
+ end
41
+ html
42
+ end
43
+
44
+ private
45
+ def convert_notebook(content)
46
+ notebook = Tempfile.new(["jekyll-jupyter-notebook", ".ipynb"])
47
+ notebook.print(content)
48
+ notebook.close
49
+ IO.pipe do |input, output|
50
+ pid = spawn("jupyter",
51
+ "nbconvert",
52
+ "--to", "html",
53
+ "--stdout",
54
+ notebook.path,
55
+ :out => output)
56
+ begin
57
+ output.close
58
+ html = nil
59
+ read_thread = Thread.new do
60
+ html = input.read
61
+ end
62
+ read_thread.join
63
+ html
64
+ ensure
65
+ Process.waitpid(pid)
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,37 @@
1
+ # Licensed under the Apache License, Version 2.0 (the "License");
2
+ # you may not use this file except in compliance with the License.
3
+ # You may obtain a copy of the License at
4
+ #
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software
8
+ # distributed under the License is distributed on an "AS IS" BASIS,
9
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ # See the License for the specific language governing permissions and
11
+ # limitations under the License.
12
+
13
+ module JekyllJupyterNotebook
14
+ module IFramePage
15
+ def output_ext
16
+ ext + super
17
+ end
18
+ end
19
+
20
+ class Generator < Jekyll::Generator
21
+ def generate(site)
22
+ site.static_files.reject! do |static_file|
23
+ if static_file.extname == ".ipynb"
24
+ base = static_file.instance_variable_get(:@base)
25
+ dir = static_file.instance_variable_get(:@dir)
26
+ name = static_file.name
27
+ page = Jekyll::Page.new(site, base, dir, name)
28
+ page.extend(IFramePage)
29
+ site.pages << page
30
+ true
31
+ else
32
+ false
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -26,27 +26,21 @@ module JekyllJupyterNotebook
26
26
  end
27
27
 
28
28
  def render(context)
29
- dir = context["page"]["dir"] || File.dirname(context["page"]["path"])
30
- notebook_path = File.join(context["site"]["source"],
31
- dir,
32
- @notebook_path)
33
- Dir.mktmpdir do |output|
34
- system("jupyter",
35
- "nbconvert",
36
- "--to", "html",
37
- "--output-dir", output,
38
- notebook_path)
39
- html_path = Dir.glob("#{output}/*.html").first
40
- html = File.read(html_path)
41
- html.sub!(/\A.*?<\/title>/m, "")
42
- html.sub!(/<link.+?href="custom.css">/, "")
43
- html.sub!(/<\/head>/, "")
44
- html.sub!(/<body>/, "")
45
- html.sub!(/<\/body>.*?\z/m, "")
46
- <<-HTML
47
- <div class="jupyter-notebook">#{html}</div>
48
- HTML
49
- end
29
+ notebook_html_path = "#{@notebook_path}.html"
30
+ <<-HTML
31
+ <div
32
+ class="jupyter-notebook"
33
+ style="position: relative; width: 100%; margin: 0 auto;">
34
+ <div class="jupyter-notebook-iframe-container">
35
+ <iframe
36
+ src="#{CGI.escapeHTML(notebook_html_path)}"
37
+ style="position: absolute; top: 0; left: 0; border-style: none;"
38
+ width="100%"
39
+ height="100%"
40
+ onload="this.parentElement.style.paddingBottom = (this.contentWindow.document.documentElement.scrollHeight + 10) + 'px'"></iframe>
41
+ </div>
42
+ </div>
43
+ HTML
50
44
  end
51
45
  end
52
46
  end
@@ -11,5 +11,5 @@
11
11
  # limitations under the License.
12
12
 
13
13
  module JekyllJupyterNotebook
14
- VERSION = "0.0.2"
14
+ VERSION = "0.0.3"
15
15
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-jupyter-notebook
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouhei Sutou
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-03 00:00:00.000000000 Z
11
+ date: 2018-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -109,6 +109,8 @@ files:
109
109
  - doc/text/news.md
110
110
  - jekyll-jupyter-notebook.gemspec
111
111
  - lib/jekyll-jupyter-notebook.rb
112
+ - lib/jekyll-jupyter-notebook/converter.rb
113
+ - lib/jekyll-jupyter-notebook/generator.rb
112
114
  - lib/jekyll-jupyter-notebook/tag.rb
113
115
  - lib/jekyll-jupyter-notebook/version.rb
114
116
  homepage: https://github.com/red-data-tools/jekyll-jupyter-notebook
@@ -131,7 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
133
  version: '0'
132
134
  requirements: []
133
135
  rubyforge_project:
134
- rubygems_version: 2.5.2
136
+ rubygems_version: 2.7.6
135
137
  signing_key:
136
138
  specification_version: 4
137
139
  summary: Jekyll Jupyter Notebook plugin adds [Jupyter](http://jupyter.org/) Notebook