Git Product home page Git Product logo

unit_manager's Introduction

UnitManager

概要

単位を管理する gem です。この gem を活用することで、「円」や「cm」などのモノの単位を扱いやすくします。
一つの yml ファイルに単位名と単位を表示する時の計算式を記述しておくことで、プログラム内で単位を呼び出す時にその計算式に従って単位名と共に値が出力されます。
単位や計算式を修正する場合も yml ファイルを編集するのみのため、プログラム上の修正は不要になります。

使用方法

1. gemfile に追記

gem 'unit_manager'

2. コマンドを利用して gem UnitManager をプロジェクトで利用可能にする

必ずプロジェクトディレクトリ直下で使用してください(gemfile が存在する場所)
単位を管理する yml ファイルが作成されます。

unit init

注意

Mac OS の場合にコマンドが実行できない可能性があります。 その場合は Ruby 本体インストール先の bin ファイルから直接 unit スクリプトを実行してください。

ruby /Ruby本体インストール先/bin/unit init

3. /unit_config/unit.yml に扱う単位を記述する

equation で指定した式により計算された値が単位名と共に戻り値として受け取れます。

  • key: 単位のキー名 (キー名を利用してプログラムから単位にアクセスする)
  • name: 単位名 (プログラムから単位が呼び出された時に値と共に出力される単位名 例: 円)
  • quation: 単位算出式 (ここで定義された計算式を利用して値が算出されて表示される)

equation について

  • 式中のと記述した部分にプログラム内で指定した値が代入されて計算されます。
  • 演算子は+, -, *, /が使用できます。
# 例
units:
  - key: money
    name: 円
    equation: <value> * 1.1
  - key: length
    name: m
    equation: <value>

4. gem を require する

require('unit_manager')

5. unit_manager をプログラム内で利用可能にする

UnitManager::InitializeUnit.new を利用することで、yml ファイルに定義した単位が読み込まれます。
UnitManager::InitializeUnit クラスのアクセサメソッドである units に単位情報が入っています。

units = UnitManager::InitializeUnit.new.units

6. 単位を取得する

unit.yml に記述されているキー名が、units のキー名になっています。このキー名によって取得する単位を切り替えます。
units['指定のキー名']の中に unit クラスが存在し、unit メソッドによって単位が呼び出されます。このメソッドの引数に値を渡す事によって equation で指定した計算式に従って単位も含めて値を出力します。

units['money'].unit(1000)
=> 1100円

unit_manager's People

Contributors

kojimanaoyuki avatar

Stargazers

 avatar Kaito Chika avatar Ryota Sasazawa avatar

Watchers

 avatar

unit_manager's Issues

コマンドで作成した環境変数が永続化しない問題を解決

内容

unit initをすることでunit.ymlファイルの生成と、そのファイルのpathが環境変数に書き込まれるようになっている。
しかし、一度環境変数には書き込まれるが、その環境変数を書き込んでいるrubyのプログラムが終了すると環境変数が消えてしまう。
この環境変数をgem内で参照することで、ymlファイルを読み込んでいるため、永続化させたい。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.