Am Samstag, 21. Februar 2015 18:05:07 UTC+1 schrieb Peter Suter:
>
>  Hi,
>
> On 21.02.2015 16:48, Matthias Rustler wrote:
>  
> Hi,
>
> I'm doing my 1st attempt to write a macro. How can I do something like 
> this in v1.0.4:
>
> file = open("source:/trunk/documentation/file.txt 
> <https://trac.aros.org/trac/browser/AROS/trunk/documentation/documentation/developers/autodocs/amigaguide.en>
> ")
>  
>
> from trac.versioncontrol.api import RepositoryManager
>
> rm = RepositoryManager(self.env)
> reponame, repos, path = rm.get_repository_by_path(
> "/trunk/documentation/file.txt 
> <https://trac.aros.org/trac/browser/AROS/trunk/documentation/documentation/developers/autodocs/amigaguide.en>
> ")
> node = repos.get_node(path, repos.youngest_rev)
> stream = node.get_content()
>
> For more information see:
>
> http://www.edgewall.org/docs/branches-1.0-stable/html/api/trac_versioncontrol_api.html#trac.versioncontrol.api.RepositoryManager.get_repository_by_path
>
> http://www.edgewall.org/docs/branches-1.0-stable/html/api/trac_versioncontrol_api.html#trac.versioncontrol.api.Repository.get_node
>
> http://www.edgewall.org/docs/branches-1.0-stable/html/api/trac_versioncontrol_api.html#trac.versioncontrol.api.Node.get_content
>


Thank you very much. Here is my humble plug-in:

from trac.wiki.macros import WikiMacroBase
from trac.versioncontrol.api import RepositoryManager


class ArosCreditsMacro(WikiMacroBase):
    #implements(IPermissionRequestor)

    #def get_permission_actions(self):
    #    return ['BROWSER_VIEW', 'FILE_VIEW']


    def expand_macro(self, formatter, name, content, args=None):
        rm = RepositoryManager(self.env)
        reponame, repos, path = rm.get_repository_by_path(
"/AROS/trunk/AROS/workbench/system/AboutAROS/db/credits")
        node = repos.get_node(path, repos.youngest_rev)
        stream = node.get_content()
        content = stream.read(10000)
        content = unicode(content, "iso8859-15")
        content = content.split("\n")
        result = ""
        listopen = False
        for line in content:
            if ":" in line:
                if listopen:
                    result = result + "</ul>\n"
                result = result + "<h2> " + line + "</h2>" + "\n<ul>\n"
                listopen = True
            elif line.strip() != "":
                result = result + "<li>" + line + "</li>\n"
        if listopen:
            result = result + "</ul>\n"
        return result


Result is shown here:
https://trac.aros.org/trac/wiki/Documentation/Credits

Strings were taken from:
https://trac.aros.org/trac/browser/AROS/trunk/AROS/workbench/system/AboutAROS/db/credits

-- 
You received this message because you are subscribed to the Google Groups "Trac 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/trac-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to