Remove Document POD whitelist

Additional Document methods added to the Perl API:

- Store
- Get_Size
- Extract
- Field_Names

These methods are needed for the C bindings but they aren't really
useful from Perl. They can be blacklisted later.


Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/75330009
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/75330009
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/75330009

Branch: refs/heads/master
Commit: 753300094f6a70c998318712d61608477fad0156
Parents: c198e10
Author: Nick Wellnhofer <wellnho...@aevum.de>
Authored: Thu Aug 20 21:49:13 2015 +0200
Committer: Nick Wellnhofer <wellnho...@aevum.de>
Committed: Sun Aug 23 15:02:02 2015 +0200

----------------------------------------------------------------------
 core/Lucy/Document/Doc.cfh                   | 18 +++++-----
 core/Lucy/Document/HitDoc.cfh                |  4 +--
 perl/buildlib/Lucy/Build/Binding/Document.pm | 42 +++++++++++++++++++----
 perl/t/200-doc.t                             |  5 ++-
 4 files changed, 51 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy/blob/75330009/core/Lucy/Document/Doc.cfh
----------------------------------------------------------------------
diff --git a/core/Lucy/Document/Doc.cfh b/core/Lucy/Document/Doc.cfh
index c5cc855..4db55d6 100644
--- a/core/Lucy/Document/Doc.cfh
+++ b/core/Lucy/Document/Doc.cfh
@@ -49,8 +49,11 @@ public class Lucy::Document::Doc inherits Clownfish::Obj {
     Get_Doc_ID(Doc *self);
 
     /** Store a field value in the Doc.
+     *
+     * @param field The field name
+     * @param value The value
      */
-    void
+    public void
     Store(Doc *self, String *field, Obj *value);
 
     /** Set the doc's field's attribute.
@@ -68,17 +71,14 @@ public class Lucy::Document::Doc inherits Clownfish::Obj {
     public uint32_t
     Get_Size(Doc *self);
 
-    /** Retrieve the field's value, or NULL if the field is not present.  If
-     * the field is a text type, assign it to `target`.  Otherwise,
-     * return the interior object.  Callers must check to verify the kind of
-     * object returned.
+    /** Retrieve the field's value, or NULL if the field is not present.
      */
-    nullable incremented Obj*
+    public nullable incremented Obj*
     Extract(Doc *self, String *field);
 
     /** Return a list of names of all fields present.
      */
-    incremented Vector*
+    public incremented Vector*
     Field_Names(Doc *self);
 
     /* Unimplemented methods.
@@ -92,10 +92,10 @@ public class Lucy::Document::Doc inherits Clownfish::Obj {
     incremented Doc*
     Deserialize(decremented Doc *self, InStream *instream);
 
-    public incremented Hash*
+    incremented Hash*
     Dump(Doc *self);
 
-    public incremented Doc*
+    incremented Doc*
     Load(Doc *self, Obj *dump);
 
     public void

http://git-wip-us.apache.org/repos/asf/lucy/blob/75330009/core/Lucy/Document/HitDoc.cfh
----------------------------------------------------------------------
diff --git a/core/Lucy/Document/HitDoc.cfh b/core/Lucy/Document/HitDoc.cfh
index 52ce232..3fc17ec 100644
--- a/core/Lucy/Document/HitDoc.cfh
+++ b/core/Lucy/Document/HitDoc.cfh
@@ -53,10 +53,10 @@ public class Lucy::Document::HitDoc inherits 
Lucy::Document::Doc {
     public bool
     Equals(HitDoc *self, Obj *other);
 
-    public incremented Hash*
+    incremented Hash*
     Dump(HitDoc *self);
 
-    public incremented HitDoc*
+    incremented HitDoc*
     Load(HitDoc *self, Obj *dump);
 
     void

http://git-wip-us.apache.org/repos/asf/lucy/blob/75330009/perl/buildlib/Lucy/Build/Binding/Document.pm
----------------------------------------------------------------------
diff --git a/perl/buildlib/Lucy/Build/Binding/Document.pm 
b/perl/buildlib/Lucy/Build/Binding/Document.pm
index 2316034..abf5842 100644
--- a/perl/buildlib/Lucy/Build/Binding/Document.pm
+++ b/perl/buildlib/Lucy/Build/Binding/Document.pm
@@ -26,8 +26,7 @@ sub bind_all {
 }
 
 sub bind_doc {
-    my @exposed     = qw( Set_Doc_ID Get_Doc_ID Get_Fields );
-    my @hand_rolled = qw( Set_Fields Get_Fields );
+    my @hand_rolled = qw( Store Set_Fields Get_Fields );
 
     my $pod_spec = Clownfish::CFC::Binding::Perl::Pod->new;
     my $synopsis = <<'END_SYNOPSIS';
@@ -46,9 +45,30 @@ END_SYNOPSIS
         fields => { foo => 'foo foo', bar => 'bar bar' },
     );
 END_CONSTRUCTOR
+    my $store_pod = <<'END_POD';
+=head2 store(field, value)
+
+Store a field value in the Doc.
+
+=over
+
+=item *
+
+B<field> - The field name.
+
+=item *
+
+B<value> - The value.
+
+=back
+END_POD
     $pod_spec->set_synopsis($synopsis);
     $pod_spec->add_constructor( alias => 'new', sample => $constructor );
-    $pod_spec->add_method( method => $_, alias => lc($_) ) for @exposed;
+    $pod_spec->add_method(
+        method => 'Store',
+        alias  => 'store',
+        pod    => $store_pod,
+    );
 
     my $xs_code = <<'END_XS_CODE';
 MODULE = Lucy     PACKAGE = Lucy::Document::Doc
@@ -88,6 +108,19 @@ CODE:
 }
 OUTPUT: RETVAL
 
+void
+store(self, field, value_sv)
+    lucy_Doc *self;
+    cfish_String *field;
+    SV *value_sv;
+PPCODE:
+{
+    cfish_Obj *value
+        = (cfish_Obj*)XSBind_perl_to_cfish(aTHX_ value_sv, CFISH_OBJ);
+    LUCY_Doc_Store(self, field, value);
+    CFISH_DECREF(value);
+}
+
 SV*
 get_fields(self, ...)
     lucy_Doc *self;
@@ -117,8 +150,6 @@ END_XS_CODE
 }
 
 sub bind_hitdoc {
-    my @exposed = qw( Set_Score Get_Score );
-
     my $pod_spec = Clownfish::CFC::Binding::Perl::Pod->new;
     my $synopsis = <<'END_SYNOPSIS';
     while ( my $hit_doc = $hits->next ) {
@@ -128,7 +159,6 @@ sub bind_hitdoc {
     }
 END_SYNOPSIS
     $pod_spec->set_synopsis($synopsis);
-    $pod_spec->add_method( method => $_, alias => lc($_) ) for @exposed;
 
     my $xs_code = <<'END_XS_CODE';
 MODULE = Lucy   PACKAGE = Lucy::Document::HitDoc

http://git-wip-us.apache.org/repos/asf/lucy/blob/75330009/perl/t/200-doc.t
----------------------------------------------------------------------
diff --git a/perl/t/200-doc.t b/perl/t/200-doc.t
index 63a9564..8867260 100644
--- a/perl/t/200-doc.t
+++ b/perl/t/200-doc.t
@@ -16,7 +16,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 11;
+use Test::More tests => 12;
 use Storable qw( nfreeze thaw );
 use Lucy::Test;
 
@@ -30,6 +30,9 @@ is_deeply( $doc->get_fields, { foo => 'oink' }, "set_fields" 
);
 $doc->{foo} = "blah";
 is_deeply( $doc->get_fields, { foo => 'blah' }, "overloading" );
 
+$doc->store(title => "A title");
+is_deeply( $doc->extract('title'), "A title", "store/extract" );
+
 my %hash = ( foo => 'foo' );
 $doc = Lucy::Document::Doc->new(
     fields => \%hash,

Reply via email to