Changeset 14be3a5


Ignore:
Timestamp:
Jul 21, 2011, 5:06:19 PM (10 years ago)
Author:
Jason Gross <jgross@mit.edu>
Branches:
master, release-1.9
Children:
6500907
Parents:
d8f22b6
git-author:
Jason Gross <jgross@mit.edu> (07/20/11 03:09:43)
git-committer:
Jason Gross <jgross@mit.edu> (07/21/11 17:06:19)
Message:
Give owl_text_indent an indent_first_line parameter

This is useful if you need to indent text that isn't broken into chunks
that end with newlines.

This is primarily in preparation for the next commit, where we need to
replace the indent on the first line by a prefix.  The other
(reasonable) option is to make owl_text_indent always prefix the string
it's given with an indent, even when it's given the empty string.  This
would break the nice property that indent(A + B) = indent(A) + indent(B)
whenever A ended with a newline.  After some discussion on zephyr and on
the github pull request, I decided to go with this option.
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • cmd.c

    rce68f23 r14be3a5  
    260260  if (cmd->usage && *cmd->usage) {
    261261    s = cmd->usage;
    262     indent = owl_text_indent(s, OWL_TAB);
     262    indent = owl_text_indent(s, OWL_TAB, true);
    263263    owl_fmtext_append_bold(fm, "\nSYNOPSIS\n");
    264264    owl_fmtext_append_normal(fm, indent);
     
    274274  if (cmd->description && *cmd->description) {
    275275    s = cmd->description;
    276     indent = owl_text_indent(s, OWL_TAB);
     276    indent = owl_text_indent(s, OWL_TAB, true);
    277277    owl_fmtext_append_bold(fm, "\nDESCRIPTION\n");
    278278    owl_fmtext_append_normal(fm, indent);
  • style.c

    rfa180a3 r14be3a5  
    6565
    6666  /* indent and ensure ends with a newline */
    67   indent = owl_text_indent(body, OWL_TAB);
     67  indent = owl_text_indent(body, OWL_TAB, true);
    6868  curlen = strlen(indent);
    6969  if (curlen == 0 || indent[curlen-1] != '\n') {
  • text.c

    r6829afc r14be3a5  
    77/* Returns a copy of 'in' with each line indented 'n'
    88 * characters. Result must be freed with g_free. */
    9 CALLER_OWN char *owl_text_indent(const char *in, int n)
     9CALLER_OWN char *owl_text_indent(const char *in, int n, bool indent_first_line)
    1010{
    1111  const char *ptr1, *ptr2, *last;
    1212  GString *out = g_string_new("");
    1313  int i;
     14  bool indent_this_line = indent_first_line;
    1415
    1516  last=in+strlen(in)-1;
    1617  ptr1=in;
    1718  while (ptr1<=last) {
    18     for (i=0; i<n; i++) {
    19       g_string_append_c(out, ' ');
    20     }
     19    if (indent_this_line) {
     20      for (i = 0; i < n; i++) {
     21        g_string_append_c(out, ' ');
     22      }
     23    }
     24    indent_this_line = true;
    2125    ptr2=strchr(ptr1, '\n');
    2226    if (!ptr2) {
Note: See TracChangeset for help on using the changeset viewer.