---
title: "Introduction to cowsay"
author: "Scott Chamberlain, Tyler Rinker, Thomas Leeper, Noam Ross, Rich FitzJohn, Kiyoko Gotanda, Carson Sievert, Andy Teucher, Karl Broman, Franz-Sebastian Krah, Lucy D'Agostino McGowan, Guangchuang Yu, Paolo Sonego, and Philipp Boersch-Supan"
date: "`r Sys.Date()`"
output:
  html_document:
    toc: true
    toc_float: true
    theme: readable
vignette: >
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteIndexEntry{cowsay tutorial}
  %\VignetteEncoding{UTF-8}
---

```{r echo=FALSE}
knitr::opts_chunk$set(
  comment = "#>",
  collapse = TRUE
)
```

`cowsay` makes it easy to print messages, warnings, or character strings with various animals and other creatures.

## Installation

Stable version from CRAN

```{r eval=FALSE}
install.packages("cowsay")
```

or dev version from GitHub

```{r eval=FALSE}
# install.packages("pak")
pak::pak("sckott/cowsay")
```

```{r}
library(cowsay)
```

## The animals

The animals, and other ascii creatures, are all in a single named character vector that is exported from the package. Thus, you can access each animal yourself, and do whatever you want with it. 

As of this writing, there are `r length(animals)` animals.

The names of the animals:

```{r}
sort(names(animals))
```

For example, access the cow

```{r}
cow <- animal_fetch('cow')
cat(cow)
```

## Say something

We expose the function `say()` in this package, which you can use to envoke any animal in the package, and make it say whatever you want. Some examples:

```{r}
say("why did the chicken cross the road", "chicken")
```

```{r}
say("boo!", "ghost")
```

```{r}
say("nope, don't do that", type = "warning")
```

There's the special `time`, that will print out the time

```{r}
say("time")
```

## It's how you say it

You can use `say()` and give back a string, message, or warning

Message

```{r}
say("hello world", by = "cow")
```

Warning

```{r}
say("hello world", by = "cow", type = "warning")
```

String

```{r}
say("hello world", by = "cow", type = "string")
```
