Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Love the ternary operator in gawk. Here's some extreme examples, from a text formatter I wrote over 20 years ago. It is over 6,000 lines of awk, and I haven't used it in over 15 years.

Note: These lines should be split, but many of them are not. How do I do that? I read formatdoc, but that did not help.

; # see where text starts; mut = ((substr($0, lf1-length(lf1str), length(lf1str)) != lf1str) \ ? 1 \ : ((substr($0, lf1, 1) == " " ) \ ? (lf1+1) \ : lf1) \ ); # start of string;

---------------------------

# return file and line number with optional text; function filineg(ffilename, ffilerec, fltext) { ; # first version always gives a line number, second does not for line 1; return (ffilename \ (ffilerec == "" ? "" : (":" ffilerec)) \ ((fltext == "") \ ? "" \ : (" in \"" fltext "\"") \ )); }

------------------------------------

  outstr[2] = (head \
        ( (lnum > 1) \
         ? (substr(bigsep, 2, lnum-1) " ") \
         : (substr(spaces, 1, lnum)) \
         ) \
        (header2==""?" ":header2) null("output space if null - 5-20-98")  \
        substr(bigsep, 1, \
        ltocout-lhead-lpn-1 \
        -(lheader-lheadchop)-lnum \
        -((null_loc > 0) \
    ? lnullstring \
    : 0 \
          ) \
        ) " " pn); # parens make it line up;
----------------------

function telldepth(deptxt, dep1, dep2) { ; # change depth from dep1 to dep2; ; # good luck figuring this out in a month!; ; # tell how depth changes; recnumprint("{" deptxt " " \ ((dep1=="") \ ? ((dep2=="") \ ? ("leaves depth as is") \ : ("sets depth " dep2)\ ) \ : ("changes depth " dep1 " to " dep2) \ ) " in " filine() "}"); }



Prepend each line with two spaces to format it like code.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: