[前][次][番号順一覧][スレッド一覧]

ruby-changes:27639

From: kosaki <ko1@a...>
Date: Sun, 10 Mar 2013 14:12:48 +0900 (JST)
Subject: [ruby-changes:27639] kosaki:r39692 (trunk): * tool/gen_ruby_tapset.rb: add tapset generator.

kosaki	2013-03-10 14:12:09 +0900 (Sun, 10 Mar 2013)

  New Revision: 39692

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=39692

  Log:
    * tool/gen_ruby_tapset.rb: add tapset generator.

  Added files:
    trunk/tool/gen_ruby_tapset.rb
  Modified files:
    trunk/ChangeLog

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 39691)
+++ ChangeLog	(revision 39692)
@@ -1,3 +1,7 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Wed Mar  6 00:30:40 2013  KOSAKI Motohiro  <kosaki.motohiro@g...>
+
+	* tool/gen_ruby_tapset.rb: add tapset generator.
+
 Wed Mar  6 03:27:43 2013  KOSAKI Motohiro  <kosaki.motohiro@g...>
 
 	* probes.d (symbol-create): change argument name `string' to
Index: tool/gen_ruby_tapset.rb
===================================================================
--- tool/gen_ruby_tapset.rb	(revision 0)
+++ tool/gen_ruby_tapset.rb	(revision 39692)
@@ -0,0 +1,105 @@ https://github.com/ruby/ruby/blob/trunk/tool/gen_ruby_tapset.rb#L1
+#!/usr/bin/ruby
+# -*- coding: us-ascii -*-
+# usage: ./ruby gen_ruby_tapset.rb --ruby-path=/path/to/ruby probes.d > output
+
+require "optparse"
+
+def set_argument (argname, nth)
+  # remove C style type info
+  argname.gsub!(/.+ (.+)/, '\1') # e.g. char *hoge -> *hoge
+  argname.gsub!(/^\*/, '')       # e.g. *filename -> filename
+
+  "#{argname} = $arg#{nth}"
+end
+
+ruby_path = "/usr/local/ruby"
+
+opts = OptionParser.new
+opts.on("--ruby-path=PATH"){|v| ruby_path = v}
+opts.parse!(ARGV)
+
+text = ARGF.read
+
+# remove preprocessor directives
+text.gsub!(/^#.*$/, '')
+
+# remove provider name
+text.gsub!(/^provider ruby \{/, "")
+text.gsub!(/^\};/, "")
+
+# probename()
+text.gsub!(/probe (.+)\( *\);/) {
+  probe_name = $1
+  probe = <<-End
+    probe #{probe_name} = process("ruby").provider("ruby").mark("#{probe_name}")
+    {
+    }
+  End
+}
+
+# probename(arg1)
+text.gsub!(/ *probe (.+)\(([^,)]+)\);/) {
+  probe_name = $1
+  arg1 = $2
+
+  probe = <<-End
+    probe #{probe_name} = process("ruby").provider("ruby").mark("#{probe_name}")
+    {
+      #{set_argument(arg1, 1)}
+    }
+  End
+}
+
+# probename(arg1, arg2)
+text.gsub!(/ *probe (.+)\(([^,)]+),([^,)]+)\);/) {
+  probe_name = $1
+  arg1 = $2
+  arg2 = $3
+
+  probe = <<-End
+    probe #{probe_name} = process("#{ruby_path}").provider("ruby").mark("#{probe_name}")
+    {
+      #{set_argument(arg1, 1)}
+      #{set_argument(arg2, 2)}
+    }
+  End
+}
+
+# probename(arg1, arg2, arg3)
+text.gsub!(/ *probe (.+)\(([^,)]+),([^,)]+),([^,)]+)\);/) {
+  probe_name = $1
+  arg1 = $2
+  arg2 = $3
+  arg3 = $4
+
+  probe = <<-End
+    probe #{probe_name} = process("#{ruby_path}").provider("ruby").mark("#{probe_name}")
+    {
+      #{set_argument(arg1, 1)}
+      #{set_argument(arg2, 2)}
+      #{set_argument(arg3, 3)}
+    }
+  End
+}
+
+# probename(arg1, arg2, arg3, arg4)
+text.gsub!(/ *probe (.+)\(([^,)]+),([^,)]+),([^,)]+),([^,)]+)\);/) {
+  probe_name = $1
+  arg1 = $2
+  arg2 = $3
+  arg3 = $4
+  arg4 = $5
+
+  probe = <<-End
+    probe #{probe_name} = process("#{ruby_path}").provider("ruby").mark("#{probe_name}")
+    {
+      #{set_argument(arg1, 1)}
+      #{set_argument(arg2, 2)}
+      #{set_argument(arg3, 3)}
+      #{set_argument(arg4, 4)}
+    }
+  End
+}
+
+print text
+

Property changes on: tool/gen_ruby_tapset.rb
___________________________________________________________________
Added: svn:executable
   + *


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]