From 6eea7e8bf5017c1a3949412371551bd7a39d49b5 Mon Sep 17 00:00:00 2001 From: Daniele Alessandri Date: Sun, 18 Jul 2010 00:34:50 +0200 Subject: [PATCH] The parent of an Hpricot element is always an IHpricotDataContainer. --- src/Data/BasicData.cs | 4 ++-- src/Elements/BaseEle.cs | 4 ++-- src/HpricotScanner.cs | 11 +++-------- src/Initializers.Generated.cs | 8 ++++---- 4 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/Data/BasicData.cs b/src/Data/BasicData.cs index 7871961..2b8c59a 100644 --- a/src/Data/BasicData.cs +++ b/src/Data/BasicData.cs @@ -4,14 +4,14 @@ namespace IronRuby.Hpricot { public class BasicData { private Object _tag; - private Object _parent; + private IHpricotDataContainer _parent; public Object Tag { get { return _tag; } set { _tag = value; } } - public Object Parent { + public IHpricotDataContainer Parent { get { return _parent; } set { _parent = value; } } diff --git a/src/Elements/BaseEle.cs b/src/Elements/BaseEle.cs index 1349fca..f6b036b 100644 --- a/src/Elements/BaseEle.cs +++ b/src/Elements/BaseEle.cs @@ -44,12 +44,12 @@ public BaseElement(RubyContext context) } [RubyMethod("parent")] - public static Object GetParent(BaseElement/*!*/ self) { + public static IHpricotDataContainer GetParent(BaseElement/*!*/ self) { return self._data.Parent; } [RubyMethod("parent=")] - public static void SetParent(BaseElement/*!*/ self, Object/*!*/ parent) { + public static void SetParent(BaseElement/*!*/ self, IHpricotDataContainer/*!*/ parent) { self._data.Parent = parent; } } diff --git a/src/HpricotScanner.cs b/src/HpricotScanner.cs index 134f6c1..dcd368e 100644 --- a/src/HpricotScanner.cs +++ b/src/HpricotScanner.cs @@ -1163,10 +1163,7 @@ public class HpricotScanner { } } - if (he.Parent != null) { - Debug.Assert(he.Parent is IHpricotDataContainer, "he.Parent is not an instance of IHpricotDataContainer"); - } - e = hee.Parent as IHpricotDataContainer; + e = hee.Parent; } if (match == null) { @@ -1218,8 +1215,7 @@ public class HpricotScanner { match = e; break; } - - e = he.Parent as IHpricotDataContainer; + e = he.Parent; } if (match == null) { @@ -1233,8 +1229,7 @@ public class HpricotScanner { // TODO: couldn't find this in the original implementation but it still sounds right. he.ETag = ele; - Debug.Assert(he.Parent is IHpricotDataContainer, "he.Parent is not an instance of IHpricotDataContainer"); - state.Focus = he.Parent as IHpricotDataContainer; + state.Focus = he.Parent; state.Last = null; } diff --git a/src/Initializers.Generated.cs b/src/Initializers.Generated.cs index dda4a8b..f0270fb 100644 --- a/src/Initializers.Generated.cs +++ b/src/Initializers.Generated.cs @@ -89,13 +89,13 @@ public sealed class HpricotLibraryInitializer : IronRuby.Builtins.LibraryInitial private static void LoadHpricot__BaseEle_Instance(IronRuby.Builtins.RubyModule/*!*/ module) { DefineLibraryMethod(module, "parent", 0x11, - 0x00000000U, - new Func(IronRuby.Hpricot.BaseElement.GetParent) + 0x00000000U, + new Func(IronRuby.Hpricot.BaseElement.GetParent) ); DefineLibraryMethod(module, "parent=", 0x11, - 0x00000000U, - new Action(IronRuby.Hpricot.BaseElement.SetParent) + 0x00000000U, + new Action(IronRuby.Hpricot.BaseElement.SetParent) ); DefineLibraryMethod(module, "raw_string", 0x11,