mirror of https://github.com/aldy505/asciitxt.git
feat: init
This commit is contained in:
commit
63062cab90
|
@ -0,0 +1,92 @@
|
||||||
|
> [conventional-changelog](https://github.com/ajoslin/conventional-changelog) [angular](https://github.com/angular/angular) preset
|
||||||
|
|
||||||
|
## Angular Convention
|
||||||
|
|
||||||
|
Angular's [commit message guidelines](https://github.com/angular/angular/blob/master/CONTRIBUTING.md#commit).
|
||||||
|
|
||||||
|
### Examples
|
||||||
|
|
||||||
|
Appears under "Features" header, pencil subheader:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
feat(pencil): add 'graphiteWidth' option
|
||||||
|
```
|
||||||
|
|
||||||
|
Appears under "Bug Fixes" header, graphite subheader, with a link to issue #28:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
fix(graphite): stop graphite breaking when width < 0.1
|
||||||
|
|
||||||
|
Closes #28
|
||||||
|
```
|
||||||
|
|
||||||
|
Appears under "Performance Improvements" header, and under "Breaking Changes" with the breaking change explanation:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
perf(pencil): remove graphiteWidth option
|
||||||
|
|
||||||
|
BREAKING CHANGE: The graphiteWidth option has been removed. The default graphite width of 10mm is always used for performance reason.
|
||||||
|
```
|
||||||
|
|
||||||
|
The following commit and commit `667ecc1` do not appear in the changelog if they are under the same release. If not, the revert commit appears under the "Reverts" header.
|
||||||
|
|
||||||
|
```xml
|
||||||
|
revert: feat(pencil): add 'graphiteWidth' option
|
||||||
|
|
||||||
|
This reverts commit 667ecc1654a317a13331b17617d973392f415f02.
|
||||||
|
```
|
||||||
|
|
||||||
|
### Commit Message Format
|
||||||
|
|
||||||
|
A commit message consists of a **header**, **body** and **footer**. The header has a **type**, **scope** and **subject**:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<type>(<scope>): <subject>
|
||||||
|
<BLANK LINE>
|
||||||
|
<body>
|
||||||
|
<BLANK LINE>
|
||||||
|
<footer>
|
||||||
|
```
|
||||||
|
|
||||||
|
The **header** is mandatory and the **scope** of the header is optional.
|
||||||
|
|
||||||
|
### Revert
|
||||||
|
|
||||||
|
If the commit reverts a previous commit, it should begin with `revert: `, followed by the header of the reverted commit. In the body it should say: `This reverts commit <hash>.`, where the hash is the SHA of the commit being reverted.
|
||||||
|
|
||||||
|
### Type
|
||||||
|
|
||||||
|
If the prefix is `feat`, `fix` or `perf`, it will appear in the changelog. However if there is any [BREAKING CHANGE](#footer), the commit will always appear in the changelog.
|
||||||
|
|
||||||
|
Other prefixes are up to your discretion. Suggested prefixes are `build`, `ci`, `docs` ,`style`, `refactor`, and `test` for non-changelog related tasks.
|
||||||
|
|
||||||
|
Details regarding these types can be found in the official [Angular Contributing Guidelines](https://github.com/angular/angular/blob/master/CONTRIBUTING.md#type).
|
||||||
|
|
||||||
|
### Scope
|
||||||
|
|
||||||
|
The scope could be anything specifying place of the commit change. For example `$location`,
|
||||||
|
`$browser`, `$compile`, `$rootScope`, `ngHref`, `ngClick`, `ngView`, etc...
|
||||||
|
|
||||||
|
### Subject
|
||||||
|
|
||||||
|
The subject contains succinct description of the change:
|
||||||
|
|
||||||
|
* use the imperative, present tense: "change" not "changed" nor "changes"
|
||||||
|
* don't capitalize first letter
|
||||||
|
* no dot (.) at the end
|
||||||
|
|
||||||
|
### Body
|
||||||
|
|
||||||
|
Just as in the **subject**, use the imperative, present tense: "change" not "changed" nor "changes".
|
||||||
|
The body should include the motivation for the change and contrast this with previous behavior.
|
||||||
|
|
||||||
|
### Footer
|
||||||
|
|
||||||
|
The footer should contain any information about **Breaking Changes** and is also the place to
|
||||||
|
reference GitHub issues that this commit **Closes**.
|
||||||
|
|
||||||
|
**Breaking Changes** should start with the word `BREAKING CHANGE:` with a space or two newlines. The rest of the commit message is then used for this.
|
||||||
|
|
||||||
|
A detailed explanation can be found in this [document][commit-message-format].
|
||||||
|
|
||||||
|
[commit-message-format]: https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#
|
|
@ -0,0 +1,178 @@
|
||||||
|
/**
|
||||||
|
* A simple codegen to generate the array of array letter
|
||||||
|
*/
|
||||||
|
const fs = require('fs/promises');
|
||||||
|
|
||||||
|
const letters =
|
||||||
|
[
|
||||||
|
`
|
||||||
|
__ _
|
||||||
|
/ _\` |
|
||||||
|
| (_| |
|
||||||
|
\\__,_|
|
||||||
|
`,
|
||||||
|
` _
|
||||||
|
| |__
|
||||||
|
| '_ \\
|
||||||
|
| |_) |
|
||||||
|
|_.__/
|
||||||
|
`,
|
||||||
|
`
|
||||||
|
___
|
||||||
|
/ __|
|
||||||
|
| (__
|
||||||
|
\\___|
|
||||||
|
`,
|
||||||
|
` _
|
||||||
|
__| |
|
||||||
|
/ _ |
|
||||||
|
| (_| |
|
||||||
|
\\__,_|
|
||||||
|
`,
|
||||||
|
`
|
||||||
|
___
|
||||||
|
/ _ \\
|
||||||
|
| __/
|
||||||
|
\\___|
|
||||||
|
`,
|
||||||
|
` __
|
||||||
|
/ _|
|
||||||
|
| |_
|
||||||
|
| _|
|
||||||
|
|_|
|
||||||
|
`,
|
||||||
|
`
|
||||||
|
__ _
|
||||||
|
/ _\` |
|
||||||
|
| (_| |
|
||||||
|
\\__, |
|
||||||
|
|___/ `,
|
||||||
|
` _
|
||||||
|
| |__
|
||||||
|
| '_ \\
|
||||||
|
| | | |
|
||||||
|
|_| |_|
|
||||||
|
`,
|
||||||
|
` _
|
||||||
|
(_)
|
||||||
|
| |
|
||||||
|
| |
|
||||||
|
|_|
|
||||||
|
`,
|
||||||
|
` _
|
||||||
|
(_)
|
||||||
|
| |
|
||||||
|
| |
|
||||||
|
_/ |
|
||||||
|
|__/ `,
|
||||||
|
` _
|
||||||
|
| | __
|
||||||
|
| |/ /
|
||||||
|
| <
|
||||||
|
|_|\\_\\
|
||||||
|
`,
|
||||||
|
` _
|
||||||
|
| |
|
||||||
|
| |
|
||||||
|
| |
|
||||||
|
|_|
|
||||||
|
`,
|
||||||
|
`
|
||||||
|
_ __ ___
|
||||||
|
| '_ \` _ \\
|
||||||
|
| | | | | |
|
||||||
|
|_| |_| |_|
|
||||||
|
`,
|
||||||
|
`
|
||||||
|
_ __
|
||||||
|
| '_ \
|
||||||
|
| | | |
|
||||||
|
|_| |_|
|
||||||
|
`,
|
||||||
|
`
|
||||||
|
___
|
||||||
|
/ _ \
|
||||||
|
| (_) |
|
||||||
|
\___/
|
||||||
|
`,
|
||||||
|
`
|
||||||
|
_ __
|
||||||
|
| '_ \
|
||||||
|
| |_) |
|
||||||
|
| .__/
|
||||||
|
|_| `,
|
||||||
|
`
|
||||||
|
__ _
|
||||||
|
/ _\` |
|
||||||
|
| (_| |
|
||||||
|
\\__, |
|
||||||
|
|_|`,
|
||||||
|
`
|
||||||
|
_ __
|
||||||
|
| '__|
|
||||||
|
| |
|
||||||
|
|_|
|
||||||
|
`,
|
||||||
|
`
|
||||||
|
___
|
||||||
|
/ __|
|
||||||
|
\\__ \\
|
||||||
|
|___/
|
||||||
|
`,
|
||||||
|
` _
|
||||||
|
| |_
|
||||||
|
| __|
|
||||||
|
| |_
|
||||||
|
\\__|
|
||||||
|
`,
|
||||||
|
`
|
||||||
|
_ _
|
||||||
|
| | | |
|
||||||
|
| |_| |
|
||||||
|
\\__,_|
|
||||||
|
`,
|
||||||
|
`
|
||||||
|
__ __
|
||||||
|
\\ \\ / /
|
||||||
|
\\ V /
|
||||||
|
\\_/
|
||||||
|
`,
|
||||||
|
`
|
||||||
|
__ __
|
||||||
|
\\ \\ /\\ / /
|
||||||
|
\\ V V /
|
||||||
|
\\_/\\_/
|
||||||
|
`,
|
||||||
|
`
|
||||||
|
__ __
|
||||||
|
\\ \\/ /
|
||||||
|
> <
|
||||||
|
/_/\\_\\
|
||||||
|
`,
|
||||||
|
`
|
||||||
|
_ _
|
||||||
|
| | | |
|
||||||
|
| |_| |
|
||||||
|
\\__, |
|
||||||
|
|___/ `,
|
||||||
|
`
|
||||||
|
____
|
||||||
|
|_ /
|
||||||
|
/ /
|
||||||
|
/___|
|
||||||
|
`,
|
||||||
|
]
|
||||||
|
|
||||||
|
;(async () => {
|
||||||
|
let output = ''
|
||||||
|
for (const letter of letters) {
|
||||||
|
let split = letter.split('\n');
|
||||||
|
output += `case "":\n`
|
||||||
|
output += `return []string{\n`
|
||||||
|
for (const s of split) {
|
||||||
|
output += '`'+s+'`,\n'
|
||||||
|
}
|
||||||
|
output += "}\n";
|
||||||
|
}
|
||||||
|
await fs.writeFile('./../generated.go', output, { encoding: 'utf-8' });
|
||||||
|
})();
|
|
@ -0,0 +1,41 @@
|
||||||
|
name: CI
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-test:
|
||||||
|
name: Build test
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||||
|
go-version: [1.16.x, 1.17.x]
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v2
|
||||||
|
with:
|
||||||
|
go-version: ${{ matrix.go-version }}
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: go build ./
|
||||||
|
coverage:
|
||||||
|
name: Coverage
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 10
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v2
|
||||||
|
with:
|
||||||
|
go-version: 1.17.x
|
||||||
|
|
||||||
|
- name: Run coverage
|
||||||
|
run: go test -v -race -coverprofile=coverage.out -covermode=atomic -failfast ./...
|
||||||
|
|
||||||
|
- name: Upload coverage to Codecov
|
||||||
|
uses: codecov/codecov-action@v1
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Binaries for programs and plugins
|
||||||
|
*.exe
|
||||||
|
*.exe~
|
||||||
|
*.dll
|
||||||
|
*.so
|
||||||
|
*.dylib
|
||||||
|
|
||||||
|
# Test binary, built with `go test -c`
|
||||||
|
*.test
|
||||||
|
|
||||||
|
# Output of the go coverage tool, specifically when used with LiteIDE
|
||||||
|
*.out
|
||||||
|
|
||||||
|
# Dependency directories (remove the comment below to include it)
|
||||||
|
# vendor/
|
||||||
|
|
||||||
|
### Go Patch ###
|
||||||
|
/vendor/
|
||||||
|
/Godeps/
|
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2021 Reinaldy Rafli <aldy505@tutanota.com>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
|
@ -0,0 +1,46 @@
|
||||||
|
# ASCIITXT
|
||||||
|
|
||||||
|
```
|
||||||
|
Just a simple utilities for creating...
|
||||||
|
|
||||||
|
_____ _____ __ __ _____
|
||||||
|
|_ _| | ____| \ \/ / |_ _|
|
||||||
|
| | | _| \ / | |
|
||||||
|
| | | |___ / \ | |
|
||||||
|
|_| |_____| /_/\_\ |_|
|
||||||
|
|
||||||
|
_ ___ _ __ _____
|
||||||
|
| | |_ _| | |/ / | ____|
|
||||||
|
| | | | | ' / | _|
|
||||||
|
| |___ | | | . \ | |___
|
||||||
|
|_____| |___| |_|\_\ |_____|
|
||||||
|
|
||||||
|
_____ _ _ ___ ____
|
||||||
|
|_ _| | | | | |_ _| / ___|
|
||||||
|
| | | |_| | | | \___ \
|
||||||
|
| | | _ | | | ___) |
|
||||||
|
|_| |_| |_| |___| |____/
|
||||||
|
|
||||||
|
The usage is pretty straight forward, on your Go file:
|
||||||
|
|
||||||
|
import "github.com/aldy505/asciitxt"
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
output := asciitxt.New("Hello world", asciitxt.Standard)
|
||||||
|
|
||||||
|
// or
|
||||||
|
|
||||||
|
output = asciitxt.WithConfig("Hello world", &asciitxt.Config{
|
||||||
|
Style: asciitxt.Standard,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
What's the asciitxt.Standard, you asked.
|
||||||
|
|
||||||
|
Well, I thought it would be nice if we could have more than one style.
|
||||||
|
But, for now that's a long term plan.
|
||||||
|
|
||||||
|
My current goal is to support most unicode letters and signs.
|
||||||
|
|
||||||
|
Licensed under MIT License. See the LICENSE file.
|
||||||
|
```
|
|
@ -0,0 +1,67 @@
|
||||||
|
package asciitxt
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Style int
|
||||||
|
|
||||||
|
const (
|
||||||
|
Standard Style = iota + 1
|
||||||
|
)
|
||||||
|
|
||||||
|
type Config struct {
|
||||||
|
Style Style
|
||||||
|
}
|
||||||
|
|
||||||
|
func New(txt string) string {
|
||||||
|
return WithConfig(txt, Config{Style: Standard})
|
||||||
|
}
|
||||||
|
|
||||||
|
func WithConfig(txt string, config Config) string {
|
||||||
|
if config.Style == 0 {
|
||||||
|
config.Style = Standard
|
||||||
|
}
|
||||||
|
|
||||||
|
letters := strings.Split(txt, "")
|
||||||
|
var arr [][]string
|
||||||
|
llen := getStyleLength(config.Style)
|
||||||
|
|
||||||
|
for i := 0; i < len(letters); i++ {
|
||||||
|
var temp []string
|
||||||
|
letter := getStyleLetter(config.Style, letters[i])
|
||||||
|
for j := 0; j < len(letter); j++ {
|
||||||
|
temp = append(temp, letter[j])
|
||||||
|
}
|
||||||
|
arr = append(arr, temp)
|
||||||
|
}
|
||||||
|
|
||||||
|
var output string
|
||||||
|
|
||||||
|
for k := 0; k < llen; k++ {
|
||||||
|
for l := 0; l < len(arr); l++ {
|
||||||
|
output += arr[l][k]
|
||||||
|
}
|
||||||
|
output += "\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
return output
|
||||||
|
}
|
||||||
|
|
||||||
|
func getStyleLength(style Style) int {
|
||||||
|
switch style {
|
||||||
|
case Standard:
|
||||||
|
return StandardLength
|
||||||
|
default:
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func getStyleLetter(style Style, letter string) []string {
|
||||||
|
switch style {
|
||||||
|
case Standard:
|
||||||
|
return getStandardLetter(letter)
|
||||||
|
default:
|
||||||
|
panic("invalid style was given")
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
package asciitxt_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/aldy505/asciitxt"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestNew(t *testing.T) {
|
||||||
|
s := asciitxt.New("THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG 0123456789 _ the quick brown fox jumps over the lazy dog")
|
||||||
|
|
||||||
|
if s == "" {
|
||||||
|
t.Error("should not be empty")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
func TestWithConfig(t *testing.T) {
|
||||||
|
s := asciitxt.WithConfig("THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG 0123456789 _ the quick brown fox jumps over the lazy dog", asciitxt.Config{})
|
||||||
|
|
||||||
|
if s == "" {
|
||||||
|
t.Error("should not be empty")
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,585 @@
|
||||||
|
package asciitxt
|
||||||
|
|
||||||
|
const StandardLength = 6
|
||||||
|
|
||||||
|
func getStandardLetter(letter string) []string {
|
||||||
|
switch letter {
|
||||||
|
case "A":
|
||||||
|
return []string{
|
||||||
|
` _ `,
|
||||||
|
` / \ `,
|
||||||
|
` / _ \ `,
|
||||||
|
` / ___ \ `,
|
||||||
|
`/_/ \_\`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "B":
|
||||||
|
return []string{
|
||||||
|
` ____ `,
|
||||||
|
`| __ ) `,
|
||||||
|
`| _ \ `,
|
||||||
|
`| |_) |`,
|
||||||
|
`|____/ `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "C":
|
||||||
|
return []string{
|
||||||
|
` ____ `,
|
||||||
|
` / ___|`,
|
||||||
|
`| | `,
|
||||||
|
`| |___ `,
|
||||||
|
` \____|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "D":
|
||||||
|
return []string{
|
||||||
|
` ____ `,
|
||||||
|
`| _ \ `,
|
||||||
|
`| | | |`,
|
||||||
|
`| |_| |`,
|
||||||
|
`|____/ `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "E":
|
||||||
|
return []string{
|
||||||
|
` _____ `,
|
||||||
|
` | ____|`,
|
||||||
|
` | _| `,
|
||||||
|
` | |___ `,
|
||||||
|
` |_____|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "F":
|
||||||
|
return []string{
|
||||||
|
` _____ `,
|
||||||
|
`| ___|`,
|
||||||
|
`| |_ `,
|
||||||
|
`| _| `,
|
||||||
|
`|_| `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "G":
|
||||||
|
return []string{
|
||||||
|
` ____ `,
|
||||||
|
` / ___|`,
|
||||||
|
`| | _ `,
|
||||||
|
`| |_| |`,
|
||||||
|
` \____|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "H":
|
||||||
|
return []string{
|
||||||
|
` _ _ `,
|
||||||
|
`| | | |`,
|
||||||
|
`| |_| |`,
|
||||||
|
`| _ |`,
|
||||||
|
`|_| |_|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "I":
|
||||||
|
return []string{
|
||||||
|
` ___ `,
|
||||||
|
`|_ _|`,
|
||||||
|
` | | `,
|
||||||
|
` | | `,
|
||||||
|
`|___|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "J":
|
||||||
|
return []string{
|
||||||
|
` _ `,
|
||||||
|
` | |`,
|
||||||
|
` _ | |`,
|
||||||
|
`| |_| |`,
|
||||||
|
` \___/ `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "K":
|
||||||
|
return []string{
|
||||||
|
` _ __`,
|
||||||
|
`| |/ /`,
|
||||||
|
`| ' / `,
|
||||||
|
`| . \ `,
|
||||||
|
`|_|\_\`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "L":
|
||||||
|
return []string{
|
||||||
|
` _ `,
|
||||||
|
`| | `,
|
||||||
|
`| | `,
|
||||||
|
`| |___ `,
|
||||||
|
`|_____|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "M":
|
||||||
|
return []string{
|
||||||
|
` __ __ `,
|
||||||
|
`| \/ |`,
|
||||||
|
`| |\/| |`,
|
||||||
|
`| | | |`,
|
||||||
|
`|_| |_|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "N":
|
||||||
|
return []string{
|
||||||
|
` _ _ `,
|
||||||
|
`| \ | |`,
|
||||||
|
`| \| |`,
|
||||||
|
`| |\ |`,
|
||||||
|
`|_| \_|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "O":
|
||||||
|
return []string{
|
||||||
|
` ___ `,
|
||||||
|
` / _ \ `,
|
||||||
|
`| | | |`,
|
||||||
|
`| |_| |`,
|
||||||
|
` \___/ `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "P":
|
||||||
|
return []string{
|
||||||
|
` ____ `,
|
||||||
|
`| _ \ `,
|
||||||
|
`| |_) |`,
|
||||||
|
`| __/ `,
|
||||||
|
`|_| `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "Q":
|
||||||
|
return []string{
|
||||||
|
` ___ `,
|
||||||
|
` / _ \ `,
|
||||||
|
`| | | |`,
|
||||||
|
`| |_| |`,
|
||||||
|
` \__\_\`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "R":
|
||||||
|
return []string{
|
||||||
|
` ____ `,
|
||||||
|
`| _ \ `,
|
||||||
|
`| |_) |`,
|
||||||
|
`| _ < `,
|
||||||
|
`|_| \_\`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "S":
|
||||||
|
return []string{
|
||||||
|
` ____ `,
|
||||||
|
`/ ___| `,
|
||||||
|
`\___ \ `,
|
||||||
|
` ___) |`,
|
||||||
|
`|____/ `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "T":
|
||||||
|
return []string{
|
||||||
|
` _____ `,
|
||||||
|
`|_ _|`,
|
||||||
|
` | | `,
|
||||||
|
` | | `,
|
||||||
|
` |_| `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "U":
|
||||||
|
return []string{
|
||||||
|
` _ _ `,
|
||||||
|
`| | | |`,
|
||||||
|
`| | | |`,
|
||||||
|
`| |_| |`,
|
||||||
|
` \___/ `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "V":
|
||||||
|
return []string{
|
||||||
|
`__ __`,
|
||||||
|
`\ \ / /`,
|
||||||
|
` \ \ / / `,
|
||||||
|
` \ V / `,
|
||||||
|
` \_/ `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "W":
|
||||||
|
return []string{
|
||||||
|
`__ __`,
|
||||||
|
`\ \ / /`,
|
||||||
|
` \ \ /\ / / `,
|
||||||
|
` \ V V / `,
|
||||||
|
` \_/\_/ `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "X":
|
||||||
|
return []string{
|
||||||
|
`__ __`,
|
||||||
|
`\ \/ /`,
|
||||||
|
` \ / `,
|
||||||
|
` / \ `,
|
||||||
|
`/_/\_\`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "Y":
|
||||||
|
return []string{
|
||||||
|
`__ __`,
|
||||||
|
`\ \ / /`,
|
||||||
|
` \ V / `,
|
||||||
|
` | | `,
|
||||||
|
` |_| `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "Z":
|
||||||
|
return []string{
|
||||||
|
` _____`,
|
||||||
|
`|__ /`,
|
||||||
|
` / / `,
|
||||||
|
` / /_ `,
|
||||||
|
`/____|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "a":
|
||||||
|
return []string{
|
||||||
|
` `,
|
||||||
|
` __ _ `,
|
||||||
|
" / _` |",
|
||||||
|
`| (_| |`,
|
||||||
|
` \__,_|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "b":
|
||||||
|
return []string{
|
||||||
|
` _ `,
|
||||||
|
`| |__ `,
|
||||||
|
`| '_ \ `,
|
||||||
|
`| |_) |`,
|
||||||
|
`|_.__/ `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "c":
|
||||||
|
return []string{
|
||||||
|
` `,
|
||||||
|
` ___ `,
|
||||||
|
` / __|`,
|
||||||
|
`| (__ `,
|
||||||
|
` \___|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "d":
|
||||||
|
return []string{
|
||||||
|
` _ `,
|
||||||
|
` __| |`,
|
||||||
|
` / _ |`,
|
||||||
|
`| (_| |`,
|
||||||
|
` \__,_|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "e":
|
||||||
|
return []string{
|
||||||
|
` `,
|
||||||
|
` ___ `,
|
||||||
|
` / _ \`,
|
||||||
|
`| __/`,
|
||||||
|
` \___|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "f":
|
||||||
|
return []string{
|
||||||
|
` __ `,
|
||||||
|
` / _|`,
|
||||||
|
`| |_ `,
|
||||||
|
`| _|`,
|
||||||
|
`|_| `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "g":
|
||||||
|
return []string{
|
||||||
|
` `,
|
||||||
|
` __ _ `,
|
||||||
|
" / _` |",
|
||||||
|
`| (_| |`,
|
||||||
|
` \__, |`,
|
||||||
|
` |___/ `,
|
||||||
|
}
|
||||||
|
case "h":
|
||||||
|
return []string{
|
||||||
|
` _ `,
|
||||||
|
`| |__ `,
|
||||||
|
`| '_ \ `,
|
||||||
|
`| | | |`,
|
||||||
|
`|_| |_|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "i":
|
||||||
|
return []string{
|
||||||
|
` _ `,
|
||||||
|
`(_)`,
|
||||||
|
`| |`,
|
||||||
|
`| |`,
|
||||||
|
`|_|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "j":
|
||||||
|
return []string{
|
||||||
|
` _ `,
|
||||||
|
` (_)`,
|
||||||
|
` | |`,
|
||||||
|
` | |`,
|
||||||
|
` _/ |`,
|
||||||
|
`|__/ `,
|
||||||
|
}
|
||||||
|
case "k":
|
||||||
|
return []string{
|
||||||
|
` _ `,
|
||||||
|
`| | __`,
|
||||||
|
`| |/ /`,
|
||||||
|
`| < `,
|
||||||
|
`|_|\_\`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "l":
|
||||||
|
return []string{
|
||||||
|
` _ `,
|
||||||
|
`| |`,
|
||||||
|
`| |`,
|
||||||
|
`| |`,
|
||||||
|
`|_|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "m":
|
||||||
|
return []string{
|
||||||
|
` `,
|
||||||
|
` _ __ ___ `,
|
||||||
|
"| '_ ` _ \\ ",
|
||||||
|
`| | | | | |`,
|
||||||
|
`|_| |_| |_|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "n":
|
||||||
|
return []string{
|
||||||
|
` `,
|
||||||
|
` _ __ `,
|
||||||
|
`| '_ \`,
|
||||||
|
`| | | |`,
|
||||||
|
`|_| |_|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "o":
|
||||||
|
return []string{
|
||||||
|
` `,
|
||||||
|
` ___ `,
|
||||||
|
` / _ \ `,
|
||||||
|
`| (_) |`,
|
||||||
|
` \___/ `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "p":
|
||||||
|
return []string{
|
||||||
|
` `,
|
||||||
|
` _ __ `,
|
||||||
|
`| '_ \ `,
|
||||||
|
`| |_) |`,
|
||||||
|
`| .__/ `,
|
||||||
|
`|_| `,
|
||||||
|
}
|
||||||
|
case "q":
|
||||||
|
return []string{
|
||||||
|
` `,
|
||||||
|
` __ _ `,
|
||||||
|
" / _` |",
|
||||||
|
`| (_| |`,
|
||||||
|
` \__, |`,
|
||||||
|
` |_|`,
|
||||||
|
}
|
||||||
|
case "r":
|
||||||
|
return []string{
|
||||||
|
` `,
|
||||||
|
` _ __ `,
|
||||||
|
`| '__|`,
|
||||||
|
`| | `,
|
||||||
|
`|_| `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "s":
|
||||||
|
return []string{
|
||||||
|
` `,
|
||||||
|
` ___ `,
|
||||||
|
`/ __|`,
|
||||||
|
`\__ \`,
|
||||||
|
`|___/`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "t":
|
||||||
|
return []string{
|
||||||
|
` _ `,
|
||||||
|
`| |_ `,
|
||||||
|
`| __|`,
|
||||||
|
`| |_ `,
|
||||||
|
` \__|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "u":
|
||||||
|
return []string{
|
||||||
|
` `,
|
||||||
|
` _ _ `,
|
||||||
|
`| | | |`,
|
||||||
|
`| |_| |`,
|
||||||
|
` \__,_|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "v":
|
||||||
|
return []string{
|
||||||
|
` `,
|
||||||
|
`__ __`,
|
||||||
|
`\ \ / /`,
|
||||||
|
` \ V / `,
|
||||||
|
` \_/ `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "w":
|
||||||
|
return []string{
|
||||||
|
` `,
|
||||||
|
`__ __`,
|
||||||
|
`\ \ /\ / /`,
|
||||||
|
` \ V V / `,
|
||||||
|
` \_/\_/ `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "x":
|
||||||
|
return []string{
|
||||||
|
` `,
|
||||||
|
`__ __`,
|
||||||
|
`\ \/ /`,
|
||||||
|
` > < `,
|
||||||
|
`/_/\_\`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "y":
|
||||||
|
return []string{
|
||||||
|
` `,
|
||||||
|
` _ _ `,
|
||||||
|
`| | | |`,
|
||||||
|
`| |_| |`,
|
||||||
|
` \__, |`,
|
||||||
|
` |___/ `,
|
||||||
|
}
|
||||||
|
case "z":
|
||||||
|
return []string{
|
||||||
|
` `,
|
||||||
|
` ____`,
|
||||||
|
`|_ /`,
|
||||||
|
` / / `,
|
||||||
|
`/___|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
|
||||||
|
case "0":
|
||||||
|
return []string{
|
||||||
|
` ___ `,
|
||||||
|
` / _ \ `,
|
||||||
|
`| | | |`,
|
||||||
|
`| |_| |`,
|
||||||
|
` \___/ `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "1":
|
||||||
|
return []string{
|
||||||
|
` _ `,
|
||||||
|
`/ |`,
|
||||||
|
`| |`,
|
||||||
|
`| |`,
|
||||||
|
`|_|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "2":
|
||||||
|
return []string{
|
||||||
|
` ____ `,
|
||||||
|
`|___ \ `,
|
||||||
|
` __) |`,
|
||||||
|
` / __/ `,
|
||||||
|
`|_____|`,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "3":
|
||||||
|
return []string{
|
||||||
|
` _____ `,
|
||||||
|
`|___ / `,
|
||||||
|
` |_ \ `,
|
||||||
|
` ___) |`,
|
||||||
|
`|____/ `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "4":
|
||||||
|
return []string{
|
||||||
|
` _ _ `,
|
||||||
|
`| || | `,
|
||||||
|
`| || |_ `,
|
||||||
|
`|__ _|`,
|
||||||
|
` |_| `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "5":
|
||||||
|
return []string{
|
||||||
|
` ____ `,
|
||||||
|
`| ___| `,
|
||||||
|
`|___ \ `,
|
||||||
|
` ___) |`,
|
||||||
|
`|____/ `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "6":
|
||||||
|
return []string{
|
||||||
|
` __ `,
|
||||||
|
` / /_ `,
|
||||||
|
`| '_ \ `,
|
||||||
|
`| (_) |`,
|
||||||
|
` \___/ `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "7":
|
||||||
|
return []string{
|
||||||
|
` _____ `,
|
||||||
|
`|___ |`,
|
||||||
|
` / / `,
|
||||||
|
` / / `,
|
||||||
|
` /_/ `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "8":
|
||||||
|
return []string{
|
||||||
|
` ___ `,
|
||||||
|
` ( _ ) `,
|
||||||
|
` / _ \ `,
|
||||||
|
`| (_) |`,
|
||||||
|
` \___/ `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case "9":
|
||||||
|
return []string{
|
||||||
|
` ___ `,
|
||||||
|
` / _ \ `,
|
||||||
|
`| (_) |`,
|
||||||
|
` \__, |`,
|
||||||
|
` /_/ `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
case " ":
|
||||||
|
return []string{
|
||||||
|
` `,
|
||||||
|
` `,
|
||||||
|
` `,
|
||||||
|
` `,
|
||||||
|
` `,
|
||||||
|
` `,
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return []string{
|
||||||
|
``,
|
||||||
|
``,
|
||||||
|
``,
|
||||||
|
``,
|
||||||
|
``,
|
||||||
|
``,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue