# -*- mode: org -*- #+SEQ_TODO: TODO | DONE INVALID * INVALID Fix bug in `germ select` :bug: CLOSED: [2009-07-12 Sun 18:25] : germ select -s "$SOURCE|ruby" ruby_subprocesses_part_2.rb : F, [2009-07-12T17:41:17.331337 #19506] FATAL -- : No code sample named 'SECTION0'. Known samples: helpers, SECTION3, open_with_pipe, open_with_pipe_dash, popen, popen_with_dash, SECTION8 (IndexError) <2009-07-12 Sun> My mistake... the shell was interpreting the $SOURCE directive. * DONE Make $SOURCE use the actual source file path in processes CLOSED: [2009-07-12 Sun 19:46] * DONE Improve error message for non-matching regexen in selectors :usability: CLOSED: [2009-07-13 Mon 02:17] * DONE Make text transforms just another process for pipelines :techdebt: CLOSED: [2009-07-19 Sun 16:33] This should help make [[*Make%20it%20possible%20for%20publishers%20to%20use%20formatted%20text%20as%20input][this item]] possible. * DONE Add standard "select" option to publishers CLOSED: [2009-07-19 Sun 16:33] The select option would define a selector to be used to get the input for the publisher. Another step towards [[*Make%20it%20possible%20for%20publishers%20to%20use%20formatted%20text%20as%20input][this]]. This MAY make the current "pipeline" option redundant. * DONE Make it possible for publishers to use formatted text as input :feature: CLOSED: [2009-07-19 Sun 16:33] Pretty useless without this... * TODO Refactor format command into a null publisher :techdebt: This just needs one last step of pre-loading a "stdout publisher" and then we can do e.g.: : germ publish stdout my_article.c * TODO Output line numbers for Reader errors :usability: * DONE Gist uploads :feature: CLOSED: [2009-07-21 Tue 10:54] * DONE Publishing to WordPress blogs (Atompub) :feature: CLOSED: [2009-07-21 Tue 10:54] * TODO Alternate directive syntax :usability: one that doesn't conflict with RDoc * TODO Anonymous processes :feature: A process that doesn't match a predefined process name should be interpreted as a shell command. * TODO Code indent :feature: Define an indent (either N spaces or a string) to be applied to code sections. Should first de-indent code. * TODO Shorthand for matching whitespace in selectors :feature: e.g. "@mysample:/def foo/..._" * TODO Format Pipelines :feature: Define a pipeline to be run on the entire article after formatting Or maybe just demote "format" to be a built-in publisher. * TODO ERB Substitution :feature: Should be run on TEXT sections. * TODO Line# Helper :feature: A helper for ERB subtitution which inserts the line# of a given selector. * TODO Plugin API :feature: * TODO User-global preference file :feature: * TODO Multiple file support :feature: * TODO Output line numbers for errors at any point :usability: This will require giving Hunks the knowledge of their source offset. * TODO Nested samples :feature: Might want to wait this on the implementation of nested states in AlterEgo. * TODO Optionally capture STDERR from processes :feature: Workaround: Authors can just include 2>&1 in their process definitions. * DONE Syntax for post-process excerpting :feature: CLOSED: [2009-07-12 Sun 20:50] E.g. "$SOURCE|ruby:/---/../---/" This would cause the process to be run on $SOURCE and then a subset of the output to be excerpted. * TODO Named Styles :feature: A way to group together a bunch of style attributes in a reusable way. * DONE A way to set arbitrary variables for later substitution :feature: CLOSED: [2009-07-16 Thu 11:51] * DONE Standard "pipeline" option for publishers :feature: CLOSED: [2009-07-15 Wed 01:32] Defines a pipeline which will be run on $SOURCE before publishing. * TODO Plugin discovery :feature: Should use gems to discover plugins. * TODO Line continuations for directives :usability: After some thought I think what I really want is a second syntax for long-form directives, wherein the YAML arguments go in between directive opening and closing lines. E.g. : # :PUBLISHER: --- : # - source : # - shell : # - : # command: cat : # pipeline: markdown : # :END: * DONE Variables CLOSED: [2009-07-16 Thu 19:47] Syntax: : :SET: foo, 123 *** Reader records what line they were set on *** SourceFile class which can set and re-set variables - Backs the file up first - Verifies the backup - Locks the file and the backup - Removes the old line - Replaces it with a new :SET: line - Or adds a new :SET: line to the end - Re-reads and verifies value - Restores the backup if there is a problem *** Variables are available to processes as environment vars * TODO Add processing/style options to TEXT sections :feature: * TODO Add console modes :feature: *** TODO Shell console In this version we just exec $SHELL with some custom environment. A GERMINATE_SOURCE variable should point to the source file, and all germ commands should use it if no explicit source is specified. In addition, aliases for all the common germ modes should be installed - publish, format, list, etc. *** TODO Debug console An IRB session with Germinate preloaded. * TODO Clean up output during tests :techdebt: * TODO Add a dry-run mode :feature: * TODO Add a TITLE variable Should be used by publishers. * TODO Make publishers more configurable