2 * (c) Oleg Puchinin 2008
3 * graycardinalster@gmail.com
11 #include <gclib/gclib.h>
12 #include <gclib/gclib_c.h>
17 extern "C" DArray
* plugin_init (struct env_t
*env
);
22 unlink ("./ruby_files");
23 sblib_find ("./", "*.rb", "./ruby_files");
26 char ruby_opt (DArray
* d_opts
, int * pos
)
31 if (! d_opts
|| ! pos
)
34 if (EQ (d_opts
->get (*pos
), "--ruby")) {
35 ENV
->language
= strdup ("Ruby");
39 if (EQ (d_opts
->get (*pos
), "--files")) {
47 char ruby_opt2 (DArray
* d_opts
, int * pos
)
52 bool ruby_scan_line (const char *S
)
57 if (strstr (S
, "class ") ||
58 strstr (S
, "module ") ||
65 char * ruby_last_word (char * op
)
72 if (*S
== '(' || *S
== '=' || *S
== '[' || *S
== '<')
83 S
= strchr (d_word
, ' ');
92 char * ruby_tag (char * filename
, char * str
, int line
, FILE * of
)
96 S
= ruby_last_word (str
);
102 printf ("%s\t%s\t%d\n", S
, filename
, line
);
104 fprintf (of
, "%s\t%s\t%d\n", S
, filename
, line
);
107 void ruby_file (char * f_name
)
115 myfile
= fopen (f_name
, "r");
119 buf
= CNEW (char, 4096);
120 while (fgets (buf
, 4096, myfile
)) {
121 if (ruby_scan_line (buf
))
129 int ruby_ctags (char * f_name
, FILE * of
)
138 myfile
= fopen (f_name
, "r");
142 buf
= CNEW (char, 4096);
143 while (fgets (buf
, 4096, myfile
)) {
145 if (ruby_scan_line (buf
))
146 ruby_tag (f_name
, buf
, line
, of
);
155 void ruby_short_info ()
157 printf ("Ruby plugin.");
160 void ruby_long_info ()
162 printf ("Ruby plugin.\n");
163 printf ("Version: 1.0\n");
164 printf ("options: --ruby --files\n");
167 DArray
* plugin_init (struct env_t
*env
)
172 Ret
= new DArray (1);
173 plug
= CNEW (mod_t
, 1);
174 memset (plug
, 0, sizeof (mod_t
));
176 plug
->Version
= strdup ("1.0");
177 plug
->short_info
= ruby_short_info
;
178 plug
->long_info
= ruby_long_info
;
179 plug
->opt
= ruby_opt
;
180 plug
->opt2
= ruby_opt2
;
181 plug
->make_ctags
= ruby_ctags
;
182 plug
->language
= strdup ("Ruby");
183 plug
->file
= ruby_file
;
185 ENV
->listOptions
->add ( "--ruby");
186 ENV
->listOptions
->add ("--files");
188 Ret
->add (LPCHAR (plug
));