Comments (4)
The last Ruby version was v2.0.0, tagged back in 2015. It’s still available on Rubygems. We’ve just been using and maintaining the Go version since #14 landed.
from terminal-to-html.
@nielsbuus we still use this library from Ruby, we have some code that looks like this:
TERMINAL_TO_HTML_BINARY = if RUBY_PLATFORM.match? /darwin/
'terminal-to-html-darwin-amd64'
else
'terminal-to-html-linux-amd64'
end
def render(output)
binary = Rails.root.join('bin', TERMINAL_TO_HTML_BINARY).to_s
html = IO.popen([binary], 'r+') do |p|
p.write(output)
p.close_write
p.read
end
raise Error.new('Failed to render terminal output') if $?.to_i != 0
html
end
Works a treat!
from terminal-to-html.
Speed and memory.
I hacked together a prototype implementation during a CampJS years ago as a Go teaching exercise and asked if BK wanted to use it.
The initial implementation was 2x as fast as Ruby - what I found was that both Go and Ruby were spending most of their time in regex land: in Ruby, this was much faster than the ruby surrounding it, but that was not true for Go. Rewrote the parsing engine to be state/token based and got to a (can't remember exactly) 10x or so speedup.
from terminal-to-html.
Thanks - out of curiosity - what was the motivation for rewriting in Go?
from terminal-to-html.
Related Issues (20)
- APC with standard ST terminator would break parser
- Published docker image HOT 3
- pkg.go.dev does not recognize your LICENSE HOT 1
- Support Buildkite log groups and expand/collapsing
- DECSC / DECRC should save more than cursor position
- Request to take ownership of the terminal Ruby gem HOT 6
- Prevent wrapping long lines on small screens HOT 4
- Support for terminal URLs HOT 2
- Incorrect output for `playwright` output - lines being incorrectly removed
- (feature request) Automatically add links for URLs HOT 1
- terminal-to-html imposes odd formatting on Terraform plans HOT 3
- Garbled output from Gradle HOT 8
- [Feature request] Add an option to customize title of output HTML HOT 1
- Dockerfile out of date?
- Add support to install with homebrew HOT 1
- Flaky test: TestRendererAgainstCases renders APC escapes as processing instructions
- Add the remaining 8-bit colors to the css
- Add checksum for an archive while downloading
- Ignore 2J & 3J "scrollback clear" codes HOT 1
- Bug with rendering characters in Gradle progress output HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from terminal-to-html.