@@ -85,19 +85,28 @@ static VALUE rdxr_graph_index_all(VALUE self, VALUE file_paths) {
8585 return array ;
8686}
8787
88- // Indexes a single source string in memory, dispatching to the appropriate indexer based on language_id
88+ // Indexes a single source string in memory, dispatching to the appropriate indexer based on language_id.
8989//
90- // Graph#index_source: (String uri, String source, String language_id) -> void
91- static VALUE rdxr_graph_index_source (VALUE self , VALUE uri , VALUE source , VALUE language_id ) {
90+ // Graph#index_source: (String uri, String source, ?String language_id) -> void
91+ static VALUE rdxr_graph_index_source (int argc , VALUE * argv , VALUE self ) {
92+ VALUE uri , source , language_id ;
93+ rb_scan_args (argc , argv , "21" , & uri , & source , & language_id );
94+
9295 Check_Type (uri , T_STRING );
9396 Check_Type (source , T_STRING );
94- Check_Type (language_id , T_STRING );
9597
9698 void * graph ;
9799 TypedData_Get_Struct (self , void * , & graph_type , graph );
98100
99101 const char * uri_str = StringValueCStr (uri );
100- const char * language_id_str = StringValueCStr (language_id );
102+ const char * language_id_str = NULL ;
103+ if (NIL_P (language_id )) {
104+ language_id_str = NULL ;
105+ } else {
106+ Check_Type (language_id , T_STRING );
107+ language_id_str = StringValueCStr (language_id );
108+ }
109+
101110 const char * source_str = RSTRING_PTR (source );
102111 size_t source_len = RSTRING_LEN (source );
103112
@@ -746,7 +755,7 @@ void rdxi_initialize_graph(VALUE moduleRubydex) {
746755
747756 rb_define_alloc_func (cGraph , rdxr_graph_alloc );
748757 rb_define_method (cGraph , "index_all" , rdxr_graph_index_all , 1 );
749- rb_define_method (cGraph , "index_source" , rdxr_graph_index_source , 3 );
758+ rb_define_method (cGraph , "index_source" , rdxr_graph_index_source , -1 );
750759 rb_define_method (cGraph , "document" , rdxr_graph_document , 1 );
751760 rb_define_method (cGraph , "delete_document" , rdxr_graph_delete_document , 1 );
752761 rb_define_method (cGraph , "resolve" , rdxr_graph_resolve , 0 );
0 commit comments