#coding: utf-8 require_relative 'lib/engineer_calculator' require 'erb' class ShowEnv def initialize @eng_calc = Engineer::Calculator.new end def call(env) req = Rack::Request.new(env) @result = @eng_calc.calc(req.params["calc"]) @alter = @eng_calc.alter @error = @eng_calc.error html = ERB.new(<<-EOF).result(binding) >

Engineer Calculator / 技術者計算機

>

<%= @result[:convert_formula].to_s + " = " + @result[:value].to_s + " " + @result[:unit].to_s if @result %>

<% unless @error.empty? %> <% @error.each do |err| %>

<%= err %>

<% end %> <% end %> <% if @alter %>

単位換算結果 / Result of Convert Unit

<% if @alter[:si_unit] %>

(SI Unit)

<% @alter[:si_unit].each do |unit_type, unit_name| %>

<%= unit_type %>

<% @eng_calc.metric_prefix_unit.each do |prefix_name, val| %> <% end %>

<%= @result[:value].to_s if @result %>

<%= unit_name %>

<%= sprintf("%.05g", @result[:value].to_f / val.to_f ) if @result %> <%= prefix_name + " (" + unit_name + ")" %>
<% end %> <% end %> <% if @alter[:variable] %>

(その他のUNIT / Variable Unit)

<% @alter[:variable].each do |unit_type, unit_name| %>

<%= unit_type %>

<% if unit_name %> <% unit_name.each do |unit, value| %> <% end %> <% end %>
<%= sprintf("%.05g", value) %> <%= unit %>
<% end %> <% end %>
<% end %>

(使用可能な単位一覧 / List of available unit)

<% @eng_calc.variable_unit.each do |unit_name, unit_value| %>

<%= unit_name %>

<% unit_value.each do |unit, value| %> <% end %>
<%= unit %> <%= value %>
<% end %>

EOF Rack::Response.new(html) end end run ShowEnv.new