ruby_on_ruby 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +18 -0
- data/.rvmrc +1 -0
- data/Gemfile +6 -0
- data/LICENSE +22 -0
- data/README.md +66 -0
- data/Rakefile +1 -0
- data/lib/ruby_on_ruby.rb +5 -0
- data/lib/ruby_on_ruby/console.rb +7 -0
- data/lib/ruby_on_ruby/context.rb +33 -0
- data/lib/ruby_on_ruby/file_loader.rb +31 -0
- data/lib/ruby_on_ruby/ruby_stream.rb +27 -0
- data/lib/ruby_on_ruby/version.rb +3 -0
- data/lib/rubyonruby.rb +1 -0
- data/ruby_in_ruby.gemspec +19 -0
- data/vendor/javascripts/emscripted-ruby/lib/.document +106 -0
- data/vendor/javascripts/emscripted-ruby/lib/English.rb +155 -0
- data/vendor/javascripts/emscripted-ruby/lib/Env.rb +18 -0
- data/vendor/javascripts/emscripted-ruby/lib/README +96 -0
- data/vendor/javascripts/emscripted-ruby/lib/abbrev.rb +103 -0
- data/vendor/javascripts/emscripted-ruby/lib/base64.rb +133 -0
- data/vendor/javascripts/emscripted-ruby/lib/benchmark.rb +572 -0
- data/vendor/javascripts/emscripted-ruby/lib/cgi-lib.rb +272 -0
- data/vendor/javascripts/emscripted-ruby/lib/cgi.rb +2308 -0
- data/vendor/javascripts/emscripted-ruby/lib/cgi/.document +2 -0
- data/vendor/javascripts/emscripted-ruby/lib/cgi/session.rb +498 -0
- data/vendor/javascripts/emscripted-ruby/lib/cgi/session/pstore.rb +111 -0
- data/vendor/javascripts/emscripted-ruby/lib/complex.rb +663 -0
- data/vendor/javascripts/emscripted-ruby/lib/csv.rb +992 -0
- data/vendor/javascripts/emscripted-ruby/lib/date.rb +1767 -0
- data/vendor/javascripts/emscripted-ruby/lib/date/format.rb +1190 -0
- data/vendor/javascripts/emscripted-ruby/lib/date2.rb +5 -0
- data/vendor/javascripts/emscripted-ruby/lib/debug.rb +947 -0
- data/vendor/javascripts/emscripted-ruby/lib/delegate.rb +337 -0
- data/vendor/javascripts/emscripted-ruby/lib/drb.rb +2 -0
- data/vendor/javascripts/emscripted-ruby/lib/drb/acl.rb +146 -0
- data/vendor/javascripts/emscripted-ruby/lib/drb/drb.rb +1782 -0
- data/vendor/javascripts/emscripted-ruby/lib/drb/eq.rb +16 -0
- data/vendor/javascripts/emscripted-ruby/lib/drb/extserv.rb +64 -0
- data/vendor/javascripts/emscripted-ruby/lib/drb/extservm.rb +89 -0
- data/vendor/javascripts/emscripted-ruby/lib/drb/gw.rb +122 -0
- data/vendor/javascripts/emscripted-ruby/lib/drb/invokemethod.rb +36 -0
- data/vendor/javascripts/emscripted-ruby/lib/drb/observer.rb +22 -0
- data/vendor/javascripts/emscripted-ruby/lib/drb/ssl.rb +190 -0
- data/vendor/javascripts/emscripted-ruby/lib/drb/timeridconv.rb +91 -0
- data/vendor/javascripts/emscripted-ruby/lib/drb/unix.rb +108 -0
- data/vendor/javascripts/emscripted-ruby/lib/e2mmap.rb +195 -0
- data/vendor/javascripts/emscripted-ruby/lib/erb.rb +880 -0
- data/vendor/javascripts/emscripted-ruby/lib/eregex.rb +37 -0
- data/vendor/javascripts/emscripted-ruby/lib/fileutils.rb +1591 -0
- data/vendor/javascripts/emscripted-ruby/lib/finalize.rb +193 -0
- data/vendor/javascripts/emscripted-ruby/lib/find.rb +79 -0
- data/vendor/javascripts/emscripted-ruby/lib/forwardable.rb +218 -0
- data/vendor/javascripts/emscripted-ruby/lib/ftools.rb +261 -0
- data/vendor/javascripts/emscripted-ruby/lib/generator.rb +418 -0
- data/vendor/javascripts/emscripted-ruby/lib/getoptlong.rb +621 -0
- data/vendor/javascripts/emscripted-ruby/lib/getopts.rb +127 -0
- data/vendor/javascripts/emscripted-ruby/lib/gserver.rb +253 -0
- data/vendor/javascripts/emscripted-ruby/lib/importenv.rb +33 -0
- data/vendor/javascripts/emscripted-ruby/lib/ipaddr.rb +814 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb.rb +346 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/chws.rb +33 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/fork.rb +39 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/help.rb +34 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/load.rb +67 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/nop.rb +39 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/pushws.rb +39 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/subirb.rb +43 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/completion.rb +205 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/context.rb +255 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/ext/change-ws.rb +62 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/ext/history.rb +110 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/ext/loader.rb +120 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/ext/math-mode.rb +37 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/ext/multi-irb.rb +241 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/ext/save-history.rb +85 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/ext/tracer.rb +61 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/ext/use-loader.rb +65 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/ext/workspaces.rb +56 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/extend-command.rb +264 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/frame.rb +67 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/help.rb +33 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/init.rb +259 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/input-method.rb +120 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/lc/error.rb +30 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/lc/help-message +35 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/lc/ja/error.rb +27 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/lc/ja/help-message +36 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/locale.rb +184 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/notifier.rb +145 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/output-method.rb +85 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/ruby-lex.rb +1149 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/ruby-token.rb +273 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/slex.rb +285 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/version.rb +16 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/workspace.rb +107 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/ws-for-case-2.rb +15 -0
- data/vendor/javascripts/emscripted-ruby/lib/irb/xmp.rb +86 -0
- data/vendor/javascripts/emscripted-ruby/lib/jcode.rb +220 -0
- data/vendor/javascripts/emscripted-ruby/lib/logger.rb +703 -0
- data/vendor/javascripts/emscripted-ruby/lib/mailread.rb +62 -0
- data/vendor/javascripts/emscripted-ruby/lib/mathn.rb +308 -0
- data/vendor/javascripts/emscripted-ruby/lib/matrix.rb +1278 -0
- data/vendor/javascripts/emscripted-ruby/lib/mkmf.rb +1811 -0
- data/vendor/javascripts/emscripted-ruby/lib/monitor.rb +352 -0
- data/vendor/javascripts/emscripted-ruby/lib/mutex_m.rb +122 -0
- data/vendor/javascripts/emscripted-ruby/lib/net/ftp.rb +927 -0
- data/vendor/javascripts/emscripted-ruby/lib/net/http.rb +2277 -0
- data/vendor/javascripts/emscripted-ruby/lib/net/https.rb +173 -0
- data/vendor/javascripts/emscripted-ruby/lib/net/imap.rb +3371 -0
- data/vendor/javascripts/emscripted-ruby/lib/net/pop.rb +999 -0
- data/vendor/javascripts/emscripted-ruby/lib/net/protocol.rb +392 -0
- data/vendor/javascripts/emscripted-ruby/lib/net/smtp.rb +1014 -0
- data/vendor/javascripts/emscripted-ruby/lib/net/telnet.rb +756 -0
- data/vendor/javascripts/emscripted-ruby/lib/observer.rb +192 -0
- data/vendor/javascripts/emscripted-ruby/lib/open-uri.rb +678 -0
- data/vendor/javascripts/emscripted-ruby/lib/open3.rb +101 -0
- data/vendor/javascripts/emscripted-ruby/lib/optparse.rb +1790 -0
- data/vendor/javascripts/emscripted-ruby/lib/optparse/date.rb +17 -0
- data/vendor/javascripts/emscripted-ruby/lib/optparse/shellwords.rb +6 -0
- data/vendor/javascripts/emscripted-ruby/lib/optparse/time.rb +10 -0
- data/vendor/javascripts/emscripted-ruby/lib/optparse/uri.rb +6 -0
- data/vendor/javascripts/emscripted-ruby/lib/optparse/version.rb +70 -0
- data/vendor/javascripts/emscripted-ruby/lib/ostruct.rb +146 -0
- data/vendor/javascripts/emscripted-ruby/lib/parsearg.rb +87 -0
- data/vendor/javascripts/emscripted-ruby/lib/parsedate.rb +53 -0
- data/vendor/javascripts/emscripted-ruby/lib/pathname.rb +1062 -0
- data/vendor/javascripts/emscripted-ruby/lib/ping.rb +64 -0
- data/vendor/javascripts/emscripted-ruby/lib/pp.rb +654 -0
- data/vendor/javascripts/emscripted-ruby/lib/prettyprint.rb +896 -0
- data/vendor/javascripts/emscripted-ruby/lib/profile.rb +6 -0
- data/vendor/javascripts/emscripted-ruby/lib/profiler.rb +59 -0
- data/vendor/javascripts/emscripted-ruby/lib/pstore.rb +395 -0
- data/vendor/javascripts/emscripted-ruby/lib/racc/parser.rb +442 -0
- data/vendor/javascripts/emscripted-ruby/lib/rational.rb +564 -0
- data/vendor/javascripts/emscripted-ruby/lib/readbytes.rb +41 -0
- data/vendor/javascripts/emscripted-ruby/lib/resolv-replace.rb +62 -0
- data/vendor/javascripts/emscripted-ruby/lib/resolv.rb +2210 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/attlistdecl.rb +62 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/attribute.rb +185 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/cdata.rb +67 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/child.rb +96 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/comment.rb +80 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/doctype.rb +271 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/document.rb +208 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/dtd/attlistdecl.rb +10 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/dtd/dtd.rb +51 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/dtd/elementdecl.rb +17 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/dtd/entitydecl.rb +56 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/dtd/notationdecl.rb +39 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/element.rb +1227 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/encoding.rb +71 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/CP-1252.rb +103 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/EUC-JP.rb +35 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/ICONV.rb +22 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/ISO-8859-1.rb +7 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/ISO-8859-15.rb +72 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/SHIFT-JIS.rb +37 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/SHIFT_JIS.rb +1 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/UNILE.rb +34 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/US-ASCII.rb +30 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/UTF-16.rb +35 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/UTF-8.rb +18 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/entity.rb +165 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/formatters/default.rb +109 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/formatters/pretty.rb +137 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/formatters/transitive.rb +56 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/functions.rb +382 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/instruction.rb +70 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/light/node.rb +196 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/namespace.rb +47 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/node.rb +75 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/output.rb +24 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/parent.rb +166 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/parseexception.rb +51 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/baseparser.rb +503 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/lightparser.rb +60 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/pullparser.rb +196 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/sax2parser.rb +238 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/streamparser.rb +46 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/treeparser.rb +97 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/ultralightparser.rb +56 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/xpathparser.rb +698 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/quickpath.rb +266 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/rexml.rb +32 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/sax2listener.rb +97 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/source.rb +251 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/streamlistener.rb +92 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/syncenumerator.rb +33 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/text.rb +344 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/undefinednamespaceexception.rb +8 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/validation/relaxng.rb +559 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/validation/validation.rb +155 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/validation/validationexception.rb +9 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/xmldecl.rb +119 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/xmltokens.rb +18 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/xpath.rb +66 -0
- data/vendor/javascripts/emscripted-ruby/lib/rexml/xpath_parser.rb +792 -0
- data/vendor/javascripts/emscripted-ruby/lib/rinda/rinda.rb +283 -0
- data/vendor/javascripts/emscripted-ruby/lib/rinda/ring.rb +271 -0
- data/vendor/javascripts/emscripted-ruby/lib/rinda/tuplespace.rb +642 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss.rb +19 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/0.9.rb +428 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/1.0.rb +452 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/2.0.rb +111 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/atom.rb +749 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/content.rb +31 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/content/1.0.rb +10 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/content/2.0.rb +12 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/converter.rb +162 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/dublincore.rb +161 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/dublincore/1.0.rb +13 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/dublincore/2.0.rb +13 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/dublincore/atom.rb +17 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/image.rb +193 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/itunes.rb +410 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/maker.rb +44 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/maker/0.9.rb +467 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/maker/1.0.rb +434 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/maker/2.0.rb +223 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/maker/atom.rb +172 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/maker/base.rb +868 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/maker/content.rb +21 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/maker/dublincore.rb +124 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/maker/entry.rb +163 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/maker/feed.rb +429 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/maker/image.rb +111 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/maker/itunes.rb +242 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/maker/slash.rb +33 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/maker/syndication.rb +18 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/maker/taxonomy.rb +118 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/maker/trackback.rb +61 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/parser.rb +541 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/rexmlparser.rb +54 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/rss.rb +1312 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/slash.rb +49 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/syndication.rb +67 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/taxonomy.rb +145 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/trackback.rb +288 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/utils.rb +111 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/xml-stylesheet.rb +105 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/xml.rb +71 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/xmlparser.rb +93 -0
- data/vendor/javascripts/emscripted-ruby/lib/rss/xmlscanner.rb +121 -0
- data/vendor/javascripts/emscripted-ruby/lib/rubyunit.rb +6 -0
- data/vendor/javascripts/emscripted-ruby/lib/runit/assert.rb +73 -0
- data/vendor/javascripts/emscripted-ruby/lib/runit/cui/testrunner.rb +51 -0
- data/vendor/javascripts/emscripted-ruby/lib/runit/error.rb +9 -0
- data/vendor/javascripts/emscripted-ruby/lib/runit/testcase.rb +45 -0
- data/vendor/javascripts/emscripted-ruby/lib/runit/testresult.rb +44 -0
- data/vendor/javascripts/emscripted-ruby/lib/runit/testsuite.rb +26 -0
- data/vendor/javascripts/emscripted-ruby/lib/runit/topublic.rb +8 -0
- data/vendor/javascripts/emscripted-ruby/lib/scanf.rb +702 -0
- data/vendor/javascripts/emscripted-ruby/lib/securerandom.rb +137 -0
- data/vendor/javascripts/emscripted-ruby/lib/set.rb +1233 -0
- data/vendor/javascripts/emscripted-ruby/lib/shell.rb +269 -0
- data/vendor/javascripts/emscripted-ruby/lib/shell/builtin-command.rb +154 -0
- data/vendor/javascripts/emscripted-ruby/lib/shell/command-processor.rb +592 -0
- data/vendor/javascripts/emscripted-ruby/lib/shell/error.rb +26 -0
- data/vendor/javascripts/emscripted-ruby/lib/shell/filter.rb +110 -0
- data/vendor/javascripts/emscripted-ruby/lib/shell/process-controller.rb +260 -0
- data/vendor/javascripts/emscripted-ruby/lib/shell/system-command.rb +168 -0
- data/vendor/javascripts/emscripted-ruby/lib/shell/version.rb +16 -0
- data/vendor/javascripts/emscripted-ruby/lib/shellwords.rb +172 -0
- data/vendor/javascripts/emscripted-ruby/lib/singleton.rb +360 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/attachment.rb +107 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/baseData.rb +942 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/element.rb +258 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/encodingstyle/aspDotNetHandler.rb +213 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/encodingstyle/handler.rb +100 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/encodingstyle/literalHandler.rb +226 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/encodingstyle/soapHandler.rb +582 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/generator.rb +268 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/header/handler.rb +57 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/header/handlerset.rb +70 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/header/simplehandler.rb +44 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/httpconfigloader.rb +119 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/mapping.rb +10 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/factory.rb +355 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/mapping.rb +381 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/registry.rb +541 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/rubytypeFactory.rb +475 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/typeMap.rb +50 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/wsdlencodedregistry.rb +280 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/wsdlliteralregistry.rb +418 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/marshal.rb +59 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/mimemessage.rb +240 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/netHttpClient.rb +190 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/parser.rb +251 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/processor.rb +66 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/property.rb +333 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/cgistub.rb +206 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/driver.rb +254 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/element.rb +325 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/httpserver.rb +129 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/proxy.rb +497 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/router.rb +594 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/rpc.rb +25 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/soaplet.rb +162 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/standaloneServer.rb +43 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/soap.rb +140 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/streamHandler.rb +229 -0
- data/vendor/javascripts/emscripted-ruby/lib/soap/wsdlDriver.rb +575 -0
- data/vendor/javascripts/emscripted-ruby/lib/sync.rb +311 -0
- data/vendor/javascripts/emscripted-ruby/lib/tempfile.rb +209 -0
- data/vendor/javascripts/emscripted-ruby/lib/test/unit.rb +280 -0
- data/vendor/javascripts/emscripted-ruby/lib/test/unit/assertionfailederror.rb +14 -0
- data/vendor/javascripts/emscripted-ruby/lib/test/unit/assertions.rb +622 -0
- data/vendor/javascripts/emscripted-ruby/lib/test/unit/autorunner.rb +220 -0
- data/vendor/javascripts/emscripted-ruby/lib/test/unit/collector.rb +43 -0
- data/vendor/javascripts/emscripted-ruby/lib/test/unit/collector/dir.rb +107 -0
- data/vendor/javascripts/emscripted-ruby/lib/test/unit/collector/objectspace.rb +34 -0
- data/vendor/javascripts/emscripted-ruby/lib/test/unit/error.rb +56 -0
- data/vendor/javascripts/emscripted-ruby/lib/test/unit/failure.rb +51 -0
- data/vendor/javascripts/emscripted-ruby/lib/test/unit/testcase.rb +160 -0
- data/vendor/javascripts/emscripted-ruby/lib/test/unit/testresult.rb +80 -0
- data/vendor/javascripts/emscripted-ruby/lib/test/unit/testsuite.rb +76 -0
- data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/console/testrunner.rb +127 -0
- data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/fox/testrunner.rb +268 -0
- data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/gtk/testrunner.rb +416 -0
- data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/gtk2/testrunner.rb +465 -0
- data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/testrunnermediator.rb +68 -0
- data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/testrunnerutilities.rb +46 -0
- data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/tk/testrunner.rb +260 -0
- data/vendor/javascripts/emscripted-ruby/lib/test/unit/util/backtracefilter.rb +40 -0
- data/vendor/javascripts/emscripted-ruby/lib/test/unit/util/observable.rb +90 -0
- data/vendor/javascripts/emscripted-ruby/lib/test/unit/util/procwrapper.rb +48 -0
- data/vendor/javascripts/emscripted-ruby/lib/thread.rb +479 -0
- data/vendor/javascripts/emscripted-ruby/lib/thwait.rb +169 -0
- data/vendor/javascripts/emscripted-ruby/lib/time.rb +797 -0
- data/vendor/javascripts/emscripted-ruby/lib/timeout.rb +122 -0
- data/vendor/javascripts/emscripted-ruby/lib/tmpdir.rb +130 -0
- data/vendor/javascripts/emscripted-ruby/lib/tracer.rb +167 -0
- data/vendor/javascripts/emscripted-ruby/lib/tsort.rb +290 -0
- data/vendor/javascripts/emscripted-ruby/lib/un.rb +235 -0
- data/vendor/javascripts/emscripted-ruby/lib/uri.rb +29 -0
- data/vendor/javascripts/emscripted-ruby/lib/uri/common.rb +611 -0
- data/vendor/javascripts/emscripted-ruby/lib/uri/ftp.rb +198 -0
- data/vendor/javascripts/emscripted-ruby/lib/uri/generic.rb +1122 -0
- data/vendor/javascripts/emscripted-ruby/lib/uri/http.rb +100 -0
- data/vendor/javascripts/emscripted-ruby/lib/uri/https.rb +20 -0
- data/vendor/javascripts/emscripted-ruby/lib/uri/ldap.rb +190 -0
- data/vendor/javascripts/emscripted-ruby/lib/uri/ldaps.rb +12 -0
- data/vendor/javascripts/emscripted-ruby/lib/uri/mailto.rb +266 -0
- data/vendor/javascripts/emscripted-ruby/lib/weakref.rb +100 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick.rb +29 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/accesslog.rb +67 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/cgi.rb +257 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/compat.rb +15 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/config.rb +97 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/cookie.rb +110 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/htmlutils.rb +25 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth.rb +45 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/authenticator.rb +79 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/basicauth.rb +65 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/digestauth.rb +343 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/htdigest.rb +91 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/htgroup.rb +61 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/htpasswd.rb +83 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/userdb.rb +29 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/httpproxy.rb +254 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/httprequest.rb +365 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/httpresponse.rb +327 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/https.rb +63 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/httpserver.rb +210 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet.rb +22 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/abstract.rb +71 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/cgi_runner.rb +47 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/cgihandler.rb +108 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/erbhandler.rb +54 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/filehandler.rb +435 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/prochandler.rb +33 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/httpstatus.rb +126 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/httputils.rb +399 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/httpversion.rb +49 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/log.rb +88 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/server.rb +200 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/ssl.rb +126 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/utils.rb +100 -0
- data/vendor/javascripts/emscripted-ruby/lib/webrick/version.rb +13 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/binding.rb +65 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/data.rb +64 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/definitions.rb +250 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/documentation.rb +32 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/import.rb +80 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/importer.rb +38 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/info.rb +39 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/message.rb +54 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/operation.rb +130 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/operationBinding.rb +108 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/param.rb +85 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/parser.rb +163 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/part.rb +52 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/port.rb +84 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/portType.rb +73 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/service.rb +61 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/address.rb +40 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/binding.rb +49 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/body.rb +56 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/cgiStubCreator.rb +76 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/classDefCreator.rb +314 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/classDefCreatorSupport.rb +126 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/clientSkeltonCreator.rb +78 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/complexType.rb +161 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/data.rb +42 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/definitions.rb +149 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/driverCreator.rb +95 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/element.rb +28 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/fault.rb +56 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/header.rb +86 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/headerfault.rb +56 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/mappingRegistryCreator.rb +92 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/methodDefCreator.rb +228 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/operation.rb +122 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/servantSkeltonCreator.rb +67 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/standaloneServerStubCreator.rb +85 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/wsdl2ruby.rb +176 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/types.rb +43 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/wsdl.rb +23 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/all.rb +69 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/annotation.rb +34 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/any.rb +56 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/attribute.rb +127 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/choice.rb +69 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/complexContent.rb +92 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/complexType.rb +139 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/content.rb +96 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/data.rb +80 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/element.rb +154 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/enumeration.rb +36 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/import.rb +65 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/importer.rb +87 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/include.rb +54 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/length.rb +35 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/parser.rb +166 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/pattern.rb +36 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/schema.rb +143 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/sequence.rb +69 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/simpleContent.rb +65 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/simpleExtension.rb +54 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/simpleRestriction.rb +73 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/simpleType.rb +73 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/unique.rb +34 -0
- data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/xsd2ruby.rb +107 -0
- data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/.document +1 -0
- data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/README.txt +31 -0
- data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/base64.rb +81 -0
- data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/client.rb +624 -0
- data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/config.rb +40 -0
- data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/create.rb +290 -0
- data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/datetime.rb +142 -0
- data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/httpserver.rb +178 -0
- data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/marshal.rb +76 -0
- data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/parser.rb +813 -0
- data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/server.rb +780 -0
- data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/utils.rb +165 -0
- data/vendor/javascripts/emscripted-ruby/lib/xsd/charset.rb +187 -0
- data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen.rb +12 -0
- data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen/classdef.rb +203 -0
- data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen/commentdef.rb +34 -0
- data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen/gensupport.rb +166 -0
- data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen/methoddef.rb +63 -0
- data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen/moduledef.rb +191 -0
- data/vendor/javascripts/emscripted-ruby/lib/xsd/datatypes.rb +1269 -0
- data/vendor/javascripts/emscripted-ruby/lib/xsd/datatypes1999.rb +20 -0
- data/vendor/javascripts/emscripted-ruby/lib/xsd/iconvcharset.rb +33 -0
- data/vendor/javascripts/emscripted-ruby/lib/xsd/mapping.rb +42 -0
- data/vendor/javascripts/emscripted-ruby/lib/xsd/namedelements.rb +95 -0
- data/vendor/javascripts/emscripted-ruby/lib/xsd/ns.rb +140 -0
- data/vendor/javascripts/emscripted-ruby/lib/xsd/qname.rb +78 -0
- data/vendor/javascripts/emscripted-ruby/lib/xsd/xmlparser.rb +61 -0
- data/vendor/javascripts/emscripted-ruby/lib/xsd/xmlparser/parser.rb +96 -0
- data/vendor/javascripts/emscripted-ruby/lib/xsd/xmlparser/rexmlparser.rb +54 -0
- data/vendor/javascripts/emscripted-ruby/lib/xsd/xmlparser/xmlparser.rb +50 -0
- data/vendor/javascripts/emscripted-ruby/lib/xsd/xmlparser/xmlscanner.rb +147 -0
- data/vendor/javascripts/emscripted-ruby/lib/yaml.rb +440 -0
- data/vendor/javascripts/emscripted-ruby/lib/yaml/baseemitter.rb +247 -0
- data/vendor/javascripts/emscripted-ruby/lib/yaml/basenode.rb +216 -0
- data/vendor/javascripts/emscripted-ruby/lib/yaml/constants.rb +45 -0
- data/vendor/javascripts/emscripted-ruby/lib/yaml/dbm.rb +111 -0
- data/vendor/javascripts/emscripted-ruby/lib/yaml/encoding.rb +33 -0
- data/vendor/javascripts/emscripted-ruby/lib/yaml/error.rb +34 -0
- data/vendor/javascripts/emscripted-ruby/lib/yaml/loader.rb +14 -0
- data/vendor/javascripts/emscripted-ruby/lib/yaml/rubytypes.rb +408 -0
- data/vendor/javascripts/emscripted-ruby/lib/yaml/store.rb +43 -0
- data/vendor/javascripts/emscripted-ruby/lib/yaml/stream.rb +40 -0
- data/vendor/javascripts/emscripted-ruby/lib/yaml/stringio.rb +83 -0
- data/vendor/javascripts/emscripted-ruby/lib/yaml/syck.rb +19 -0
- data/vendor/javascripts/emscripted-ruby/lib/yaml/tag.rb +91 -0
- data/vendor/javascripts/emscripted-ruby/lib/yaml/types.rb +192 -0
- data/vendor/javascripts/emscripted-ruby/lib/yaml/yamlnode.rb +54 -0
- data/vendor/javascripts/emscripted-ruby/lib/yaml/ypath.rb +52 -0
- data/vendor/javascripts/emscripted-ruby/ruby.closure.js +7201 -0
- metadata +554 -0
@@ -0,0 +1,442 @@
|
|
1
|
+
#
|
2
|
+
# $originalId: parser.rb,v 1.8 2006/07/06 11:42:07 aamine Exp $
|
3
|
+
#
|
4
|
+
# Copyright (c) 1999-2006 Minero Aoki
|
5
|
+
#
|
6
|
+
# This program is free software.
|
7
|
+
# You can distribute/modify this program under the same terms of ruby.
|
8
|
+
#
|
9
|
+
# As a special exception, when this code is copied by Racc
|
10
|
+
# into a Racc output file, you may use that output file
|
11
|
+
# without restriction.
|
12
|
+
#
|
13
|
+
|
14
|
+
unless defined?(NotImplementedError)
|
15
|
+
NotImplementedError = NotImplementError
|
16
|
+
end
|
17
|
+
|
18
|
+
module Racc
|
19
|
+
class ParseError < StandardError; end
|
20
|
+
end
|
21
|
+
unless defined?(::ParseError)
|
22
|
+
ParseError = Racc::ParseError
|
23
|
+
end
|
24
|
+
|
25
|
+
module Racc
|
26
|
+
|
27
|
+
unless defined?(Racc_No_Extentions)
|
28
|
+
Racc_No_Extentions = false
|
29
|
+
end
|
30
|
+
|
31
|
+
class Parser
|
32
|
+
|
33
|
+
Racc_Runtime_Version = '1.4.5'
|
34
|
+
Racc_Runtime_Revision = '$originalRevision: 1.8 $'.split[1]
|
35
|
+
|
36
|
+
Racc_Runtime_Core_Version_R = '1.4.5'
|
37
|
+
Racc_Runtime_Core_Revision_R = '$originalRevision: 1.8 $'.split[1]
|
38
|
+
begin
|
39
|
+
require 'racc/cparse'
|
40
|
+
# Racc_Runtime_Core_Version_C = (defined in extention)
|
41
|
+
Racc_Runtime_Core_Revision_C = Racc_Runtime_Core_Id_C.split[2]
|
42
|
+
unless new.respond_to?(:_racc_do_parse_c, true)
|
43
|
+
raise LoadError, 'old cparse.so'
|
44
|
+
end
|
45
|
+
if Racc_No_Extentions
|
46
|
+
raise LoadError, 'selecting ruby version of racc runtime core'
|
47
|
+
end
|
48
|
+
|
49
|
+
Racc_Main_Parsing_Routine = :_racc_do_parse_c
|
50
|
+
Racc_YY_Parse_Method = :_racc_yyparse_c
|
51
|
+
Racc_Runtime_Core_Version = Racc_Runtime_Core_Version_C
|
52
|
+
Racc_Runtime_Core_Revision = Racc_Runtime_Core_Revision_C
|
53
|
+
Racc_Runtime_Type = 'c'
|
54
|
+
rescue LoadError
|
55
|
+
Racc_Main_Parsing_Routine = :_racc_do_parse_rb
|
56
|
+
Racc_YY_Parse_Method = :_racc_yyparse_rb
|
57
|
+
Racc_Runtime_Core_Version = Racc_Runtime_Core_Version_R
|
58
|
+
Racc_Runtime_Core_Revision = Racc_Runtime_Core_Revision_R
|
59
|
+
Racc_Runtime_Type = 'ruby'
|
60
|
+
end
|
61
|
+
|
62
|
+
def Parser.racc_runtime_type
|
63
|
+
Racc_Runtime_Type
|
64
|
+
end
|
65
|
+
|
66
|
+
private
|
67
|
+
|
68
|
+
def _racc_setup
|
69
|
+
@yydebug = false unless self.class::Racc_debug_parser
|
70
|
+
@yydebug = false unless defined?(@yydebug)
|
71
|
+
if @yydebug
|
72
|
+
@racc_debug_out = $stderr unless defined?(@racc_debug_out)
|
73
|
+
@racc_debug_out ||= $stderr
|
74
|
+
end
|
75
|
+
arg = self.class::Racc_arg
|
76
|
+
arg[13] = true if arg.size < 14
|
77
|
+
arg
|
78
|
+
end
|
79
|
+
|
80
|
+
def _racc_init_sysvars
|
81
|
+
@racc_state = [0]
|
82
|
+
@racc_tstack = []
|
83
|
+
@racc_vstack = []
|
84
|
+
|
85
|
+
@racc_t = nil
|
86
|
+
@racc_val = nil
|
87
|
+
|
88
|
+
@racc_read_next = true
|
89
|
+
|
90
|
+
@racc_user_yyerror = false
|
91
|
+
@racc_error_status = 0
|
92
|
+
end
|
93
|
+
|
94
|
+
###
|
95
|
+
### do_parse
|
96
|
+
###
|
97
|
+
|
98
|
+
def do_parse
|
99
|
+
__send__(Racc_Main_Parsing_Routine, _racc_setup(), false)
|
100
|
+
end
|
101
|
+
|
102
|
+
def next_token
|
103
|
+
raise NotImplementedError, "#{self.class}\#next_token is not defined"
|
104
|
+
end
|
105
|
+
|
106
|
+
def _racc_do_parse_rb(arg, in_debug)
|
107
|
+
action_table, action_check, action_default, action_pointer,
|
108
|
+
goto_table, goto_check, goto_default, goto_pointer,
|
109
|
+
nt_base, reduce_table, token_table, shift_n,
|
110
|
+
reduce_n, use_result, * = arg
|
111
|
+
|
112
|
+
_racc_init_sysvars
|
113
|
+
tok = act = i = nil
|
114
|
+
nerr = 0
|
115
|
+
|
116
|
+
catch(:racc_end_parse) {
|
117
|
+
while true
|
118
|
+
if i = action_pointer[@racc_state[-1]]
|
119
|
+
if @racc_read_next
|
120
|
+
if @racc_t != 0 # not EOF
|
121
|
+
tok, @racc_val = next_token()
|
122
|
+
unless tok # EOF
|
123
|
+
@racc_t = 0
|
124
|
+
else
|
125
|
+
@racc_t = (token_table[tok] or 1) # error token
|
126
|
+
end
|
127
|
+
racc_read_token(@racc_t, tok, @racc_val) if @yydebug
|
128
|
+
@racc_read_next = false
|
129
|
+
end
|
130
|
+
end
|
131
|
+
i += @racc_t
|
132
|
+
unless i >= 0 and
|
133
|
+
act = action_table[i] and
|
134
|
+
action_check[i] == @racc_state[-1]
|
135
|
+
act = action_default[@racc_state[-1]]
|
136
|
+
end
|
137
|
+
else
|
138
|
+
act = action_default[@racc_state[-1]]
|
139
|
+
end
|
140
|
+
while act = _racc_evalact(act, arg)
|
141
|
+
;
|
142
|
+
end
|
143
|
+
end
|
144
|
+
}
|
145
|
+
end
|
146
|
+
|
147
|
+
###
|
148
|
+
### yyparse
|
149
|
+
###
|
150
|
+
|
151
|
+
def yyparse(recv, mid)
|
152
|
+
__send__(Racc_YY_Parse_Method, recv, mid, _racc_setup(), true)
|
153
|
+
end
|
154
|
+
|
155
|
+
def _racc_yyparse_rb(recv, mid, arg, c_debug)
|
156
|
+
action_table, action_check, action_default, action_pointer,
|
157
|
+
goto_table, goto_check, goto_default, goto_pointer,
|
158
|
+
nt_base, reduce_table, token_table, shift_n,
|
159
|
+
reduce_n, use_result, * = arg
|
160
|
+
|
161
|
+
_racc_init_sysvars
|
162
|
+
tok = nil
|
163
|
+
act = nil
|
164
|
+
i = nil
|
165
|
+
nerr = 0
|
166
|
+
|
167
|
+
catch(:racc_end_parse) {
|
168
|
+
until i = action_pointer[@racc_state[-1]]
|
169
|
+
while act = _racc_evalact(action_default[@racc_state[-1]], arg)
|
170
|
+
;
|
171
|
+
end
|
172
|
+
end
|
173
|
+
recv.__send__(mid) do |tok, val|
|
174
|
+
unless tok
|
175
|
+
@racc_t = 0
|
176
|
+
else
|
177
|
+
@racc_t = (token_table[tok] or 1) # error token
|
178
|
+
end
|
179
|
+
@racc_val = val
|
180
|
+
@racc_read_next = false
|
181
|
+
|
182
|
+
i += @racc_t
|
183
|
+
unless i >= 0 and
|
184
|
+
act = action_table[i] and
|
185
|
+
action_check[i] == @racc_state[-1]
|
186
|
+
act = action_default[@racc_state[-1]]
|
187
|
+
end
|
188
|
+
while act = _racc_evalact(act, arg)
|
189
|
+
;
|
190
|
+
end
|
191
|
+
|
192
|
+
while not (i = action_pointer[@racc_state[-1]]) or
|
193
|
+
not @racc_read_next or
|
194
|
+
@racc_t == 0 # $
|
195
|
+
unless i and i += @racc_t and
|
196
|
+
i >= 0 and
|
197
|
+
act = action_table[i] and
|
198
|
+
action_check[i] == @racc_state[-1]
|
199
|
+
act = action_default[@racc_state[-1]]
|
200
|
+
end
|
201
|
+
while act = _racc_evalact(act, arg)
|
202
|
+
;
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
206
|
+
}
|
207
|
+
end
|
208
|
+
|
209
|
+
###
|
210
|
+
### common
|
211
|
+
###
|
212
|
+
|
213
|
+
def _racc_evalact(act, arg)
|
214
|
+
action_table, action_check, action_default, action_pointer,
|
215
|
+
goto_table, goto_check, goto_default, goto_pointer,
|
216
|
+
nt_base, reduce_table, token_table, shift_n,
|
217
|
+
reduce_n, use_result, * = arg
|
218
|
+
nerr = 0 # tmp
|
219
|
+
|
220
|
+
if act > 0 and act < shift_n
|
221
|
+
#
|
222
|
+
# shift
|
223
|
+
#
|
224
|
+
if @racc_error_status > 0
|
225
|
+
@racc_error_status -= 1 unless @racc_t == 1 # error token
|
226
|
+
end
|
227
|
+
@racc_vstack.push @racc_val
|
228
|
+
@racc_state.push act
|
229
|
+
@racc_read_next = true
|
230
|
+
if @yydebug
|
231
|
+
@racc_tstack.push @racc_t
|
232
|
+
racc_shift @racc_t, @racc_tstack, @racc_vstack
|
233
|
+
end
|
234
|
+
|
235
|
+
elsif act < 0 and act > -reduce_n
|
236
|
+
#
|
237
|
+
# reduce
|
238
|
+
#
|
239
|
+
code = catch(:racc_jump) {
|
240
|
+
@racc_state.push _racc_do_reduce(arg, act)
|
241
|
+
false
|
242
|
+
}
|
243
|
+
if code
|
244
|
+
case code
|
245
|
+
when 1 # yyerror
|
246
|
+
@racc_user_yyerror = true # user_yyerror
|
247
|
+
return -reduce_n
|
248
|
+
when 2 # yyaccept
|
249
|
+
return shift_n
|
250
|
+
else
|
251
|
+
raise '[Racc Bug] unknown jump code'
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
255
|
+
elsif act == shift_n
|
256
|
+
#
|
257
|
+
# accept
|
258
|
+
#
|
259
|
+
racc_accept if @yydebug
|
260
|
+
throw :racc_end_parse, @racc_vstack[0]
|
261
|
+
|
262
|
+
elsif act == -reduce_n
|
263
|
+
#
|
264
|
+
# error
|
265
|
+
#
|
266
|
+
case @racc_error_status
|
267
|
+
when 0
|
268
|
+
unless arg[21] # user_yyerror
|
269
|
+
nerr += 1
|
270
|
+
on_error @racc_t, @racc_val, @racc_vstack
|
271
|
+
end
|
272
|
+
when 3
|
273
|
+
if @racc_t == 0 # is $
|
274
|
+
throw :racc_end_parse, nil
|
275
|
+
end
|
276
|
+
@racc_read_next = true
|
277
|
+
end
|
278
|
+
@racc_user_yyerror = false
|
279
|
+
@racc_error_status = 3
|
280
|
+
while true
|
281
|
+
if i = action_pointer[@racc_state[-1]]
|
282
|
+
i += 1 # error token
|
283
|
+
if i >= 0 and
|
284
|
+
(act = action_table[i]) and
|
285
|
+
action_check[i] == @racc_state[-1]
|
286
|
+
break
|
287
|
+
end
|
288
|
+
end
|
289
|
+
throw :racc_end_parse, nil if @racc_state.size <= 1
|
290
|
+
@racc_state.pop
|
291
|
+
@racc_vstack.pop
|
292
|
+
if @yydebug
|
293
|
+
@racc_tstack.pop
|
294
|
+
racc_e_pop @racc_state, @racc_tstack, @racc_vstack
|
295
|
+
end
|
296
|
+
end
|
297
|
+
return act
|
298
|
+
|
299
|
+
else
|
300
|
+
raise "[Racc Bug] unknown action #{act.inspect}"
|
301
|
+
end
|
302
|
+
|
303
|
+
racc_next_state(@racc_state[-1], @racc_state) if @yydebug
|
304
|
+
|
305
|
+
nil
|
306
|
+
end
|
307
|
+
|
308
|
+
def _racc_do_reduce(arg, act)
|
309
|
+
action_table, action_check, action_default, action_pointer,
|
310
|
+
goto_table, goto_check, goto_default, goto_pointer,
|
311
|
+
nt_base, reduce_table, token_table, shift_n,
|
312
|
+
reduce_n, use_result, * = arg
|
313
|
+
state = @racc_state
|
314
|
+
vstack = @racc_vstack
|
315
|
+
tstack = @racc_tstack
|
316
|
+
|
317
|
+
i = act * -3
|
318
|
+
len = reduce_table[i]
|
319
|
+
reduce_to = reduce_table[i+1]
|
320
|
+
method_id = reduce_table[i+2]
|
321
|
+
void_array = []
|
322
|
+
|
323
|
+
tmp_t = tstack[-len, len] if @yydebug
|
324
|
+
tmp_v = vstack[-len, len]
|
325
|
+
tstack[-len, len] = void_array if @yydebug
|
326
|
+
vstack[-len, len] = void_array
|
327
|
+
state[-len, len] = void_array
|
328
|
+
|
329
|
+
# tstack must be updated AFTER method call
|
330
|
+
if use_result
|
331
|
+
vstack.push __send__(method_id, tmp_v, vstack, tmp_v[0])
|
332
|
+
else
|
333
|
+
vstack.push __send__(method_id, tmp_v, vstack)
|
334
|
+
end
|
335
|
+
tstack.push reduce_to
|
336
|
+
|
337
|
+
racc_reduce(tmp_t, reduce_to, tstack, vstack) if @yydebug
|
338
|
+
|
339
|
+
k1 = reduce_to - nt_base
|
340
|
+
if i = goto_pointer[k1]
|
341
|
+
i += state[-1]
|
342
|
+
if i >= 0 and (curstate = goto_table[i]) and goto_check[i] == k1
|
343
|
+
return curstate
|
344
|
+
end
|
345
|
+
end
|
346
|
+
goto_default[k1]
|
347
|
+
end
|
348
|
+
|
349
|
+
def on_error(t, val, vstack)
|
350
|
+
raise ParseError, sprintf("\nparse error on value %s (%s)",
|
351
|
+
val.inspect, token_to_str(t) || '?')
|
352
|
+
end
|
353
|
+
|
354
|
+
def yyerror
|
355
|
+
throw :racc_jump, 1
|
356
|
+
end
|
357
|
+
|
358
|
+
def yyaccept
|
359
|
+
throw :racc_jump, 2
|
360
|
+
end
|
361
|
+
|
362
|
+
def yyerrok
|
363
|
+
@racc_error_status = 0
|
364
|
+
end
|
365
|
+
|
366
|
+
#
|
367
|
+
# for debugging output
|
368
|
+
#
|
369
|
+
|
370
|
+
def racc_read_token(t, tok, val)
|
371
|
+
@racc_debug_out.print 'read '
|
372
|
+
@racc_debug_out.print tok.inspect, '(', racc_token2str(t), ') '
|
373
|
+
@racc_debug_out.puts val.inspect
|
374
|
+
@racc_debug_out.puts
|
375
|
+
end
|
376
|
+
|
377
|
+
def racc_shift(tok, tstack, vstack)
|
378
|
+
@racc_debug_out.puts "shift #{racc_token2str tok}"
|
379
|
+
racc_print_stacks tstack, vstack
|
380
|
+
@racc_debug_out.puts
|
381
|
+
end
|
382
|
+
|
383
|
+
def racc_reduce(toks, sim, tstack, vstack)
|
384
|
+
out = @racc_debug_out
|
385
|
+
out.print 'reduce '
|
386
|
+
if toks.empty?
|
387
|
+
out.print ' <none>'
|
388
|
+
else
|
389
|
+
toks.each {|t| out.print ' ', racc_token2str(t) }
|
390
|
+
end
|
391
|
+
out.puts " --> #{racc_token2str(sim)}"
|
392
|
+
|
393
|
+
racc_print_stacks tstack, vstack
|
394
|
+
@racc_debug_out.puts
|
395
|
+
end
|
396
|
+
|
397
|
+
def racc_accept
|
398
|
+
@racc_debug_out.puts 'accept'
|
399
|
+
@racc_debug_out.puts
|
400
|
+
end
|
401
|
+
|
402
|
+
def racc_e_pop(state, tstack, vstack)
|
403
|
+
@racc_debug_out.puts 'error recovering mode: pop token'
|
404
|
+
racc_print_states state
|
405
|
+
racc_print_stacks tstack, vstack
|
406
|
+
@racc_debug_out.puts
|
407
|
+
end
|
408
|
+
|
409
|
+
def racc_next_state(curstate, state)
|
410
|
+
@racc_debug_out.puts "goto #{curstate}"
|
411
|
+
racc_print_states state
|
412
|
+
@racc_debug_out.puts
|
413
|
+
end
|
414
|
+
|
415
|
+
def racc_print_stacks(t, v)
|
416
|
+
out = @racc_debug_out
|
417
|
+
out.print ' ['
|
418
|
+
t.each_index do |i|
|
419
|
+
out.print ' (', racc_token2str(t[i]), ' ', v[i].inspect, ')'
|
420
|
+
end
|
421
|
+
out.puts ' ]'
|
422
|
+
end
|
423
|
+
|
424
|
+
def racc_print_states(s)
|
425
|
+
out = @racc_debug_out
|
426
|
+
out.print ' ['
|
427
|
+
s.each {|st| out.print ' ', st }
|
428
|
+
out.puts ' ]'
|
429
|
+
end
|
430
|
+
|
431
|
+
def racc_token2str(tok)
|
432
|
+
self.class::Racc_token_to_s_table[tok] or
|
433
|
+
raise "[Racc Bug] can't convert token #{tok} to string"
|
434
|
+
end
|
435
|
+
|
436
|
+
def token_to_str(t)
|
437
|
+
self.class::Racc_token_to_s_table[t]
|
438
|
+
end
|
439
|
+
|
440
|
+
end
|
441
|
+
|
442
|
+
end
|
@@ -0,0 +1,564 @@
|
|
1
|
+
#
|
2
|
+
# rational.rb -
|
3
|
+
# $Release Version: 0.5 $
|
4
|
+
# $Revision: 1.7 $
|
5
|
+
# $Date: 1999/08/24 12:49:28 $
|
6
|
+
# by Keiju ISHITSUKA(SHL Japan Inc.)
|
7
|
+
#
|
8
|
+
# Documentation by Kevin Jackson and Gavin Sinclair.
|
9
|
+
#
|
10
|
+
# When you <tt>require 'rational'</tt>, all interactions between numbers
|
11
|
+
# potentially return a rational result. For example:
|
12
|
+
#
|
13
|
+
# 1.quo(2) # -> 0.5
|
14
|
+
# require 'rational'
|
15
|
+
# 1.quo(2) # -> Rational(1,2)
|
16
|
+
#
|
17
|
+
# See Rational for full documentation.
|
18
|
+
#
|
19
|
+
|
20
|
+
|
21
|
+
#
|
22
|
+
# Creates a Rational number (i.e. a fraction). +a+ and +b+ should be Integers:
|
23
|
+
#
|
24
|
+
# Rational(1,3) # -> 1/3
|
25
|
+
#
|
26
|
+
# Note: trying to construct a Rational with floating point or real values
|
27
|
+
# produces errors:
|
28
|
+
#
|
29
|
+
# Rational(1.1, 2.3) # -> NoMethodError
|
30
|
+
#
|
31
|
+
def Rational(a, b = 1)
|
32
|
+
if a.kind_of?(Rational) && b == 1
|
33
|
+
a
|
34
|
+
else
|
35
|
+
Rational.reduce(a, b)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
#
|
40
|
+
# Rational implements a rational class for numbers.
|
41
|
+
#
|
42
|
+
# <em>A rational number is a number that can be expressed as a fraction p/q
|
43
|
+
# where p and q are integers and q != 0. A rational number p/q is said to have
|
44
|
+
# numerator p and denominator q. Numbers that are not rational are called
|
45
|
+
# irrational numbers.</em> (http://mathworld.wolfram.com/RationalNumber.html)
|
46
|
+
#
|
47
|
+
# To create a Rational Number:
|
48
|
+
# Rational(a,b) # -> a/b
|
49
|
+
# Rational.new!(a,b) # -> a/b
|
50
|
+
#
|
51
|
+
# Examples:
|
52
|
+
# Rational(5,6) # -> 5/6
|
53
|
+
# Rational(5) # -> 5/1
|
54
|
+
#
|
55
|
+
# Rational numbers are reduced to their lowest terms:
|
56
|
+
# Rational(6,10) # -> 3/5
|
57
|
+
#
|
58
|
+
# But not if you use the unusual method "new!":
|
59
|
+
# Rational.new!(6,10) # -> 6/10
|
60
|
+
#
|
61
|
+
# Division by zero is obviously not allowed:
|
62
|
+
# Rational(3,0) # -> ZeroDivisionError
|
63
|
+
#
|
64
|
+
class Rational < Numeric
|
65
|
+
@RCS_ID='-$Id: rational.rb,v 1.7 1999/08/24 12:49:28 keiju Exp keiju $-'
|
66
|
+
|
67
|
+
#
|
68
|
+
# Reduces the given numerator and denominator to their lowest terms. Use
|
69
|
+
# Rational() instead.
|
70
|
+
#
|
71
|
+
def Rational.reduce(num, den = 1)
|
72
|
+
raise ZeroDivisionError, "denominator is zero" if den == 0
|
73
|
+
|
74
|
+
if den < 0
|
75
|
+
num = -num
|
76
|
+
den = -den
|
77
|
+
end
|
78
|
+
gcd = num.gcd(den)
|
79
|
+
num = num.div(gcd)
|
80
|
+
den = den.div(gcd)
|
81
|
+
if den == 1 && defined?(Unify)
|
82
|
+
num
|
83
|
+
else
|
84
|
+
new!(num, den)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
#
|
89
|
+
# Implements the constructor. This method does not reduce to lowest terms or
|
90
|
+
# check for division by zero. Therefore #Rational() should be preferred in
|
91
|
+
# normal use.
|
92
|
+
#
|
93
|
+
def Rational.new!(num, den = 1)
|
94
|
+
new(num, den)
|
95
|
+
end
|
96
|
+
|
97
|
+
private_class_method :new
|
98
|
+
|
99
|
+
#
|
100
|
+
# This method is actually private.
|
101
|
+
#
|
102
|
+
def initialize(num, den)
|
103
|
+
if den < 0
|
104
|
+
num = -num
|
105
|
+
den = -den
|
106
|
+
end
|
107
|
+
if num.kind_of?(Integer) and den.kind_of?(Integer)
|
108
|
+
@numerator = num
|
109
|
+
@denominator = den
|
110
|
+
else
|
111
|
+
@numerator = num.to_i
|
112
|
+
@denominator = den.to_i
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
#
|
117
|
+
# Returns the addition of this value and +a+.
|
118
|
+
#
|
119
|
+
# Examples:
|
120
|
+
# r = Rational(3,4) # -> Rational(3,4)
|
121
|
+
# r + 1 # -> Rational(7,4)
|
122
|
+
# r + 0.5 # -> 1.25
|
123
|
+
#
|
124
|
+
def + (a)
|
125
|
+
if a.kind_of?(Rational)
|
126
|
+
num = @numerator * a.denominator
|
127
|
+
num_a = a.numerator * @denominator
|
128
|
+
Rational(num + num_a, @denominator * a.denominator)
|
129
|
+
elsif a.kind_of?(Integer)
|
130
|
+
self + Rational.new!(a, 1)
|
131
|
+
elsif a.kind_of?(Float)
|
132
|
+
Float(self) + a
|
133
|
+
else
|
134
|
+
x, y = a.coerce(self)
|
135
|
+
x + y
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
#
|
140
|
+
# Returns the difference of this value and +a+.
|
141
|
+
# subtracted.
|
142
|
+
#
|
143
|
+
# Examples:
|
144
|
+
# r = Rational(3,4) # -> Rational(3,4)
|
145
|
+
# r - 1 # -> Rational(-1,4)
|
146
|
+
# r - 0.5 # -> 0.25
|
147
|
+
#
|
148
|
+
def - (a)
|
149
|
+
if a.kind_of?(Rational)
|
150
|
+
num = @numerator * a.denominator
|
151
|
+
num_a = a.numerator * @denominator
|
152
|
+
Rational(num - num_a, @denominator*a.denominator)
|
153
|
+
elsif a.kind_of?(Integer)
|
154
|
+
self - Rational.new!(a, 1)
|
155
|
+
elsif a.kind_of?(Float)
|
156
|
+
Float(self) - a
|
157
|
+
else
|
158
|
+
x, y = a.coerce(self)
|
159
|
+
x - y
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
#
|
164
|
+
# Returns the product of this value and +a+.
|
165
|
+
#
|
166
|
+
# Examples:
|
167
|
+
# r = Rational(3,4) # -> Rational(3,4)
|
168
|
+
# r * 2 # -> Rational(3,2)
|
169
|
+
# r * 4 # -> Rational(3,1)
|
170
|
+
# r * 0.5 # -> 0.375
|
171
|
+
# r * Rational(1,2) # -> Rational(3,8)
|
172
|
+
#
|
173
|
+
def * (a)
|
174
|
+
if a.kind_of?(Rational)
|
175
|
+
num = @numerator * a.numerator
|
176
|
+
den = @denominator * a.denominator
|
177
|
+
Rational(num, den)
|
178
|
+
elsif a.kind_of?(Integer)
|
179
|
+
self * Rational.new!(a, 1)
|
180
|
+
elsif a.kind_of?(Float)
|
181
|
+
Float(self) * a
|
182
|
+
else
|
183
|
+
x, y = a.coerce(self)
|
184
|
+
x * y
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
#
|
189
|
+
# Returns the quotient of this value and +a+.
|
190
|
+
# r = Rational(3,4) # -> Rational(3,4)
|
191
|
+
# r / 2 # -> Rational(3,8)
|
192
|
+
# r / 2.0 # -> 0.375
|
193
|
+
# r / Rational(1,2) # -> Rational(3,2)
|
194
|
+
#
|
195
|
+
def / (a)
|
196
|
+
if a.kind_of?(Rational)
|
197
|
+
num = @numerator * a.denominator
|
198
|
+
den = @denominator * a.numerator
|
199
|
+
Rational(num, den)
|
200
|
+
elsif a.kind_of?(Integer)
|
201
|
+
raise ZeroDivisionError, "division by zero" if a == 0
|
202
|
+
self / Rational.new!(a, 1)
|
203
|
+
elsif a.kind_of?(Float)
|
204
|
+
Float(self) / a
|
205
|
+
else
|
206
|
+
x, y = a.coerce(self)
|
207
|
+
x / y
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
#
|
212
|
+
# Returns this value raised to the given power.
|
213
|
+
#
|
214
|
+
# Examples:
|
215
|
+
# r = Rational(3,4) # -> Rational(3,4)
|
216
|
+
# r ** 2 # -> Rational(9,16)
|
217
|
+
# r ** 2.0 # -> 0.5625
|
218
|
+
# r ** Rational(1,2) # -> 0.866025403784439
|
219
|
+
#
|
220
|
+
def ** (other)
|
221
|
+
if other.kind_of?(Rational)
|
222
|
+
Float(self) ** other
|
223
|
+
elsif other.kind_of?(Integer)
|
224
|
+
if other > 0
|
225
|
+
num = @numerator ** other
|
226
|
+
den = @denominator ** other
|
227
|
+
elsif other < 0
|
228
|
+
num = @denominator ** -other
|
229
|
+
den = @numerator ** -other
|
230
|
+
elsif other == 0
|
231
|
+
num = 1
|
232
|
+
den = 1
|
233
|
+
end
|
234
|
+
Rational.new!(num, den)
|
235
|
+
elsif other.kind_of?(Float)
|
236
|
+
Float(self) ** other
|
237
|
+
else
|
238
|
+
x, y = other.coerce(self)
|
239
|
+
x ** y
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
243
|
+
def div(other)
|
244
|
+
(self / other).floor
|
245
|
+
end
|
246
|
+
|
247
|
+
#
|
248
|
+
# Returns the remainder when this value is divided by +other+.
|
249
|
+
#
|
250
|
+
# Examples:
|
251
|
+
# r = Rational(7,4) # -> Rational(7,4)
|
252
|
+
# r % Rational(1,2) # -> Rational(1,4)
|
253
|
+
# r % 1 # -> Rational(3,4)
|
254
|
+
# r % Rational(1,7) # -> Rational(1,28)
|
255
|
+
# r % 0.26 # -> 0.19
|
256
|
+
#
|
257
|
+
def % (other)
|
258
|
+
value = (self / other).floor
|
259
|
+
return self - other * value
|
260
|
+
end
|
261
|
+
|
262
|
+
#
|
263
|
+
# Returns the quotient _and_ remainder.
|
264
|
+
#
|
265
|
+
# Examples:
|
266
|
+
# r = Rational(7,4) # -> Rational(7,4)
|
267
|
+
# r.divmod Rational(1,2) # -> [3, Rational(1,4)]
|
268
|
+
#
|
269
|
+
def divmod(other)
|
270
|
+
value = (self / other).floor
|
271
|
+
return value, self - other * value
|
272
|
+
end
|
273
|
+
|
274
|
+
#
|
275
|
+
# Returns the absolute value.
|
276
|
+
#
|
277
|
+
def abs
|
278
|
+
if @numerator > 0
|
279
|
+
self
|
280
|
+
else
|
281
|
+
Rational.new!(-@numerator, @denominator)
|
282
|
+
end
|
283
|
+
end
|
284
|
+
|
285
|
+
#
|
286
|
+
# Returns +true+ iff this value is numerically equal to +other+.
|
287
|
+
#
|
288
|
+
# But beware:
|
289
|
+
# Rational(1,2) == Rational(4,8) # -> true
|
290
|
+
# Rational(1,2) == Rational.new!(4,8) # -> false
|
291
|
+
#
|
292
|
+
# Don't use Rational.new!
|
293
|
+
#
|
294
|
+
def == (other)
|
295
|
+
if other.kind_of?(Rational)
|
296
|
+
@numerator == other.numerator and @denominator == other.denominator
|
297
|
+
elsif other.kind_of?(Integer)
|
298
|
+
self == Rational.new!(other, 1)
|
299
|
+
elsif other.kind_of?(Float)
|
300
|
+
Float(self) == other
|
301
|
+
else
|
302
|
+
other == self
|
303
|
+
end
|
304
|
+
end
|
305
|
+
|
306
|
+
#
|
307
|
+
# Standard comparison operator.
|
308
|
+
#
|
309
|
+
def <=> (other)
|
310
|
+
if other.kind_of?(Rational)
|
311
|
+
num = @numerator * other.denominator
|
312
|
+
num_a = other.numerator * @denominator
|
313
|
+
v = num - num_a
|
314
|
+
if v > 0
|
315
|
+
return 1
|
316
|
+
elsif v < 0
|
317
|
+
return -1
|
318
|
+
else
|
319
|
+
return 0
|
320
|
+
end
|
321
|
+
elsif other.kind_of?(Integer)
|
322
|
+
return self <=> Rational.new!(other, 1)
|
323
|
+
elsif other.kind_of?(Float)
|
324
|
+
return Float(self) <=> other
|
325
|
+
elsif defined? other.coerce
|
326
|
+
x, y = other.coerce(self)
|
327
|
+
return x <=> y
|
328
|
+
else
|
329
|
+
return nil
|
330
|
+
end
|
331
|
+
end
|
332
|
+
|
333
|
+
def coerce(other)
|
334
|
+
if other.kind_of?(Float)
|
335
|
+
return other, self.to_f
|
336
|
+
elsif other.kind_of?(Integer)
|
337
|
+
return Rational.new!(other, 1), self
|
338
|
+
else
|
339
|
+
super
|
340
|
+
end
|
341
|
+
end
|
342
|
+
|
343
|
+
#
|
344
|
+
# Converts the rational to an Integer. Not the _nearest_ integer, the
|
345
|
+
# truncated integer. Study the following example carefully:
|
346
|
+
# Rational(+7,4).to_i # -> 1
|
347
|
+
# Rational(-7,4).to_i # -> -1
|
348
|
+
# (-1.75).to_i # -> -1
|
349
|
+
#
|
350
|
+
# In other words:
|
351
|
+
# Rational(-7,4) == -1.75 # -> true
|
352
|
+
# Rational(-7,4).to_i == (-1.75).to_i # -> true
|
353
|
+
#
|
354
|
+
|
355
|
+
|
356
|
+
def floor()
|
357
|
+
@numerator.div(@denominator)
|
358
|
+
end
|
359
|
+
|
360
|
+
def ceil()
|
361
|
+
-((-@numerator).div(@denominator))
|
362
|
+
end
|
363
|
+
|
364
|
+
def truncate()
|
365
|
+
if @numerator < 0
|
366
|
+
return -((-@numerator).div(@denominator))
|
367
|
+
end
|
368
|
+
@numerator.div(@denominator)
|
369
|
+
end
|
370
|
+
|
371
|
+
alias_method :to_i, :truncate
|
372
|
+
|
373
|
+
def round()
|
374
|
+
if @numerator < 0
|
375
|
+
num = -@numerator
|
376
|
+
num = num * 2 + @denominator
|
377
|
+
den = @denominator * 2
|
378
|
+
-(num.div(den))
|
379
|
+
else
|
380
|
+
num = @numerator * 2 + @denominator
|
381
|
+
den = @denominator * 2
|
382
|
+
num.div(den)
|
383
|
+
end
|
384
|
+
end
|
385
|
+
|
386
|
+
#
|
387
|
+
# Converts the rational to a Float.
|
388
|
+
#
|
389
|
+
def to_f
|
390
|
+
@numerator.to_f/@denominator.to_f
|
391
|
+
end
|
392
|
+
|
393
|
+
#
|
394
|
+
# Returns a string representation of the rational number.
|
395
|
+
#
|
396
|
+
# Example:
|
397
|
+
# Rational(3,4).to_s # "3/4"
|
398
|
+
# Rational(8).to_s # "8"
|
399
|
+
#
|
400
|
+
def to_s
|
401
|
+
if @denominator == 1
|
402
|
+
@numerator.to_s
|
403
|
+
else
|
404
|
+
@numerator.to_s+"/"+@denominator.to_s
|
405
|
+
end
|
406
|
+
end
|
407
|
+
|
408
|
+
#
|
409
|
+
# Returns +self+.
|
410
|
+
#
|
411
|
+
def to_r
|
412
|
+
self
|
413
|
+
end
|
414
|
+
|
415
|
+
#
|
416
|
+
# Returns a reconstructable string representation:
|
417
|
+
#
|
418
|
+
# Rational(5,8).inspect # -> "Rational(5, 8)"
|
419
|
+
#
|
420
|
+
def inspect
|
421
|
+
sprintf("Rational(%s, %s)", @numerator.inspect, @denominator.inspect)
|
422
|
+
end
|
423
|
+
|
424
|
+
#
|
425
|
+
# Returns a hash code for the object.
|
426
|
+
#
|
427
|
+
def hash
|
428
|
+
@numerator.hash ^ @denominator.hash
|
429
|
+
end
|
430
|
+
|
431
|
+
attr :numerator
|
432
|
+
attr :denominator
|
433
|
+
|
434
|
+
private :initialize
|
435
|
+
end
|
436
|
+
|
437
|
+
class Integer
|
438
|
+
#
|
439
|
+
# In an integer, the value _is_ the numerator of its rational equivalent.
|
440
|
+
# Therefore, this method returns +self+.
|
441
|
+
#
|
442
|
+
def numerator
|
443
|
+
self
|
444
|
+
end
|
445
|
+
|
446
|
+
#
|
447
|
+
# In an integer, the denominator is 1. Therefore, this method returns 1.
|
448
|
+
#
|
449
|
+
def denominator
|
450
|
+
1
|
451
|
+
end
|
452
|
+
|
453
|
+
#
|
454
|
+
# Returns a Rational representation of this integer.
|
455
|
+
#
|
456
|
+
def to_r
|
457
|
+
Rational(self, 1)
|
458
|
+
end
|
459
|
+
|
460
|
+
#
|
461
|
+
# Returns the <em>greatest common denominator</em> of the two numbers (+self+
|
462
|
+
# and +n+).
|
463
|
+
#
|
464
|
+
# Examples:
|
465
|
+
# 72.gcd 168 # -> 24
|
466
|
+
# 19.gcd 36 # -> 1
|
467
|
+
#
|
468
|
+
# The result is positive, no matter the sign of the arguments.
|
469
|
+
#
|
470
|
+
def gcd(other)
|
471
|
+
min = self.abs
|
472
|
+
max = other.abs
|
473
|
+
while min > 0
|
474
|
+
tmp = min
|
475
|
+
min = max % min
|
476
|
+
max = tmp
|
477
|
+
end
|
478
|
+
max
|
479
|
+
end
|
480
|
+
|
481
|
+
#
|
482
|
+
# Returns the <em>lowest common multiple</em> (LCM) of the two arguments
|
483
|
+
# (+self+ and +other+).
|
484
|
+
#
|
485
|
+
# Examples:
|
486
|
+
# 6.lcm 7 # -> 42
|
487
|
+
# 6.lcm 9 # -> 18
|
488
|
+
#
|
489
|
+
def lcm(other)
|
490
|
+
if self.zero? or other.zero?
|
491
|
+
0
|
492
|
+
else
|
493
|
+
(self.div(self.gcd(other)) * other).abs
|
494
|
+
end
|
495
|
+
end
|
496
|
+
|
497
|
+
#
|
498
|
+
# Returns the GCD _and_ the LCM (see #gcd and #lcm) of the two arguments
|
499
|
+
# (+self+ and +other+). This is more efficient than calculating them
|
500
|
+
# separately.
|
501
|
+
#
|
502
|
+
# Example:
|
503
|
+
# 6.gcdlcm 9 # -> [3, 18]
|
504
|
+
#
|
505
|
+
def gcdlcm(other)
|
506
|
+
gcd = self.gcd(other)
|
507
|
+
if self.zero? or other.zero?
|
508
|
+
[gcd, 0]
|
509
|
+
else
|
510
|
+
[gcd, (self.div(gcd) * other).abs]
|
511
|
+
end
|
512
|
+
end
|
513
|
+
end
|
514
|
+
|
515
|
+
class Fixnum
|
516
|
+
remove_method :quo
|
517
|
+
|
518
|
+
# If Rational is defined, returns a Rational number instead of a Float.
|
519
|
+
def quo(other)
|
520
|
+
Rational.new!(self, 1) / other
|
521
|
+
end
|
522
|
+
alias rdiv quo
|
523
|
+
|
524
|
+
# Returns a Rational number if the result is in fact rational (i.e. +other+ < 0).
|
525
|
+
def rpower (other)
|
526
|
+
if other >= 0
|
527
|
+
self.power!(other)
|
528
|
+
else
|
529
|
+
Rational.new!(self, 1)**other
|
530
|
+
end
|
531
|
+
end
|
532
|
+
|
533
|
+
end
|
534
|
+
|
535
|
+
class Bignum
|
536
|
+
remove_method :quo
|
537
|
+
|
538
|
+
# If Rational is defined, returns a Rational number instead of a Float.
|
539
|
+
def quo(other)
|
540
|
+
Rational.new!(self, 1) / other
|
541
|
+
end
|
542
|
+
alias rdiv quo
|
543
|
+
|
544
|
+
# Returns a Rational number if the result is in fact rational (i.e. +other+ < 0).
|
545
|
+
def rpower (other)
|
546
|
+
if other >= 0
|
547
|
+
self.power!(other)
|
548
|
+
else
|
549
|
+
Rational.new!(self, 1)**other
|
550
|
+
end
|
551
|
+
end
|
552
|
+
|
553
|
+
end
|
554
|
+
|
555
|
+
unless defined? 1.power!
|
556
|
+
class Fixnum
|
557
|
+
alias power! **
|
558
|
+
alias ** rpower
|
559
|
+
end
|
560
|
+
class Bignum
|
561
|
+
alias power! **
|
562
|
+
alias ** rpower
|
563
|
+
end
|
564
|
+
end
|