summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-print/mrblib
diff options
context:
space:
mode:
authormattn <[email protected]>2013-03-24 00:20:35 +0900
committermattn <[email protected]>2013-03-24 00:20:35 +0900
commitb69761e28623c88f142fbff92d7b361d1129ee5f (patch)
treea2cfe405a8931a120ada39b87a6ff36fd3b904d6 /mrbgems/mruby-print/mrblib
parente53fa35748284b6f0b9647dee3f970a2a9c95907 (diff)
downloadmruby-b69761e28623c88f142fbff92d7b361d1129ee5f.tar.gz
mruby-b69761e28623c88f142fbff92d7b361d1129ee5f.zip
Add mruby-print
Diffstat (limited to 'mrbgems/mruby-print/mrblib')
-rw-r--r--mrbgems/mruby-print/mrblib/print.rb64
1 files changed, 64 insertions, 0 deletions
diff --git a/mrbgems/mruby-print/mrblib/print.rb b/mrbgems/mruby-print/mrblib/print.rb
new file mode 100644
index 000000000..38a10661b
--- /dev/null
+++ b/mrbgems/mruby-print/mrblib/print.rb
@@ -0,0 +1,64 @@
+##
+# Kernel
+#
+# ISO 15.3.1
+module Kernel
+ ##
+ # Invoke method +print+ on STDOUT and passing +*args+
+ #
+ # ISO 15.3.1.2.10
+ def print(*args)
+ i = 0
+ len = args.size
+ while i < len
+ __printstr__ args[i].to_s
+ i += 1
+ end
+ end
+
+ ##
+ # Invoke method +puts+ on STDOUT and passing +*args*+
+ #
+ # ISO 15.3.1.2.11
+ def puts(*args)
+ i = 0
+ len = args.size
+ while i < len
+ s = args[i].to_s
+ __printstr__ s
+ __printstr__ "\n" if (s[-1] != "\n")
+ i += 1
+ end
+ __printstr__ "\n" if len == 0
+ nil
+ end
+
+ ##
+ # Print human readable object description
+ #
+ # ISO 15.3.1.3.34
+ def p(*args)
+ i = 0
+ len = args.size
+ while i < len
+ __printstr__ args[i].inspect
+ __printstr__ "\n"
+ i += 1
+ end
+ args[0]
+ end
+
+ unless Kernel.respond_to?(:sprintf)
+ def printf(*args)
+ raise NotImplementedError.new('printf not available')
+ end
+ def sprintf(*args)
+ raise NotImplementedError.new('sprintf not available')
+ end
+ else
+ def printf(*args)
+ __printstr__(sprintf(*args))
+ nil
+ end
+ end
+end