[yast-commit] r40946 - in /trunk/ruby-bindings/src/ruby: Y2CCRuby.cc Y2RubyTypeConv.cc Y2RubyTypeTerm.cc Y2RubyTypeTerm.h YCP.cc yast.rb
Author: dmacvicar
Date: Mon Sep 17 18:26:46 2007
New Revision: 40946
URL: http://svn.opensuse.org/viewcvs/yast?rev=40946&view=rev
Log:
- Lot of updates to get the UI working
Modified:
trunk/ruby-bindings/src/ruby/Y2CCRuby.cc
trunk/ruby-bindings/src/ruby/Y2RubyTypeConv.cc
trunk/ruby-bindings/src/ruby/Y2RubyTypeTerm.cc
trunk/ruby-bindings/src/ruby/Y2RubyTypeTerm.h
trunk/ruby-bindings/src/ruby/YCP.cc
trunk/ruby-bindings/src/ruby/yast.rb
Modified: trunk/ruby-bindings/src/ruby/Y2CCRuby.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ruby-bindings/src/ruby/Y2CCRuby.cc?rev=40946&r1=40945&r2=40946&view=diff
==============================================================================
--- trunk/ruby-bindings/src/ruby/Y2CCRuby.cc (original)
+++ trunk/ruby-bindings/src/ruby/Y2CCRuby.cc Mon Sep 17 18:26:46 2007
@@ -46,9 +46,10 @@
// is there a ruby module?
// must be the same in Y2CCRuby and Y2RubyComponent
string module = YCPPathSearch::find (YCPPathSearch::Module, string (name) + ".rb");
- y2milestone("Find result '%s'", module.c_str());
+
if (!module.empty ())
{
+ y2milestone("Find module result: '%s'", module.c_str());
if (!cruby)
{
y2milestone("new ruby component");
Modified: trunk/ruby-bindings/src/ruby/Y2RubyTypeConv.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ruby-bindings/src/ruby/Y2RubyTypeConv.cc?rev=40946&r1=40945&r2=40946&view=diff
==============================================================================
--- trunk/ruby-bindings/src/ruby/Y2RubyTypeConv.cc (original)
+++ trunk/ruby-bindings/src/ruby/Y2RubyTypeConv.cc Mon Sep 17 18:26:46 2007
@@ -96,7 +96,7 @@
}
else if (ycpval->isTerm())
{
- return ryast_term_from_term(ycpval->asTerm());
+ return ryast_rterm_from_yterm(ycpval->asTerm());
}
else if (ycpval->isInteger())
{
@@ -146,7 +146,9 @@
YCPValue
rbvalue_2_ycpvalue( VALUE value )
{
- y2internal("type: '%d'", TYPE(value));
+ VALUE klass = rb_funcall( value, rb_intern("class"), 0);
+ std::cout << RSTRING( rb_funcall( klass, rb_intern("to_s"), 0))->ptr << " | " << RSTRING(rb_funcall( value, rb_intern("inspect"), 0))->ptr << std::endl;
+ //y2internal("type: '%d'", TYPE(value));
// TODO conver integers, and add support for lists, ah, and boleans!
switch (TYPE(value))
{
@@ -179,6 +181,17 @@
rb_raise( rb_eRuntimeError, "Object");
break;
default:
+ /* get the Term class object */
+ VALUE cTerm = rb_funcall( rb_mKernel, rb_intern("const_get"), 1, rb_str_new2("YaST::Term") );
+ VALUE is_term = rb_funcall(value, rb_intern("is_a?"), cTerm);
+ if ( TYPE(is_term) == T_TRUE )
+ {
+ return ryast_yterm_from_rterm(value);
+ }
+ else
+ {
+ std::cout << "no term" << std::endl;
+ }
std::cout << TYPE(value) << std::endl;
rb_raise( rb_eRuntimeError, "Conversion of Ruby type not supported");
return YCPValue();
Modified: trunk/ruby-bindings/src/ruby/Y2RubyTypeTerm.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ruby-bindings/src/ruby/Y2RubyTypeTerm.cc?rev=40946&r1=40945&r2=40946&view=diff
==============================================================================
--- trunk/ruby-bindings/src/ruby/Y2RubyTypeTerm.cc (original)
+++ trunk/ruby-bindings/src/ruby/Y2RubyTypeTerm.cc Mon Sep 17 18:26:46 2007
@@ -48,13 +48,21 @@
}
VALUE
-ryast_term_from_term( const YCPTerm &term )
+ryast_rterm_from_yterm( const YCPTerm &term )
{
VALUE rterm_obj = rb_funcall( ryast_cTerm, rb_intern("new"), 0);
ryast_term_set_term( rterm_obj, term );
return rterm_obj;
}
+YCPTerm
+ryast_yterm_from_rterm( VALUE term )
+{
+ ryast_Term_Wrapper *wrapper;
+ Data_Get_Struct(term, ryast_Term_Wrapper, wrapper);
+ return wrapper->term;
+}
+
static void
ryast_term_mark (ryast_Term_Wrapper *r)
{
@@ -104,7 +112,9 @@
int i=0;
for ( ; i
participants (1)
-
dmacvicar@svn.opensuse.org