#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 %>
<%= @result[:value].to_s if @result %> |
<%= unit_name %> |
<% @eng_calc.metric_prefix_unit.each do |prefix_name, val| %>
<%= sprintf("%.05g", @result[:value].to_f / val.to_f ) if @result %> |
<%= prefix_name + " (" + unit_name + ")" %> |
<% end %>
<% 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| %>
<%= sprintf("%.05g", value) %> |
<%= unit %> |
<% end %>
<% end %>
<% 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| %>
<%= unit %> |
<%= value %> |
<% end %>
<% end %>
EOF
Rack::Response.new(html)
end
end
run ShowEnv.new