Compare commits

...

30 Commits

Author SHA1 Message Date
millironx 755c1cf25b Update '.woodpecker.yml'
ci/woodpecker/manual/woodpecker/1 Pipeline failed Details
ci/woodpecker/manual/woodpecker/2 Pipeline failed Details
ci/woodpecker/manual/woodpecker/3 Pipeline failed Details
ci/woodpecker/manual/woodpecker/4 Pipeline failed Details
5 months ago
millironx ee17c8d2d9 Update '.woodpecker.yml'
ci/woodpecker/manual/woodpecker/1 Pipeline was successful Details
ci/woodpecker/manual/woodpecker/2 Pipeline was successful Details
ci/woodpecker/manual/woodpecker/3 Pipeline was successful Details
ci/woodpecker/manual/woodpecker/4 Pipeline was successful Details
5 months ago
millironx 9b16e5ed6e Update '.woodpecker.yml'
ci/woodpecker/push/woodpecker Pipeline was successful Details
ci/woodpecker/manual/woodpecker/1 Pipeline was successful Details
ci/woodpecker/manual/woodpecker/2 Pipeline was successful Details
ci/woodpecker/manual/woodpecker/3 Pipeline was successful Details
ci/woodpecker/manual/woodpecker/4 Pipeline was successful Details
1 year ago
millironx 727027c43f Update 'docs/make.jl'
ci/woodpecker/push/woodpecker Pipeline was successful Details
1 year ago
millironx c319798d25 Update '.woodpecker.yml'
ci/woodpecker/push/woodpecker Pipeline was successful Details
1 year ago
millironx f8cf0f9ad2 Delete 'docs/Manifest.toml'
ci/woodpecker/push/woodpecker Pipeline was successful Details
1 year ago
millironx 2718e85f23 Update '.woodpecker.yml'
ci/woodpecker/push/woodpecker Pipeline was successful Details
1 year ago
millironx 90af33bec8 Update '.woodpecker.yml'
ci/woodpecker/push/woodpecker Pipeline was successful Details
1 year ago
millironx d08610b863 Update '.woodpecker.yml'
ci/woodpecker/push/woodpecker Pipeline was successful Details
1 year ago
millironx 15748f56cb Update '.woodpecker.yml'
ci/woodpecker/push/woodpecker Pipeline was successful Details
1 year ago
millironx be808573cc Update '.woodpecker.yml'
ci/woodpecker/push/woodpecker Pipeline failed Details
1 year ago
millironx b91b374b96 Update '.woodpecker.yml'
ci/woodpecker/push/woodpecker Pipeline failed Details
1 year ago
millironx e74dd4bd9c Update '.woodpecker.yml' 1 year ago
millironx 9d1a031cea Update '.woodpecker.yml' 1 year ago
Thomas A. Christensen II ec7c5fe27c
Add .woodpecker.yml 1 year ago
Thomas A. Christensen II e1a1447918
Bump version to 1.0
Signed-off-by: Thomas A. Christensen II <25492070+MillironX@users.noreply.github.com>
2 years ago
Thomas A. Christensen II e040f341c2
Add Genie download badge to README
Signed-off-by: Thomas A. Christensen II <25492070+MillironX@users.noreply.github.com>
2 years ago
Thomas A. Christensen II 12756ad19d
Add contributing info to README
Signed-off-by: Thomas A. Christensen II <25492070+MillironX@users.noreply.github.com>
2 years ago
Thomas A. Christensen II a80970cdc9
Add Prettier formatting to README
Signed-off-by: Thomas A. Christensen II <25492070+MillironX@users.noreply.github.com>
2 years ago
Thomas A. Christensen II 62158f7d6d
Add info about modes to README
Signed-off-by: Thomas A. Christensen II <25492070+MillironX@users.noreply.github.com>
2 years ago
Thomas A. Christensen II 1b40b090dc
Update CHANGELOG
Signed-off-by: Thomas A. Christensen II <25492070+MillironX@users.noreply.github.com>
2 years ago
Thomas A. Christensen II 825c66365a
Add tests for cow modes
Signed-off-by: Thomas A. Christensen II <25492070+MillironX@users.noreply.github.com>
2 years ago
Thomas A. Christensen II 9c5d94b31b
Add support for cow "modes"
Signed-off-by: Thomas A. Christensen II <25492070+MillironX@users.noreply.github.com>
2 years ago
Thomas A. Christensen II 4cd2cf5a07
Remove text wrapping reference from README 2 years ago
Thomas A. Christensen II c31104da84
Version bump to v0.3.1 2 years ago
Thomas A. Christensen II 96d3e2416e
Add `cowsaid`/`cowthunk` to README 2 years ago
Thomas A. Christensen II 73ca0c6120
Replace one Mylo Hatzenbuhler reference with a Cledus Judd one 2 years ago
Thomas A. Christensen II 28f98c346e
Make TextWrap.jl respect newlines coming from user 2 years ago
Thomas A. Christensen II 3d2f86d275
Add `nowrap` keyword argument to disable text wrapping 2 years ago
Thomas A. Christensen II bc04423125
Refactor to using `kwargs` for passing long lists of keyword arguments around 2 years ago

@ -0,0 +1,34 @@
clone:
git:
image: woodpeckerci/plugin-git
settings:
partial: false
depth: 0
matrix:
JULIA_VERSION:
- "1.0"
- "1.6"
- "1"
- "rc"
steps:
test:
image: julia:${JULIA_VERSION}
pull: true
when:
event: [pull_request, push]
commands:
- julia --color=yes -e 'using Pkg; Pkg.activate(pwd()); Pkg.instantiate()'
- julia --color=yes -e 'using Pkg; Pkg.activate(pwd()); Pkg.test(;coverage=true)'
docs:
image: julia
when:
branch: master
secrets:
- project_access_token
commands:
- julia --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.instantiate()'
- julia --project=docs/ docs/make.jl

@ -8,6 +8,16 @@ Versioning](https://semver.org/spec/v2.0.0.html).
## Unreleased
### Added
- Cow "modes" (Borg, dead, greedy, etc.)
## [v0.3.1] - 2022-02-01
### Fixed
- Newlines in input message are no longer stripped out during text wrapping
## [v0.3.0] - 2022-02-01
### Added
@ -73,7 +83,8 @@ Versioning](https://semver.org/spec/v2.0.0.html).
- `cowsay` function for Julia in package format
[Unreleased]: https://github.com/MillironX/Cowsay.jl/compare/v0.3.0...HEAD
[unreleased]: https://github.com/MillironX/Cowsay.jl/compare/v0.3.1...HEAD
[v0.3.0]: https://github.com/MillironX/Cowsay.jl/compare/v0.3.0...v0.3.1
[v0.3.0]: https://github.com/MillironX/Cowsay.jl/compare/v0.2.1...v0.3.0
[v0.2.1]: https://github.com/MillironX/Cowsay.jl/compare/v0.2.0...v0.2.1
[v0.2.0]: https://github.com/MillironX/Cowsay.jl/compare/v0.1.0...v0.2.0

@ -1,7 +1,7 @@
name = "Cowsay"
uuid = "b6370f49-8ad1-4651-ad9e-3639b35da0e9"
authors = ["Thomas A. Christensen II <25492070+MillironX@users.noreply.github.com> and contributors"]
version = "0.3.0"
version = "1.0.0"
[deps]
TextWrap = "b718987f-49a8-5099-9789-dcd902bef87d"

@ -15,6 +15,7 @@
[![Dev](https://img.shields.io/badge/docs-dev-blue.svg)](https://millironx.com/Cowsay.jl/dev)
[![Build Status](https://github.com/MillironX/Cowsay.jl/workflows/CI/badge.svg)](https://github.com/MillironX/Cowsay.jl/actions)
[![Coverage](https://codecov.io/gh/MillironX/Cowsay.jl/branch/master/graph/badge.svg)](https://codecov.io/gh/MillironX/Cowsay.jl)
[![Genie Downloads](https://shields.io/endpoint?url=https://pkgs.genieframework.com/api/v1/badge/Cowsay)](https://pkgs.genieframework.com?packages=Cowsay)
A talking cow library for Julia, based on the [Fedora release of
cowsay](https://src.fedoraproject.org/rpms/cowsay).
@ -32,7 +33,7 @@ add Cowsay
Complete usage info can be found in [the documentation]. Cowsay.jl exports two
functions: `cowsay` and `cowthink`, which print an ASCII cow saying or thinking
a message without text wrapping, respectively.
a message, respectively.
```julia-repl
julia> using Cowsay
@ -59,14 +60,32 @@ julia> cowthink("The farmers who have no livestock,\ntheir lives simply aren't t
|| ||
```
If you want to use talking cows in your program, use the `cowsaid` and
`cowthunk` functions to get strings of the cow art.
```julia-repl
julia> @info string("\n", cowsaid("And the longhorns lowed him a welcome\nAs a new voice cried from the buckboard"))
┌ Info:
│ _________________________________________
│ / And the longhorns lowed him a welcome \
│ \ As a new voice cried from the buckboard /
│ -----------------------------------------
│ \ ^__^
│ \ (oo)\_______
│ (__)\ )\/\
│ ||----w |
└ || ||
```
There are also plenty of [unexported Cowfiles] that you can use to customize
your art.
```julia-repl
julia> cowsay("Super cattle growth hormone can make your beef delicious", cow=Cowsay.udder)
__________________________________________________________
< Super cattle growth hormone can make your beef delicious >
----------------------------------------------------------
julia> cowsay("This heifer must be empty\n'Cuz she ain't puttin' out", cow=Cowsay.udder)
____________________________
/ This heifer must be empty \
\ 'Cuz she ain't puttin' out /
----------------------------
\
\ (__)
o o\
@ -93,7 +112,30 @@ julia> cowsay("You better watch your step\nwhen you know the chips are down!", t
|| ||
```
[Julia REPL]: https://docs.julialang.org/en/v1/manual/getting-started/
And even change its emotional or physical state using modes.
```julia-repl
julia> cowsay("He mooed we must fight\nEscape or we'll die\nCows gathered around\n'Cause the steaks were so high"; dead=true)
________________________________
/ He mooed we must fight \
| Escape or we'll die |
| Cows gathered around |
\ 'Cause the steaks were so high /
--------------------------------
\ ^__^
\ (xx)\_______
(__)\ )\/\
U ||----w |
|| ||
```
## Contributing
If you find a bug in Cowsay.jl, please [file an issue]. I will not be accepting
any requests for new cowfiles in this repo, though.
[file an issue]: https://github.com/MillironX/Cowsay.jl/issues
[julia repl]: https://docs.julialang.org/en/v1/manual/getting-started/
[pkg mode]: https://docs.julialang.org/en/v1/stdlib/Pkg/
[the documentation]: https://millironx.com/Cowsay.jl/stable
[unexported Cowfiles]: https://millironx.com/Cowsay.jl/stable/cows/
[unexported cowfiles]: https://millironx.com/Cowsay.jl/stable/cows/

@ -1,97 +0,0 @@
# This file is machine-generated - editing it directly is not advised
[[ANSIColoredPrinters]]
git-tree-sha1 = "574baf8110975760d391c710b6341da1afa48d8c"
uuid = "a4c015fc-c6ff-483c-b24f-f7ea428134e9"
version = "0.0.1"
[[Base64]]
uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
[[Cowsay]]
path = "/home/tchristensen/src/cowsay"
uuid = "b6370f49-8ad1-4651-ad9e-3639b35da0e9"
version = "0.1.0"
[[Dates]]
deps = ["Printf"]
uuid = "ade2ca70-3891-5945-98fb-dc099432e06a"
[[DocStringExtensions]]
deps = ["LibGit2"]
git-tree-sha1 = "b19534d1895d702889b219c382a6e18010797f0b"
uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
version = "0.8.6"
[[Documenter]]
deps = ["ANSIColoredPrinters", "Base64", "Dates", "DocStringExtensions", "IOCapture", "InteractiveUtils", "JSON", "LibGit2", "Logging", "Markdown", "REPL", "Test", "Unicode"]
git-tree-sha1 = "f425293f7e0acaf9144de6d731772de156676233"
uuid = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
version = "0.27.10"
[[IOCapture]]
deps = ["Logging", "Random"]
git-tree-sha1 = "f7be53659ab06ddc986428d3a9dcc95f6fa6705a"
uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89"
version = "0.2.2"
[[InteractiveUtils]]
deps = ["Markdown"]
uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
[[JSON]]
deps = ["Dates", "Mmap", "Parsers", "Unicode"]
git-tree-sha1 = "8076680b162ada2a031f707ac7b4953e30667a37"
uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
version = "0.21.2"
[[LibGit2]]
deps = ["Base64", "NetworkOptions", "Printf", "SHA"]
uuid = "76f85450-5226-5b5a-8eaa-529ad045b433"
[[Logging]]
uuid = "56ddb016-857b-54e1-b83d-db4d58db5568"
[[Markdown]]
deps = ["Base64"]
uuid = "d6f4376e-aef5-505a-96c1-9c027394607a"
[[Mmap]]
uuid = "a63ad114-7e13-5084-954f-fe012c677804"
[[NetworkOptions]]
uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908"
[[Parsers]]
deps = ["Dates"]
git-tree-sha1 = "ae4bbcadb2906ccc085cf52ac286dc1377dceccc"
uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0"
version = "2.1.2"
[[Printf]]
deps = ["Unicode"]
uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7"
[[REPL]]
deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"]
uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"
[[Random]]
deps = ["Serialization"]
uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
[[SHA]]
uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce"
[[Serialization]]
uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
[[Sockets]]
uuid = "6462fe0b-24de-5631-8697-dd941f90decc"
[[Test]]
deps = ["InteractiveUtils", "Logging", "Random", "Serialization"]
uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
[[Unicode]]
uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"

@ -6,11 +6,11 @@ DocMeta.setdocmeta!(Cowsay, :DocTestSetup, :(using Cowsay); recursive=true)
makedocs(;
modules=[Cowsay],
authors="Thomas A. Christensen II <25492070+MillironX@users.noreply.github.com> and contributors",
repo="https://github.com/MillironX/cowsay.jl/blob/{commit}{path}#{line}",
sitename="cowsay.jl",
repo="https://code.millironx.com/millironx/Cowsay.jl/blob/{commit}{path}#{line}",
sitename="Cowsay.jl",
format=Documenter.HTML(;
prettyurls=get(ENV, "CI", "false") == "true",
canonical="https://millironx.com/Cowsay.jl",
canonical="https://cowsay-jl.millironx.com/",
assets=String[],
),
pages=[
@ -21,6 +21,6 @@ makedocs(;
)
deploydocs(;
repo="github.com/MillironX/Cowsay.jl",
repo="code.millironx.com/millironx/Cowsay.jl",
devbranch="master",
)

@ -56,7 +56,18 @@ Print an ASCII picture of a cow saying/thinking `message`
cowfiles support this, though.
- `tongue::AbstractString=" "`: A two-character string to be drawn in for the tongue. Not
all cowfiles support this.
- `wrap::Int`=40: The number of characters at which to wrap `message` to a new line
- `wrap::Int=40`: The number of characters at which to wrap `message` to a new line
- `nowrap::Bool=false`: Don't perform text wrapping on `message`
## Cow appearance Keywords
- `borg::Bool=false`: Initiates Borg mode
- `dead::Bool=false`: Causes the cow to appear dead
- `greedy::Bool=false`: Invokes greedy mode
- `paranoid::Bool=false`: Causes a state of paranoia to come over the cow
- `stoned::Bool=false`: Makes the cow appear thoroughly stoned
- `tired::Bool=false`: Yields a tired cow
- `wired::Bool=false`: Somewhat the opposite of `tired`, and initiates wired mode
- `young::Bool=false`: Brings on the cow's youthful appearance
# Example
```jldoctest
@ -81,12 +92,12 @@ julia> cowthink("Have I mooed today?")
|| ||
```
"""
function cowsay(message::AbstractString; cow=default, eyes="oo", tongue=" ", wrap=40)
cowsay(stdout, message, cow=cow, eyes=eyes, tongue=tongue, wrap=wrap)
function cowsay(message::AbstractString; kwargs...)
cowsay(stdout, message; kwargs...)
end
function cowsay(io::IO, message::AbstractString; cow=default, eyes="oo", tongue=" ", wrap=40)
println(io, cowsaid(message, cow=cow, eyes=eyes, tongue=tongue, wrap=wrap))
function cowsay(io::IO, message::AbstractString; kwargs...)
println(io, cowsaid(message; kwargs...))
end
"""
@ -96,12 +107,12 @@ Print an ASCII picture of a cow thinking `message`
See [`cowsay`](@ref)
"""
function cowthink(message::AbstractString; cow=default, eyes="oo", tongue=" ", wrap=40)
cowthink(stdout, message, cow=cow, eyes=eyes, tongue=tongue, wrap=wrap)
function cowthink(message::AbstractString; kwargs...)
cowthink(stdout, message; kwargs...)
end
function cowthink(io::IO, message::AbstractString; cow=default, eyes="oo", tongue=" ", wrap=40)
println(io, cowthunk(message, cow=cow, eyes=eyes, tongue=tongue, wrap=wrap))
function cowthink(io::IO, message::AbstractString; kwargs...)
println(io, cowthunk(message; kwargs...))
end
"""
@ -123,9 +134,8 @@ julia> cowthunk("Have I mooed today?")
" _____________________\\n( Have I mooed today? )\\n ---------------------\\n o ^__^\\n o (oo)\\\\_______\\n (__)\\\\ )\\\\/\\\\\\n ||----w |\\n || ||\\n"
```
"""
function cowsaid(message::AbstractString; cow=default, eyes="oo", tongue=" ", wrap=40)
balloon = sayballoon(TextWrap.wrap(message, width=wrap))
return string(balloon, cow(eyes=eyes, tongue=tongue))
function cowsaid(message::AbstractString; kwargs...)
return cowmoo(message, :say; kwargs...)
end
"""
@ -135,9 +145,110 @@ Construct art of a cow thinking `message`.
See [`cowsaid`](@ref) and [`cowsay`](@ref)
"""
function cowthunk(message::AbstractString; cow=default, eyes="oo", tongue=" ", wrap=40)
balloon = thinkballoon(TextWrap.wrap(message, width=wrap))
return string(balloon, cow(eyes=eyes, tongue=tongue, thoughts="o"))
function cowthunk(message::AbstractString; kwargs...)
return cowmoo(message, :think; kwargs...)
end
"""
cowmoo(message::AbstractString, mode, kwargs...)
Converts `message` into either saying or thinking art based on the value of `mode`. All of
the default values for `kwargs` for pretty much every other function live here. See
[`cowsay`](@ref) for their descriptions.
"""
function cowmoo(message::AbstractString, mode; kwargs...)
cow = dict_or_default(kwargs, :cow, Cowsay.default)
eyes = dict_or_default(kwargs, :eyes, "oo")
tongue = dict_or_default(kwargs, :tongue, " ")
wrap = dict_or_default(kwargs, :wrap, 40)
nowrap = dict_or_default(kwargs, :nowrap, false)
eyes, tongue = construct_face!(eyes, tongue; kwargs...)
# Default to 'say' mode
if mode == :think
balloon = thinkballoon
thoughts = "o"
else
balloon = sayballoon
thoughts = "\\"
end
wrapped_message = !nowrap ? TextWrap.wrap(message, width=wrap, replace_whitespace=false) : message
speechbubble = balloon(wrapped_message)
return string(speechbubble, cow(eyes=eyes, tongue=tongue, thoughts=thoughts))
end
function construct_face!(eyes, tongue; kwargs...)
borg = dict_or_default(kwargs, :borg, false)
dead = dict_or_default(kwargs, :dead, false)
greedy = dict_or_default(kwargs, :greedy, false)
paranoid = dict_or_default(kwargs, :paranoid, false)
stoned = dict_or_default(kwargs, :stoned, false)
tired = dict_or_default(kwargs, :tired, false)
wired = dict_or_default(kwargs, :wired, false)
young = dict_or_default(kwargs, :young, false)
if borg
eyes = "=="
end
if dead
eyes = "xx"
tongue = "U "
end
if greedy
eyes = "\$\$"
end
if paranoid
eyes = "@@"
end
if stoned
eyes = "**"
tongue = "U "
end
if tired
eyes = "--"
end
if wired
eyes = "OO"
end
if young
eyes = ".."
end
return eyes, tongue
end
"""
dict_or_default(dict, key, value)
If `key` is present in `dict`, then return `dict[key]`, otherwise return `value`
# Example
```jldoctest
julia> dict = Dict(:holstein => "lotsa milk", :jersey => "butterfat", :shorthorn => "worthless");
julia> Cowsay.dict_or_default(dict, :holstein, "fluid")
"lotsa milk"
julia> Cowsay.dict_or_default(dict, :brown_swiss, "cheese")
"cheese"
```
"""
function dict_or_default(dict, key, value)
if haskey(dict, key)
return dict[key]
else
return value
end
end
"""
@ -173,7 +284,7 @@ function sayballoon(message::AbstractString)
" \\\n"
)
if nlines > 2
for i=2:nlines-1
for i = 2:nlines-1
balloon = string(
balloon,
"| ",
@ -210,25 +321,25 @@ function thinkballoon(message::AbstractString)
linelength = max(length.(messagelines)...)
paddinglength = linelength + 2
balloon = string(
" ",
repeat("_", paddinglength),
"\n"
)
for i in 1:nlines
balloon = string(
balloon,
"( ",
rpad(messagelines[i], linelength),
" )\n"
)
end #for
balloon = string(
" ",
repeat("_", paddinglength),
"\n"
)
for i in 1:nlines
balloon = string(
balloon,
" ",
repeat("-", paddinglength),
"\n"
"( ",
rpad(messagelines[i], linelength),
" )\n"
)
end #for
balloon = string(
balloon,
" ",
repeat("-", paddinglength),
"\n"
)
return balloon
end #function

@ -25,4 +25,28 @@ DocMeta.setdocmeta!(Cowsay, :DocTestSetup, :(using Cowsay); recursive=true)
# Cowthink with io redirection
@test_warn cowthunk("Moo") cowthink(stderr, "Moo")
end
@testset "Word Wrapping" begin
# Long text, default wrap
@test cowsaid("Rollin' down a long highway out through New Mexico driftin' down to Santa Fe to ride a bull in a rodeo") == " _________________________________________\n/ Rollin' down a long highway out through \\\n| New Mexico driftin' down to Santa Fe to |\n\\ ride a bull in a rodeo /\n -----------------------------------------\n \\ ^__^\n \\ (oo)\\_______\n (__)\\ )\\/\\\n ||----w |\n || ||\n"
# Long text, no wrap
@test cowsaid("Rollin' down a long highway out through New Mexico driftin' down to Santa Fe to ride a bull in a rodeo", nowrap=true) == " ________________________________________________________________________________________________________\n< Rollin' down a long highway out through New Mexico driftin' down to Santa Fe to ride a bull in a rodeo >\n --------------------------------------------------------------------------------------------------------\n \\ ^__^\n \\ (oo)\\_______\n (__)\\ )\\/\\\n ||----w |\n || ||\n"
# Long text, conflicting wrap instructions (nowrap should win)
@test cowsaid("Rollin' down a long highway out through New Mexico driftin' down to Santa Fe to ride a bull in a rodeo", wrap=80, nowrap=true) == " ________________________________________________________________________________________________________\n< Rollin' down a long highway out through New Mexico driftin' down to Santa Fe to ride a bull in a rodeo >\n --------------------------------------------------------------------------------------------------------\n \\ ^__^\n \\ (oo)\\_______\n (__)\\ )\\/\\\n ||----w |\n || ||\n"
# Long text, different wrap amount
@test cowsaid("Rollin' down a long highway out through New Mexico driftin' down to Santa Fe to ride a bull in a rodeo", wrap=80) == " _________________________________________________________________________________\n/ Rollin' down a long highway out through New Mexico driftin' down to Santa Fe to \\\n\\ ride a bull in a rodeo /\n ---------------------------------------------------------------------------------\n \\ ^__^\n \\ (oo)\\_______\n (__)\\ )\\/\\\n ||----w |\n || ||\n"
end
@testset "Cow Modes" begin
@test Cowsay.construct_face!("oo", " ") == ("oo", " ")
@test Cowsay.construct_face!("oo", " "; borg=true) == ("==", " ")
@test Cowsay.construct_face!("oo", " "; dead=true) == ("xx", "U ")
@test Cowsay.construct_face!("oo", " "; greedy=true) == ("\$\$", " ")
@test Cowsay.construct_face!("oo", " "; paranoid=true) == ("@@", " ")
@test Cowsay.construct_face!("oo", " "; stoned=true) == ("**", "U ")
@test Cowsay.construct_face!("oo", " "; tired=true) == ("--", " ")
@test Cowsay.construct_face!("oo", " "; wired=true) == ("OO", " ")
@test Cowsay.construct_face!("oo", " "; young=true) == ("..", " ")
end
end

Loading…
Cancel
Save