Word wrap: Difference between revisions
Content added Content deleted
(→{{header|C}}: Add a simple in-place method) |
m (→{{header|Sidef}}: update) |
||
Line 5,883: | Line 5,883: | ||
<syntaxhighlight lang="ruby">class String { |
<syntaxhighlight lang="ruby">class String { |
||
method wrap(width) { |
method wrap(width) { |
||
var txt = self.gsub(/\s+/, " ") |
var txt = self.gsub(/\s+/, " ") |
||
var len = txt.len |
var len = txt.len |
||
var para = [] |
var para = [] |
||
var i = 0 |
var i = 0 |
||
while (i < len) { |
while (i < len) { |
||
var j = (i + width) |
var j = (i + width) |
||
while ((j < len) && (txt.char_at(j) |
while ((j < len) && (txt.char_at(j) != ' ')) { --j } |
||
para.append(txt.substr(i, j-i)) |
para.append(txt.substr(i, j-i)) |
||
i = j+1 |
i = j+1 |
||
} |
} |
||
return para.join("\n") |
return para.join("\n") |
||
} |
} |
||
} |
} |
||
var text = 'aaa bb cc ddddd' |
var text = 'aaa bb cc ddddd' |
||
say text.wrap(6) |
say text.wrap(6)</syntaxhighlight> |
||
{{out}} |
{{out}} |
||
Line 5,934: | Line 5,934: | ||
root << [ |
root << [ |
||
array.first(i+1).join(' '), |
array.first(i+1).join(' '), |
||
self.prepare_words(array. |
self.prepare_words(array.slice(i+1), depth+1, callback) |
||
] |
] |
||
Line 5,977: | Line 5,977: | ||
self.combine([], path, { |combination| |
self.combine([], path, { |combination| |
||
var score = 0 |
var score = 0 |
||
combination. |
combination.first(-1).each { |line| |
||
score += (width - line.len -> sqr) |
score += (width - line.len -> sqr) |
||
} |
} |
||
Line 5,991: | Line 5,991: | ||
} |
} |
||
} |
} |
||
var sww = SmartWordWrap() |
var sww = SmartWordWrap() |
||
var words = %w(aaa bb cc ddddd) |
var words = %w(aaa bb cc ddddd) |
||
var wrapped = sww.wrap(words, 6) |
var wrapped = sww.wrap(words, 6) |
||
say wrapped |
say wrapped</syntaxhighlight> |
||
{{out}} |
{{out}} |
||
<pre> |
<pre> |