Author: dmacvicar
Date: Tue Nov 3 13:43:05 2009
New Revision: 59275
URL: http://svn.opensuse.org/viewcvs/yast?rev=59275&view=rev
Log:
support for nested namespaces (Foo::Bar)
(bnc #551881)
Added:
trunk/ruby-bindings/src/ruby/Y2RubyUtils.cc
trunk/ruby-bindings/src/ruby/Y2RubyUtils.h
Modified:
trunk/ruby-bindings/src/ruby/CMakeLists.txt
trunk/ruby-bindings/src/ruby/YRuby.cc
trunk/ruby-bindings/src/ruby/YRubyNamespace.cc
Modified: trunk/ruby-bindings/src/ruby/CMakeLists.txt
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ruby-bindings/src/ruby/CMakeLists.txt?rev=59275&r1=59274&r2=59275&view=diff
==============================================================================
--- trunk/ruby-bindings/src/ruby/CMakeLists.txt (original)
+++ trunk/ruby-bindings/src/ruby/CMakeLists.txt Tue Nov 3 13:43:05 2009
@@ -7,6 +7,7 @@
Y2RubyTypeTerm.cc # YCP.cc -> ryast_term_init()
Y2RubyTypeConv.cc # YCP.cc -> ycpvalue_2_rbvalue(), rbvalue_2_ycpvalue()
RubyLogger.cc
+ Y2RubyUtils.cc
RubyLogger.h
)
@@ -19,6 +20,7 @@
Y2RubyTypeConv.cc
Y2RubyTypePath.cc
Y2RubyTypeTerm.cc
+ Y2RubyUtils.cc
)
SET(ruby_yast_plugin_HEADERS
@@ -27,6 +29,7 @@
Y2RubyComponent.h
YRuby.h
YRubyNamespace.h
+ Y2RubyUtils.h
Y2RubyTypePath.h
Y2RubyTypeTerm.h
)
Added: trunk/ruby-bindings/src/ruby/Y2RubyUtils.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ruby-bindings/src/ruby/Y2RubyUtils.cc?rev=59275&view=auto
==============================================================================
--- trunk/ruby-bindings/src/ruby/Y2RubyUtils.cc (added)
+++ trunk/ruby-bindings/src/ruby/Y2RubyUtils.cc Tue Nov 3 13:43:05 2009
@@ -0,0 +1,20 @@
+#include <vector>
+#include <string>
+
+#include "y2util/stringutil.h"
+#include "Y2RubyUtils.h"
+
+using namespace std;
+
+VALUE y2ruby_nested_const_get(const std::string &name)
+{
+ VALUE module = rb_mKernel;
+ // to save every component of Foo::Bar::Ehh
+ vector<string> name_levels;
+ stringutil::split( name, name_levels, "::", false);
+
+ for ( unsigned i = 0; i < name_levels.size(); ++i ) {
+ module = rb_funcall( module, rb_intern("const_get"), 1, rb_str_new2(name_levels[i].c_str()) );
+ }
+ return module;
+}
Added: trunk/ruby-bindings/src/ruby/Y2RubyUtils.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ruby-bindings/src/ruby/Y2RubyUtils.h?rev=59275&view=auto
==============================================================================
--- trunk/ruby-bindings/src/ruby/Y2RubyUtils.h (added)
+++ trunk/ruby-bindings/src/ruby/Y2RubyUtils.h Tue Nov 3 13:43:05 2009
@@ -0,0 +1,34 @@
+/*---------------------------------------------------------------------\
+| |
+| __ __ ____ _____ ____ |
+| \ \ / /_ _/ ___|_ _|___ \ |
+| \ V / _` \___ \ | | __) | |
+| | | (_| |___) || | / __/ |
+| |_|\__,_|____/ |_| |_____| |
+| |
+| |
+| ruby language support (C) Novell Inc. |
+\----------------------------------------------------------------------/
+
+Author: Duncan Mac-Vicar