terminal 0.3.beta1 → 0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +3 -1
- data/Readme.md +30 -0
- data/app/assets/stylesheets/terminal.css +1 -1
- data/lib/terminal.rb +2 -2
- data/lib/terminal/renderer.rb +30 -2
- data/lib/terminal/version.rb +1 -1
- data/spec/terminal/renderer_spec.rb +8 -0
- data/spec/terminal/screen_spec.rb +2 -0
- data/terminal.gemspec +1 -0
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b7b151475b60fc04b00cc33d7aa7b5248d3b3cbc
|
4
|
+
data.tar.gz: 9f6f38830a8df2fbd617dac67c18d8c363eb2c35
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 742af5d46b76221b4555dc0ce42c44bdf68cc35367cd164f682aec455888b19f87a40afe195e1fe7abe310ce8750570646d389ecc44771394abff6dad1c7f7f0
|
7
|
+
data.tar.gz: e33305bb8f16ffc673e48dcf4c90393727c27fd19e1832e174823573b6b07e15dcb0b58d1b4e64a2cfd2e28ad00ae29df8627e46d71e72eba6c0e97efe8f35cf
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
terminal (0.
|
4
|
+
terminal (0.3)
|
5
5
|
escape_utils (~> 1.0)
|
6
|
+
gemoji (~> 2.0)
|
6
7
|
|
7
8
|
GEM
|
8
9
|
remote: https://rubygems.org/
|
@@ -10,6 +11,7 @@ GEM
|
|
10
11
|
benchmark-ips (2.0.0)
|
11
12
|
diff-lcs (1.2.5)
|
12
13
|
escape_utils (1.0.1)
|
14
|
+
gemoji (2.0.0)
|
13
15
|
hirb (0.7.2)
|
14
16
|
method_profiler (2.0.1)
|
15
17
|
hirb (>= 0.6.0)
|
data/Readme.md
CHANGED
@@ -30,6 +30,36 @@ gem install terminal
|
|
30
30
|
Terminal.render("...")
|
31
31
|
```
|
32
32
|
|
33
|
+
### Rails Integration
|
34
|
+
|
35
|
+
You can use Terminal directly within your Ruby on Rails application. First require the gem
|
36
|
+
in your Gemfile:
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
gem "terminal"
|
40
|
+
```
|
41
|
+
|
42
|
+
Then in your `app/assets/application.css` file:
|
43
|
+
|
44
|
+
```css
|
45
|
+
/* require "terminal" */
|
46
|
+
```
|
47
|
+
|
48
|
+
Now in your views:
|
49
|
+
|
50
|
+
```
|
51
|
+
<div class="code"><%= Terminal.render(output)</div>
|
52
|
+
```
|
53
|
+
|
54
|
+
### Emojis :+1:
|
55
|
+
|
56
|
+
Terminal converts unicode to proper `<img>` tags. We use the [gemoji](https://github.com/github/gemoji)
|
57
|
+
gem to do this. The path to the assets can be customized by passing the `:emoji_asset_path` option to `Terminal.render`
|
58
|
+
|
59
|
+
```ruby
|
60
|
+
Terminal.render(output, emoji_asset_path: "https://your.cdn.com/images/emoji")
|
61
|
+
```
|
62
|
+
|
33
63
|
### Command Line
|
34
64
|
|
35
65
|
Terminal ships with a command line utility. For example, you can pipe `rspec` output to it:
|
@@ -5,10 +5,10 @@
|
|
5
5
|
.term-fg34 { color: #8db7e0; } /* blue */
|
6
6
|
.term-fg35 { color: #ceacde; } /* magenta */
|
7
7
|
.term-fg36 { color: #00cdd9; } /* cyan */
|
8
|
-
.term-fg90 { color: #838887; } /* grey */
|
9
8
|
|
10
9
|
/* high intense colors */
|
11
10
|
.term-fgi1 { color: #5ef765; }
|
11
|
+
.term-fgi90 { color: #838887; } /* grey */
|
12
12
|
|
13
13
|
/* background colors */
|
14
14
|
.term-bg42 { background: #99ff5f; }
|
data/lib/terminal.rb
CHANGED
@@ -6,7 +6,7 @@ require "terminal/preview"
|
|
6
6
|
require "terminal/engine" if defined?(Rails)
|
7
7
|
|
8
8
|
module Terminal
|
9
|
-
def self.render(output)
|
10
|
-
Terminal::Renderer.new(output).render
|
9
|
+
def self.render(output, options = {})
|
10
|
+
Terminal::Renderer.new(output, options).render
|
11
11
|
end
|
12
12
|
end
|
data/lib/terminal/renderer.rb
CHANGED
@@ -1,12 +1,18 @@
|
|
1
1
|
require 'escape_utils'
|
2
|
+
require 'emoji'
|
2
3
|
|
3
4
|
module Terminal
|
4
5
|
class Renderer
|
6
|
+
EMOJI_UNICODE_REGEXP = /[\u{1f600}-\u{1f64f}]|[\u{2702}-\u{27b0}]|[\u{1f680}-\u{1f6ff}]|[\u{24C2}-\u{1F251}]|[\u{1f300}-\u{1f5ff}]/
|
5
7
|
ESCAPE_CONTROL_CHARACTERS = "qQmKGgKAaBbCcDd"
|
6
8
|
MEGABYTES = 1024 * 1024
|
7
9
|
|
8
|
-
def initialize(output)
|
10
|
+
def initialize(output, options = {})
|
9
11
|
@output = output
|
12
|
+
|
13
|
+
@options = options
|
14
|
+
@options[:emoji_asset_path] ||= "/assets/emojis"
|
15
|
+
|
10
16
|
@screen = Screen.new
|
11
17
|
end
|
12
18
|
|
@@ -49,7 +55,10 @@ module Terminal
|
|
49
55
|
output = escape_html(output)
|
50
56
|
|
51
57
|
# Now convert the colors to HTML
|
52
|
-
convert_to_html(output)
|
58
|
+
output = convert_to_html(output)
|
59
|
+
|
60
|
+
# And emojify
|
61
|
+
replace_unicode_with_emoji(output)
|
53
62
|
end
|
54
63
|
|
55
64
|
private
|
@@ -156,5 +165,24 @@ module Terminal
|
|
156
165
|
def split_by_escape_character(string)
|
157
166
|
string.scan(/[\n\r\b]|\e\[[\d;]*[#{ESCAPE_CONTROL_CHARACTERS}]|./)
|
158
167
|
end
|
168
|
+
|
169
|
+
def replace_unicode_with_emoji(string)
|
170
|
+
string.gsub(EMOJI_UNICODE_REGEXP) do |match|
|
171
|
+
emoji_image_from_unicode(match)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
def emoji_image_from_unicode(unicode)
|
176
|
+
emoji = Emoji.find_by_unicode(unicode)
|
177
|
+
|
178
|
+
if emoji
|
179
|
+
name = ":#{emoji.name}:"
|
180
|
+
path = File.join(@options[:emoji_asset_path], emoji.image_filename)
|
181
|
+
|
182
|
+
%(<img alt="#{name}" title="#{name}" src="#{path}" class="emoji" width="20" height="20" />)
|
183
|
+
else
|
184
|
+
unicode
|
185
|
+
end
|
186
|
+
end
|
159
187
|
end
|
160
188
|
end
|
data/lib/terminal/version.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe Terminal::Renderer do
|
@@ -192,6 +194,12 @@ describe Terminal::Renderer do
|
|
192
194
|
|
193
195
|
expect(render(raw)).to eql("hi amazing \e[12 nom nom nom friends")
|
194
196
|
end
|
197
|
+
|
198
|
+
it "renders unicode emoji" do
|
199
|
+
raw = "this is great 👍"
|
200
|
+
|
201
|
+
expect(render(raw)).to eql(%{this is great <img alt=":+1:" title=":+1:" src="/assets/emojis/unicode/1f44d.png" class="emoji" width="20" height="20" />})
|
202
|
+
end
|
195
203
|
end
|
196
204
|
|
197
205
|
private
|
data/terminal.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: terminal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3
|
4
|
+
version: '0.3'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Keith Pitt
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: gemoji
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -155,9 +169,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
155
169
|
version: '0'
|
156
170
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
157
171
|
requirements:
|
158
|
-
- - "
|
172
|
+
- - ">="
|
159
173
|
- !ruby/object:Gem::Version
|
160
|
-
version:
|
174
|
+
version: '0'
|
161
175
|
requirements: []
|
162
176
|
rubyforge_project:
|
163
177
|
rubygems_version: 2.3.0
|