src/Pure/General/pretty.scala
changeset 67547 aefe7a7b330a
parent 65130 695930882487
child 67896 00797fb82869
equal deleted inserted replaced
67546:2b30e03a7229 67547:aefe7a7b330a
   112       case (t: Break) :: ts => force_break(t) :: ts
   112       case (t: Break) :: ts => force_break(t) :: ts
   113       case t :: ts => t :: force_next(ts)
   113       case t :: ts => t :: force_next(ts)
   114     }
   114     }
   115 
   115 
   116   private val margin_default = 76.0
   116   private val margin_default = 76.0
       
   117   private val breakgain_default = margin_default / 20
   117 
   118 
   118   def formatted(input: XML.Body, margin: Double = margin_default,
   119   def formatted(input: XML.Body,
       
   120     margin: Double = margin_default,
       
   121     breakgain: Double = breakgain_default,
   119     metric: Metric = Metric_Default): XML.Body =
   122     metric: Metric = Metric_Default): XML.Body =
   120   {
   123   {
   121     val breakgain = margin / 20
       
   122     val emergencypos = (margin / 2).round.toInt
   124     val emergencypos = (margin / 2).round.toInt
   123 
   125 
   124     def make_tree(inp: XML.Body): List[Tree] =
   126     def make_tree(inp: XML.Body): List[Tree] =
   125       inp flatMap {
   127       inp flatMap {
   126         case XML.Wrapped_Elem(markup, body1, body2) =>
   128         case XML.Wrapped_Elem(markup, body1, body2) =>
   175         case Str(s, len) :: ts => format(ts, blockin, after, text.string(s, len))
   177         case Str(s, len) :: ts => format(ts, blockin, after, text.string(s, len))
   176       }
   178       }
   177     format(make_tree(input), 0, 0.0, Text()).content
   179     format(make_tree(input), 0, 0.0, Text()).content
   178   }
   180   }
   179 
   181 
   180   def string_of(input: XML.Body, margin: Double = margin_default,
   182   def string_of(input: XML.Body,
       
   183       margin: Double = margin_default,
       
   184       breakgain: Double = breakgain_default,
   181       metric: Metric = Metric_Default): String =
   185       metric: Metric = Metric_Default): String =
   182     XML.content(formatted(input, margin, metric))
   186     XML.content(formatted(input, margin = margin, breakgain = breakgain, metric = metric))
   183 }
   187 }