Improve auto-br - thx diomed :)

work on #2988
This commit is contained in:
Nikolaj Olsson 2018-08-23 20:24:42 +02:00
parent 21793d6bd0
commit d327ae9871
4 changed files with 28 additions and 532 deletions

View File

@ -1,10 +1,12 @@
<NoBreakAfterList>
<Item> at</Item>
<Item> der</Item>
<Item> en</Item>
<Item> er</Item>
<Item RegEx="True"> et</Item>
<Item> fik</Item>
<Item> som</Item>
<Item> var</Item>
<Item>Dr.</Item>
<Item>Dr</Item>
<Item>Hr.</Item>
<Item>Mr.</Item>
<Item>Mr</Item>
<Item>Mrs.</Item>
<Item>Ms.</Item>
<Item>Frk.</Item>
<Item>Frk.</Item>
<Item>Fru</Item>
</NoBreakAfterList>

View File

@ -1,412 +1,7 @@
<NoBreakAfterList>
<Item> a</Item>
<Item> abaft</Item>
<Item> aboard</Item>
<Item> about</Item>
<Item> above</Item>
<Item> across</Item>
<Item> afore</Item>
<Item> after</Item>
<Item> against</Item>
<Item> ago</Item>
<Item> all</Item>
<Item> along</Item>
<Item> alongside</Item>
<Item> although</Item>
<Item> amid</Item>
<Item> amidst</Item>
<Item> among</Item>
<Item> amongst</Item>
<Item> an</Item>
<Item> and</Item>
<Item> anenst</Item>
<Item> another</Item>
<Item> any</Item>
<Item> apropos</Item>
<Item> apud</Item>
<Item> are</Item>
<Item> around</Item>
<Item> as</Item>
<Item> as per</Item>
<Item> as regards</Item>
<Item> aside</Item>
<Item> astride</Item>
<Item> at</Item>
<Item> athwart</Item>
<Item> atop</Item>
<Item> barring</Item>
<Item> because</Item>
<Item> been</Item>
<Item> been doing</Item>
<Item> before</Item>
<Item> behind</Item>
<Item> below</Item>
<Item> beneath</Item>
<Item> beside</Item>
<Item> besides</Item>
<Item> between</Item>
<Item> betwixt</Item>
<Item> beyond</Item>
<Item> billion</Item>
<Item> both</Item>
<Item> but</Item>
<Item> by</Item>
<Item> ca</Item>
<Item> circa</Item>
<Item> concerning</Item>
<Item> considering</Item>
<Item> despite</Item>
<Item> down</Item>
<Item> Dr.</Item>
<Item> during</Item>
<Item> each</Item>
<Item> eight</Item>
<Item> eighteen</Item>
<Item> eighty</Item>
<Item> either</Item>
<Item> eleven</Item>
<Item> enough</Item>
<Item> even</Item>
<Item> every</Item>
<Item> except</Item>
<Item> excluding</Item>
<Item> few</Item>
<Item> fifteen</Item>
<Item> fifty</Item>
<Item> five</Item>
<Item> following</Item>
<Item> for</Item>
<Item> forenenst</Item>
<Item> forty</Item>
<Item> fourteen</Item>
<Item> from</Item>
<Item> given</Item>
<Item> he</Item>
<Item> her own</Item>
<Item> his</Item>
<Item> his own</Item>
<Item> how</Item>
<Item> however</Item>
<Item> hundred</Item>
<Item> I</Item>
<Item> if</Item>
<Item> in</Item>
<Item> including</Item>
<Item> inside</Item>
<Item> into</Item>
<Item> is</Item>
<Item> it's</Item>
<Item> lest</Item>
<Item> like</Item>
<Item> little</Item>
<Item> many</Item>
<Item> million</Item>
<Item> minus</Item>
<Item> modulo</Item>
<Item> most</Item>
<Item> Mr.</Item>
<Item> Mrs.</Item>
<Item> Ms.</Item>
<Item> my</Item>
<Item> my own</Item>
<Item> near</Item>
<Item> next</Item>
<Item> nine</Item>
<Item> nineteen</Item>
<Item> ninety</Item>
<Item> none</Item>
<Item> nor</Item>
<Item> of</Item>
<Item> off</Item>
<Item> on</Item>
<Item> one</Item>
<Item> only</Item>
<Item> onto</Item>
<Item> opposite</Item>
<Item> or</Item>
<Item> our</Item>
<Item> our own</Item>
<Item> out</Item>
<Item> outside</Item>
<Item> over</Item>
<Item> pace</Item>
<Item> past</Item>
<Item> per</Item>
<Item> plus</Item>
<Item> pro</Item>
<Item> qua</Item>
<Item> 're</Item>
<Item> regarding</Item>
<Item> respecting</Item>
<Item> round</Item>
<Item> sans</Item>
<Item> save</Item>
<Item> sevaral</Item>
<Item> seven</Item>
<Item> seventeen</Item>
<Item> seventy</Item>
<Item> she</Item>
<Item> since</Item>
<Item> six</Item>
<Item> sixteen</Item>
<Item> sixty</Item>
<Item> some</Item>
<Item> ten</Item>
<Item> than</Item>
<Item> that</Item>
<Item> the</Item>
<Item> their</Item>
<Item> their own</Item>
<Item> they</Item>
<Item> thirteen</Item>
<Item> thirty</Item>
<Item> though</Item>
<Item> thousand</Item>
<Item> three</Item>
<Item> through</Item>
<Item> throughout</Item>
<Item> thru</Item>
<Item> thruout</Item>
<Item> till</Item>
<Item> to</Item>
<Item> toward</Item>
<Item> towards</Item>
<Item> trillion</Item>
<Item> twelve</Item>
<Item> twenty</Item>
<Item> two</Item>
<Item> under</Item>
<Item> underneath</Item>
<Item> unless</Item>
<Item> unlike</Item>
<Item> until</Item>
<Item> unto</Item>
<Item> up</Item>
<Item> upon</Item>
<Item> versus</Item>
<Item> via</Item>
<Item> vice</Item>
<Item> vs</Item>
<Item> was</Item>
<Item> we</Item>
<Item> what</Item>
<Item> where as</Item>
<Item> wherever</Item>
<Item> which</Item>
<Item> whichever</Item>
<Item> while</Item>
<Item> who</Item>
<Item> whoever</Item>
<Item> whom</Item>
<Item> whose</Item>
<Item> will</Item>
<Item> with</Item>
<Item> within</Item>
<Item> without</Item>
<Item> would</Item>
<Item> yet</Item>
<Item> your</Item>
<Item> your own</Item>
<Item> zero</Item>
<Item>A V M</Item>
<Item>Admiraal</Item>
<Item>Admiral</Item>
<Item>Air Cdre</Item>
<Item>Air Commodore</Item>
<Item>Air Marshal</Item>
<Item>Air Vice Marshal</Item>
<Item>Alderman</Item>
<Item>Alhaji</Item>
<Item>Ambassador</Item>
<Item>Baron</Item>
<Item>Barones</Item>
<Item>Brig</Item>
<Item>Brig Gen</Item>
<Item>Brig General</Item>
<Item>Brigadier</Item>
<Item>Brigadier General</Item>
<Item>Brother</Item>
<Item>Canon</Item>
<Item>Capt</Item>
<Item>Captain</Item>
<Item>Cardinal</Item>
<Item>Cdr</Item>
<Item>Chief</Item>
<Item>Cik</Item>
<Item>Cmdr</Item>
<Item>Col</Item>
<Item>Col Dr</Item>
<Item>Colonel</Item>
<Item>Commandant</Item>
<Item>Commander</Item>
<Item>Commissioner</Item>
<Item>Commodore</Item>
<Item>Comte</Item>
<Item>Comtessa</Item>
<Item>Congressman</Item>
<Item>Conseiller</Item>
<Item>Consul</Item>
<Item>Conte</Item>
<Item>Contessa</Item>
<Item>Corporal</Item>
<Item>Councillor</Item>
<Item>Count</Item>
<Item>Countess</Item>
<Item>Crown Prince</Item>
<Item>Crown Princess</Item>
<Item>'d</Item>
<Item>Dame</Item>
<Item>Datin</Item>
<Item>Dato</Item>
<Item>Datuk</Item>
<Item>Datuk Seri</Item>
<Item>Deacon</Item>
<Item>Deaconess</Item>
<Item>Dean</Item>
<Item>Dhr</Item>
<Item>Dipl Ing</Item>
<Item>Doctor</Item>
<Item>Dott</Item>
<Item>Dott sa</Item>
<Item>Dr.</Item>
<Item>Mr.</Item>
<Item>Mrs.</Item>
<Item>Ms.</Item>
<Item>Dr</Item>
<Item>Dr Ing</Item>
<Item>Dra</Item>
<Item>Drs</Item>
<Item>Embajador</Item>
<Item>Embajadora</Item>
<Item>En</Item>
<Item>Encik</Item>
<Item>Eng</Item>
<Item>Eur Ing</Item>
<Item>Exma Sra</Item>
<Item>Exmo Sr</Item>
<Item>F O</Item>
<Item>Father</Item>
<Item>First Lieutient</Item>
<Item>First Officer</Item>
<Item>Flt Lieut</Item>
<Item>Flying Officer</Item>
<Item>Fr</Item>
<Item>Frau</Item>
<Item>Fraulein</Item>
<Item>Fru</Item>
<Item>Gen</Item>
<Item>Generaal</Item>
<Item>General</Item>
<Item>Governor</Item>
<Item>Graaf</Item>
<Item>Gravin</Item>
<Item>Group Captain</Item>
<Item>Grp Capt</Item>
<Item>H E Dr</Item>
<Item>H H</Item>
<Item>H M</Item>
<Item>H R H</Item>
<Item>Hajah</Item>
<Item>Haji</Item>
<Item>Hajim</Item>
<Item RegEx="True">has been \w+ing$</Item>
<Item RegEx="True">have been \w+ing$</Item>
<Item>Her Highness</Item>
<Item>Her Majesty</Item>
<Item>Herr</Item>
<Item>High Chief</Item>
<Item>His Highness</Item>
<Item>His Holiness</Item>
<Item>His Majesty</Item>
<Item>Hon</Item>
<Item>Hr</Item>
<Item>Hra</Item>
<Item>Ing</Item>
<Item>Ir</Item>
<Item>Jonkheer</Item>
<Item>Judge</Item>
<Item>Justice</Item>
<Item>Khun Ying</Item>
<Item>Kolonel</Item>
<Item>Lady</Item>
<Item>Lcda</Item>
<Item>Lic</Item>
<Item>Lieut</Item>
<Item>Lieut Cdr</Item>
<Item>Lieut Col</Item>
<Item>Lieut Gen</Item>
<Item>'ll</Item>
<Item>Lord</Item>
<Item>M</Item>
<Item>M L</Item>
<Item>M R</Item>
<Item>Madame</Item>
<Item>Mademoiselle</Item>
<Item>Maj Gen</Item>
<Item>Major</Item>
<Item>Master</Item>
<Item>Mevrouw</Item>
<Item>Miss</Item>
<Item>Mlle</Item>
<Item>Mme</Item>
<Item>Monsieur</Item>
<Item>Monsignor</Item>
<Item>Mr</Item>
<Item>Mrs</Item>
<Item>Ms</Item>
<Item>Mstr</Item>
<Item>Nti</Item>
<Item>Pastor</Item>
<Item>President</Item>
<Item>Prince</Item>
<Item>Princess</Item>
<Item>Princesse</Item>
<Item>Prinses</Item>
<Item>Prof</Item>
<Item>Prof Dr</Item>
<Item>Prof Sir</Item>
<Item>Professor</Item>
<Item>Puan</Item>
<Item>Puan Sri</Item>
<Item>Rabbi</Item>
<Item>Rear Admiral</Item>
<Item>Rev</Item>
<Item>Rev Canon</Item>
<Item>Rev Dr</Item>
<Item>Rev Mother</Item>
<Item>Reverend</Item>
<Item>Rva</Item>
<Item>'s</Item>
<Item RegEx="True">'s been \w+ing$</Item>
<Item>Senator</Item>
<Item>Sergeant</Item>
<Item>Sheikh</Item>
<Item>Sheikha</Item>
<Item>Sig</Item>
<Item>Sig na</Item>
<Item>Sig ra</Item>
<Item>Sir</Item>
<Item>Sister</Item>
<Item>Sqn Ldr</Item>
<Item>Sr</Item>
<Item>Sr D</Item>
<Item>Sra</Item>
<Item>Srta</Item>
<Item>Sultan</Item>
<Item>Tan Sri</Item>
<Item>Tan Sri Dato</Item>
<Item>Tengku</Item>
<Item>Teuku</Item>
<Item>Than Puying</Item>
<Item>The Hon Dr</Item>
<Item>The Hon Justice</Item>
<Item>The Hon Miss</Item>
<Item>The Hon Mr</Item>
<Item>The Hon Mrs</Item>
<Item>The Hon Ms</Item>
<Item>The Hon Sir</Item>
<Item>The Very Rev</Item>
<Item>Toh Puan</Item>
<Item>Tun</Item>
<Item>'ve</Item>
<Item>Vice Admiral</Item>
<Item>Viscount</Item>
<Item>Viscountess</Item>
<Item>Wg Cdr</Item>
</NoBreakAfterList>

View File

@ -1,115 +1,6 @@
<NoBreakAfterList>
<Item RegEx="True"> [¿¡«]</Item>
<Item RegEx="True"> [A-ZÁ-ÚÑ]</Item>
<Item> a</Item>
<Item> a la</Item>
<Item> a su</Item>
<Item> a tu</Item>
<Item> al</Item>
<Item> aun así</Item>
<Item> aunque</Item>
<Item> cada</Item>
<Item> como</Item>
<Item> como un</Item>
<Item> con</Item>
<Item> con la</Item>
<Item> cuán</Item>
<Item> cuando</Item>
<Item> de</Item>
<Item> de la</Item>
<Item> de lo</Item>
<Item> de que</Item>
<Item> de tu</Item>
<Item> del</Item>
<Item> dentro</Item>
<Item> donde</Item>
<Item> dónde</Item>
<Item> durante</Item>
<Item> el</Item>
<Item> en</Item>
<Item> en este</Item>
<Item> en la</Item>
<Item> en otro</Item>
<Item> en su</Item>
<Item> es</Item>
<Item> esa</Item>
<Item> esta</Item>
<Item> está</Item>
<Item> este</Item>
<Item> ha</Item>
<Item> han</Item>
<Item> hasta</Item>
<Item> iba a</Item>
<Item> igual</Item>
<Item> la</Item>
<Item> las</Item>
<Item> le</Item>
<Item> les</Item>
<Item> lo</Item>
<Item> los</Item>
<Item> luego</Item>
<Item> más</Item>
<Item> me</Item>
<Item> mejor</Item>
<Item> mi</Item>
<Item> mientras</Item>
<Item> mis</Item>
<Item> mucho</Item>
<Item> muy</Item>
<Item> ni</Item>
<Item> no</Item>
<Item> no </Item>
<Item> no es</Item>
<Item> no hay</Item>
<Item> no la</Item>
<Item> no le</Item>
<Item> no se</Item>
<Item> nos</Item>
<Item> nos lo</Item>
<Item> o</Item>
<Item> para</Item>
<Item> para el</Item>
<Item> para que te</Item>
<Item> para ti</Item>
<Item> pero</Item>
<Item> por</Item>
<Item> por la</Item>
<Item> por lo</Item>
<Item> porque</Item>
<Item> que</Item>
<Item> que ha</Item>
<Item> que he</Item>
<Item> que no</Item>
<Item> que no hay</Item>
<Item> que nos</Item>
<Item> que por</Item>
<Item> realmente</Item>
<Item> se</Item>
<Item> se ha</Item>
<Item> se lo</Item>
<Item> sea</Item>
<Item> será</Item>
<Item> sin</Item>
<Item> sin un</Item>
<Item> sobre</Item>
<Item> su</Item>
<Item> tan</Item>
<Item> tanto</Item>
<Item> te</Item>
<Item> todavía no</Item>
<Item> tu</Item>
<Item> un</Item>
<Item> una</Item>
<Item> unas</Item>
<Item> unos</Item>
<Item> vamos a</Item>
<Item> vas</Item>
<Item> y</Item>
<Item> y el</Item>
<Item> y me</Item>
<Item> y nos</Item>
<Item> ya</Item>
<Item> ya que</Item>
<Item RegEx="True">(?=[,\.\?\!]) </Item>
<Item RegEx="True">(?=señora? [A-ZÁ-Ú][a-zá-úñü]+) </Item>
<Item>Dr.</Item>
<Item>Mr.</Item>
<Item>Mrs.</Item>
<Item>Ms.</Item>
</NoBreakAfterList>

View File

@ -177,6 +177,14 @@ namespace Nikse.SubtitleEdit.Core
return false;
}
}
else
{
if (s2.EndsWith(" mr.", StringComparison.OrdinalIgnoreCase) ||
s2.EndsWith(" dr.", StringComparison.OrdinalIgnoreCase))
{
return false;
}
}
if (s2.EndsWith("? -", StringComparison.Ordinal) || s2.EndsWith("! -", StringComparison.Ordinal) || s2.EndsWith(". -", StringComparison.Ordinal))
return false;
@ -206,14 +214,14 @@ namespace Nikse.SubtitleEdit.Core
{
if (!string.IsNullOrEmpty(node.InnerText))
{
if (node.Attributes["RegEx"] != null && node.Attributes["RegEx"].InnerText.Equals("true", StringComparison.OrdinalIgnoreCase))
if (node.Attributes?["RegEx"] != null && node.Attributes["RegEx"].InnerText.Equals("true", StringComparison.OrdinalIgnoreCase))
{
var r = new Regex(node.InnerText, RegexOptions.Compiled);
_lastNoBreakAfterList.Add(new NoBreakAfterItem(r, node.InnerText));
}
else
{
_lastNoBreakAfterList.Add(new NoBreakAfterItem(node.InnerText));
_lastNoBreakAfterList.Add(new NoBreakAfterItem(" " + node.InnerText.TrimStart()));
}
}
}