[TxMt] Re: View List Problem

Mike Mellor alaskamike at gmail.com
Tue Jul 11 17:21:02 UTC 2006


I was probably a little too brief on the description of my problem...
I am trying to modify a command in the GTD bundle that is based on a command
in the TODO bundle.  The command goes through all of the files in a given
directory, and creates a list grouped by the context of each line in the
files that is displayed as an HTML document.  The TODO version greps each
line, which is problematic when I have similar contexts, such as TASK and
WORK_TASK (also, having a context word in any other line will also generate
a false true).  I have modified the code to compare string values for the
context and the first word in each line.  I think that this comparison is
working properly, but I am having trouble with the resulting list.  It
should show a context as a header, then the file name, line number, and
content of each line for that context.  It currently shows the filename and
line number, but not the content.

With that additional information, can anyone see what's going wrong?
Thanks.

Mike

On 7/10/06, Mike Mellor <alaskamike at gmail.com> wrote:
>
> I am trying to modify my view lists command.  It is based on the TODO
> bundle command, but I am trying to use string comparison instead of
> regexp to test lines.  As far as I can tell, the sorting is going ok,
> but I'm having trouble with the output.  It seems to show everything
> except for the task itself (the content).  Here is the code, any idea
> what's going wrong?  Thanks.
>
> Mike
>
>
> #!/usr/bin/env ruby
>
> $myPath = ENV['TM_DIRECTORY']
>
> $tags = [] #user defined contexts
>
> def readContexts(a)
>    # processes contexts.gtd into script
>    context, tabCommand, tabString, regex, color = a.split(/\|/)
>    $tags.push({:label => context, :regexp => regex, :color =>
> color, :matches => []})
> end
>
>
> require "#{ENV['TM_SUPPORT_PATH']}/lib/textmate"
> require "erb"
> include ERB::Util
>
> def TextMate.file_link (file, line = 0)
>    return "txmt://open/?url=file://" +
>      file.gsub(/[^a-zA-Z0-9.-\/]/) { |m| sprintf("%%%02X", m[0]) } +
>      "&line=" + line.to_s
> end
>
> # the contexts.gtd file is read, and converted into $contexts
> file = File.open($myPath+"/contexts.gtd", "r")
> file.each do |line|
>    readContexts(line)
> end
>
> # sorting happens
> $tags.each do |tag|
>      context = tag[:label]
>      myFiles = Dir.entries($myPath)
>      myFiles.each do |fileName|
>        if (fileName[-3,3] == "gtd") and (fileName != "contexts.gtd")
>          lineno = 0
>          mFile = File.open(fileName)
>          mFile.each do |line|
>            lineno = lineno + 1
>            re = /\s/
>            ctask = re.match(line)
>            if ctask.pre_match == context
>              results = {
>                :file => fileName[0..-5],
>                :line => lineno,
>                :content => ctask.post_match
>              }
>              results[:match] = html_escape($1)
>              tag[:matches] << results
>            end
>          end
>        end
>      end
> end
>
> tmpl_file = "#{ENV['TM_BUNDLE_SUPPORT']}/template.rhtml"
> puts ERB.new(File.open(tmpl_file), 0, '<>').result
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macromates.com/textmate/attachments/20060711/75f3dd26/attachment.html>


More information about the textmate mailing list