D support in Exuberant Ctags 5.8 for Windows

Brian Schott briancschott at gmail.com
Thu Jul 26 19:32:48 PDT 2012


On Friday, 27 July 2012 at 00:19:37 UTC, José Armando García 
Sancio wrote:
> On Thu, Jul 26, 2012 at 4:59 PM, Brian Schott 
> <briancschott at gmail.com> wrote:
>> On Thursday, 26 July 2012 at 23:51:34 UTC, José Armando 
>> García Sancio wrote:
>>>
>>> On Thu, Jul 26, 2012 at 3:34 PM, dnewbie <run3 at myopera.com> 
>>> wrote:
>>>>
>>>> There is --ctags output in Dscanner
>>>> https://github.com/Hackerpilot/Dscanner
>>>
>>>
>>> Very interesting. Is this Dscanner pluggable? I would be 
>>> interesting
>>> to use Dscanner for localization. For example it would be 
>>> nice if it
>>> could generate a list of all the strings that are passed to a 
>>> specific
>>> function.
>>>
>>> This is how people generate localizable string to use for 
>>> gettext.
>>>
>>> Thoughts?
>>> -Jose
>>
>>
>> Dscanner has a tokenizer for D code, so it would not be hard 
>> to make a
>> program that uses the tokenizer to swap out string literals.
>>
>
> Swap out? Not sure what you mean by this. I don't want to 
> localize the
> code. I just want to enumerate them all so that a localization 
> team
> can provide a catalog that could be use to do the translation at
> runtime.
>
> In C/C++ a lot of teams do localization by providing a #define 
> "_"
> that simply returns the string passed into it. In D this would 
> be a
> template that could be compiled out.
>
> The cool thing about having this "_" macro is that then you can 
> have a
> tool that can extract all occurrences of such a macro. Gettext 
> has
> such a tool for C/C++.
>
> If we want to leverage gettext in D then we would have to build 
> the
> equivalent of that tool for D. I was wondering if Dscanner can 
> be
> extended to do this.
>
> Thanks,
> -Jose

Something like this:

writeln(tokenize(sourceCode).filter!("a.type > 
TokenType.STRINGS_BEGIN && a.type < 
TokenType.STRINGS_END")().map!("a.value")().joiner("\n"));

I'm booted into Windows at the moment so I haven't tested that, 
but it should work if you just want a dump of all the strings. 
The line-of-code feature works in a similar way.


More information about the Digitalmars-d mailing list