Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

HTML::FromText patch

by FoxtrotUniform (Prior)
on Sep 07, 2002 at 22:43 UTC ( #195914=snippet: print w/replies, xml ) Need Help??
Description: Now with extra flavour! PerlMonks-ish links, finer control over header tags, italic, strikethrough and teletype text for your HTML-hating enjoyment!
--- /usr/local/lib/perl5/site_perl/5.005/HTML/FromText.pm       Wed Oc
+t  6 04:53
:37 1999
+++ FromText.pm Sat Sep  7 16:26:57 2002
@@ -85,6 +85,24 @@
       s|\b((?:$protocol):\S+[\w/])|<TT><A HREF="$1">$1</A></TT>|g;
     }
 
+    # PATCH
+    # NAMED URLS: mark up named URLs of the form [url name].  Do this
+ only
+    #  if urls isn't set.
+    # Matt Olson June 2nd 2002
+    if ($options->{named_urls} and !$options->{urls}) {
+      s|\[((?: 
+             (?:$protocol) # match a possible protocol
+             ://           # followed by this thing
+           )?
+           \S+             # followed by the URL, until a space
+          )
+          \s+              # ignore whitespace
+          ([^\]]+)         # read description text until trailing ] 
+        \]
+       |<A HREF="$1">$2</A>|xg;
+    }
+    # END PATCH
+
     # BOLD: mark up words in *asterisks* as bold.
     if ($options->{bold}) {
       s#(^|\s)\*([^*]+)\*(?=\s|$)#$1<B>$2</B>#g;
@@ -94,6 +112,31 @@
     if ($options->{underline}) {
       s#(^|\s)_([^_]+?)_(?=\s|$)#$1<U>$2</U>#g;
     }
+
+    # PATCH
+    # ITALICS: mark up words between /slashes/ as italicized.
+    # If underline isn't set, do the same for words in _underscores_.
+    # Matt Olson, June 1st 2002
+    if ($options->{italics}) {
+      s#(^|\s)/([^/]+?)/(?=\s|$)#$1<I>$2</I>#g;
+      if (!$options->{underline}) {
+        s#(^|\s)_([^_]+?)_(?=\s|$)#$1<I>$2</I>#g;
+      }
+    }
+
+    # FIXED-WIDTH: mark up words between +plusses+ as fixed-width.
+    # (Mnemonic: '+' looks like a 't' in <tt>
+    # Matt Olson, June 28th 2002
+    if ($options->{fixed_width}) {
+      s#(^|\s)\+([^\+]+?)\+(?=\s|$)#$1<TT>$2</TT>#g;
+    }
+
+    # STRIKE-THROUGH: mark up words between -hyphens- as struck throu
+gh.
+    # Matt Olson, June 28th 2002
+    if ($options->{strike_through}) {
+      s#(^|\s)\-([^\-]+?)\-(?=\s|$)#$1<STRIKE>$2</STRIKE>#g;
+    }
+    # END PATCH
   }
 
   return $_[0];
@@ -182,6 +225,17 @@
          (?:\s*\n                    # Either 1 or more blank lines, 
+or
          |(?=\s*(?:\d+)[.\)\]]?\s+)) #   numbered item follows.
         /x;
+    # PATCH
+    # Headers
+    # Recognize leading #N as a level-N header, and markup *-led para
+s as
+    #  H4s.
+    # Matt Olson, 2002 June 3
+    } elsif ($options{headers}) {
+      @paras = split
+       /(?:\s*\n)+                  # (0 or more blank lines, followe
+d by LF)
+         (?:\s*\n                    # Either 1 or more blank lines, 
+or
+         |(?=\s*(?:\#\d|[*-])\s+))   #   headered item follows.
+        /x;
     } else {
       @paras = split
        /\s*\n(?:\s*\n)+             # 1 or more blank lines.
@@ -213,6 +267,18 @@
        s|^|<H$level>|;
        s|$|</H$level>|;
       }
+
+      # PATCH
+      # HEADERS: mark up paragraphs starting with bullets or #N as he
+adings.
+      # Matt Olson, 2002 June 3
+      elsif ($options{headers} and /^\s*(\#\d|[*-])\s+/) {
+        my ($level) = ($1 =~ /(\d)/);
+        $level = 4 unless $level;
+       string2html($_,\%options);
+       s/^\s*(?:\#\d|[*-])\s+/<H$level>/;
+       s/$/<\/H$level>/;
+      }
+      # END PATCH
 
       # BULLETS: mark up paragraphs starting with bullets as items in
+ an
       # unnumbered list.
Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: snippet [id://195914]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (4)
As of 2020-02-26 23:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    What numbers are you going to focus on primarily in 2020?










    Results (117 votes). Check out past polls.

    Notices?