# dntk
[![Travis CI](https://travis-ci.org/nnao45/dntk.svg?branch=master)](https://travis-ci.org/nnao45/dntk)
[![v2.2.0](https://img.shields.io/badge/package-v2.2.0-ff69b4.svg)](https://github.com/nnao45/dntk/releases/tag/v2.2.0)
[![crates](https://img.shields.io/badge/crates.io-v2.2.0-319e8c.svg)](https://crates.io/crates/dntk)
[![docker](https://img.shields.io/badge/docker-v2.2.0-blue.svg)](https://hub.docker.com/r/nnao45/dntk/tags)
[![license](http://img.shields.io/badge/license-MIT-red.svg?style=flat)](https://raw.githubusercontent.com/nnao45/dntk/master/LICENSE)
[![platform](https://img.shields.io/badge/platform-%20osx%20|%20linux%20|%20freebsd%20|%20windows-orange.svg)](https://github.com/nnao45/dntk/releases)
dntk is command line's multi-platform ***Interactive*** calculator, [GNU bc](https://www.gnu.org/software/bc/) wrapper.
![gjf](https://github.com/nnao45/naoGifRepo/blob/master/dntk_demo.gif)
✔︎ dntk means calculator in a japanese.
✔︎ dntk is gnu bc wrapper. so, syntax is equal to gnu bc. [learn syntax more](https://www.gnu.org/software/bc/manual/html_mono/bc.html)
✔︎ dntk is a NATIVE [The Rust Programming Language](https://rust-lang.org) application.
✔︎ dntk can move cursor, can delete char, can refresh buffer.
✔︎ dntk write color means,
color |
means |
cyan |
can caluclate & can output |
megenta |
can't caluclate, can't output |
yellow |
danger input char, output warning |
green |
clean buffer message |
## ***Current dntk's version:v2.2.1***
Download Page: https://github.com/nnao45/dntk/releases/latest
## Platform
dntk support multi-platform 😊 mac, linux, freebsd, and **windows**!!!
- i686-osx
- x86_64-osx
- i686-linux
- x86_64-linux
- i686-windows
- x86_64-windows
- i686-freebsd
- x86_64-freebsd
## Install
### Mac
```bash
$ brew install nnao45/dntk/dntk
```
### Linux
```bash
$ wget https://github.com/nnao45/dntk/releases/download/v2.2.0/dntk-v2.2.0-x86_64-unknown-linux-musl.zip
$ unzip dntk-v2.2.0-x86_64-unknown-linux-musl.zip
```
### Windows
```bash
$ wget https://github.com/nnao45/dntk/releases/download/v2.2.0/dntk-v2.2.0-x86_64-pc-windows-msvc.zip
$ unzip dntk-v2.2.0-x86_64-pc-windows-msvc.zip
```
### FreeBSD
```bash
$ wget https://github.com/nnao45/dntk/releases/download/v2.2.0/dntk-v2.2.0-x86_64-unknown-freebsd.zip
$ unzip dntk-v2.2.0-x86_64-unknown-freebsd.zip
```
### Cargo
```bash
$ cargo install dntk
```
### zplug
```bash
$ zplug 'nnao45/dntk', as:command, from:gh-r
```
### Docker
Can use dntk docker image,
Look!! Very light weight!!🚀
```bash
$ docker images nnao45/dntk
REPOSITORY TAG IMAGE ID CREATED SIZE
nnao45/dntk latest 3a37b5d989b5 2 hours ago 10.5MB
```
And run,
```bash
$ docker run -it --rm nnao45/dntk:latest
```
### And...
```bash
$ echo 'alias bc=dntk' >> ~/.bashrc
$ echo 'alias bc=dntk' >> ~/.zshrc
```
All OK!! 😎
## Options
```
❯❯❯ dntk -h
Command line's multi-platform interactive calculator, GNU bc wrapper.
USAGE:
dntk [FLAGS] [OPTIONS]
FLAGS:
-h, --help Prints help information
--once Run at only once
-q, --quiet No print information message
--show-limits Print the local limits enforced by the local version of bc, and quit
-V, --version Prints version information
-w, --white Set White color in a output
OPTIONS:
-b, --bc-path Use a specific bc command path [default: bc]
-i, --inject Pre-run inject statement to the dntk [default: ]
-s, --scale Number of truncated after the decimal point [default: 20]
```
## Windows Support
You may install bc.exe and set PATH.
```bash
$ choco install gnuwin
$ # or
$ wget wget https://embedeo.org/ws/command_line/bc_dc_calculator_windows/bc-1.07.1-win32-embedeo-02.zip
$ unzip bc-1.07.1-win32-embedeo-02.zip
```
![gjf](https://github.com/nnao45/naoGifRepo/blob/master/dntk_win_demo.gif)
## Keybind
### Basic Key
key |
feature |
[, ← |
cursor move to left |
], → |
cursor move to right |
0~9 |
Sendkey this number |
Ctrl+C, Enter |
Finish dntk app |
Delete, Backspace |
Delete current char |
@ |
Clean buffer |
### Basic Operation
key |
feature |
+ |
plus |
- |
minus |
* |
multiplication |
/ |
division |
^ |
exponentiation |
% |
remainder |
### Operation for Logical
key |
feature |
! |
boolean, relational |
| |
boolean |
& |
boolean |
> |
relational |
< |
relational |
= |
relational |
### Using Function
you can use under function.
function |
key |
feature |
(x) |
() |
Simple round bracket |
sin(x) |
s() |
Sin of trigonometric function |
cos(x) |
c() |
Cosin of trigonometric function |
atan(x) |
a() |
Tangent of inverse trigonometric function |
log(x) |
l() |
Logarithm function |
exp(x) |
e() |
Exponential function |
sqrt(x) |
sqrt() |
Return square root of the expression function |
j(n,x) |
j() |
The n-order Bessel function |
more detail 👉 https://www.gnu.org/software/bc/manual/html_mono/bc.html
## Pipe Use...
```bash
$ echo "123 * 2" | dntk
246
```
behave, like bc ☺️
# Development Guide
## Compile
### Binary
```bash
$ make
```
### Docker
```bash
$ make docker-build
```
# Contribute
Always Welcome!! 😄
***Have a nice rust hacking days***:sparkles::wink:
## Writer & License
dntk was writed by nnao45 (WORK:Infrastructure Engineer, Twitter:@nnao45, MAIL:n4sekai5y@gmail.com).
This software is released under the MIT License, see LICENSE.