<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >parse-measurement</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="DSSSL Library Reference" HREF="index.html"><LINK REL="UP" TITLE="Miscellaneous" HREF="r300.htm"><LINK REL="PREVIOUS" TITLE="find-first-char" HREF="find-first-char.html"><LINK REL="NEXT" TITLE="unit-conversion-alist" HREF="unit-conversion-alist.html"></HEAD ><BODY CLASS="REFENTRY" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >DSSSL Library Reference: Part of the Modular DocBook Stylesheet distribution</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="find-first-char.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="unit-conversion-alist.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><H1 ><A NAME="PARSE-MEASUREMENT" ></A >parse-measurement</H1 ><DIV CLASS="REFNAMEDIV" ><A NAME="AEN1510" ></A ><H2 >Name</H2 >parse-measurement -- Parse a string containing a measurement and return the magnitude and units</DIV ><DIV CLASS="REFSYNOPSISDIV" ><A NAME="AEN1513" ></A ><H2 >Synopsis</H2 ><PRE CLASS="SYNOPSIS" >(parse-measurement measure)</PRE ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN1516" ></A ><H2 >Description</H2 ><P >Parse a string containing a measurement, e.g., <TT CLASS="LITERAL" >"3pi"</TT > or <TT CLASS="LITERAL" >"2.5in"</TT >, and return the magnitude and units: <TT CLASS="LITERAL" >(3 "pi")</TT > or <TT CLASS="LITERAL" >(2.5 "in")</TT >.</P ><P >Either element of the list may be <TT CLASS="LITERAL" >#f</TT > if the string cannot reasonably be parsed as a measurement. Leading and trailing spaces are ignored.</P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN1525" ></A ><H2 >Author</H2 ><P >Norman Walsh, <ndw@nwalsh.com></P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN1528" ></A ><H2 >Source Code</H2 ><PRE CLASS="PROGRAMLISTING" >(define (parse-measurement measure) ;; Parse a string containing a measurement and return the magnitude and units (let* ((magstart (find-first-char measure " " "0123456789.")) (unitstart (find-first-char measure " 0123456789." "")) (unitend (find-first-char measure "" " " unitstart)) (magnitude (if (< magstart 0) #f (if (< unitstart 0) (substring measure magstart (string-length measure)) (substring measure magstart unitstart)))) (unit (if (< unitstart 0) #f (if (< unitend 0) (substring measure unitstart (string-length measure)) (substring measure unitstart unitend))))) (list magnitude unit)))</PRE ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="find-first-char.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="unit-conversion-alist.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >find-first-char</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="r300.htm" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >unit-conversion-alist</TD ></TR ></TABLE ></DIV ></BODY ></HTML >