jekyll-terminal 0.0.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 +7 -0
- data/lib/jekyll-terminal.rb +108 -0
- metadata +58 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: cf94b10a2097403fc5fb1026492b0e2622cbe8d0
|
4
|
+
data.tar.gz: c013d395fe3d2d059e5ae5b828ab96ee0a47018e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ef247b61ace1ec2b88aea6053fdf30ff542c3eb46e8124a20ff34f50622a17070d89156f766a7c7b7839fe8579261cd1df267a72efad92c5bc465fc85b873fe1
|
7
|
+
data.tar.gz: 01e252ac9cbc104f93453269105bb0f0b25572e197cc4933642d722037492ea0d7416d977c1c1a13c1ae26f0e4842630ba17605b54894fd0ad438d2faf4ab672
|
@@ -0,0 +1,108 @@
|
|
1
|
+
require 'jekyll'
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
module Terminal
|
5
|
+
# TODO: make this customizable in options.
|
6
|
+
def Terminal.dir(site)
|
7
|
+
'css'
|
8
|
+
end
|
9
|
+
|
10
|
+
def Terminal.basename(site)
|
11
|
+
'terminal'
|
12
|
+
end
|
13
|
+
|
14
|
+
# Page that reads its contents from the Gem `terminal.sass` file.
|
15
|
+
class StylesheetPage < Page
|
16
|
+
def initialize(site, base, dir)
|
17
|
+
@site = site
|
18
|
+
@base = base
|
19
|
+
@dir = dir
|
20
|
+
@name = Jekyll::Terminal::basename(site)+ '.scss'
|
21
|
+
|
22
|
+
self.process(@name)
|
23
|
+
|
24
|
+
filepath = File.join(File.dirname(File.expand_path(__FILE__)), @name)
|
25
|
+
self.content = File.read(filepath, merged_file_read_opts({}))
|
26
|
+
self.data ||= {}
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# Generator that adds the stylesheet page to the generated site.
|
31
|
+
class StylesheetGenerator < Generator
|
32
|
+
safe true
|
33
|
+
|
34
|
+
def generate(site)
|
35
|
+
site.pages << StylesheetPage.new(site, site.source, Jekyll::Terminal::dir(site))
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class StylesheetTag < Liquid::Tag
|
40
|
+
def initialize(tag_name, text, tokens)
|
41
|
+
super
|
42
|
+
@text = text
|
43
|
+
end
|
44
|
+
|
45
|
+
def render(context)
|
46
|
+
site = context.registers[:site]
|
47
|
+
url = Jekyll::Terminal::dir(site) + '/' + Jekyll::Terminal::basename(site)
|
48
|
+
"<link rel='stylesheet' href='#{site.baseurl}/#{url}.css'>"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
class CommandsBlock < Liquid::Block
|
53
|
+
|
54
|
+
def initialize(tag_name, text, tokens)
|
55
|
+
super
|
56
|
+
@text = text
|
57
|
+
end
|
58
|
+
|
59
|
+
def render(context)
|
60
|
+
output = super(context)
|
61
|
+
# TODO: make title customizable.
|
62
|
+
%{<div class="window">
|
63
|
+
<nav class="control-window">
|
64
|
+
<a href="#finder" class="close" data-rel="close">close</a>
|
65
|
+
<a href="#" class="minimize">minimize</a>
|
66
|
+
<a href="#" class="deactivate">deactivate</a>
|
67
|
+
</nav>
|
68
|
+
<h1 class="titleInside">Terminal</h1>
|
69
|
+
<div class="container"><div class="terminal">#{promptize(output)}</div></div>
|
70
|
+
</div>}
|
71
|
+
end
|
72
|
+
|
73
|
+
def promptize(content)
|
74
|
+
content = content.strip
|
75
|
+
gutters = content.lines.map { |line| gutter(line) }
|
76
|
+
lines_of_code = content.lines.map { |line| line_of_code(line) }
|
77
|
+
|
78
|
+
table = "<table><tr>"
|
79
|
+
table += "<td class='gutter'><pre class='line-numbers'>#{gutters.join("\n")}</pre></td>"
|
80
|
+
table += "<td class='code'><pre><code>#{lines_of_code.join("")}</code></pre></td>"
|
81
|
+
table += "</tr></table>"
|
82
|
+
end
|
83
|
+
|
84
|
+
def gutter(line)
|
85
|
+
gutter_value = line.start_with?(command_character) ? command_character : " "
|
86
|
+
"<span class='line-number'>#{gutter_value}</span>"
|
87
|
+
end
|
88
|
+
|
89
|
+
def line_of_code(line)
|
90
|
+
if line.start_with?(command_character)
|
91
|
+
line_class = "command"
|
92
|
+
line = line.sub(command_character,'').strip
|
93
|
+
else
|
94
|
+
line_class = "output"
|
95
|
+
end
|
96
|
+
"<span class='line #{line_class}'>#{line}</span>"
|
97
|
+
end
|
98
|
+
|
99
|
+
def command_character
|
100
|
+
"$"
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
Liquid::Template.register_tag('terminal', Jekyll::Terminal::CommandsBlock)
|
108
|
+
Liquid::Template.register_tag('terminal_stylesheet', Jekyll::Terminal::StylesheetTag)
|
metadata
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jekyll-terminal
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Xavier Decoret
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-12-13 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: jekyll
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.0'
|
27
|
+
description: 'Displays nice '
|
28
|
+
email: xavier.decoret+jekyll@gmail.com
|
29
|
+
executables: []
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- lib/jekyll-terminal.rb
|
34
|
+
homepage: http://rubygems.org/gems/jekyll-terminal
|
35
|
+
licenses:
|
36
|
+
- MIT
|
37
|
+
metadata: {}
|
38
|
+
post_install_message:
|
39
|
+
rdoc_options: []
|
40
|
+
require_paths:
|
41
|
+
- lib
|
42
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: '0'
|
52
|
+
requirements: []
|
53
|
+
rubyforge_project:
|
54
|
+
rubygems_version: 2.0.3
|
55
|
+
signing_key:
|
56
|
+
specification_version: 4
|
57
|
+
summary: Gem to show terminals in Jekyll sites
|
58
|
+
test_files: []
|