equal
deleted
inserted
replaced
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 } |