findit.py

A Python module by Lion Kimbro.

Download: findit.py

The program has documentation inside it; run python findit.py -d to see the documentation.

You should need to know a little about using the command line, and perhaps a little Python, before using this.


Documentation

This is the documentation from the program, printed out.

You might also find it helpful to reference one of my older "tagged.txt" files, as you read this.

This is a "tagging" program.  You use it to search for tagged ideas,
and tagged files.

You are reading a tutorial that shows you how to store & retrieve
ideas and files with this program.

  IDEAS
  ----------------------------------------------------------------------
  
  1. Create a new text file, perhaps: "tagged.txt"
     Input text so that it resembles the following:
     
                    _____ space following the colon!
                   v
       ---------------------------------------- tagged.txt ------
       |1. foo bar: This idea has been tagged "foo" and "bar."  |
       |2. foo: This idea has ONLY been tagged "foo."           |
       |3. bar: This idea has ONLY been tagged "bar."           |
       |4. robot: This idea has been tagged "robot."            |
       ----------------------------------------------------------
        ^     ^   ^__ no space after last tag!
        |     |
        |     |______ spaces separating tags
        |
     Notice that there are no spaces before the 1.
     Don't have any spaces there.

  2. Now, edit this file.  Find where it says "SOURCE_FILES" at the
     top, and change it to:

       ---------------------------------------- findit.py -------
       $                                                        $
       |SOURCE_FILES = ["C:\your\path\to\tagged.txt"]           |
       |SOURCE_PATHS = []                                       |
       $                                                        $
       ----------------------------------------------------------

  3. Now, run findit.py!

       $  python findit.py foo

  It'll show you all the ideas that are tagged "foo".

  4. Try searching for TWO tags.

       $  python findit.py foo bar

     It'll show you the idea that is tagged with BOTH "foo" AND "bar".

  Next, lets see how to work with files.


  FILES
  ----------------------------------------------------------------------

  10. Create a new folder, perhaps: "C:\tagged\"

  11. Create a few empty text documents in it, and rename them like so:

      foo.txt
      foo_bar.txt
      bar.txt
      robot.txt

  12. Now, run findit.py!

      $  python findit.py foo

      It'll show you both ideas and files that are tagged "foo".

      This is just like looking for ideas.
      You might notice that ideas start with "I", and files start with "F".


  PRODUCTIONS & EQUIVALENCES
  ----------------------------------------------------------------------

  Sometimes, you have a tag that "implies" other tags.

  For example, you might want "opensourceprojectidea" to show up under
  searches for tags "opensource", "project", "idea", automatically, as
  well, without having to list them.

  So, there are special "production" lines.  They let you say what
  tags automatically imply some other tags.
  
  1. Add the following line to tagged.txt:
  
       ---------------------------------------- tagged.txt ------
       $                                                        $
       |opensourceprojectidea -> opensource project idea        |
       |5. opensourceprojectidea -> some software for tagging!  |
       ----------------------------------------------------------
  
  2. Now, do a search for "project."

     $  python findit.py project

     Whoah! It returned the opensourceprojectidea idea, even though it
     wasn't explicitly tagged!

     Yes! That's the power of productions!

  There is also "equivalence."

  It means that two tags are equivalent to each other.

  3.  Add the following line to tagged.txt:

       ---------------------------------------- tagged.txt ------
       $                                                        $
       |mobilephone = cellphone                                 |
       |6. cellphone opensourceprojectidea: cell <-> VoIP       |
       ----------------------------------------------------------

  4.  Search for "mobilephone."

     $  python findit.py mobilephone

     You get the idea tagged "cellphone" back.

     How is this different than a production?
     Because it works both ways.
     An "equivalence" is really **two** productions: one going A->B,
     the other going B->A.

     If you tag an idea "cellphone" and search for "mobilephone,"
     you'll get it.  If you tag an idea "mobilephone" and search for
     "cellphone," you'll get it.  It doesn't matter which way, with an
     equivalence.

     But a production only works one way.  "cat" may produce "animal,"
     but "animal" shouldn't necissarily produce "cat."


  That's about it!  There's more to the program, but I leave that to
  you to discover.  As it is, this should be enough to get you started
  tagging ideas.

  Have fun!,
    Lion {:)}=


Side Interest: Visualization

Incidentally, I've made a "visual" version of the code. I believe this is rather unique; I have never seen a program rendered out this way before.

The Inkscape SVG version is structured and contains all information that should be required to (relatively) easily parse and render out the Python code. Use Inkscape (Free) to view it. For the impatient, you can have a lesser experience, by looking at the PNG version. You won't be able to zoom in, of course.

Really. Do yourself the favor. If you're into this, look at the .SVG from within Inkscape.