Hi,
In <ae6cb1100708232157j5273ab11mafaf61ba18a175b@mail.gmail.com>
"Re: [PATCH] Ruby bindings follow on to r26229" on Thu, 23 Aug 2007 21:57:54 -0700,
"Joe Swatosh" <joe.swatosh@gmail.com> wrote:
> > > Index: subversion/bindings/swig/ruby/svn/core.rb
> > > ===================================================================
> > > --- subversion/bindings/swig/ruby/svn/core.rb (revision 26229)
> > > +++ subversion/bindings/swig/ruby/svn/core.rb (working copy)
> > > @@ -624,14 +624,16 @@
> > > end
> > > end
> > >
> > > - def diff(to)
> > > - Core.mergeinfo_diff(self, to).collect do |result|
> > > + def diff(to, consider_inheritance=nil)
> > > + consider_inheritance ||= RANGELIST_IGNORE_INHERITANCE
> > > + Core.mergeinfo_diff(self, to, consider_inheritance).collect do |result|
> >
> > I think we can use svn_depth_t like approach: We can set
> > default value by SWIG not Ruby. %typemap(in) svn_depth_t
> > typemap in include/svn_types.swg will help you.
> >
> > In the feature, I want to support another way to specify
> > constant value. Currently, we use SOME_CONSTANT
> > (e.g. RANGELIST_IGNORE_INHERITANCE) to specify constant
> > value but I want to support :constant_name
> > (e.g. :inheritance). I think we can do this in SWIG layer.
> >
>
> I have no idea how to do this. I'm interested to see how you accomplish it.
Here is my idea (not tested):
#ifdef SWIGRUBY
%typemap(in) svn_merge_range_inheritance_t {
if (NIL_P($input)) {
$1 = svn_rangelist_ignore_inheritance;
else {
$1 = NUM2INT($input);
}
}
#endif
And here is my feature idea (pseudo code):
#ifdef SWIGRUBY
%typemap(in) svn_merge_range_inheritance_t {
if (NIL_P($input)) {
$1 = svn_rangelist_ignore_inheritance;
else if (RTEST(rb_obj_is_kind_of($input, rb_cNumeric))) {
$1 = NUM2INT($input);
} else {
VALUE const_name;
const_name = rb_str_new2("RANGELIST_");
rb_str_concat(const_name,
rb_funcall(rb_funcall($input, rb_intern("to_s"), 0),
rb_intern("upcase"), 0));
$1 = rb_const_get(cSvnCore, rb_intern(StringValuePtr(rb_str_concat)));
}
}
#endif
> >
> > > Index: subversion/bindings/swig/ruby/test/test_core.rb
> > > ===================================================================
> > > --- subversion/bindings/swig/ruby/test/test_core.rb (revision 26229)
> > > +++ subversion/bindings/swig/ruby/test/test_core.rb (working copy)
> > > @@ -746,7 +746,7 @@
> > >
> > > def test_merge_info_to_s
> > > info = Svn::Core::MergeInfo.parse("/trunk: 5,7,9-13")
> > > - assert_equal("/trunk:5,7,9-13", info.to_s)
> > > + assert_equal("/trunk:5*,7*,9-13*", info.to_s)
> > > assert_not_equal("/trunk:5,7,9-13", info.inspect)
> >
> > Does we need to update the above assert_not_equal line too?
> >
>
> What are we asserting? Should the line be
>
> assert_not_equal(info.to_s, info.inspect)
>
> perhaps?
Ah, yes. You're right. I customized to_s and inspect.
Thanks,
--
kou
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Fri Aug 24 13:52:29 2007