stdlib/bundled_gems.rb

tests/_examples/stdlib/bundled_gems.rb in the metorex repository.

require("mutex_m")
ledger = []
ledger.extend(Mutex_m)
ledger.mu_synchronize { ledger << :posted }
p([ledger, ledger.mu_locked?])
ledger.mu_lock
p(ledger.mu_locked?)
ledger.mu_unlock

require("nkf")
sjis = "\x93\xFA\x96\x7B".force_encoding("Shift_JIS")
p(NKF.guess(sjis))
p(NKF.nkf("-w", sjis))
p(NKF.nkf("-s", "日本").bytes)
require("kconv")
p(sjis.toutf8)
p(NKF::VERSION)

require("racc/parser")
require("racc/grammarfileparser")
require("racc/parserfilegenerator")
grammar = <<~GRAMMAR
  class Calculator
  rule
    expression: expression '+' NUMBER { result = val[0] + val[2] }
              | NUMBER
  end
GRAMMAR
parsed = Racc::GrammarFileParser.parse(grammar)
states = parsed.grammar.states
generator = Racc::ParserFileGenerator.new(states, parsed.params.dup)
source = generator.generate_parser
eval(source)
Calculator.class_eval do
  def parse(tokens)
    @tokens = tokens.dup
    do_parse
  end

  def next_token
    @tokens.shift || [false, "$"]
  end
end
p(Calculator.new.parse([[:NUMBER, 2], ["+", "+"], [:NUMBER, 3], ["+", "+"], [:NUMBER, 4]]))
p(Racc::Parser::Racc_Runtime_Core_Version)

require("resolv-replace")
p(IPSocket.getaddress("127.0.0.1"))

require("rinda/tuplespace")
space = Rinda::TupleSpace.new
space.write([:invoice, 1042, 99])
space.write([:invoice, 1043, 15])
p(space.read_all([:invoice, nil, nil]).size)
p(space.take([:invoice, 1043, nil]))
p(space.read_all([:invoice, nil, nil]))

require("rinda/ring")
p(Rinda::Ring_PORT)
p(NKF.nkf("-e -m0", "日本").bytes)
p("日本".tosjis.encoding)

Output:

[[:posted], false]
true
#<Encoding:Shift_JIS>
"日本"
[147, 250, 150, 123]
"日本"
"2.1.5 (2018-12-15)"
9
"1.8.1"
"127.0.0.1"
2
[:invoice, 1043, 15]
[[:invoice, 1042, 99]]
7647
[198, 252, 203, 220]
#<Encoding:Shift_JIS>