varsun

Crates.iovarsun
lib.rsvarsun
version0.1.1
sourcesrc
created_at2016-08-07 13:00:13.910766
updated_at2016-08-11 08:11:58.611162
descriptionvarsun provides shell/command-prompt like variable substition functions.
homepage
repositoryhttps://github.com/chikuchikugonzalez/varsun
max_upload_size
id5913
size15,487
ちくちく(・∀・)ごんざれす (chikuchikugonzalez)

documentation

https://chikuchikugonzalez.github.io/docs/crate/varsun/

README

varsun: Variable Substituion Functions(s) for Rust

varsunとは - About of varsun -

Go言語における os.ExpandEnv 相当のものが欲しかったけど、標準ライブラリには見当たらなかった。 そんなわけで必要な機能を持ったものを作ろうとした結果がこの varsun である。

できること - Features -

  • $foo${bar} を見つけて、それを対応する文字列へと置き換える
  • %foo% も対応。
  • varsun 直下の関数を使うと、Windows なら %foo% を、それ以外は %foo を認識するように自動的に切り替わる。
  • ついでに環境変数展開を標準装備。
    • 使い方の参考でもある。

やりたいこと - TODO -

  • 効率のいい文字列探索
    • さすがに一文字ずつ見てくのは非効率といわざるを得ない
  • マクロ使ってみたい
  • ベンチマーク
    • cargo bench が動かん(´・ω・`)

使い方 - Usage -

extern crate varsun;

// on Linux system.
let homedir = varsun::substitute("$HOME", |name: &str| -> Option<String> {
    match ::std::env::var(name) {
        Ok(val) => Some(val),
        Err(_)  => NOne,
    }
});

// on Windows.
let homedir = varsun::substitute("%USERPROFILE%", |name: &str| -> Option<String> {
    match ::std::env::var(name) {
        Ok(val) => Some(val),
        Err(_)  => None,
    }
});

常にPOSIX ($HOGE) を使う - Use POSIX ($HOGE) style always -

extern crate varsun;

// on Linux.
let homedir = varsun::posix::substitute("${HOME}", |name: &str| -> Option<String> {
    match ::std::env::var(name) {
        Ok(val) => Some(val),
        Err(_)  => None,
    }
});

// on Windows.
let homedir = varsun::posix::substitute("${USERPROFILE}", |name: &str| -> Option<String> {
    match ::std::env::var(name) {
        Ok(val) => Some(val),
        Err(_)  => None,
    }
});

常にWindows (%HOGE%) を使う - Use Windows (%HOGE%) style always -

extern crate varsun;

// on Linux.
let homedir = varsun::windows::substitute("%HOME%", |name: &str| -> Option<String> {
    match ::std::env::var(name) {
        Ok(val) => Some(val),
        Err(_)  => None,
    }
});

// on Windows.
let homedir = varsun::windows::substitute("%USERPROFILE%", |name: &str| -> Option<String> {
    match ::std::env::var(name) {
        Ok(val) => Some(val),
        Err(_)  => None,
    }
});

作者 - Author -

TANAKA Kenichi aka chikuchikugonzalez (ちくちく('ω')ごんざれす)

ライセンス - LICENSE -

MIT License

Commit count: 13

cargo fmt