commit 14ec9a78d2c3dc43b554f3ccced563eed984eff2 Author: Unbewohnte Date: Thu Mar 24 08:37:39 2022 +0300 Finally, I won`t do it in the browser ever again diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d81f12e --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +/.idea diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..da96c67 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "string_convert" +version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..ed15042 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "string_convert" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/UNLICENSE b/UNLICENSE new file mode 100644 index 0000000..00d2e13 --- /dev/null +++ b/UNLICENSE @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +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 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. + +For more information, please refer to \ No newline at end of file diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..920e7d8 --- /dev/null +++ b/install.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +if [ -f string_convert ]; then + cp string_convert /usr/local/bin/ +else + echo "No 'string_convert' binary in current directory" +fi \ No newline at end of file diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..ae3406c --- /dev/null +++ b/src/main.rs @@ -0,0 +1,69 @@ +/* +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +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 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. + +For more information, please refer to +*/ + +//! A trivial program to convert a string to different numbers because I`m tired to do it in the browser + +use std::process::exit; + +fn main() { + let args: Vec = std::env::args().collect(); + if args.len() < 3 { + println!("string_convert [hex|dec|oct|bin] [string]..."); + exit(0); + } + + let conv_type = args[1].to_lowercase(); + + for arg in &args[2..] { + for (count, char) in arg.chars().enumerate() { + match &conv_type[..] { + "hex" => { + println!("{}: {} --> {:x}", count, char, char as u32); + } + + "dec" => { + println!("{}: {} --> {}", count, char, char as u32); + } + + "oct" => { + println!("{}: {} --> {:o}", count, char, char as u32); + } + + "bin" => { + println!("{}: {} --> {:b}", count, char, char as u32); + } + + _ => { + eprintln!("[ERROR] Invalid conversion type. Run \"string_convert\" without arguments to get help"); + exit(1); + } + } + } + + println!(); + } +}