• Stars
    star
    223
  • Rank 175,393 (Top 4 %)
  • Language
    R
  • License
    Other
  • Created about 5 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Turn R scripts into terminal screencasts

asciicast

Turn R scripts into terminal screencasts

Lifecycle: experimental CRAN status Codecov test coverage R-CMD-check

asciicast takes an R script and turns it into an asciinema cast. It can simulate typing, and records all terminal output in real time as it happens.

Features

  • Input is an R script, output is a v2 asciicast recording.
  • Record all terminal output in real time, as it happens.
  • Simulate typing in the commands, with a configurable, randomized speed.
  • Alternatively, whole comment blocks or expressions can just appear on the screen.
  • Convert casts to SVG images using svg-term. The package comes with its own svg-term bundle, no external dependencies are needed.
  • Render a single frame of a cast as an SVG image.
  • Configurable delay at the beginning, at the end and between paragraphs.
  • HTML widget, to be used in Rmarkdown documents, e.g.Β in vignettes.
  • Read casts from asciinema JSON files (version 2), or from https://asciinema.org directly.
  • Special knitr engine to create R markdown files with ascii casts. See the asciicast-demo vignette.
  • Create ascii casts in GitHub READMEs via animated SVG files. See an example in inst/examples or the README.Rmd source of the README file you are reading.

Limitations

  • asciicast works best in an UTF-8 locale. It also works well if all output is ASCII, but non-ASCII output might cause problems (#36).

Installation

You can install the released version of asciicast from CRAN:

install.packages("asciicast")

Examples

See the inst/examples directory for these examples.

Hello world

The input script:

print("Hello world!")

The result:

Asciicast demo in asciicast

Input script that uses asciicast itself:

#' Title: asciicast example recorded in asciicast
#' Empty_wait: 3
#' End_wait: 20

# An example for using asciicast, recorded in asciicast itself!      #!

# First, save the R code you want to run, in a script file.          #!
# The file can contain any code, including interactive code,         #!
# as long as it is a syntactically valid R file.                     #!

# Second, perform the recording with the `record()` function.        #!
# We are recording an example file now, that comes with the package. #!

src <- system.file("examples", "hello.R", package = "asciicast")
cast <- asciicast::record(src)

# `cast` is an `asciicast` object, which has some metadata and the   #!
# recording itself:                                                  #!

cast

# You can write `cast` to a JSON file that can be played by any      #!
# asciinema player. Or you can write it to an SVG file that can      #!
# be embedded into a web page, or a GitHub README.                   #!

svg <- tempfile(fileext = ".svg")
asciicast::write_svg(cast, svg, window = TRUE)

Errors are recorded

Input script with errors:

#' End_wait: 20
# Demonstrate that errors are handled well

# Base R error
library("not-this-really")
traceback()

# callr errors are saved to `.Last.error`, including a stack trace
library(cli)
callr::r(function() library("another-failure"))
.Last.error

Related tools

License

MIT @ RStudio

More Repositories

1

devtools

Tools to make an R developer's life easier
R
2,368
star
2

lintr

Static Code Analysis for R
R
1,164
star
3

httr

httr: a friendly http package for R
R
982
star
4

actions

GitHub Actions for the R community
TypeScript
917
star
5

testthat

An R πŸ“¦ to make testing πŸ˜€
R
867
star
6

usethis

Set up commonly used πŸ“¦ components
R
821
star
7

pkgdown

Generate static html documentation for an R package
R
708
star
8

styler

Non-invasive pretty printing of R code
R
692
star
9

pak

A fresh approach to package installation
C
630
star
10

cli

Tools for making beautiful & useful command line interfaces
R
618
star
11

roxygen2

Generate R package documentation from inline R comments
R
579
star
12

rig

The R Installation Manager
Rust
555
star
13

rlang

Low-level API for programming with R
R
484
star
14

progress

Progress bar in your R terminal
R
457
star
15

R6

Encapsulated object-oriented programming for R
R
402
star
16

here

A simpler way to find your files
R
401
star
17

scales

Tools for ggplot2 scales
R
388
star
18

fs

Provide cross platform file operations based on libuv.
C
361
star
19

rex

Friendly regular expressions for R.
R
331
star
20

covr

Test coverage reports for R
R
329
star
21

crayon

πŸ–οΈ R package for colored terminal output β€” now superseded by cli
R
322
star
22

remotes

Install R packages from GitHub, GitLab, Bitbucket, git, svn repositories, URLs
R
321
star
23

memoise

Easy memoisation for R
R
314
star
24

lobstr

Understanding complex R objects with tools similar to str()
R
296
star
25

slider

Sliding Window Functions
R
290
star
26

callr

Call R from R
R
289
star
27

vctrs

Generic programming with typed R vectors
C
280
star
28

waldo

Find differences between R objects
R
275
star
29

zeallot

Variable assignment with zeal! (or multiple, unpacking, and destructuring assignment in R)
R
250
star
30

conflicted

An alternative conflict resolution strategy for R
R
243
star
31

bench

High Precision Timing of R Expressions
R
242
star
32

gmailr

Access the Gmail RESTful API from R.
R
230
star
33

processx

Execute and Control Subprocesses from R
R
227
star
34

httr2

Make HTTP requests and process their responses. A modern reimagining of httr.
R
223
star
35

xml2

Bindings to libxml2
R
218
star
36

gh

Minimalistic GitHub API client in R
R
217
star
37

cpp11

cpp11 helps you to interact with R objects using C++ code.
C++
193
star
38

keyring

πŸ” Access the system credential store from R
R
188
star
39

vdiffr

Visual regression testing and graphical diffing with testthat
C++
181
star
40

svglite

A lightweight svg graphics device for R
C++
178
star
41

pillar

Format columns with colour
R
173
star
42

ragg

Graphic Devices Based on AGG
C++
170
star
43

withr

Methods For Temporarily Modifying Global State
R
169
star
44

hugodown

Make websites with hugo and RMarkdown
R
165
star
45

ymlthis

write YAML for R Markdown, bookdown, blogdown, and more
R
163
star
46

coro

Coroutines for R
R
150
star
47

rprojroot

Finding files in project subdirectories
R
147
star
48

debugme

Easy and efficient debugging for R packages
R
145
star
49

available

Check if a package name is available to use
R
142
star
50

archive

R bindings to libarchive, supporting a large variety of archive formats
C++
141
star
51

ellipsis

Tools for Working with ...
R
139
star
52

later

Schedule an R function or formula to run after a specified period of time.
C++
136
star
53

gert

Simple git client for R
C
136
star
54

itdepends

R
133
star
55

rray

Simple Arrays
R
130
star
56

isoband

isoband: An R package to generate contour lines and polygons.
C++
130
star
57

prettyunits

Pretty, human readable formatting of quantities
JavaScript
128
star
58

fastmap

Fast map implementation for R
C++
127
star
59

desc

Manipulate DESCRIPTION files
R
121
star
60

tidyselect

A backend for functions taking tidyverse selections
R
121
star
61

gargle

Infrastructure for calling Google APIs from R, including auth
R
113
star
62

rcmdcheck

Run R CMD check from R and collect the results
R
109
star
63

evaluate

A version of eval for R that returns more information about what happened
R
108
star
64

prettycode

Syntax highlight R code in the terminal
R
100
star
65

sloop

S language OOP ⛡️
R
99
star
66

revdepcheck

R package reverse dependency checking
R
99
star
67

mockery

A mocking library for R.
R
98
star
68

tree-sitter-r

C
95
star
69

clock

A Date-Time Library for R
R
95
star
70

pkgdepends

R Package Dependency Resolution
R
93
star
71

systemfonts

System Native Font Handling in R
C++
91
star
72

lifecycle

Manage the life cycle of your exported functions and arguments
R
90
star
73

gtable

The layout packages that powers ggplot2
R
85
star
74

askpass

Password Entry for R, Git, and SSH
R
83
star
75

commonmark

High Performance CommonMark and Github Markdown Rendering in R
C
83
star
76

zip

Platform independent zip compression via miniz
C
82
star
77

rappdirs

Find OS-specific directories to store data, caches, and logs. A port of python's AppDirs
R
81
star
78

downlit

Syntax Highlighting and Automatic Linking
R
81
star
79

clisymbols

Unicode symbols for CLI applications, with fallbacks
R
76
star
80

ps

R package to query, list, manipulate system processes
C
72
star
81

sessioninfo

Print Session Information
R
72
star
82

pkgapi

Create a map of functions for an R package - WORK IN PROGRESS!
R
70
star
83

credentials

Tools for Managing SSH and Git Credentials
R
70
star
84

sodium

R bindings to libsodium
R
68
star
85

roxygen2md

Convert elements of roxygen documentation to markdown
R
67
star
86

backports

Reimplementations of Functions Introduced Since R-3.0.0
R
65
star
87

pkgbuild

Find tools needed to build R packages
R
65
star
88

webfakes

Fake web apps for HTTP testing R packages
C
61
star
89

cliapp

Rich Command Line Applications
R
60
star
90

generics

Common generic methods
R
59
star
91

diffviewer

HTML widget to visually compare files
JavaScript
57
star
92

liteq

Serverless R message queue using SQLite
R
56
star
93

pkgload

Simulate installing and loading a package
R
54
star
94

cachem

Key-value caches for R
R
53
star
95

carrier

Create standalone functions for remote execution
R
50
star
96

brio

Basic R Input Output
R
50
star
97

marquee

Markdown Parser and Renderer for R Graphics
C
49
star
98

jose

Javascript Object Signing and Encryption for R
R
48
star
99

urlchecker

Run CRAN URL checks from older versions of R
R
45
star
100

pkgconfig

Private configuration for R packages
R
41
star