This file is indexed.

/usr/share/doc/ruby-gsl/examples/const/physconst.rb is in ruby-gsl 2.1.0.3+dfsg1-1build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#!/usr/bin/env ruby
require("gsl")
require("curses")

#SUBWIN_H = 20
SUBWIN_W = 50
SUBWIN_Y = 1
SUBWIN_X = 10

print("MKSA/CGSM ? [m/c] : ")
sys = gets
if /^m/ =~ sys
  include GSL::CONST::MKSA
  PREFIX = "MKSA"
else
  include GSL::CONST::CGSM
  PREFIX = "CGSM"
end
include GSL::CONST::NUM

Curses.init_screen
W = Curses.stdscr
Curses.refresh

MAIN_MENU = ["", "Fundamental Constants", "Astronomy and Astrophysics",
             "Atomic and Nuclear Physics", "Measurement of Time",
             "Imperial Units", "Nautical Units", "Printers Units",
             "Volume", "Mass and Weight", "Thermal Energy and Power",
             "Pressure", "Viscosity", "Light and Illumination",
             "Radioactivity", "Force and Energy", "Prefixes"]

MENU = Array.new(MAIN_MENU.size)
MENU[1] = ["", "SPEED_OF_LIGHT", "VACUUM_PERMEABILITY", "VACUUM_PERMITTIVITY",
           "PLANCKS_CONSTANT_H", "PLANCKS_CONSTANT_HBAR", "AVOGADRO",
           "FARADAY", "BOLTZMANN", "MOLAR_GAS", "STANDARD_GAS_VOLUME",
           "STEFAN_BOLTZMANN_CONSTANT", "GAUSS", "MICRON", "HECTARE",
           "MILES_PER_HOUR", "KILOMETERS_PER_HOUR"]

MENU[2] = ["", "ASTRONOMICAL_UNIT", "GRAVITATIONAL_CONSTANT",
           "LIGHT_YEAR", "PARSEC", "GRAV_ACCEL", "SOLAR_MASS"]

MENU[3] = ["", "ELECTRON_CHARGE", "ELECTRON_VOLT", "UNIFIED_ATOMIC_MASS",
           "MASS_ELECTRON", "MASS_MUON", "MASS_PROTON", "MASS_NEUTRON",
           "FINE_STRUCTURE", "RYDBERG", "BOHR_RADIUS", "ANGSTROM",
           "BARN", "BOHR_MAGNETON", "NUCLEAR_MAGNETON",
           "ELECTRON_MAGNETIC_MOMENT", "PROTON_MAGNETIC_MOMENT",
           "THOMSON_CROSS_SECTION"]

MENU[4] = ["", "MINUTE", "HOUR", "DAY", "WEEK"]
MENU[5] = ["", "INCH", "FOOT", "YARD", "MILE", "MIL"]
MENU[6] = ["", "NAUTICAL_MILE", "FATHOM", "KNOT"]
MENU[7] = ["", "POINT", "TEXPOINT"]
MENU[8] = ["", "ACRE", "LITER", "US_GALLON", "CANADIAN_GALLON", "UK_GALLON",
           "QUART", "PINT"]
MENU[9] = ["", "POUND_MASS", "OUNCE_MASS", "TON", "METRIC_TON", "UK_TON",
           "TROY_OUNCE", "CARAT", "GRAM_FORCE", "POUND_FORCE",
           "KILOPOUND_FORCE", "POUNDAL"]
MENU[10] = ["", "CALORIE", "BTU", "THERM", "HORSEPOWER"]
MENU[11] = ["", "BAR", "STD_ATMOSPHERE", "TORR", "METER_OF_MERCURY",
            "INCH_OF_MERCURY", "INCH_OF_WATER", "PSI"]
MENU[12] = ["", "POISE", "STOKES"]
MENU[13] = ["", "STILB", "LUMEN", "LUX", "PHOT", "FOOTCANDLE",
            "LAMBERT", "FOOTLAMBERT"]
MENU[14] = ["", "CURIE", "ROENTGEN", "RAD"]
MENU[15] = ["", "NEWTON", "DYNE", "JOULE", "ERG"]
MENU[16] = ["", "YOTTA", "ZETTA", "EXA", "PETA", "TERA", "GIGA", "MEGA",
            "KILO", "MILLI", "MICRO", "NANO", "PICO", "FEMTO", "ATTO",
            "ZEPTO", "YOCTO"]

def mainmenu
  i = 1
  Curses.clear
  W.setpos(0, 1)
  W.addstr("  GSL-#{GSL::VERSION} Physical Constants:\n")
  MAIN_MENU[1..-1].each do |str|
    W.setpos(i, 1)
    W.addstr(sprintf("  [%2d] %s\n", i, str))
    i+=1
  end
  W.setpos(i, 1)
  str = "  ? ['q' to quit]: "
  W.addstr(str)
  W.setpos(i, str.size+1)
  W.refresh
end

def show_submenu(ind, w)
  w.setpos(1, 0)
  w.addstr(sprintf(" [%2d] %s\n", ind, MAIN_MENU[ind]))
  i = 1
  MENU[ind][1..-1].each do |str|
    w.setpos(i+1, 1)
    w.addstr(sprintf("    [%2d] %s\n", i, str))
    i+=1
  end
  w.setpos(i+=1, 1)
  str = "    ? ['m' to menu]: "
  w.addstr(str)
  w.setpos(i, str.size+1)
  w.box('|', '-')
  w.refresh
end

def show_result(ind, i, w)
  return if i == 0
  return if i > MENU[ind].size-1
  w.setpos(MENU[ind].size+2, 0)
  w.addstr("  #{MENU[ind][i]} = ")
  begin
    val = eval("#{MENU[ind][i]}")
    w.addstr("#{val}\n")
  rescue NameError
    w.addstr("not defined.\n")
  rescue
    return
  ensure
    w.refresh
  end
end

def submenu(ind)
  return unless MENU[ind]
  w = W.subwin(MENU[ind].size+4, SUBWIN_W, SUBWIN_Y, SUBWIN_X)
  while true
    show_submenu(ind, w)
    i = w.getstr
    if /^m/ =~ i
      w.close
      return
    end
    show_result(ind, i.to_i, w)
  end
end

#########

while true
  mainmenu
  i = W.getstr
  W.refresh
  break if /^q/ =~ i
  i = i.to_i
  next if i > MAIN_MENU.size or i < 1
  submenu(i)
end

Curses.close_screen
exit

__END__