Changeset 14be3a5 for text.c


Ignore:
Timestamp:
Jul 21, 2011, 5:06:19 PM (13 years ago)
Author:
Jason Gross <jgross@mit.edu>
Branches:
master, release-1.10, 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.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.