From 2554b01024ff6b1289548a4a5a4ebaeedbc6e4c3 Mon Sep 17 00:00:00 2001 From: GRosenberg Date: Mon, 21 Nov 2016 16:40:41 -0800 Subject: [PATCH 01/20] Add initial CSS support to viewer. Also, update to Java 1.8 and cleanup warnings. --- .project | 7 +- plugin/.classpath | 13 +- plugin/META-INF/MANIFEST.MF | 2 +- plugin/build.properties | 13 +- plugin/resources/amblin.css | 493 ++++++++ plugin/resources/avenir-white.css | 108 ++ plugin/resources/github.css | 617 ++++++++++ plugin/resources/markdown.css | 266 ++++ plugin/resources/modest.css | 169 +++ plugin/resources/screen.css | 175 +++ plugin/resources/swiss.css | 111 ++ .../winterwell/markdown/StringMethods.java | 1067 ++++++++-------- .../markdown/editors/ColorManager.java | 9 +- .../markdown/editors/EmphasisRule.java | 223 ++-- .../winterwell/markdown/editors/LinkRule.java | 4 +- .../winterwell/markdown/editors/ListRule.java | 147 ++- .../markdown/editors/MDConfiguration.java | 76 +- .../markdown/editors/MDScanner.java | 120 +- .../editors/MarkdownContentOutlinePage.java | 1068 ++++++++--------- .../markdown/editors/MarkdownEditor.java | 335 +++--- .../markdown/views/MarkdownPreview.java | 133 +- pom.xml | 4 +- 22 files changed, 3551 insertions(+), 1609 deletions(-) create mode 100644 plugin/resources/amblin.css create mode 100644 plugin/resources/avenir-white.css create mode 100644 plugin/resources/github.css create mode 100644 plugin/resources/markdown.css create mode 100644 plugin/resources/modest.css create mode 100644 plugin/resources/screen.css create mode 100644 plugin/resources/swiss.css diff --git a/.project b/.project index d293667..cb56105 100644 --- a/.project +++ b/.project @@ -5,7 +5,10 @@ + + + + + - - diff --git a/plugin/.classpath b/plugin/.classpath index cf4ff31..9e71ee6 100644 --- a/plugin/.classpath +++ b/plugin/.classpath @@ -1,10 +1,11 @@ - + - - - - - + + + + + + diff --git a/plugin/META-INF/MANIFEST.MF b/plugin/META-INF/MANIFEST.MF index 3c0bdf2..7881bd5 100644 --- a/plugin/META-INF/MANIFEST.MF +++ b/plugin/META-INF/MANIFEST.MF @@ -14,7 +14,7 @@ Require-Bundle: org.eclipse.ui, org.eclipse.jface, org.eclipse.swt, org.eclipse.ui.workbench -Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Import-Package: org.eclipse.core.internal.resources, org.eclipse.jface.text, diff --git a/plugin/build.properties b/plugin/build.properties index ccfe656..df1e3fc 100644 --- a/plugin/build.properties +++ b/plugin/build.properties @@ -1,15 +1,12 @@ source.. = src/ +output.. = target/classes/ bin.includes = META-INF/,\ plugin.xml,\ icons/,\ .,\ - lib/ -src.includes = src/,\ - pom.xml,\ - plugin.xml,\ + lib/,\ + resources/ +src.includes = pom.xml,\ icons/,\ lib/,\ - .project,\ - .classpath,\ - META-INF/,\ - build.properties + resources/ diff --git a/plugin/resources/amblin.css b/plugin/resources/amblin.css new file mode 100644 index 0000000..34df864 --- /dev/null +++ b/plugin/resources/amblin.css @@ -0,0 +1,493 @@ +/* +Copyright 2013 Brett Terpstra +This document has been created with Marked.app +Content is property of the document author +Please leave this notice in place, along with any additional credits below. +--------------------------------------------------------------- +Title: Amblin +Author: Erik Sagan (@kartooner) +Description: A clean theme with bold headlines and carefully crafted typography. +Non-standard fonts used: + * Rockwell (Installed by Microsoft Office) + * Rokkit (Fallback, available at ) +Download @font-face kits from . Woff versions included as data uris. +*/ +#wrapper div, #wrapper span, #wrapper object, #wrapper iframe, #wrapper h1, + #wrapper h2, #wrapper h3, #wrapper h4, #wrapper h5, #wrapper h6, + #wrapper p, #wrapper blockquote, #wrapper pre, #wrapper a, #wrapper abbr, + #wrapper acronym, #wrapper address, #wrapper code, #wrapper del, + #wrapper dfn, #wrapper em, #wrapper img, #wrapper q, #wrapper dl, + #wrapper dt, #wrapper dd, #wrapper ol, #wrapper ul, #wrapper li, + #wrapper fieldset, #wrapper form, #wrapper label, #wrapper legend, + #wrapper table, #wrapper caption, #wrapper tbody, #wrapper tfoot, + #wrapper thead, #wrapper tr, #wrapper th, #wrapper td { + margin: 0; + padding: 0; + border: 0; + font-weight: inherit; + font-style: inherit; + font-size: 100%; + font-family: inherit; + vertical-align: baseline; +} + +body { + background: #fff; + margin: 1.5em 0; +} + +body #wrapper { + line-height: 1.8; +} + +#wrapper table { + border-collapse: collapse; + border-spacing: 0; +} + +#wrapper caption, #wrapper th, #wrapper td { + text-align: left; + font-weight: 400; +} + +#wrapper blockquote:before, #wrapper blockquote:after, #wrapper q:before, + #wrapper q:after { + content: ""; +} + +#wrapper blockquote, #wrapper q { + quotes: "" ""; +} + +#wrapper a img { + border: none; +} + +#wrapper input, #wrapper textarea { + margin: 0; +} + +/* -------------------------------------------------------------- +Typography +--------------------------------------------------------------*/ +body { + -webkit-font-smoothing: antialiased; + font-size: 110%; + margin: 2em 0 0; +} + +/* Headings +--------------------------------------------------------------*/ +@font-face { + font-family: 'RokkittRegular'; + src: + url("data:font/woff;base64,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") + format("woff"); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'LiberationMonoRegular'; + src: + url("data:font/woff;base64,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") + format("woff"); + font-weight: normal; + font-style: normal; +} + +#wrapper { + font-size: 13px; + /* Text elements + --------------------------------------------------------------*/ + padding: 20px; +} + +#wrapper p, #wrapper ul, #wrapper ol, #wrapper dl, #wrapper td, #wrapper input, + #wrapper textarea, #wrapper div { + color: #333; + font-family: Lucida Grande, Verdana, Helvetica, Arial, sans-serif; +} + +#wrapper h1, #wrapper h2, #wrapper h3, #wrapper h4, #wrapper h5, + #wrapper h6 { + color: #333; + font-family: Rockwell, 'Rokkitt', Georgia, serif; + letter-spacing: 0; +} + +#wrapper h1 { + font-size: 3em; + line-height: 1; + margin-bottom: 0.5em; +} + +#wrapper h2 { + font-size: 2em; + margin-bottom: 0.75em; +} + +#wrapper h3 { + font-size: 1.5em; + line-height: 1; + margin-bottom: 1em; +} + +#wrapper h4 { + font-size: 1.2em; + line-height: 1.25; + margin-bottom: 1.25em; +} + +#wrapper h5 { + font-size: 1em; + margin-bottom: 1.5em; +} + +#wrapper h6 { + font-size: 1em; +} + +#wrapper p { + margin: 0 0 1.5em; + font-size: 1.2em; +} + +#wrapper ul, #wrapper ol { + color: #444; + margin: 1em 2em; +} + +#wrapper ul { + list-style-type: circle; + font-size: 1.05em; +} + +#wrapper ol { + list-style-type: decimal; +} + +#wrapper li p { + font-size: 1em; +} + +#wrapper li>p:first-child { + margin: 0; +} + +#wrapper dl { + margin: 0 0 1.5em 0; +} + +#wrapper dl dt { + font-weight: bold; +} + +#wrapper dl dd { + margin-left: 1.5em; +} + +#wrapper abbr, #wrapper acronym { + border-bottom: 1px dotted #000; +} + +#wrapper address { + margin-top: 1.5em; + font-style: italic; +} + +#wrapper del { + color: #000; +} + +#wrapper a { + color: #D33637; + text-decoration: none; + border-bottom: 1px dotted #D33637; + -webkit-transition: color .2s ease-in-out; + -moz-transition: color .2s ease-in-out; + -o-transition: color .2s ease-in-out; + -ms-transition: color .2s ease-in-out; + transition: color .2s ease-in-out; +} + +#wrapper a:hover { + text-decoration: none; + color: #666; + border-bottom-color: #666; +} + +#wrapper a:active { + outline: 0; + position: relative; + top: 1px; +} + +#wrapper blockquote { + background: #e7e7e7; + border-top: 1px solid #ccc; + margin: 1.5em; + color: #444; + font-style: italic; +} + +#wrapper blockquote p { + padding: 1em; + border-top: 1px solid #fff; +} + +#wrapper strong { + font-weight: bold; +} + +#wrapper em { + font-style: italic; +} + +#wrapper dfn { + font-weight: bold; +} + +#wrapper pre, #wrapper code, #wrapper tt { + color: #8b8074; + font-family: 'LiberationMonoRegular', Menlo, Monaco, monospace; + font-size: 1em; + font-weight: bold; + text-align: left; + margin: 2em 0; +} + +#wrapper tt { + display: block; + margin: 1.5em 0; + line-height: 1.5; +} + +#wrapper span.amp { + font-family: Baskerville, Palatino, "Book Antiqua", serif; + font-style: italic; +} + +#wrapper img { + max-width: 100%; + height: auto; +} + +#wrapper .footnote { + font-size: .8em; + vertical-align: super; +} + +#wrapper caption, #wrapper col, #wrapper colgroup, #wrapper table, + #wrapper tbody, #wrapper td, #wrapper tfoot, #wrapper th, #wrapper thead, + #wrapper tr { + border-spacing: 0; +} + +#wrapper caption { + color: #666; +} + +#wrapper figure { + display: inline-block; + margin: .5em 0 1.8em; + position: relative; +} + +#wrapper .poetry pre { + display: block; + font-family: Georgia, Garamond, serif !important; + font-size: 110% !important; + font-style: italic; + line-height: 1.6em; + margin-left: 1em; +} + +#wrapper .poetry pre code { + font-family: Georgia, Garamond, serif !important; + word-break: break-all; + word-break: break-word; + /* Non standard for webkit */ + -webkit-hyphens: auto; + -moz-hyphens: auto; + hyphens: auto; + white-space: pre-wrap; +} + +#wrapper sup, #wrapper sub, #wrapper a.footnote { + font-size: 1.4ex; + height: 0; + line-height: 1; + position: relative; + vertical-align: super; +} + +#wrapper sub { + vertical-align: sub; + top: -1px; +} + +#wrapper table { + width: 100%; + margin-bottom: 2em; + padding: 0; + font-size: 13px; + border: 1px solid #ddd; + border-collapse: separate; + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; +} + +#wrapper table th, #wrapper table td { + padding: 10px 10px 9px; + line-height: 18px; + text-align: left; +} + +#wrapper table th { + padding-top: 9px; + font-weight: bold; + vertical-align: middle; +} + +#wrapper table td { + vertical-align: top; + border-top: 1px solid #ddd; +} + +#wrapper table tbody th { + border-top: 1px solid #ddd; + vertical-align: top; +} + +#wrapper table th+th, #wrapper table td+td, #wrapper table th+td { + border-left: 1px solid #ddd; +} + +#wrapper table thead tr:first-child th:first-child, #wrapper table tbody tr:first-child td:first-child + { + border-radius: 4px 0 0 0; + -moz-border-radius: 4px 0 0 0; + -webkit-border-radius: 4px 0 0 0; +} + +#wrapper table thead tr:first-child th:last-child, #wrapper table tbody tr:first-child td:last-child + { + border-radius: 0 4px 0 0; + -moz-border-radius: 0 4px 0 0; + -webkit-border-radius: 0 4px 0 0; +} + +#wrapper table tbody tr:last-child td:first-child { + border-radius: 0 0 0 4px; + -moz-border-radius: 0 0 0 4px; + -webkit-border-radius: 0 0 0 4px; +} + +#wrapper table tbody tr:last-child td:last-child { + border-radius: 0 0 4px 0; + -moz-border-radius: 0 0 4px 0; + -webkit-border-radius: 0 0 4px 0; +} + +#wrapper table tbody tr:nth-child(odd) { + background-color: rgba(0, 0, 0, 0.03); +} + +@media print { + body { + overflow: auto; + } + img, pre, blockquote, table, figure { + page-break-inside: avoid; + } + #wrapper { + background: #fff; + color: #303030; + font-size: 85%; + padding: 10px; + position: relative; + text-indent: 0; + } +} + +@media screen { + #wrapper ::selection { + background: rgba(157, 193, 200, 0.5); + } + #wrapper h1::selection { + background-color: rgba(45, 156, 208, 0.3); + } + #wrapper h2::selection { + background-color: rgba(90, 182, 224, 0.3); + } + #wrapper h3::selection, #wrapper h4::selection, #wrapper h5::selection, + #wrapper h6::selection, #wrapper li::selection, #wrapper ol::selection + { + background-color: rgba(133, 201, 232, 0.3); + } + #wrapper code::selection { + background-color: rgba(0, 0, 0, 0.7); + color: #eee; + } + #wrapper code span::selection { + background-color: rgba(0, 0, 0, 0.7) !important; + color: #eee !important; + } + #wrapper a::selection { + background-color: rgba(255, 230, 102, 0.2); + } + #wrapper .inverted a::selection { + background-color: rgba(255, 230, 102, 0.6); + } + #wrapper td::selection, #wrapper th::selection, #wrapper caption::selection + { + background-color: rgba(180, 237, 95, 0.5); + } + .inverted { + background: #0b2531; + } + .inverted #wrapper { + padding: 20px; + background: #0b2531; + } + .inverted #wrapper p, .inverted #wrapper td, .inverted #wrapper li, + .inverted #wrapper h1, .inverted #wrapper h2, .inverted #wrapper h3, + .inverted #wrapper h4, .inverted #wrapper h5, .inverted #wrapper h6, + .inverted #wrapper pre, .inverted #wrapper code, .inverted #wrapper th, + .inverted #wrapper .math, .inverted #wrapper dd, .inverted #wrapper dt + { + color: #eee !important; + } + .inverted #wrapper a { + border-bottom: none; + color: #fff; + text-decoration: underline; + } + .inverted #wrapper blockquote { + background: rgba(255, 255, 255, 0.1); + border-top-color: rgba(255, 255, 255, 0.1); + } + .inverted #wrapper blockquote p { + border-top-color: rgba(255, 255, 255, 0.3); + } + .inverted #wrapper caption, .inverted #wrapper .footnote, .inverted #wrapper figcaption + { + color: rgba(255, 255, 255, 0.5); + } + .inverted #wrapper table { + border-color: rgba(255, 255, 255, 0.3); + } + .inverted #wrapper table td { + vertical-align: top; + border-top: none; + } + .inverted #wrapper table th+th, .inverted #wrapper table td+td, + .inverted #wrapper table th+td { + border-left: 1px solid rgba(255, 255, 255, 0.3); + } + .inverted #wrapper table tbody tr:nth-child(odd) { + background-color: rgba(255, 255, 255, 0.1); + } +} \ No newline at end of file diff --git a/plugin/resources/avenir-white.css b/plugin/resources/avenir-white.css new file mode 100644 index 0000000..baee59b --- /dev/null +++ b/plugin/resources/avenir-white.css @@ -0,0 +1,108 @@ +/* https://github.com/jasonm23/markdown-css-themes/blob/gh-pages/avenir-white.css */ + +body { + font-family: "Avenir Next", Helvetica, Arial, sans-serif; + padding:1em; + margin:auto; + max-width:42em; + background:#fefefe; +} + +h1, h2, h3, h4, h5, h6 { + font-weight: bold; +} + +h1 { + color: #000000; + font-size: 28pt; +} + +h2 { + border-bottom: 1px solid #CCCCCC; + color: #000000; + font-size: 24px; +} + +h3 { + font-size: 18px; +} + +h4 { + font-size: 16px; +} + +h5 { + font-size: 14px; +} + +h6 { + color: #777777; + background-color: inherit; + font-size: 14px; +} + +hr { + height: 0.2em; + border: 0; + color: #CCCCCC; + background-color: #CCCCCC; +} + +p, blockquote, ul, ol, dl, li, table, pre { + margin: 15px 0; +} + +a, a:visited { + color: #4183C4; + background-color: inherit; + text-decoration: none; +} + +#message { + border-radius: 6px; + border: 1px solid #ccc; + display:block; + width:100%; + height:60px; + margin:6px 0px; +} + +button, #ws { + font-size: 10pt; + padding: 4px 6px; + border-radius: 5px; + border: 1px solid #bbb; + background-color: #eee; +} + +code, pre, #ws, #message { + font-family: Monaco; + font-size: 10pt; + border-radius: 3px; + background-color: #F8F8F8; + color: inherit; +} + +code { + border: 1px solid #EAEAEA; + margin: 0 2px; + padding: 0 5px; +} + +pre { + border: 1px solid #CCCCCC; + overflow: auto; + padding: 4px 8px; +} + +pre > code { + border: 0; + margin: 0; + padding: 0; +} + +#ws { background-color: #f8f8f8; } + +.send { color:#77bb77; } +.server { color:#7799bb; } +.error { color:#AA0000; } diff --git a/plugin/resources/github.css b/plugin/resources/github.css new file mode 100644 index 0000000..2e30dc6 --- /dev/null +++ b/plugin/resources/github.css @@ -0,0 +1,617 @@ +/* +This document has been created with Marked.app , Copyright 2013 Brett Terpstra +Content is property of the document author +Please leave this notice in place, along with any additional credits below. +--------------------------------------------------------------- +Title: GitHub +Author: Brett Terpstra +Description: Github README style. Includes theme for Pygmentized code blocks. +*/ +html, body { + color: black; +} + +/* +*:not('#mkdbuttons') { + margin: 0; + padding: 0; } +*/ +#wrapper { + font: 15px helvetica, arial, freesans, clean, sans-serif; + -webkit-font-smoothing: antialiased; + line-height: 1.7; + padding: 3px; + background: #fff; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +p { + margin: 1em 0; +} + +a { + color: #4183c4; + text-decoration: none; +} + +#wrapper { + background-color: #fff; + padding: 30px; + margin: 15px; + font-size: 15px; + line-height: 1.6; +} + +#wrapper>*:first-child { + margin-top: 0 !important; +} + +#wrapper>*:last-child { + margin-bottom: 0 !important; +} + +@media screen { + #wrapper { + box-shadow: 0 0 0 1px #cacaca, 0 0 0 4px #eee; + } +} + +h1, h2, h3, h4, h5, h6 { + font-weight: 700; + line-height: 1.7; + cursor: text; + position: relative; + margin: 1em 0 15px; + padding: 0; +} + +h1 { + font-size: 2.5em; + border-bottom: 1px solid #ddd; +} + +h2 { + font-size: 2em; + border-bottom: 1px solid #eee; +} + +h3 { + font-size: 1.5em; +} + +h4 { + font-size: 1.2em; +} + +h5 { + font-size: 1em; +} + +h6 { + color: #777; + font-size: 1em; +} + +p, blockquote, table, pre { + margin: 15px 0; +} + +ul { + padding-left: 30px; +} + +ol { + padding-left: 30px; +} + +ol li ul:first-of-type { + margin-top: 0px; +} + +hr { + background: transparent + url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OENDRjNBN0E2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OENDRjNBN0I2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4Q0NGM0E3ODY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4Q0NGM0E3OTY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqqezsUAAAAfSURBVHjaYmRABcYwBiM2QSA4y4hNEKYDQxAEAAIMAHNGAzhkPOlYAAAAAElFTkSuQmCC) + repeat-x 0 0; + border: 0 none; + color: #ccc; + height: 4px; + margin: 15px 0; + padding: 0; +} + +#wrapper>h2:first-child { + margin-top: 0; + padding-top: 0; +} + +#wrapper>h1:first-child { + margin-top: 0; + padding-top: 0; +} + +#wrapper>h1:first-child+h2 { + margin-top: 0; + padding-top: 0; +} + +#wrapper>h3:first-child, #wrapper>h4:first-child, #wrapper>h5:first-child, + #wrapper>h6:first-child { + margin-top: 0; + padding-top: 0; +} + +a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, + a:first-child h5, a:first-child h6 { + margin-top: 0; + padding-top: 0; +} + +h1+p, h2+p, h3+p, h4+p, h5+p, h6+p, ul li>:first-child, ol li>:first-child + { + margin-top: 0; +} + +dl { + padding: 0; +} + +dl dt { + font-size: 14px; + font-weight: bold; + font-style: italic; + padding: 0; + margin: 15px 0 5px; +} + +dl dt:first-child { + padding: 0; +} + +dl dt>:first-child { + margin-top: 0; +} + +dl dt>:last-child { + margin-bottom: 0; +} + +dl dd { + margin: 0 0 15px; + padding: 0 15px; +} + +dl dd>:first-child { + margin-top: 0; +} + +dl dd>:last-child { + margin-bottom: 0; +} + +blockquote { + border-left: 4px solid #DDD; + padding: 0 15px; + color: #777; +} + +blockquote>:first-child { + margin-top: 0; +} + +blockquote>:last-child { + margin-bottom: 0; +} + +table { + border-collapse: collapse; + border-spacing: 0; + font-size: 100%; + font: inherit; +} + +table th { + font-weight: bold; + border: 1px solid #ccc; + padding: 6px 13px; +} + +table td { + border: 1px solid #ccc; + padding: 6px 13px; +} + +table tr { + border-top: 1px solid #ccc; + background-color: #fff; +} + +table tr:nth-child(2n) { + background-color: #f8f8f8; +} + +img { + max-width: 100%; +} + +code, tt { + margin: 0 2px; + padding: 0 5px; + white-space: nowrap; + border: 1px solid #eaeaea; + background-color: #f8f8f8; + border-radius: 3px; + font-family: Consolas, 'Liberation Mono', Courier, monospace; + font-size: 12px; + color: #333333; +} + +pre>code { + margin: 0; + padding: 0; + white-space: pre; + border: none; + background: transparent; +} + +.highlight pre { + background-color: #f8f8f8; + border: 1px solid #ccc; + font-size: 13px; + line-height: 19px; + overflow: auto; + padding: 6px 10px; + border-radius: 3px; +} + +pre { + background-color: #f8f8f8; + border: 1px solid #ccc; + font-size: 14px; + line-height: 19px; + overflow: auto; + padding: 6px 10px; + border-radius: 3px; + margin: 26px 0; +} + +pre code, pre tt { + background-color: transparent; + border: none; +} + +.poetry pre { + font-family: Georgia, Garamond, serif !important; + font-style: italic; + font-size: 110% !important; + line-height: 1.6em; + display: block; + margin-left: 1em; +} + +.poetry pre code { + font-family: Georgia, Garamond, serif !important; + word-break: break-all; + word-break: break-word; + /* Non standard for webkit */ + -webkit-hyphens: auto; + -moz-hyphens: auto; + hyphens: auto; + white-space: pre-wrap; +} + +sup, sub, a.footnote { + font-size: 1.4ex; + height: 0; + line-height: 1; + vertical-align: super; + position: relative; +} + +sub { + vertical-align: sub; + top: -1px; +} + +@media print { + body { + background: #fff; + } + img, pre, blockquote, table, figure { + page-break-inside: avoid; + } + #wrapper { + background: #fff; + border: none; + } + pre code { + overflow: visible; + } +} + +@media screen { + body.inverted { + color: #eee !important; + border-color: #555; + box-shadow: none; + } + .inverted #wrapper, .inverted hr, .inverted p, .inverted td, .inverted li, + .inverted h1, .inverted h2, .inverted h3, .inverted h4, .inverted h5, + .inverted h6, .inverted th, .inverted .math, .inverted caption, + .inverted dd, .inverted dt, .inverted blockquote { + color: #eee !important; + border-color: #555; + box-shadow: none; + } + .inverted td, .inverted th { + background: #333; + } + .inverted pre, .inverted code, .inverted tt { + background: #eeeeee !important; + color: #111; + } + .inverted h2 { + border-color: #555555; + } + .inverted hr { + border-color: #777; + border-width: 1px !important; + } + ::selection { + background: rgba(157, 193, 200, 0.5); + } + h1::selection { + background-color: rgba(45, 156, 208, 0.3); + } + h2::selection { + background-color: rgba(90, 182, 224, 0.3); + } + h3::selection, h4::selection, h5::selection, h6::selection, li::selection, + ol::selection { + background-color: rgba(133, 201, 232, 0.3); + } + code::selection { + background-color: rgba(0, 0, 0, 0.7); + color: #eeeeee; + } + code span::selection { + background-color: rgba(0, 0, 0, 0.7) !important; + color: #eeeeee !important; + } + a::selection { + background-color: rgba(255, 230, 102, 0.2); + } + .inverted a::selection { + background-color: rgba(255, 230, 102, 0.6); + } + td::selection, th::selection, caption::selection { + background-color: rgba(180, 237, 95, 0.5); + } + .inverted { + background: #0b2531; + background: #252a2a; + } + .inverted #wrapper { + background: #252a2a; + } + .inverted a { + color: #acd1d5; + } +} + +.highlight .c { + color: #998; + font-style: italic; +} + +.highlight .err { + color: #a61717; + background-color: #e3d2d2; +} + +.highlight .k, .highlight .o { + font-weight: bold; +} + +.highlight .cm { + color: #998; + font-style: italic; +} + +.highlight .cp { + color: #999; + font-weight: bold; +} + +.highlight .c1 { + color: #998; + font-style: italic; +} + +.highlight .cs { + color: #999; + font-weight: bold; + font-style: italic; +} + +.highlight .gd { + color: #000; + background-color: #fdd; +} + +.highlight .gd .x { + color: #000; + background-color: #faa; +} + +.highlight .ge { + font-style: italic; +} + +.highlight .gr { + color: #a00; +} + +.highlight .gh { + color: #999; +} + +.highlight .gi { + color: #000; + background-color: #dfd; +} + +.highlight .gi .x { + color: #000; + background-color: #afa; +} + +.highlight .go { + color: #888; +} + +.highlight .gp { + color: #555; +} + +.highlight .gs { + font-weight: bold; +} + +.highlight .gu { + color: #800080; + font-weight: bold; +} + +.highlight .gt { + color: #a00; +} + +.highlight .kc, .highlight .kd, .highlight .kn, .highlight .kp, + .highlight .kr { + font-weight: bold; +} + +.highlight .kt { + color: #458; + font-weight: bold; +} + +.highlight .m { + color: #099; +} + +.highlight .s { + color: #d14; +} + +.highlight .na { + color: #008080; +} + +.highlight .nb { + color: #0086B3; +} + +.highlight .nc { + color: #458; + font-weight: bold; +} + +.highlight .no { + color: #008080; +} + +.highlight .ni { + color: #800080; +} + +.highlight .ne, .highlight .nf { + color: #900; + font-weight: bold; +} + +.highlight .nn { + color: #555; +} + +.highlight .nt { + color: #000080; +} + +.highlight .nv { + color: #008080; +} + +.highlight .ow { + font-weight: bold; +} + +.highlight .w { + color: #bbb; +} + +.highlight .mf, .highlight .mh, .highlight .mi, .highlight .mo { + color: #099; +} + +.highlight .sb, .highlight .sc, .highlight .sd, .highlight .s2, + .highlight .se, .highlight .sh, .highlight .si, .highlight .sx { + color: #d14; +} + +.highlight .sr { + color: #009926; +} + +.highlight .s1 { + color: #d14; +} + +.highlight .ss { + color: #990073; +} + +.highlight .bp { + color: #999; +} + +.highlight .vc, .highlight .vg, .highlight .vi { + color: #008080; +} + +.highlight .il { + color: #099; +} + +.highlight .gc { + color: #999; + background-color: #EAF2F5; +} + +.type-csharp .highlight .k, .type-csharp .highlight .kt { + color: #00F; +} + +.type-csharp .highlight .nf { + color: #000; + font-weight: normal; +} + +.type-csharp .highlight .nc { + color: #2B91AF; +} + +.type-csharp .highlight .nn { + color: #000; +} + +.type-csharp .highlight .s, .type-csharp .highlight .sc { + color: #A31515; +} + +body.dark #wrapper { + background: transparent !important; + box-shadow: none !important; +} \ No newline at end of file diff --git a/plugin/resources/markdown.css b/plugin/resources/markdown.css new file mode 100644 index 0000000..9eab02e --- /dev/null +++ b/plugin/resources/markdown.css @@ -0,0 +1,266 @@ +/* https://github.com/simonlc/Markdown-CSS/blob/master/markdown.css */ +html { + font-size: 100%; + overflow-y: scroll; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +body { + color: #444; + font-family: Georgia, Palatino, 'Palatino Linotype', Times, + 'Times New Roman', serif; + font-size: 12px; + line-height: 1.5em; + padding: 1em; + margin: auto; + max-width: 42em; + background: #fefefe; +} + +a { + color: #0645ad; + text-decoration: none; +} + +a:visited { + color: #0b0080; +} + +a:hover { + color: #06e; +} + +a:active { + color: #faa700; +} + +a:focus { + outline: thin dotted; +} + +a:hover, a:active { + outline: 0; +} + +::-moz-selection { + background: rgba(255, 255, 0, 0.3); + color: #000 +} + +::selection { + background: rgba(255, 255, 0, 0.3); + color: #000 +} + +a::-moz-selection { + background: rgba(255, 255, 0, 0.3); + color: #0645ad +} + +a::selection { + background: rgba(255, 255, 0, 0.3); + color: #0645ad +} + +p { + margin: 1em 0; +} + +img { + max-width: 100%; +} + +h1, h2, h3, h4, h5, h6 { + font-weight: normal; + color: #111; + line-height: 1em; +} + +h4, h5, h6 { + font-weight: bold; +} + +h1 { + font-size: 2.5em; +} + +h2 { + font-size: 2em; +} + +h3 { + font-size: 1.5em; +} + +h4 { + font-size: 1.2em; +} + +h5 { + font-size: 1em; +} + +h6 { + font-size: 0.9em; +} + +blockquote { + color: #666666; + margin: 0; + padding-left: 3em; + border-left: 0.5em #EEE solid; +} + +hr { + display: block; + height: 2px; + border: 0; + border-top: 1px solid #aaa; + border-bottom: 1px solid #eee; + margin: 1em 0; + padding: 0; +} + +pre, code, kbd, samp { + color: #000; + font-family: monospace, monospace; + _font-family: 'courier new', monospace; + font-size: 0.98em; +} + +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +b, strong { + font-weight: bold; +} + +dfn { + font-style: italic; +} + +ins { + background: #ff9; + color: #000; + text-decoration: none; +} + +mark { + background: #ff0; + color: #000; + font-style: italic; + font-weight: bold; +} + +sub, sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +ul, ol { + margin: 1em 0; + padding: 0 0 0 2em; +} + +li p:last-child { + margin: 0 +} + +dd { + margin: 0 0 0 2em; +} + +img { + border: 0; + -ms-interpolation-mode: bicubic; + vertical-align: middle; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td { + vertical-align: top; +} + +@media only screen and (min-width: 480px) { + body { + font-size: 14px; + } +} + +@media only screen and (min-width: 768px) { + body { + font-size: 16px; + } +} + +@media print { + * { + background: transparent !important; + color: black !important; + filter: none !important; + -ms-filter: none !important; + } + body { + font-size: 12pt; + max-width: 100%; + } + a, a:visited { + text-decoration: underline; + } + hr { + height: 1px; + border: 0; + border-bottom: 1px solid black; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { + content: ""; + } + pre, blockquote { + border: 1px solid #999; + padding-right: 1em; + page-break-inside: avoid; + } + tr, img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page :left { + margin: 15mm 20mm 15mm 10mm; + } + @page :right { + margin: 15mm 10mm 15mm 20mm; + } + p, h2, h3 { + orphans: 3; + widows: 3; + } + h2, h3 { + page-break-after: avoid; + } +} \ No newline at end of file diff --git a/plugin/resources/modest.css b/plugin/resources/modest.css new file mode 100644 index 0000000..86e0448 --- /dev/null +++ b/plugin/resources/modest.css @@ -0,0 +1,169 @@ +/* https://github.com/markdowncss/modest */ +pre, code { + font-family: Menlo, Monaco, "Courier New", monospace; +} + +pre { + padding: .5rem; + line-height: 1.25; + overflow-x: scroll; +} + +a, a:visited { + color: #3498db; +} + +a:hover, a:focus, a:active { + color: #2980b9; +} + +.modest-no-decoration { + text-decoration: none; +} + +html { + font-size: 12px; +} + +@media screen and (min-width: 32rem) and (max-width: 48rem) { + html { + font-size: 15px; + } +} + +@media screen and (min-width: 48rem) { + html { + font-size: 16px; + } +} + +@media print { + *, *:before, *:after { + background: transparent !important; + color: #000 !important; + box-shadow: none !important; + text-shadow: none !important; + } + a, a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, a[href^="javascript:"]:after { + content: ""; + } + pre, blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, h2, h3 { + orphans: 3; + widows: 3; + } + h2, h3 { + page-break-after: avoid; + } +} + +body { + line-height: 1.85; +} + +p, .modest-p { + font-size: 1rem; + margin-bottom: 1.3rem; +} + +h1, .modest-h1, h2, .modest-h2, h3, .modest-h3, h4, .modest-h4 { + margin: 1.414rem 0 .5rem; + font-weight: inherit; + line-height: 1.42; +} + +h1, .modest-h1 { + margin-top: 0; + font-size: 3.998rem; +} + +h2, .modest-h2 { + font-size: 2.827rem; +} + +h3, .modest-h3 { + font-size: 1.999rem; +} + +h4, .modest-h4 { + font-size: 1.414rem; +} + +h5, .modest-h5 { + font-size: 1.121rem; +} + +h6, .modest-h6 { + font-size: .88rem; +} + +small, .modest-small { + font-size: .707em; +} + +/* https://github.com/mrmrs/fluidity */ +img, canvas, iframe, video, svg, select, textarea { + max-width: 100%; +} + +@import + url(http://fonts.googleapis.com/css?family=Open+Sans+Condensed:300,300italic,700) + ; + +@import url(http://fonts.googleapis.com/css?family=Arimo:700,700italic); + +html { + font-size: 18px; + max-width: 100%; +} + +body { + color: #444; + font-family: 'Open Sans Condensed', sans-serif; + font-weight: 300; + margin: 0 auto; + max-width: 48rem; + line-height: 1.45; + padding: .25rem; +} + +h1, h2, h3, h4, h5, h6 { + font-family: Arimo, Helvetica, sans-serif; +} + +h1, h2, h3 { + border-bottom: 2px solid #fafafa; + margin-bottom: 1.15rem; + padding-bottom: .5rem; + text-align: center; +} + +blockquote { + border-left: 8px solid #fafafa; + padding: 1rem; +} + +pre, code { + background-color: #fafafa; +} \ No newline at end of file diff --git a/plugin/resources/screen.css b/plugin/resources/screen.css new file mode 100644 index 0000000..a98a70d --- /dev/null +++ b/plugin/resources/screen.css @@ -0,0 +1,175 @@ +/* https://github.com/jasonm23/markdown-css-themes/blob/gh-pages/screen.css */ +html { + font-size: 62.5%; +} + +html, body { + height: 100%; +} + +body { + font-family: Helvetica, Arial, sans-serif; + font-size: 150%; + line-height: 1.3; + color: #f6e6cc; + width: 700px; + margin: auto; + background: #27221a; + position: relative; + padding: 0 30px; +} + +p, ul, ol, dl, table, pre { + margin-bottom: 1em; +} + +ul { + margin-left: 20px; +} + +a { + text-decoration: none; + cursor: pointer; + color: #ba832c; + font-weight: bold; +} + +a:focus { + outline: 1px dotted; +} + +a:visited { + +} + +a:hover, a:focus { + color: #d3a459; + text-decoration: none; +} + +a *, button * { + cursor: pointer; +} + +hr { + display: none; +} + +small { + font-size: 90%; +} + +input, select, button, textarea, option { + font-family: Arial, "Lucida Grande", "Lucida Sans Unicode", Arial, + Verdana, sans-serif; + font-size: 100%; +} + +button, label, select, option, input[type=submit] { + cursor: pointer; +} + +.group:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} + +.group { + display: inline-block; +} +/* Hides from IE-mac \*/ +* html .group { + height: 1%; +} + +.group { + display: block; +} /* End hide from IE-mac */ +sup { + font-size: 80%; + line-height: 1; + vertical-align: super; +} + +button::-moz-focus-inner { + border: 0; + padding: 1px; +} + +span.amp { + font-family: Baskerville, "Goudy Old Style", "Palatino", "Book Antiqua", + serif; + font-weight: normal; + font-style: italic; + font-size: 1.2em; + line-height: 0.8; +} + +h1, h2, h3, h4, h5, h6 { + line-height: 1.1; + font-family: Baskerville, "Goudy Old Style", "Palatino", "Book Antiqua", + serif; +} + +h2 { + font-size: 22pt; +} + +h3 { + font-size: 20pt; +} + +h4 { + font-size: 18pt; +} + +h5 { + font-size: 16pt; +} + +h6 { + font-size: 14pt; +} + +::selection { + background: #745626; +} + +::-moz-selection { + background: #745626; +} + +h1 { + font-size: 420%; + margin: 0 0 0.1em; + font-family: Baskerville, "Goudy Old Style", "Palatino", "Book Antiqua", + serif; +} + +h1 a, h1 a:hover { + color: #d7af72; + font-weight: normal; + text-decoration: none; +} + +pre { + background: rgba(0, 0, 0, 0.3); + color: #fff; + padding: 8px 10px; + border-radius: 0.4em; + -moz-border-radius: 0.4em; + -webkit-border-radius: 0.4em; + overflow-x: hidden; +} + +pre code { + font-size: 10pt; +} + +.thumb { + float: left; + margin: 10px; +} \ No newline at end of file diff --git a/plugin/resources/swiss.css b/plugin/resources/swiss.css new file mode 100644 index 0000000..123be1b --- /dev/null +++ b/plugin/resources/swiss.css @@ -0,0 +1,111 @@ +@charset "utf-8"; + +/** + * markdown.css + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation, either version 3 of the License, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see http://gnu.org/licenses/lgpl.txt. + * + * @project Weblog and Open Source Projects of Florian Wolters + * @version GIT: $Id$ + * @package xhtml-css + * @author Florian Wolters + * @copyright 2012 Florian Wolters + * @cssdoc version 1.0-pre + * @license http://gnu.org/licenses/lgpl.txt GNU Lesser General Public License + * @link http://github.com/FlorianWolters/jekyll-bootstrap-theme + * @media all + * @valid true + */ +body { + font-family: Helvetica, Arial, Freesans, clean, sans-serif; + padding: 1em; + margin: auto; + max-width: 42em; + background: #fefefe; +} + +h1, h2, h3, h4, h5, h6 { + font-weight: bold; +} + +h1 { + color: #000000; + font-size: 28px; +} + +h2 { + border-bottom: 1px solid #CCCCCC; + color: #000000; + font-size: 24px; +} + +h3 { + font-size: 18px; +} + +h4 { + font-size: 16px; +} + +h5 { + font-size: 14px; +} + +h6 { + color: #777777; + background-color: inherit; + font-size: 14px; +} + +hr { + height: 0.2em; + border: 0; + color: #CCCCCC; + background-color: #CCCCCC; +} + +p, blockquote, ul, ol, dl, li, table, pre { + margin: 15px 0; +} + +code, pre { + border-radius: 3px; + background-color: #F8F8F8; + color: inherit; +} + +code { + border: 1px solid #EAEAEA; + margin: 0 2px; + padding: 0 5px; +} + +pre { + border: 1px solid #CCCCCC; + line-height: 1.25em; + overflow: auto; + padding: 6px 10px; +} + +pre>code { + border: 0; + margin: 0; + padding: 0; +} + +a, a:visited { + color: #4183C4; + background-color: inherit; + text-decoration: none; +} \ No newline at end of file diff --git a/plugin/src/winterwell/markdown/StringMethods.java b/plugin/src/winterwell/markdown/StringMethods.java index 208e0ae..27a49d6 100755 --- a/plugin/src/winterwell/markdown/StringMethods.java +++ b/plugin/src/winterwell/markdown/StringMethods.java @@ -1,557 +1,510 @@ -/** - * Basic String manipulation utilities. - * (c) Winterwell 2010 and ThinkTank Mathematics 2007 - */ -package winterwell.markdown; - -import java.math.BigInteger; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Pattern; - -import winterwell.utils.Mutable; -import winterwell.utils.containers.Pair; - -/** - * A collection of general-purpose String handling methods. - * - * @author daniel.winterstein - */ -public final class StringMethods { - - /** - * Removes xml tags, comment blocks and script blocks. - * - * @param page - * @return the page with all xml tags removed. - */ - public static String stripTags(String page) { - // This code is rather ugly, but it does the job - StringBuilder stripped = new StringBuilder(page.length()); - boolean inTag = false; - // Comment blocks and script blocks are given special treatment - boolean inComment = false; - boolean inScript = false; - // Go through the text - for (int i = 0; i < page.length(); i++) { - char c = page.charAt(i); - // First check whether we are ignoring text - if (inTag) { - if (c == '>') - inTag = false; - } else if (inComment) { - if (c == '>' && page.charAt(i - 1) == '-' - && page.charAt(i - 1) == '-') { - inComment = false; - } - } else if (inScript) { - if (c == '>' && page.substring(i - 7, i).equals("/script")) { - inScript = false; - } - } else { - // Check for the start of a tag - looks for '<' followed by any - // non-whitespace character - if (c == '<' && !Character.isWhitespace(page.charAt(i + 1))) { - // Comment, script-block or tag? - if (page.charAt(i + 1) == '!' && page.charAt(i + 2) == '-' - && page.charAt(i + 3) == '-') { - inComment = true; - } else if (i + 8 < page.length() - && page.substring(i + 1, i + 7).equals("script")) { - inScript = true; - i += 7; - } else - inTag = true; // Normal tag by default - } else { - // Append all non-tag chars - stripped.append(c); - } - } // end if... - } - return stripped.toString(); - } - - /** - * The local line-end string. \n on unix, \r\n on windows, \r on mac. - */ - public static final String LINEEND = System.getProperty("line.separator"); - - /** - * @param s - * @return A version of s where the first letter is uppercase and all others - * are lowercase - */ - public static final String capitalise(final String s) { - return s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase(); - } - - /** - * Convert all line breaks into the system line break. - */ - public static final String convertLineBreaks(String text) { - return convertLineBreaks(text, LINEEND); - } - - /** - * Convert all line breaks into the specified line break. - */ - public static final String convertLineBreaks(String text, String br) { - text = text.replaceAll("\r\n", br); - text = text.replaceAll("\r", br); - text = text.replaceAll("\n", br); - return text; - } - - /** - * @param string - * @param character - * @return the number of times character appears in the string - * @author Sam Halliday - */ - static public int countCharsInString(String string, char character) { - int count = 0; - for (char c : string.toCharArray()) { - if (c == character) { - count++; - } - } - return count; - } - - /** - * - * E.g. - * findEnclosingRegion("text with a [region] inside", 15, '[', ']') - * is (??,??) - * - * @param text - * @param offset - * @param start - * @param end - * @return the smallest enclosed region (including start and end chars, the - * 1st number is inclusive, the 2nd exclusive), or null if none. So - * text.subString(start,end) is the specified region - */ - public static Pair findEnclosingRegion(String text, int offset, - char startMarker, char endMarker) { - // Forward - int end = findEnclosingRegion2(text, offset, endMarker, 1); - if (end == -1) - return null; - end++; // end is exclusive - // Backward - int start = findEnclosingRegion2(text, offset, startMarker, -1); - if (start == -1) - return null; - // Sanity - assert text.substring(start, end).charAt(0) == startMarker; - assert text.substring(start, end).endsWith("" + endMarker); - // Done - return new Pair(start, end); - } - - private static int findEnclosingRegion2(String text, int offset, - char endMarker, int direction) { - while (offset > -1 && offset < text.length()) { - char c = text.charAt(offset); - if (c == endMarker) - return offset; - offset += direction; - } - return -1; - } - - /** - * A convenience wrapper for - * {@link #findEnclosingRegion(String, int, char, char)} E.g. - findEnclosingRegion("text with a [region] inside", 15, '[', ']') .equals("[region]"); - - * - * @param text - * @param offset - * @param start - * @param end - * @return the smallest enclosed region (including start and end chars), or - * null if none. - */ - public static String findEnclosingText(String text, int offset, - char startMarker, char endMarker) { - Pair region = findEnclosingRegion(text, offset, startMarker, - endMarker); - if (region == null) - return null; - String s = text.substring(region.first, region.second); - return s; - } - - /** - * Format a block of text to use the given line-width. I.e. adjust the line - * breaks. Also known as hard line-wrapping. Paragraphs are - * recognised by a line of blank space between them (e.g. two returns). - *

- * Note: a side-effect of this method is that it converts all line-breaks - * into the local system's line-breaks. E.g. on Windows, \n will become \r\n - * - * @param text - * The text to format - * @param lineWidth - * The number of columns in a line. Typically 78 or 80. - * @param respectLeadingCharacters - * Can be null. If set, the specified leading characters will be - * copied if the line is split. Use with " \t" to keep indented - * paragraphs properly indented. Use with "> \t" to also handle - * email-style quoting. Note that respected leading characters - * receive no special treatment when they are used inside a - * paragraph. - * @return A copy of text, formatted to the given line-width. - *

- * TODO: recognise paragraphs by changes in the respected leading - * characters - */ - public static String format(String text, int lineWidth, int tabWidth, - String respectLeadingCharacters) { - // Switch to Linux line breaks for easier internal workings - text = convertLineBreaks(text, "\n"); - // Find paragraphs - List paras = format2_splitParagraphs(text, - respectLeadingCharacters); - // Rebuild text - StringBuilder sb = new StringBuilder(text.length() + 10); - for (String p : paras) { - String fp = format3_oneParagraph(p, lineWidth, tabWidth, - respectLeadingCharacters); - sb.append(fp); - // Paragraphs end with a double line break - sb.append("\n\n"); - } - // Pop the last line breaks - sb.delete(sb.length() - 2, sb.length()); - // Convert line breaks to system ones - text = convertLineBreaks(sb.toString()); - // Done - return text; - } - - private static List format2_splitParagraphs(String text, - String respectLeadingCharacters) { - List paras = new ArrayList(); - Mutable.Int index = new Mutable.Int(0); - // TODO The characters prefacing this paragraph - String leadingChars = ""; - while (index.value < text.length()) { - // One paragraph - boolean inSpace = false; - int start = index.value; - while (index.value < text.length()) { - char c = text.charAt(index.value); - index.value++; - if (!Character.isWhitespace(c)) { - inSpace = false; - continue; - } - // Line end? - if (c == '\r' || c == '\n') { - // // Handle MS Windows 2 character \r\n line breaks - // if (index.value < text.length()) { - // char c2 = text.charAt(index.value); - // if (c=='\r' && c2=='\n') index.value++; // Push on past - // the 2nd line break char - // } - // Double line end - indicating a paragraph break - if (inSpace) - break; - inSpace = true; - } - // TODO Other paragraph markers, spotted by a change in - // leadingChars - } - String p = text.substring(start, index.value); - paras.add(p); - } - // Done - return paras; - } - - /** - * Format a block of text to fit the given line width - * - * @param p - * @param lineWidth - * @param tabWidth - * @param respectLeadingCharacters - * @return - */ - private static String format3_oneParagraph(String p, int lineWidth, - int tabWidth, String respectLeadingCharacters) { - // Collect the reformatted paragraph - StringBuilder sb = new StringBuilder(p.length() + 10); // Allow for - // some extra - // line-breaks - // Get respected leading chars - String leadingChars = format4_getLeadingChars(p, - respectLeadingCharacters); - // First Line - sb.append(leadingChars); - int lineLength = leadingChars.length(); - int index = leadingChars.length(); - // Loop - while (index < p.length()) { - // Get the next word - StringBuilder word = new StringBuilder(); - char c = p.charAt(index); - index++; - while (!Character.isWhitespace(c)) { - word.append(c); - if (index == p.length()) - break; - c = p.charAt(index); - index++; - } - // Break the line if the word will not fit - if (lineLength + word.length() > lineWidth && lineLength != 0) { - trimEnd(sb); - sb.append('\n'); // lineEnd(sb); - // New line - sb.append(leadingChars); - lineLength = leadingChars.length(); - } - // Add word - sb.append(word); - lineLength += word.length(); - // Add the whitespace - if (index != p.length() && lineLength < lineWidth) { - if (c == '\n') { - c = ' '; - } - sb.append(c); - lineLength += (c == '\t') ? tabWidth : 1; - } - } - // A final trim - trimEnd(sb); - // Done - return sb.toString(); - } - - /** - * - * @param text - * @param respectLeadingCharacters - * Can be null - * @return The characters at the beginning of text which are respected. E.g. - * ("> Hello", " \t>") --> "> " - */ - private static String format4_getLeadingChars(String text, - String respectLeadingCharacters) { - if (respectLeadingCharacters == null) - return ""; - // Line-breaks cannot be respected - assert respectLeadingCharacters.indexOf('\n') == -1; - // Look for the first non-respected char - for (int i = 0; i < text.length(); i++) { - char c = text.charAt(i); - if (respectLeadingCharacters.indexOf(c) == -1) { - // Return the previous chars - return text.substring(0, i); - } - } - // All chars are respected - return text; - } - - /** - * Ensure that line ends with the right line-end character(s) - */ - public static final String lineEnd(String line) { - // strip possibly inappropriate line-endings - if (line.endsWith("\n")) { - line = line.substring(0, line.length() - 1); - } - if (line.endsWith("\r\n")) { - line = line.substring(0, line.length() - 2); - } - if (line.endsWith("\r")) { - line = line.substring(0, line.length() - 1); - } - // add in proper line end - if (!line.endsWith(LINEEND)) { - line += LINEEND; - } - return line; - } - - /** - * Ensure that line ends with the right line-end character(s). This is more - * efficient than the version for Strings. - * - * @param line - */ - public static final void lineEnd(final StringBuilder line) { - if (line.length() == 0) { - line.append(LINEEND); - return; - } - // strip possibly inappropriate line-endings - final char last = line.charAt(line.length() - 1); - if (last == '\n') { - if ((line.length() > 1) && (line.charAt(line.length() - 2) == '\r')) { - // \r\n - line.replace(line.length() - 2, line.length(), LINEEND); - return; - } - line.replace(line.length() - 1, line.length(), LINEEND); - return; - } - if (last == '\r') { - line.replace(line.length() - 1, line.length(), LINEEND); - return; - } - line.append(LINEEND); - return; - } - - - - /** - * @param string - * @return the MD5 sum of the string using the default charset. Null if - * there was an error in calculating the hash. - * @author Sam Halliday - */ - public static String md5Hash(String string) { - MessageDigest md5 = null; - try { - md5 = MessageDigest.getInstance("MD5"); - } catch (NoSuchAlgorithmException e) { - // ignore this exception, we know MD5 exists - } - md5.update(string.getBytes()); - BigInteger hash = new BigInteger(1, md5.digest()); - return hash.toString(16); - } - - /** - * Removes HTML-style tags from a string. - * - * @param s - * a String from which to remove tags - * @return a string with all instances of <.*> removed. - */ - public static String removeTags(String s) { - StringBuffer sb = new StringBuffer(); - boolean inTag = false; - for (int i = 0; i < s.length(); i++) { - char c = s.charAt(i); - if (c == '<') - inTag = true; - if (!inTag) - sb.append(c); - if (c == '>') - inTag = false; - } - return sb.toString(); - } - - /** - * Repeat a character. - * - * @param c - * @param i - * @return A String consisting of i x c. - * @example assert repeat('-', 5).equals("-----"); - */ - public static String repeat(Character c, int i) { - StringBuilder dashes = new StringBuilder(i); - for (int j = 0; j < i; j++) - dashes.append(c); - return dashes.toString(); - } - - /** - * Split a piece of text into separate lines. The line breaks are left at - * the end of each line. - * - * @param text - * @return The individual lines in the text. - */ - public static List splitLines(String text) { - List lines = new ArrayList(); - // Search for lines - int start = 0; - for (int i = 0; i < text.length(); i++) { - char c = text.charAt(i); - if (c == '\r' || c == '\n') { - // Handle MS Windows 2 character \r\n line breaks - if (i + 1 < text.length()) { - char c2 = text.charAt(i + 1); - if (c == '\r' && c2 == '\n') - i++; - } - // Get the line, with the line break - String line = text.substring(start, i + 1); - lines.add(line); - start = i + 1; - } - } - // Last one - if (start != text.length()) { - String line = text.substring(start); - lines.add(line); - } - return lines; - } - - /** - * Remove trailing whitespace. c.f. String#trim() which removes - * leading and trailing whitespace. - * - * @param sb - */ - private static void trimEnd(StringBuilder sb) { - while (true) { - // Get the last character - int i = sb.length() - 1; - if (i == -1) - return; // Quit if sb is empty - char c = sb.charAt(i); - if (!Character.isWhitespace(c)) - return; // Finish? - sb.deleteCharAt(i); // Remove and continue - } - } - - /** - * Returns true if the string is just whitespace, or empty, or null. - * - * @param s - */ - public static final boolean whitespace(final String s) { - if (s == null) { - return true; - } - for (int i = 0; i < s.length(); i++) { - final char c = s.charAt(i); - if (!Character.isWhitespace(c)) { - return false; - } - } - return true; - } - - /** - * @param text - * @return the number of words in text. Uses a crude whitespace - * measure. - */ - public static int wordCount(String text) { - String[] bits = text.split("\\W+"); - int wc = 0; - for (String string : bits) { - if (!whitespace(string)) wc++; - } - return wc; - } - -} +/** + * Basic String manipulation utilities. + * (c) Winterwell 2010 and ThinkTank Mathematics 2007 + */ +package winterwell.markdown; + +import java.math.BigInteger; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; +import java.util.List; + +import winterwell.utils.Mutable; +import winterwell.utils.containers.Pair; + +/** + * A collection of general-purpose String handling methods. + * + * @author daniel.winterstein + */ +public final class StringMethods { + + /** + * Removes xml tags, comment blocks and script blocks. + * + * @param page + * @return the page with all xml tags removed. + */ + public static String stripTags(String page) { + // This code is rather ugly, but it does the job + StringBuilder stripped = new StringBuilder(page.length()); + boolean inTag = false; + // Comment blocks and script blocks are given special treatment + boolean inComment = false; + boolean inScript = false; + // Go through the text + for (int i = 0; i < page.length(); i++) { + char c = page.charAt(i); + // First check whether we are ignoring text + if (inTag) { + if (c == '>') inTag = false; + } else if (inComment) { + if (c == '>' && page.charAt(i - 1) == '-' && page.charAt(i - 1) == '-') { + inComment = false; + } + } else if (inScript) { + if (c == '>' && page.substring(i - 7, i).equals("/script")) { + inScript = false; + } + } else { + // Check for the start of a tag - looks for '<' followed by any + // non-whitespace character + if (c == '<' && !Character.isWhitespace(page.charAt(i + 1))) { + // Comment, script-block or tag? + if (page.charAt(i + 1) == '!' && page.charAt(i + 2) == '-' && page.charAt(i + 3) == '-') { + inComment = true; + } else if (i + 8 < page.length() && page.substring(i + 1, i + 7).equals("script")) { + inScript = true; + i += 7; + } else + inTag = true; // Normal tag by default + } else { + // Append all non-tag chars + stripped.append(c); + } + } // end if... + } + return stripped.toString(); + } + + /** + * The local line-end string. \n on unix, \r\n on windows, \r on mac. + */ + public static final String LINEEND = System.getProperty("line.separator"); + + /** + * @param s + * @return A version of s where the first letter is uppercase and all others are lowercase + */ + public static final String capitalise(final String s) { + return s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase(); + } + + /** + * Convert all line breaks into the system line break. + */ + public static final String convertLineBreaks(String text) { + return convertLineBreaks(text, LINEEND); + } + + /** + * Convert all line breaks into the specified line break. + */ + public static final String convertLineBreaks(String text, String br) { + text = text.replaceAll("\r\n", br); + text = text.replaceAll("\r", br); + text = text.replaceAll("\n", br); + return text; + } + + /** + * @param string + * @param character + * @return the number of times character appears in the string + * @author Sam Halliday + */ + static public int countCharsInString(String string, char character) { + int count = 0; + for (char c : string.toCharArray()) { + if (c == character) { + count++; + } + } + return count; + } + + /** + * E.g. findEnclosingRegion("text with a [region] inside", 15, '[', ']') is (??,??) + * + * @param text + * @param offset + * @param start + * @param end + * @return the smallest enclosed region (including start and end chars, the 1st number is + * inclusive, the 2nd exclusive), or null if none. So text.subString(start,end) is the + * specified region + */ + public static Pair findEnclosingRegion(String text, int offset, char startMarker, char endMarker) { + // Forward + int end = findEnclosingRegion2(text, offset, endMarker, 1); + if (end == -1) return null; + end++; // end is exclusive + // Backward + int start = findEnclosingRegion2(text, offset, startMarker, -1); + if (start == -1) return null; + // Sanity + assert text.substring(start, end).charAt(0) == startMarker; + assert text.substring(start, end).endsWith("" + endMarker); + // Done + return new Pair(start, end); + } + + private static int findEnclosingRegion2(String text, int offset, char endMarker, int direction) { + while (offset > -1 && offset < text.length()) { + char c = text.charAt(offset); + if (c == endMarker) return offset; + offset += direction; + } + return -1; + } + + /** + * A convenience wrapper for {@link #findEnclosingRegion(String, int, char, char)} E.g. + findEnclosingRegion("text with a [region] inside", 15, '[', ']') .equals("[region]"); + + * + * @param text + * @param offset + * @param start + * @param end + * @return the smallest enclosed region (including start and end chars), or null if none. + */ + public static String findEnclosingText(String text, int offset, char startMarker, char endMarker) { + Pair region = findEnclosingRegion(text, offset, startMarker, endMarker); + if (region == null) return null; + String s = text.substring(region.first, region.second); + return s; + } + + /** + * Format a block of text to use the given line-width. I.e. adjust the line breaks. Also known + * as hard line-wrapping. Paragraphs are recognised by a line of blank space between them + * (e.g. two returns). + *

+ * Note: a side-effect of this method is that it converts all line-breaks into the local + * system's line-breaks. E.g. on Windows, \n will become \r\n + * + * @param text The text to format + * @param lineWidth The number of columns in a line. Typically 78 or 80. + * @param respectLeadingCharacters Can be null. If set, the specified leading characters will be + * copied if the line is split. Use with " \t" to keep indented paragraphs properly + * indented. Use with "> \t" to also handle email-style quoting. Note that respected + * leading characters receive no special treatment when they are used inside a + * paragraph. + * @return A copy of text, formatted to the given line-width. + *

+ * TODO: recognise paragraphs by changes in the respected leading characters + */ + public static String format(String text, int lineWidth, int tabWidth, String respectLeadingCharacters) { + // Switch to Linux line breaks for easier internal workings + text = convertLineBreaks(text, "\n"); + // Find paragraphs + List paras = format2_splitParagraphs(text, respectLeadingCharacters); + // Rebuild text + StringBuilder sb = new StringBuilder(text.length() + 10); + for (String p : paras) { + String fp = format3_oneParagraph(p, lineWidth, tabWidth, respectLeadingCharacters); + sb.append(fp); + // Paragraphs end with a double line break + sb.append("\n\n"); + } + // Pop the last line breaks + sb.delete(sb.length() - 2, sb.length()); + // Convert line breaks to system ones + text = convertLineBreaks(sb.toString()); + // Done + return text; + } + + private static List format2_splitParagraphs(String text, String respectLeadingCharacters) { + List paras = new ArrayList(); + Mutable.Int index = new Mutable.Int(0); + // TODO The characters prefacing this paragraph + // String leadingChars = ""; + while (index.value < text.length()) { + // One paragraph + boolean inSpace = false; + int start = index.value; + while (index.value < text.length()) { + char c = text.charAt(index.value); + index.value++; + if (!Character.isWhitespace(c)) { + inSpace = false; + continue; + } + // Line end? + if (c == '\r' || c == '\n') { + // // Handle MS Windows 2 character \r\n line breaks + // if (index.value < text.length()) { + // char c2 = text.charAt(index.value); + // if (c=='\r' && c2=='\n') index.value++; // Push on past + // the 2nd line break char + // } + // Double line end - indicating a paragraph break + if (inSpace) break; + inSpace = true; + } + // TODO Other paragraph markers, spotted by a change in + // leadingChars + } + String p = text.substring(start, index.value); + paras.add(p); + } + // Done + return paras; + } + + /** + * Format a block of text to fit the given line width + * + * @param p + * @param lineWidth + * @param tabWidth + * @param respectLeadingCharacters + * @return + */ + private static String format3_oneParagraph(String p, int lineWidth, int tabWidth, String respectLeadingCharacters) { + // Collect the reformatted paragraph + StringBuilder sb = new StringBuilder(p.length() + 10); // Allow for + // some extra + // line-breaks + // Get respected leading chars + String leadingChars = format4_getLeadingChars(p, respectLeadingCharacters); + // First Line + sb.append(leadingChars); + int lineLength = leadingChars.length(); + int index = leadingChars.length(); + // Loop + while (index < p.length()) { + // Get the next word + StringBuilder word = new StringBuilder(); + char c = p.charAt(index); + index++; + while (!Character.isWhitespace(c)) { + word.append(c); + if (index == p.length()) break; + c = p.charAt(index); + index++; + } + // Break the line if the word will not fit + if (lineLength + word.length() > lineWidth && lineLength != 0) { + trimEnd(sb); + sb.append('\n'); // lineEnd(sb); + // New line + sb.append(leadingChars); + lineLength = leadingChars.length(); + } + // Add word + sb.append(word); + lineLength += word.length(); + // Add the whitespace + if (index != p.length() && lineLength < lineWidth) { + if (c == '\n') { + c = ' '; + } + sb.append(c); + lineLength += (c == '\t') ? tabWidth : 1; + } + } + // A final trim + trimEnd(sb); + // Done + return sb.toString(); + } + + /** + * @param text + * @param respectLeadingCharacters Can be null + * @return The characters at the beginning of text which are respected. E.g. ("> Hello", " \t>") + * --> "> " + */ + private static String format4_getLeadingChars(String text, String respectLeadingCharacters) { + if (respectLeadingCharacters == null) return ""; + // Line-breaks cannot be respected + assert respectLeadingCharacters.indexOf('\n') == -1; + // Look for the first non-respected char + for (int i = 0; i < text.length(); i++) { + char c = text.charAt(i); + if (respectLeadingCharacters.indexOf(c) == -1) { + // Return the previous chars + return text.substring(0, i); + } + } + // All chars are respected + return text; + } + + /** + * Ensure that line ends with the right line-end character(s) + */ + public static final String lineEnd(String line) { + // strip possibly inappropriate line-endings + if (line.endsWith("\n")) { + line = line.substring(0, line.length() - 1); + } + if (line.endsWith("\r\n")) { + line = line.substring(0, line.length() - 2); + } + if (line.endsWith("\r")) { + line = line.substring(0, line.length() - 1); + } + // add in proper line end + if (!line.endsWith(LINEEND)) { + line += LINEEND; + } + return line; + } + + /** + * Ensure that line ends with the right line-end character(s). This is more efficient than the + * version for Strings. + * + * @param line + */ + public static final void lineEnd(final StringBuilder line) { + if (line.length() == 0) { + line.append(LINEEND); + return; + } + // strip possibly inappropriate line-endings + final char last = line.charAt(line.length() - 1); + if (last == '\n') { + if ((line.length() > 1) && (line.charAt(line.length() - 2) == '\r')) { + // \r\n + line.replace(line.length() - 2, line.length(), LINEEND); + return; + } + line.replace(line.length() - 1, line.length(), LINEEND); + return; + } + if (last == '\r') { + line.replace(line.length() - 1, line.length(), LINEEND); + return; + } + line.append(LINEEND); + return; + } + + /** + * @param string + * @return the MD5 sum of the string using the default charset. Null if there was an error in + * calculating the hash. + * @author Sam Halliday + */ + public static String md5Hash(String string) { + MessageDigest md5 = null; + try { + md5 = MessageDigest.getInstance("MD5"); + } catch (NoSuchAlgorithmException e) { + // ignore this exception, we know MD5 exists + } + md5.update(string.getBytes()); + BigInteger hash = new BigInteger(1, md5.digest()); + return hash.toString(16); + } + + /** + * Removes HTML-style tags from a string. + * + * @param s a String from which to remove tags + * @return a string with all instances of <.*> removed. + */ + public static String removeTags(String s) { + StringBuffer sb = new StringBuffer(); + boolean inTag = false; + for (int i = 0; i < s.length(); i++) { + char c = s.charAt(i); + if (c == '<') inTag = true; + if (!inTag) sb.append(c); + if (c == '>') inTag = false; + } + return sb.toString(); + } + + /** + * Repeat a character. + * + * @param c + * @param i + * @return A String consisting of i x c. + * @example assert repeat('-', 5).equals("-----"); + */ + public static String repeat(Character c, int i) { + StringBuilder dashes = new StringBuilder(i); + for (int j = 0; j < i; j++) + dashes.append(c); + return dashes.toString(); + } + + /** + * Split a piece of text into separate lines. The line breaks are left at the end of each line. + * + * @param text + * @return The individual lines in the text. + */ + public static List splitLines(String text) { + List lines = new ArrayList(); + // Search for lines + int start = 0; + for (int i = 0; i < text.length(); i++) { + char c = text.charAt(i); + if (c == '\r' || c == '\n') { + // Handle MS Windows 2 character \r\n line breaks + if (i + 1 < text.length()) { + char c2 = text.charAt(i + 1); + if (c == '\r' && c2 == '\n') i++; + } + // Get the line, with the line break + String line = text.substring(start, i + 1); + lines.add(line); + start = i + 1; + } + } + // Last one + if (start != text.length()) { + String line = text.substring(start); + lines.add(line); + } + return lines; + } + + /** + * Remove trailing whitespace. c.f. String#trim() which removes leading and trailing + * whitespace. + * + * @param sb + */ + private static void trimEnd(StringBuilder sb) { + while (true) { + // Get the last character + int i = sb.length() - 1; + if (i == -1) return; // Quit if sb is empty + char c = sb.charAt(i); + if (!Character.isWhitespace(c)) return; // Finish? + sb.deleteCharAt(i); // Remove and continue + } + } + + /** + * Returns true if the string is just whitespace, or empty, or null. + * + * @param s + */ + public static final boolean whitespace(final String s) { + if (s == null) { + return true; + } + for (int i = 0; i < s.length(); i++) { + final char c = s.charAt(i); + if (!Character.isWhitespace(c)) { + return false; + } + } + return true; + } + + /** + * @param text + * @return the number of words in text. Uses a crude whitespace measure. + */ + public static int wordCount(String text) { + String[] bits = text.split("\\W+"); + int wc = 0; + for (String string : bits) { + if (!whitespace(string)) wc++; + } + return wc; + } + +} diff --git a/plugin/src/winterwell/markdown/editors/ColorManager.java b/plugin/src/winterwell/markdown/editors/ColorManager.java index ff5728a..f2a9bdd 100755 --- a/plugin/src/winterwell/markdown/editors/ColorManager.java +++ b/plugin/src/winterwell/markdown/editors/ColorManager.java @@ -10,15 +10,16 @@ public class ColorManager { - protected Map fColorTable = new HashMap(10); + protected Map fColorTable = new HashMap(10); public void dispose() { - Iterator e = fColorTable.values().iterator(); + Iterator e = fColorTable.values().iterator(); while (e.hasNext()) - ((Color) e.next()).dispose(); + e.next().dispose(); } + public Color getColor(RGB rgb) { - Color color = (Color) fColorTable.get(rgb); + Color color = fColorTable.get(rgb); if (color == null) { color = new Color(Display.getCurrent(), rgb); fColorTable.put(rgb, color); diff --git a/plugin/src/winterwell/markdown/editors/EmphasisRule.java b/plugin/src/winterwell/markdown/editors/EmphasisRule.java index 06f1420..7224acf 100755 --- a/plugin/src/winterwell/markdown/editors/EmphasisRule.java +++ b/plugin/src/winterwell/markdown/editors/EmphasisRule.java @@ -1,112 +1,111 @@ -/** - * Copyright winterwell Mathematics Ltd. - * @author Daniel Winterstein - * 11 Jan 2007 - */ -package winterwell.markdown.editors; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.jface.text.rules.ICharacterScanner; -import org.eclipse.jface.text.rules.IRule; -import org.eclipse.jface.text.rules.IToken; -import org.eclipse.jface.text.rules.MultiLineRule; -import org.eclipse.jface.text.rules.Token; - -/** - * - * - * @author Daniel Winterstein - */ -public class EmphasisRule implements IRule { - private static char[][] fDelimiters = null; - private char[] fSequence; - protected IToken fToken; - - - public EmphasisRule(String marker, IToken token) { - assert marker.equals("*") || marker.equals("_") || marker.equals("**") - || marker.equals("***") || marker.equals("`") || marker.equals("``"); - Assert.isNotNull(token); - fSequence = marker.toCharArray(); - fToken = token; - } - - // Copied from org.eclipse.jface.text.rules.PatternRule - protected boolean sequenceDetected(ICharacterScanner scanner, char[] sequence, boolean eofAllowed) { - for (int i = 1; i < sequence.length; i++) { - int c = scanner.read(); - if (c == ICharacterScanner.EOF && eofAllowed) { - return true; - } else if (c != sequence[i]) { - // Non-matching character detected, rewind the scanner back to - // the start. - // Do not unread the first character. - for (int j = i; j > 0; j--) - scanner.unread(); - return false; - } - } - return true; - } - - /* - * @see IRule#evaluate(ICharacterScanner) - * - * @since 2.0 - */ - public IToken evaluate(ICharacterScanner scanner) { - // Should be connected only on the right side - scanner.unread(); - boolean sawSpaceBefore = Character.isWhitespace(scanner.read()); - if (!sawSpaceBefore && scanner.getColumn() != 0) { - return Token.UNDEFINED; - } - - int c = scanner.read(); - // Should be connected only on right side - if (c != fSequence[0] || !sequenceDetected(scanner, fSequence, false)) { - scanner.unread(); - return Token.UNDEFINED; - } - int readCount = fSequence.length; - if (fDelimiters == null) { - fDelimiters = scanner.getLegalLineDelimiters(); - } - // Start sequence detected - int delimiterFound = 0; - // Is it a list item marker, or just a floating *? - if (sawSpaceBefore) { - boolean after = Character.isWhitespace(scanner.read()); - scanner.unread(); - if (after) - delimiterFound = 2; - } - - while (delimiterFound < 2 - && (c = scanner.read()) != ICharacterScanner.EOF) { - readCount++; - - if (!sawSpaceBefore && c == fSequence[0] - && sequenceDetected(scanner, fSequence, false)) { - return fToken; - } - - int i; - for (i = 0; i < fDelimiters.length; i++) { - if (c == fDelimiters[i][0] - && sequenceDetected(scanner, fDelimiters[i], true)) { - delimiterFound++; - break; - } - } - if (i == fDelimiters.length) - delimiterFound = 0; - sawSpaceBefore = Character.isWhitespace(c); - } - // Reached ICharacterScanner.EOF - for (; readCount > 0; readCount--) - scanner.unread(); - return Token.UNDEFINED; - } - -} +/** + * Copyright winterwell Mathematics Ltd. + * @author Daniel Winterstein + * 11 Jan 2007 + */ +package winterwell.markdown.editors; + +import org.eclipse.core.runtime.Assert; +import org.eclipse.jface.text.rules.ICharacterScanner; +import org.eclipse.jface.text.rules.IRule; +import org.eclipse.jface.text.rules.IToken; +import org.eclipse.jface.text.rules.Token; + +/** + * + * + * @author Daniel Winterstein + */ +public class EmphasisRule implements IRule { + private static char[][] fDelimiters = null; + private char[] fSequence; + protected IToken fToken; + + + public EmphasisRule(String marker, IToken token) { + assert marker.equals("*") || marker.equals("_") || marker.equals("**") + || marker.equals("***") || marker.equals("`") || marker.equals("``"); + Assert.isNotNull(token); + fSequence = marker.toCharArray(); + fToken = token; + } + + // Copied from org.eclipse.jface.text.rules.PatternRule + protected boolean sequenceDetected(ICharacterScanner scanner, char[] sequence, boolean eofAllowed) { + for (int i = 1; i < sequence.length; i++) { + int c = scanner.read(); + if (c == ICharacterScanner.EOF && eofAllowed) { + return true; + } else if (c != sequence[i]) { + // Non-matching character detected, rewind the scanner back to + // the start. + // Do not unread the first character. + for (int j = i; j > 0; j--) + scanner.unread(); + return false; + } + } + return true; + } + + /* + * @see IRule#evaluate(ICharacterScanner) + * + * @since 2.0 + */ + public IToken evaluate(ICharacterScanner scanner) { + // Should be connected only on the right side + scanner.unread(); + boolean sawSpaceBefore = Character.isWhitespace(scanner.read()); + if (!sawSpaceBefore && scanner.getColumn() != 0) { + return Token.UNDEFINED; + } + + int c = scanner.read(); + // Should be connected only on right side + if (c != fSequence[0] || !sequenceDetected(scanner, fSequence, false)) { + scanner.unread(); + return Token.UNDEFINED; + } + int readCount = fSequence.length; + if (fDelimiters == null) { + fDelimiters = scanner.getLegalLineDelimiters(); + } + // Start sequence detected + int delimiterFound = 0; + // Is it a list item marker, or just a floating *? + if (sawSpaceBefore) { + boolean after = Character.isWhitespace(scanner.read()); + scanner.unread(); + if (after) + delimiterFound = 2; + } + + while (delimiterFound < 2 + && (c = scanner.read()) != ICharacterScanner.EOF) { + readCount++; + + if (!sawSpaceBefore && c == fSequence[0] + && sequenceDetected(scanner, fSequence, false)) { + return fToken; + } + + int i; + for (i = 0; i < fDelimiters.length; i++) { + if (c == fDelimiters[i][0] + && sequenceDetected(scanner, fDelimiters[i], true)) { + delimiterFound++; + break; + } + } + if (i == fDelimiters.length) + delimiterFound = 0; + sawSpaceBefore = Character.isWhitespace(c); + } + // Reached ICharacterScanner.EOF + for (; readCount > 0; readCount--) + scanner.unread(); + return Token.UNDEFINED; + } + +} diff --git a/plugin/src/winterwell/markdown/editors/LinkRule.java b/plugin/src/winterwell/markdown/editors/LinkRule.java index 4beeb68..f91702c 100644 --- a/plugin/src/winterwell/markdown/editors/LinkRule.java +++ b/plugin/src/winterwell/markdown/editors/LinkRule.java @@ -5,11 +5,11 @@ */ package winterwell.markdown.editors; +import org.eclipse.core.runtime.Assert; import org.eclipse.jface.text.rules.ICharacterScanner; +import org.eclipse.jface.text.rules.IRule; import org.eclipse.jface.text.rules.IToken; import org.eclipse.jface.text.rules.Token; -import org.eclipse.jface.text.rules.IRule; -import org.eclipse.core.runtime.Assert; /** * diff --git a/plugin/src/winterwell/markdown/editors/ListRule.java b/plugin/src/winterwell/markdown/editors/ListRule.java index 11ff3f0..78c4f07 100644 --- a/plugin/src/winterwell/markdown/editors/ListRule.java +++ b/plugin/src/winterwell/markdown/editors/ListRule.java @@ -1,77 +1,70 @@ -/** - * Copyright winterwell Mathematics Ltd. - * @author Daniel Winterstein - * 11 Jan 2007 - */ -package winterwell.markdown.editors; - -import java.util.ArrayList; -import java.util.List; -import java.util.Arrays; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.jface.text.rules.ICharacterScanner; -import org.eclipse.jface.text.rules.IRule; -import org.eclipse.jface.text.rules.IToken; -import org.eclipse.jface.text.rules.Token; - -/** - * - * - * @author Daniel Winterstein - */ -public class ListRule implements IRule { - private ArrayList markerList; - protected IToken fToken; - - public ListRule(IToken token) { - Assert.isNotNull(token); - fToken= token; - } - - - /* - * @see IRule#evaluate(ICharacterScanner) - * @since 2.0 - */ - public IToken evaluate(ICharacterScanner scanner) { - if (scanner.getColumn() != 0) { - return Token.UNDEFINED; - } -// // Fast mode -// if (scanner.read() != '-') { -// scanner.unread(); -// return Token.UNDEFINED; -// } -// if (Character.isWhitespace(scanner.read())) { -// return fToken; -// } -// scanner.unread(); -// scanner.unread(); -// return Token.UNDEFINED; -// // Fast mode - int readCount = 0; - int c; - while ((c = scanner.read()) != ICharacterScanner.EOF) { - readCount++; - if( !Character.isWhitespace( c ) ) { - int after = scanner.read(); -// readCount++; - scanner.unread(); -// if ( markerList.contains(c) && Character.isWhitespace( after ) ) { - if ( (c == '-' || c == '+' || c == '*') - && Character.isWhitespace( after ) ) { - return fToken; - } else { - for (; readCount > 0; readCount--) - scanner.unread(); - return Token.UNDEFINED; - } - } - } - // Reached ICharacterScanner.EOF - for (; readCount > 0; readCount--) - scanner.unread(); - return Token.UNDEFINED; - } -} +/** + * Copyright winterwell Mathematics Ltd. + * @author Daniel Winterstein + * 11 Jan 2007 + */ +package winterwell.markdown.editors; + +import org.eclipse.core.runtime.Assert; +import org.eclipse.jface.text.rules.ICharacterScanner; +import org.eclipse.jface.text.rules.IRule; +import org.eclipse.jface.text.rules.IToken; +import org.eclipse.jface.text.rules.Token; + +/** + * @author Daniel Winterstein + */ +public class ListRule implements IRule { + + // private ArrayList markerList; + protected IToken fToken; + + public ListRule(IToken token) { + Assert.isNotNull(token); + fToken = token; + } + + /* + * @see IRule#evaluate(ICharacterScanner) + * @since 2.0 + */ + public IToken evaluate(ICharacterScanner scanner) { + if (scanner.getColumn() != 0) { + return Token.UNDEFINED; + } + // // Fast mode + // if (scanner.read() != '-') { + // scanner.unread(); + // return Token.UNDEFINED; + // } + // if (Character.isWhitespace(scanner.read())) { + // return fToken; + // } + // scanner.unread(); + // scanner.unread(); + // return Token.UNDEFINED; + // // Fast mode + int readCount = 0; + int c; + while ((c = scanner.read()) != ICharacterScanner.EOF) { + readCount++; + if (!Character.isWhitespace(c)) { + int after = scanner.read(); + // readCount++; + scanner.unread(); + // if ( markerList.contains(c) && Character.isWhitespace( after ) ) { + if ((c == '-' || c == '+' || c == '*') && Character.isWhitespace(after)) { + return fToken; + } else { + for (; readCount > 0; readCount--) + scanner.unread(); + return Token.UNDEFINED; + } + } + } + // Reached ICharacterScanner.EOF + for (; readCount > 0; readCount--) + scanner.unread(); + return Token.UNDEFINED; + } +} diff --git a/plugin/src/winterwell/markdown/editors/MDConfiguration.java b/plugin/src/winterwell/markdown/editors/MDConfiguration.java index f20a642..b36f83c 100755 --- a/plugin/src/winterwell/markdown/editors/MDConfiguration.java +++ b/plugin/src/winterwell/markdown/editors/MDConfiguration.java @@ -1,21 +1,17 @@ package winterwell.markdown.editors; -import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.IRegion; import org.eclipse.jface.text.ITextHover; import org.eclipse.jface.text.presentation.IPresentationReconciler; import org.eclipse.jface.text.presentation.PresentationReconciler; -import org.eclipse.jface.text.reconciler.DirtyRegion; import org.eclipse.jface.text.reconciler.IReconciler; -import org.eclipse.jface.text.reconciler.IReconcilingStrategy; -import org.eclipse.jface.text.reconciler.MonoReconciler; import org.eclipse.jface.text.rules.DefaultDamagerRepairer; import org.eclipse.jface.text.source.ISourceViewer; import org.eclipse.ui.editors.text.TextSourceViewerConfiguration; public class MDConfiguration extends TextSourceViewerConfiguration { + private ColorManager colorManager; public MDConfiguration(ColorManager colorManager, IPreferenceStore prefStore) { @@ -33,49 +29,53 @@ public IPresentationReconciler getPresentationReconciler(ISourceViewer sourceVie return pr; } - @Override public IReconciler getReconciler(ISourceViewer sourceViewer) { // This awful mess adds in update support // Get super strategy IReconciler rs = super.getReconciler(sourceViewer); - if (true) return rs; // Seems to work fine?! - final IReconcilingStrategy fsuperStrategy = rs==null? null : rs.getReconcilingStrategy("text"); - // Add our own - IReconcilingStrategy strategy = new IReconcilingStrategy() { - private IDocument doc; - public void reconcile(IRegion partition) { - MarkdownEditor ed = MarkdownEditor.getEditor(doc); - if (ed != null) ed.updatePage(partition); - if (fsuperStrategy!=null) fsuperStrategy.reconcile(partition); - } - public void reconcile(DirtyRegion dirtyRegion, IRegion subRegion) { - MarkdownEditor ed = MarkdownEditor.getEditor(doc); - if (ed != null) ed.updatePage(subRegion); - if (fsuperStrategy!=null) fsuperStrategy.reconcile(dirtyRegion, subRegion); - } - public void setDocument(IDocument document) { - this.doc = document; - if (fsuperStrategy!=null) fsuperStrategy.setDocument(document); - } - }; - // Make a reconciler - MonoReconciler m2 = new MonoReconciler(strategy, true); - m2.setIsIncrementalReconciler(true); - m2.setProgressMonitor(new NullProgressMonitor()); - m2.setDelay(500); - // Done - return m2; + return rs; // Seems to work fine?! + + // if (true) return rs; + + // final IReconcilingStrategy fsuperStrategy = rs == null ? null : + // rs.getReconcilingStrategy("text"); + // // Add our own + // IReconcilingStrategy strategy = new IReconcilingStrategy() { + // + // private IDocument doc; + // + // public void reconcile(IRegion partition) { + // MarkdownEditor ed = MarkdownEditor.getEditor(doc); + // if (ed != null) ed.updatePage(partition); + // if (fsuperStrategy != null) fsuperStrategy.reconcile(partition); + // } + // + // public void reconcile(DirtyRegion dirtyRegion, IRegion subRegion) { + // MarkdownEditor ed = MarkdownEditor.getEditor(doc); + // if (ed != null) ed.updatePage(subRegion); + // if (fsuperStrategy != null) fsuperStrategy.reconcile(dirtyRegion, subRegion); + // } + // + // public void setDocument(IDocument document) { + // this.doc = document; + // if (fsuperStrategy != null) fsuperStrategy.setDocument(document); + // } + // }; + // // Make a reconciler + // MonoReconciler m2 = new MonoReconciler(strategy, true); + // m2.setIsIncrementalReconciler(true); + // m2.setProgressMonitor(new NullProgressMonitor()); + // m2.setDelay(500); + // // Done + // return m2; } - + @SuppressWarnings("unused") @Override - public ITextHover getTextHover(ISourceViewer sourceViewer, - String contentType) { + public ITextHover getTextHover(ISourceViewer sourceViewer, String contentType) { if (true) return super.getTextHover(sourceViewer, contentType); // Add hover support for images return new MDTextHover(); } } - - diff --git a/plugin/src/winterwell/markdown/editors/MDScanner.java b/plugin/src/winterwell/markdown/editors/MDScanner.java index 60a307b..6e65de4 100755 --- a/plugin/src/winterwell/markdown/editors/MDScanner.java +++ b/plugin/src/winterwell/markdown/editors/MDScanner.java @@ -1,61 +1,59 @@ -/** - * Copyright winterwell Mathematics Ltd. - * @author Daniel Winterstein - * 13 Jan 2007 - */ -package winterwell.markdown.editors; - -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.preference.PreferenceConverter; -import org.eclipse.jface.text.TextAttribute; -import org.eclipse.jface.text.rules.IRule; -import org.eclipse.jface.text.rules.IWhitespaceDetector; -import org.eclipse.jface.text.rules.MultiLineRule; -import org.eclipse.jface.text.rules.RuleBasedScanner; -import org.eclipse.jface.text.rules.Token; -import org.eclipse.jface.text.rules.WhitespaceRule; -import org.eclipse.swt.SWT; - -import winterwell.markdown.Activator; -import winterwell.markdown.preferences.MarkdownPreferencePage; - -/** - * - * - * @author Daniel Winterstein - */ -public class MDScanner extends RuleBasedScanner { - ColorManager cm; - public MDScanner(ColorManager cm) { - this.cm = cm; - IPreferenceStore pStore = Activator.getDefault().getPreferenceStore(); - Token heading = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_HEADER)), null, SWT.BOLD)); - Token comment = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_COMMENT)))); - Token emphasis = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_DEFUALT)), null, SWT.ITALIC)); - Token list = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_HEADER)), null, SWT.BOLD)); - Token link = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_LINK)), null, TextAttribute.UNDERLINE)); - Token code = new Token(new TextAttribute( - cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_CODE)), - cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_CODE_BG)), - SWT.NORMAL)); - setRules(new IRule[] { - new LinkRule(link), - new HeaderRule(heading), - new HeaderWithUnderlineRule(heading), - new ListRule(list), - new EmphasisRule("_", emphasis), - new EmphasisRule("***", emphasis), - new EmphasisRule("**", emphasis), - new EmphasisRule("*", emphasis), - new EmphasisRule("``", code), - new EmphasisRule("`", code), - new MultiLineRule("", comment), - // WhitespaceRule messes up with the rest of rules -// new WhitespaceRule(new IWhitespaceDetector() { -// public boolean isWhitespace(char c) { -// return Character.isWhitespace(c); -// } -// }), - }); - } -} +/** + * Copyright winterwell Mathematics Ltd. + * @author Daniel Winterstein + * 13 Jan 2007 + */ +package winterwell.markdown.editors; + +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.preference.PreferenceConverter; +import org.eclipse.jface.text.TextAttribute; +import org.eclipse.jface.text.rules.IRule; +import org.eclipse.jface.text.rules.MultiLineRule; +import org.eclipse.jface.text.rules.RuleBasedScanner; +import org.eclipse.jface.text.rules.Token; +import org.eclipse.swt.SWT; + +import winterwell.markdown.Activator; +import winterwell.markdown.preferences.MarkdownPreferencePage; + +/** + * + * + * @author Daniel Winterstein + */ +public class MDScanner extends RuleBasedScanner { + ColorManager cm; + public MDScanner(ColorManager cm) { + this.cm = cm; + IPreferenceStore pStore = Activator.getDefault().getPreferenceStore(); + Token heading = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_HEADER)), null, SWT.BOLD)); + Token comment = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_COMMENT)))); + Token emphasis = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_DEFUALT)), null, SWT.ITALIC)); + Token list = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_HEADER)), null, SWT.BOLD)); + Token link = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_LINK)), null, TextAttribute.UNDERLINE)); + Token code = new Token(new TextAttribute( + cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_CODE)), + cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_CODE_BG)), + SWT.NORMAL)); + setRules(new IRule[] { + new LinkRule(link), + new HeaderRule(heading), + new HeaderWithUnderlineRule(heading), + new ListRule(list), + new EmphasisRule("_", emphasis), + new EmphasisRule("***", emphasis), + new EmphasisRule("**", emphasis), + new EmphasisRule("*", emphasis), + new EmphasisRule("``", code), + new EmphasisRule("`", code), + new MultiLineRule("", comment), + // WhitespaceRule messes up with the rest of rules +// new WhitespaceRule(new IWhitespaceDetector() { +// public boolean isWhitespace(char c) { +// return Character.isWhitespace(c); +// } +// }), + }); + } +} diff --git a/plugin/src/winterwell/markdown/editors/MarkdownContentOutlinePage.java b/plugin/src/winterwell/markdown/editors/MarkdownContentOutlinePage.java index 445a322..abaeaa6 100755 --- a/plugin/src/winterwell/markdown/editors/MarkdownContentOutlinePage.java +++ b/plugin/src/winterwell/markdown/editors/MarkdownContentOutlinePage.java @@ -1,538 +1,530 @@ -/** - * Copyright winterwell Mathematics Ltd. - * @author Daniel Winterstein - * 11 Jan 2007 - */ -package winterwell.markdown.editors; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; - -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.action.IToolBarManager; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.DocumentEvent; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.IDocumentListener; -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.Region; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.ITreeContentProvider; -import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.viewers.TreeViewer; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.KeyEvent; -import org.eclipse.swt.events.KeyListener; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.ui.IActionBars; -import org.eclipse.ui.part.IPageSite; -import org.eclipse.ui.texteditor.IDocumentProvider; -import org.eclipse.ui.views.contentoutline.ContentOutlinePage; - -import winterwell.markdown.pagemodel.MarkdownPage; -import winterwell.markdown.pagemodel.MarkdownPage.Header; -import winterwell.markdown.pagemodel.MarkdownPage.KLineType; -import winterwell.utils.StrUtils; -import winterwell.utils.Utils; -import winterwell.utils.web.WebUtils; - -/** - * - * - * @author Daniel Winterstein - */ -public final class MarkdownContentOutlinePage extends ContentOutlinePage { - - /** - * - * - * @author Daniel Winterstein - */ - public final class ContentProvider implements ITreeContentProvider, - IDocumentListener { - - // protected final static String SEGMENTS= "__md_segments"; - // //$NON-NLS-1$ - // protected IPositionUpdater fPositionUpdater= new - // DefaultPositionUpdater(SEGMENTS); - private MarkdownPage fContent; - // protected List fContent= new ArrayList(10); - private MarkdownEditor fTextEditor; - - private void parse() { - fContent = fTextEditor.getMarkdownPage(); - } - - /* - * @see IContentProvider#inputChanged(Viewer, Object, Object) - */ - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - // Detach from old - if (oldInput != null) { - IDocument document = fDocumentProvider.getDocument(oldInput); - if (document != null) { - document.removeDocumentListener(this); - } - } - fContent = null; - // Attach to new - if (newInput == null) - return; - IDocument document = fDocumentProvider.getDocument(newInput); - if (document == null) - return; - fTextEditor = MarkdownEditor.getEditor(document); - document.addDocumentListener(this); - parse(); - } - - /* - * @see IContentProvider#dispose - */ - public void dispose() { - fContent = null; - } - - /* - * @see IContentProvider#isDeleted(Object) - */ - public boolean isDeleted(Object element) { - return false; - } - - /* - * @see IStructuredContentProvider#getElements(Object) - */ - public Object[] getElements(Object element) { - return fContent.getHeadings(null).toArray(); - } - - /* - * @see ITreeContentProvider#hasChildren(Object) - */ - public boolean hasChildren(Object element) { - if (element == fInput) { - return true; - } - if (element instanceof MarkdownPage.Header) { - MarkdownPage.Header header = (MarkdownPage.Header) element; - return header.getSubHeaders().size() > 0; - } - ; - return false; - } - - /* - * @see ITreeContentProvider#getParent(Object) - */ - public Object getParent(Object element) { - if (!(element instanceof MarkdownPage.Header)) - return null; - return ((MarkdownPage.Header) element).getParent(); - } - - /* - * @see ITreeContentProvider#getChildren(Object) - */ - public Object[] getChildren(Object element) { - if (element == fInput) { - return fContent.getHeadings(null).toArray(); - } - if (!(element instanceof MarkdownPage.Header)) - return null; - return ((MarkdownPage.Header) element).getSubHeaders().toArray(); - } - - public void documentAboutToBeChanged(DocumentEvent event) { - // nothing - } - - public void documentChanged(DocumentEvent event) { - parse(); - update(); - } - } - - private Object fInput = null; - private final IDocumentProvider fDocumentProvider; - private final MarkdownEditor fTextEditor; - protected boolean showWordCounts; - private List

selectedHeaders; - - /** - * @param documentProvider - * @param mdEditor - */ - public MarkdownContentOutlinePage(IDocumentProvider documentProvider, - MarkdownEditor mdEditor) { - fDocumentProvider = documentProvider; - fTextEditor = mdEditor; - } - - /* - * (non-Javadoc) Method declared on ContentOutlinePage - */ - @Override - public void createControl(Composite parent) { - super.createControl(parent); - TreeViewer viewer = getTreeViewer(); - viewer.setContentProvider(new ContentProvider()); - // Add word count annotations - viewer.setLabelProvider(new LabelProvider() { - @Override - public String getText(Object element) { - if (!(element instanceof MarkdownPage.Header)) - return super.getText(element); - Header header = ((MarkdownPage.Header) element); - String hText = header.toString(); - if (!showWordCounts) - return hText; - IRegion region = getRegion(header); - String text; - try { - text = fTextEditor.getDocument().get(region.getOffset(), - region.getLength()); - text = WebUtils.stripTags(text); - text = text.replaceAll("#", "").trim(); - assert text.startsWith(hText); - text = text.substring(hText.length()); - int wc = StrUtils.wordCount(text); - return hText + " (" + wc + ":" + text.length() + ")"; - } catch (BadLocationException e) { - return hText; - } - } - }); - viewer.addSelectionChangedListener(this); - - if (fInput != null) - viewer.setInput(fInput); - - // Buttons - IPageSite site = getSite(); - IActionBars bars = site.getActionBars(); - IToolBarManager toolbar = bars.getToolBarManager(); - // Word count action - Action action = new Action("123", IAction.AS_CHECK_BOX) { - @Override - public void run() { - showWordCounts = isChecked(); - update(); - } - }; - action.setToolTipText("Show/hide section word:character counts"); - toolbar.add(action); - // +/- actions - action = new Action("<") { - @Override - public void run() { - doPromoteDemote(-1); - } - }; - action.setToolTipText("Promote the selected section\n -- move it up a level."); - toolbar.add(action); - // - action = new Action(">") { - @Override - public void run() { - doPromoteDemote(1); - } - }; - action.setToolTipText("Demote the selected section\n -- move it down a level."); - toolbar.add(action); - // up/down actions - action = new Action("/\\") { - @Override - public void run() { - try { - doMove(-1); - } catch (BadLocationException e) { - throw Utils.runtime(e); - } - } - }; - action.setToolTipText("Move the selected section earlier"); - toolbar.add(action); - // - action = new Action("\\/") { - @Override - public void run() { - try { - doMove(1); - } catch (BadLocationException e) { - throw Utils.runtime(e); - } - } - }; - action.setToolTipText("Move the selected section later"); - toolbar.add(action); - // Collapse - ImageDescriptor id = ImageDescriptor.createFromFile(getClass(), "collapseall.gif"); - action = new Action("collapse", id) { - @Override - public void run() { - doCollapseAll(); - } - }; - action.setImageDescriptor(id); - action.setToolTipText("Collapse outline tree"); - toolbar.add(action); - // Sync - id = ImageDescriptor.createFromFile(getClass(), "synced.gif"); - action = new Action("sync") { - @Override - public void run() { - try { - doSyncToEditor(); - } catch (BadLocationException e) { - throw Utils.runtime(e); - } - } - }; - action.setImageDescriptor(id); - action.setToolTipText("Link with editor"); - toolbar.add(action); - // Add edit ability - viewer.getControl().addKeyListener(new KeyListener() { - public void keyPressed(KeyEvent e) { - if (e.keyCode==SWT.F2) { - doEditHeader(); - } - } - public void keyReleased(KeyEvent e) { - // - } - }); - } - - /** - * @throws BadLocationException - * - */ - protected void doSyncToEditor() throws BadLocationException { - TreeViewer viewer = getTreeViewer(); - if (viewer == null) return; - // Get header - MarkdownPage page = fTextEditor.getMarkdownPage(); - int caretOffset = fTextEditor.getViewer().getTextWidget().getCaretOffset(); - IDocument doc = fTextEditor.getDocument(); - int line = doc.getLineOfOffset(caretOffset); - List lineTypes = page.getLineTypes(); - for(; line>-1; line--) { - KLineType lt = lineTypes.get(line); - if (lt.toString().startsWith("H")) break; - } - if (line<0) return; - Header header = (Header) page.getPageObject(line); - // Set - IStructuredSelection selection = new StructuredSelection(header); - viewer.setSelection(selection , true); - } - - void doEditHeader() { - TreeViewer viewer = getTreeViewer(); - viewer.editElement(selectedHeaders.get(0), 0); - } - - protected void doCollapseAll() { - TreeViewer viewer = getTreeViewer(); - if (viewer == null) return; -// Control control = viewer.getControl(); -// if (control != null && !control.isDisposed()) { -// control.setRedraw(false); - viewer.collapseAll(); -// control.setRedraw(true); -// } - } - - /** - * Move the selected sections up/down - * @param i 1 or -1. 1==move later, -1=earlier - * @throws BadLocationException - */ - protected void doMove(int i) throws BadLocationException { - assert i==1 || i==-1; - if (selectedHeaders == null || selectedHeaders.size() == 0) - return; - // Get text region to move - MarkdownPage.Header first = selectedHeaders.get(0); - MarkdownPage.Header last = selectedHeaders.get(selectedHeaders.size()-1); - int start = fTextEditor.getDocument().getLineOffset( - first.getLineNumber()); - IRegion r = getRegion(last); - int end = r.getOffset() + r.getLength(); - int length = end - start; - // Get new insertion point - int insert; - if (i==1) { - Header nextSection = last.getNext(); - if (nextSection==null) return; - IRegion nr = getRegion(nextSection); - insert = nr.getOffset()+nr.getLength(); - } else { - Header prevSection = first.getPrevious(); - if (prevSection==null) return; - IRegion nr = getRegion(prevSection); - insert = nr.getOffset(); - } - // Get text - String text = fTextEditor.getDocument().get(); - // Move text - String section = text.substring(start, end); - String pre, post; - if (i==1) { - pre = text.substring(0, start) + text.substring(end, insert); - post = text.substring(insert); - } else { - pre = text.substring(0, insert); - post = text.substring(insert,start)+text.substring(end); - } - text = pre + section + post; - assert text.length() == fTextEditor.getDocument().get().length() : - text.length()-fTextEditor.getDocument().get().length()+" chars gained/lost"; - // Update doc - fTextEditor.getDocument().set(text); - } - - /** - * Does not support -------- / ========= underlining, only # headers - * @param upDown 1 for demote (e.g. h2 -> h3), -1 for promote (e.g. h2 -> h1) - */ - protected void doPromoteDemote(int upDown) { - assert upDown==1 || upDown==-1; - if (selectedHeaders == null || selectedHeaders.size() == 0) - return; - HashSet
toAdjust = new HashSet
(selectedHeaders); - HashSet
adjusted = new HashSet
(); - // Adjust - MarkdownPage mdPage = fTextEditor.getMarkdownPage(); - List lines = new ArrayList(mdPage.getText()); - while(toAdjust.size() != 0) { - Header h = toAdjust.iterator().next(); - toAdjust.remove(h); - adjusted.add(h); - String line = lines.get(h.getLineNumber()); - if (upDown==-1) { - if (h.getLevel() == 1) return; // Level 1; can't promote - if (line.startsWith("##")) line = line.substring(1); - else { - return; // TODO support for ------ / ======== - } - } else line = "#" + line; - int ln = h.getLineNumber(); - lines.set(ln, line); - // kids - ArrayList
kids = new ArrayList
(h.getSubHeaders()); - for (Header header : kids) { - if ( ! adjusted.contains(header)) toAdjust.add(header); - } - } - // Set - StringBuilder sb = new StringBuilder(); - for (String line : lines) { - sb.append(line); - } - fTextEditor.getDocument().set(sb.toString()); - } - - /** - * The region of text for this header. This includes the header itself. - * @param header - * @return - * @throws BadLocationException - */ - protected IRegion getRegion(Header header) { - try { - IDocument doc = fTextEditor.getDocument(); - // Line numbers - int start = header.getLineNumber(); - Header next = header.getNext(); - int end; - if (next != null) { - end = next.getLineNumber() - 1; - } else { - end = doc.getNumberOfLines() - 1; - } - int offset = doc.getLineOffset(start); - IRegion ei = doc.getLineInformation(end); - int length = ei.getOffset() + ei.getLength() - offset; - return new Region(offset, length); - } catch (BadLocationException ex) { - throw Utils.runtime(ex); - } - } - - /* - * (non-Javadoc) Method declared on ContentOutlinePage - */ - @Override - public void selectionChanged(SelectionChangedEvent event) { - super.selectionChanged(event); - selectedHeaders = null; - ISelection selection = event.getSelection(); - if (selection.isEmpty()) - return; - if (!(selection instanceof IStructuredSelection)) - return; - try { - IStructuredSelection strucSel = (IStructuredSelection) selection; - Object[] sections = strucSel.toArray(); - selectedHeaders = (List) Arrays.asList(sections); - MarkdownPage.Header first = (Header) sections[0]; - MarkdownPage.Header last = (Header) sections[sections.length - 1]; - int start = fTextEditor.getDocument().getLineOffset( - first.getLineNumber()); - int length; - if (first == last) { - length = fTextEditor.getDocument().getLineLength( - first.getLineNumber()); - } else { - IRegion r = getRegion(last); - int end = r.getOffset() + r.getLength(); - length = end - start; - } - fTextEditor.setHighlightRange(start, length, true); - } catch (Exception x) { - System.out.println(x.getStackTrace()); - fTextEditor.resetHighlightRange(); - } - } - - /** - * Sets the input of the outline page - * - * @param input - * the input of this outline page - */ - public void setInput(Object input) { - fInput = input; - update(); - } - - /** - * Updates the outline page. - */ - public void update() { - TreeViewer viewer = getTreeViewer(); - - if (viewer != null) { - Control control = viewer.getControl(); - if (control != null && !control.isDisposed()) { - control.setRedraw(false); - viewer.setInput(fInput); - viewer.expandAll(); - control.setRedraw(true); - } - } - } - -} +/** + * Copyright winterwell Mathematics Ltd. + * @author Daniel Winterstein + * 11 Jan 2007 + */ +package winterwell.markdown.editors; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.text.BadLocationException; +import org.eclipse.jface.text.DocumentEvent; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.IDocumentListener; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.Region; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ITreeContentProvider; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.KeyEvent; +import org.eclipse.swt.events.KeyListener; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.part.IPageSite; +import org.eclipse.ui.texteditor.IDocumentProvider; +import org.eclipse.ui.views.contentoutline.ContentOutlinePage; + +import winterwell.markdown.pagemodel.MarkdownPage; +import winterwell.markdown.pagemodel.MarkdownPage.Header; +import winterwell.markdown.pagemodel.MarkdownPage.KLineType; +import winterwell.utils.StrUtils; +import winterwell.utils.Utils; +import winterwell.utils.web.WebUtils; + +/** + * @author Daniel Winterstein + */ +public final class MarkdownContentOutlinePage extends ContentOutlinePage { + + /** + * @author Daniel Winterstein + */ + public final class ContentProvider implements ITreeContentProvider, IDocumentListener { + + // protected final static String SEGMENTS= "__md_segments"; + // //$NON-NLS-1$ + // protected IPositionUpdater fPositionUpdater= new + // DefaultPositionUpdater(SEGMENTS); + private MarkdownPage fContent; + // protected List fContent= new ArrayList(10); + private MarkdownEditor fTextEditor; + + private void parse() { + fContent = fTextEditor.getMarkdownPage(); + } + + /* + * @see IContentProvider#inputChanged(Viewer, Object, Object) + */ + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { + // Detach from old + if (oldInput != null) { + IDocument document = fDocumentProvider.getDocument(oldInput); + if (document != null) { + document.removeDocumentListener(this); + } + } + fContent = null; + // Attach to new + if (newInput == null) return; + IDocument document = fDocumentProvider.getDocument(newInput); + if (document == null) return; + fTextEditor = MarkdownEditor.getEditor(document); + document.addDocumentListener(this); + parse(); + } + + /* + * @see IContentProvider#dispose + */ + public void dispose() { + fContent = null; + } + + /* + * @see IContentProvider#isDeleted(Object) + */ + public boolean isDeleted(Object element) { + return false; + } + + /* + * @see IStructuredContentProvider#getElements(Object) + */ + public Object[] getElements(Object element) { + return fContent.getHeadings(null).toArray(); + } + + /* + * @see ITreeContentProvider#hasChildren(Object) + */ + public boolean hasChildren(Object element) { + if (element == fInput) { + return true; + } + if (element instanceof MarkdownPage.Header) { + MarkdownPage.Header header = (MarkdownPage.Header) element; + return header.getSubHeaders().size() > 0; + } ; + return false; + } + + /* + * @see ITreeContentProvider#getParent(Object) + */ + public Object getParent(Object element) { + if (!(element instanceof MarkdownPage.Header)) return null; + return ((MarkdownPage.Header) element).getParent(); + } + + /* + * @see ITreeContentProvider#getChildren(Object) + */ + public Object[] getChildren(Object element) { + if (element == fInput) { + return fContent.getHeadings(null).toArray(); + } + if (!(element instanceof MarkdownPage.Header)) return null; + return ((MarkdownPage.Header) element).getSubHeaders().toArray(); + } + + public void documentAboutToBeChanged(DocumentEvent event) { + // nothing + } + + public void documentChanged(DocumentEvent event) { + parse(); + update(); + } + } + + private Object fInput = null; + private final IDocumentProvider fDocumentProvider; + private final MarkdownEditor fTextEditor; + protected boolean showWordCounts; + private List
selectedHeaders; + + /** + * @param documentProvider + * @param mdEditor + */ + public MarkdownContentOutlinePage(IDocumentProvider documentProvider, MarkdownEditor mdEditor) { + fDocumentProvider = documentProvider; + fTextEditor = mdEditor; + } + + /* + * (non-Javadoc) Method declared on ContentOutlinePage + */ + @Override + public void createControl(Composite parent) { + super.createControl(parent); + TreeViewer viewer = getTreeViewer(); + viewer.setContentProvider(new ContentProvider()); + // Add word count annotations + viewer.setLabelProvider(new LabelProvider() { + + @Override + public String getText(Object element) { + if (!(element instanceof MarkdownPage.Header)) return super.getText(element); + Header header = ((MarkdownPage.Header) element); + String hText = header.toString(); + if (!showWordCounts) return hText; + IRegion region = getRegion(header); + String text; + try { + text = fTextEditor.getDocument().get(region.getOffset(), region.getLength()); + text = WebUtils.stripTags(text); + text = text.replaceAll("#", "").trim(); + assert text.startsWith(hText); + text = text.substring(hText.length()); + int wc = StrUtils.wordCount(text); + return hText + " (" + wc + ":" + text.length() + ")"; + } catch (BadLocationException e) { + return hText; + } + } + }); + viewer.addSelectionChangedListener(this); + + if (fInput != null) viewer.setInput(fInput); + + // Buttons + IPageSite site = getSite(); + IActionBars bars = site.getActionBars(); + IToolBarManager toolbar = bars.getToolBarManager(); + // Word count action + Action action = new Action("123", IAction.AS_CHECK_BOX) { + + @Override + public void run() { + showWordCounts = isChecked(); + update(); + } + }; + action.setToolTipText("Show/hide section word:character counts"); + toolbar.add(action); + // +/- actions + action = new Action("<") { + + @Override + public void run() { + doPromoteDemote(-1); + } + }; + action.setToolTipText("Promote the selected section\n -- move it up a level."); + toolbar.add(action); + // + action = new Action(">") { + + @Override + public void run() { + doPromoteDemote(1); + } + }; + action.setToolTipText("Demote the selected section\n -- move it down a level."); + toolbar.add(action); + // up/down actions + action = new Action("/\\") { + + @Override + public void run() { + try { + doMove(-1); + } catch (BadLocationException e) { + throw Utils.runtime(e); + } + } + }; + action.setToolTipText("Move the selected section earlier"); + toolbar.add(action); + // + action = new Action("\\/") { + + @Override + public void run() { + try { + doMove(1); + } catch (BadLocationException e) { + throw Utils.runtime(e); + } + } + }; + action.setToolTipText("Move the selected section later"); + toolbar.add(action); + // Collapse + ImageDescriptor id = ImageDescriptor.createFromFile(getClass(), "collapseall.gif"); + action = new Action("collapse", id) { + + @Override + public void run() { + doCollapseAll(); + } + }; + action.setImageDescriptor(id); + action.setToolTipText("Collapse outline tree"); + toolbar.add(action); + // Sync + id = ImageDescriptor.createFromFile(getClass(), "synced.gif"); + action = new Action("sync") { + + @Override + public void run() { + try { + doSyncToEditor(); + } catch (BadLocationException e) { + throw Utils.runtime(e); + } + } + }; + action.setImageDescriptor(id); + action.setToolTipText("Link with editor"); + toolbar.add(action); + // Add edit ability + viewer.getControl().addKeyListener(new KeyListener() { + + public void keyPressed(KeyEvent e) { + if (e.keyCode == SWT.F2) { + doEditHeader(); + } + } + + public void keyReleased(KeyEvent e) { + // + } + }); + } + + /** + * @throws BadLocationException + */ + protected void doSyncToEditor() throws BadLocationException { + TreeViewer viewer = getTreeViewer(); + if (viewer == null) return; + // Get header + MarkdownPage page = fTextEditor.getMarkdownPage(); + int caretOffset = fTextEditor.getViewer().getTextWidget().getCaretOffset(); + IDocument doc = fTextEditor.getDocument(); + int line = doc.getLineOfOffset(caretOffset); + List lineTypes = page.getLineTypes(); + for (; line > -1; line--) { + KLineType lt = lineTypes.get(line); + if (lt.toString().startsWith("H")) break; + } + if (line < 0) return; + Header header = (Header) page.getPageObject(line); + // Set + IStructuredSelection selection = new StructuredSelection(header); + viewer.setSelection(selection, true); + } + + void doEditHeader() { + TreeViewer viewer = getTreeViewer(); + viewer.editElement(selectedHeaders.get(0), 0); + } + + protected void doCollapseAll() { + TreeViewer viewer = getTreeViewer(); + if (viewer == null) return; + // Control control = viewer.getControl(); + // if (control != null && !control.isDisposed()) { + // control.setRedraw(false); + viewer.collapseAll(); + // control.setRedraw(true); + // } + } + + /** + * Move the selected sections up/down + * + * @param i 1 or -1. 1==move later, -1=earlier + * @throws BadLocationException + */ + protected void doMove(int i) throws BadLocationException { + assert i == 1 || i == -1; + if (selectedHeaders == null || selectedHeaders.size() == 0) return; + // Get text region to move + MarkdownPage.Header first = selectedHeaders.get(0); + MarkdownPage.Header last = selectedHeaders.get(selectedHeaders.size() - 1); + int start = fTextEditor.getDocument().getLineOffset(first.getLineNumber()); + IRegion r = getRegion(last); + int end = r.getOffset() + r.getLength(); + // int length = end - start; + // Get new insertion point + int insert; + if (i == 1) { + Header nextSection = last.getNext(); + if (nextSection == null) return; + IRegion nr = getRegion(nextSection); + insert = nr.getOffset() + nr.getLength(); + } else { + Header prevSection = first.getPrevious(); + if (prevSection == null) return; + IRegion nr = getRegion(prevSection); + insert = nr.getOffset(); + } + // Get text + String text = fTextEditor.getDocument().get(); + // Move text + String section = text.substring(start, end); + String pre, post; + if (i == 1) { + pre = text.substring(0, start) + text.substring(end, insert); + post = text.substring(insert); + } else { + pre = text.substring(0, insert); + post = text.substring(insert, start) + text.substring(end); + } + text = pre + section + post; + assert text.length() == fTextEditor.getDocument().get().length() : text.length() + - fTextEditor.getDocument().get().length() + " chars gained/lost"; + // Update doc + fTextEditor.getDocument().set(text); + } + + /** + * Does not support -------- / ========= underlining, only # headers + * + * @param upDown 1 for demote (e.g. h2 -> h3), -1 for promote (e.g. h2 -> h1) + */ + protected void doPromoteDemote(int upDown) { + assert upDown == 1 || upDown == -1; + if (selectedHeaders == null || selectedHeaders.size() == 0) return; + HashSet
toAdjust = new HashSet
(selectedHeaders); + HashSet
adjusted = new HashSet
(); + // Adjust + MarkdownPage mdPage = fTextEditor.getMarkdownPage(); + List lines = new ArrayList(mdPage.getText()); + while (toAdjust.size() != 0) { + Header h = toAdjust.iterator().next(); + toAdjust.remove(h); + adjusted.add(h); + String line = lines.get(h.getLineNumber()); + if (upDown == -1) { + if (h.getLevel() == 1) return; // Level 1; can't promote + if (line.startsWith("##")) + line = line.substring(1); + else { + return; // TODO support for ------ / ======== + } + } else + line = "#" + line; + int ln = h.getLineNumber(); + lines.set(ln, line); + // kids + ArrayList
kids = new ArrayList
(h.getSubHeaders()); + for (Header header : kids) { + if (!adjusted.contains(header)) toAdjust.add(header); + } + } + // Set + StringBuilder sb = new StringBuilder(); + for (String line : lines) { + sb.append(line); + } + fTextEditor.getDocument().set(sb.toString()); + } + + /** + * The region of text for this header. This includes the header itself. + * + * @param header + * @return + * @throws BadLocationException + */ + protected IRegion getRegion(Header header) { + try { + IDocument doc = fTextEditor.getDocument(); + // Line numbers + int start = header.getLineNumber(); + Header next = header.getNext(); + int end; + if (next != null) { + end = next.getLineNumber() - 1; + } else { + end = doc.getNumberOfLines() - 1; + } + int offset = doc.getLineOffset(start); + IRegion ei = doc.getLineInformation(end); + int length = ei.getOffset() + ei.getLength() - offset; + return new Region(offset, length); + } catch (BadLocationException ex) { + throw Utils.runtime(ex); + } + } + + /* + * (non-Javadoc) Method declared on ContentOutlinePage + */ + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public void selectionChanged(SelectionChangedEvent event) { + super.selectionChanged(event); + selectedHeaders = null; + ISelection selection = event.getSelection(); + if (selection.isEmpty()) return; + if (!(selection instanceof IStructuredSelection)) return; + try { + IStructuredSelection strucSel = (IStructuredSelection) selection; + Object[] sections = strucSel.toArray(); + selectedHeaders = (List) Arrays.asList(sections); + MarkdownPage.Header first = (Header) sections[0]; + MarkdownPage.Header last = (Header) sections[sections.length - 1]; + int start = fTextEditor.getDocument().getLineOffset(first.getLineNumber()); + int length; + if (first == last) { + length = fTextEditor.getDocument().getLineLength(first.getLineNumber()); + } else { + IRegion r = getRegion(last); + int end = r.getOffset() + r.getLength(); + length = end - start; + } + fTextEditor.setHighlightRange(start, length, true); + } catch (Exception x) { + System.out.println(x.getStackTrace()); + fTextEditor.resetHighlightRange(); + } + } + + /** + * Sets the input of the outline page + * + * @param input the input of this outline page + */ + public void setInput(Object input) { + fInput = input; + update(); + } + + /** + * Updates the outline page. + */ + public void update() { + TreeViewer viewer = getTreeViewer(); + + if (viewer != null) { + Control control = viewer.getControl(); + if (control != null && !control.isDisposed()) { + control.setRedraw(false); + viewer.setInput(fInput); + viewer.expandAll(); + control.setRedraw(true); + } + } + } + +} diff --git a/plugin/src/winterwell/markdown/editors/MarkdownEditor.java b/plugin/src/winterwell/markdown/editors/MarkdownEditor.java index 86699c4..e455e59 100755 --- a/plugin/src/winterwell/markdown/editors/MarkdownEditor.java +++ b/plugin/src/winterwell/markdown/editors/MarkdownEditor.java @@ -37,7 +37,6 @@ import org.eclipse.ui.editors.text.TextEditor; import org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants; import org.eclipse.ui.texteditor.IDocumentProvider; -import org.eclipse.ui.texteditor.SourceViewerDecorationSupport; import org.eclipse.ui.views.contentoutline.IContentOutlinePage; import winterwell.markdown.Activator; @@ -46,13 +45,12 @@ import winterwell.markdown.preferences.MarkdownPreferencePage; import winterwell.markdown.views.MarkdownPreview; - /** * Text editor with markdown support. + * * @author Daniel Winterstein */ -public class MarkdownEditor extends TextEditor implements IDocumentListener -{ +public class MarkdownEditor extends TextEditor implements IDocumentListener { /** * Maximum length for a task tag message @@ -60,18 +58,16 @@ public class MarkdownEditor extends TextEditor implements IDocumentListener private static final int MAX_TASK_MSG_LENGTH = 80; private ColorManager colorManager; private MarkdownContentOutlinePage fOutlinePage = null; - + IDocument oldDoc = null; - + private MarkdownPage page; - - + private boolean pageDirty = true; - + private ProjectionSupport projectionSupport; private final IPreferenceStore pStore; private IPropertyChangeListener prefChangeListener; - public MarkdownEditor() { super(); @@ -80,82 +76,82 @@ public MarkdownEditor() { setSourceViewerConfiguration(new MDConfiguration(colorManager, getPreferenceStore())); } - @Override public void createPartControl(Composite parent) { - // Over-ride to add code-folding support + // Over-ride to add code-folding support super.createPartControl(parent); if (getSourceViewer() instanceof ProjectionViewer) { - ProjectionViewer viewer =(ProjectionViewer)getSourceViewer(); - projectionSupport = new ProjectionSupport(viewer,getAnnotationAccess(),getSharedColors()); - projectionSupport.install(); - //turn projection mode on - viewer.doOperation(ProjectionViewer.TOGGLE); + ProjectionViewer viewer = (ProjectionViewer) getSourceViewer(); + projectionSupport = new ProjectionSupport(viewer, getAnnotationAccess(), getSharedColors()); + projectionSupport.install(); + // turn projection mode on + viewer.doOperation(ProjectionViewer.TOGGLE); } } - + /** - * Returns the editor's source viewer. May return null before the editor's part has been created and after disposal. + * Returns the editor's source viewer. May return null before the editor's part has been created + * and after disposal. */ public ISourceViewer getViewer() { return getSourceViewer(); } - + @Override - protected ISourceViewer createSourceViewer(Composite parent, - IVerticalRuler ruler, int styles) { -// if (true) return super.createSourceViewer(parent, ruler, styles); + protected ISourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, int styles) { + // if (true) return super.createSourceViewer(parent, ruler, styles); // Create with code-folding - ISourceViewer viewer = new ProjectionViewer(parent, ruler, - getOverviewRuler(), isOverviewRulerVisible(), styles); + ISourceViewer viewer = new ProjectionViewer(parent, ruler, getOverviewRuler(), isOverviewRulerVisible(), + styles); // ensure decoration support has been created and configured. - SourceViewerDecorationSupport decSupport = getSourceViewerDecorationSupport(viewer); -// SourceViewer viewer = (SourceViewer) super.createSourceViewer(parent, ruler, styles); - // Setup word-wrapping + /* SourceViewerDecorationSupport decSupport = */ getSourceViewerDecorationSupport(viewer); + // SourceViewer viewer = (SourceViewer) super.createSourceViewer(parent, ruler, styles); + // Setup word-wrapping final StyledText widget = viewer.getTextWidget(); // Listen to pref changes prefChangeListener = new IPropertyChangeListener() { + public void propertyChange(PropertyChangeEvent event) { if (event.getProperty().equals(MarkdownPreferencePage.PREF_WORD_WRAP)) { widget.setWordWrap(MarkdownPreferencePage.wordWrap()); } - } + } }; pStore.addPropertyChangeListener(prefChangeListener); // Switch on word-wrapping if (MarkdownPreferencePage.wordWrap()) { widget.setWordWrap(true); - } - return viewer; + } + return viewer; } - + public void dispose() { if (pStore != null) { - pStore.removePropertyChangeListener(prefChangeListener); + pStore.removePropertyChangeListener(prefChangeListener); } colorManager.dispose(); - super.dispose(); - } - public void documentAboutToBeChanged(DocumentEvent event) { + super.dispose(); } + public void documentAboutToBeChanged(DocumentEvent event) {} + public void documentChanged(DocumentEvent event) { - pageDirty = true; + pageDirty = true; } - + @Override protected void doSetInput(IEditorInput input) throws CoreException { // Detach from old - if (oldDoc!= null) { + if (oldDoc != null) { oldDoc.removeDocumentListener(this); if (doc2editor.get(oldDoc) == this) doc2editor.remove(oldDoc); } // Set - super.doSetInput(input); + super.doSetInput(input); // Attach as a listener to new doc IDocument doc = getDocument(); oldDoc = doc; - if (doc==null) return; + if (doc == null) return; doc.addDocumentListener(this); doc2editor.put(doc, this); // Initialise code folding @@ -171,26 +167,26 @@ protected void editorSaved() { } } + @SuppressWarnings({ "unchecked", "rawtypes" }) public Object getAdapter(Class required) { if (IContentOutlinePage.class.equals(required)) { if (fOutlinePage == null) { - fOutlinePage= new MarkdownContentOutlinePage(getDocumentProvider(), this); - if (getEditorInput() != null) - fOutlinePage.setInput(getEditorInput()); + fOutlinePage = new MarkdownContentOutlinePage(getDocumentProvider(), this); + if (getEditorInput() != null) fOutlinePage.setInput(getEditorInput()); } return fOutlinePage; } return super.getAdapter(required); } + public IDocument getDocument() { IEditorInput input = getEditorInput(); - IDocumentProvider docProvider = getDocumentProvider(); - return docProvider==null? null : docProvider.getDocument(input); + IDocumentProvider docProvider = getDocumentProvider(); + return docProvider == null ? null : docProvider.getDocument(input); } + /** - * - * @return The {@link MarkdownPage} for the document being edited, or null - * if unavailable. + * @return The {@link MarkdownPage} for the document being edited, or null if unavailable. */ public MarkdownPage getMarkdownPage() { if (pageDirty) updateMarkdownPage(); @@ -198,7 +194,7 @@ public MarkdownPage getMarkdownPage() { } public int getPrintColumns() { - return getPreferenceStore().getInt(AbstractDecoratedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLUMN); + return getPreferenceStore().getInt(AbstractDecoratedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLUMN); } /** @@ -206,83 +202,85 @@ public int getPrintColumns() { */ public String getText() { IDocument doc = getDocument(); - return doc==null? null : doc.get(); + return doc == null ? null : doc.get(); } private void updateMarkdownPage() { String text = getText(); - if (text==null) text=""; + if (text == null) text = ""; page = new MarkdownPage(text); pageDirty = false; } void updateTaskTags(IRegion region) { - try { - boolean useTags = pStore.getBoolean(MarkdownPreferencePage.PREF_TASK_TAGS); - if (!useTags) return; - // Get task tags -// IPreferenceStore peuistore = EditorsUI.getPreferenceStore(); -//// IPreferenceStore pStore_jdt = org.eclipse.jdt.core.compiler.getDefault().getPreferenceStore(); -// String tagString = peuistore.getString("org.eclipse.jdt.core.compiler.taskTags"); - String tagString = pStore.getString(MarkdownPreferencePage.PREF_TASK_TAGS_DEFINED); - List tags = Arrays.asList(tagString.split(",")); - // Get resource for editor - IFile docFile = getResource(this); - // Get existing tasks - IMarker[] taskMarkers = docFile.findMarkers(IMarker.TASK, true, IResource.DEPTH_INFINITE); - List markers = new ArrayList(Arrays.asList(taskMarkers)); -// Collections.sort(markers, c) sort for efficiency - // Find tags in doc - List text = getMarkdownPage().getText(); - for(int i=1; i<=text.size(); i++) { - String line = text.get(i-1); // wierd off-by-one bug - for (String tag : tags) { - tag = tag.trim(); - int tagIndex = line.indexOf(tag); - if (tagIndex == -1) continue; - IMarker exists = updateTaskTags2_checkExisting(i, tagIndex, line, markers); - if (exists!=null) { - markers.remove(exists); - continue; + try { + boolean useTags = pStore.getBoolean(MarkdownPreferencePage.PREF_TASK_TAGS); + if (!useTags) return; + // Get task tags + // IPreferenceStore peuistore = EditorsUI.getPreferenceStore(); + //// IPreferenceStore pStore_jdt = + // org.eclipse.jdt.core.compiler.getDefault().getPreferenceStore(); + // String tagString = peuistore.getString("org.eclipse.jdt.core.compiler.taskTags"); + String tagString = pStore.getString(MarkdownPreferencePage.PREF_TASK_TAGS_DEFINED); + List tags = Arrays.asList(tagString.split(",")); + // Get resource for editor + IFile docFile = getResource(this); + // Get existing tasks + IMarker[] taskMarkers = docFile.findMarkers(IMarker.TASK, true, IResource.DEPTH_INFINITE); + List markers = new ArrayList(Arrays.asList(taskMarkers)); + // Collections.sort(markers, c) sort for efficiency + // Find tags in doc + List text = getMarkdownPage().getText(); + for (int i = 1; i <= text.size(); i++) { + String line = text.get(i - 1); // wierd off-by-one bug + for (String tag : tags) { + tag = tag.trim(); + int tagIndex = line.indexOf(tag); + if (tagIndex == -1) continue; + IMarker exists = updateTaskTags2_checkExisting(i, tagIndex, line, markers); + if (exists != null) { + markers.remove(exists); + continue; + } + IMarker marker = docFile.createMarker(IMarker.TASK); + // Once we have a marker object, we can set its attributes + marker.setAttribute(IMarker.PRIORITY, IMarker.PRIORITY_NORMAL); + String msg = line.substring(line.indexOf(tag), + Math.min(tagIndex + MAX_TASK_MSG_LENGTH, line.length() - 1)); + marker.setAttribute(IMarker.MESSAGE, msg); + marker.setAttribute(IMarker.LINE_NUMBER, i); } - IMarker marker = docFile.createMarker(IMarker.TASK); - //Once we have a marker object, we can set its attributes - marker.setAttribute(IMarker.PRIORITY, IMarker.PRIORITY_NORMAL); - String msg = line.substring(line.indexOf(tag), Math.min(tagIndex+MAX_TASK_MSG_LENGTH, line.length()-1)); - marker.setAttribute(IMarker.MESSAGE, msg); - marker.setAttribute(IMarker.LINE_NUMBER, i); } - } - // Remove old markers - for (IMarker m : markers) { - try { - m.delete(); - } catch (Exception ex) { + // Remove old markers + for (IMarker m : markers) { + try { + m.delete(); + } catch (Exception ex) { + // + } + } + } catch (Exception ex) { // - } } - } catch (Exception ex) { - // - } } /** * Find an existing marker, if there is one. + * * @param i * @param tagIndex * @param line * @param markers - * @return + * @return */ - private IMarker updateTaskTags2_checkExisting(int i, int tagIndex, - String line, List markers) { + private IMarker updateTaskTags2_checkExisting(int i, int tagIndex, String line, List markers) { String tagMessage = line.substring(tagIndex).trim(); for (IMarker marker : markers) { try { - Integer lineNum = (Integer) marker.getAttribute(IMarker.LINE_NUMBER); - if (i != lineNum) continue; - String txt = ((String) marker.getAttribute(IMarker.MESSAGE)).trim(); - if (tagMessage.equals(txt)) return marker; + Integer lineNum = (Integer) marker.getAttribute(IMarker.LINE_NUMBER); + if (i != lineNum) continue; + String txt = ((String) marker.getAttribute(IMarker.MESSAGE)).trim(); + if (tagMessage.equals(txt)) return marker; } catch (Exception ex) { // Ignore } @@ -290,19 +288,17 @@ private IMarker updateTaskTags2_checkExisting(int i, int tagIndex, return null; } - private IFile getResource(MarkdownEditor markdownEditor) { IPathEditorInput input = (IPathEditorInput) getEditorInput(); - IPath path = input.getPath(); + IPath path = input.getPath(); IWorkspace workspace = ResourcesPlugin.getWorkspace(); IWorkspaceRoot root = workspace.getRoot(); - IFile[] files = root.findFilesForLocation(path); + IFile[] files = root.findFilesForLocationURI(path.toFile().toURI()); if (files.length != 1) return null; - IFile docFile = files[0]; + IFile docFile = files[0]; return docFile; } - /** * @param doc * @return @@ -313,22 +309,19 @@ public static MarkdownEditor getEditor(IDocument doc) { private static final Map doc2editor = new HashMap(); - /** - * @param region - * + * @param region */ public void updatePage(IRegion region) { -// if (!pageDirty) return; + // if (!pageDirty) return; updateTaskTags(region); updateSectionFoldingAnnotations(region); } - - + private static final Annotation[] ANNOTATION_ARRAY = new Annotation[0]; private static final Position[] POSITION_ARRAY = new Position[0]; - + private boolean haveRunFolding = false; private Map oldAnnotations = new HashMap(0); @@ -337,8 +330,8 @@ public void updatePage(IRegion region) { */ private void updateSectionFoldingAnnotations(IRegion region) { if (!haveRunFolding) region = null; // Do the whole doc - if ( ! (getSourceViewer() instanceof ProjectionViewer)) return; - ProjectionViewer viewer = ((ProjectionViewer)getSourceViewer()); + if (!(getSourceViewer() instanceof ProjectionViewer)) return; + ProjectionViewer viewer = ((ProjectionViewer) getSourceViewer()); MarkdownPage mPage = getMarkdownPage(); List
headers = mPage.getHeadings(null); // this will hold the new annotations along @@ -347,9 +340,9 @@ private void updateSectionFoldingAnnotations(IRegion region) { IDocument doc = getDocument(); updateSectionFoldingAnnotations2(doc, headers, annotations, doc.getLength()); // Filter existing ones - Position[] newValues = annotations.values().toArray(POSITION_ARRAY); + Position[] newValues = annotations.values().toArray(POSITION_ARRAY); List deletedAnnotations = new ArrayList(); - for(Entry ae : oldAnnotations.entrySet()) { + for (Entry ae : oldAnnotations.entrySet()) { Position oldp = ae.getValue(); boolean stillExists = false; for (Position newp : newValues) { @@ -364,54 +357,52 @@ private void updateSectionFoldingAnnotations(IRegion region) { } } // Filter out-of-region ones - for(Annotation a : annotations.keySet().toArray(ANNOTATION_ARRAY)) { + for (Annotation a : annotations.keySet().toArray(ANNOTATION_ARRAY)) { Position p = annotations.get(a); - if (!intersectsRegion(p , region)) annotations.remove(a); + if (!intersectsRegion(p, region)) annotations.remove(a); } // Adjust the page - ProjectionAnnotationModel annotationModel = viewer.getProjectionAnnotationModel(); - if (annotationModel==null) return; + ProjectionAnnotationModel annotationModel = viewer.getProjectionAnnotationModel(); + if (annotationModel == null) return; annotationModel.modifyAnnotations(deletedAnnotations.toArray(ANNOTATION_ARRAY), annotations, null); // Remember old values oldAnnotations.putAll(annotations); for (Annotation a : deletedAnnotations) { - oldAnnotations.remove(a); - } + oldAnnotations.remove(a); + } haveRunFolding = true; } - /** * @param p * @param region * @return true if p overlaps with region, or if region is null */ private boolean intersectsRegion(Position p, IRegion region) { - if (region==null) return true; - if (p.offset > region.getOffset()+region.getLength()) return false; - if (p.offset+p.length < region.getOffset()) return false; + if (region == null) return true; + if (p.offset > region.getOffset() + region.getLength()) return false; + if (p.offset + p.length < region.getOffset()) return false; return true; } - /** * Calculate where to fold, sticking the info into newAnnotations - * @param doc + * + * @param doc * @param headers * @param newAnnotations * @param endParent */ private void updateSectionFoldingAnnotations2(IDocument doc, List
headers, Map newAnnotations, int endParent) { - for (int i=0; i subHeaders = header.getSubHeaders(); @@ -420,36 +411,56 @@ private void updateSectionFoldingAnnotations2(IDocument doc, List
header } } catch (Exception ex) { System.out.println(ex); - } - } + } + } } - } - - /* - - -- - - - - IEditorPart editor = null; - IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); - if (window != null) { - IWorkbenchPage activePage = window.getActivePage(); - if (activePage != null) editor = activePage.getActiveEditor(); - } - if (editor != null) { - // todo: Add operations for active editor - } - - - - - - - -*/ \ No newline at end of file + * - IEditorPart editor = null; IWorkbenchWindow window = + * PlatformUI.getWorkbench().getActiveWorkbenchWindow(); if (window != null) { IWorkbenchPage + * activePage = window.getActivePage(); if (activePage != null) editor = + * activePage.getActiveEditor(); } if (editor != null) { // todo: Add operations for active editor } + * + */ diff --git a/plugin/src/winterwell/markdown/views/MarkdownPreview.java b/plugin/src/winterwell/markdown/views/MarkdownPreview.java index c103953..4fc2856 100755 --- a/plugin/src/winterwell/markdown/views/MarkdownPreview.java +++ b/plugin/src/winterwell/markdown/views/MarkdownPreview.java @@ -1,28 +1,40 @@ package winterwell.markdown.views; - -import java.io.File; -import java.net.URI; - +import java.io.IOException; +import java.net.URISyntaxException; +import java.net.URL; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.Platform; import org.eclipse.swt.SWT; import org.eclipse.swt.browser.Browser; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IPathEditorInput; import org.eclipse.ui.part.ViewPart; +import org.osgi.framework.Bundle; +import winterwell.markdown.Activator; import winterwell.markdown.editors.ActionBarContributor; import winterwell.markdown.editors.MarkdownEditor; import winterwell.markdown.pagemodel.MarkdownPage; +public class MarkdownPreview extends ViewPart { + private static final String MDCSS = "markdown.css"; + private static final String CSS = "css"; + private static final String EOL = System.getProperty("line.separator"); + private static final IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); + private static final IPath location = root.getLocation(); -public class MarkdownPreview extends ViewPart { - public static MarkdownPreview preview = null; - private Browser viewer = null; /** @@ -33,68 +45,111 @@ public MarkdownPreview() { } /** - * This is a callback that will allow us - * to create the viewer and initialize it. + * This is a callback that will allow us to create the viewer and initialize it. */ @Override public void createPartControl(Composite parent) { viewer = new Browser(parent, SWT.MULTI); // | SWT.H_SCROLL | SWT.V_SCROLL } - - - /** * Passing the focus request to the viewer's control. */ @Override public void setFocus() { - if (viewer==null) return; + if (viewer == null) { + return; + } viewer.setFocus(); update(); } public void update() { - if (viewer==null) return; + if (viewer == null) { + return; + } try { IEditorPart editor = ActionBarContributor.getActiveEditor(); if (!(editor instanceof MarkdownEditor)) { viewer.setText(""); return; } + + String html = ""; MarkdownEditor ed = (MarkdownEditor) editor; MarkdownPage page = ed.getMarkdownPage(); - String html = page.html(); - html = addBaseURL(editor, html); - if (page != null) viewer.setText(html); - else viewer.setText(""); + if (page != null) { + html = page.html(); + IPath path = getEditorInput(editor); + html = addHeader(html, getBaseUrl(path), getMdStyles(path)); + } + viewer.setText(html); } catch (Exception ex) { - // Smother System.out.println(ex); - - if (viewer != null && !viewer.isDisposed()) + + if (viewer != null && !viewer.isDisposed()) { viewer.setText(ex.getMessage()); + } } } - /** - * Adjust the URL base to be the file's directory. - * @param editor - * @param html - * @return - */ - private String addBaseURL(IEditorPart editor, String html) { - try { + private IPath getEditorInput(IEditorPart editor) { IPathEditorInput input = (IPathEditorInput) editor.getEditorInput(); - IPath path = input.getPath(); - path = path.removeLastSegments(1); - File f = path.toFile(); - URI fileURI = f.toURI(); - String html2 = "\r\n"+html - +"\r\n"; - return html2; - } catch (Exception ex) { - return html; + return input.getPath(); } + + private String getBaseUrl(IPath path) { + return path.removeLastSegments(1).toFile().toURI().toString(); + } + + /* + * Look for a stylesheet file having the same name as the input file, beginning in the current + * directory, its parent directories, upto and including the current project directory. If not + * found, look for a file with the name 'markdown.css' in the same set of directories. If still + * not found, read 'markdown.css' from the bundle. + */ + private String getMdStyles(IPath path) { + IPath styles = path.removeFileExtension().addFileExtension(CSS); + String pathname = find(styles); + if (pathname != null) return pathname; + + styles = path.removeLastSegments(1).append(MDCSS); + pathname = find(styles); + if (pathname != null) return pathname; + + Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID); + URL url = FileLocator.find(bundle, new Path("resources/" + MDCSS), null); + try { + url = FileLocator.toFileURL(url); + return url.toURI().toString(); + } catch (IOException | URISyntaxException e) { + System.out.println(e); + return null; + } + } + + private String find(IPath styles) { + String name = styles.lastSegment(); + IPath base = styles.removeLastSegments(1); + IContainer dir = root.getContainerForLocation(base); + + while (dir.getType() != IResource.ROOT) { + IResource member = dir.findMember(name); + if (member != null) { + return location.append(member.getFullPath()).toFile().toURI().toString(); + } + dir = dir.getParent(); + } + return null; + } + + private String addHeader(String html, String base, String style) { + StringBuilder sb = new StringBuilder("" + EOL); + if (base != null) sb.append("" + EOL); + if (style != null) { + sb.append("" + EOL); + } + sb.append("" + EOL + html + EOL + ""); + return sb.toString(); } -} \ No newline at end of file +} diff --git a/pom.xml b/pom.xml index 48d862b..2696b8d 100644 --- a/pom.xml +++ b/pom.xml @@ -91,8 +91,8 @@ tycho-compiler-plugin ${tycho-version} - 1.6 - 1.6 + 1.8 + 1.8 From 14c4d49beef16683a9ca530901d27536291d9a7c Mon Sep 17 00:00:00 2001 From: GRosenberg Date: Mon, 21 Nov 2016 23:20:46 -0800 Subject: [PATCH 02/20] Add Prefs selectable stylesheets. --- .../editors/ActionBarContributor.java | 25 +- .../markdown/editors/MDScanner.java | 2 +- .../preferences/MarkdownPreferencePage.java | 273 +++++++----------- .../markdown/preferences/Prefs.java | 31 ++ .../markdown/views/MarkdownPreview.java | 135 +++++++-- 5 files changed, 266 insertions(+), 200 deletions(-) create mode 100644 plugin/src/winterwell/markdown/preferences/Prefs.java diff --git a/plugin/src/winterwell/markdown/editors/ActionBarContributor.java b/plugin/src/winterwell/markdown/editors/ActionBarContributor.java index e41793f..7ae8831 100755 --- a/plugin/src/winterwell/markdown/editors/ActionBarContributor.java +++ b/plugin/src/winterwell/markdown/editors/ActionBarContributor.java @@ -8,31 +8,32 @@ import winterwell.markdown.views.MarkdownPreview; public class ActionBarContributor extends TextEditorActionContributor { - + private static IEditorPart activeEditor = null; -// IAction print = new PrintAction(); + // IAction print = new PrintAction(); public void setActiveEditor(IEditorPart targetEditor) { super.setActiveEditor(targetEditor); - activeEditor = targetEditor; + activeEditor = targetEditor; // add print action - IActionBars bars= getActionBars(); - if (bars != null) { -// todo bars.setGlobalActionHandler(ActionFactory.PRINT.getId(), print); -// bars.updateActionBars(); - } - // Update preview? + IActionBars bars = getActionBars(); + if (bars != null) { + // todo bars.setGlobalActionHandler(ActionFactory.PRINT.getId(), print); + // bars.updateActionBars(); + } + // Update preview? if (MarkdownPreview.preview != null) { MarkdownPreview.preview.update(); } } + public static IEditorPart getActiveEditor() { return activeEditor; } - + @Override - public void contributeToMenu(IMenuManager menu) { + public void contributeToMenu(IMenuManager menu) { super.contributeToMenu(menu); // Add format action IMenuManager edit = menu.findMenuUsingPath("edit"); @@ -43,7 +44,7 @@ public void contributeToMenu(IMenuManager menu) { IMenuManager file = menu.findMenuUsingPath("file"); if (file != null) { file.appendToGroup("import.ext", new ExportHTMLAction()); - } + } } } diff --git a/plugin/src/winterwell/markdown/editors/MDScanner.java b/plugin/src/winterwell/markdown/editors/MDScanner.java index 6e65de4..926f34f 100755 --- a/plugin/src/winterwell/markdown/editors/MDScanner.java +++ b/plugin/src/winterwell/markdown/editors/MDScanner.java @@ -29,7 +29,7 @@ public MDScanner(ColorManager cm) { IPreferenceStore pStore = Activator.getDefault().getPreferenceStore(); Token heading = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_HEADER)), null, SWT.BOLD)); Token comment = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_COMMENT)))); - Token emphasis = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_DEFUALT)), null, SWT.ITALIC)); + Token emphasis = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_DEFAULT)), null, SWT.ITALIC)); Token list = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_HEADER)), null, SWT.BOLD)); Token link = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_LINK)), null, TextAttribute.UNDERLINE)); Token code = new Token(new TextAttribute( diff --git a/plugin/src/winterwell/markdown/preferences/MarkdownPreferencePage.java b/plugin/src/winterwell/markdown/preferences/MarkdownPreferencePage.java index 36dadbc..c299821 100755 --- a/plugin/src/winterwell/markdown/preferences/MarkdownPreferencePage.java +++ b/plugin/src/winterwell/markdown/preferences/MarkdownPreferencePage.java @@ -1,9 +1,19 @@ package winterwell.markdown.preferences; +import java.io.File; +import java.io.IOException; +import java.net.URISyntaxException; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.core.runtime.FileLocator; +import org.eclipse.core.runtime.Platform; import org.eclipse.jface.preference.BooleanFieldEditor; import org.eclipse.jface.preference.ColorFieldEditor; -import org.eclipse.jface.preference.FieldEditor; +import org.eclipse.jface.preference.ComboFieldEditor; import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.FileFieldEditor; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferenceConverter; import org.eclipse.jface.preference.StringFieldEditor; @@ -11,54 +21,23 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; +import org.osgi.framework.Bundle; import winterwell.markdown.Activator; -/** - * This class represents a preference page that - * is contributed to the Preferences dialog. By - * subclassing FieldEditorPreferencePage, we - * can use the field support built into JFace that allows - * us to create a page that is small and knows how to - * save, restore and apply itself. - *

- * This page is used to modify preferences only. They - * are stored in the preference store that belongs to - * the main plug-in class. That way, preferences can - * be accessed directly via the preference store. - */ - -public class MarkdownPreferencePage - extends FieldEditorPreferencePage - implements IWorkbenchPreferencePage { - - public static final String PREF_FOLDING = "Pref_Folding"; - public static final String PREF_WORD_WRAP = "Pref_WordWrap"; - public static final String PREF_TASK_TAGS = "Pref_TaskTagsOn"; - public static final String PREF_TASK_TAGS_DEFINED = "Pref_TaskTags"; - public static final String PREF_SECTION_NUMBERS = "Pref_SectionNumbers"; - - public static final String PREF_MARKDOWN_COMMAND = "Pref_Markdown_Command"; +public class MarkdownPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage, Prefs { + private static final String MARKDOWNJ = "(use built-in MarkdownJ converter)"; - - - public static final String PREF_DEFUALT = "Pref_Default"; - public static final String PREF_COMMENT = "Pref_Comment"; - public static final String PREF_HEADER = "Pref_Header"; - public static final String PREF_LINK = "Pref_Link"; - public static final String PREF_CODE = "Pref_Code"; - public static final String PREF_CODE_BG = "Pref_Code_Background"; - - public static final String PREF_GITHUB_SYNTAX = "Pref_Github_Syntax"; - public static final String PREF_MULTIMARKDOWN_METADATA = "Pref_MultiMarkdown_Metadata"; - + private static final RGB DEF_DEFAULT = new RGB(0, 0, 0); private static final RGB DEF_COMMENT = new RGB(128, 0, 0); private static final RGB DEF_HEADER = new RGB(0, 128, 0); private static final RGB DEF_LINK = new RGB(106, 131, 199); private static final RGB DEF_CODE = new RGB(0, 0, 0); - private static final RGB DEF_CODE_BG = new RGB(244,244,244); - + private static final RGB DEF_CODE_BG = new RGB(244, 244, 244); + + private static final String[][] builtins = builtins(); + public MarkdownPreferencePage() { super(GRID); IPreferenceStore pStore = Activator.getDefault().getPreferenceStore(); @@ -66,149 +45,121 @@ public MarkdownPreferencePage() { setPreferenceStore(pStore); setDescription("Settings for the Markdown text editor. See also the general text editor preferences."); } - + + /** Creates the field editors. */ + @Override + public void createFieldEditors() { + + Composite parent = getFieldEditorParent(); + + /* Fields for editor window */ + + // Word wrap + addField(new BooleanFieldEditor(PREF_WORD_WRAP, "Soft word wrapping \r\n" + + "Note: may cause line numbers and related \r\n" + "functionality to act a bit strangely", parent)); + + // Task tags + addField(new BooleanFieldEditor(PREF_TASK_TAGS, + "Manage tasks using task tags \r\n" + "If true, this will add and delete tags in sync with edits.", + parent)); + addField(new StringFieldEditor(PREF_TASK_TAGS_DEFINED, + "Task tags\nComma separated list of recognised task tags.", parent)); + + // Code folding + addField(new BooleanFieldEditor(PREF_FOLDING, "Document folding, a.k.a. outline support", parent)); + + addField(new StringFieldEditor(PREF_MARKDOWN_COMMAND, + "UNSTABLE: Command-line to run Markdown.\r\n" + "This should take in a file and output to std-out.\n" + + "Leave blank to use the built-in Java converter.", + parent)); + + addField(new ColorFieldEditor(PREF_DEFAULT, "Default text", parent)); + addField(new ColorFieldEditor(PREF_COMMENT, "Comment", parent)); + addField(new ColorFieldEditor(PREF_LINK, "Link", parent)); + addField(new ColorFieldEditor(PREF_HEADER, "Header and List indicator", parent)); + addField(new ColorFieldEditor(PREF_CODE, "Code", parent)); + addField(new ColorFieldEditor(PREF_CODE_BG, "Code Background", parent)); + + /* Fields for preview window */ + + // Browser CSS + addField(new ComboFieldEditor(PREF_CSS_DEFAULT, "Default Stylesheet", builtins, parent)); + addField(new FileFieldEditor(PREF_CSS_CUSTOM, "Custom Stylesheet", parent)); + + // Github Syntax support + addField(new BooleanFieldEditor(PREF_GITHUB_SYNTAX, "Support Github Syntax", parent)); + + // Multi-Markdown support + addField(new BooleanFieldEditor(PREF_MULTIMARKDOWN_METADATA, "Support Multi-Markdown Metadata", parent)); + } + + public void init(IWorkbench workbench) {} + public static void setDefaultPreferences(IPreferenceStore pStore) { pStore.setDefault(PREF_WORD_WRAP, false); pStore.setDefault(PREF_FOLDING, true); pStore.setDefault(PREF_TASK_TAGS, true); pStore.setDefault(PREF_TASK_TAGS_DEFINED, "TODO,FIXME,??"); + pStore.setDefault(PREF_MARKDOWN_COMMAND, MARKDOWNJ); pStore.setDefault(PREF_SECTION_NUMBERS, true); + + pStore.setDefault(PREF_CSS_DEFAULT, DEF_MDCSS); + pStore.setDefault(PREF_CSS_CUSTOM, ""); pStore.setDefault(PREF_GITHUB_SYNTAX, true); pStore.setDefault(PREF_MULTIMARKDOWN_METADATA, false); - - PreferenceConverter.setDefault(pStore, PREF_DEFUALT, DEF_DEFAULT); + + PreferenceConverter.setDefault(pStore, PREF_DEFAULT, DEF_DEFAULT); PreferenceConverter.setDefault(pStore, PREF_COMMENT, DEF_COMMENT); PreferenceConverter.setDefault(pStore, PREF_HEADER, DEF_HEADER); PreferenceConverter.setDefault(pStore, PREF_LINK, DEF_LINK); PreferenceConverter.setDefault(pStore, PREF_CODE, DEF_CODE); PreferenceConverter.setDefault(pStore, PREF_CODE_BG, DEF_CODE_BG); } - - /** - * Creates the field editors. Field editors are abstractions of - * the common GUI blocks needed to manipulate various types - * of preferences. Each field editor knows how to save and - * restore itself. - */ - @Override - public void createFieldEditors() { - // Word wrap - BooleanFieldEditor fd = new BooleanFieldEditor(PREF_WORD_WRAP, - "Soft word wrapping \r\n" -+"Note: may cause line numbers and related \r\n" + - "functionality to act a bit strangely", - getFieldEditorParent()); - addField(fd); - // Task tags - fd = new BooleanFieldEditor(PREF_TASK_TAGS, - "Manage tasks using task tags \r\n" + - "If true, this will add and delete tags in sync with edits.", - getFieldEditorParent()); - addField(fd); - StringFieldEditor tags = new StringFieldEditor(PREF_TASK_TAGS_DEFINED, - "Task tags\nComma separated list of recognised task tags.", getFieldEditorParent()); - addField(tags); - // Code folding - fd = new BooleanFieldEditor(PREF_FOLDING, - "Document folding, a.k.a. outline support", - getFieldEditorParent()); - addField(fd); - // Command line -// addField(new DummyField() { -// protected void makeComponent(Composite parent) { -// Label label = new Label(parent, 0); -// label.setText("Hello!"); -// GridData gd = new GridData(100, 20); -// label.setLayoutData(gd); -// } -// }); - StringFieldEditor cmd = new StringFieldEditor(PREF_MARKDOWN_COMMAND, - "UNSTABLE: Command-line to run Markdown.\r\n" + - "This should take in a file and output to std-out.\n" + - "Leave blank to use the built-in Java converter.", getFieldEditorParent()); - addField(cmd); - - ColorFieldEditor def = new ColorFieldEditor(PREF_DEFUALT, "Default text", getFieldEditorParent()); - addField(def); - - ColorFieldEditor com = new ColorFieldEditor(PREF_COMMENT, "Comment", getFieldEditorParent()); - addField(com); - - ColorFieldEditor link = new ColorFieldEditor(PREF_LINK, "Link", getFieldEditorParent()); - addField(link); - - ColorFieldEditor head = new ColorFieldEditor(PREF_HEADER, "Header and List indicator", getFieldEditorParent()); - addField(head); - - ColorFieldEditor code = new ColorFieldEditor(PREF_CODE, "Code", getFieldEditorParent()); - addField(code); - - ColorFieldEditor codeBg = new ColorFieldEditor(PREF_CODE_BG, "Code Background", getFieldEditorParent()); - addField(codeBg); - - /* - * Fields for the preview window - */ - - // Github Syntax support - fd = new BooleanFieldEditor(PREF_GITHUB_SYNTAX, - "Support Github Syntax", - getFieldEditorParent()); - addField(fd); - - // Multi-Markdown support - fd = new BooleanFieldEditor(PREF_MULTIMARKDOWN_METADATA, - "Support Multi-Markdown Metadata", - getFieldEditorParent()); - addField(fd); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench) - */ - public void init(IWorkbench workbench) { - - } public static boolean wordWrap() { IPreferenceStore pStore = Activator.getDefault().getPreferenceStore(); - if (! pStore.contains(MarkdownPreferencePage.PREF_WORD_WRAP)) { + if (!pStore.contains(MarkdownPreferencePage.PREF_WORD_WRAP)) { return false; } - return pStore.getBoolean(MarkdownPreferencePage.PREF_WORD_WRAP); + return pStore.getBoolean(MarkdownPreferencePage.PREF_WORD_WRAP); } - -} -abstract class DummyField extends FieldEditor { - @Override - protected void adjustForNumColumns(int numColumns) { - // do nothing - } - @Override - protected void doFillIntoGrid(Composite parent, int numColumns) { - makeComponent(parent); - } - abstract protected void makeComponent(Composite parent); - - @Override - protected void doLoad() { - // - } - @Override - protected void doLoadDefault() { - // - } + // build list of builtin stylesheets + // key=name, value=bundle cache URL as string + private static String[][] builtins() { + Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID); + URL url = bundle.getEntry("resources/"); + File dir = null; + try { + url = FileLocator.toFileURL(url); // extracts to bundle cache + dir = new File(url.toURI()); + } catch (IOException | URISyntaxException e) { + String[][] values = new String[1][2]; + values[0][0] = ""; + values[0][1] = ""; + return values; + } + List cssNames = new ArrayList<>(); + if (dir.isDirectory()) { + for (String name : dir.list()) { + if (name.endsWith("." + CSS)) { + cssNames.add(name); + } + } + } - @Override - protected void doStore() { - // + String[][] values = new String[cssNames.size()][2]; + for (int idx = 0; idx < cssNames.size(); idx++) { + String cssName = cssNames.get(idx); + values[idx][0] = cssName; + try { + values[idx][1] = url.toURI().resolve(cssName).toString(); + } catch (URISyntaxException e) { + values[idx][0] = cssName + " "; + } + } + return values; } - @Override - public int getNumberOfControls() { - return 1; - } - -} \ No newline at end of file +} diff --git a/plugin/src/winterwell/markdown/preferences/Prefs.java b/plugin/src/winterwell/markdown/preferences/Prefs.java new file mode 100644 index 0000000..9f22344 --- /dev/null +++ b/plugin/src/winterwell/markdown/preferences/Prefs.java @@ -0,0 +1,31 @@ +package winterwell.markdown.preferences; + +public interface Prefs { + + // Preference store keys + public static final String PREF_FOLDING = "Pref_Folding"; + public static final String PREF_WORD_WRAP = "Pref_WordWrap"; + public static final String PREF_TASK_TAGS = "Pref_TaskTagsOn"; + public static final String PREF_TASK_TAGS_DEFINED = "Pref_TaskTags"; + public static final String PREF_SECTION_NUMBERS = "Pref_SectionNumbers"; + + public static final String PREF_MARKDOWN_COMMAND = "Pref_Markdown_Command"; + + public static final String PREF_DEFAULT = "Pref_Default"; + public static final String PREF_COMMENT = "Pref_Comment"; + public static final String PREF_HEADER = "Pref_Header"; + public static final String PREF_LINK = "Pref_Link"; + public static final String PREF_CODE = "Pref_Code"; + public static final String PREF_CODE_BG = "Pref_Code_Background"; + + public static final String PREF_GITHUB_SYNTAX = "Pref_Github_Syntax"; + public static final String PREF_MULTIMARKDOWN_METADATA = "Pref_MultiMarkdown_Metadata"; + + public static final String PREF_CSS_DEFAULT = "Pref_Markdown_Css"; + public static final String PREF_CSS_CUSTOM = ""; + + // Public preference related values + public static final String DEF_MDCSS = "markdown.css"; + public static final String CSS = "css"; + +} diff --git a/plugin/src/winterwell/markdown/views/MarkdownPreview.java b/plugin/src/winterwell/markdown/views/MarkdownPreview.java index 4fc2856..061ea78 100755 --- a/plugin/src/winterwell/markdown/views/MarkdownPreview.java +++ b/plugin/src/winterwell/markdown/views/MarkdownPreview.java @@ -1,6 +1,9 @@ package winterwell.markdown.views; +import java.io.File; import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URI; import java.net.URISyntaxException; import java.net.URL; @@ -12,8 +15,13 @@ import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Platform; +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.util.IPropertyChangeListener; +import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.swt.SWT; import org.eclipse.swt.browser.Browser; +import org.eclipse.swt.browser.ProgressAdapter; +import org.eclipse.swt.browser.ProgressEvent; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IPathEditorInput; @@ -24,11 +32,19 @@ import winterwell.markdown.editors.ActionBarContributor; import winterwell.markdown.editors.MarkdownEditor; import winterwell.markdown.pagemodel.MarkdownPage; +import winterwell.markdown.preferences.Prefs; -public class MarkdownPreview extends ViewPart { +public class MarkdownPreview extends ViewPart implements Prefs { + + // script to return the current top scroll position of the browser widget + private static final String GETSCROLLTOP = "function getScrollTop() { " //$NON-NLS-1$ + + " if(typeof pageYOffset!='undefined') return pageYOffset;" //$NON-NLS-1$ + + " else{" //$NON-NLS-1$ + + "var B=document.body;" //$NON-NLS-1$ + + "var D=document.documentElement;" //$NON-NLS-1$ + + "D=(D.clientHeight)?D:B;return D.scrollTop;}" //$NON-NLS-1$ + + "}; return getScrollTop();"; //$NON-NLS-1$ - private static final String MDCSS = "markdown.css"; - private static final String CSS = "css"; private static final String EOL = System.getProperty("line.separator"); private static final IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); @@ -36,12 +52,30 @@ public class MarkdownPreview extends ViewPart { public static MarkdownPreview preview = null; private Browser viewer = null; + private StyleListener styleListener; + + public class StyleListener implements IPropertyChangeListener { + + @Override + public void propertyChange(PropertyChangeEvent event) { + switch (event.getProperty()) { + case PREF_CSS_CUSTOM: + case PREF_CSS_DEFAULT: + String value = (String) event.getNewValue(); + if (value != null && !value.isEmpty()) { + update(); + } + } + } + } /** * The constructor. */ public MarkdownPreview() { preview = this; + styleListener = new StyleListener(); + Activator.getDefault().getPreferenceStore().addPropertyChangeListener(styleListener); } /** @@ -49,25 +83,25 @@ public MarkdownPreview() { */ @Override public void createPartControl(Composite parent) { - viewer = new Browser(parent, SWT.MULTI); // | SWT.H_SCROLL | SWT.V_SCROLL + viewer = new Browser(parent, SWT.MULTI); } - /** - * Passing the focus request to the viewer's control. - */ - @Override - public void setFocus() { - if (viewer == null) { - return; - } - viewer.setFocus(); - update(); - } + // Notes for future enhancement: + // + // StyledText text = ed.getViewer().getTextWidget(); + // float offset = text.getCaretOffset(); + // float size = text.getCharCount(); + // float center = offset/size; + // + // var scrollTop = window.scrollTop(); + // var docHeight = document.height(); + // var winHeight = window.height(); + // var scrollPercent = (scrollTop) / (docHeight - winHeight); + // var scrollPercentRounded = Math.round(scrollPercent * 100) / 100; public void update() { - if (viewer == null) { - return; - } + if (viewer == null) return; + try { IEditorPart editor = ActionBarContributor.getActiveEditor(); if (!(editor instanceof MarkdownEditor)) { @@ -75,6 +109,9 @@ public void update() { return; } + Object result = viewer.evaluate(GETSCROLLTOP); + final int scrollTop = result != null ? ((Number) result).intValue() : 0; + String html = ""; MarkdownEditor ed = (MarkdownEditor) editor; MarkdownPage page = ed.getMarkdownPage(); @@ -82,8 +119,19 @@ public void update() { html = page.html(); IPath path = getEditorInput(editor); html = addHeader(html, getBaseUrl(path), getMdStyles(path)); + + viewer.addProgressListener(new ProgressAdapter() { + + @Override + public void completed(ProgressEvent event) { + viewer.removeProgressListener(this); + viewer.execute(String.format("window.scrollTo(0,%d);", scrollTop)); //$NON-NLS-1$ + } + }); } + viewer.setText(html); + } catch (Exception ex) { System.out.println(ex); @@ -93,6 +141,23 @@ public void update() { } } + /** + * Passing the focus request to the viewer's control. + */ + @Override + public void setFocus() { + if (viewer == null) return; + viewer.setFocus(); + update(); + } + + @Override + public void dispose() { + Activator.getDefault().getPreferenceStore().removePropertyChangeListener(styleListener); + viewer = null; + super.dispose(); + } + private IPath getEditorInput(IEditorPart editor) { IPathEditorInput input = (IPathEditorInput) editor.getEditorInput(); return input.getPath(); @@ -102,23 +167,41 @@ private String getBaseUrl(IPath path) { return path.removeLastSegments(1).toFile().toURI().toString(); } - /* - * Look for a stylesheet file having the same name as the input file, beginning in the current - * directory, its parent directories, upto and including the current project directory. If not - * found, look for a file with the name 'markdown.css' in the same set of directories. If still - * not found, read 'markdown.css' from the bundle. - */ private String getMdStyles(IPath path) { + // 1) look for a file having the same name as the input file, beginning in the + // current directory, parent directories, and the current project directory. IPath styles = path.removeFileExtension().addFileExtension(CSS); String pathname = find(styles); if (pathname != null) return pathname; - styles = path.removeLastSegments(1).append(MDCSS); + // 2) look for a file with the name 'markdown.css' in the same set of directories + styles = path.removeLastSegments(1).append(DEF_MDCSS); pathname = find(styles); if (pathname != null) return pathname; + // 3) read the file identified by the pref key 'PREF_CSS_CUSTOM' from the filesystem + IPreferenceStore store = Activator.getDefault().getPreferenceStore(); + String customCss = store.getString(PREF_CSS_CUSTOM); + if (!customCss.isEmpty()) { + File file = new File(customCss); + if (file.isFile() && file.getName().endsWith("." + CSS)) { + return customCss; + } + } + + // 4) read the file identified by the pref key 'PREF_CSS_DEFAULT' from the bundle Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID); - URL url = FileLocator.find(bundle, new Path("resources/" + MDCSS), null); + String defaultCss = store.getString(PREF_CSS_DEFAULT); + if (!defaultCss.isEmpty()) { + try { + URI uri = new URL(defaultCss).toURI(); + File file = new File(uri); + if (file.isFile()) return file.getPath(); + } catch (MalformedURLException | URISyntaxException e1) {} + } + + // 5) read 'markdown.css' from the bundle + URL url = FileLocator.find(bundle, new Path("resources/" + DEF_MDCSS), null); try { url = FileLocator.toFileURL(url); return url.toURI().toString(); From 7f3e89506335812fd959f6fa59e6d55950f3e66d Mon Sep 17 00:00:00 2001 From: GRosenberg Date: Mon, 21 Nov 2016 23:29:40 -0800 Subject: [PATCH 03/20] Add Prefs selectable stylesheets. --- plugin/src/winterwell/markdown/views/MarkdownPreview.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/plugin/src/winterwell/markdown/views/MarkdownPreview.java b/plugin/src/winterwell/markdown/views/MarkdownPreview.java index 061ea78..8514559 100755 --- a/plugin/src/winterwell/markdown/views/MarkdownPreview.java +++ b/plugin/src/winterwell/markdown/views/MarkdownPreview.java @@ -2,7 +2,6 @@ import java.io.File; import java.io.IOException; -import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; @@ -194,10 +193,10 @@ private String getMdStyles(IPath path) { String defaultCss = store.getString(PREF_CSS_DEFAULT); if (!defaultCss.isEmpty()) { try { - URI uri = new URL(defaultCss).toURI(); + URI uri = new URI(defaultCss); File file = new File(uri); if (file.isFile()) return file.getPath(); - } catch (MalformedURLException | URISyntaxException e1) {} + } catch (URISyntaxException e) {} } // 5) read 'markdown.css' from the bundle From d922450dabfe300e445c5e6d89f33b0e6021f379 Mon Sep 17 00:00:00 2001 From: GRosenberg Date: Tue, 22 Nov 2016 13:58:03 -0800 Subject: [PATCH 04/20] Update poms. --- .project | 8 ++- feature/feature.xml | 16 +++++- feature/pom.xml | 6 +-- plugin/META-INF/MANIFEST.MF | 2 +- plugin/pom.xml | 59 ++++++++++++++++++--- pom.xml | 102 ++++++++++++------------------------ site/.project | 17 ++++++ site/pom.xml | 2 +- 8 files changed, 125 insertions(+), 87 deletions(-) create mode 100644 site/.project diff --git a/.project b/.project index cb56105..ad015f1 100644 --- a/.project +++ b/.project @@ -5,10 +5,8 @@ - - - - - + + org.eclipse.m2e.core.maven2Nature + diff --git a/feature/feature.xml b/feature/feature.xml index e8b26aa..3bc4b55 100644 --- a/feature/feature.xml +++ b/feature/feature.xml @@ -2,8 +2,8 @@ + version="1.3.0.qualifier" + provider-name="Winterwell Associates Ltd"> Support for editing the text-markup language Markdown. Also provides @@ -40,6 +40,18 @@ The Markdown syntax is copyright (c) 2004, John Gruber. It is used under a BSD-s + + + + + + + + + + + + com.winterwell.markdown markdown.editor.parent - 1.2.0-SNAPSHOT + 1.3.0-SNAPSHOT markdown.editor.feature eclipse-feature - Markdown Editor (feature) - Markdown Editor (feature) + Markdown Editor feature + Markdown Editor feature diff --git a/plugin/META-INF/MANIFEST.MF b/plugin/META-INF/MANIFEST.MF index 7881bd5..6e98c9c 100644 --- a/plugin/META-INF/MANIFEST.MF +++ b/plugin/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Markdown Bundle-SymbolicName: winterwell.markdown;singleton:=true -Bundle-Version: 1.2.0.qualifier +Bundle-Version: 1.3.0.qualifier Bundle-Activator: winterwell.markdown.Activator Bundle-Vendor: Winterwell Associates Ltd Require-Bundle: org.eclipse.ui, diff --git a/plugin/pom.xml b/plugin/pom.xml index cb4e888..3f1c376 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -1,18 +1,63 @@ - + 4.0.0 - + com.winterwell.markdown markdown.editor.parent - 1.2.0-SNAPSHOT + 1.3.0-SNAPSHOT - + winterwell.markdown eclipse-plugin - Markdown Editor (plugin) - Markdown Editor Plugin for Eclipse + Markdown Editor + Markdown Editor - + + + + org.markdownj + markdownj-core + 0.4 + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 2.8 + + + copy + process-resources + + copy + + + + + org.markdownj + markdownj-core + 0.4 + true + + + true + true + true + + + + + + + + + diff --git a/pom.xml b/pom.xml index 2696b8d..dd9414c 100644 --- a/pom.xml +++ b/pom.xml @@ -1,14 +1,17 @@ - + 4.0.0 com.winterwell.markdown markdown.editor.parent - 1.2.0-SNAPSHOT + 1.3.0-SNAPSHOT pom - Markdown Editor (parent) + + Markdown Editor + com.winterwell.markdown parent Winterwell Associates Ltd @@ -34,6 +37,12 @@ http://www.nodeclipse.org/ +8 + + Gerald Rosenberg + Certiv Analytics + http://www.certiv.net/ + -8 + @@ -41,20 +50,11 @@ - 0.18.1 - - UTF-8 UTF-8 - - + 0.26.0 - plugin feature @@ -62,20 +62,11 @@ - - - kepler + neon p2 - http://download.eclipse.org/releases/kepler + http://download.eclipse.org/releases/neon - @@ -83,52 +74,14 @@ org.eclipse.tycho tycho-maven-plugin - ${tycho-version} + ${tycho.version} true - - org.eclipse.tycho - tycho-compiler-plugin - ${tycho-version} - - 1.8 - 1.8 - - - - org.eclipse.tycho target-platform-configuration - ${tycho-version} + ${tycho.version} @@ -159,9 +112,22 @@ - + - + + + + org.eclipse.tycho + tycho-packaging-plugin + ${tycho.version} + + yyyyMMdd-HHmm + + + + + + diff --git a/site/.project b/site/.project new file mode 100644 index 0000000..3bc7981 --- /dev/null +++ b/site/.project @@ -0,0 +1,17 @@ + + + winterwell.markdown.site + + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + + diff --git a/site/pom.xml b/site/pom.xml index de1ab2a..dceb204 100644 --- a/site/pom.xml +++ b/site/pom.xml @@ -7,7 +7,7 @@ com.winterwell.markdown markdown.editor.parent - 1.2.0-SNAPSHOT + 1.3.0-SNAPSHOT markdown.editor.site From 7634680d75d2174d1d201e1588b75dfefb73bff0 Mon Sep 17 00:00:00 2001 From: GRosenberg Date: Tue, 22 Nov 2016 15:46:24 -0800 Subject: [PATCH 05/20] Fix error reporting to log. --- plugin/src/winterwell/markdown/Activator.java | 21 +----- plugin/src/winterwell/markdown/Log.java | 42 ++++++++++++ plugin/src/winterwell/markdown/LogUtil.java | 41 ------------ .../markdown/commands/OpenGfmView.java | 4 +- .../markdown/commands/OpenMdView.java | 4 +- .../markdown/editors/FormatAction.java | 3 +- .../editors/MarkdownContentOutlinePage.java | 5 +- .../markdown/editors/MarkdownEditor.java | 3 +- .../markdown/views/MarkdownPreview.java | 64 +++++++++++++------ site/pom.xml | 11 ++-- 10 files changed, 106 insertions(+), 92 deletions(-) create mode 100644 plugin/src/winterwell/markdown/Log.java delete mode 100644 plugin/src/winterwell/markdown/LogUtil.java diff --git a/plugin/src/winterwell/markdown/Activator.java b/plugin/src/winterwell/markdown/Activator.java index 3000144..262c424 100755 --- a/plugin/src/winterwell/markdown/Activator.java +++ b/plugin/src/winterwell/markdown/Activator.java @@ -15,34 +15,18 @@ public class Activator extends AbstractUIPlugin { // The shared instance private static Activator plugin; - + /** * The constructor */ - public Activator() { - } + public Activator() {} - /* - * (non-Javadoc) - * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) - */ public void start(BundleContext context) throws Exception { super.start(context); plugin = this; - doInstall(); MarkdownPreferencePage.setDefaultPreferences(getPreferenceStore()); } - // ?? Have this method called by start(), saving a reminder so it doesn't repeat itself?? - private void doInstall() { - // ??Try to make this the default for file types -- but is this possible?? - // c.f. http://stackoverflow.com/questions/15877123/eclipse-rcp-programmatically-associate-file-type-with-editor - } - - /* - * (non-Javadoc) - * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) - */ public void stop(BundleContext context) throws Exception { plugin = null; super.stop(context); @@ -56,5 +40,4 @@ public void stop(BundleContext context) throws Exception { public static Activator getDefault() { return plugin; } - } diff --git a/plugin/src/winterwell/markdown/Log.java b/plugin/src/winterwell/markdown/Log.java new file mode 100644 index 0000000..70c18b9 --- /dev/null +++ b/plugin/src/winterwell/markdown/Log.java @@ -0,0 +1,42 @@ +package winterwell.markdown; + +import org.eclipse.core.runtime.ILog; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; + +/** + * Nodeclipse Log Util + * + * @author Lamb Gao, Paul Verest + */ +public class Log { + + public static void info(String message) { + log(IStatus.INFO, IStatus.OK, message, null); + } + + public static void error(Throwable exception) { + error("Unexpected Exception", exception); + } + + public static void error(String message) { + error(message, null); + } + + public static void error(String message, Throwable exception) { + log(IStatus.ERROR, IStatus.ERROR, message, exception); + } + + public static void log(int severity, int code, String message, Throwable exception) { + log(createStatus(severity, code, message, exception)); + } + + public static IStatus createStatus(int severity, int code, String message, Throwable exception) { + return new Status(severity, Activator.PLUGIN_ID, code, message, exception); + } + + public static void log(IStatus status) { + ILog log = Activator.getDefault().getLog(); + log.log(status); + } +} diff --git a/plugin/src/winterwell/markdown/LogUtil.java b/plugin/src/winterwell/markdown/LogUtil.java deleted file mode 100644 index 384b951..0000000 --- a/plugin/src/winterwell/markdown/LogUtil.java +++ /dev/null @@ -1,41 +0,0 @@ -package winterwell.markdown; - -import org.eclipse.core.runtime.ILog; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; - -/** - * Nodeclipse Log Util - * @author Lamb Gao, Paul Verest - */ -public class LogUtil { - - public static void info(String message) { - log(IStatus.INFO, IStatus.OK, message, null); - } - - public static void error(Throwable exception) { - error("Unexpected Exception", exception); - } - - public static void error(String message) { - error(message, null); - } - - public static void error(String message, Throwable exception) { - log(IStatus.ERROR, IStatus.ERROR, message, exception); - } - - public static void log(int severity, int code, String message, Throwable exception) { - log(createStatus(severity, code, message, exception)); - } - - public static IStatus createStatus(int severity, int code, String message, Throwable exception) { - return new Status(severity, Activator.PLUGIN_ID, code, message, exception); - } - - public static void log(IStatus status) { - ILog log = Activator.getDefault().getLog(); - log.log(status); - } -} diff --git a/plugin/src/winterwell/markdown/commands/OpenGfmView.java b/plugin/src/winterwell/markdown/commands/OpenGfmView.java index 80dc8eb..fa20024 100644 --- a/plugin/src/winterwell/markdown/commands/OpenGfmView.java +++ b/plugin/src/winterwell/markdown/commands/OpenGfmView.java @@ -10,7 +10,7 @@ import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; -import winterwell.markdown.LogUtil; +import winterwell.markdown.Log; public class OpenGfmView extends AbstractHandler { @@ -35,7 +35,7 @@ private void showError(Exception e) { +"\nCheck Error Log View and continue at https://github.com/winterstein/Eclipse-Markdown-Editor-Plugin/issues/42" +"\n\nYou can also right-click file in Project Explorer" +"\n and select \"Show in GFM view\"."; - LogUtil.error(message, e); + Log.error(message, e); MessageDialog.openError(Display.getDefault().getActiveShell(), title , message); } } diff --git a/plugin/src/winterwell/markdown/commands/OpenMdView.java b/plugin/src/winterwell/markdown/commands/OpenMdView.java index f36d7bd..7b64db4 100644 --- a/plugin/src/winterwell/markdown/commands/OpenMdView.java +++ b/plugin/src/winterwell/markdown/commands/OpenMdView.java @@ -10,7 +10,7 @@ import org.eclipse.ui.PartInitException; import org.eclipse.ui.handlers.HandlerUtil; -import winterwell.markdown.LogUtil; +import winterwell.markdown.Log; public class OpenMdView extends AbstractHandler { @@ -33,7 +33,7 @@ private void showError(Exception e) { String title = "Exception while opening Markdown View"; String message = title+" (winterwell.markdown.views.MarkdownPreview)" +"\nCheck Error Log View"; - LogUtil.error(message, e); + Log.error(message, e); MessageDialog.openError(Display.getDefault().getActiveShell(), title , message); } } diff --git a/plugin/src/winterwell/markdown/editors/FormatAction.java b/plugin/src/winterwell/markdown/editors/FormatAction.java index cd16589..9cb49e3 100755 --- a/plugin/src/winterwell/markdown/editors/FormatAction.java +++ b/plugin/src/winterwell/markdown/editors/FormatAction.java @@ -14,6 +14,7 @@ import org.eclipse.jface.text.Region; import org.eclipse.jface.text.source.ISourceViewer; +import winterwell.markdown.Log; import winterwell.markdown.pagemodel.MarkdownFormatter; import winterwell.markdown.pagemodel.MarkdownPage; import winterwell.markdown.pagemodel.MarkdownPage.KLineType; @@ -65,7 +66,7 @@ public void run() { ed.getDocument().replace(pRegion.getOffset(), pRegion.getLength(), formatted); // Done } catch (Exception ex) { - System.out.println(ex); + Log.error(ex); } } diff --git a/plugin/src/winterwell/markdown/editors/MarkdownContentOutlinePage.java b/plugin/src/winterwell/markdown/editors/MarkdownContentOutlinePage.java index abaeaa6..bd6becc 100755 --- a/plugin/src/winterwell/markdown/editors/MarkdownContentOutlinePage.java +++ b/plugin/src/winterwell/markdown/editors/MarkdownContentOutlinePage.java @@ -38,6 +38,7 @@ import org.eclipse.ui.texteditor.IDocumentProvider; import org.eclipse.ui.views.contentoutline.ContentOutlinePage; +import winterwell.markdown.Log; import winterwell.markdown.pagemodel.MarkdownPage; import winterwell.markdown.pagemodel.MarkdownPage.Header; import winterwell.markdown.pagemodel.MarkdownPage.KLineType; @@ -494,8 +495,8 @@ public void selectionChanged(SelectionChangedEvent event) { length = end - start; } fTextEditor.setHighlightRange(start, length, true); - } catch (Exception x) { - System.out.println(x.getStackTrace()); + } catch (Exception e) { + Log.error(e); fTextEditor.resetHighlightRange(); } } diff --git a/plugin/src/winterwell/markdown/editors/MarkdownEditor.java b/plugin/src/winterwell/markdown/editors/MarkdownEditor.java index e455e59..f52b30e 100755 --- a/plugin/src/winterwell/markdown/editors/MarkdownEditor.java +++ b/plugin/src/winterwell/markdown/editors/MarkdownEditor.java @@ -40,6 +40,7 @@ import org.eclipse.ui.views.contentoutline.IContentOutlinePage; import winterwell.markdown.Activator; +import winterwell.markdown.Log; import winterwell.markdown.pagemodel.MarkdownPage; import winterwell.markdown.pagemodel.MarkdownPage.Header; import winterwell.markdown.preferences.MarkdownPreferencePage; @@ -410,7 +411,7 @@ private void updateSectionFoldingAnnotations2(IDocument doc, List

header updateSectionFoldingAnnotations2(doc, subHeaders, newAnnotations, end); } } catch (Exception ex) { - System.out.println(ex); + Log.error(ex); } } } diff --git a/plugin/src/winterwell/markdown/views/MarkdownPreview.java b/plugin/src/winterwell/markdown/views/MarkdownPreview.java index 8514559..36f3da7 100755 --- a/plugin/src/winterwell/markdown/views/MarkdownPreview.java +++ b/plugin/src/winterwell/markdown/views/MarkdownPreview.java @@ -2,9 +2,13 @@ import java.io.File; import java.io.IOException; +import java.io.PrintWriter; +import java.io.StringWriter; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; +import java.util.ArrayList; +import java.util.List; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IResource; @@ -12,8 +16,13 @@ import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.MultiStatus; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Platform; +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.dialogs.ErrorDialog; +import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; @@ -28,6 +37,7 @@ import org.osgi.framework.Bundle; import winterwell.markdown.Activator; +import winterwell.markdown.Log; import winterwell.markdown.editors.ActionBarContributor; import winterwell.markdown.editors.MarkdownEditor; import winterwell.markdown.pagemodel.MarkdownPage; @@ -85,19 +95,6 @@ public void createPartControl(Composite parent) { viewer = new Browser(parent, SWT.MULTI); } - // Notes for future enhancement: - // - // StyledText text = ed.getViewer().getTextWidget(); - // float offset = text.getCaretOffset(); - // float size = text.getCharCount(); - // float center = offset/size; - // - // var scrollTop = window.scrollTop(); - // var docHeight = document.height(); - // var winHeight = window.height(); - // var scrollPercent = (scrollTop) / (docHeight - winHeight); - // var scrollPercentRounded = Math.round(scrollPercent * 100) / 100; - public void update() { if (viewer == null) return; @@ -131,12 +128,18 @@ public void completed(ProgressEvent event) { viewer.setText(html); - } catch (Exception ex) { - System.out.println(ex); + } catch (Exception e) { + StringWriter errors = new StringWriter(); + e.printStackTrace(new PrintWriter(errors)); + Log.error(e.getLocalizedMessage() + EOL + errors.toString()); - if (viewer != null && !viewer.isDisposed()) { - viewer.setText(ex.getMessage()); + List lines = new ArrayList<>(); + for (StackTraceElement line : e.getStackTrace()) { + lines.add(new Status(IStatus.ERROR, Activator.PLUGIN_ID, line.toString())); } + MultiStatus status = new MultiStatus(Activator.PLUGIN_ID, IStatus.ERROR, + lines.toArray(new Status[lines.size()]), e.getLocalizedMessage(), e); + ErrorDialog.openError(null, "Viewer error", e.getMessage(), status); } } @@ -193,10 +196,20 @@ private String getMdStyles(IPath path) { String defaultCss = store.getString(PREF_CSS_DEFAULT); if (!defaultCss.isEmpty()) { try { + if (!defaultCss.startsWith("file:")) { + // apparently not absolute - at preference default + URL url = FileLocator.find(bundle, new Path("resources/" + defaultCss), null); + try { + url = FileLocator.toFileURL(url); + defaultCss = url.toURI().toString(); + } catch (IOException | URISyntaxException e) {} + } URI uri = new URI(defaultCss); File file = new File(uri); if (file.isFile()) return file.getPath(); - } catch (URISyntaxException e) {} + } catch (URISyntaxException e) { + MessageDialog.openInformation(null, "Default CSS from bundle", defaultCss); + } } // 5) read 'markdown.css' from the bundle @@ -205,7 +218,7 @@ private String getMdStyles(IPath path) { url = FileLocator.toFileURL(url); return url.toURI().toString(); } catch (IOException | URISyntaxException e) { - System.out.println(e); + Log.error(e); return null; } } @@ -234,4 +247,17 @@ private String addHeader(String html, String base, String style) { sb.append("" + EOL + html + EOL + ""); return sb.toString(); } + + // Notes for future enhancement: + // + // StyledText text = ed.getViewer().getTextWidget(); + // float offset = text.getCaretOffset(); + // float size = text.getCharCount(); + // float center = offset/size; + // + // var scrollTop = window.scrollTop(); + // var docHeight = document.height(); + // var winHeight = window.height(); + // var scrollPercent = (scrollTop) / (docHeight - winHeight); + // var scrollPercentRounded = Math.round(scrollPercent * 100) / 100; } diff --git a/site/pom.xml b/site/pom.xml index dceb204..605be36 100644 --- a/site/pom.xml +++ b/site/pom.xml @@ -1,7 +1,8 @@ + xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 4.0.0 @@ -12,8 +13,8 @@ markdown.editor.site eclipse-repository - - Markdown Editor (site) - Markdown Editor (site) - + + Markdown Editor site + Markdown Editor site + From 61f7b1b26fff7f80929daf09f67b31e6a9c5f8fc Mon Sep 17 00:00:00 2001 From: GRosenberg Date: Tue, 22 Nov 2016 16:49:27 -0800 Subject: [PATCH 06/20] Fix default preference value. --- .../preferences/MarkdownPreferencePage.java | 13 ++++++++++++- .../markdown/views/MarkdownPreview.java | 17 +++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/plugin/src/winterwell/markdown/preferences/MarkdownPreferencePage.java b/plugin/src/winterwell/markdown/preferences/MarkdownPreferencePage.java index c299821..f4bd438 100755 --- a/plugin/src/winterwell/markdown/preferences/MarkdownPreferencePage.java +++ b/plugin/src/winterwell/markdown/preferences/MarkdownPreferencePage.java @@ -8,6 +8,7 @@ import java.util.List; import org.eclipse.core.runtime.FileLocator; +import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Platform; import org.eclipse.jface.preference.BooleanFieldEditor; import org.eclipse.jface.preference.ColorFieldEditor; @@ -104,7 +105,7 @@ public static void setDefaultPreferences(IPreferenceStore pStore) { pStore.setDefault(PREF_MARKDOWN_COMMAND, MARKDOWNJ); pStore.setDefault(PREF_SECTION_NUMBERS, true); - pStore.setDefault(PREF_CSS_DEFAULT, DEF_MDCSS); + pStore.setDefault(PREF_CSS_DEFAULT, cssDefault()); pStore.setDefault(PREF_CSS_CUSTOM, ""); pStore.setDefault(PREF_GITHUB_SYNTAX, true); pStore.setDefault(PREF_MULTIMARKDOWN_METADATA, false); @@ -162,4 +163,14 @@ private static String[][] builtins() { return values; } + // get bundle cache URL for the default stylesheet + private static String cssDefault() { + Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID); + URL url = FileLocator.find(bundle, new Path("resources/" + DEF_MDCSS), null); + try { + url = FileLocator.toFileURL(url); + return url.toURI().toString(); + } catch (IOException | URISyntaxException e) {} + return DEF_MDCSS; // really an error + } } diff --git a/plugin/src/winterwell/markdown/views/MarkdownPreview.java b/plugin/src/winterwell/markdown/views/MarkdownPreview.java index 36f3da7..d066d6e 100755 --- a/plugin/src/winterwell/markdown/views/MarkdownPreview.java +++ b/plugin/src/winterwell/markdown/views/MarkdownPreview.java @@ -70,10 +70,7 @@ public void propertyChange(PropertyChangeEvent event) { switch (event.getProperty()) { case PREF_CSS_CUSTOM: case PREF_CSS_DEFAULT: - String value = (String) event.getNewValue(); - if (value != null && !value.isEmpty()) { - update(); - } + update(); } } } @@ -88,7 +85,7 @@ public MarkdownPreview() { } /** - * This is a callback that will allow us to create the viewer and initialize it. + * Callback to create and initialize the viewer. */ @Override public void createPartControl(Composite parent) { @@ -192,18 +189,9 @@ private String getMdStyles(IPath path) { } // 4) read the file identified by the pref key 'PREF_CSS_DEFAULT' from the bundle - Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID); String defaultCss = store.getString(PREF_CSS_DEFAULT); if (!defaultCss.isEmpty()) { try { - if (!defaultCss.startsWith("file:")) { - // apparently not absolute - at preference default - URL url = FileLocator.find(bundle, new Path("resources/" + defaultCss), null); - try { - url = FileLocator.toFileURL(url); - defaultCss = url.toURI().toString(); - } catch (IOException | URISyntaxException e) {} - } URI uri = new URI(defaultCss); File file = new File(uri); if (file.isFile()) return file.getPath(); @@ -213,6 +201,7 @@ private String getMdStyles(IPath path) { } // 5) read 'markdown.css' from the bundle + Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID); URL url = FileLocator.find(bundle, new Path("resources/" + DEF_MDCSS), null); try { url = FileLocator.toFileURL(url); From ef539317660e8e231a4bbccd8f5d83ecd3fe0b2e Mon Sep 17 00:00:00 2001 From: GRosenberg Date: Tue, 22 Nov 2016 16:57:16 -0800 Subject: [PATCH 07/20] Reduce tycho version for Travis Travis does not like 0.26!! --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index dd9414c..c74a73a 100644 --- a/pom.xml +++ b/pom.xml @@ -52,7 +52,7 @@ UTF-8 UTF-8 - 0.26.0 + 0.24.0 From ec9d0091412587135e869bfb98a5b3b291dee8a6 Mon Sep 17 00:00:00 2001 From: GRosenberg Date: Tue, 22 Nov 2016 17:52:00 -0800 Subject: [PATCH 08/20] Close viewer when editor closes --- README.md | 13 +++++++++++-- .../winterwell/markdown/editors/MarkdownEditor.java | 4 ++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ed55460..14e0c00 100644 --- a/README.md +++ b/README.md @@ -62,14 +62,23 @@ Increase version ### History -- 1.0 +- 1.0 Initial release - 1.1 (24 Feb 2014) by Telmo Brugnara @tbrugz #40 - - Rich color preferences #35 #37 + - Rich color preferences #35 #37 - 1.2 (Jan 2015) by Olivier Martin @oliviermartin #52 - Update preview when the file is saved #48 - MultiMarkdown metadata #49 - GitHub code blocks #50 - detecting links #51 - open GFM View from Markdown View #53 +- 1.3 (Nov 2016) by Gerald Rosenberg + - Update viewer to recognize stylesheets + - Add preference choice to select between + - a default stylesheet + - multiple builtin stylesheets + - stylesheets located on the platform filesystem + - Close viewer when editor closes + - Enabled updates to occur without changing the viewer vertical document position + - Updated to Java 1.8/Neon/Tycho 0.24 with-Eclipse logo diff --git a/plugin/src/winterwell/markdown/editors/MarkdownEditor.java b/plugin/src/winterwell/markdown/editors/MarkdownEditor.java index f52b30e..a96c20b 100755 --- a/plugin/src/winterwell/markdown/editors/MarkdownEditor.java +++ b/plugin/src/winterwell/markdown/editors/MarkdownEditor.java @@ -34,6 +34,7 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IPathEditorInput; +import org.eclipse.ui.PlatformUI; import org.eclipse.ui.editors.text.TextEditor; import org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants; import org.eclipse.ui.texteditor.IDocumentProvider; @@ -127,6 +128,9 @@ public void propertyChange(PropertyChangeEvent event) { } public void dispose() { + if (MarkdownPreview.preview != null) { + PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().hideView(MarkdownPreview.preview); + } if (pStore != null) { pStore.removePropertyChangeListener(prefChangeListener); } From 67d99135d8d78aaae247fde8dcdf0a8169ce1854 Mon Sep 17 00:00:00 2001 From: GRosenberg Date: Tue, 22 Nov 2016 18:03:41 -0800 Subject: [PATCH 09/20] Remove repositioning flicker on update --- plugin/src/winterwell/markdown/views/MarkdownPreview.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugin/src/winterwell/markdown/views/MarkdownPreview.java b/plugin/src/winterwell/markdown/views/MarkdownPreview.java index d066d6e..62ce611 100755 --- a/plugin/src/winterwell/markdown/views/MarkdownPreview.java +++ b/plugin/src/winterwell/markdown/views/MarkdownPreview.java @@ -119,10 +119,12 @@ public void update() { public void completed(ProgressEvent event) { viewer.removeProgressListener(this); viewer.execute(String.format("window.scrollTo(0,%d);", scrollTop)); //$NON-NLS-1$ + viewer.setRedraw(true); } }); } + viewer.setRedraw(false); viewer.setText(html); } catch (Exception e) { From 80b8169b314ff6b92d2c3e29dc8f46ecceb4d420 Mon Sep 17 00:00:00 2001 From: GRosenberg Date: Tue, 22 Nov 2016 20:21:56 -0800 Subject: [PATCH 10/20] Fix preferences init. Switch to using preference initializer extension point to ensure proper plugin lifecycle start up. --- plugin/icons/markdown.png | Bin 0 -> 577 bytes plugin/plugin.xml | 90 ++++++++---------- plugin/src/winterwell/markdown/Activator.java | 8 -- .../ActionBarContributor.java | 6 +- .../ExportHTML.java} | 7 +- .../FormatParagraph.java} | 83 ++++++++-------- ...{Preferences.java => OpenPreferences.java} | 2 +- .../PrintDocument.java} | 1 + .../markdown/editors/MarkdownEditor.java | 3 +- .../preferences/MarkdownPreferencePage.java | 71 +++----------- .../markdown/preferences/PrefsInit.java | 66 +++++++++++++ .../markdown/views/MarkdownPreview.java | 2 +- 12 files changed, 167 insertions(+), 172 deletions(-) create mode 100644 plugin/icons/markdown.png rename plugin/src/winterwell/markdown/{editors => commands}/ActionBarContributor.java (90%) rename plugin/src/winterwell/markdown/{editors/ExportHTMLAction.java => commands/ExportHTML.java} (84%) rename plugin/src/winterwell/markdown/{editors/FormatAction.java => commands/FormatParagraph.java} (76%) rename plugin/src/winterwell/markdown/commands/{Preferences.java => OpenPreferences.java} (92%) rename plugin/src/winterwell/markdown/{editors/PrintAction.java => commands/PrintDocument.java} (98%) create mode 100644 plugin/src/winterwell/markdown/preferences/PrefsInit.java diff --git a/plugin/icons/markdown.png b/plugin/icons/markdown.png new file mode 100644 index 0000000000000000000000000000000000000000..d8e7317f3caa6c60ef0857a982a9f0c31c7f7208 GIT binary patch literal 577 zcmV-H0>1r;P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;(#7eog=Y0kTO%K~y+Tjgv`E0znjpVaFY0D=gT^Sx`8I zn6P4}GRe>gf{bm0AP~3&-auBs9ngfRk)9yG^@?s8YGWmTx)=R@uj_1mAkeu$k|dsDsRRq#Ejlv^ zM0hLEG#x67X|7QyK8ONp7@b>$SuEHVB+K;5Qh2{5Z}!>Xonft0@&1$0#;V6V6g zhp~A7z^TWBP$o^654<$}-WGTEFcsMi}z zu;zkFr3$~_k8t>k3+D4VPTX!dolZm|5u`I&QNSh)rX_frOz`>jjc7EA3no~p8ph*S z1On&mT}3LL76p}Rl?zn%F@>Q0{H# z7Q_+>Q9$F#|AT+zCKeY3G@dkJG$eG-bXC-CY8aiFwoR1@zP^oF0*B)lK51>;)fi&7 P00000NkvXXu0mjfLlWvj literal 0 HcmV?d00001 diff --git a/plugin/plugin.xml b/plugin/plugin.xml index 8d043e7..b74a2ee 100755 --- a/plugin/plugin.xml +++ b/plugin/plugin.xml @@ -1,14 +1,31 @@ + + + + + + + + + + @@ -16,7 +33,7 @@ + style="push" + tooltip="Use Github-flavored Markdown "> + style="push" + tooltip="Open Preferences"> + icon="icons/markdown.png" + style="push" + tooltip="Open Markdown Viewer"> @@ -61,18 +81,24 @@ + defaultHandler="winterwell.markdown.commands.OpenPreferences" + id="winterwell.markdown.commands.Preferences" + name="Preferences"> + defaultHandler="winterwell.markdown.commands.OpenGfmView" + id="winterwell.markdown.commands.OpenGfmView" + name="Open GitHub Flavored Markdown View"> + + @@ -84,22 +110,10 @@ - - - - - - - - - - - - - - - - eoff+1 - && doc.getChar(eoff+1) =='\n') return "\r\n"; - return ""+c; + if (c == '\r' && doc.getLength() > eoff + 1 && doc.getChar(eoff + 1) == '\n') return "\r\n"; + return "" + c; } - private int lineEndOffset(int end, IDocument doc) - throws BadLocationException { + private int lineEndOffset(int end, IDocument doc) throws BadLocationException { int eoff = doc.getLineOffset(end) + doc.getLineInformation(end).getLength(); // Include line end char c = doc.getChar(eoff); - if (c=='\r' && doc.getLength() > eoff+1 - && doc.getChar(eoff+1) =='\n') eoff += 2; - else eoff += 1; + if (c == '\r' && doc.getLength() > eoff + 1 && doc.getChar(eoff + 1) == '\n') + eoff += 2; + else + eoff += 1; return eoff; } /** - * * @param page * @param lineNum * @param doc * @return region of paragraph containing this line, or null * @throws BadLocationException */ - private IRegion getParagraph(MarkdownPage page, int lineNum, IDocument doc) - throws BadLocationException { + private IRegion getParagraph(MarkdownPage page, int lineNum, IDocument doc) throws BadLocationException { // Get doc info List lines = page.getText(); List lineInfo = page.getLineTypes(); // Check we are in a paragraph or list KLineType pType = lineInfo.get(lineNum); - switch(pType) { - case NORMAL: break; - default: // Not in a paragraph, so we cannot format. - return null; + switch (pType) { + case NORMAL: + break; + default: // Not in a paragraph, so we cannot format. + return null; } // Work out the paragraph // Beginning int start; - for(start=lineNum; start>-1; start--) { + for (start = lineNum; start > -1; start--) { if (lineInfo.get(start) != pType) { start++; break; @@ -158,7 +153,7 @@ private IRegion getParagraph(MarkdownPage page, int lineNum, IDocument doc) } // End int end; - for(end=lineNum; end Date: Tue, 22 Nov 2016 22:29:08 -0800 Subject: [PATCH 11/20] Split and cleanup preference pages. Moved Markdown Editor to the top level category. --- plugin/plugin.xml | 16 +- .../markdown/commands/OpenPreferences.java | 2 +- .../markdown/editors/MDScanner.java | 16 +- .../markdown/editors/MarkdownEditor.java | 23 +- .../markdown/pagemodel/MarkdownPage.java | 1252 ++++++++--------- .../preferences/PrefPageColoring.java | 47 + .../markdown/preferences/PrefPageGeneral.java | 61 + ...referencePage.java => PrefPageStyles.java} | 74 +- pom.xml | 2 +- 9 files changed, 795 insertions(+), 698 deletions(-) create mode 100644 plugin/src/winterwell/markdown/preferences/PrefPageColoring.java create mode 100755 plugin/src/winterwell/markdown/preferences/PrefPageGeneral.java rename plugin/src/winterwell/markdown/preferences/{MarkdownPreferencePage.java => PrefPageStyles.java} (51%) mode change 100755 => 100644 diff --git a/plugin/plugin.xml b/plugin/plugin.xml index b74a2ee..97cf7a3 100755 --- a/plugin/plugin.xml +++ b/plugin/plugin.xml @@ -4,13 +4,25 @@ + + + + diff --git a/plugin/src/winterwell/markdown/commands/OpenPreferences.java b/plugin/src/winterwell/markdown/commands/OpenPreferences.java index f38dd28..c9fd574 100644 --- a/plugin/src/winterwell/markdown/commands/OpenPreferences.java +++ b/plugin/src/winterwell/markdown/commands/OpenPreferences.java @@ -13,7 +13,7 @@ public class OpenPreferences extends AbstractHandler { public Object execute(final ExecutionEvent event) throws ExecutionException { PreferenceDialog pref = PreferencesUtil.createPreferenceDialogOn( PlatformUI.getWorkbench().getDisplay().getActiveShell(), - "winterwell.markdown.preferences.MarkdownPreferencePage", null, null); + "winterwell.markdown.preferences.PrefPageGeneral", null, null); pref.open(); return null; } diff --git a/plugin/src/winterwell/markdown/editors/MDScanner.java b/plugin/src/winterwell/markdown/editors/MDScanner.java index 926f34f..6838ade 100755 --- a/plugin/src/winterwell/markdown/editors/MDScanner.java +++ b/plugin/src/winterwell/markdown/editors/MDScanner.java @@ -15,7 +15,7 @@ import org.eclipse.swt.SWT; import winterwell.markdown.Activator; -import winterwell.markdown.preferences.MarkdownPreferencePage; +import winterwell.markdown.preferences.PrefPageGeneral; /** * @@ -27,14 +27,14 @@ public class MDScanner extends RuleBasedScanner { public MDScanner(ColorManager cm) { this.cm = cm; IPreferenceStore pStore = Activator.getDefault().getPreferenceStore(); - Token heading = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_HEADER)), null, SWT.BOLD)); - Token comment = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_COMMENT)))); - Token emphasis = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_DEFAULT)), null, SWT.ITALIC)); - Token list = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_HEADER)), null, SWT.BOLD)); - Token link = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_LINK)), null, TextAttribute.UNDERLINE)); + Token heading = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, PrefPageGeneral.PREF_HEADER)), null, SWT.BOLD)); + Token comment = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, PrefPageGeneral.PREF_COMMENT)))); + Token emphasis = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, PrefPageGeneral.PREF_DEFAULT)), null, SWT.ITALIC)); + Token list = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, PrefPageGeneral.PREF_HEADER)), null, SWT.BOLD)); + Token link = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, PrefPageGeneral.PREF_LINK)), null, TextAttribute.UNDERLINE)); Token code = new Token(new TextAttribute( - cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_CODE)), - cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_CODE_BG)), + cm.getColor(PreferenceConverter.getColor(pStore, PrefPageGeneral.PREF_CODE)), + cm.getColor(PreferenceConverter.getColor(pStore, PrefPageGeneral.PREF_CODE_BG)), SWT.NORMAL)); setRules(new IRule[] { new LinkRule(link), diff --git a/plugin/src/winterwell/markdown/editors/MarkdownEditor.java b/plugin/src/winterwell/markdown/editors/MarkdownEditor.java index cb62a40..0b26feb 100755 --- a/plugin/src/winterwell/markdown/editors/MarkdownEditor.java +++ b/plugin/src/winterwell/markdown/editors/MarkdownEditor.java @@ -44,7 +44,8 @@ import winterwell.markdown.Log; import winterwell.markdown.pagemodel.MarkdownPage; import winterwell.markdown.pagemodel.MarkdownPage.Header; -import winterwell.markdown.preferences.MarkdownPreferencePage; +import winterwell.markdown.preferences.PrefPageGeneral; +import winterwell.markdown.preferences.Prefs; import winterwell.markdown.views.MarkdownPreview; /** @@ -113,19 +114,23 @@ protected ISourceViewer createSourceViewer(Composite parent, IVerticalRuler rule prefChangeListener = new IPropertyChangeListener() { public void propertyChange(PropertyChangeEvent event) { - if (event.getProperty().equals(MarkdownPreferencePage.PREF_WORD_WRAP)) { - widget.setWordWrap(MarkdownPreferencePage.wordWrap()); + if (event.getProperty().equals(PrefPageGeneral.PREF_WORD_WRAP)) { + widget.setWordWrap(isWordWrap()); } } }; pStore.addPropertyChangeListener(prefChangeListener); - // Switch on word-wrapping - if (MarkdownPreferencePage.wordWrap()) { - widget.setWordWrap(true); - } + + // initialize word-wrapping + widget.setWordWrap(isWordWrap()); + return viewer; } + private boolean isWordWrap() { + return getPreferenceStore().getBoolean(Prefs.PREF_WORD_WRAP); + } + public void dispose() { if (MarkdownPreview.preview != null) { PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().hideView(MarkdownPreview.preview); @@ -218,14 +223,14 @@ private void updateMarkdownPage() { void updateTaskTags(IRegion region) { try { - boolean useTags = pStore.getBoolean(MarkdownPreferencePage.PREF_TASK_TAGS); + boolean useTags = pStore.getBoolean(PrefPageGeneral.PREF_TASK_TAGS); if (!useTags) return; // Get task tags // IPreferenceStore peuistore = EditorsUI.getPreferenceStore(); //// IPreferenceStore pStore_jdt = // org.eclipse.jdt.core.compiler.getDefault().getPreferenceStore(); // String tagString = peuistore.getString("org.eclipse.jdt.core.compiler.taskTags"); - String tagString = pStore.getString(MarkdownPreferencePage.PREF_TASK_TAGS_DEFINED); + String tagString = pStore.getString(PrefPageGeneral.PREF_TASK_TAGS_DEFINED); List tags = Arrays.asList(tagString.split(",")); // Get resource for editor IFile docFile = getResource(this); diff --git a/plugin/src/winterwell/markdown/pagemodel/MarkdownPage.java b/plugin/src/winterwell/markdown/pagemodel/MarkdownPage.java index 7390452..c69c557 100755 --- a/plugin/src/winterwell/markdown/pagemodel/MarkdownPage.java +++ b/plugin/src/winterwell/markdown/pagemodel/MarkdownPage.java @@ -1,626 +1,626 @@ -/** - * Copyright winterwell Mathematics Ltd. - * @author Daniel Winterstein - * 11 Jan 2007 - */ -package winterwell.markdown.pagemodel; - -import java.io.File; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import org.eclipse.jface.preference.IPreferenceStore; - -import winterwell.markdown.Activator; -import winterwell.markdown.StringMethods; -import winterwell.markdown.preferences.MarkdownPreferencePage; -import winterwell.utils.FailureException; -import winterwell.utils.Process; -import winterwell.utils.StrUtils; -import winterwell.utils.Utils; -import winterwell.utils.io.FileUtils; - -import com.petebevin.markdown.MarkdownProcessor; - -/** - * Understands Markdown syntax. - * - * @author Daniel Winterstein - */ -public class MarkdownPage { - - /** - * Strip leading and trailing #s and whitespace - * - * @param line - * @return cleaned up line - */ - private String cleanHeader(String line) { - for (int j = 0; j < line.length(); j++) { - char c = line.charAt(j); - if (c != '#' && !Character.isWhitespace(c)) { - line = line.substring(j); - break; - } - } - for (int j = line.length() - 1; j > 0; j--) { - char c = line.charAt(j); - if (c != '#' && !Character.isWhitespace(c)) { - line = line.substring(0, j + 1); - break; - } - } - return line; - } - - /** - * Represents information about a section header. E.g. ## Misc Warblings - * - * @author daniel - */ - public class Header { - /** - * 1 = top-level (i.e. #), 2= 2nd-level (i.e. ##), etc. - */ - final int level; - /** - * The text of the Header - */ - final String heading; - /** - * Sub-sections, if any - */ - final List
subHeaders = new ArrayList
(); - /** - * The line on which this header occurs. - */ - final int lineNumber; - - public int getLineNumber() { - return lineNumber; - } - - /** - * - * @return the next section (at this depth if possible), null if none - */ - public Header getNext() { - if (parent == null) { - int ti = level1Headers.indexOf(this); - if (ti == -1 || ti == level1Headers.size() - 1) - return null; - return level1Headers.get(ti + 1); - } - int i = parent.subHeaders.indexOf(this); - assert i != -1 : this; - if (i == parent.subHeaders.size() - 1) - return parent.getNext(); - return parent.subHeaders.get(i + 1); - } - /** - * - * @return the next section (at this depth if possible), null if none - */ - public Header getPrevious() { - if (parent == null) { - int ti = level1Headers.indexOf(this); - if (ti == -1 || ti == 0) - return null; - return level1Headers.get(ti - 1); - } - int i = parent.subHeaders.indexOf(this); - assert i != -1 : this; - if (i == 0) - return parent.getPrevious(); - return parent.subHeaders.get(i - 1); - } - - - /** - * The parent section. Can be null. - */ - private Header parent; - - /** - * Create a marker for a section Header - * - * @param level - * 1 = top-level (i.e. #), 2= 2nd-level (i.e. ##), etc. - * @param lineNumber - * The line on which this header occurs - * @param heading - * The text of the Header, trimmed of #s - * @param currentHeader - * The previous Header. This is used to find the parent - * section if there is one. Can be null. - */ - Header(int level, int lineNumber, String heading, Header currentHeader) { - this.lineNumber = lineNumber; - this.level = level; - this.heading = cleanHeader(heading); - // Heading Tree - setParent(currentHeader); - } - - private void setParent(Header currentHeader) { - if (currentHeader == null) { - parent = null; - return; - } - if (currentHeader.level < level) { - parent = currentHeader; - parent.subHeaders.add(this); - return; - } - setParent(currentHeader.parent); - } - - public Header getParent() { - return parent; - } - - /** - * Sub-sections. May be zero-length, never null. - */ - public List
getSubHeaders() { - return subHeaders; - } - - @Override - public String toString() { - return heading; - } - - public int getLevel() { - return level; - } - } - - /** - * The raw text, broken up into individual lines. - */ - private List lines; - - /** - * The raw text, broken up into individual lines. - */ - public List getText() { - return Collections.unmodifiableList(lines); - } - - public enum KLineType { - NORMAL, H1, H2, H3, H4, H5, H6, BLANK, - // TODO LIST, BLOCKQUOTE, - /** A line marking Markdown info about the preceding line, e.g. ====== */ - MARKER, - /** A line containing meta-data, e.g. title: My Page */ - META - } - - /** - * Information about each line. - */ - private List lineTypes; - private Map pageObjects = new HashMap(); - - // TODO meta-data, footnotes, tables, link & image attributes - private static Pattern multiMarkdownTag = Pattern.compile("^([\\w].*):(.*)"); - private Map multiMarkdownTags = new HashMap(); - - // Regular expression for Github support - private static Pattern githubURLDetection = Pattern.compile("((https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|])"); - - /** - * The top-level headers. FIXME handle documents which have a 2nd level - * header before any 1st level ones - */ - private final List
level1Headers = new ArrayList
(); - private final IPreferenceStore pStore; - - /** - * Create a page. - * - * @param text - */ - public MarkdownPage(String text) { - pStore = Activator.getDefault().getPreferenceStore(); - setText(text); - } - - /** - * Reset the text for this page. - * - * @param text - */ - private void setText(String text) { - // Get lines - lines = StringMethods.splitLines(text); - // Clean out old - level1Headers.clear(); - lineTypes = new ArrayList(lines.size()); - pageObjects.clear(); - // Dummy level-1 header in case there are none - Header dummyTopHeader = new Header(1, 0, "", null); - level1Headers.add(dummyTopHeader); - Header currentHeader = dummyTopHeader; - // Identify line types - int lineNum = 0; - - // Check if we should support the Multi-Markdown Metadata - boolean multiMarkdownMetadataSupport = - pStore.getBoolean(MarkdownPreferencePage.PREF_MULTIMARKDOWN_METADATA); - - // Multi-markdown header - if (multiMarkdownMetadataSupport) { - // The key is the text before the colon, and the data is the text - // after the - // colon. In the above example, notice that there are two lines of - // information - // for the Author key. If you end a line with “space-space-newline”, - // the newline - // will be included when converted to other formats. - // - // There must not be any whitespace above the metadata, and the - // metadata block - // ends with the first whitespace only line. The metadata is - // stripped from the - // document before it is passed on to the syntax parser. - - // - // Check if the Metdatas are valid - // - boolean validMetadata = true; - for (lineNum = 0; lineNum < lines.size(); lineNum++) { - String line = lines.get(lineNum); - if (Utils.isBlank(line)) { - break; - } - Matcher m = multiMarkdownTag.matcher(line); - if (!m.find()) { - if (lineNum == 0) { - // No MultiMarkdown metadata - validMetadata = false; - break; - } else if (!line.matches("^\\s.*\n")) { - // The next line was not intended (ie. it does not start - // with a whitespace) - validMetadata = false; - break; - } - } - } - - // Valid Metadatas have been found. We need to retrieve these keys/values. - if (validMetadata) { - String data = ""; - String tag = ""; - for (lineNum = 0; lineNum < lines.size(); lineNum++) { - String line = lines.get(lineNum); - if (Utils.isBlank(line)) { - break; - } - Matcher m = multiMarkdownTag.matcher(line); - if (!m.find()) { - if (lineNum == 0) { - break; - } - // Multi-line tag - lineTypes.add(KLineType.META); - data += StrUtils.LINEEND + line.trim(); - multiMarkdownTags.put(tag, data); - } else { - lineTypes.add(KLineType.META); - tag = m.group(0); - data = m.group(1).trim(); - if (m.group(1).endsWith(line)) - multiMarkdownTags.put(tag, data); - } - } - } else { - lineNum = 0; - } - } - - boolean githubSyntaxSupport = - pStore.getBoolean(MarkdownPreferencePage.PREF_GITHUB_SYNTAX); - - boolean inCodeBlock = false; - - for (; lineNum < lines.size(); lineNum++) { - String line = lines.get(lineNum); - // Code blocks - if (githubSyntaxSupport && line.startsWith("```")) { - inCodeBlock = !inCodeBlock; - } - if (!inCodeBlock) { - // Headings - int h = numHash(line); - String hLine = line; - int hLineNum = lineNum; - int underline = -1; - if (lineNum != 0) { - underline = just(line, '=') ? 1 : just(line, '-') ? 2 : -1; - } - if (underline != -1) { - h = underline; - hLineNum = lineNum - 1; - hLine = lines.get(lineNum - 1); - lineTypes.set(hLineNum, KLineType.values()[h]); - lineTypes.add(KLineType.MARKER); - } - // Create a Header object - if (h > 0) { - if (underline == -1) - lineTypes.add(KLineType.values()[h]); - Header header = new Header(h, hLineNum, hLine, currentHeader); - if (h == 1) { - level1Headers.add(header); - } - pageObjects.put(hLineNum, header); - currentHeader = header; - continue; - } - } - // TODO List - // TODO Block quote - // Blank line - if (Utils.isBlank(line)) { - lineTypes.add(KLineType.BLANK); - continue; - } - // Normal - lineTypes.add(KLineType.NORMAL); - } // end line-loop - // Remove dummy header? - if (dummyTopHeader.getSubHeaders().size() == 0) { - level1Headers.remove(dummyTopHeader); - } - if (githubSyntaxSupport) { - /* - * Support Code block - */ - inCodeBlock = false; - for (lineNum = 0; lineNum < lines.size(); lineNum++) { - String line = lines.get(lineNum); - // Found the start or end of a code block - if (line.matches("^```.*\n")) { - // We reverse the boolean value - inCodeBlock = !inCodeBlock; - - // We force the line to be blank. But we mark it as normal - // to prevent to be stripped - lines.set(lineNum, "\n"); - lineTypes.set(lineNum, KLineType.NORMAL); - continue; - } - if (inCodeBlock) { - lines.set(lineNum, " " + line); - } - } - - /* - * Support for URL Detection - * We search for links that are not captured by Markdown syntax - */ - for (lineNum = 0; lineNum < lines.size(); lineNum++) { - String line = lines.get(lineNum); - // When a link has been replaced we need to scan again the string - // as the offsets have changed (we add '<' and '>' to the link to - // be interpreted by the markdown library) - boolean urlReplaced; - - do { - urlReplaced = false; - Matcher m = githubURLDetection.matcher(line); - while (m.find()) { - // Ignore the URL following the format - if ((m.start() - 1 >= 0) && (m.end() < line.length()) && - (line.charAt(m.start() - 1) == '<') && - (line.charAt(m.end()) == '>')) - { - continue; - } - - // Ignore the URL following the format [description](link) - if ((m.start() - 2 >= 0) && (m.end() < line.length()) && - (line.charAt(m.start() - 2) == ']') && - (line.charAt(m.start() - 1) == '(') && - (line.charAt(m.end()) == ')')) - { - continue; - } - - // Ignore the URL following the format [description](link "title") - if ((m.start() - 2 >= 0) && (m.end() + 1 < line.length()) && - (line.charAt(m.start() - 2) == ']') && - (line.charAt(m.start() - 1) == '(') && - (line.charAt(m.end()) == ' ') && - (line.charAt(m.end() + 1) == '"')) - { - continue; - } - - if (m.start() - 1 >= 0) { - // Case when the link is at the beginning of the string - line = line.substring(0, m.start()) + "<" + m.group(0) + ">" + line.substring(m.end()); - } else { - line = "<" + m.group(0) + ">" + line.substring(m.end()); - } - - // We replaced the string in the array - lines.set(lineNum, line); - urlReplaced = true; - break; - } - } while (urlReplaced); - } - } - } - - /** - * @param line - * @param c - * @return true if line is just cs (and whitespace at the start/end) - */ - boolean just(String line, char c) { - return line.matches("\\s*"+c+"+\\s*"); - } - - /** - * @param line - * @return The number of # symbols prepending the line. - */ - private int numHash(String line) { - for (int i = 0; i < line.length(); i++) { - if (line.charAt(i) != '#') - return i; - } - return line.length(); - } - - /** - * - * @param parent - * Can be null for top-level - * @return List of sub-headers. Never null. FIXME handle documents which - * have a 2nd level header before any 1st level ones - */ - public List
getHeadings(Header parent) { - if (parent == null) { - return Collections.unmodifiableList(level1Headers); - } - return Collections.unmodifiableList(parent.subHeaders); - } - - // public WebPage getWebPage() { - // WebPage page = new WebPage(); - // // Add the lines, one by one - // boolean inParagraph = false; - // for (int i=0; i"); - // line = cleanHeader(line); - // page.addText("<"+type+">"+line+""); - // continue; - // case MARKER: // Ignore - // continue; - // // TODO List? - // // TODO Block quote? - // } - // // Paragraph end? - // if (Utils.isBlank(line)) { - // if (inParagraph) page.addText("

"); - // continue; - // } - // // Paragraph start? - // if (!inParagraph) { - // page.addText("

"); - // inParagraph = true; - // } - // // Plain text - // page.addText(line); - // } - // return page; - // } - - /** - * Get the HTML for this page. Uses the MarkdownJ project. - */ - public String html() { - // Section numbers?? - boolean sectionNumbers = pStore - .getBoolean(MarkdownPreferencePage.PREF_SECTION_NUMBERS); - // Chop out multi-markdown header - StringBuilder sb = new StringBuilder(); - assert lines.size() == lineTypes.size(); - for (int i = 0, n = lines.size(); i < n; i++) { - KLineType type = lineTypes.get(i); - if (type == KLineType.META) - continue; - String line = lines.get(i); - if (sectionNumbers && isHeader(type) && line.contains("$section")) { - // TODO Header section = headers.get(i); - // String secNum = section.getSectionNumber(); - // line.replace("$section", secNum); - } - sb.append(line); - } - String text = sb.toString(); - // Use external converter? - final String cmd = pStore - .getString(MarkdownPreferencePage.PREF_MARKDOWN_COMMAND); - if (Utils.isBlank(cmd) - || (cmd.startsWith("(") && cmd.contains("MarkdownJ"))) { - // Use MarkdownJ - MarkdownProcessor markdown = new MarkdownProcessor(); - // MarkdownJ doesn't convert £s for some reason - text = text.replace("£", "£"); - String html = markdown.markdown(text); - return html; - } - // Attempt to run external command - try { - final File md = File.createTempFile("tmp", ".md"); - FileUtils.write(md, text); - Process process = new Process(cmd+" "+md.getAbsolutePath()); - process.run(); - int ok = process.waitFor(10000); - if (ok != 0) throw new FailureException(cmd+" failed:\n"+process.getError()); - String html = process.getOutput(); - FileUtils.delete(md); - return html; - } catch (Exception e) { - throw Utils.runtime(e); - } - } - - /** - * @param type - * @return - */ - private boolean isHeader(KLineType type) { - return type == KLineType.H1 || type == KLineType.H2 - || type == KLineType.H3 || type == KLineType.H4 - || type == KLineType.H5 || type == KLineType.H6; - } - - /** - * Return the raw text of this page. - */ - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - for (String line : lines) { - sb.append(line); - } - return sb.toString(); - } - - /** - * Line type information for the raw text. - * - * @return - */ - public List getLineTypes() { - return Collections.unmodifiableList(lineTypes); - } - - /** - * @param line - * @return - */ - public Object getPageObject(int line) { - return pageObjects.get(line); - } - -} +/** + * Copyright winterwell Mathematics Ltd. + * @author Daniel Winterstein + * 11 Jan 2007 + */ +package winterwell.markdown.pagemodel; + +import java.io.File; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.eclipse.jface.preference.IPreferenceStore; + +import winterwell.markdown.Activator; +import winterwell.markdown.StringMethods; +import winterwell.markdown.preferences.PrefPageGeneral; +import winterwell.utils.FailureException; +import winterwell.utils.Process; +import winterwell.utils.StrUtils; +import winterwell.utils.Utils; +import winterwell.utils.io.FileUtils; + +import com.petebevin.markdown.MarkdownProcessor; + +/** + * Understands Markdown syntax. + * + * @author Daniel Winterstein + */ +public class MarkdownPage { + + /** + * Strip leading and trailing #s and whitespace + * + * @param line + * @return cleaned up line + */ + private String cleanHeader(String line) { + for (int j = 0; j < line.length(); j++) { + char c = line.charAt(j); + if (c != '#' && !Character.isWhitespace(c)) { + line = line.substring(j); + break; + } + } + for (int j = line.length() - 1; j > 0; j--) { + char c = line.charAt(j); + if (c != '#' && !Character.isWhitespace(c)) { + line = line.substring(0, j + 1); + break; + } + } + return line; + } + + /** + * Represents information about a section header. E.g. ## Misc Warblings + * + * @author daniel + */ + public class Header { + /** + * 1 = top-level (i.e. #), 2= 2nd-level (i.e. ##), etc. + */ + final int level; + /** + * The text of the Header + */ + final String heading; + /** + * Sub-sections, if any + */ + final List

subHeaders = new ArrayList
(); + /** + * The line on which this header occurs. + */ + final int lineNumber; + + public int getLineNumber() { + return lineNumber; + } + + /** + * + * @return the next section (at this depth if possible), null if none + */ + public Header getNext() { + if (parent == null) { + int ti = level1Headers.indexOf(this); + if (ti == -1 || ti == level1Headers.size() - 1) + return null; + return level1Headers.get(ti + 1); + } + int i = parent.subHeaders.indexOf(this); + assert i != -1 : this; + if (i == parent.subHeaders.size() - 1) + return parent.getNext(); + return parent.subHeaders.get(i + 1); + } + /** + * + * @return the next section (at this depth if possible), null if none + */ + public Header getPrevious() { + if (parent == null) { + int ti = level1Headers.indexOf(this); + if (ti == -1 || ti == 0) + return null; + return level1Headers.get(ti - 1); + } + int i = parent.subHeaders.indexOf(this); + assert i != -1 : this; + if (i == 0) + return parent.getPrevious(); + return parent.subHeaders.get(i - 1); + } + + + /** + * The parent section. Can be null. + */ + private Header parent; + + /** + * Create a marker for a section Header + * + * @param level + * 1 = top-level (i.e. #), 2= 2nd-level (i.e. ##), etc. + * @param lineNumber + * The line on which this header occurs + * @param heading + * The text of the Header, trimmed of #s + * @param currentHeader + * The previous Header. This is used to find the parent + * section if there is one. Can be null. + */ + Header(int level, int lineNumber, String heading, Header currentHeader) { + this.lineNumber = lineNumber; + this.level = level; + this.heading = cleanHeader(heading); + // Heading Tree + setParent(currentHeader); + } + + private void setParent(Header currentHeader) { + if (currentHeader == null) { + parent = null; + return; + } + if (currentHeader.level < level) { + parent = currentHeader; + parent.subHeaders.add(this); + return; + } + setParent(currentHeader.parent); + } + + public Header getParent() { + return parent; + } + + /** + * Sub-sections. May be zero-length, never null. + */ + public List
getSubHeaders() { + return subHeaders; + } + + @Override + public String toString() { + return heading; + } + + public int getLevel() { + return level; + } + } + + /** + * The raw text, broken up into individual lines. + */ + private List lines; + + /** + * The raw text, broken up into individual lines. + */ + public List getText() { + return Collections.unmodifiableList(lines); + } + + public enum KLineType { + NORMAL, H1, H2, H3, H4, H5, H6, BLANK, + // TODO LIST, BLOCKQUOTE, + /** A line marking Markdown info about the preceding line, e.g. ====== */ + MARKER, + /** A line containing meta-data, e.g. title: My Page */ + META + } + + /** + * Information about each line. + */ + private List lineTypes; + private Map pageObjects = new HashMap(); + + // TODO meta-data, footnotes, tables, link & image attributes + private static Pattern multiMarkdownTag = Pattern.compile("^([\\w].*):(.*)"); + private Map multiMarkdownTags = new HashMap(); + + // Regular expression for Github support + private static Pattern githubURLDetection = Pattern.compile("((https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|])"); + + /** + * The top-level headers. FIXME handle documents which have a 2nd level + * header before any 1st level ones + */ + private final List
level1Headers = new ArrayList
(); + private final IPreferenceStore pStore; + + /** + * Create a page. + * + * @param text + */ + public MarkdownPage(String text) { + pStore = Activator.getDefault().getPreferenceStore(); + setText(text); + } + + /** + * Reset the text for this page. + * + * @param text + */ + private void setText(String text) { + // Get lines + lines = StringMethods.splitLines(text); + // Clean out old + level1Headers.clear(); + lineTypes = new ArrayList(lines.size()); + pageObjects.clear(); + // Dummy level-1 header in case there are none + Header dummyTopHeader = new Header(1, 0, "", null); + level1Headers.add(dummyTopHeader); + Header currentHeader = dummyTopHeader; + // Identify line types + int lineNum = 0; + + // Check if we should support the Multi-Markdown Metadata + boolean multiMarkdownMetadataSupport = + pStore.getBoolean(PrefPageGeneral.PREF_MULTIMARKDOWN_METADATA); + + // Multi-markdown header + if (multiMarkdownMetadataSupport) { + // The key is the text before the colon, and the data is the text + // after the + // colon. In the above example, notice that there are two lines of + // information + // for the Author key. If you end a line with “space-space-newline”, + // the newline + // will be included when converted to other formats. + // + // There must not be any whitespace above the metadata, and the + // metadata block + // ends with the first whitespace only line. The metadata is + // stripped from the + // document before it is passed on to the syntax parser. + + // + // Check if the Metdatas are valid + // + boolean validMetadata = true; + for (lineNum = 0; lineNum < lines.size(); lineNum++) { + String line = lines.get(lineNum); + if (Utils.isBlank(line)) { + break; + } + Matcher m = multiMarkdownTag.matcher(line); + if (!m.find()) { + if (lineNum == 0) { + // No MultiMarkdown metadata + validMetadata = false; + break; + } else if (!line.matches("^\\s.*\n")) { + // The next line was not intended (ie. it does not start + // with a whitespace) + validMetadata = false; + break; + } + } + } + + // Valid Metadatas have been found. We need to retrieve these keys/values. + if (validMetadata) { + String data = ""; + String tag = ""; + for (lineNum = 0; lineNum < lines.size(); lineNum++) { + String line = lines.get(lineNum); + if (Utils.isBlank(line)) { + break; + } + Matcher m = multiMarkdownTag.matcher(line); + if (!m.find()) { + if (lineNum == 0) { + break; + } + // Multi-line tag + lineTypes.add(KLineType.META); + data += StrUtils.LINEEND + line.trim(); + multiMarkdownTags.put(tag, data); + } else { + lineTypes.add(KLineType.META); + tag = m.group(0); + data = m.group(1).trim(); + if (m.group(1).endsWith(line)) + multiMarkdownTags.put(tag, data); + } + } + } else { + lineNum = 0; + } + } + + boolean githubSyntaxSupport = + pStore.getBoolean(PrefPageGeneral.PREF_GITHUB_SYNTAX); + + boolean inCodeBlock = false; + + for (; lineNum < lines.size(); lineNum++) { + String line = lines.get(lineNum); + // Code blocks + if (githubSyntaxSupport && line.startsWith("```")) { + inCodeBlock = !inCodeBlock; + } + if (!inCodeBlock) { + // Headings + int h = numHash(line); + String hLine = line; + int hLineNum = lineNum; + int underline = -1; + if (lineNum != 0) { + underline = just(line, '=') ? 1 : just(line, '-') ? 2 : -1; + } + if (underline != -1) { + h = underline; + hLineNum = lineNum - 1; + hLine = lines.get(lineNum - 1); + lineTypes.set(hLineNum, KLineType.values()[h]); + lineTypes.add(KLineType.MARKER); + } + // Create a Header object + if (h > 0) { + if (underline == -1) + lineTypes.add(KLineType.values()[h]); + Header header = new Header(h, hLineNum, hLine, currentHeader); + if (h == 1) { + level1Headers.add(header); + } + pageObjects.put(hLineNum, header); + currentHeader = header; + continue; + } + } + // TODO List + // TODO Block quote + // Blank line + if (Utils.isBlank(line)) { + lineTypes.add(KLineType.BLANK); + continue; + } + // Normal + lineTypes.add(KLineType.NORMAL); + } // end line-loop + // Remove dummy header? + if (dummyTopHeader.getSubHeaders().size() == 0) { + level1Headers.remove(dummyTopHeader); + } + if (githubSyntaxSupport) { + /* + * Support Code block + */ + inCodeBlock = false; + for (lineNum = 0; lineNum < lines.size(); lineNum++) { + String line = lines.get(lineNum); + // Found the start or end of a code block + if (line.matches("^```.*\n")) { + // We reverse the boolean value + inCodeBlock = !inCodeBlock; + + // We force the line to be blank. But we mark it as normal + // to prevent to be stripped + lines.set(lineNum, "\n"); + lineTypes.set(lineNum, KLineType.NORMAL); + continue; + } + if (inCodeBlock) { + lines.set(lineNum, " " + line); + } + } + + /* + * Support for URL Detection + * We search for links that are not captured by Markdown syntax + */ + for (lineNum = 0; lineNum < lines.size(); lineNum++) { + String line = lines.get(lineNum); + // When a link has been replaced we need to scan again the string + // as the offsets have changed (we add '<' and '>' to the link to + // be interpreted by the markdown library) + boolean urlReplaced; + + do { + urlReplaced = false; + Matcher m = githubURLDetection.matcher(line); + while (m.find()) { + // Ignore the URL following the format + if ((m.start() - 1 >= 0) && (m.end() < line.length()) && + (line.charAt(m.start() - 1) == '<') && + (line.charAt(m.end()) == '>')) + { + continue; + } + + // Ignore the URL following the format [description](link) + if ((m.start() - 2 >= 0) && (m.end() < line.length()) && + (line.charAt(m.start() - 2) == ']') && + (line.charAt(m.start() - 1) == '(') && + (line.charAt(m.end()) == ')')) + { + continue; + } + + // Ignore the URL following the format [description](link "title") + if ((m.start() - 2 >= 0) && (m.end() + 1 < line.length()) && + (line.charAt(m.start() - 2) == ']') && + (line.charAt(m.start() - 1) == '(') && + (line.charAt(m.end()) == ' ') && + (line.charAt(m.end() + 1) == '"')) + { + continue; + } + + if (m.start() - 1 >= 0) { + // Case when the link is at the beginning of the string + line = line.substring(0, m.start()) + "<" + m.group(0) + ">" + line.substring(m.end()); + } else { + line = "<" + m.group(0) + ">" + line.substring(m.end()); + } + + // We replaced the string in the array + lines.set(lineNum, line); + urlReplaced = true; + break; + } + } while (urlReplaced); + } + } + } + + /** + * @param line + * @param c + * @return true if line is just cs (and whitespace at the start/end) + */ + boolean just(String line, char c) { + return line.matches("\\s*"+c+"+\\s*"); + } + + /** + * @param line + * @return The number of # symbols prepending the line. + */ + private int numHash(String line) { + for (int i = 0; i < line.length(); i++) { + if (line.charAt(i) != '#') + return i; + } + return line.length(); + } + + /** + * + * @param parent + * Can be null for top-level + * @return List of sub-headers. Never null. FIXME handle documents which + * have a 2nd level header before any 1st level ones + */ + public List
getHeadings(Header parent) { + if (parent == null) { + return Collections.unmodifiableList(level1Headers); + } + return Collections.unmodifiableList(parent.subHeaders); + } + + // public WebPage getWebPage() { + // WebPage page = new WebPage(); + // // Add the lines, one by one + // boolean inParagraph = false; + // for (int i=0; i"); + // line = cleanHeader(line); + // page.addText("<"+type+">"+line+""); + // continue; + // case MARKER: // Ignore + // continue; + // // TODO List? + // // TODO Block quote? + // } + // // Paragraph end? + // if (Utils.isBlank(line)) { + // if (inParagraph) page.addText("

"); + // continue; + // } + // // Paragraph start? + // if (!inParagraph) { + // page.addText("

"); + // inParagraph = true; + // } + // // Plain text + // page.addText(line); + // } + // return page; + // } + + /** + * Get the HTML for this page. Uses the MarkdownJ project. + */ + public String html() { + // Section numbers?? + boolean sectionNumbers = pStore + .getBoolean(PrefPageGeneral.PREF_SECTION_NUMBERS); + // Chop out multi-markdown header + StringBuilder sb = new StringBuilder(); + assert lines.size() == lineTypes.size(); + for (int i = 0, n = lines.size(); i < n; i++) { + KLineType type = lineTypes.get(i); + if (type == KLineType.META) + continue; + String line = lines.get(i); + if (sectionNumbers && isHeader(type) && line.contains("$section")) { + // TODO Header section = headers.get(i); + // String secNum = section.getSectionNumber(); + // line.replace("$section", secNum); + } + sb.append(line); + } + String text = sb.toString(); + // Use external converter? + final String cmd = pStore + .getString(PrefPageGeneral.PREF_MARKDOWN_COMMAND); + if (Utils.isBlank(cmd) + || (cmd.startsWith("(") && cmd.contains("MarkdownJ"))) { + // Use MarkdownJ + MarkdownProcessor markdown = new MarkdownProcessor(); + // MarkdownJ doesn't convert £s for some reason + text = text.replace("£", "£"); + String html = markdown.markdown(text); + return html; + } + // Attempt to run external command + try { + final File md = File.createTempFile("tmp", ".md"); + FileUtils.write(md, text); + Process process = new Process(cmd+" "+md.getAbsolutePath()); + process.run(); + int ok = process.waitFor(10000); + if (ok != 0) throw new FailureException(cmd+" failed:\n"+process.getError()); + String html = process.getOutput(); + FileUtils.delete(md); + return html; + } catch (Exception e) { + throw Utils.runtime(e); + } + } + + /** + * @param type + * @return + */ + private boolean isHeader(KLineType type) { + return type == KLineType.H1 || type == KLineType.H2 + || type == KLineType.H3 || type == KLineType.H4 + || type == KLineType.H5 || type == KLineType.H6; + } + + /** + * Return the raw text of this page. + */ + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + for (String line : lines) { + sb.append(line); + } + return sb.toString(); + } + + /** + * Line type information for the raw text. + * + * @return + */ + public List getLineTypes() { + return Collections.unmodifiableList(lineTypes); + } + + /** + * @param line + * @return + */ + public Object getPageObject(int line) { + return pageObjects.get(line); + } + +} diff --git a/plugin/src/winterwell/markdown/preferences/PrefPageColoring.java b/plugin/src/winterwell/markdown/preferences/PrefPageColoring.java new file mode 100644 index 0000000..82b460c --- /dev/null +++ b/plugin/src/winterwell/markdown/preferences/PrefPageColoring.java @@ -0,0 +1,47 @@ +package winterwell.markdown.preferences; + +import org.eclipse.jface.layout.GridDataFactory; +import org.eclipse.jface.layout.GridLayoutFactory; +import org.eclipse.jface.preference.ColorFieldEditor; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Group; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; + +import winterwell.markdown.Activator; + +public class PrefPageColoring extends FieldEditorPreferencePage implements IWorkbenchPreferencePage, Prefs { + + public PrefPageColoring() { + super(GRID); + setDescription(""); + } + + public void init(IWorkbench workbench) { + setPreferenceStore(Activator.getDefault().getPreferenceStore()); + } + + /** Creates the field editors. */ + @Override + public void createFieldEditors() { + Composite parent = getFieldEditorParent(); + + Group frame = new Group(parent, SWT.NONE); + GridDataFactory.fillDefaults().indent(0, 6).grab(true, false).span(2, 1).applyTo(frame); + GridLayoutFactory.fillDefaults().margins(6, 6).applyTo(frame); + frame.setText("Highlight Elements"); + + Composite internal = new Composite(frame, SWT.NONE); + GridDataFactory.fillDefaults().indent(0, 4).grab(true, false).applyTo(internal); + GridLayoutFactory.fillDefaults().applyTo(internal); + + addField(new ColorFieldEditor(PREF_DEFAULT, "Default text", internal)); + addField(new ColorFieldEditor(PREF_COMMENT, "Comment", internal)); + addField(new ColorFieldEditor(PREF_LINK, "Link", internal)); + addField(new ColorFieldEditor(PREF_HEADER, "Header and List indicator", internal)); + addField(new ColorFieldEditor(PREF_CODE, "Code", internal)); + addField(new ColorFieldEditor(PREF_CODE_BG, "Code Background", internal)); + } +} diff --git a/plugin/src/winterwell/markdown/preferences/PrefPageGeneral.java b/plugin/src/winterwell/markdown/preferences/PrefPageGeneral.java new file mode 100755 index 0000000..899a7fd --- /dev/null +++ b/plugin/src/winterwell/markdown/preferences/PrefPageGeneral.java @@ -0,0 +1,61 @@ +package winterwell.markdown.preferences; + +import org.eclipse.jface.layout.GridDataFactory; +import org.eclipse.jface.layout.GridLayoutFactory; +import org.eclipse.jface.preference.BooleanFieldEditor; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.StringFieldEditor; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Group; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; + +import winterwell.markdown.Activator; + +public class PrefPageGeneral extends FieldEditorPreferencePage implements IWorkbenchPreferencePage, Prefs { + + public PrefPageGeneral() { + super(GRID); + setDescription(""); + } + + public void init(IWorkbench workbench) { + setPreferenceStore(Activator.getDefault().getPreferenceStore()); + } + + /** Create fields controlling general editor behavior */ + @Override + public void createFieldEditors() { + Composite parent = getFieldEditorParent(); + + Group frame = new Group(parent, SWT.NONE); + GridDataFactory.fillDefaults().indent(0, 6).grab(true, false).applyTo(frame); + GridLayoutFactory.fillDefaults().margins(6, 6).applyTo(frame); + frame.setText("General"); + + Composite internal = new Composite(frame, SWT.NONE); + GridDataFactory.fillDefaults().indent(0, 4).grab(true, false).applyTo(internal); + GridLayoutFactory.fillDefaults().applyTo(internal); + + // Word wrap + addField(new BooleanFieldEditor(PREF_WORD_WRAP, "Soft word wrapping", internal)); + + // Code folding + addField(new BooleanFieldEditor(PREF_FOLDING, "Document folding", internal)); + + // Task tags + addField(new BooleanFieldEditor(PREF_TASK_TAGS, "Manage tasks using task tags ", internal)); + new Label(internal, SWT.NONE).setText(" -- add and delete tags in sync with edits"); + new Label(internal, SWT.NONE); + + addField(new StringFieldEditor(PREF_TASK_TAGS_DEFINED, "Task tags", internal)); + + // External cli + addField(new StringFieldEditor(PREF_MARKDOWN_COMMAND, "External Markdown Run Command", internal)); + new Label(internal, SWT.NONE).setText(" -- UNSTABLE: blank to use builtin converter"); + new Label(internal, SWT.NONE); + + } +} diff --git a/plugin/src/winterwell/markdown/preferences/MarkdownPreferencePage.java b/plugin/src/winterwell/markdown/preferences/PrefPageStyles.java old mode 100755 new mode 100644 similarity index 51% rename from plugin/src/winterwell/markdown/preferences/MarkdownPreferencePage.java rename to plugin/src/winterwell/markdown/preferences/PrefPageStyles.java index 2eb33b4..861964a --- a/plugin/src/winterwell/markdown/preferences/MarkdownPreferencePage.java +++ b/plugin/src/winterwell/markdown/preferences/PrefPageStyles.java @@ -9,73 +9,55 @@ import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Platform; +import org.eclipse.jface.layout.GridDataFactory; +import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.jface.preference.BooleanFieldEditor; -import org.eclipse.jface.preference.ColorFieldEditor; import org.eclipse.jface.preference.ComboFieldEditor; import org.eclipse.jface.preference.FieldEditorPreferencePage; import org.eclipse.jface.preference.FileFieldEditor; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.preference.StringFieldEditor; +import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Group; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; import org.osgi.framework.Bundle; import winterwell.markdown.Activator; -public class MarkdownPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage, Prefs { +public class PrefPageStyles extends FieldEditorPreferencePage implements IWorkbenchPreferencePage, Prefs { - public MarkdownPreferencePage() { + public PrefPageStyles() { super(GRID); + setDescription(""); + } + + public void init(IWorkbench workbench) { setPreferenceStore(Activator.getDefault().getPreferenceStore()); - setDescription("Settings for the Markdown text editor. See also the general text editor preferences."); } /** Creates the field editors. */ @Override public void createFieldEditors() { - Composite parent = getFieldEditorParent(); - /* Fields for editor window */ - - // Word wrap - addField(new BooleanFieldEditor(PREF_WORD_WRAP, "Soft word wrapping \r\n" - + "Note: may cause line numbers and related \r\n" + "functionality to act a bit strangely", parent)); - - // Task tags - addField(new BooleanFieldEditor(PREF_TASK_TAGS, - "Manage tasks using task tags \r\n" + "If true, this will add and delete tags in sync with edits.", - parent)); - addField(new StringFieldEditor(PREF_TASK_TAGS_DEFINED, - "Task tags\nComma separated list of recognised task tags.", parent)); - - // Code folding - addField(new BooleanFieldEditor(PREF_FOLDING, "Document folding, a.k.a. outline support", parent)); - - addField(new StringFieldEditor(PREF_MARKDOWN_COMMAND, - "UNSTABLE: Command-line to run Markdown.\r\n" + "This should take in a file and output to std-out.\n" - + "Leave blank to use the built-in Java converter.", - parent)); - - addField(new ColorFieldEditor(PREF_DEFAULT, "Default text", parent)); - addField(new ColorFieldEditor(PREF_COMMENT, "Comment", parent)); - addField(new ColorFieldEditor(PREF_LINK, "Link", parent)); - addField(new ColorFieldEditor(PREF_HEADER, "Header and List indicator", parent)); - addField(new ColorFieldEditor(PREF_CODE, "Code", parent)); - addField(new ColorFieldEditor(PREF_CODE_BG, "Code Background", parent)); + Group frame = new Group(parent, SWT.NONE); + GridDataFactory.fillDefaults().indent(0, 6).grab(true, false).span(2, 1).applyTo(frame); + GridLayoutFactory.fillDefaults().numColumns(3).margins(6, 6).applyTo(frame); + frame.setText("Stylesheets"); - /* Fields for preview window */ - - // Browser CSS - addField(new ComboFieldEditor(PREF_CSS_DEFAULT, "Default Stylesheet", builtins(), parent)); - addField(new FileFieldEditor(PREF_CSS_CUSTOM, "Custom Stylesheet", parent)); + Composite internal = new Composite(frame, SWT.NONE); + GridDataFactory.fillDefaults().indent(0, 4).grab(true, false).applyTo(internal); + GridLayoutFactory.fillDefaults().numColumns(3).applyTo(internal); // Github Syntax support - addField(new BooleanFieldEditor(PREF_GITHUB_SYNTAX, "Support Github Syntax", parent)); + addField(new BooleanFieldEditor(PREF_GITHUB_SYNTAX, "Support Github Syntax", internal)); // Multi-Markdown support - addField(new BooleanFieldEditor(PREF_MULTIMARKDOWN_METADATA, "Support Multi-Markdown Metadata", parent)); + addField(new BooleanFieldEditor(PREF_MULTIMARKDOWN_METADATA, "Support Multi-Markdown Metadata", internal)); + + // Browser CSS + addField(new ComboFieldEditor(PREF_CSS_DEFAULT, "Default Stylesheet", builtins(), internal)); + addField(new FileFieldEditor(PREF_CSS_CUSTOM, "Custom Stylesheet", internal)); } // build list of builtin stylesheets @@ -114,14 +96,4 @@ private String[][] builtins() { } return values; } - - public void init(IWorkbench workbench) {} - - public static boolean wordWrap() { - IPreferenceStore pStore = Activator.getDefault().getPreferenceStore(); - if (!pStore.contains(PREF_WORD_WRAP)) { - return false; - } - return pStore.getBoolean(PREF_WORD_WRAP); - } } diff --git a/pom.xml b/pom.xml index c74a73a..f1fbecf 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ 1.3.0-SNAPSHOT pom - Markdown Editor + Markdown Editor parent com.winterwell.markdown parent From 4bf2f153b1ac4fa895aa6f38419cf3dc17d18956 Mon Sep 17 00:00:00 2001 From: GRosenberg Date: Wed, 23 Nov 2016 16:00:18 -0800 Subject: [PATCH 12/20] Update to current MarkdownJ jar. Removed all static jars. --- plugin/.classpath | 7 +- plugin/.gitignore | 1 + plugin/META-INF/MANIFEST.MF | 22 +- plugin/build.properties | 3 +- plugin/lib/markdownj-core.jar | Bin 0 -> 35877 bytes plugin/pom.xml | 2 + .../winterwell/markdown/StringMethods.java | 4 +- .../markdown/commands/ExportHTML.java | 6 +- .../markdown/commands/FormatParagraph.java | 4 +- .../markdown/editors/MDTextHover.java | 58 +- .../editors/MarkdownContentOutlinePage.java | 16 +- .../markdown/pagemodel/MarkdownFormatter.java | 647 ++++---- .../markdown/pagemodel/MarkdownPage.java | 185 +-- .../markdown/pagemodel/MarkdownPageTest.java | 12 +- .../winterwell/markdown/util/ArraySet.java | 81 + .../winterwell/markdown/util/Environment.java | 114 ++ .../markdown/util/FailureException.java | 55 + .../winterwell/markdown/util/FileUtils.java | 1373 +++++++++++++++++ .../winterwell/markdown/util/IProperties.java | 16 + .../winterwell/markdown/util/IReplace.java | 8 + .../winterwell/markdown/util/IntRange.java | 36 + plugin/src/winterwell/markdown/util/Key.java | 70 + .../src/winterwell/markdown/util/Mutable.java | 72 + plugin/src/winterwell/markdown/util/Pair.java | 60 + .../src/winterwell/markdown/util/Printer.java | 298 ++++ .../src/winterwell/markdown/util/Process.java | 196 +++ .../winterwell/markdown/util/StackKey.java | 8 + .../markdown/util/StreamGobbler.java | 74 + .../src/winterwell/markdown/util/Strings.java | 759 +++++++++ .../src/winterwell/markdown/util/TimeOut.java | 36 + .../markdownj-1.0.2b4-0.3.0.jar | Bin .../net.sf.paperclips_1.0.1.jar | Bin plugin/{lib => utils}/winterwell.utils.jar | Bin 33 files changed, 3690 insertions(+), 533 deletions(-) create mode 100644 plugin/.gitignore create mode 100644 plugin/lib/markdownj-core.jar create mode 100644 plugin/src/winterwell/markdown/util/ArraySet.java create mode 100644 plugin/src/winterwell/markdown/util/Environment.java create mode 100644 plugin/src/winterwell/markdown/util/FailureException.java create mode 100644 plugin/src/winterwell/markdown/util/FileUtils.java create mode 100644 plugin/src/winterwell/markdown/util/IProperties.java create mode 100644 plugin/src/winterwell/markdown/util/IReplace.java create mode 100644 plugin/src/winterwell/markdown/util/IntRange.java create mode 100644 plugin/src/winterwell/markdown/util/Key.java create mode 100644 plugin/src/winterwell/markdown/util/Mutable.java create mode 100644 plugin/src/winterwell/markdown/util/Pair.java create mode 100644 plugin/src/winterwell/markdown/util/Printer.java create mode 100644 plugin/src/winterwell/markdown/util/Process.java create mode 100644 plugin/src/winterwell/markdown/util/StackKey.java create mode 100644 plugin/src/winterwell/markdown/util/StreamGobbler.java create mode 100644 plugin/src/winterwell/markdown/util/Strings.java create mode 100644 plugin/src/winterwell/markdown/util/TimeOut.java rename plugin/{lib => utils}/markdownj-1.0.2b4-0.3.0.jar (100%) rename plugin/{lib => utils}/net.sf.paperclips_1.0.1.jar (100%) rename plugin/{lib => utils}/winterwell.utils.jar (100%) diff --git a/plugin/.classpath b/plugin/.classpath index 9e71ee6..3e3732a 100644 --- a/plugin/.classpath +++ b/plugin/.classpath @@ -2,10 +2,7 @@ - - - - - + + diff --git a/plugin/.gitignore b/plugin/.gitignore new file mode 100644 index 0000000..d0fdd30 --- /dev/null +++ b/plugin/.gitignore @@ -0,0 +1 @@ +/utils/ diff --git a/plugin/META-INF/MANIFEST.MF b/plugin/META-INF/MANIFEST.MF index 6e98c9c..0130ce7 100644 --- a/plugin/META-INF/MANIFEST.MF +++ b/plugin/META-INF/MANIFEST.MF @@ -19,23 +19,5 @@ Bundle-ActivationPolicy: lazy Import-Package: org.eclipse.core.internal.resources, org.eclipse.jface.text, org.eclipse.ui.texteditor -Bundle-ClassPath: .,target/classes,lib/markdownj-1.0.2b4-0.3.0.jar, - lib/winterwell.utils.jar, - lib/net.sf.paperclips_1.0.1.jar -Export-Package: com.petebevin.markdown, - com.petebevin.markdown.test, - net.sf.paperclips, - net.sf.paperclips.decorator, - winterwell.markdown, - winterwell.markdown.editors, - winterwell.markdown.pagemodel, - winterwell.markdown.preferences, - winterwell.markdown.views, - winterwell.utils, - winterwell.utils.containers, - winterwell.utils.gui, - winterwell.utils.io, - winterwell.utils.reporting, - winterwell.utils.threads, - winterwell.utils.time, - winterwell.utils.web +Bundle-ClassPath: ., + lib/markdownj-core.jar diff --git a/plugin/build.properties b/plugin/build.properties index df1e3fc..9d4d432 100644 --- a/plugin/build.properties +++ b/plugin/build.properties @@ -5,7 +5,8 @@ bin.includes = META-INF/,\ icons/,\ .,\ lib/,\ - resources/ + resources/,\ + lib/markdownj-core.jar src.includes = pom.xml,\ icons/,\ lib/,\ diff --git a/plugin/lib/markdownj-core.jar b/plugin/lib/markdownj-core.jar new file mode 100644 index 0000000000000000000000000000000000000000..fcf983b11d4aeb82a4420f403051a9ee7d8ecb30 GIT binary patch literal 35877 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 Cg4pQ* literal 0 HcmV?d00001 diff --git a/plugin/pom.xml b/plugin/pom.xml index 3f1c376..e464e96 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -46,9 +46,11 @@ org.markdownj markdownj-core 0.4 + jar true + lib true true true diff --git a/plugin/src/winterwell/markdown/StringMethods.java b/plugin/src/winterwell/markdown/StringMethods.java index 27a49d6..a56952d 100755 --- a/plugin/src/winterwell/markdown/StringMethods.java +++ b/plugin/src/winterwell/markdown/StringMethods.java @@ -10,8 +10,8 @@ import java.util.ArrayList; import java.util.List; -import winterwell.utils.Mutable; -import winterwell.utils.containers.Pair; +import winterwell.markdown.util.Mutable; +import winterwell.markdown.util.Pair; /** * A collection of general-purpose String handling methods. diff --git a/plugin/src/winterwell/markdown/commands/ExportHTML.java b/plugin/src/winterwell/markdown/commands/ExportHTML.java index 055167f..91e1751 100755 --- a/plugin/src/winterwell/markdown/commands/ExportHTML.java +++ b/plugin/src/winterwell/markdown/commands/ExportHTML.java @@ -9,13 +9,14 @@ import org.eclipse.ui.IPathEditorInput; import winterwell.markdown.editors.MarkdownEditor; -import winterwell.utils.io.FileUtils; - +import winterwell.markdown.util.FileUtils; public class ExportHTML extends Action { + public ExportHTML() { super("Export to HTML"); } + @Override public void run() { IEditorPart ed = ActionBarContributor.getActiveEditor(); @@ -34,5 +35,4 @@ public void run() { FileUtils.write(file, html); } } - } diff --git a/plugin/src/winterwell/markdown/commands/FormatParagraph.java b/plugin/src/winterwell/markdown/commands/FormatParagraph.java index 38ea6a6..48aeb4c 100755 --- a/plugin/src/winterwell/markdown/commands/FormatParagraph.java +++ b/plugin/src/winterwell/markdown/commands/FormatParagraph.java @@ -19,7 +19,7 @@ import winterwell.markdown.pagemodel.MarkdownFormatter; import winterwell.markdown.pagemodel.MarkdownPage; import winterwell.markdown.pagemodel.MarkdownPage.KLineType; -import winterwell.utils.containers.IntRange; +import winterwell.markdown.util.IntRange; /** * TODO An action for formatting text (via hard wrapping, i.e. inserting returns). @@ -86,7 +86,7 @@ private void formatSelectedRegion(MarkdownEditor ed, ITextSelection s, int cols) continue; } String paragraph = ed.getDocument().get(para.getOffset(), para.getLength()); - // int lines = StrUtils.splitLines(paragraph).length; + // int lines = Strings.splitLines(paragraph).length; String formatted = MarkdownFormatter.format(paragraph, cols); // append formatted and move forward sb.append(formatted); diff --git a/plugin/src/winterwell/markdown/editors/MDTextHover.java b/plugin/src/winterwell/markdown/editors/MDTextHover.java index 04377a6..92f9940 100755 --- a/plugin/src/winterwell/markdown/editors/MDTextHover.java +++ b/plugin/src/winterwell/markdown/editors/MDTextHover.java @@ -10,32 +10,23 @@ import org.eclipse.jface.text.Region; import winterwell.markdown.StringMethods; -import winterwell.utils.containers.Pair; +import winterwell.markdown.util.Pair; /** - * - * * @author daniel */ -public class MDTextHover implements ITextHover //, ITextHoverExtension -{ +public class MDTextHover implements ITextHover { - /* (non-Javadoc) - * @see org.eclipse.jface.text.ITextHover#getHoverInfo(org.eclipse.jface.text.ITextViewer, org.eclipse.jface.text.IRegion) - */ public String getHoverInfo(ITextViewer textViewer, IRegion region) { try { IDocument doc = textViewer.getDocument(); String text = doc.get(region.getOffset(), region.getLength()); - return ""+text+""; + return "" + text + ""; } catch (Exception e) { return null; - } + } } - /* (non-Javadoc) - * @see org.eclipse.jface.text.ITextHover#getHoverRegion(org.eclipse.jface.text.ITextViewer, int) - */ public IRegion getHoverRegion(ITextViewer textViewer, int offset) { try { IDocument doc = textViewer.getDocument(); @@ -45,37 +36,36 @@ public IRegion getHoverRegion(ITextViewer textViewer, int offset) { String text = doc.get(lineOffset, lineLength); // Look for image tags Pair altRegion; - Pair urlRegion = - StringMethods.findEnclosingRegion(text, offset-lineOffset, '(', ')'); - if (urlRegion==null) { - altRegion = StringMethods.findEnclosingRegion(text, offset-lineOffset, '[', ']'); + Pair urlRegion = StringMethods.findEnclosingRegion(text, offset - lineOffset, '(', ')'); + if (urlRegion == null) { + altRegion = StringMethods.findEnclosingRegion(text, offset - lineOffset, '[', ']'); if (altRegion == null) return null; urlRegion = StringMethods.findEnclosingRegion(text, altRegion.second, '(', ')'); } else { - altRegion = StringMethods.findEnclosingRegion(text, urlRegion.first-1, '[', ']'); + altRegion = StringMethods.findEnclosingRegion(text, urlRegion.first - 1, '[', ']'); } - if (urlRegion==null || altRegion==null) return null; + if (urlRegion == null || altRegion == null) return null; // Is it an image link? - if (text.charAt(altRegion.first-1) != '!') return null; - Region r = new Region(urlRegion.first+1+lineOffset, urlRegion.second-urlRegion.first-2); + if (text.charAt(altRegion.first - 1) != '!') return null; + Region r = new Region(urlRegion.first + 1 + lineOffset, urlRegion.second - urlRegion.first - 2); return r; } catch (Exception ex) { return null; } } -// public IInformationControlCreator getHoverControlCreator() { -// return new IInformationControlCreator() { -// public IInformationControl createInformationControl(Shell parent) { -// int style= fIsFocusable ? SWT.V_SCROLL | SWT.H_SCROLL : SWT.NONE; -// -// if (BrowserInformationControl.isAvailable(parent)) { -// final int shellStyle= SWT.TOOL | (fIsFocusable ? SWT.RESIZE : SWT.NO_TRIM); -// return new BrowserInformationControl(parent, shellStyle, style, null); -// } -// return new DefaultInformationControl(parent, style, new HTMLTextPresenter()); -// } -// }; -// } + // public IInformationControlCreator getHoverControlCreator() { + // return new IInformationControlCreator() { + // public IInformationControl createInformationControl(Shell parent) { + // int style= fIsFocusable ? SWT.V_SCROLL | SWT.H_SCROLL : SWT.NONE; + // + // if (BrowserInformationControl.isAvailable(parent)) { + // final int shellStyle= SWT.TOOL | (fIsFocusable ? SWT.RESIZE : SWT.NO_TRIM); + // return new BrowserInformationControl(parent, shellStyle, style, null); + // } + // return new DefaultInformationControl(parent, style, new HTMLTextPresenter()); + // } + // }; + // } } diff --git a/plugin/src/winterwell/markdown/editors/MarkdownContentOutlinePage.java b/plugin/src/winterwell/markdown/editors/MarkdownContentOutlinePage.java index bd6becc..ee8bbcc 100755 --- a/plugin/src/winterwell/markdown/editors/MarkdownContentOutlinePage.java +++ b/plugin/src/winterwell/markdown/editors/MarkdownContentOutlinePage.java @@ -42,9 +42,7 @@ import winterwell.markdown.pagemodel.MarkdownPage; import winterwell.markdown.pagemodel.MarkdownPage.Header; import winterwell.markdown.pagemodel.MarkdownPage.KLineType; -import winterwell.utils.StrUtils; -import winterwell.utils.Utils; -import winterwell.utils.web.WebUtils; +import winterwell.markdown.util.Strings; /** * @author Daniel Winterstein @@ -189,11 +187,11 @@ public String getText(Object element) { String text; try { text = fTextEditor.getDocument().get(region.getOffset(), region.getLength()); - text = WebUtils.stripTags(text); + text = Strings.stripTags(text); text = text.replaceAll("#", "").trim(); assert text.startsWith(hText); text = text.substring(hText.length()); - int wc = StrUtils.wordCount(text); + int wc = Strings.wordCount(text); return hText + " (" + wc + ":" + text.length() + ")"; } catch (BadLocationException e) { return hText; @@ -247,7 +245,7 @@ public void run() { try { doMove(-1); } catch (BadLocationException e) { - throw Utils.runtime(e); + throw new RuntimeException(e); } } }; @@ -261,7 +259,7 @@ public void run() { try { doMove(1); } catch (BadLocationException e) { - throw Utils.runtime(e); + throw new RuntimeException(e); } } }; @@ -288,7 +286,7 @@ public void run() { try { doSyncToEditor(); } catch (BadLocationException e) { - throw Utils.runtime(e); + throw new RuntimeException(e); } } }; @@ -464,7 +462,7 @@ protected IRegion getRegion(Header header) { int length = ei.getOffset() + ei.getLength() - offset; return new Region(offset, length); } catch (BadLocationException ex) { - throw Utils.runtime(ex); + throw new RuntimeException(ex); } } diff --git a/plugin/src/winterwell/markdown/pagemodel/MarkdownFormatter.java b/plugin/src/winterwell/markdown/pagemodel/MarkdownFormatter.java index 4c38f19..4277a64 100755 --- a/plugin/src/winterwell/markdown/pagemodel/MarkdownFormatter.java +++ b/plugin/src/winterwell/markdown/pagemodel/MarkdownFormatter.java @@ -1,351 +1,316 @@ - package winterwell.markdown.pagemodel; import java.util.List; -import winterwell.utils.StrUtils; +import winterwell.markdown.util.Strings; /** - * Formats a string that is compatible with the Markdown syntax. - * Strings must not include headers. + * Formats a string that is compatible with the Markdown syntax. Strings must not include headers. * * @author Howard Abrams */ -public class MarkdownFormatter -{ - // Expect everyone to simply use the public static methods... - private MarkdownFormatter () - { - } - - /** - * Formats a collection of lines to a particular width and honors typical - * Markdown syntax and formatting. - * - * The method assumes that if the first line ends with a line - * termination character, all the other lines will as well. - * - * @param lines A list of strings that should be formatted and wrapped. - * @param lineWidth The width of the page - * @return A string containing each - */ - public static String format (List lines, int lineWidth) - { - if (lines == null) - return null; // Should we return an empty string? - - final String lineEndings; - if ( lines.get(0).endsWith ("\r\n") ) - lineEndings = "\r\n"; - else if ( lines.get(0).endsWith ("\r") ) - lineEndings = "\r"; - else - lineEndings = StrUtils.LINEEND; - - final StringBuilder buf = new StringBuilder(); - for (String line : lines) { - buf.append (line); - buf.append (' '); // We can add extra spaces with impunity, and this - // makes sure our lines don't run together. - } - return format ( buf.toString(), lineWidth, lineEndings ); - } - - - /** - * Formats a string of text. The formatting does line wrapping at the - * lineWidth boundary, but it also honors the formatting - * of initial paragraph lines, allowing indentation of the entire - * paragraph. - * - * @param text The line of text to format - * @param lineWidth The width of the lines - * @return A string containing the formatted text. - */ - public static String format ( final String text, final int lineWidth) - { - return format(text, lineWidth, StrUtils.LINEEND); - } - - /** - * Formats a string of text. The formatting does line wrapping at the - * lineWidth boundary, but it also honors the formatting - * of initial paragraph lines, allowing indentation of the entire - * paragraph. - * - * @param text The line of text to format - * @param lineWidth The width of the lines - * @param lineEnding The line ending that overrides the default System value - * @return A string containing the formatted text. - */ - public static String format (final String text, final int lineWidth, final String lineEnding) - { - return new String( format(text.toCharArray (), lineWidth, lineEnding)); - } - - /** - * The available cursor position states as it sits in the buffer. - */ - private enum StatePosition { - /** The beginning of a paragraph ... the start of the buffer */ - BEGIN_FIRST_LINE, - - /** The beginning of the next line, which may be completely ignored. */ - BEGIN_OTHER_LINE, - - /** The beginning of a new line that will not be ignored, but appended. */ - BEGIN_NEW_LINE, - - /** The middle of a line. */ - MIDDLE_OF_LINE - } - - /** - * The method that does the work of formatting a string of text. The text, - * however, is a character array, which is more efficient to work with. - * - * TODO: Should we make the format(char[]) method public? - * - * @param text The line of text to format - * @param lineWidth The width of the lines - * @param lineEnding The line ending that overrides the default System value - * @return A string containing the formatted text. - */ - static char[] format ( final char[] text, final int lineWidth, final String lineEnding ) - { - final StringBuilder word = new StringBuilder(); - final StringBuilder indent = new StringBuilder(); - final StringBuilder buffer = new StringBuilder(text.length + 10); - - StatePosition state = StatePosition.BEGIN_FIRST_LINE; - int lineLength = 0; - - // There are times when we will run across a character(s) that will - // cause us to stop doing word wrap until we get to the - // "end of non-wordwrap" character(s). - // - // If this string is set to null, it tells us to "do" word-wrapping. - char endWordwrap1 = 0; - char endWordwrap2 = 0; - - // We loop one character past the end of the loop, and when we get to - // this position, we assign 'c' to be 0 ... as a marker for the end of - // the string... - - for (int i = 0; i <= text.length; i++) - { - final char c; - if (i < text.length) - c = text[i]; - else - c = 0; - - final char nextChar; - if (i+1 < text.length) - nextChar = text[i+1]; - else - nextChar = 0; - - // Are we actually word-wrapping? - if (endWordwrap1 != 0) { - // Did we get the ending sequence of the non-word-wrap? - if ( ( endWordwrap2 == 0 && c == endWordwrap1 ) || - ( c == endWordwrap1 && nextChar == endWordwrap2 ) ) - endWordwrap1 = 0; - buffer.append (c); - lineLength++; - - if (endWordwrap1 == 0 && endWordwrap2 != 0) { - buffer.append (nextChar); - lineLength++; - i++; - } - continue; - } - - // Check to see if we got one of our special non-word-wrapping - // character sequences ... - - if ( c == '[' ) { // [Hyperlink] - endWordwrap1 = ']'; - } - else if ( c == '*' && nextChar == '*' ) { // **Bold** - endWordwrap1 = '*'; - endWordwrap2 = '*'; - } // *Italics* - else if ( c == '*' && state == StatePosition.MIDDLE_OF_LINE ) { - endWordwrap1 = '*'; - } - else if ( c == '`' ) { // `code` - endWordwrap1 = '`'; - } - else if ( c == '(' && nextChar == '(' ) { // ((Footnote)) - endWordwrap1 = ')'; - endWordwrap2 = ')'; - } - else if ( c == '!' && nextChar == '[' ) { // ![Image] - endWordwrap1 = ')'; - } - - // We are no longer doing word-wrapping, so tidy the situation up... - if (endWordwrap1 != 0) { - if (word.length() > 0) - lineLength = addWordToBuffer (lineWidth, lineEnding, word, indent, buffer, lineLength); - else if (buffer.length() > 0 && buffer.charAt (buffer.length()-1) != ']' ) - buffer.append(' '); - // We are adding an extra space for most situations, unless we get a - // [link][ref] where we want them to be together without a space. - - buffer.append (c); - lineLength++; - continue; - } - - // Normal word-wrapping processing continues ... - - if (state == StatePosition.BEGIN_FIRST_LINE) - { - if ( c == '\n' || c == '\r' ) { // Keep, but ignore initial line feeds - buffer.append (c); - lineLength = 0; - continue; - } - - if (Character.isWhitespace (c)) - indent.append (c); - else if ( (c == '*' || c == '-' || c == '.' ) && - Character.isWhitespace (nextChar) ) - indent.append (' '); - else if ( Character.isDigit (c) && nextChar == '.' && - Character.isWhitespace (text[i+2])) - indent.append (' '); - else if ( c == '>' ) - indent.append ('>'); - else - state = StatePosition.MIDDLE_OF_LINE; - - // If we are still in the initial state, then put 'er in... - if (state == StatePosition.BEGIN_FIRST_LINE) { - buffer.append (c); - lineLength++; - } - } - - // While it would be more accurate to explicitely state the range of - // possibilities, with something like: - // EnumSet.range (StatePosition.BEGIN_OTHER_LINE, StatePosition.MIDDLE_OF_LINE ).contains (state) - // We know that what is left is just the BEGIN_FIRST_LINE ... - - if ( state != StatePosition.BEGIN_FIRST_LINE ) - { - // If not the middle of the line, then it must be at the first of a line - // Either BEGIN_OTHER_LINE or BEGIN_NEW_LINE - if (state != StatePosition.MIDDLE_OF_LINE) - { - if ( Character.isWhitespace(c) || c == '>' || c == '.' ) - word.append (c); - else if ( ( ( c == '*' || c == '-' ) && Character.isWhitespace (nextChar) ) || - ( Character.isDigit(c) && nextChar == '.' && Character.isWhitespace( text[i+2] ) ) ) { - word.append (c); - state = StatePosition.BEGIN_NEW_LINE; - } - else { - if (state == StatePosition.BEGIN_NEW_LINE) { - buffer.append (word); - lineLength = word.substring ( word.indexOf("\n")+1 ).length(); - } - word.setLength (0); - state = StatePosition.MIDDLE_OF_LINE; - } - } - - if (state == StatePosition.MIDDLE_OF_LINE) - { - // Are we at the end of a word? Then we need to calculate whether - // to wrap the line or not. - // - // This condition does double duty, in that is also serves to - // ignore multiple spaces and special characters that may be at - // the beginning of the line. - if ( Character.isWhitespace(c) || c == 0 ) - { - if ( word.length() > 0) { - lineLength = addWordToBuffer (lineWidth, lineEnding, word, indent, buffer, lineLength); - } - // Do we we two spaces at the end of the line? Honor this... - else if ( c == ' ' && ( nextChar == '\r' || nextChar == '\n' ) && - state != StatePosition.BEGIN_OTHER_LINE ) { - buffer.append (" "); - buffer.append (lineEnding); - lineLength = 0; - } - - if ( c == '\r' || c == '\n' ) { - state = StatePosition.BEGIN_OTHER_LINE; - word.append(c); - } - - // Linefeeds are completely ignored and just treated as whitespace, - // unless, of course, there are two of 'em... and of course, end of - // lines are simply evil on Windows machines. - - if ( (c == '\n' && nextChar == '\n') || // Unix-style line-ends - ( c == '\r' && nextChar == '\n' && // Windows-style line-ends - text[i+2] == '\r' && text[i+3] == '\n' ) ) - { - state = StatePosition.BEGIN_FIRST_LINE; - word.setLength(0); - indent.setLength (0); - lineLength = 0; - - if (c == '\r') { // If we are dealing with Windows-style line-ends, - i++; // we need to skip past the next character... - buffer.append("\r\n"); - } else - buffer.append(c); - } - - } else { - word.append (c); - state = StatePosition.MIDDLE_OF_LINE; - } - } - } - } - - return buffer.toString().toCharArray(); - } - - /** - * Adds a word to the buffer, performing word wrap if necessary. - * @param lineWidth The current width of the line - * @param lineEnding The line ending to append, if necessary - * @param word The word to append - * @param indent The indentation string to insert, if necesary - * @param buffer The buffer to perform all this stuff to - * @param lineLength The current length of the current line - * @return The new length of the current line - */ - private static int addWordToBuffer (final int lineWidth, final String lineEnding, - final StringBuilder word, - final StringBuilder indent, - final StringBuilder buffer, int lineLength) - { - if ( word.length() + lineLength + 1 > lineWidth ) - { - buffer.append (lineEnding); - buffer.append (indent); - buffer.append (word); - - lineLength = indent.length() + word.length(); - } - else { - if ( lineLength > indent.length() ) - buffer.append (' '); - buffer.append (word); - lineLength += word.length() + 1; - } - word.setLength (0); - return lineLength; - } +public class MarkdownFormatter { + + // Expect everyone to simply use the public static methods... + private MarkdownFormatter() {} + + /** + * Formats a collection of lines to a particular width and honors typical Markdown syntax and + * formatting. The method assumes that if the first line ends with a line termination + * character, all the other lines will as well. + * + * @param lines A list of strings that should be formatted and wrapped. + * @param lineWidth The width of the page + * @return A string containing each + */ + public static String format(List lines, int lineWidth) { + if (lines == null) return null; // Should we return an empty string? + + final String lineEndings; + if (lines.get(0).endsWith("\r\n")) + lineEndings = "\r\n"; + else if (lines.get(0).endsWith("\r")) + lineEndings = "\r"; + else + lineEndings = Strings.EOL; + + final StringBuilder buf = new StringBuilder(); + for (String line : lines) { + buf.append(line); + buf.append(' '); // We can add extra spaces with impunity, and this + // makes sure our lines don't run together. + } + return format(buf.toString(), lineWidth, lineEndings); + } + + /** + * Formats a string of text. The formatting does line wrapping at the lineWidth + * boundary, but it also honors the formatting of initial paragraph lines, allowing indentation + * of the entire paragraph. + * + * @param text The line of text to format + * @param lineWidth The width of the lines + * @return A string containing the formatted text. + */ + public static String format(final String text, final int lineWidth) { + return format(text, lineWidth, Strings.EOL); + } + + /** + * Formats a string of text. The formatting does line wrapping at the lineWidth + * boundary, but it also honors the formatting of initial paragraph lines, allowing indentation + * of the entire paragraph. + * + * @param text The line of text to format + * @param lineWidth The width of the lines + * @param lineEnding The line ending that overrides the default System value + * @return A string containing the formatted text. + */ + public static String format(final String text, final int lineWidth, final String lineEnding) { + return new String(format(text.toCharArray(), lineWidth, lineEnding)); + } + + /** + * The available cursor position states as it sits in the buffer. + */ + private enum StatePosition { + /** The beginning of a paragraph ... the start of the buffer */ + BEGIN_FIRST_LINE, + + /** The beginning of the next line, which may be completely ignored. */ + BEGIN_OTHER_LINE, + + /** The beginning of a new line that will not be ignored, but appended. */ + BEGIN_NEW_LINE, + + /** The middle of a line. */ + MIDDLE_OF_LINE + } + + /** + * The method that does the work of formatting a string of text. The text, however, is a + * character array, which is more efficient to work with. TODO: Should we make the + * format(char[]) method public? + * + * @param text The line of text to format + * @param lineWidth The width of the lines + * @param lineEnding The line ending that overrides the default System value + * @return A string containing the formatted text. + */ + static char[] format(final char[] text, final int lineWidth, final String lineEnding) { + final StringBuilder word = new StringBuilder(); + final StringBuilder indent = new StringBuilder(); + final StringBuilder buffer = new StringBuilder(text.length + 10); + + StatePosition state = StatePosition.BEGIN_FIRST_LINE; + int lineLength = 0; + + // There are times when we will run across a character(s) that will + // cause us to stop doing word wrap until we get to the + // "end of non-wordwrap" character(s). + // + // If this string is set to null, it tells us to "do" word-wrapping. + char endWordwrap1 = 0; + char endWordwrap2 = 0; + + // We loop one character past the end of the loop, and when we get to + // this position, we assign 'c' to be 0 ... as a marker for the end of + // the string... + + for (int i = 0; i <= text.length; i++) { + final char c; + if (i < text.length) + c = text[i]; + else + c = 0; + + final char nextChar; + if (i + 1 < text.length) + nextChar = text[i + 1]; + else + nextChar = 0; + + // Are we actually word-wrapping? + if (endWordwrap1 != 0) { + // Did we get the ending sequence of the non-word-wrap? + if ((endWordwrap2 == 0 && c == endWordwrap1) || (c == endWordwrap1 && nextChar == endWordwrap2)) + endWordwrap1 = 0; + buffer.append(c); + lineLength++; + + if (endWordwrap1 == 0 && endWordwrap2 != 0) { + buffer.append(nextChar); + lineLength++; + i++; + } + continue; + } + + // Check to see if we got one of our special non-word-wrapping + // character sequences ... + + if (c == '[') { // [Hyperlink] + endWordwrap1 = ']'; + } else if (c == '*' && nextChar == '*') { // **Bold** + endWordwrap1 = '*'; + endWordwrap2 = '*'; + } // *Italics* + else if (c == '*' && state == StatePosition.MIDDLE_OF_LINE) { + endWordwrap1 = '*'; + } else if (c == '`') { // `code` + endWordwrap1 = '`'; + } else if (c == '(' && nextChar == '(') { // ((Footnote)) + endWordwrap1 = ')'; + endWordwrap2 = ')'; + } else if (c == '!' && nextChar == '[') { // ![Image] + endWordwrap1 = ')'; + } + + // We are no longer doing word-wrapping, so tidy the situation up... + if (endWordwrap1 != 0) { + if (word.length() > 0) + lineLength = addWordToBuffer(lineWidth, lineEnding, word, indent, buffer, lineLength); + else if (buffer.length() > 0 && buffer.charAt(buffer.length() - 1) != ']') buffer.append(' '); + // We are adding an extra space for most situations, unless we get a + // [link][ref] where we want them to be together without a space. + + buffer.append(c); + lineLength++; + continue; + } + + // Normal word-wrapping processing continues ... + + if (state == StatePosition.BEGIN_FIRST_LINE) { + if (c == '\n' || c == '\r') { // Keep, but ignore initial line feeds + buffer.append(c); + lineLength = 0; + continue; + } + + if (Character.isWhitespace(c)) + indent.append(c); + else if ((c == '*' || c == '-' || c == '.') && Character.isWhitespace(nextChar)) + indent.append(' '); + else if (Character.isDigit(c) && nextChar == '.' && Character.isWhitespace(text[i + 2])) + indent.append(' '); + else if (c == '>') + indent.append('>'); + else + state = StatePosition.MIDDLE_OF_LINE; + + // If we are still in the initial state, then put 'er in... + if (state == StatePosition.BEGIN_FIRST_LINE) { + buffer.append(c); + lineLength++; + } + } + + // While it would be more accurate to explicitely state the range of + // possibilities, with something like: + // EnumSet.range (StatePosition.BEGIN_OTHER_LINE, StatePosition.MIDDLE_OF_LINE + // ).contains (state) + // We know that what is left is just the BEGIN_FIRST_LINE ... + + if (state != StatePosition.BEGIN_FIRST_LINE) { + // If not the middle of the line, then it must be at the first of a line + // Either BEGIN_OTHER_LINE or BEGIN_NEW_LINE + if (state != StatePosition.MIDDLE_OF_LINE) { + if (Character.isWhitespace(c) || c == '>' || c == '.') + word.append(c); + else if (((c == '*' || c == '-') && Character.isWhitespace(nextChar)) + || (Character.isDigit(c) && nextChar == '.' && Character.isWhitespace(text[i + 2]))) { + word.append(c); + state = StatePosition.BEGIN_NEW_LINE; + } else { + if (state == StatePosition.BEGIN_NEW_LINE) { + buffer.append(word); + lineLength = word.substring(word.indexOf("\n") + 1).length(); + } + word.setLength(0); + state = StatePosition.MIDDLE_OF_LINE; + } + } + + if (state == StatePosition.MIDDLE_OF_LINE) { + // Are we at the end of a word? Then we need to calculate whether + // to wrap the line or not. + // + // This condition does double duty, in that is also serves to + // ignore multiple spaces and special characters that may be at + // the beginning of the line. + if (Character.isWhitespace(c) || c == 0) { + if (word.length() > 0) { + lineLength = addWordToBuffer(lineWidth, lineEnding, word, indent, buffer, lineLength); + } + // Do we we two spaces at the end of the line? Honor this... + else if (c == ' ' && (nextChar == '\r' || nextChar == '\n') + && state != StatePosition.BEGIN_OTHER_LINE) { + buffer.append(" "); + buffer.append(lineEnding); + lineLength = 0; + } + + if (c == '\r' || c == '\n') { + state = StatePosition.BEGIN_OTHER_LINE; + word.append(c); + } + + // Linefeeds are completely ignored and just treated as whitespace, + // unless, of course, there are two of 'em... and of course, end of + // lines are simply evil on Windows machines. + + if ((c == '\n' && nextChar == '\n') || // Unix-style line-ends + (c == '\r' && nextChar == '\n' && // Windows-style line-ends + text[i + 2] == '\r' && text[i + 3] == '\n')) { + state = StatePosition.BEGIN_FIRST_LINE; + word.setLength(0); + indent.setLength(0); + lineLength = 0; + + if (c == '\r') { // If we are dealing with Windows-style line-ends, + i++; // we need to skip past the next character... + buffer.append("\r\n"); + } else + buffer.append(c); + } + + } else { + word.append(c); + state = StatePosition.MIDDLE_OF_LINE; + } + } + } + } + + return buffer.toString().toCharArray(); + } + + /** + * Adds a word to the buffer, performing word wrap if necessary. + * + * @param lineWidth The current width of the line + * @param lineEnding The line ending to append, if necessary + * @param word The word to append + * @param indent The indentation string to insert, if necesary + * @param buffer The buffer to perform all this stuff to + * @param lineLength The current length of the current line + * @return The new length of the current line + */ + private static int addWordToBuffer(final int lineWidth, final String lineEnding, final StringBuilder word, + final StringBuilder indent, final StringBuilder buffer, int lineLength) { + if (word.length() + lineLength + 1 > lineWidth) { + buffer.append(lineEnding); + buffer.append(indent); + buffer.append(word); + + lineLength = indent.length() + word.length(); + } else { + if (lineLength > indent.length()) buffer.append(' '); + buffer.append(word); + lineLength += word.length() + 1; + } + word.setLength(0); + return lineLength; + } } diff --git a/plugin/src/winterwell/markdown/pagemodel/MarkdownPage.java b/plugin/src/winterwell/markdown/pagemodel/MarkdownPage.java index c69c557..212f899 100755 --- a/plugin/src/winterwell/markdown/pagemodel/MarkdownPage.java +++ b/plugin/src/winterwell/markdown/pagemodel/MarkdownPage.java @@ -15,17 +15,15 @@ import java.util.regex.Pattern; import org.eclipse.jface.preference.IPreferenceStore; +import org.markdownj.MarkdownProcessor; import winterwell.markdown.Activator; import winterwell.markdown.StringMethods; import winterwell.markdown.preferences.PrefPageGeneral; -import winterwell.utils.FailureException; -import winterwell.utils.Process; -import winterwell.utils.StrUtils; -import winterwell.utils.Utils; -import winterwell.utils.io.FileUtils; - -import com.petebevin.markdown.MarkdownProcessor; +import winterwell.markdown.util.FailureException; +import winterwell.markdown.util.FileUtils; +import winterwell.markdown.util.Process; +import winterwell.markdown.util.Strings; /** * Understands Markdown syntax. @@ -64,6 +62,7 @@ private String cleanHeader(String line) { * @author daniel */ public class Header { + /** * 1 = top-level (i.e. #), 2= 2nd-level (i.e. ##), etc. */ @@ -86,40 +85,34 @@ public int getLineNumber() { } /** - * * @return the next section (at this depth if possible), null if none */ public Header getNext() { if (parent == null) { int ti = level1Headers.indexOf(this); - if (ti == -1 || ti == level1Headers.size() - 1) - return null; + if (ti == -1 || ti == level1Headers.size() - 1) return null; return level1Headers.get(ti + 1); } int i = parent.subHeaders.indexOf(this); assert i != -1 : this; - if (i == parent.subHeaders.size() - 1) - return parent.getNext(); + if (i == parent.subHeaders.size() - 1) return parent.getNext(); return parent.subHeaders.get(i + 1); } + /** - * * @return the next section (at this depth if possible), null if none */ public Header getPrevious() { if (parent == null) { int ti = level1Headers.indexOf(this); - if (ti == -1 || ti == 0) - return null; + if (ti == -1 || ti == 0) return null; return level1Headers.get(ti - 1); } int i = parent.subHeaders.indexOf(this); assert i != -1 : this; - if (i == 0) - return parent.getPrevious(); + if (i == 0) return parent.getPrevious(); return parent.subHeaders.get(i - 1); } - /** * The parent section. Can be null. @@ -129,15 +122,11 @@ public Header getPrevious() { /** * Create a marker for a section Header * - * @param level - * 1 = top-level (i.e. #), 2= 2nd-level (i.e. ##), etc. - * @param lineNumber - * The line on which this header occurs - * @param heading - * The text of the Header, trimmed of #s - * @param currentHeader - * The previous Header. This is used to find the parent - * section if there is one. Can be null. + * @param level 1 = top-level (i.e. #), 2= 2nd-level (i.e. ##), etc. + * @param lineNumber The line on which this header occurs + * @param heading The text of the Header, trimmed of #s + * @param currentHeader The previous Header. This is used to find the parent section if + * there is one. Can be null. */ Header(int level, int lineNumber, String heading, Header currentHeader) { this.lineNumber = lineNumber; @@ -194,7 +183,14 @@ public List getText() { } public enum KLineType { - NORMAL, H1, H2, H3, H4, H5, H6, BLANK, + NORMAL, + H1, + H2, + H3, + H4, + H5, + H6, + BLANK, // TODO LIST, BLOCKQUOTE, /** A line marking Markdown info about the preceding line, e.g. ====== */ MARKER, @@ -206,18 +202,19 @@ public enum KLineType { * Information about each line. */ private List lineTypes; - private Map pageObjects = new HashMap(); + private Map pageObjects = new HashMap(); // TODO meta-data, footnotes, tables, link & image attributes private static Pattern multiMarkdownTag = Pattern.compile("^([\\w].*):(.*)"); private Map multiMarkdownTags = new HashMap(); - + // Regular expression for Github support - private static Pattern githubURLDetection = Pattern.compile("((https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|])"); + private static Pattern githubURLDetection = Pattern + .compile("((https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|])"); /** - * The top-level headers. FIXME handle documents which have a 2nd level - * header before any 1st level ones + * The top-level headers. FIXME handle documents which have a 2nd level header before any 1st + * level ones */ private final List

level1Headers = new ArrayList
(); private final IPreferenceStore pStore; @@ -244,17 +241,16 @@ private void setText(String text) { level1Headers.clear(); lineTypes = new ArrayList(lines.size()); pageObjects.clear(); - // Dummy level-1 header in case there are none + // Dummy level-1 header in case there are none Header dummyTopHeader = new Header(1, 0, "", null); level1Headers.add(dummyTopHeader); - Header currentHeader = dummyTopHeader; - // Identify line types + Header currentHeader = dummyTopHeader; + // Identify line types int lineNum = 0; // Check if we should support the Multi-Markdown Metadata - boolean multiMarkdownMetadataSupport = - pStore.getBoolean(PrefPageGeneral.PREF_MULTIMARKDOWN_METADATA); - + boolean multiMarkdownMetadataSupport = pStore.getBoolean(PrefPageGeneral.PREF_MULTIMARKDOWN_METADATA); + // Multi-markdown header if (multiMarkdownMetadataSupport) { // The key is the text before the colon, and the data is the text @@ -270,14 +266,14 @@ private void setText(String text) { // ends with the first whitespace only line. The metadata is // stripped from the // document before it is passed on to the syntax parser. - + // // Check if the Metdatas are valid // boolean validMetadata = true; for (lineNum = 0; lineNum < lines.size(); lineNum++) { String line = lines.get(lineNum); - if (Utils.isBlank(line)) { + if (Strings.isBlank(line)) { break; } Matcher m = multiMarkdownTag.matcher(line); @@ -294,14 +290,14 @@ private void setText(String text) { } } } - + // Valid Metadatas have been found. We need to retrieve these keys/values. if (validMetadata) { String data = ""; String tag = ""; for (lineNum = 0; lineNum < lines.size(); lineNum++) { String line = lines.get(lineNum); - if (Utils.isBlank(line)) { + if (Strings.isBlank(line)) { break; } Matcher m = multiMarkdownTag.matcher(line); @@ -311,26 +307,24 @@ private void setText(String text) { } // Multi-line tag lineTypes.add(KLineType.META); - data += StrUtils.LINEEND + line.trim(); + data += Strings.EOL + line.trim(); multiMarkdownTags.put(tag, data); } else { lineTypes.add(KLineType.META); tag = m.group(0); data = m.group(1).trim(); - if (m.group(1).endsWith(line)) - multiMarkdownTags.put(tag, data); + if (m.group(1).endsWith(line)) multiMarkdownTags.put(tag, data); } } } else { lineNum = 0; } } - - boolean githubSyntaxSupport = - pStore.getBoolean(PrefPageGeneral.PREF_GITHUB_SYNTAX); - + + boolean githubSyntaxSupport = pStore.getBoolean(PrefPageGeneral.PREF_GITHUB_SYNTAX); + boolean inCodeBlock = false; - + for (; lineNum < lines.size(); lineNum++) { String line = lines.get(lineNum); // Code blocks @@ -355,8 +349,7 @@ private void setText(String text) { } // Create a Header object if (h > 0) { - if (underline == -1) - lineTypes.add(KLineType.values()[h]); + if (underline == -1) lineTypes.add(KLineType.values()[h]); Header header = new Header(h, hLineNum, hLine, currentHeader); if (h == 1) { level1Headers.add(header); @@ -369,14 +362,14 @@ private void setText(String text) { // TODO List // TODO Block quote // Blank line - if (Utils.isBlank(line)) { + if (Strings.isBlank(line)) { lineTypes.add(KLineType.BLANK); continue; } // Normal lineTypes.add(KLineType.NORMAL); } // end line-loop - // Remove dummy header? + // Remove dummy header? if (dummyTopHeader.getSubHeaders().size() == 0) { level1Headers.remove(dummyTopHeader); } @@ -402,10 +395,10 @@ private void setText(String text) { lines.set(lineNum, " " + line); } } - + /* - * Support for URL Detection - * We search for links that are not captured by Markdown syntax + * Support for URL Detection We search for links that are not captured by Markdown + * syntax */ for (lineNum = 0; lineNum < lines.size(); lineNum++) { String line = lines.get(lineNum); @@ -419,39 +412,31 @@ private void setText(String text) { Matcher m = githubURLDetection.matcher(line); while (m.find()) { // Ignore the URL following the format - if ((m.start() - 1 >= 0) && (m.end() < line.length()) && - (line.charAt(m.start() - 1) == '<') && - (line.charAt(m.end()) == '>')) - { + if ((m.start() - 1 >= 0) && (m.end() < line.length()) && (line.charAt(m.start() - 1) == '<') + && (line.charAt(m.end()) == '>')) { continue; } - + // Ignore the URL following the format [description](link) - if ((m.start() - 2 >= 0) && (m.end() < line.length()) && - (line.charAt(m.start() - 2) == ']') && - (line.charAt(m.start() - 1) == '(') && - (line.charAt(m.end()) == ')')) - { + if ((m.start() - 2 >= 0) && (m.end() < line.length()) && (line.charAt(m.start() - 2) == ']') + && (line.charAt(m.start() - 1) == '(') && (line.charAt(m.end()) == ')')) { continue; } - + // Ignore the URL following the format [description](link "title") - if ((m.start() - 2 >= 0) && (m.end() + 1 < line.length()) && - (line.charAt(m.start() - 2) == ']') && - (line.charAt(m.start() - 1) == '(') && - (line.charAt(m.end()) == ' ') && - (line.charAt(m.end() + 1) == '"')) - { + if ((m.start() - 2 >= 0) && (m.end() + 1 < line.length()) && (line.charAt(m.start() - 2) == ']') + && (line.charAt(m.start() - 1) == '(') && (line.charAt(m.end()) == ' ') + && (line.charAt(m.end() + 1) == '"')) { continue; } - + if (m.start() - 1 >= 0) { // Case when the link is at the beginning of the string line = line.substring(0, m.start()) + "<" + m.group(0) + ">" + line.substring(m.end()); } else { line = "<" + m.group(0) + ">" + line.substring(m.end()); } - + // We replaced the string in the array lines.set(lineNum, line); urlReplaced = true; @@ -468,7 +453,7 @@ private void setText(String text) { * @return true if line is just cs (and whitespace at the start/end) */ boolean just(String line, char c) { - return line.matches("\\s*"+c+"+\\s*"); + return line.matches("\\s*" + c + "+\\s*"); } /** @@ -477,18 +462,15 @@ boolean just(String line, char c) { */ private int numHash(String line) { for (int i = 0; i < line.length(); i++) { - if (line.charAt(i) != '#') - return i; + if (line.charAt(i) != '#') return i; } return line.length(); } /** - * - * @param parent - * Can be null for top-level - * @return List of sub-headers. Never null. FIXME handle documents which - * have a 2nd level header before any 1st level ones + * @param parent Can be null for top-level + * @return List of sub-headers. Never null. FIXME handle documents which have a 2nd level header + * before any 1st level ones */ public List
getHeadings(Header parent) { if (parent == null) { @@ -538,15 +520,13 @@ public List
getHeadings(Header parent) { */ public String html() { // Section numbers?? - boolean sectionNumbers = pStore - .getBoolean(PrefPageGeneral.PREF_SECTION_NUMBERS); + boolean sectionNumbers = pStore.getBoolean(PrefPageGeneral.PREF_SECTION_NUMBERS); // Chop out multi-markdown header StringBuilder sb = new StringBuilder(); assert lines.size() == lineTypes.size(); for (int i = 0, n = lines.size(); i < n; i++) { KLineType type = lineTypes.get(i); - if (type == KLineType.META) - continue; + if (type == KLineType.META) continue; String line = lines.get(i); if (sectionNumbers && isHeader(type) && line.contains("$section")) { // TODO Header section = headers.get(i); @@ -557,10 +537,8 @@ public String html() { } String text = sb.toString(); // Use external converter? - final String cmd = pStore - .getString(PrefPageGeneral.PREF_MARKDOWN_COMMAND); - if (Utils.isBlank(cmd) - || (cmd.startsWith("(") && cmd.contains("MarkdownJ"))) { + final String cmd = pStore.getString(PrefPageGeneral.PREF_MARKDOWN_COMMAND); + if (Strings.isBlank(cmd) || (cmd.startsWith("(") && cmd.contains("MarkdownJ"))) { // Use MarkdownJ MarkdownProcessor markdown = new MarkdownProcessor(); // MarkdownJ doesn't convert £s for some reason @@ -568,29 +546,25 @@ public String html() { String html = markdown.markdown(text); return html; } + // Attempt to run external command try { final File md = File.createTempFile("tmp", ".md"); FileUtils.write(md, text); - Process process = new Process(cmd+" "+md.getAbsolutePath()); + Process process = new Process(cmd + " " + md.getAbsolutePath()); process.run(); int ok = process.waitFor(10000); - if (ok != 0) throw new FailureException(cmd+" failed:\n"+process.getError()); + if (ok != 0) throw new FailureException(cmd + " failed:\n" + process.getError()); String html = process.getOutput(); FileUtils.delete(md); return html; } catch (Exception e) { - throw Utils.runtime(e); + throw new RuntimeException(e); } } - /** - * @param type - * @return - */ private boolean isHeader(KLineType type) { - return type == KLineType.H1 || type == KLineType.H2 - || type == KLineType.H3 || type == KLineType.H4 + return type == KLineType.H1 || type == KLineType.H2 || type == KLineType.H3 || type == KLineType.H4 || type == KLineType.H5 || type == KLineType.H6; } @@ -615,12 +589,7 @@ public List getLineTypes() { return Collections.unmodifiableList(lineTypes); } - /** - * @param line - * @return - */ - public Object getPageObject(int line) { + public Object getPageObject(int line) { return pageObjects.get(line); } - } diff --git a/plugin/src/winterwell/markdown/pagemodel/MarkdownPageTest.java b/plugin/src/winterwell/markdown/pagemodel/MarkdownPageTest.java index 244d437..bcc2b72 100755 --- a/plugin/src/winterwell/markdown/pagemodel/MarkdownPageTest.java +++ b/plugin/src/winterwell/markdown/pagemodel/MarkdownPageTest.java @@ -4,22 +4,18 @@ import java.util.List; import winterwell.markdown.pagemodel.MarkdownPage.Header; -import winterwell.utils.io.FileUtils; +import winterwell.markdown.util.FileUtils; - - -public class MarkdownPageTest //extends TestCase -{ +public class MarkdownPageTest /* extends TestCase */ { public static void main(String[] args) { MarkdownPageTest mpt = new MarkdownPageTest(); mpt.testGetHeadings(); } - + public void testGetHeadings() { // problem caused by a line beginning --, now fixed - String txt = FileUtils.read(new File( - "/home/daniel/winterwell/companies/DTC/projects/DTC-bayes/report1.txt")); + String txt = FileUtils.read(new File("/home/daniel/winterwell/companies/DTC/projects/DTC-bayes/report1.txt")); MarkdownPage p = new MarkdownPage(txt); List
h1s = p.getHeadings(null); Header h1 = h1s.get(0); diff --git a/plugin/src/winterwell/markdown/util/ArraySet.java b/plugin/src/winterwell/markdown/util/ArraySet.java new file mode 100644 index 0000000..fa2ad1e --- /dev/null +++ b/plugin/src/winterwell/markdown/util/ArraySet.java @@ -0,0 +1,81 @@ +package winterwell.markdown.util; + +import java.io.Serializable; +import java.util.AbstractList; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import java.util.Spliterator; + +public final class ArraySet extends AbstractList implements Set, List, Serializable { + + private final ArrayList backing; + + public ArraySet() { + backing = new ArrayList(); + } + + public ArraySet(Collection elements) { + backing = new ArrayList<>(elements.size()); + for (E element : elements) { + add(element); + } + } + + public ArraySet(int initialSize) { + backing = new ArrayList<>(initialSize); + } + + public ArraySet(E[] elements) { + backing = new ArrayList<>(elements.length); + for (E element : elements) { + add(element); + } + } + + public boolean add(E e) { + if (backing.contains(e)) { + return false; + } else { + return backing.add(e); + } + } + + public void clear() { + backing.clear(); + } + + public boolean contains(Object o) { + if (o == null) throw new AssertionError(); + return backing.contains(o); + } + + public E get(int i) { + return backing.get(i); + } + + public Iterator iterator() { + return backing.iterator(); + } + + public boolean remove(Object o) { + return backing.remove(o); + } + + @Deprecated + public E set(int index, E element) { + E old = backing.set(index, element); + return old; + } + + public int size() { + return backing.size(); + } + + @Override + public Spliterator spliterator() { + return super.spliterator(); + } +} diff --git a/plugin/src/winterwell/markdown/util/Environment.java b/plugin/src/winterwell/markdown/util/Environment.java new file mode 100644 index 0000000..ffdd1f2 --- /dev/null +++ b/plugin/src/winterwell/markdown/util/Environment.java @@ -0,0 +1,114 @@ +package winterwell.markdown.util; + +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; +import java.util.Stack; + +public final class Environment implements IProperties { + + private static final Map defaultProperties = new HashMap(); + private static final Environment dflt = new Environment(); + private final ThreadLocal>> localVars = new ThreadLocal>>() { + + protected Map> initialValue() { + return new HashMap<>(); + } + }; + + public Environment() {} + + public static Environment get() { + return dflt; + } + + public static void putDefault(Key key, Object value) { + if (value == null) { + defaultProperties.remove(key); + } else { + defaultProperties.put(key, value); + } + } + + public boolean containsKey(Key key) { + Object result = get(key); + return result != null; + } + + public Object get(Key key) { + if (key == null) { + throw new AssertionError(); + } + Map> properties = localVars.get(); + Object v = properties.get(key); + if (v == null) v = defaultProperties.get(key); + return v; + } + + public Collection getKeys() { + Map> properties = localVars.get(); + HashSet keys = new HashSet(); + keys.addAll(properties.keySet()); + keys.addAll(defaultProperties.keySet()); + return keys; + } + + public boolean isTrue(Key key) { + Boolean v = (Boolean) get(key); + return v != null && v.booleanValue(); + } + + public Object pop(Key key) { + if (key == null) { + throw new AssertionError(); + } + Map> properties = localVars.get(); + Key stackKey = new StackKey(key); + Stack stack = (Stack) properties.get(stackKey); + if (stack == null) { + throw new AssertionError(); + } else { + Object oldValue = stack.pop(); + Object newValue = stack.peek(); + put(key, newValue); + return oldValue; + } + } + + public void push(Key key, Object value) { + if ((key == null || value == null)) throw new AssertionError(); + Map> properties = localVars.get(); + put(key, value); + Key stackKey = new StackKey(key); + Stack stack = properties.get(stackKey); + if (stack == null) { + stack = new Stack(); + properties.put(stackKey, stack); + } + stack.push(value); + } + + @SuppressWarnings("unchecked") + public Object put(Key key, Object value) { + if (key == null) throw new AssertionError(); + Map> properties = localVars.get(); + if (value == null) return properties.remove(key); + return properties.put(key, (Stack) value); + } + + public void reset() { + localVars.remove(); + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + Key k; + for (Iterator iterator = getKeys().iterator(); iterator.hasNext(); sb + .append((new StringBuilder()).append(k).append(": ").append(get(k)).toString())) { + k = iterator.next(); + } + return sb.toString(); + } +} diff --git a/plugin/src/winterwell/markdown/util/FailureException.java b/plugin/src/winterwell/markdown/util/FailureException.java new file mode 100644 index 0000000..b9aefd0 --- /dev/null +++ b/plugin/src/winterwell/markdown/util/FailureException.java @@ -0,0 +1,55 @@ +package winterwell.markdown.util; + +import java.util.Arrays; +import java.util.List; + +public class FailureException extends RuntimeException { + + private String source; + + public FailureException() { + super(); + } + + public FailureException(Exception e) { + super(e); + } + + public FailureException(String msg) { + super((new StringBuilder(String.valueOf(msg))).append(" @").append(getCaller(new String[0])).toString()); + } + + public FailureException(String msg, Exception cause) { + super((new StringBuilder(String.valueOf(msg))).append(" @").append(getCaller(new String[0])).toString(), cause); + } + + public FailureException(String source, String msg) { + super((new StringBuilder(String.valueOf(source))).append(": ").append(msg).append(" @") + .append(getCaller(new String[0])).toString()); + this.source = source; + } + + public String getSource() { + return source; + } + + public static StackTraceElement getCaller(String ignore[]) { + List ignoreNames = Arrays.asList(ignore); + StackTraceElement trace[]; + int i; + try { + throw new Exception(); + } catch (Exception e) { + trace = e.getStackTrace(); + i = 2; + } + for (; i < trace.length; i++) { + String clazz = trace[2].getClassName(); + String method = trace[2].getMethodName(); + if (!ignoreNames.contains(clazz) && !ignoreNames.contains(method)) { + return trace[2]; + } + } + return new StackTraceElement("filtered", "?", null, -1); + } +} diff --git a/plugin/src/winterwell/markdown/util/FileUtils.java b/plugin/src/winterwell/markdown/util/FileUtils.java new file mode 100644 index 0000000..a1966e1 --- /dev/null +++ b/plugin/src/winterwell/markdown/util/FileUtils.java @@ -0,0 +1,1373 @@ +package winterwell.markdown.util; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.Closeable; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.Reader; +import java.io.UnsupportedEncodingException; + +public final class FileUtils { + + public static final String UTF8 = "UTF8"; + public static final char UTF8_BOM = 65279; + + public FileUtils() {} + + // public static void append(String string, File file) { + // try { + // BufferedWriter w = getWriter(new FileOutputStream(file, true)); + // w.write(string); + // close(w); + // } catch (IOException e) { + // throw new RuntimeException(e); + // } + // } + // + // public static File changeType(File file, String type) { + // String fName = file.getName(); + // int i = fName.lastIndexOf('.'); + // if (type.length() == 0) { + // if (i == -1) { + // return file; + // } else { + // fName = fName.substring(0, i); + // return new File(file.getParentFile(), fName); + // } + // } + // if (type.charAt(0) == '.') { + // type = type.substring(1); + // } + // if (type.length() <= 0) { + // throw new AssertionError(); + // } + // if (i == -1) { + // fName = (new StringBuilder(String.valueOf(fName))).append(".").append(type).toString(); + // } else { + // fName = (new StringBuilder(String.valueOf(fName.substring(0, i + + // 1)))).append(type).toString(); + // } + // return new File(file.getParentFile(), fName); + // } + + public static void close(Closeable io) { + if (io == null) { + return; + } + try { + io.close(); + } catch (IOException e) { + if (e.getMessage() != null && e.getMessage().contains("Closed")) { + return; + } + e.printStackTrace(); + } + } + + // public static File copy(File in, File out) { + // return copy(in, out, true); + // } + // + // public static File copy(File in, File out, boolean overwrite) + // throws RuntimeException + // { + // if( !in.exists()) + // { + // throw new AssertionError((new StringBuilder("File does not exist: + // ")).append(in.getAbsolutePath()).toString()); + // } + // if( in.equals(out)) + // { + // throw new AssertionError((new StringBuilder()).append(in).append(" = ").append(out).append(" + // can cause a delete!").toString()); + // } + // if(in.isDirectory()) + // { + // ArrayList failed = new ArrayList(); + // copyDir(in, out, overwrite, failed); + // if(failed.size() != 0) + // { + // throw new RuntimeException((new StringBuilder("Could not copy files: + // ")).append(Printer.toString(failed)).toString()); + // } else + // { + // return out; + // } + // } + // if(out.isDirectory()) + // { + // out = new File(out, in.getName()); + // } + // if(out.exists() && !overwrite) + // { + // throw new RuntimeException((new StringBuilder("Copy failed: ")).append(out).append(" already + // exists.").toString()); + // } + // copy(((InputStream) (new FileInputStream(in))), out); + // return out; + // IOException e; + // e; + // throw new RuntimeException((new StringBuilder(String.valueOf(e.getMessage()))).append(" + // copying ").append(in.getAbsolutePath()).append(" to + // ").append(out.getAbsolutePath()).toString()); + // } + // + // public static void copy(InputStream in, File out) { + // if ((in == null || out == null)) { + // throw new AssertionError(); + // } + // if (!out.getParentFile().isDirectory()) { + // throw new RuntimeException( + // (new StringBuilder("Directory does not exist: ")).append(out.getParentFile()).toString()); + // } + // try { + // FileOutputStream outStream = new FileOutputStream(out); + // copy(in, ((OutputStream) (outStream))); + // } catch (IOException e) { + // throw new RuntimeException(e); + // } + // } + // + // public static void copy(InputStream in, OutputStream out) + // { + // try + // { + // byte bytes[] = new byte[20480]; + // do + // { + // int len = in.read(bytes); + // if(len == -1) + // { + // break; + // } + // out.write(bytes, 0, len); + // } while(true); + // } + // catch(IOException e) + // { + // throw new RuntimeException(e); + // } + // break MISSING_BLOCK_LABEL_53; + // Exception exception; + // exception; + // close(in); + // close(out); + // throw exception; + // close(in); + // close(out); + // return; + // } + // + // private static void copyDir(File in, File out, boolean overwrite, List failed) { + // if (!in.isDirectory()) { + // throw new AssertionError(in); + // } + // if (!out.exists()) { + // boolean ok = out.mkdir(); + // if (!ok) { + // failed.add(in); + // return; + // } + // } + // if (!out.isDirectory()) { + // throw new AssertionError(out); + // } + // File afile[]; + // int j = (afile = in.listFiles()).length; + // for (int i = 0; i < j; i++) { + // File f = afile[i]; + // if (f.isDirectory()) { + // File subOut = new File(out, f.getName()); + // copyDir(f, subOut, overwrite, failed); + // } else { + // try { + // copy(f, out, overwrite); + // } catch (RuntimeException e) { + // failed.add(f); + // } + // } + // } + // + // } + // + // public static File createTempDir() + // { + // File f; + // f = File.createTempFile("tmp", "dir"); + // if(f.exists()) + // { + // delete(f); + // } + // f.mkdirs(); + // return f; + // Exception e; + // e; + // throw Utils.runtime(e); + // } + // + // public static File createTempFile(String prefix, String suffix) + // { + // return File.createTempFile(prefix, suffix); + // IOException e; + // e; + // throw new RuntimeException(e); + // } + + public static void delete(File file) { + if (!file.exists()) return; + if (file.delete()) return; + System.gc(); + if (file.delete()) return; + + try { + Thread.sleep(50L); + } catch (InterruptedException interruptedexception) {} + file.delete(); + if (!file.exists()) return; + + // if (file.isDirectory() && isSymLink(file) + // && (Utils.getOperatingSystem().contains("linux") || + // Utils.getOperatingSystem().contains("unix"))) { + // String path = file.getAbsolutePath(); + // Process p = new Process((new StringBuilder("rm -f ")).append(path).toString()); + // p.run(); + // p.waitFor(1000L); + // if (!file.exists()) { + // return; + // } else { + // throw new RuntimeException(new IOException((new StringBuilder("Could not delete + // file")).append(file) + // .append("; ").append(p.getError()).toString())); + // } + // } else { + // throw new RuntimeException( + // new IOException((new StringBuilder("Could not delete file ")).append(file).toString())); + // } + throw new RuntimeException( + new IOException((new StringBuilder("Could not delete file ")).append(file).toString())); + } + + // public static void deleteDir(File file) { + // if (!file.isDirectory()) { + // throw new RuntimeException((new StringBuilder()).append(file).append(" is not a + // directory").toString()); + // } + // if (isSymLink(file)) { + // delete(file); + // return; + // } + // File afile[]; + // int j = (afile = file.listFiles()).length; + // for (int i = 0; i < j; i++) { + // File f = afile[i]; + // if (f.isDirectory()) { + // deleteDir(f); + // } else { + // delete(f); + // } + // } + // + // delete(file); + // } + // + // private static void deleteNative(File out) { + // if (!Utils.OSisUnix()) { + // throw new TodoException((new StringBuilder()).append(out).toString()); + // } + // Process p = new Process((new StringBuilder("rm -f + // ")).append(out.getAbsolutePath()).toString()); + // p.run(); + // int ok = p.waitFor(); + // if (ok != 0) { + // throw new RuntimeException(p.getError()); + // } else { + // return; + // } + // } + // + // public static String filenameDecode(String name) { + // name = name.replace("//", ""); + // name = name.replace("_", "%"); + // name = name.replace("%%", "_"); + // String original = WebUtils.urlDecode(name); + // original = original.replace("%2E", "."); + // original = original.replace("%3B", ";"); + // original = original.replace("%2F", "/"); + // return original; + // } + // + // public static String filenameEncode(String name) { + // String url = WebUtils.urlEncode(name); + // url = url.replace("..", ".%2E"); + // url = url.replace(";", "%3B"); + // url = url.replace("%2F", "/"); + // url = url.replace("//", "/%2F"); + // url = url.replace("_", "__"); + // url = url.replace("%", "_"); + // String bits[] = url.split("/"); + // StringBuilder path = new StringBuilder(url.length()); + // boolean dbl = false; + // String as[]; + // int k = (as = bits).length; + // for (int j = 0; j < k; j++) { + // String bit = as[j]; + // if (bit.length() == 0) { + // System.out.println(path); + // } + // for (int i = 0; i < bit.length(); i += 240) { + // int e = Math.min(bit.length(), i + 240); + // path.append(bit.substring(i, e)); + // if (e == bit.length()) { + // path.append("/"); + // dbl = false; + // } else { + // path.append("//"); + // dbl = true; + // } + // } + // + // } + // + // StrUtils.pop(path, dbl ? 2 : 1); + // if (url.endsWith("/")) { + // path.append('/'); + // } + // return path.toString(); + // } + // + // public static List find(File baseDir, FileFilter filter) { + // return find(baseDir, filter, true); + // } + // + // public static List find(File baseDir, FileFilter filter, boolean includeHiddenFiles) { + // if (!baseDir.isDirectory()) { + // throw new IllegalArgumentException((new + // StringBuilder(String.valueOf(baseDir.getAbsolutePath()))) + // .append(" is not a directory").toString()); + // } else { + // List files = new ArrayList(); + // find2(baseDir, filter, files, includeHiddenFiles); + // return files; + // } + // } + // + // public static List find(File baseDir, String regex) { + // return find(baseDir, ((FileFilter) (new RegexFileFilter(regex)))); + // } + // + // private static void find2(File baseDir, FileFilter filter, List files, boolean + // includeHiddenFiles) { + // if ((baseDir == null || filter == null || files == null)) { + // throw new AssertionError(); + // } + // File afile[]; + // int j = (afile = baseDir.listFiles()).length; + // for (int i = 0; i < j; i++) { + // File f = afile[i]; + // if (!f.equals(baseDir) && (includeHiddenFiles || !f.isHidden())) { + // if (!includeHiddenFiles && f.getName().startsWith(".")) { + // throw new AssertionError(f); + // } + // if (filter.accept(f)) { + // files.add(f); + // } + // if (f.isDirectory()) { + // find2(f, filter, files, includeHiddenFiles); + // } + // } + // } + // + // } + // + // private static List getAllClasses(File root) throws IOException { + // if (root == null) { + // throw new AssertionError("Root cannot be null"); + // } else { + // List classNames = new ArrayList(); + // String path = root.getCanonicalPath(); + // getAllClasses(root, path.length() + 1, classNames); + // return classNames; + // } + // } + // + // private static void getAllClasses(File root, int prefixLength, List result) throws + // IOException { + // if (root == null) { + // throw new AssertionError("Root cannot be null"); + // } + // if (prefixLength < 0) { + // throw new AssertionError("Illegal index specifier"); + // } + // if (result == null) { + // throw new AssertionError("Missing return array"); + // } + // File afile[]; + // int j = (afile = root.listFiles()).length; + // for (int i = 0; i < j; i++) { + // File entry = afile[i]; + // if (entry.isDirectory()) { + // if (entry.canRead()) { + // getAllClasses(entry, prefixLength, result); + // } + // } else { + // String path = entry.getPath(); + // boolean isClass = path.endsWith(".class") && path.indexOf("$") < 0; + // if (isClass) { + // String name = entry.getCanonicalPath().substring(prefixLength); + // String className = name.replace(File.separatorChar, '.').substring(0, name.length() - 6); + // result.add(className); + // } + // } + // } + // + // } + // + // public static String getBasename(File file) { + // return getBasename(file.getName()); + // } + // + // public static String getBasename(String filename) { + // int i = filename.lastIndexOf('.'); + // if (i == -1) { + // return filename; + // } else { + // return filename.substring(0, i); + // } + // } + // + // public static String getBasenameCautious(String filename) { + // int i = filename.lastIndexOf('.'); + // if (i == -1) { + // return filename; + // } + // if (filename.length() - i > 5) { + // return filename; + // } else { + // return filename.substring(0, i); + // } + // } + // + // /** + // * @deprecated Method getDataFile is deprecated + // */ + // + // public static File getDataFile(String relativePath) { + // File f = new File(dataDir, relativePath); + // if (!f.getParentFile().exists()) { + // f.getParentFile().mkdirs(); + // } + // return f; + // } + // + // public static String getExtension(File f) { + // String filename = f.getName(); + // int i = filename.indexOf('.'); + // if (i == -1) { + // return ""; + // } else { + // return filename.substring(i).toLowerCase(); + // } + // } + // + // public static String getExtension(String filename) { + // return getExtension(new File(filename)); + // } + // + // public static File getNewFile(File file) { + // if (!file.exists()) { + // return file; + // } + // String path = file.getParent(); + // String name = file.getName(); + // int dotI = name.lastIndexOf('.'); + // String dotType = ""; + // String preType; + // if (dotI == -1) { + // preType = name; + // } else { + // preType = name.substring(0, dotI); + // dotType = name.substring(dotI); + // } + // for (int i = 2; i < 10000; i++) { + // File f = new File(path, (new + // StringBuilder(String.valueOf(preType))).append(i).append(dotType).toString()); + // if (!f.exists()) { + // return f; + // } + // } + // + // throw new RuntimeException( + // (new StringBuilder("Could not find a non-existing file name for ")).append(file).toString()); + // } + + public static BufferedReader getReader(File file) { + try { + return getReader(((InputStream) (new FileInputStream(file)))); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } + } + + public static BufferedReader getReader(InputStream in) { + InputStreamReader reader; + try { + reader = new InputStreamReader(in, "UTF8"); + return new BufferedReader(reader); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } + } + + // public static FileFilter getRegexFilter(String regex) { + // return new RegexFileFilter(regex); + // } + // + // public static String getRelativePath(File f, File base) throws IllegalArgumentException { + // String fp = resolveDotDot(f.getAbsolutePath()); + // String bp = resolveDotDot(base.getAbsolutePath()); + // if (!fp.startsWith(bp)) { + // if (f.equals(base)) { + // return ""; + // } else { + // throw new IllegalArgumentException((new StringBuilder()).append(f).append("=").append(fp) + // .append(" is not a sub-file of ").append(base).append("=").append(bp).toString()); + // } + // } + // String rp = fp.substring(bp.length()); + // char ec = rp.charAt(0); + // if (ec == '\\' || ec == '/') { + // rp = rp.substring(1); + // } + // return rp; + // } + // + // public static String getType(File f) { + // String fs = f.toString(); + // return getType(fs); + // } + // + // public static String getType(String filename) { + // int i = filename.lastIndexOf("."); + // if (i == -1 || i == filename.length() - 1) { + // return ""; + // } else { + // return filename.substring(i + 1).toLowerCase(); + // } + // } + // + // public static File getWinterwellDir() { + // File f; + // String dd = System.getenv("WINTERWELL_HOME"); + // if (Utils.isBlank(dd)) { + // break MISSING_BLOCK_LABEL_110; + // } + // if (dd.startsWith("~")) { + // String home = System.getProperty("user.home"); + // if (home != null) { + // dd = (new + // StringBuilder(String.valueOf(home))).append("/").append(dd.substring(1)).toString(); + // } + // } + // f = (new File(dd)).getCanonicalFile(); + // if (!f.exists()) { + // throw new FailureException( + // (new StringBuilder("Path does not exist: WINTERWELL_HOME = ")).append(f).toString()); + // } + // return f; + // File ddf; + // String home = System.getProperty("user.home"); + // if (Utils.isBlank(home)) { + // home = "/home"; + // } + // ddf = (new File(home, "winterwell")).getCanonicalFile(); + // if (ddf.exists() && ddf.isDirectory()) { + // return ddf; + // } + // try { + // throw new FailureException("Could not find directory - environment variable WINTERWELL_HOME + // is not set."); + // } catch (IOException e) { + // throw Utils.runtime(e); + // } + // } + // + // public static File getWorkingDirectory() + // { + // return (new File(".")).getCanonicalFile(); + // IOException e; + // e; + // throw new RuntimeException(e); + // } + + // public static BufferedWriter getWriter(OutputStream out) + // { + // OutputStreamWriter writer = new OutputStreamWriter(out, "UTF8"); + // return new BufferedWriter(writer); + // UnsupportedEncodingException e; + // e; + // throw new RuntimeException(e); + // } + // + // public static BufferedReader getZippedReader(File file) + // { + // GZIPInputStream zos; + // FileInputStream fos = new FileInputStream(file); + // zos = new GZIPInputStream(fos); + // return getReader(zos); + // IOException ex; + // ex; + // throw Utils.runtime(ex); + // } + // + // public static BufferedWriter getZippedWriter(File file, boolean append) + // { + // GZIPOutputStream zos; + // FileOutputStream fos = new FileOutputStream(file, append); + // zos = new GZIPOutputStream(fos); + // return getWriter(zos); + // IOException ex; + // ex; + // throw Utils.runtime(ex); + // } + // + // public static Iterable grep(File baseDir, String regex, String fileNameRegex) { + // List files = find(baseDir, fileNameRegex); + // Pattern p = Pattern.compile(regex); + // List found = new ArrayList(); + // for (Iterator iterator = files.iterator(); iterator.hasNext();) { + // File file = (File) iterator.next(); + // String lines[] = StrUtils.splitLines(read(file)); + // String as[]; + // int j = (as = lines).length; + // for (int i = 0; i < j; i++) { + // String line = as[i]; + // if (p.matcher(line).find()) { + // found.add(new Pair2(line, file)); + // } + // } + // + // } + // + // return found; + // } + // + // public static boolean isSafe(String filename) { + // if (Utils.isBlank(filename)) { + // return false; + // } + // if (filename.contains("..")) { + // return false; + // } + // if (filename.contains(";")) { + // return false; + // } + // if (filename.contains("|")) { + // return false; + // } + // if (filename.contains(">")) { + // return false; + // } + // return !filename.contains("<"); + // } + // + // public static boolean isSymLink(File f) + // { + // File canon = f.getCanonicalFile(); + // if(!canon.getName().equals(f.getName())) + // { + // return true; + // } + // File parent; + // parent = f.getParentFile(); + // if(parent == null) + // { + // parent = f.getAbsoluteFile().getParentFile(); + // } + // if(parent == null) + // { + // return false; + // } + // File canonParent; + // parent = parent.getCanonicalFile(); + // canonParent = canon.getParentFile(); + // return !parent.equals(canonParent); + // IOException e; + // e; + // throw Utils.runtime(e); + // } + // + // public static Object load(File file) { + // BufferedReader reader = getReader(file); + // return XStreamUtils.serialiseFromXml(reader); + // } + // + // public static Properties loadProperties(File propsFile) { + // Exception exception; + // InputStream stream = null; + // Properties properties; + // try { + // stream = new FileInputStream(propsFile); + // Properties props = new Properties(); + // props.load(stream); + // properties = props; + // } catch (IOException e) { + // throw Utils.runtime(e); + // } finally { + // close(stream); + // } + // close(stream); + // return properties; + // throw exception; + // } + // + // public static File[] ls(File dir, String fileNameRegex) { + // if (!dir.isDirectory()) { + // throw new RuntimeException( + // (new StringBuilder()).append(dir).append(" is not a valid directory").toString()); + // } else { + // return dir.listFiles(getRegexFilter((new + // StringBuilder(".*")).append(fileNameRegex).toString())); + // } + // } + // + // public static void makeSymLink(File original, File out) { + // makeSymLink(original, out, true); + // } + // + // public static void makeSymLink(File original, File out, boolean overwrite) { + // if (!Utils.getOperatingSystem().contains("linux")) { + // throw new TodoException(); + // } + // if (original.getAbsolutePath().equals(out.getAbsolutePath())) { + // throw new IllegalArgumentException((new StringBuilder("Cannot sym-link to self: + // ")).append(original) + // .append(" = ").append(out).toString()); + // } + // if (!original.exists()) { + // throw new winterwell.utils.RuntimeException.FileNotFoundException(original); + // } + // if (!original.isDirectory() && !original.isFile()) { + // throw new RuntimeException((new StringBuilder("Weird: ")).append(original).toString()); + // } + // if (out.exists()) { + // if (overwrite) { + // delete(out); + // } else { + // throw new RuntimeException((new StringBuilder("Creating symlink failed: ")).append(out) + // .append(" already exists.").toString()); + // } + // } + // String err; + // original = original.getCanonicalFile(); + // ShellScript ss = new ShellScript( + // (new StringBuilder("ln -s ")).append(original).append(" ").append(out).toString()); + // ss.run(); + // ss.waitFor(); + // err = ss.getError(); + // if (Utils.isBlank(err)) { + // break MISSING_BLOCK_LABEL_276; + // } + // if (overwrite && err.contains("File exists")) { + // deleteNative(out); + // makeSymLink(original, out, overwrite); + // return; + // } + // try { + // throw new RuntimeException(err); + // } catch (Exception e) { + // throw Utils.runtime(e); + // } + // } + // + // public static File move(File src, File dest) throws RuntimeException { + // if (!src.exists()) { + // throw new AssertionError(); + // } + // File src2 = new File(src.getPath()); + // if (!src2.equals(src)) { + // throw new AssertionError(); + // } + // boolean ok = src2.renameTo(dest); + // if (ok) { + // return dest; + // } else { + // copy(src, dest); + // delete(src); + // return dest; + // } + // } + // + // public static int numLines(File file) { + // int cnt = 0; + // BufferedReader r = getReader(file); + // try { + // do { + // String line = r.readLine(); + // if (line == null) break; + // cnt++; + // } while (true); + // } catch (IOException e) { + // throw new RuntimeException(e); + // } + // return cnt; + // } + // + // public static void prepend(File file, String string) { + // if ((file.isDirectory() || string == null)) { + // throw new AssertionError(); + // } + // if (!file.exists() || file.length() == 0L) { + // write(file, string); + // return; + // } + // try { + // File temp = File.createTempFile("prepend", ""); + // write(temp, string); + // FileInputStream in = new FileInputStream(file); + // FileOutputStream out = new FileOutputStream(temp, true); + // copy(in, out); + // move(temp, file); + // } catch (IOException e) { + // throw new RuntimeException(e); + // } + // } + + public static String read(File file) throws RuntimeException { + try { + return read(((InputStream) (new FileInputStream(file)))); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } + } + + public static String read(InputStream in) { + return read(((Reader) (getReader(in)))); + } + + public static String read(Reader r) { + try (BufferedReader reader = (r instanceof BufferedReader) ? (BufferedReader) r : new BufferedReader(r);) { + int bufSize = 8192; + StringBuilder sb = new StringBuilder(bufSize); + char cbuf[] = new char[bufSize]; + do { + int chars = reader.read(cbuf); + if (chars == -1) break; + if (sb.length() == 0 && cbuf[0] == '\uFEFF') { + sb.append(cbuf, 1, chars - 1); + } else { + sb.append(cbuf, 0, chars); + } + } while (true); + return sb.toString(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + // public static byte[] readRaw(InputStream raw) + // { + // byte trimmed[]; + // byte all[] = new byte[10240]; + // int offset = 0; + // do + // { + // int space = all.length - offset; + // if(space < all.length / 8) + // { + // all = Arrays.copyOf(all, all.length * 2); + // space = all.length - offset; + // } + // int r = raw.read(all, offset, space); + // if(r == -1) + // { + // break; + // } + // offset += r; + // } while(true); + // trimmed = Arrays.copyOf(all, offset); + // return trimmed; + // Exception e; + // e; + // throw new RuntimeException(e); + // } + // + // public static String resolveDotDot(String absolutePath) + // { + // return (new File(absolutePath)).getCanonicalPath(); + // IOException e; + // e; + // throw Utils.runtime(e); + // } + // + // public static String safeFilename(String name) { + // return safeFilename(name, true); + // } + // + // public static String safeFilename(String name, boolean allowSubDirs) { + // if (name == null) { + // return "null"; + // } + // name = name.trim(); + // if (name.equals("")) { + // name = "empty"; + // } + // if (name.length() > 5000) { + // throw new IllegalArgumentException((new StringBuilder("Name is too long: + // ")).append(name).toString()); + // } + // name = name.replace("_", "__"); + // name = name.replace("..", "_."); + // name = name.replaceAll("[^ a-zA-Z0-9-_.~/\\\\]", ""); + // name = name.trim(); + // name = name.replaceAll("\\s+", "_"); + // if (!allowSubDirs) { + // name = name.replace("/", "_"); + // name = name.replace("\\", "_"); + // } + // for (; "./-\\".indexOf(name.charAt(name.length() - 1)) != -1; name = name.substring(0, + // name.length() - 1)) {} + // if (name.length() > 50) { + // name = (new StringBuilder(String.valueOf(name.substring(0, 10)))).append(name.hashCode()) + // .append(name.substring(name.length() - 10)).toString(); + // } + // return name; + // } + // + // public static void save(Object obj, File file) { + // if (file.getParentFile() != null) { + // file.getParentFile().mkdirs(); + // } + // write(file, XStreamUtils.serialiseToXml(obj)); + // } + // + // private static File setDataDir() + // { + // String dd = System.getenv("WINTERWELL_DATA"); + // if(!Utils.isBlank(dd)) + // { + // return (new File(dd)).getAbsoluteFile(); + // } + // File ddf; + // String home = System.getProperty("user.home"); + // ddf = new File(home, ".winterwell/data"); + // ddf.mkdirs(); + // if(ddf.exists() && ddf.isDirectory()) + // { + // return ddf; + // } + // File f; + // dd = "data"; + // f = (new File(dd)).getAbsoluteFile(); + // Log.report((new StringBuilder("Using fallback data directory ")).append(f).toString(), + // Level.WARNING); + // return f; + // Exception e; + // e; + // return null; + // } + + public static void write(File out, CharSequence page) { + try (BufferedWriter writer = getWriter(new FileOutputStream(out))) { + writer.append(page); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public static BufferedWriter getWriter(File file) { + try { + return new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF8")); + } catch (UnsupportedEncodingException | FileNotFoundException e) { + throw new RuntimeException(e); + } + } + + public static BufferedWriter getWriter(OutputStream out) { + OutputStreamWriter writer; + try { + writer = new OutputStreamWriter(out, "UTF8"); + return new BufferedWriter(writer); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } + } + + // public static BufferedReader getZippedReader(File file) + // { + // GZIPInputStream zos; + // FileInputStream fos = new FileInputStream(file); + // zos = new GZIPInputStream(fos); + // return getReader(zos); + // IOException ex; + // ex; + // throw Utils.runtime(ex); + // } + // + // public static BufferedWriter getZippedWriter(File file, boolean append) + // { + // GZIPOutputStream zos; + // FileOutputStream fos = new FileOutputStream(file, append); + // zos = new GZIPOutputStream(fos); + // return getWriter(zos); + // IOException ex; + // ex; + // throw Utils.runtime(ex); + // } + // + // public static Iterable grep(File baseDir, String regex, String fileNameRegex) { + // List files = find(baseDir, fileNameRegex); + // Pattern p = Pattern.compile(regex); + // List found = new ArrayList(); + // for (Iterator iterator = files.iterator(); iterator.hasNext();) { + // File file = (File) iterator.next(); + // String lines[] = StrUtils.splitLines(read(file)); + // String as[]; + // int j = (as = lines).length; + // for (int i = 0; i < j; i++) { + // String line = as[i]; + // if (p.matcher(line).find()) { + // found.add(new Pair2(line, file)); + // } + // } + // + // } + // + // return found; + // } + // + // public static boolean isSafe(String filename) { + // if (Utils.isBlank(filename)) { + // return false; + // } + // if (filename.contains("..")) { + // return false; + // } + // if (filename.contains(";")) { + // return false; + // } + // if (filename.contains("|")) { + // return false; + // } + // if (filename.contains(">")) { + // return false; + // } + // return !filename.contains("<"); + // } + // + // public static boolean isSymLink(File f) + // { + // File canon = f.getCanonicalFile(); + // if(!canon.getName().equals(f.getName())) + // { + // return true; + // } + // File parent; + // parent = f.getParentFile(); + // if(parent == null) + // { + // parent = f.getAbsoluteFile().getParentFile(); + // } + // if(parent == null) + // { + // return false; + // } + // File canonParent; + // parent = parent.getCanonicalFile(); + // canonParent = canon.getParentFile(); + // return !parent.equals(canonParent); + // IOException e; + // e; + // throw Utils.runtime(e); + // } + // + // public static Object load(File file) { + // BufferedReader reader = getReader(file); + // return XStreamUtils.serialiseFromXml(reader); + // } + // + // public static Properties loadProperties(File propsFile) { + // Exception exception; + // InputStream stream = null; + // Properties properties; + // try { + // stream = new FileInputStream(propsFile); + // Properties props = new Properties(); + // props.load(stream); + // properties = props; + // } catch (IOException e) { + // throw Utils.runtime(e); + // } finally { + // close(stream); + // } + // close(stream); + // return properties; + // throw exception; + // } + // + // public static File[] ls(File dir, String fileNameRegex) { + // if (!dir.isDirectory()) { + // throw new RuntimeException( + // (new StringBuilder()).append(dir).append(" is not a valid directory").toString()); + // } else { + // return dir.listFiles(getRegexFilter((new + // StringBuilder(".*")).append(fileNameRegex).toString())); + // } + // } + // + // public static void makeSymLink(File original, File out) { + // makeSymLink(original, out, true); + // } + // + // public static void makeSymLink(File original, File out, boolean overwrite) { + // if (!Utils.getOperatingSystem().contains("linux")) { + // throw new TodoException(); + // } + // if (original.getAbsolutePath().equals(out.getAbsolutePath())) { + // throw new IllegalArgumentException((new StringBuilder("Cannot sym-link to self: + // ")).append(original) + // .append(" = ").append(out).toString()); + // } + // if (!original.exists()) { + // throw new winterwell.utils.RuntimeException.FileNotFoundException(original); + // } + // if (!original.isDirectory() && !original.isFile()) { + // throw new RuntimeException((new StringBuilder("Weird: ")).append(original).toString()); + // } + // if (out.exists()) { + // if (overwrite) { + // delete(out); + // } else { + // throw new RuntimeException((new StringBuilder("Creating symlink failed: ")).append(out) + // .append(" already exists.").toString()); + // } + // } + // String err; + // original = original.getCanonicalFile(); + // ShellScript ss = new ShellScript( + // (new StringBuilder("ln -s ")).append(original).append(" ").append(out).toString()); + // ss.run(); + // ss.waitFor(); + // err = ss.getError(); + // if (Utils.isBlank(err)) { + // break MISSING_BLOCK_LABEL_276; + // } + // if (overwrite && err.contains("File exists")) { + // deleteNative(out); + // makeSymLink(original, out, overwrite); + // return; + // } + // try { + // throw new RuntimeException(err); + // } catch (Exception e) { + // throw Utils.runtime(e); + // } + // } + // + // public static File move(File src, File dest) throws RuntimeException { + // if (!src.exists()) { + // throw new AssertionError(); + // } + // File src2 = new File(src.getPath()); + // if (!src2.equals(src)) { + // throw new AssertionError(); + // } + // boolean ok = src2.renameTo(dest); + // if (ok) { + // return dest; + // } else { + // copy(src, dest); + // delete(src); + // return dest; + // } + // } + // + // public static int numLines(File file) { + // int cnt = 0; + // BufferedReader r = getReader(file); + // try { + // do { + // String line = r.readLine(); + // if (line == null) break; + // cnt++; + // } while (true); + // } catch (IOException e) { + // throw new RuntimeException(e); + // } + // return cnt; + // } + // + // public static void prepend(File file, String string) { + // if ((file.isDirectory() || string == null)) { + // throw new AssertionError(); + // } + // if (!file.exists() || file.length() == 0L) { + // write(file, string); + // return; + // } + // try { + // File temp = File.createTempFile("prepend", ""); + // write(temp, string); + // FileInputStream in = new FileInputStream(file); + // FileOutputStream out = new FileOutputStream(temp, true); + // copy(in, out); + // move(temp, file); + // } catch (IOException e) { + // throw new RuntimeException(e); + // } + // } + // + // public static String read(File file) + // throws RuntimeException + // { + // return read(((InputStream) (new FileInputStream(file)))); + // IOException e; + // e; + // throw Utils.runtime(e); + // } + // + // public static String read(InputStream in) { + // return read(((Reader) (getReader(in)))); + // } + // + // public static String read(Reader r) { + // Exception exception; + // String s; + // try { + // BufferedReader reader = (r instanceof BufferedReader) ? (BufferedReader) r : new + // BufferedReader(r); + // int bufSize = 8192; + // StringBuilder sb = new StringBuilder(8192); + // char cbuf[] = new char[8192]; + // do { + // int chars = reader.read(cbuf); + // if (chars == -1) { + // break; + // } + // if (sb.length() == 0 && cbuf[0] == '\uFEFF') { + // sb.append(cbuf, 1, chars - 1); + // } else { + // sb.append(cbuf, 0, chars); + // } + // } while (true); + // s = sb.toString(); + // } catch (IOException e) { + // throw new RuntimeException(e); + // } finally { + // close(r); + // } + // close(r); + // return s; + // throw exception; + // } + // + // public static byte[] readRaw(InputStream raw) + // { + // byte trimmed[]; + // byte all[] = new byte[10240]; + // int offset = 0; + // do + // { + // int space = all.length - offset; + // if(space < all.length / 8) + // { + // all = Arrays.copyOf(all, all.length * 2); + // space = all.length - offset; + // } + // int r = raw.read(all, offset, space); + // if(r == -1) + // { + // break; + // } + // offset += r; + // } while(true); + // trimmed = Arrays.copyOf(all, offset); + // return trimmed; + // Exception e; + // e; + // throw new RuntimeException(e); + // } + // + // public static String resolveDotDot(String absolutePath) + // { + // return (new File(absolutePath)).getCanonicalPath(); + // IOException e; + // e; + // throw Utils.runtime(e); + // } + // + // public static String safeFilename(String name) { + // return safeFilename(name, true); + // } + // + // public static String safeFilename(String name, boolean allowSubDirs) { + // if (name == null) { + // return "null"; + // } + // name = name.trim(); + // if (name.equals("")) { + // name = "empty"; + // } + // if (name.length() > 5000) { + // throw new IllegalArgumentException((new StringBuilder("Name is too long: + // ")).append(name).toString()); + // } + // name = name.replace("_", "__"); + // name = name.replace("..", "_."); + // name = name.replaceAll("[^ a-zA-Z0-9-_.~/\\\\]", ""); + // name = name.trim(); + // name = name.replaceAll("\\s+", "_"); + // if (!allowSubDirs) { + // name = name.replace("/", "_"); + // name = name.replace("\\", "_"); + // } + // for (; "./-\\".indexOf(name.charAt(name.length() - 1)) != -1; name = name.substring(0, + // name.length() - 1)) {} + // if (name.length() > 50) { + // name = (new StringBuilder(String.valueOf(name.substring(0, 10)))).append(name.hashCode()) + // .append(name.substring(name.length() - 10)).toString(); + // } + // return name; + // } + // + // public static void save(Object obj, File file) { + // if (file.getParentFile() != null) { + // file.getParentFile().mkdirs(); + // } + // write(file, XStreamUtils.serialiseToXml(obj)); + // } + // + // private static File setDataDir() + // { + // String dd = System.getenv("WINTERWELL_DATA"); + // if(!Utils.isBlank(dd)) + // { + // return (new File(dd)).getAbsoluteFile(); + // } + // File ddf; + // String home = System.getProperty("user.home"); + // ddf = new File(home, ".winterwell/data"); + // ddf.mkdirs(); + // if(ddf.exists() && ddf.isDirectory()) + // { + // return ddf; + // } + // File f; + // dd = "data"; + // f = (new File(dd)).getAbsoluteFile(); + // Log.report((new StringBuilder("Using fallback data directory ")).append(f).toString(), + // Level.WARNING); + // return f; + // Exception e; + // e; + // return null; + // } + +} diff --git a/plugin/src/winterwell/markdown/util/IProperties.java b/plugin/src/winterwell/markdown/util/IProperties.java new file mode 100644 index 0000000..bbba574 --- /dev/null +++ b/plugin/src/winterwell/markdown/util/IProperties.java @@ -0,0 +1,16 @@ +package winterwell.markdown.util; + +import java.util.Collection; + +public interface IProperties { + + public abstract boolean containsKey(Key key); + + public abstract Object get(Key key); + + public abstract Collection getKeys(); + + public abstract boolean isTrue(Key key); + + public abstract Object put(Key key, Object obj); +} diff --git a/plugin/src/winterwell/markdown/util/IReplace.java b/plugin/src/winterwell/markdown/util/IReplace.java new file mode 100644 index 0000000..1da7fef --- /dev/null +++ b/plugin/src/winterwell/markdown/util/IReplace.java @@ -0,0 +1,8 @@ +package winterwell.markdown.util; + +import java.util.regex.Matcher; + +public interface IReplace { + + public abstract void appendReplacementTo(StringBuilder stringbuilder, Matcher matcher); +} diff --git a/plugin/src/winterwell/markdown/util/IntRange.java b/plugin/src/winterwell/markdown/util/IntRange.java new file mode 100644 index 0000000..686e987 --- /dev/null +++ b/plugin/src/winterwell/markdown/util/IntRange.java @@ -0,0 +1,36 @@ +package winterwell.markdown.util; + +import java.util.AbstractList; + +public final class IntRange extends AbstractList { + + public final int high; + public final int low; + + public IntRange(int a, int b) { + if (a < b) { + low = a; + high = b; + } else { + low = b; + high = a; + } + } + + public boolean contains(int x) { + return x >= low && x <= high; + } + + public Integer get(int index) { + if (!contains(index + low)) throw new AssertionError(); + return Integer.valueOf(index + low); + } + + public int size() { + return (high - low) + 1; + } + + public String toString() { + return (new StringBuilder("[")).append(low).append(", ").append(high).append("]").toString(); + } +} diff --git a/plugin/src/winterwell/markdown/util/Key.java b/plugin/src/winterwell/markdown/util/Key.java new file mode 100644 index 0000000..47ac85d --- /dev/null +++ b/plugin/src/winterwell/markdown/util/Key.java @@ -0,0 +1,70 @@ +package winterwell.markdown.util; + +import java.io.Serializable; +import java.util.Map; + +public class Key implements Comparable, Serializable { + + public static class RichKey extends Key { + + public final String description; + public final Class valueClass; + + public RichKey(String name, Class valueClass, String description) { + super(name); + if (valueClass == null) { + throw new AssertionError(); + } else { + this.valueClass = valueClass; + this.description = description; + return; + } + } + } + + private final String name; + + public Key(String name) { + if (name == null) { + throw new AssertionError(); + } else { + this.name = name; + return; + } + } + + @Override + public final boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null) return false; + if (!(obj instanceof Key)) return false; + return name.equals(((Key) obj).name); + } + + public Object getFromMap(Map map) { + return map.get(name); + } + + public final String getName() { + return name; + } + + @Override + public final int hashCode() { + return 31 + name.hashCode(); + } + + @Override + public String toString() { + return name; + } + + public int compareTo(Key key) { + return name.compareTo(key.name); + } + + @Override + public int compareTo(String o) { + return name.compareTo(o); + } +} diff --git a/plugin/src/winterwell/markdown/util/Mutable.java b/plugin/src/winterwell/markdown/util/Mutable.java new file mode 100644 index 0000000..8b41f1c --- /dev/null +++ b/plugin/src/winterwell/markdown/util/Mutable.java @@ -0,0 +1,72 @@ +package winterwell.markdown.util; + +public final class Mutable { + + public static final class Dble { + + public String toString() { + return (new StringBuilder()).append(value).toString(); + } + + public double value; + + public Dble() { + this(0.0D); + } + + public Dble(double v) { + value = v; + } + } + + public static final class Int { + + public String toString() { + return (new StringBuilder()).append(value).toString(); + } + + public int value; + + public Int() { + this(0); + } + + public Int(int v) { + value = v; + } + } + + public static final class Ref { + + public String toString() { + return Printer.toString(value); + } + + public Object value; + + public Ref() {} + + public Ref(Object value) { + this.value = value; + } + } + + public static final class Strng { + + public String toString() { + return value; + } + + public String value; + + public Strng() { + this(""); + } + + public Strng(String v) { + value = v; + } + } + + public Mutable() {} +} diff --git a/plugin/src/winterwell/markdown/util/Pair.java b/plugin/src/winterwell/markdown/util/Pair.java new file mode 100644 index 0000000..f701d59 --- /dev/null +++ b/plugin/src/winterwell/markdown/util/Pair.java @@ -0,0 +1,60 @@ +package winterwell.markdown.util; + +public class Pair { + + public final T first; + public final T second; + + public Pair(T first, T second) { + this.first = first; + this.second = second; + } + + /** + * Return the first item in the pair + * + * @return the first item in the pair + */ + public T getFirst() { + return first; + } + + /** + * Return the second item in the pair + * + * @return the second item in the pair + */ + public T getSecond() { + return second; + } + + @Override + public String toString() { + return "Pair [first=" + first + ", second=" + second + "]"; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((first == null) ? 0 : first.hashCode()); + result = prime * result + ((second == null) ? 0 : second.hashCode()); + return result; + } + + @SuppressWarnings("rawtypes") + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null) return false; + if (getClass() != obj.getClass()) return false; + Pair other = (Pair) obj; + if (first == null) { + if (other.first != null) return false; + } else if (!first.equals(other.first)) return false; + if (second == null) { + if (other.second != null) return false; + } else if (!second.equals(other.second)) return false; + return true; + } +} diff --git a/plugin/src/winterwell/markdown/util/Printer.java b/plugin/src/winterwell/markdown/util/Printer.java new file mode 100644 index 0000000..e797aa2 --- /dev/null +++ b/plugin/src/winterwell/markdown/util/Printer.java @@ -0,0 +1,298 @@ +package winterwell.markdown.util; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.regex.Pattern; + +import org.w3c.dom.Node; + +public class Printer { + + private static boolean useListMarkers; + // static final Map useMe = Collections.synchronizedMap(new HashMap()); + private static final Class ArraysListType = Arrays.asList(new Object[0]).getClass(); + private static final DecimalFormat df = new DecimalFormat("#.##"); + public static final Key INDENT; + // private static final int MAX_ITEMS = 12; + static final Pattern n = Pattern.compile("[1-9]"); + // private static final IPrinter PLAIN_TO_STRING = new IPrinter() { + // + // public void append(Object obj, StringBuilder sb) { + // sb.append(obj); + // } + // + // public String toString() { + // return "PLAIN_TO_STRING"; + // } + // + // }; + + static { + INDENT = new Key("Printer.indent"); + Environment.putDefault(INDENT, ""); + } + + public static interface IPrinter { + + public abstract void append(Object obj, StringBuilder stringbuilder); + } + + public Printer() {} + + public static void addIndent(String indent) { + Environment env = Environment.get(); + String oldindent = (String) env.get(INDENT); + String newIndent = (new StringBuilder(String.valueOf(oldindent))).append(indent).toString(); + env.put(INDENT, newIndent); + } + + private static void append(Object x, StringBuilder sb) { + if (x == null) { + return; + } + if (x instanceof CharSequence) { + sb.append((CharSequence) x); + return; + } + if (x.getClass().isArray()) { + for (Object y : (Object[]) x) { + sb.append(y); + } + return; + } + if (x instanceof Number) { + sb.append(toStringNumber((Number) x)); + return; + } + if ((x instanceof ArrayList) || (x instanceof HashSet) || (x instanceof ArraySet) + || x.getClass() == ArraysListType) { + append(sb, (Collection) x, ", "); + return; + } + if (x instanceof HashMap) { + append(sb, (Map) x, (new StringBuilder(String.valueOf(Strings.EOL))) + .append((String) Environment.get().get(INDENT)).toString(), ": ", "{}"); + return; + } + // if (ReflectionUtils.hasMethod(x.getClass(), "toString")) { + // useMe.put(x.getClass(), PLAIN_TO_STRING); + // sb.append(x.toString()); + // return; + // } + if (x instanceof Iterable) { + List target = new ArrayList<>(); + for (Object y : (Iterable) x) { + target.add(y); + } + x = target; + } + if (x instanceof Enumeration) { + x = Collections.list((Enumeration) x); + } + if (x instanceof Collection) { + append(sb, (Collection) x, ", "); + return; + } + if (x instanceof Map) { + append(sb, (Map) x, (new StringBuilder(String.valueOf(Strings.EOL))) + .append((String) Environment.get().get(INDENT)).toString(), ": ", "{}"); + return; + } + if (x instanceof Exception) { + sb.append(toString((Exception) x, true)); + return; + } + if (x instanceof Node) { + Node node = (Node) x; + sb.append((new StringBuilder("<")).append(node.getNodeName()).append(">").append(node.getTextContent()) + .append("").toString()); + return; + } else { + sb.append(x); + return; + } + } + + public static StringBuilder append(StringBuilder sb, Collection list, String separator) { + boolean added = false; + if (useListMarkers) { + sb.append('['); + } + for (Iterator iterator = list.iterator(); iterator.hasNext();) { + Object y = iterator.next(); + if (y != null) { + added = true; + if (y == list) { + sb.append("(this Collection)"); + } else { + append(y, sb); + sb.append(separator); + } + } + } + + if (added) { + Strings.pop(sb, separator.length()); + } + if (useListMarkers) { + sb.append(']'); + } + return sb; + } + + public static void append(StringBuilder sb, Map x, String entrySeparator, String keyValueSeparator, + String startEnd) { + if (startEnd != null && startEnd.length() != 0 && startEnd.length() != 2) { + throw new AssertionError(); + } + List keys = new ArrayList<>(x.keySet()); + if (keys.size() > 12) { + keys = keys.subList(0, 12); + } + if (startEnd != null && startEnd.length() > 0) { + sb.append(startEnd.charAt(0)); + } + for (Iterator iterator = keys.iterator(); iterator.hasNext(); sb.append(entrySeparator)) { + Object k = iterator.next(); + sb.append(toString(k)); + sb.append(keyValueSeparator); + sb.append(toString(x.get(k))); + } + + if (keys.size() > 1) { + Strings.pop(sb, entrySeparator.length()); + } + if (startEnd != null && startEnd.length() > 1) { + sb.append(startEnd.charAt(1)); + } + } + + public static void appendFormat(StringBuilder result, String message, Object args[]) { + for (int i = 0; i < args.length; i++) { + message = message.replace((new StringBuilder("{")).append(i).append("}").toString(), toString(args[i])); + } + + result.append(message); + } + + public static String format(String message, Object args[]) { + for (int i = 0; i < args.length; i++) { + message = message.replace((new StringBuilder("{")).append(i).append("}").toString(), toString(args[i])); + } + + return message; + } + + public static void formatOut(String message, Object args[]) { + String fm = format(message, args); + System.out.println(fm); + } + + public static void out(Object x[]) { + System.out.println(toString(((Object) (x)))); + } + + public static String prettyNumber(double x) { + return prettyNumber(x, 3); + } + + public static String prettyNumber(double x, int sigFigs) { + if (x >= 1000000D) { + return (new StringBuilder(String.valueOf(Strings.toNSigFigs(x / 1000000D, sigFigs)))).append(" million") + .toString(); + } + if (x >= 1000D) { + String s = Strings.toNSigFigs(x, sigFigs); + x = Double.valueOf(s).doubleValue(); + DecimalFormat f = new DecimalFormat("###,###"); + return f.format(x); + } else { + return Strings.toNSigFigs(x, sigFigs); + } + } + + public static void removeIndent(String indent) { + Environment env = Environment.get(); + String oldindent = (String) env.get(INDENT); + if (!oldindent.endsWith(indent)) { + throw new AssertionError(); + } else { + String newIndent = oldindent.substring(0, oldindent.length() - indent.length()); + env.put(INDENT, newIndent); + return; + } + } + + // public static void setUseListMarkers(boolean useListMarkers) { + // useListMarkers = useListMarkers; + // } + + public static String toString(Collection list, String separator) { + StringBuilder sb = new StringBuilder(); + append(sb, list, separator); + return sb.toString(); + } + + public static String toString(Map x, String entrySeparator, String keyValueSeparator) { + StringBuilder sb = new StringBuilder(); + append(sb, x, entrySeparator, keyValueSeparator, "{}"); + return sb.toString(); + } + + public static String toString(Object x) { + if (x == null) { + return ""; + } else { + StringBuilder sb = new StringBuilder(); + append(x, sb); + return sb.toString(); + } + } + + public static String toString(Throwable x, boolean stacktrace) { + if (!stacktrace) { + return x.getMessage() != null ? (new StringBuilder(String.valueOf(x.getClass().getSimpleName()))) + .append(": ").append(x.getMessage()).toString() : x.getClass().getSimpleName(); + } else { + StringWriter w = new StringWriter(); + w.append((new StringBuilder()).append(x.getClass()).append(": ").append(x.getMessage()).append(Strings.EOL) + .append((String) Environment.get().get(INDENT)).append("\t").toString()); + try (PrintWriter pw = new PrintWriter(w);) { + x.printStackTrace(pw); + pw.flush(); + } + return w.toString(); + } + } + + public static String toStringNumber(Number x) { + float f = x.floatValue(); + if (f == (float) Math.round(f)) { + return Integer.toString((int) f); + } + if (Math.abs(f) >= 1.0F) { + return df.format(f); + } + String fs = Float.toString(f); + if (fs.contains("E")) { + return fs; + } + String fss = Strings.substring(fs, 0, 5); + if (n.matcher(fss).find()) { + return fss; + } else { + return fs; + } + } +} diff --git a/plugin/src/winterwell/markdown/util/Process.java b/plugin/src/winterwell/markdown/util/Process.java new file mode 100644 index 0000000..0166236 --- /dev/null +++ b/plugin/src/winterwell/markdown/util/Process.java @@ -0,0 +1,196 @@ +package winterwell.markdown.util; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class Process { + + boolean closed; + private String command; + private boolean echo; + private StreamGobbler err; + private StreamGobbler out; + private final ProcessBuilder pb; + private java.lang.Process process; + + public Process(List command) { + pb = new ProcessBuilder(command); + } + + public Process(String command) { + this.command = command; + pb = new ProcessBuilder(parse(command)); + } + + private void closeStreams() { + if (process == null) return; + if (err != null) err.pleaseStop(); + if (out != null) out.pleaseStop(); + + FileUtils.close(process.getInputStream()); + FileUtils.close(process.getOutputStream()); + FileUtils.close(process.getErrorStream()); + } + + public void destroy() { + if (closed) { + return; + } else { + closed = true; + process.destroy(); + closeStreams(); + return; + } + } + + protected void finalize() throws Throwable { + super.finalize(); + closeStreams(); + } + + public String getCommand() { + return command != null ? command : Printer.toString(pb.command(), " "); + } + + public Map getEnvironment() { + return pb.environment(); + } + + public String getError() { + try { + return err != null ? err.getString() : ""; + } catch (IOException e) { + return ""; + } + } + + public String getOutput() { + try { + return out.getString(); + } catch (IOException e) { + return ""; + } + } + + List parse(String command) { + List bits = new ArrayList(); + StringBuilder bit = new StringBuilder(); + boolean inQuotes = false; + char ac[]; + int j = (ac = command.toCharArray()).length; + for (int i = 0; i < j; i++) { + char c = ac[i]; + if (inQuotes) { + bit.append(c); + if (c == '"') { + inQuotes = false; + } + } else if (Character.isWhitespace(c)) { + if (bit.length() != 0) { + bits.add(bit.toString()); + bit = new StringBuilder(); + } + } else { + bit.append(c); + if (c == '"') { + inQuotes = true; + } + } + } + + if (bit.length() != 0) { + bits.add(bit.toString()); + } + String osName = System.getProperty("os.name"); + if (osName.equals("Windows 95")) { + ArrayList wbits = new ArrayList(bits.size() + 2); + wbits.add("command.com"); + wbits.add("/C"); + wbits.addAll(bits); + bits = wbits; + } else if (osName.startsWith("Windows")) { + ArrayList wbits = new ArrayList(bits.size() + 2); + wbits.add("cmd.exe"); + wbits.add("/C"); + wbits.addAll(bits); + bits = wbits; + } + return bits; + } + + public void run() { + try { + process = pb.start(); + out = new StreamGobbler(process.getInputStream()); + if (echo) out.setEcho(true); + out.start(); + if (!pb.redirectErrorStream()) { + err = new StreamGobbler(process.getErrorStream()); + if (echo) err.setEcho(true); + err.start(); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public void setDirectory(File dir) { + pb.directory(dir); + } + + public void setEcho(boolean echo) { + if (process != null) { + throw new AssertionError("do earlier!"); + } else { + this.echo = echo; + return; + } + } + + public void setRedirectErrorStream(boolean redirect) { + pb.redirectErrorStream(redirect); + } + + public String toString() { + String data = ""; + try { + data = out.getString(); + } catch (IOException e) {} + return (new StringBuilder(String.valueOf(pb.command().toString()))).append("\n").append(data).toString(); + } + + public int waitFor() { + sleep(5L); + int v = 0; + try { + v = process.waitFor(); + } catch (InterruptedException e) {} + closeStreams(); + return v; + } + + public int waitFor(long timeout) { + if (timeout < 1L) return waitFor(); + + sleep(5L); + + TimeOut interrupter = new TimeOut(timeout); + int v = 0; + try { + v = process.waitFor(); + } catch (InterruptedException e) {} + interrupter.cancel(); + closeStreams(); + return v; + + } + + private void sleep(long millis) { + try { + Thread.sleep(millis); + } catch (InterruptedException e) {} + } +} diff --git a/plugin/src/winterwell/markdown/util/StackKey.java b/plugin/src/winterwell/markdown/util/StackKey.java new file mode 100644 index 0000000..8cbc436 --- /dev/null +++ b/plugin/src/winterwell/markdown/util/StackKey.java @@ -0,0 +1,8 @@ +package winterwell.markdown.util; + +final class StackKey extends Key { + + public StackKey(Key key) { + super((new StringBuilder(String.valueOf(key.getName()))).append(".envstack").toString()); + } +} diff --git a/plugin/src/winterwell/markdown/util/StreamGobbler.java b/plugin/src/winterwell/markdown/util/StreamGobbler.java new file mode 100644 index 0000000..b728044 --- /dev/null +++ b/plugin/src/winterwell/markdown/util/StreamGobbler.java @@ -0,0 +1,74 @@ +package winterwell.markdown.util; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; + +public final class StreamGobbler extends Thread { + + private boolean echo; + private IOException ex; + private final InputStream is; + private boolean stopFlag; + private StringBuffer stringBuffer; + + public StreamGobbler(InputStream is) { + super((new StringBuilder("gobbler:")).append(is.toString()).toString()); + setDaemon(true); + this.is = is; + stringBuffer = new StringBuffer(); + } + + public void clearString() { + stringBuffer = new StringBuffer(); + } + + public String getString() throws IOException { + if (ex != null) throw new IOException(ex); + return stringBuffer.toString(); + } + + public boolean hasText() { + return stringBuffer.length() != 0; + } + + public void pleaseStop() { + try { + is.close(); + } catch (IOException e) {} + stopFlag = true; + } + + public void run() { + try { + InputStreamReader isr = new InputStreamReader(is); + BufferedReader br = new BufferedReader(isr); + while (!stopFlag) { + int ich = br.read(); + if (ich == -1) { + break; + } + char ch = (char) ich; + stringBuffer.append(ch); + if (echo) { + System.out.print(ch); + } + } + } catch (IOException ioe) { + if (stopFlag) { + return; + } + ioe.printStackTrace(); + ex = ioe; + } + } + + public void setEcho(boolean echo) { + this.echo = echo; + } + + public String toString() { + return (new StringBuilder("StreamGobbler:")).append(stringBuffer.toString()).toString(); + } +} diff --git a/plugin/src/winterwell/markdown/util/Strings.java b/plugin/src/winterwell/markdown/util/Strings.java new file mode 100644 index 0000000..56851fc --- /dev/null +++ b/plugin/src/winterwell/markdown/util/Strings.java @@ -0,0 +1,759 @@ +package winterwell.markdown.util; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.text.Normalizer; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public final class Strings { + + public static final String APOSTROPHES = "'`\u2019\u2018\u2019\u02BC"; + public static final String ARRAY[] = new String[0]; + public static final Pattern ASCII_PUNCTUATION = Pattern + .compile("[.<>,@~\\{\\}\\[\\]-_+=()*%?^$!\\\\/|\254:;#`'\"]"); + public static final Pattern BLANK_LINE = Pattern.compile("^\\s+$", 8); + public static final String COMMON_BULLETS = "-*\uE00Co"; + public static final String DASHES = "\u2010\u2011\u2012\u2013\u2014\u2015-"; + public static final String ENCODING_STD_ISO_LATIN = "ISO-8859-1"; + public static final String ENCODING_UTF8 = "UTF8"; + public static final String EOL = System.getProperty("line.separator"); + public static final Pattern LINEENDINGS = Pattern.compile("(\r\n|\r|\n)"); + public static final String LOREM_IPSUM = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; + public static final String QUOTES = "\"\u201C\u201D\u201E\u201F\u275B\u275C\u275D\u275E\253\273"; + private static final double TENS[]; + + public static final Pattern TAG_REGEX = Pattern.compile("<(/?[a-zA-Z][a-zA-Z0-9]*)[^>]*>", 32); + public static final Pattern pComment = Pattern.compile("", 32); + public static final Pattern pDocType = Pattern.compile("", 34); + public static final Pattern pScriptOrStyle = Pattern.compile("<(script|style)[^<>]*>.+?", 34); + + static { + TENS = new double[20]; + TENS[0] = Math.pow(10D, -6D); + for (int i = 1; i < TENS.length; i++) { + TENS[i] = 10D * TENS[i - 1]; + } + } + + public static char charAt(CharSequence chars, int i) { + return i >= chars.length() ? '\0' : chars.charAt(i); + } + + public static String compactWhitespace(String txt) { + if (txt == null) { + return null; + } else { + txt = txt.trim(); + txt = txt.replaceAll("\\s+", " "); + txt = txt.replaceAll("> <", "><"); + return txt; + } + } + + public static boolean containsIgnoreCase(CharSequence pageTitle, String snippet) { + String pt = pageTitle.toString().toLowerCase(); + return pt.contains(snippet.toLowerCase()); + } + + private static String convertToJavaString(String txt) { + String lines[] = splitLines(txt); + String jtxt = ""; + String as[]; + int j = (as = lines).length; + for (int i = 0; i < j; i++) { + String line = as[i]; + line = line.replace("\\", "\\\\"); + line = line.replace("\"", "\\\""); + jtxt = (new StringBuilder(String.valueOf(jtxt))).append("+\"").append(line).append("\\n\"\n").toString(); + } + + jtxt = jtxt.substring(1); + return jtxt; + } + + public static String ellipsize(String input, int maxLength) { + if (input == null) { + return null; + } + if (input.length() <= maxLength) { + return input; + } + if (maxLength < 3) { + return ""; + } + if (maxLength == 3) { + return "..."; + } + int i = input.lastIndexOf(' ', maxLength - 3); + if (i < 1 || i < maxLength - 10) { + i = maxLength - 3; + } + return (new StringBuilder(String.valueOf(substring(input, 0, i)))).append("...").toString(); + } + + public static void endLine(StringBuilder text) { + newLine(text); + } + + public static Map extractHeader(StringBuilder txt) { + if (txt == null) { + throw new AssertionError(); + } + String lines[] = splitLines(txt.toString()); + String key = null; + StringBuilder value = new StringBuilder(); + Map headers = new LinkedHashMap<>(); + for (String line : lines) { + if (line.trim().isEmpty()) break; + int i = line.indexOf(":"); + if (i == -1) { + value.append(EOL); + value.append(line); + } else { + if (key != null) { + headers.put(key, value.toString()); + } + value = new StringBuilder(); + key = line.substring(0, i).toLowerCase(); + if (++i != line.length()) { + if (line.charAt(i) == ' ') i++; + if (i != line.length()) { + value.append(line.substring(i)); + } + } + } + } + + if (key != null) { + headers.put(key, value.toString()); + } + if (headers.size() == 0) { + return headers; + } + Pattern blankLine = Pattern.compile("^\\s*$", 8); + Matcher m = blankLine.matcher(txt); + boolean ok = m.find(); + if (ok) { + txt.delete(0, m.end()); + if (txt.length() != 0) { + if (txt.charAt(0) == '\r' && txt.charAt(1) == '\n') { + txt.delete(0, 2); + } else { + txt.delete(0, 1); + } + } + } + return headers; + } + + public static String[] find(Pattern pattern, String input) { + Matcher m = pattern.matcher(input); + boolean fnd = m.find(); + if (!fnd) { + return null; + } + int n = m.groupCount() + 1; + String grps[] = new String[n]; + grps[0] = m.group(); + for (int i = 1; i < n; i++) { + grps[i] = m.group(i); + } + + return grps; + } + + public static String[] find(String regex, String string) { + return find(Pattern.compile(regex), string); + } + + public static Pair findLenient(String content, String text, int start) { + content = normalise(content); + text = normalise(text); + content = content.toLowerCase(); + text = text.toLowerCase(); + String regex = content.replace("\\", "\\\\"); + String SPECIAL = "()[]{}$^.*+?"; + for (int i = 0; i < SPECIAL.length(); i++) { + char c = SPECIAL.charAt(i); + regex = regex.replace((new StringBuilder()).append(c).toString(), + (new StringBuilder("\\")).append(c).toString()); + } + + regex = regex.replaceAll("\\s+", "\\\\s+"); + Pattern p = Pattern.compile(regex); + Matcher m = p.matcher(text); + if (m.find(start)) { + return new Pair<>(Integer.valueOf(m.start()), Integer.valueOf(m.end())); + } else { + return null; + } + } + + public static String getFirstName(String name) { + name = name.trim(); + if (name.contains("\n")) { + throw new AssertionError(name); + } + String nameBits[] = name.split("[ \t\\.,]+"); + String firstName = nameBits[0]; + firstName = toTitleCase(firstName); + List titles = Arrays + .asList(new String[] { "Mr", "Mrs", "Ms", "Dr", "Doctor", "Prof", "Professor", "Sir", "Director" }); + if (titles.contains(firstName)) { + firstName = nameBits[1]; + firstName = toTitleCase(firstName); + } + return firstName; + } + + public static String getHeaderString(Map header) { + StringBuilder sb = new StringBuilder(); + String ks; + String vs; + for (Iterator iterator = header.keySet().iterator(); iterator.hasNext(); sb + .append((new StringBuilder(String.valueOf(ks))).append(": ").append(vs).append(EOL).toString())) { + Object k = iterator.next(); + ks = k.toString().trim().toLowerCase(); + vs = header.get(k).toString(); + } + + return sb.toString(); + } + + public static int[] getLineStarts(String text) { + List starts = new ArrayList<>(); + for (int i = 0; i < text.length(); i++) { + char c = text.charAt(i); + if (c == '\n') { + starts.add(Integer.valueOf(i)); + } + if (c == '\r') { + int ni = i + 1; + if (ni == text.length() || text.charAt(ni) != '\n') { + starts.add(Integer.valueOf(i)); + } + } + } + int[] results = new int[starts.size()]; + for (int i = 0; i < starts.size(); i++) { + results[i] = starts.get(i); + } + return results; + } + + private static String hash(String hashAlgorithm, String txt) { + StringBuffer result; + MessageDigest md = null; + try { + md = MessageDigest.getInstance(hashAlgorithm); + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException(e); + } + result = new StringBuffer(); + try { + byte abyte0[]; + int j = (abyte0 = md.digest(txt.getBytes("UTF8"))).length; + for (int i = 0; i < j; i++) { + byte b = abyte0[i]; + result.append(Integer.toHexString((b & 0xf0) >>> 4)); + result.append(Integer.toHexString(b & 0xf)); + } + + } catch (UnsupportedEncodingException e) { + byte abyte1[]; + int l = (abyte1 = md.digest(txt.getBytes())).length; + for (int k = 0; k < l; k++) { + byte b = abyte1[k]; + result.append(Integer.toHexString((b & 0xf0) >>> 4)); + result.append(Integer.toHexString(b & 0xf)); + } + + } + return result.toString(); + } + + public static boolean isJustDigits(String possNumber) { + for (int i = 0; i < possNumber.length(); i++) { + if (!Character.isDigit(possNumber.charAt(i))) { + return false; + } + } + + return true; + } + + public static boolean isNumber(String x) { + if (x == null) { + return false; + } + try { + Double.valueOf(x); + } catch (Exception e) { + return false; + } + return true; + } + + public static boolean isOnly(String txt, char c) { + if (txt == null || txt.length() == 0) { + return false; + } + for (int i = 0; i < txt.length(); i++) { + if (txt.charAt(i) != c) { + return false; + } + } + + return true; + } + + public static boolean isWord(String txt) { + return txt.matches("\\w+"); + } + + public static String join(Collection list, String separator) { + return Printer.toString(list, separator); + } + + public static StringBuilder join(String start, Collection list, String separator, String end) { + StringBuilder sb = new StringBuilder(start); + if (!list.isEmpty()) { + for (Iterator iterator = list.iterator(); iterator.hasNext();) { + Object t = (Object) iterator.next(); + if (t != null) { + sb.append(Printer.toString(t)); + sb.append(separator); + } + } + + if (sb.length() != 0) { + pop(sb, separator.length()); + } + } + sb.append(end); + return sb; + } + + public static String join(String array[], String separator) { + if (array.length == 0) { + return ""; + } + StringBuilder sb = new StringBuilder(); + String as[]; + int j = (as = array).length; + for (int i = 0; i < j; i++) { + String string = as[i]; + if (string != null) { + sb.append(string); + sb.append(separator); + } + } + + if (sb.length() != 0) { + pop(sb, separator.length()); + } + return sb.toString(); + } + + public static void join(StringBuilder sb, Collection list, String separator) { + Printer.append(sb, list, separator); + } + + public static void main(String args[]) throws IOException { + String txt = ""; + BufferedReader in = FileUtils.getReader(System.in); + do { + String line = in.readLine(); + if (!line.equals("EXIT") && !line.equals("QUIT")) { + txt = (new StringBuilder(String.valueOf(txt))).append(line).append("\n").toString(); + } else { + String jtxt = convertToJavaString(txt); + System.out.println(jtxt); + return; + } + } while (true); + } + + public static String md5(String txt) { + return hash("MD5", txt); + } + + public static void newLine(StringBuilder text) { + if (text.length() == 0) { + return; + } + char last = text.charAt(text.length() - 1); + if (last == '\r' || last == '\n') { + return; + } else { + text.append(EOL); + return; + } + } + + public static String normalise(String unicode) throws IllegalArgumentException { + boolean ascii = true; + int i = 0; + for (int n = unicode.length(); i < n; i++) { + char c = unicode.charAt(i); + if (c <= '\177' && c != 0) continue; + ascii = false; + break; + } + + if (ascii) return unicode; + + String normed = Normalizer.normalize(unicode, java.text.Normalizer.Form.NFD); + StringBuilder clean = new StringBuilder(normed.length()); + i = 0; + for (int n = normed.length(); i < n; i++) { + char c = normed.charAt(i); + if ("'`\u2019\u2018\u2019\u02BC".indexOf(c) != -1) { + clean.append('\''); + } else if ("\"\u201C\u201D\u201E\u201F\u275B\u275C\u275D\u275E\253\273".indexOf(c) != -1) { + clean.append('"'); + } else if ("\u2010\u2011\u2012\u2013\u2014\u2015-".indexOf(c) != -1) { + clean.append('-'); + } else if (c < '\200' && c != 0) { + clean.append(c); + } else if (Character.isLetter(c)) { + // Log.report((new StringBuilder("Could not normalise to ascii: + // ")).append(unicode).toString()); + } + } + + return clean.toString(); + } + + public static void pop(StringBuilder sb, int chars) { + sb.delete(sb.length() - chars, sb.length()); + } + + public static String remove(String string, String regex, final Collection removed) { + String s2 = replace(string, Pattern.compile(regex), new IReplace() { + + public void appendReplacementTo(StringBuilder sb, Matcher match) { + removed.add(match.group()); + } + }); + return s2; + } + + public static String repeat(char c, int n) { + char chars[] = new char[n]; + Arrays.fill(chars, c); + return new String(chars); + } + + public static String repeat(String string, int n) { + StringBuilder sb = new StringBuilder(string.length() * n); + for (int i = 0; i < n; i++) { + sb.append(string); + } + + return sb.toString(); + } + + public static String replace(String string, Pattern regex, IReplace replace) { + Matcher m = regex.matcher(string); + StringBuilder sb = new StringBuilder(string.length() + 16); + int pos; + for (pos = 0; m.find(); pos = m.end()) { + sb.append(string.substring(pos, m.start())); + replace.appendReplacementTo(sb, m); + } + + sb.append(string.substring(pos, string.length())); + return sb.toString(); + } + + public static StringBuilder sb(CharSequence charSeq) { + return (charSeq instanceof StringBuilder) ? (StringBuilder) charSeq : new StringBuilder(charSeq); + } + + public static List split(String line) { + if (line == null || line.length() == 0) return Collections.emptyList(); + + ArrayList row = new ArrayList<>(); + StringBuilder field = new StringBuilder(); + char quote = '"'; + boolean inQuotes = false; + int i = 0; + for (int n = line.length(); i < n; i++) { + char c = line.charAt(i); + if (c == quote) { + inQuotes = !inQuotes; + } else if (inQuotes) { + field.append(c); + } else if (Character.isWhitespace(c) || c == ',') { + if (field.length() != 0) { + row.add(field.toString()); + field = new StringBuilder(); + } + } else { + field.append(c); + } + } + + if (field.length() == 0) return row; + + String f = field.toString(); + row.add(f); + return row; + } + + public static String[] splitBlocks(String message) { + return message.split("\\s*\r?\n\\s*\r?\n"); + } + + public static Pair splitFirst(String line, char c) { + int i = line.indexOf(c); + if (i == -1) return null; + String end = i != line.length() ? line.substring(i + 1) : ""; + return new Pair<>(line.substring(0, i), end); + } + + public static String[] splitLines(String txt) { + return LINEENDINGS.split(txt); + } + + public static String substring(String string, int start, int end) { + if (string == null) { + return null; + } + int len = string.length(); + if (start < 0) { + start = len + start; + if (start < 0) { + start = 0; + } + } + if (end <= 0) { + end = len + end; + if (end < start) { + return ""; + } + } + if (end > len) { + end = len; + } + if (start == 0 && end == len) { + return string; + } else { + return string.substring(start, end); + } + } + + public static String toCanonical(String string) { + if (string == null) { + return ""; + } + StringBuilder sb = new StringBuilder(); + boolean spaced = false; + int i = 0; + for (int n = string.length(); i < n; i++) { + char c = string.charAt(i); + if (Character.isLetterOrDigit(c)) { + spaced = false; + c = Character.toLowerCase(c); + sb.append(c); + } else if (!spaced && sb.length() != 0) { + sb.append(' '); + spaced = true; + } + } + + if (spaced) { + pop(sb, 1); + } + string = sb.toString(); + return normalise(string); + } + + public static String toCleanLinux(String text) { + text = text.replace("\r\n", "\n"); + text = text.replace('\r', '\n'); + text = BLANK_LINE.matcher(text).replaceAll(""); + return text; + } + + public static String toInitials(String name) { + StringBuilder sb = new StringBuilder(); + boolean yes = true; + for (int i = 0; i < name.length(); i++) { + char c = name.charAt(i); + if (Character.isWhitespace(c)) { + yes = true; + } else { + if (yes) { + c = Character.toUpperCase(c); + sb.append(c); + } + yes = false; + } + } + + return sb.toString(); + } + + public static String toNSigFigs(double x, int n) { + if (n <= 0) { + throw new AssertionError(); + } + String sign = x >= 0.0D ? "" : "-"; + double v = Math.abs(x); + double lv = Math.floor(Math.log10(v)); + double keeper = Math.pow(10D, n - 1); + double tens = Math.pow(10D, lv); + int keepMe = (int) Math.round((v * keeper) / tens); + if (lv < 0.0D) { + String s = toNSigFigs2_small(n, sign, lv, keepMe); + if (s != null) { + return s; + } + } + double vt = ((double) keepMe * tens) / keeper; + String num = Printer.toStringNumber(Double.valueOf(vt)); + return (new StringBuilder(String.valueOf(sign))).append(num).toString(); + } + + private static String toNSigFigs2_small(int n, String sign, double lv, int keepMe) { + if (lv < -8D) { + return null; + } + StringBuilder sb = new StringBuilder(sign); + int zs = (int) (-lv); + String sKeepMe = Integer.toString(keepMe); + if (sKeepMe.length() > n) { + if (sKeepMe.charAt(sKeepMe.length() - 1) != '0') { + throw new AssertionError(); + } + zs--; + sKeepMe = sKeepMe.substring(0, sKeepMe.length() - 1); + if (zs == 0) { + return null; + } + } + sb.append("0."); + for (int i = 1; i < zs; i++) { + sb.append('0'); + } + + sb.append(sKeepMe); + return sb.toString(); + } + + public static String toTitleCase(String title) { + if (title.length() < 2) { + return title.toUpperCase(); + } + StringBuilder sb = new StringBuilder(title.length()); + boolean goUp = true; + int i = 0; + for (int n = title.length(); i < n; i++) { + char c = title.charAt(i); + if (Character.isLetterOrDigit(c) || c == '\'') { + if (goUp) { + sb.append(Character.toUpperCase(c)); + goUp = false; + } else { + sb.append(Character.toLowerCase(c)); + } + } else { + sb.append(c); + goUp = true; + } + } + + return sb.toString(); + } + + public static String toTitleCasePlus(String wouldBeTitle) { + String words[] = wouldBeTitle.split("(_|\\s+)"); + StringBuilder sb = new StringBuilder(); + String as[]; + int j = (as = words).length; + for (int i = 0; i < j; i++) { + String word = as[i]; + if (word.length() != 0) { + if (Character.isUpperCase(word.charAt(0))) { + sb.append(word); + sb.append(' '); + } else { + word = replace(word, Pattern.compile("[A-Z]?[^A-Z]+"), new IReplace() { + + public void appendReplacementTo(StringBuilder sb2, Matcher match) { + String w = match.group(); + w = Strings.toTitleCase(w); + sb2.append(w); + sb2.append(' '); + } + + }); + sb.append(word); + } + } + } + + if (sb.length() != 0) { + pop(sb, 1); + } + return sb.toString(); + } + + public static String trimPunctuation(String string) { + return string; + } + + public static String trimQuotes(String string) { + if (string.charAt(0) != '\'' && string.charAt(0) != '"') { + return string; + } + char c = string.charAt(string.length() - 1); + if (c != '\'' && c != '"') { + return string; + } else { + return string.substring(1, string.length() - 1); + } + } + + public static int wordCount(String text) { + return text.split("\\s+").length; + } + + public static boolean isBlank(String line) { + return line.trim().isEmpty(); + } + + public static String stripTags(String xml) { + if (xml == null) { + return null; + } + if (xml.indexOf('<') == -1) { + return xml; + } else { + Matcher m4 = pScriptOrStyle.matcher(xml); + xml = m4.replaceAll(""); + Matcher m2 = pComment.matcher(xml); + String txt = m2.replaceAll(""); + Matcher m = TAG_REGEX.matcher(txt); + String txt2 = m.replaceAll(""); + Matcher m3 = pDocType.matcher(txt2); + String txt3 = m3.replaceAll(""); + return txt3; + } + } + +} diff --git a/plugin/src/winterwell/markdown/util/TimeOut.java b/plugin/src/winterwell/markdown/util/TimeOut.java new file mode 100644 index 0000000..60d1720 --- /dev/null +++ b/plugin/src/winterwell/markdown/util/TimeOut.java @@ -0,0 +1,36 @@ +package winterwell.markdown.util; + +import java.util.Timer; +import java.util.TimerTask; + +public final class TimeOut { + + private static final Timer timer = new Timer("TimeOuter", true); + private TimerTask task; + private final long timeout; + + public TimeOut(long timeout) { + this.timeout = timeout; + start(); + } + + public void cancel() { + task.cancel(); + } + + private void start() { + if (task != null) { + return; + } else { + final Thread target = Thread.currentThread(); + task = new TimerTask() { + + public void run() { + target.interrupt(); + } + }; + timer.schedule(task, timeout); + return; + } + } +} diff --git a/plugin/lib/markdownj-1.0.2b4-0.3.0.jar b/plugin/utils/markdownj-1.0.2b4-0.3.0.jar similarity index 100% rename from plugin/lib/markdownj-1.0.2b4-0.3.0.jar rename to plugin/utils/markdownj-1.0.2b4-0.3.0.jar diff --git a/plugin/lib/net.sf.paperclips_1.0.1.jar b/plugin/utils/net.sf.paperclips_1.0.1.jar similarity index 100% rename from plugin/lib/net.sf.paperclips_1.0.1.jar rename to plugin/utils/net.sf.paperclips_1.0.1.jar diff --git a/plugin/lib/winterwell.utils.jar b/plugin/utils/winterwell.utils.jar similarity index 100% rename from plugin/lib/winterwell.utils.jar rename to plugin/utils/winterwell.utils.jar From 0158390acd5c61bc09a10ef76a01db9eac6b06b8 Mon Sep 17 00:00:00 2001 From: GRosenberg Date: Wed, 23 Nov 2016 16:51:59 -0800 Subject: [PATCH 13/20] Fix pom. --- pom.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f1fbecf..777d3f3 100644 --- a/pom.xml +++ b/pom.xml @@ -46,13 +46,14 @@ - 3.0 + 3.3.3 UTF-8 UTF-8 0.24.0 + 0.24.0 @@ -76,6 +77,11 @@ tycho-maven-plugin ${tycho.version} true + + UTF-8 + 1.8 + 1.8 + From b6c59dd2551bc8bbf43849736094f937fde3d41d Mon Sep 17 00:00:00 2001 From: GRosenberg Date: Wed, 23 Nov 2016 17:08:39 -0800 Subject: [PATCH 14/20] Fix pom to please Travis. --- plugin/.classpath | 2 +- pom.xml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/plugin/.classpath b/plugin/.classpath index 3e3732a..6a9010e 100644 --- a/plugin/.classpath +++ b/plugin/.classpath @@ -3,6 +3,6 @@ - + diff --git a/pom.xml b/pom.xml index 777d3f3..dad2731 100644 --- a/pom.xml +++ b/pom.xml @@ -54,6 +54,7 @@ UTF-8 0.24.0 0.24.0 + 1.8 From 87f2c20493871f4a5879721409cf5405dd79e4c9 Mon Sep 17 00:00:00 2001 From: GRosenberg Date: Wed, 23 Nov 2016 18:08:26 -0800 Subject: [PATCH 15/20] Fix to make Travis happy. --- .../winterwell/markdown/util/ArraySet.java | 81 ------------------ .../src/winterwell/markdown/util/Printer.java | 3 +- plugin/utils/markdownj-1.0.2b4-0.3.0.jar | Bin 40987 -> 0 bytes plugin/utils/net.sf.paperclips_1.0.1.jar | Bin 134431 -> 0 bytes 4 files changed, 1 insertion(+), 83 deletions(-) delete mode 100644 plugin/src/winterwell/markdown/util/ArraySet.java delete mode 100755 plugin/utils/markdownj-1.0.2b4-0.3.0.jar delete mode 100644 plugin/utils/net.sf.paperclips_1.0.1.jar diff --git a/plugin/src/winterwell/markdown/util/ArraySet.java b/plugin/src/winterwell/markdown/util/ArraySet.java deleted file mode 100644 index fa2ad1e..0000000 --- a/plugin/src/winterwell/markdown/util/ArraySet.java +++ /dev/null @@ -1,81 +0,0 @@ -package winterwell.markdown.util; - -import java.io.Serializable; -import java.util.AbstractList; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.Set; -import java.util.Spliterator; - -public final class ArraySet extends AbstractList implements Set, List, Serializable { - - private final ArrayList backing; - - public ArraySet() { - backing = new ArrayList(); - } - - public ArraySet(Collection elements) { - backing = new ArrayList<>(elements.size()); - for (E element : elements) { - add(element); - } - } - - public ArraySet(int initialSize) { - backing = new ArrayList<>(initialSize); - } - - public ArraySet(E[] elements) { - backing = new ArrayList<>(elements.length); - for (E element : elements) { - add(element); - } - } - - public boolean add(E e) { - if (backing.contains(e)) { - return false; - } else { - return backing.add(e); - } - } - - public void clear() { - backing.clear(); - } - - public boolean contains(Object o) { - if (o == null) throw new AssertionError(); - return backing.contains(o); - } - - public E get(int i) { - return backing.get(i); - } - - public Iterator iterator() { - return backing.iterator(); - } - - public boolean remove(Object o) { - return backing.remove(o); - } - - @Deprecated - public E set(int index, E element) { - E old = backing.set(index, element); - return old; - } - - public int size() { - return backing.size(); - } - - @Override - public Spliterator spliterator() { - return super.spliterator(); - } -} diff --git a/plugin/src/winterwell/markdown/util/Printer.java b/plugin/src/winterwell/markdown/util/Printer.java index e797aa2..0ba058a 100644 --- a/plugin/src/winterwell/markdown/util/Printer.java +++ b/plugin/src/winterwell/markdown/util/Printer.java @@ -75,8 +75,7 @@ private static void append(Object x, StringBuilder sb) { sb.append(toStringNumber((Number) x)); return; } - if ((x instanceof ArrayList) || (x instanceof HashSet) || (x instanceof ArraySet) - || x.getClass() == ArraysListType) { + if ((x instanceof ArrayList) || (x instanceof HashSet) || x.getClass() == ArraysListType) { append(sb, (Collection) x, ", "); return; } diff --git a/plugin/utils/markdownj-1.0.2b4-0.3.0.jar b/plugin/utils/markdownj-1.0.2b4-0.3.0.jar deleted file mode 100755 index 5e8f22b91d175d316ee33436bbd93e3c843e65e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40987 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 NT4+f~RALF={txgi7W@DJ diff --git a/plugin/utils/net.sf.paperclips_1.0.1.jar b/plugin/utils/net.sf.paperclips_1.0.1.jar deleted file mode 100644 index 18531820cee9314b81262be70e5c6ba5b84f3d15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134431 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

JH|%9?FqutWM*6+KKjL%?S!0qjtb-f(?zwRz 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 Date: Wed, 23 Nov 2016 22:48:09 -0800 Subject: [PATCH 16/20] Add CommonMark, TxtMark, & PegDown as builtin converters. --- plugin/.classpath | 6 ++ plugin/META-INF/MANIFEST.MF | 8 +- plugin/build.properties | 9 +- plugin/lib/asm-all.jar | Bin 0 -> 212769 bytes plugin/lib/commonmark.jar | Bin 0 -> 124953 bytes plugin/lib/parboiled-core.jar | Bin 0 -> 186607 bytes plugin/lib/parboiled-java.jar | Bin 0 -> 73350 bytes plugin/lib/pegdown.jar | Bin 0 -> 80022 bytes plugin/lib/txtmark.jar | Bin 0 -> 70733 bytes plugin/pom.xml | 88 ++++++++++++++- .../markdown/pagemodel/MarkdownPage.java | 33 +----- .../markdown/pagemodel/MdConverter.java | 101 ++++++++++++++++++ .../markdown/preferences/PrefPageGeneral.java | 93 ++++++++++++++-- .../markdown/preferences/Prefs.java | 13 ++- .../markdown/preferences/PrefsInit.java | 8 +- .../src/winterwell/markdown/util/Strings.java | 11 +- plugin/utils/winterwell.utils.jar | Bin 431751 -> 0 bytes 17 files changed, 318 insertions(+), 52 deletions(-) create mode 100644 plugin/lib/asm-all.jar create mode 100644 plugin/lib/commonmark.jar create mode 100644 plugin/lib/parboiled-core.jar create mode 100644 plugin/lib/parboiled-java.jar create mode 100644 plugin/lib/pegdown.jar create mode 100644 plugin/lib/txtmark.jar create mode 100644 plugin/src/winterwell/markdown/pagemodel/MdConverter.java delete mode 100644 plugin/utils/winterwell.utils.jar diff --git a/plugin/.classpath b/plugin/.classpath index 6a9010e..1d62615 100644 --- a/plugin/.classpath +++ b/plugin/.classpath @@ -1,8 +1,14 @@ + + + + + + diff --git a/plugin/META-INF/MANIFEST.MF b/plugin/META-INF/MANIFEST.MF index 0130ce7..0aa14cf 100644 --- a/plugin/META-INF/MANIFEST.MF +++ b/plugin/META-INF/MANIFEST.MF @@ -20,4 +20,10 @@ Import-Package: org.eclipse.core.internal.resources, org.eclipse.jface.text, org.eclipse.ui.texteditor Bundle-ClassPath: ., - lib/markdownj-core.jar + lib/markdownj-core.jar, + lib/commonmark.jar, + lib/txtmark.jar, + lib/pegdown.jar, + lib/parboiled-java.jar, + lib/parboiled-core.jar, + lib/asm-all.jar diff --git a/plugin/build.properties b/plugin/build.properties index 9d4d432..21223ee 100644 --- a/plugin/build.properties +++ b/plugin/build.properties @@ -4,9 +4,14 @@ bin.includes = META-INF/,\ plugin.xml,\ icons/,\ .,\ - lib/,\ resources/,\ - lib/markdownj-core.jar + lib/markdownj-core.jar,\ + lib/commonmark.jar,\ + lib/pegdown.jar,\ + lib/txtmark.jar,\ + lib/parboiled-java.jar,\ + lib/parboiled-core.jar,\ + lib/asm-all.jar src.includes = pom.xml,\ icons/,\ lib/,\ diff --git a/plugin/lib/asm-all.jar b/plugin/lib/asm-all.jar new file mode 100644 index 0000000000000000000000000000000000000000..117d001565368e4bef8a38174205ced0159eecd2 GIT binary patch literal 212769 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�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

RdE|q5wwxO8!6q28lWfl`j;Bt~t^1KH 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­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

wd?}a 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∓#37iH}D40ITEv9V}Gxm;iifVHj&#T@)sxU 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 KCKwQ+nL?_?(Q$M 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

}?`ZEjU0H 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,YRABpFpD9*bnRTTa- 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%0DmGoOcHZ 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 AD*ylh literal 0 HcmV?d00001 diff --git a/plugin/lib/txtmark.jar b/plugin/lib/txtmark.jar new file mode 100644 index 0000000000000000000000000000000000000000..9772d47b32db8b1f2b6a301760f0cbf8af32c16c GIT binary patch literal 70733 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.4 + + com.atlassian.commonmark + commonmark + 0.7.1 + + + + org.pegdown + pegdown + 1.6.0 + + + + org.parboiled + parboiled-core + 1.1.7 + + + + org.parboiled + parboiled-java + 1.1.7 + + + + org.ow2.asm + asm-all + 4.0 + + + + com.github.rjeschke + txtmark + 0.13 + + @@ -42,6 +78,7 @@ + org.markdownj markdownj-core @@ -49,8 +86,57 @@ jar true + + + org.pegdown + pegdown + 1.6.0 + jar + true + + + + org.parboiled + parboiled-core + 1.1.7 + jar + true + + + + org.parboiled + parboiled-java + 1.1.7 + jar + true + + + + org.ow2.asm + asm-all + 4.0 + jar + true + + + + com.atlassian.commonmark + commonmark + 0.7.1 + jar + true + + + + com.github.rjeschke + txtmark + 0.13 + jar + true + + - lib + lib true true true diff --git a/plugin/src/winterwell/markdown/pagemodel/MarkdownPage.java b/plugin/src/winterwell/markdown/pagemodel/MarkdownPage.java index 212f899..0333a59 100755 --- a/plugin/src/winterwell/markdown/pagemodel/MarkdownPage.java +++ b/plugin/src/winterwell/markdown/pagemodel/MarkdownPage.java @@ -5,7 +5,6 @@ */ package winterwell.markdown.pagemodel; -import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -15,14 +14,10 @@ import java.util.regex.Pattern; import org.eclipse.jface.preference.IPreferenceStore; -import org.markdownj.MarkdownProcessor; import winterwell.markdown.Activator; import winterwell.markdown.StringMethods; import winterwell.markdown.preferences.PrefPageGeneral; -import winterwell.markdown.util.FailureException; -import winterwell.markdown.util.FileUtils; -import winterwell.markdown.util.Process; import winterwell.markdown.util.Strings; /** @@ -516,7 +511,7 @@ public List

getHeadings(Header parent) { // } /** - * Get the HTML for this page. Uses the MarkdownJ project. + * Get the HTML for this page. */ public String html() { // Section numbers?? @@ -536,31 +531,9 @@ public String html() { sb.append(line); } String text = sb.toString(); - // Use external converter? - final String cmd = pStore.getString(PrefPageGeneral.PREF_MARKDOWN_COMMAND); - if (Strings.isBlank(cmd) || (cmd.startsWith("(") && cmd.contains("MarkdownJ"))) { - // Use MarkdownJ - MarkdownProcessor markdown = new MarkdownProcessor(); - // MarkdownJ doesn't convert £s for some reason - text = text.replace("£", "£"); - String html = markdown.markdown(text); - return html; - } - // Attempt to run external command - try { - final File md = File.createTempFile("tmp", ".md"); - FileUtils.write(md, text); - Process process = new Process(cmd + " " + md.getAbsolutePath()); - process.run(); - int ok = process.waitFor(10000); - if (ok != 0) throw new FailureException(cmd + " failed:\n" + process.getError()); - String html = process.getOutput(); - FileUtils.delete(md); - return html; - } catch (Exception e) { - throw new RuntimeException(e); - } + MdConverter converter = new MdConverter(); + return converter.convert(text); } private boolean isHeader(KLineType type) { diff --git a/plugin/src/winterwell/markdown/pagemodel/MdConverter.java b/plugin/src/winterwell/markdown/pagemodel/MdConverter.java new file mode 100644 index 0000000..b828d17 --- /dev/null +++ b/plugin/src/winterwell/markdown/pagemodel/MdConverter.java @@ -0,0 +1,101 @@ +package winterwell.markdown.pagemodel; + +import java.io.File; + +import org.commonmark.node.Node; +import org.commonmark.parser.Parser; +import org.commonmark.renderer.html.HtmlRenderer; +import org.eclipse.jface.preference.IPreferenceStore; +import org.markdownj.MarkdownProcessor; +import org.pegdown.PegDownProcessor; + +import com.github.rjeschke.txtmark.Configuration; +import com.github.rjeschke.txtmark.Configuration.Builder; +import com.github.rjeschke.txtmark.Processor; + +import winterwell.markdown.Activator; +import winterwell.markdown.preferences.PrefPageGeneral; +import winterwell.markdown.preferences.Prefs; +import winterwell.markdown.util.FailureException; +import winterwell.markdown.util.FileUtils; +import winterwell.markdown.util.Process; +import winterwell.markdown.util.Strings; + +public class MdConverter { + + private IPreferenceStore store; + + public MdConverter() { + super(); + store = Activator.getDefault().getPreferenceStore(); + } + + public String convert(String text) { + switch (store.getString(Prefs.PREF_MD_CONVERTER)) { + case Prefs.KEY_MARDOWNJ: + return useMarkDownJ(text); + case Prefs.KEY_PEGDOWN: + return usePegDown(text); + case Prefs.KEY_COMMONMARK: + return useCommonMark(text); + case Prefs.KEY_TXTMARK: + return useTxtMark(text); + case Prefs.PREF_EXTERNAL_COMMAND: + return useExternalCli(text); + } + return ""; + } + + // Use MarkdownJ + private String useMarkDownJ(String text) { + MarkdownProcessor markdown = new MarkdownProcessor(); + return markdown.markdown(text); + } + + // Use PegDown + private String usePegDown(String text) { + PegDownProcessor pegdown = new PegDownProcessor(); + return pegdown.markdownToHtml(text); + } + + // Use CommonMark + private String useCommonMark(String text) { + Parser parser = Parser.builder().build(); + Node document = parser.parse(text); + HtmlRenderer renderer = HtmlRenderer.builder().build(); + return renderer.render(document); + } + + // Use TxtMark + private String useTxtMark(String text) { + boolean safeMode = store.getBoolean(Prefs.PREF_TXTMARK_SAFEMODE); + boolean extended = store.getBoolean(Prefs.PREF_TXTMARK_EXTENDED); + + Builder builder = Configuration.builder(); + if (safeMode) builder.enableSafeMode(); + if (extended) builder.forceExtentedProfile(); + Configuration config = builder.build(); + return Processor.process(text, config); + } + + // Run external command + private String useExternalCli(String text) { + String cmd = store.getString(PrefPageGeneral.PREF_EXTERNAL_COMMAND); + if (Strings.isBlank(cmd) || (cmd.startsWith("(") && cmd.contains("MarkdownJ"))) { + return "No external markdown converter specified; update preferences."; + } + + try { + final File md = File.createTempFile("tmp", ".md"); + FileUtils.write(md, text); + Process process = new Process(cmd + " " + md.getAbsolutePath()); + process.run(); + int ok = process.waitFor(10000); + if (ok != 0) throw new FailureException(cmd + " failed:\n" + process.getError()); + String html = process.getOutput(); + FileUtils.delete(md); + return html; + } catch (Exception e) {} + return "External markdown convertion failed; update preferences."; + } +} diff --git a/plugin/src/winterwell/markdown/preferences/PrefPageGeneral.java b/plugin/src/winterwell/markdown/preferences/PrefPageGeneral.java index 899a7fd..e7aec9f 100755 --- a/plugin/src/winterwell/markdown/preferences/PrefPageGeneral.java +++ b/plugin/src/winterwell/markdown/preferences/PrefPageGeneral.java @@ -3,12 +3,13 @@ import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.jface.preference.BooleanFieldEditor; +import org.eclipse.jface.preference.ComboFieldEditor; import org.eclipse.jface.preference.FieldEditorPreferencePage; import org.eclipse.jface.preference.StringFieldEditor; import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; -import org.eclipse.swt.widgets.Label; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; @@ -16,6 +17,27 @@ public class PrefPageGeneral extends FieldEditorPreferencePage implements IWorkbenchPreferencePage, Prefs { + private String[][] converters; + private Group txtGroup; + private Group extGroup; + + private BooleanFieldEditor safeMode; + private BooleanFieldEditor extended; + private StringFieldEditor extField; + + private class ComboFieldEditor2 extends ComboFieldEditor { + + public ComboFieldEditor2(String name, String labelText, String[][] entryNamesAndValues, Composite parent) { + super(name, labelText, entryNamesAndValues, parent); + } + + @Override + protected void fireValueChanged(String property, Object oldValue, Object newValue) { + super.fireValueChanged(property, oldValue, newValue); + update((String) newValue); + } + } + public PrefPageGeneral() { super(GRID); setDescription(""); @@ -37,7 +59,6 @@ public void createFieldEditors() { Composite internal = new Composite(frame, SWT.NONE); GridDataFactory.fillDefaults().indent(0, 4).grab(true, false).applyTo(internal); - GridLayoutFactory.fillDefaults().applyTo(internal); // Word wrap addField(new BooleanFieldEditor(PREF_WORD_WRAP, "Soft word wrapping", internal)); @@ -46,16 +67,70 @@ public void createFieldEditors() { addField(new BooleanFieldEditor(PREF_FOLDING, "Document folding", internal)); // Task tags - addField(new BooleanFieldEditor(PREF_TASK_TAGS, "Manage tasks using task tags ", internal)); - new Label(internal, SWT.NONE).setText(" -- add and delete tags in sync with edits"); - new Label(internal, SWT.NONE); + addField(new BooleanFieldEditor(PREF_TASK_TAGS, "Use task tags ", internal)); + addField(new StringFieldEditor(PREF_TASK_TAGS_DEFINED, "Task tags defined:", internal)); + + // Converter selection + addField(new ComboFieldEditor2(PREF_MD_CONVERTER, "Markdown Converter:", converters(), internal)); + + // Converter related options + txtGroup = new Group(internal, SWT.NONE); + txtGroup.setText("TxtMark Options"); - addField(new StringFieldEditor(PREF_TASK_TAGS_DEFINED, "Task tags", internal)); + GridDataFactory.fillDefaults().indent(2, 6).grab(true, false).span(2, 1).applyTo(txtGroup); + GridLayoutFactory.fillDefaults().margins(6, 6).applyTo(txtGroup); + + safeMode = new BooleanFieldEditor(PREF_TXTMARK_SAFEMODE, "Use safe mode", txtGroup); + addField(safeMode); + extended = new BooleanFieldEditor(PREF_TXTMARK_EXTENDED, "Use extended profile", txtGroup); + addField(extended); // External cli - addField(new StringFieldEditor(PREF_MARKDOWN_COMMAND, "External Markdown Run Command", internal)); - new Label(internal, SWT.NONE).setText(" -- UNSTABLE: blank to use builtin converter"); - new Label(internal, SWT.NONE); + extGroup = new Group(internal, SWT.NONE); + extGroup.setText("External Run Command"); + + GridDataFactory.fillDefaults().indent(2, 6).grab(true, false).span(2, 1).applyTo(extGroup); + GridLayoutFactory.fillDefaults().margins(6, 6).applyTo(extGroup); + + extField = new StringFieldEditor(PREF_EXTERNAL_COMMAND, "", extGroup); + + ((GridLayout) internal.getLayout()).numColumns = 2; + update(getPreferenceStore().getString(PREF_MD_CONVERTER)); // init visibility + } + + private void update(String value) { + switch (value) { + case KEY_TXTMARK: + safeMode.setEnabled(true, txtGroup); + extended.setEnabled(true, txtGroup); + extField.setEnabled(false, extGroup); + break; + case KEY_USE_EXTERNAL: + safeMode.setEnabled(false, txtGroup); + extended.setEnabled(false, txtGroup); + extField.setEnabled(true, extGroup); + break; + default: + safeMode.setEnabled(false, txtGroup); + extended.setEnabled(false, txtGroup); + extField.setEnabled(false, extGroup); + } + } + private String[][] converters() { + if (converters == null) { + converters = new String[5][2]; + converters[0][0] = "MarkdownJ"; + converters[0][1] = KEY_MARDOWNJ; + converters[1][0] = "Commonmark"; + converters[1][1] = KEY_COMMONMARK; + converters[2][0] = "PegDown"; + converters[2][1] = KEY_PEGDOWN; + converters[3][0] = "TxtMark"; + converters[3][1] = KEY_TXTMARK; + converters[4][0] = "External converter"; + converters[4][1] = KEY_USE_EXTERNAL; + } + return converters; } } diff --git a/plugin/src/winterwell/markdown/preferences/Prefs.java b/plugin/src/winterwell/markdown/preferences/Prefs.java index 9f22344..a5727b8 100644 --- a/plugin/src/winterwell/markdown/preferences/Prefs.java +++ b/plugin/src/winterwell/markdown/preferences/Prefs.java @@ -9,7 +9,18 @@ public interface Prefs { public static final String PREF_TASK_TAGS_DEFINED = "Pref_TaskTags"; public static final String PREF_SECTION_NUMBERS = "Pref_SectionNumbers"; - public static final String PREF_MARKDOWN_COMMAND = "Pref_Markdown_Command"; + public static final String PREF_MD_CONVERTER = "Pref_Converter_Selection"; + + public static final String KEY_MARDOWNJ = "Pref_MarkdownJ"; + public static final String KEY_COMMONMARK = "Pref_Commonmark"; + public static final String KEY_PEGDOWN = "Pref_PegDown"; + public static final String KEY_TXTMARK = "Pref_TxtMark"; + public static final String KEY_USE_EXTERNAL = "Pref_ExtMark"; + + public static final String PREF_TXTMARK_SAFEMODE = "Pref_TxtMark_SafeMode"; + public static final String PREF_TXTMARK_EXTENDED = "Pref_TxtMark_ExtendedMode"; + + public static final String PREF_EXTERNAL_COMMAND = "Pref_Markdown_Command"; public static final String PREF_DEFAULT = "Pref_Default"; public static final String PREF_COMMENT = "Pref_Comment"; diff --git a/plugin/src/winterwell/markdown/preferences/PrefsInit.java b/plugin/src/winterwell/markdown/preferences/PrefsInit.java index 234b253..da399c9 100644 --- a/plugin/src/winterwell/markdown/preferences/PrefsInit.java +++ b/plugin/src/winterwell/markdown/preferences/PrefsInit.java @@ -20,8 +20,6 @@ */ public class PrefsInit extends AbstractPreferenceInitializer implements Prefs { - private static final String MARKDOWNJ = "(use built-in MarkdownJ converter)"; - private static final RGB DEF_DEFAULT = new RGB(0, 0, 0); private static final RGB DEF_COMMENT = new RGB(128, 0, 0); private static final RGB DEF_HEADER = new RGB(0, 128, 0); @@ -37,7 +35,11 @@ public void initializeDefaultPreferences() { store.setDefault(PREF_TASK_TAGS, true); store.setDefault(PREF_TASK_TAGS_DEFINED, "TODO,FIXME,??"); - store.setDefault(PREF_MARKDOWN_COMMAND, MARKDOWNJ); + store.setDefault(PREF_MD_CONVERTER, KEY_MARDOWNJ); + store.setDefault(PREF_TXTMARK_SAFEMODE, false); + store.setDefault(PREF_TXTMARK_EXTENDED, true); + + store.setDefault(PREF_EXTERNAL_COMMAND, ""); store.setDefault(PREF_SECTION_NUMBERS, true); store.setDefault(PREF_CSS_DEFAULT, cssDefault()); diff --git a/plugin/src/winterwell/markdown/util/Strings.java b/plugin/src/winterwell/markdown/util/Strings.java index 56851fc..a34bbeb 100644 --- a/plugin/src/winterwell/markdown/util/Strings.java +++ b/plugin/src/winterwell/markdown/util/Strings.java @@ -19,26 +19,27 @@ public final class Strings { + public static final String ISO_LATIN = "ISO-8859-1"; + public static final String UTF_8 = "UTF-8"; + public static final String EOL = System.getProperty("line.separator"); + public static final String APOSTROPHES = "'`\u2019\u2018\u2019\u02BC"; - public static final String ARRAY[] = new String[0]; public static final Pattern ASCII_PUNCTUATION = Pattern .compile("[.<>,@~\\{\\}\\[\\]-_+=()*%?^$!\\\\/|\254:;#`'\"]"); public static final Pattern BLANK_LINE = Pattern.compile("^\\s+$", 8); public static final String COMMON_BULLETS = "-*\uE00Co"; public static final String DASHES = "\u2010\u2011\u2012\u2013\u2014\u2015-"; - public static final String ENCODING_STD_ISO_LATIN = "ISO-8859-1"; - public static final String ENCODING_UTF8 = "UTF8"; - public static final String EOL = System.getProperty("line.separator"); public static final Pattern LINEENDINGS = Pattern.compile("(\r\n|\r|\n)"); public static final String LOREM_IPSUM = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; public static final String QUOTES = "\"\u201C\u201D\u201E\u201F\u275B\u275C\u275D\u275E\253\273"; - private static final double TENS[]; public static final Pattern TAG_REGEX = Pattern.compile("<(/?[a-zA-Z][a-zA-Z0-9]*)[^>]*>", 32); public static final Pattern pComment = Pattern.compile("", 32); public static final Pattern pDocType = Pattern.compile("", 34); public static final Pattern pScriptOrStyle = Pattern.compile("<(script|style)[^<>]*>.+?", 34); + public static final String ARRAY[] = new String[0]; + private static final double TENS[]; static { TENS = new double[20]; TENS[0] = Math.pow(10D, -6D); diff --git a/plugin/utils/winterwell.utils.jar b/plugin/utils/winterwell.utils.jar deleted file mode 100644 index 1a5784a41d654d1670becb3d0a549f697c784ac4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 431751 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 LAd)CO@GaqP~cs4%g~ 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 +zVe1+*o5oogzKBr_(zIf>6>}$M}l4i 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

d*x`2Oc=*2N zPnI?}C8gA&nJ* z`Nc9*bd*a=@7bBUC72+xTSYyGnI+7|rKR=EZw3blfZM8!_|DjwCAvr_@cCS}=dhcp zziKHN!|lVq#JUJBO7(hvy_sMtciis3>-UXrol*EOn4(VUKm)(p+11##Hs9BZISSZ+ zY-*ccGA8waqkw$2=sX7^p>ucx=9JJCox_zfVR?44rS>@VMu>C?6uMxny@73~Vtco- z`w@OXIE4U{72TEi z>y~5y`_}}k=j;NP#{vDS!M&#>04z#?YmDH-pIKb#E!o2rG4+PQLl-r)kHc_p4UT=Y zWl9bp!l#7bN)$DujU2McrOG7X^3NU1Mn$Hif3Yr-MBRMl0oPC>yo%x2lK@kk$}q+$ zf=C~^d{8vU@Ljr04bF9400syh&_PHI?|KgHzBia9gz^9@D#IXr&%GU<{+=l}_%7Eu zH$hh|edN5u2^6NN#U57-Ceye;`fMpJ*!7=@HyD>8dY0z}(!ZtqY!i-UfuajNFH76M zTHLe%fLFIXgUBM<_mk?#zKSrGzY<;afJmnj4SX!ee;om)z?j-Y8JEN)tvoZWl0^U(93sAneroBUSKe5fij80tXLCrU6U`_zH+!- zVbX*3jye&r_rvGI*b8Biz&*2T=yQ3VTQZb+_NR7+Uzm6l8!exs(l~e3h3h4HZJ_^b zAY68|=lq`Va1ALp@O870t!F@)C%cqVFlnV0DAMHU0yZo!IX_Txf;utjYDA0`nRjOisfwd!pwtAFu!b>`ertC7AsBA&Yt{%4trKWUPOa9nNkx38{ zZRliob8KN_T|`*r0^Qb;48$m1ItfvoqOd{ERW6bvWPni`wk5#Oo>-IGc}CivX`6gH zuj|3fL(C^9xA&IR<)0(en|d6alk^8g4bvNK?$M%$YE`oXQ&U%9>H%GlIVDbHb&xzCpYs1AnT!8N8ciCm?75 z$--BA+%L5q80DT|YY(d9$xUu_br@@XU(K=ZCv)D8^(6)4&a~^KC1U53d9f(@w&9^S3-DZX>eN#j>KTthlM4; zesQJc{Xk!gRCL_J3V$tvt>VOLZlBPt)-F1}91wvp$YTLalH4CY6{!_711szk$TjcD zC^_7?)2n^!Wc>Zy?|1`b=(?V)XrrgBU;2^3_^y7h5Nk56S(!QO{b{FTNxS`5vy1qz zI)A@G;YXqz@2!x&oHCxoSXxNIt+84~NisnZ9amkotiOzX15& zz&p2p5a~oxF&P!o25j$TsPgI*)C&SM(#}EjchYbjYjj+=A~MItkNU6MI^Ku^x2j&a zJFPWJ!BQ_9TH00D%r(vnnWV^USgWcI6{$J5Tp4!OkiaFUGTWPKWSlGvk8% zwKf)2oRUvRsO2^etWDQAI=hB`oWdF1s!PNX$2C~!eGMZHx)Jt;u@wK_sFwxPlwqU( zq0Z50@tZB&Cd{)HCZcm&iD;r+vO)l+kkGO^rP85!7p9!k5{PE-rKSraOQl4Uj7*6R zB|lmPRQFl?jHC8gA5Inpa7ye023hK~S-({T;**z{n1 zxVHtORp;^JqinbL5P?S_v;kZDy8`B&?avjKkAu?G2qm#~#VU_Fp%oaBL0BlbW@Q6~ z)0m0s>0Vvrj%sU@W|MLG&jY@Gv5FjV0C5jcgu`t3mVLt)p-t< zB-!~Z^4*pN$(A%M8!TO{m_ZzdqlJBL)0WkuQCMq7)h~^8n4j zTWjfo;ohy*(h^e+ZX+oZ-Pg*yro;U%D+HF>ZsI$QF|FJ?qzyL;XoG+00Ht-Mi!T(<9!!{3b!3yI$}cG4 zy=NTvz0ilYsPRDSmHP8P%cG6>azW!_ncF7=euRXtJaB2dmFILfLiNxmd23bWEV;Iu!Jy>g{*8NmQK^G7F-lIv80KNYY|%Lcvd#$K`(@ zc?BEhu~^HylPa(C1s_>33$BB0cTXwEqNGJfAs}-Sc84H>`*MWtEO`9`JDC&tQwH&0 zqr6v0E=i*d%)#oJL-C44U_+1ge#rg|F{7Q`4ZO$JF4V?i zXX}#m=}d=mO->?W#$+ z=b(u#3Yc5i+*-i#9NLybp}t6u-cYe8Hkm~~6DF3q`pVrbN<3p_m3j*_AFVXYcAkZe zB6V`Fj^sGnJwD(Kn@|jkFC(A@xUqH;{4a$z**DKpa`8XuaZd&XVYN*LSLL?7=G6OV z5*9gQHqSV=m3giNLl@9l@iJ6k%=fH7PjYh^HM-SmzXBb;B2YeIsoo&U-r+Heza)^B zN0H@o1)XAnd}0N>zGa+L=&}J3Pq6|mVb2-TrFSQf>rrDf99{a zc*DI!9d~=~knu=@zC?x+{`u>S;$CohpCr#{@dQ!GBvglMqF+o|DhFY@wl@G^2XO)f zAF6K?aU5R>R_3i{p?mmAqFpKCgBiZu=K{W*7ZP!2s}lAw!|}Bzs7J)7g1ZvGX-{ob z*dx0jb%z@~$FC0qD4(pD!w?k_wa>hSE-)C)h#7sUZbTf-Bsx!Q#4Iz?DQOf1K3uu1 zFVhrch(e^aCv2TZsele&V(!W6CAB6z;u!B;K*IdYO4}q1h{~ay+!5I|=Hk^D+h|f2 z;?V-*GFKv66kGXNrm$T>jpKV^K2SzHSvCMw!Bdq(Goka6Q7u5F@`eTOI6~mmmyItuCkL8MdPK1y+7r{7Sr8|69@&V4 z+8cw0UUg2vSzES4!h?9+*?_5^53S?Y*qqeWB`E4^4XJEDkqfZjsk70Fb%4A+D30iHsPF zXsPnGwyY6!wK?fS$qXZHk^891fSgtNYzG<^^i>aOUyKE0vFX(E;|w&TGAIk^!ZU2j zrBU!K7hsvl*gHQUtiADX3%h2)cH1Cb=T#PgX;Xh;(qdH>Ros1Z(q~12r^hdomq83O z*|r)c?tASF2Q2l;9l11mLA*L{^V<;PMpFamrsiqcnO2nVb4kg*&Us=1j19Vq9KXxY`CO`!ey=gb*Et(@L%B0*HiXSk5Tt%q*hsItudQM|-PZnkgtnlAspQ_`1n>Xd^ zvUSdBrd7n1tJ=}Vg9jKJ2ah}x9Hm}@hayuf%%fjtXUFpfP2rMwB4Foy~ts_`QEPcD*T zJC@H^w>Zd*b9AV~dRy-b4NAefNbb*dmLmwVM9362Yq>E0x%5Gatypu$)!oB+$Bdk1 zOwr8AswEZcop1mumE9~jrW5Fse-&_TfVKWOM_6zD*!O9^#FvYR7z~{Q#8HT28?#5v3t#vcxbBCou=?} z6~5exKb}Q>A$*?8ySp=+uI9P;@chKoH8*bUNQ;%=3>?Q&u(r-=tbImtl{;lqeVVRE zTPR2pTevN=kdJ{(rl-NwKT!-nFP%5Vjb^(qU%(b$oC3-)KwY3_3O&jAZ4sa$9XW-l zX$^NsMIGh9>T-Hhr6M#Jyyk-UfQ;vo9V6()T& z&MPe7fE@O8AnGNpO84NtNU%-p{iXM9eDmU^;GrGe*6-S)V9I$w)YbF?BMep zaZ?wYM?|^!_TkQTVF2JUGG8Y}eUtb$mN>7@9F5szr`PV`X<+%YVli)GKGa8fuBv`U zt=lB$c46Oc2CWR(0tvcEi{H*Ejz4gl9dY)-K7$(Sm)ASlAteEDab^fli zLqf}imc2RdW$#WHY(S?5_&!zo|PpM&F*y`dYoDim{lk-dOjgs1&+`hC^eFugK zwnOHrs{)1-xV10Y49n{Rrm1b_U2b?*Ki+D3J~@MXpbcB!0KyZIa`&ME)mCCIuq@Y! z+GOTcn%^C+! z2=Ly`2MxamV_oph-W;fDI)!o%U{nvHXePUfm-)p*+cbJzAGz+bR$lNiV6wOQL}fY# zfU=v))JJB?WTiw;5jD+hKU2=sZ}5K<_J)4tbV@P-0Hm4zr^4R9>xlhNHHY}0de5KM zp5!1uGSA{r$%l@g=X#(BEjdw3(44WU8I-?^ zX5`ryG=pS@3&n-iL3uF7AwHu;1Y<>Z$Thf%FwWzn(T;M*$MX2ya+vMGG7}DsQNTpf z_~V&BF-jEubru|KMtred%@Qvniy9fnO0w%!2Amn2qSBF#m`DtgDdl?kYkHzv6%nAF zB$l~R#W&T9Iy2&M`{rIj{_#L7NVO1se@cI0|FQJXA^svbK7;G<738kJ63KmM3Q3#2owaDYvRN z{6TBC(tInRCCoIHb1t&G9AwA_hg$U({S+Cm&5W`)zI47drFH5Zm!eeXWZfDqku?sZ z@^gcc0{EbF5I`aUW!leN=kNRl*PwJ^%iEHdHKf;0g=N!($9B%6cIRgX_2wVIR23PU zn|KLn@x5JRmO*|u%iVEWVGjhEEKf4jZn@O)M+#2qJep5?Fd2G{Ud!%5=RvQ1-U`+3+xPV} z=hZ7C-gBBcRkest;e7nX+^?({XG?F`{_#?{iBHh~L*pR(AI+-&u7D?`q^f9QU~KYF zwMVp?hqJZ`%C}GB1Ic14DQpq6#G-TII5CNQ-W+L4i3C)<#3HMX_^*xeBNmLbsUQvV zNGQ#92O$M=AeH#MrVXHUWI`IQ2||d1HlheW_ZO*I2QKr^?VD~7CJC_SQ|F!5tbqQeJ;E2fqwUA7s z{TF>Fxo;CyVjKMsL6fhhNT7jFhDm;jYi;56({qqw5M-@k+Lk|#c11xR)`p=Zgp5DMEPS|*As>x`432-h29Zd%8(V_ z3fv`GBn<6fOIdI;brDz&gDEO|h>*s&kh7scjzS;jG%;sMYK%K4$+`(EAxcxqbD>CT z64je?XXsY$RokuA>{-ddr~_t2cmhwNOx%+;jgk)u0|!DmfmJCpTfjCQ4?UF(o=ZzY zuWLXBlOnmO3x9QCXo=9=<46h*)c@HxR(_f>z<4D}bqf{C`ixQ?Et~LU^TsM*s4VU_ z@bW*HWp?14DKJv1-E4+G&nLIhK!2-MH=$p~1+!`h0$9mg=AR73*D-Gy9~lzkf0qQW zZlaOR_l;nHy>|66oyCpZcSMc^za09_D#|!}wAI2TdzBvr&~=6|L4vphODZdxTt!RI zu&e8{Bplrhm9DN|%bKBXUdx)E_FJQ2!?0jQ*M`Lb(G(*uhGRG%qmNaaSo57!WUao| zpi{hkZAg0xNsgAmfx?v`6lQn?=tFgx4OyV>Z-`7*pe69HV3EbZE+PzEjCwH6+6Z-` zz$$<@gK&na<*qlN0Ikr3@NOV9O=JDAk`tIe7Y^;~(Ip$RO-KeR`GiX}U?JgQ<1kf~ zVNLh~BVpm}HEBsKtvt=*E5s1N$)le7dTD=xPCkSU@zHYpD_KYswyX{)wX5|-m4cO> zE+U8O3`*^_tqu-fK%}TGqKOmE9}QA1Y<<)iXfxP|$|YdJze*i{Eq1rkq{HapM3gK5 zYRAF>=Z@zW@&~~l0zBml;X5XVXZCa6lVFf>bT1Ftv}MbXWY=LJ%huSX*@lwC54ZE?m4lofFzjY7SM@roB*J6AF>iy3TjK(E^Tr zN&Fr+MH1>UJ<#16z0Q$6Ll?)<(;mtoG&7DEVcXwgh8K z$3=Oeh{_Zgo)C(--fKk_ValKu7)cQT|o(1Bv?~GGgs)E+Xz)i(-(M}=nDkVp*i$LC6CNIQ~ z3h1x8q8Nxr>AqqfPX|3n1w|DR{vi(u_yJLiz%Vc1Uw@UJdvG)XVr+DtN0|#$6UFb)T6)rOk~~ zs$b%ITdND|>&B6S(X+%$=}2WOP=p$l&in5mKZR)l%>9cWs@&x3&|_ZU`#R{mWX|7e zfY;Gfa6hUep8VdduQ%@=-cV`h&uWJ!XzVx5P`~^us*~}?xK7C=eTEeIMa65)*JQs& zDizepr@_C`1E)U7(PHjr!%$x{bHtJM8LTkoCw_d~C!8%(s5=-jMbPKj+^bT*qghZQ zN9*sxO3)wyr&lG0v6_-NGZD;;l2vshoa}2>6f3eH%=>>#0Cf4Rc)ce5BZcZZjd_OS z>@$YDpEZdUC`j8^SBQ&`AWVs zskt?IW-w?I6{C>OM-|S#9c=-d%%0BC&+h%H88Y^fHjs~d1_HKCBHWv)C|9k{OAsmcCRVvvA$dNbluuBQWDfg`W5 z%TCt$F_wIne-f*hi-m~&aJ~Kg11=>cT+W>f zxgizlQ7oHVU4T}fqYoFik=90UV6jLHHMZI&)Q<15`!F%B@V4^huEp{u)PAwsAAEi| z)W!0?xI&}0U!&0u_!O>{k`!!pV-CAy z_}&91y=aQf_ZCdJiJ|Hp4aaN^uXAvHs`$Pac?WyjG%R*ktN3DS(J8BZQD0+=L|2zk z+ZoGV5vR&MSdPl9W^nr?K1*z65A(?FcMNi7B~-nKdH=OJ@7IC(*tRx!rvLTK!19a~ zvr9M)T$P~UyhmU?)avl7N5B}*FxWdb*&$7yJJ9MyzC8dwZSxlWdI+7w!@9t-Q-7iHk30Qe>AC;54%3sEJv z09rAkM#L)C+NdQt3))mwB{dT_-k!3`t(-e$6k_j>PAmd-C0GgivQ-31iou%Wgvl8g z42IF|6|AJ;yWD@Ji%Jv@XSV&;S z)1a0H<;}(oA_p$^N)Fz93NweUM_?$~sE`MA)@|GEUgO&BK2Isvqd0dHaO^@r{b2{) zc-Vfc7G>rtK{}pBI-U>W`!=K7T{LxMVW<$JFs4a}ygA3rp*qeGr(o|Q4hfY7%#t+v zgfIsnms+w>enp=m3zkd;VkN|0a|P7p61Q{3>l#1(>8NAu;eg`6YRnXvt2hRnYt%`f z))%0x*(n#n_Do!xJ^SDLATBIbP6*2MJ`f+DyO*Rm8VXLd7q;d>x^5+F4b}i7pJch{ z!}JU4oZ1foR5})%;Yt*#*aO&_M)!Ae-yA${&f}^vNf%7ZSDgvX39gnYnODXX{$$l2 z=}z*Ip5MD16SGeAW+0U&2d9hGrx}`q=L?Gd#DgeSXQ`Cp+)|g}Fg-lQaANLEL@^fp^PdihE9 zI=i^+N@Y1%&wc|dY#Vt`T0QXk^3sj6WEg*Y1Zr;|Fj>aI!y_S(_2_M z&p1PP@mOfKH7**eK?n1rfpYs+ID7OxXVb_3Y>8 zBm!|6>Pn*m$If2JPS`isY-O{m;M@jTq+eHRm$#b)$?81(uv7NNzI7PGrpr_mz*X?) z_VZPR_ApSODk|i0h8iI#)@bW|3d5AI`eXr3HeBBxJ%sk`ovfo37Gz^Kv{+@uYg)BL zSOS5x3`9mP&BSx15vpiSM<0j6uG8+ev0w@io2NFiS(JeG*A`PVk3bJQlKspw zhT~mH9+WG(O|%6P`)*6Yw{yMl{zQV#M+re`ri~KSQEL7|ElX$ElAUbO*=DhctW47A zH5aB!v$WDxB)(QmSX!!aLPhB4>nZgw!*G6lN#^A_XQ)Ro7kMFb?&6!0}&a*hA zL~B;;L|&7klszzkvYv=5Kr$yk<@%-4H#Tsbb~CSJ>pafFi6f?W(VSqxrWS!u=q@sm z+KphI6ZX^+MeZK$dAG;YuE&(Pk$$^#Poi6jkgThdmUmqq2x@^ErQA0sv7~64NNU@sO z;Z&X4nyWH0Gyaqe>rHFq=|*Qu&}~M6fnKV`KsIgjvv-T*X{o`CvQO}C?4=|v=t^VW zQB9%H+(>ll&f3M;{8^uLSNf+izJK*Nu&KDkMz#>N`y%mTu zTCYU!6)R*6nVZ1>hOLzB1&CzF*TFK1rK@T(!O!_qvo=y(s55L_QKSVH@raGxv?#lE z#&CSz()bbYsNMlp)}3O)zOzEhRo`Jhr;j%~CHeJP#-Gex@%q}RgPY&={@MabX=e4Z zA`AUmsn>r}Z(`jY`_^FtKWC5E>3d=i`t-LWU4O3xU6?Gn(x8?NSa1o&KjxN}_#@wh zxuzYAXOQ+~?y$X_gGlrx3;Zwl(<$IiL9w=}l+|_sHQZCMU+At|>m6+k6w(4ly= zg@t~gr6U_D^W&kmuX9MZ!QL8K;V;L3w8#8v={^8Hdp**{$MU`XWsK3c;w#w|V-2nb zAVz5!suXDXL?<1x^5#tbnqia}`?0*ZZs-ykCY$k$>|Js&#XuUeF*HxQ|0Za4_>y5f zCX2zd6PhK%@E51jR;l}a(2hK8>p9U8+wuk2+twOLvEr5yKJ(X>v7IAboA5v@fCu%C z=8zKUArXe`Xx1>F=Ep(L?s$K@uYln()j(FG;1GkljX?s`HDRQ%kK7P|H`!xK) z>toMCY7gL>k5%Qr)743|cZUg3007z_5AweUvHrW<<$nlV|9vz>C+{jEiy@Enf*E*@ zqDW-sjrfa)UE!?)!a#x%_Jal)4^mbUH^7>jS{RJcM>aOjLs?%tUfS3yc?1eqMxj*R z0eF-t%g*BK_gl7Dw)XP+%$)P~UITxBysz#8geb7g4a|LxJqn?4E9RIj3$0da*e+|5 zPftt(mUI3@U5koyldrK6*p?>COeX3Cp1`}`esehz@OAiZb_=H zkh&hj(Xe{Tr8EBs^|A&mfN@~VGOtpF$#x9rDVM8lR+V7dmG}1^A`SN5E{)DhN@e`_ zr4en+&DeG9eOUB%9hK!9aI&S4D^NDI8i3VipQHX9Dmaj8I?(=LnJMYF?5$wXpzVaE z%n_|B1gXb{?Au=j;4|4h%eX0oHsj&M=zyit&V+gc;PpDo*Z9I??bG{VmRiizmWoap zqHr4*zqh!C?G+_&47xEXJ8)xQ{_yoVkTigUKUKou9JQTb-{BDN^2Y3&Q@Gol8*z3d z0hcrCbZ2|jH85?7W4#2S_xv*Wjtl=4WqGxV@up}8n4`BiQ!>tgv+dM0;1CIj?X)B# zoV-)q;v>R6eq$BFN|7xvpk6d59damZ?AUA(pT!7v-Gg#m7mg^((NlcMv6a%$UoY+P z9?DJ}eMc6fBDqnix9x_RGEMJ-uHZWehq^r2aaVq3`ebCF?EHlT7dT_CzN)mbQ*0sB zn(T>vLCcLO0qff=?920b1qA^ENKn< zrYN>x9VYrI0dWtSFpK|{Cjq@vyc{KWX2Ksyt;2%EIf7ln65w>h{kvga^hC!7Kd9S$Dwx)0!vy zH?Xt+ppC0{T%Yi>k3rGs;xQAO=V_%`u1|P(Y+`k{{$xw!yMCTu)qCAIx4L zJD-6+6c)5r;tGqyGu?E@-uUcJb-liRzJb|CLL)(jTxff0mbKgKP%Zs9QqHxqPv?c% zJ4%!Hl#sv%A5o`od8UiWl=WRi15~%>V~6&L)Y8P6kV!wX#SC>;;e|n%inJCIJEr5R zmcd~}SN%{lh#k^?hXaRn$pp&nI}bzl zRW7-J@mSNxGA6DAQ+ZLP}yIa8C zT)mj+Tt`=v6t3^IyqIxIv3XhX$`nFj!d4^u#DR!lLjA$0xTau?C?6qfz)K>IFXWM8 z&I189!B$AoO0bXO9!`WU@;@U&agY?JU?pFy7+PP4;`ncbyglj7vC>Z_p7a0pqeM|j z;)jiG;QTM&wU3IRc9P~ybd9qvAP1#a>dY0D~jSDE!3AY=ph!oI5H%X&fR~mbufezdX=lm+oE{H0?0%v)EaJ~x4Xn`y!MDqda z7SU+Y*2t>pKjB`iO!A34R)y#)EyMwL->H*y>}hBr+$KRu@xYYrZ@MqBDtD<{pScgN zJ)IKk@9<#6Uq-V_QXs?=LI2IUBPKoQ5b%YQ;Ud{sbJ?bVJ(x$xTvZ6`i6x7lPoSIV z1z#0ItO#TSU&Kbn<23Rhjmn&3-j`=O+q93ofGG+J_t}~n1Mi@@2M|z-)7hY!;Yvv| zi$+!17JWW9hd8W}wQ3)8acxzQc~O2y(z!HFf=Ep51ZZMf|A zBq6}7SYXUthX=RPeqxL6f)#mFtx0{5cl)g)4buPDM^p%1lWXdrLxXbc>eGWFvY{-Y ztEv!1LB$^fr?DcOkfg;4SuK9qUM9~;Pwnyrc{TlShlSeFfDaUso-DKZ7y16Fv$mjg zKF!&SbpIulij!`(>CEkr&f#uis)Dy8XNtX2Uh-qPE!B;+VK1AMXgr4;Y+PA*@jj~8 zYO>YOwBK0n zNlb>6mMLFM{WoH|b>E{Q*zYLxlUm4MLCWv9h|uLwx7)>{pka@d7$=$KW(Y2cz|<`XoH^7#9D_3 zuLnL6u?x4R&nP1|-NWB*<4aU9BuZN7zt#pM0@T>=VXB?TcJ)8Dr3|r8`f>(@5gs5s zfCi_`f>M_tHIbS~86uEJUW&(HR1XFeM5o<2)Jh=5Wor&A>3h- zitDkc_kCd1C>xF@@)=&R3G0%+GBgES1hBQ;K`9+s6j^d>&CQ;%o zp6(KQ*s2!B8}Q3l8^oD!hwYUY4(m+^iq&<(wi4||gj(tn#pLH=;N#rwx^ zK>6S5T=_o?PAQ20bTs`;0|2;L*#2y9ZYI{&bS};o)=qRkUV#5)&5(0({=c;u%DYaO zD(F0D;`nX(kkhd(KeA~XeTl#o_2%$pM65_b^GxXxW?pBFlsd?D6Mc(>o|mh_8{W6G z-!p3jM%gddc*ie3ZfNR8TrqTBH#^zu7MW9E5TGp4;) z88WlGEKb>)VwBijqTc_sxN4qrR@XEhH^KfPkBaMC3V6~!wECh0>bGpAMOdSP2;w|} z7UD++6Af(mc|H42*-C>c9Vl`Ju_c8#qN_0p7={FmR44GeeHjPjXX34*K;gtZsy++(X(9{f*#eFb%1V zz{|#R#ka?NISMJTdI{QfwZa8A>r8Z#!Gc6i@x{d{KH_w%AKdmQ?vn>wQ@>z_ET<+TeeMRvuM4) zH9AHBWcYN>(Q$GN5DG`eZ`)Q`D&{6WG3hMPf4 z^cyJZuhQ3^1oFGK>Fi!POk$R1Oj6!eTS?Gh<02bpn9!j_57W=3=7m3(MhNFR3G5G5 zRUELORxd#lu}w&nv&fO_hRC@GzUaA+JocYFf7nOj1A$g7S}-Gxh(MITktvsfh1^sl zYdI1;fwR$uOxVUN;tyNS(Wlzg#;)xXBB6MNqulf;+Cs>WdoI?gBY(SQTf?)$O5t~y zxNUaS8{GMy?xL@mtOPI%fSs3O@`nLSbs~%=s|NSTr=7o|c5mln1+Ii~as=Zh=^0Ox zc#2wp*2pibNV~f@!zYFtcJV6EfE)=5{_r?tINnfmp;P!YQxj^oyR_j3!3BPIUn z6}q!ST%pl}c7T7k@lcaq*oW;n6FjvzmLdY-`Ml?UEaTR`%a4MIYU3c^`5P7Hz+lBS zSgmLqcA(iI2!Z$F8SNns)lDNw`eruV5bBYdW!Mw0Hg@ym;N^Z((87}25+2ZkV)*7} z)X1kpuIp!GrR1@%+#G0Pgi!54{xv}1YzI86LfP12XD;L&y)2X2C6%0DTwK_ z!#*g+NFFKR3s0MqyPrc2KYBi5nn#niP21xu0;EW&pP>{JrZ*G=x+)9 z=|DH144ZH@(IAf6npa^hb^W0M5AW39GtHrzf8C+SKE>nBVeK1Y8BhypmU_ffjD1BA zY3H4&0`91sRJ1&$^VHT`{Dx2soxnv=e)_gF&g*n1Gc-Hq6YZO;av@#nze-$xAqW?S z#%;J`lRyO6UO7igKKyW6=pkBEoQ4n?uc$t-h+rk|-TNtr;UKY$k3o83&rihu@R)-u zE}j?^CcR6f@&01>k3FlZvqDqpXU`J-k9*d?8&LY6EA+nxl%kb4Z5R0wcoNxJAWI-E zBq8NJ36M`0I)cCe19;_|2^BSqSSe>?8YQ(kT#dPsb`JswZ~MUiDuii}+2CmdrKoao z@j98#%&hhLe!oEG#iUXq1|>Uf!Up@%VvnMSwjiOmm|?rY@j{ppe<#Ody!Vj4`b(}L)+j)#v5q{(xbs$TPlw678Cs_3z&b=Pdl+JnN&e$2)owbFv)C~|+yx*_q5^7!|r7ko}G{pwz_SI~pl9S_TN=vpCN!8mHhqHH#(d}EeeQVCLZQHhO+qP}nm}T3xYnE->wyj%h?R`#i z@7e30ocm!U@5eV88Bg!M_11oE@b3QK=D68gn>6yDaN5jB$Fc#JaL3(uNk|nmoFQ}@}LWF!5RiC2u6lRdP)nZ z2`z`9KZ0DYi%7pW_n+2)k2o9_52$>*!5Tc-SXU5F_v#tk=mErDv3zQ@tNF_XGxX`S z3j8bWz80G@0C|a&W+NeM>4B(`at~k`!nyU7TyPDC)!f0blVaf3MPs38C9myqbNKW1`zHBXJVt-Kg>o2gNT z%2)-tWP~ZaQUK7y`Vj#UaX7379;NiatLb1QZ+i$v;yg%7mT0jI^mi6yej-Hpbj0dq z!zgLR)aKzXApO?8srXw}qXGoZ*{rlHmR-k_jRTZrHsWojG4M<0pV=&|yRvg~lJ&Vx z2lcuZ2`4OMiwBt~6DIK1rB1W!{rnqjz>G>>g1s+V00z?rxA}QEjN&269(_RtzeGm% z#k*M^ot;k`vz+VX^7+Z^%LDEv@GTb=3L@cbR%VGJX_&KU-BolhNBMQ^ z%eDK}l;~JQ1L8BY2zmwqxw)@wbk@tBC9=!aWXc#$BHKqzdLi-0 z6@Y<}3}fIUNl`@Jm7OTqC>mI$Cy&&qB$!q6#f4QNWI%iksZg|*4F(WxPRtPY&;*Va zA;!wNMJb4Bpe;}MgQ{8fzRYA}am0-}le?B12BLN7sxqhb*!uuc%=dQ87sFU@58NS! zjQ3wU0_#*hKX|z3$|RY9Etwt+sl_SGP%d-Yy<+l01q)l2IoPzy-mny!z@?WhUr=c9 zD)#2KpjP>K{zgYCYZd0+f$6(1#XocQWlaqQLt=6QO%-9#^dBzZ!6&6a%$Yj&P7FL| zV>wb#1hv&H+-U!iS-8^MC``zLDHe7-6AVwQFxngWLrocCn&8}37PU7D%yKUl1|s1+ zS*u_`Lq|HhlXgK2)GgB=8w|dghP<1H$ploV7R6$|LiL+?`XLFEbr%Jhb>1EQ#l2Uk zC4_oKqRBJBsj`6s?gl8x+!hhuofEklCY9&CEQIq%ziQh;)GmOW1LkVGcw+=M6tS3D zFby&;J#W?QckwqY(Xz1`=)&-c!G7q$kS|7|<0)1;w$rcHTM5w?7~9lE0I&{F48(|U zjkuxqf1RAXH;q*EWZnpUFO#TkQT=HR$%;FFfmcjMxZBe;dnp1_R3)(ZX)c2?a|7tk zx3JF=;`qyPv*@9w*ryI_?xuEA6-?h=if^iRWTbN?w;4iWzkiP*Ay3lzm>=>JMLP_B94QxS zN%c_gzrOL5ac0nGB9R(<8C+Ej&eBzsQ@;GBusm}U?8m(+p20)H*qun+T&Y@Fy^qV+ zCOD>(_97>!>isCCL$@S(o-DQB#h$_;6!MYn-xh*#Zs3g|-n$gZ*L0#&AsrH{o`P9b z3Kh}QoeEB4Ka&;gGMjrdpeHdy{wBg^&_og4^X}@K_AukG@q=R~P~Bi1e4h zkTPINM_PUyi4wQ@!2FiKHLnh^mNjs;&T|HW&#ph>f+sU4oP{}NTz@w^wzrme znxy}A(AOo>e>kxg+1QaXBtnoD;~W;wp2{^UtQwwOn4i)mRXPyd$6Xf*%Mo~`g71p< zs$bvTn#EdwF+uFbA3iLNJHJpq@GN5HT}sC#on9Au`8_Ba4w7_j{L?W=f?$uZo&Ji% zi%cwmAZiTY$-_GE#xpVnI)7D@ zIc&ab9~A!Ps(%A!8}0~tkBZin8cRr1BxV!|J5>;hmRm#cW8VCh@gxJFn`o+V^2lUV zH6ytuS%*t>>|Z}vsC7lxbOk`o@vd<)lLq4dps4ZfXA|4bPzk29veibRv3M!QAZJp} z$~4bpZV{gbUq9jT$cu8i)5(WDsci4THWJ>3KG*g3J^pC~h2f1AWtp|1fk}6w`EX7iG_huG6xqpjS6Loxd+3h2uaRZRnqwY~zKX%9t_+X{ zJNr~0umvh;*idc|Ej$9sy|&tma=b`Ys-dW)1rrk~=~LcStnigilIyLHW=;Vnj*=7h zm0iTilq0BaMmgNB08gVJ8F@-ha6Iji3br;4@{DiM`EgPmPueMQDDbSSHG$LY)`Ha3 z%<*5}dbitpA-Hn+MKfmpy^WdSu{wvFCc4_&(Ai)N%Ic^k4bPJx{U)xX4gb7MhSLN# zYXCq(ytDQ=yM&3li{QjbWZ9h{%m|%iGbwU+kkKd^TR5fO(7aQ7a~j6s+Et?uBds?} zE?xpTGSY)S-IisnIo#lwGv_wBz28-8?*vDk(?`uiMlFC&iStW|cS=dn!>q+n#q+1M zhZJv$4r$7Om%svb-g#?q_Vpq1^@P48icU8~zv53i$Wo9@!OMO?MW=eOKgj+vK8u}VO2lKG={?~bIAG`KSeAKj8IkYEV_ zuU3+Q%1cOeU^MpK&E^P>qMrJ1Ykqt;8l5u6i;cVeQcPzU+QQS~2r@Ng>wMzpGR-+M zV(O-g{_9avoXO*Do-Pr|+X7zX&^0GtO>!&o4uC_g8ku4}NF?5k;3%8!qyzd4v(xNg z&sK|k3;}D~7yi3r<5aBlfOJP=b1mnnVocC9MH-P0G zejh&Wq0LywNAjmv*?oMjNYooH^oQR%gOP3tRkxmA?`X6Q%AUZXcBtwP?FvDxi4ZKU z0m9>IfhX-sNxLIPf6&szr;8I4A_IhhBSLupD8f9U=7^cFt2goV6y`2zV-7%Hk zhezX7%Z-k`WExm{d~Di*w~5Pkq^t-Nl96dyd=9a?`kI-sdBG=Yi{=Qv)Z%v6=v-CS;$|sQ+(ph zCk{KcsMckxtfEll3_8Ta*NJ*L1K`NW0EcE|IE<21MJ^K`fG7jO@`67&ENkDFBr*C|i(ph5H5 z>Y&7uOFerBk!g`~T(y4?-+TGv$QVl1oP&#rz48$^;N^3D2t{QfSsi_nHmV+*5diir=Tk-?8)EEgzIctJ$0qFbzym2S-21VHS-NRZSA5~OgN5CWZxI1@(PZyit| z{<-p5;k0Y~Gr4yDPG=X~*-Sgv|9?}*SwT{5pJ#G+C;#>8IXawK)pXA`j2+olj4DAJt8+C0Z#N}FP) zkkV&@0TO+sq!$HEd!r_dnYUllS}mw=yBnqOTpeDMlqv3vfNTi(jM-*wVbVO5^sHCr zPE+58_gi63$N;wPTSo(e;V{_cmxa;dZ?(l(Ye+!p_ z;B~f~y00bgPo37g%vK-1PwQ0NCvh4LMUFM^rtO0#vr||++XuU9{?fDRw+9=fA}^Ts z19TO)(qlv1?pdAKu|<1@DeKjxzk{l>rK_iF4WEV1obK!kehvHPS21Lfe?sg|*)wwI z=C4=Bc~xYaihxhaiyMav&cFj*wBK-zEB#5H>&ZMz=v*+IhszxB3dw`5~;o!40a9lpiqoKFU2Pr4_LrCpS`ITh_c7tHL zEC}G+s)|YC8=Q^jP9p zHywN89l`V`G^d1TL1tE73t}JvFE?<6mPS{>Pm(W+#SnC6UEkI`d`dIuv8PQjAIUO5qqA1Vm z^ZCqoQ4}*03Jn}Ps8DLmvnTsT)3WrFq;&(;?@Z4tx+ko)TsCyNJuu|UFcwelo4G2O zFc!>An`L|p2bh)e!=bk4cUd4Ih-ATov7m$d<|Tg{RTD6t71xJX*ID^3e4_Sbfmxgrx{HI5FzRms30288>8w;Mt3p;e7a?Dm1N;=7 z@hziRcbr#uEVbKkuUV5jug|%-I#(=QJb(KpjM58|dEIS&f5vXVeqw*W&JNRN0?Cnk zLK%URT!D!qx_E_RhbuV|^}&}AU{$Cg*xE0t*$>BH-av%d)-`J)!&9y))Op;abkO6E z#I8rzC7Z3(Wh`AECD>GAChC$I_9I=Mvlwn)TXF^JZ z#$VvGIIBc&X>ktPcS-PMtNAu9>bYJC2NHKAPo2uFM69cFX;iReE5vyWXB$<5C70}F zN}q@!?W-$o;JQ%DAY=(2BZ;WXrALSfL5u{--iv?yeO<4XfZd}O#Yz`Lf^FoAh)5?- zS3c^}$k1hUj`)yS5N1N9|BRD8O?02thL|dTTf~s6 zJNe|kHbNNp_jIHZ%L#>8*r$nDS+NXw(l>qe4Ze86IH2%;g3}H!ww(rAqBzf zT~yAqO$z6zJTh3pA5t>NwV>RuW9bcZDw1FUKKVSCt`z2e+_n+sxLBMF7>^7^=@-^< z_A71W$JVLoWO{&ymds9#i9Qnw)O#bAA)+5=ByN?@Y7?isL@-6ltw_S=G2c_9*m3Be zN_T6e&IGe1J)+Pj7s#NUmHUKmX~E;hnMCmV#3k3#ivDAl!HtN-!T|L z=jqb8Ix7U>3lere8wgHy2_~9;(TcmC_F)tDl$0YE@K{2D11t*=A^D4N|Oy$xK%jr@@dEHG;GjsI_ES z`1s51CM@2$(SO+EzTD-jDS3YE1F5ILO^CRaRO$dvPtUdn{cWyTBH)+T?B=sEV*id} zK}{-HIil}!Mg-Hj(yKar>~Jb;wnMD<;((nN%FYQoBIpfWn_1!#sicjq=ALw8h+^$jPsf>dQ8-~ku5@OWnOXrzH z1~-xW&FeY0MHy7PK+01PVR7vZk2h*Lcd6~T1#(6 zAUlsEC;6)Me$xgT@CYJcquqmiF+*=SiPPxxpM&`Hd2r>bGTth7_U9#21zI4PZWRPvD0dp~S$7J4_A4z)4D3;`K9p!AWY$a#PT%H$`0x)G z*QCD?`v~_4rEP&8S1S2`J^Ed6^elt;5Ta#}yJ&R-*`a(J@3p*OTMMw#gwKs9uQN?d z!3lnvR4yz<{8d~y!kWr>2^{;=cEN|aze`lWyXy<}!8#d7B0cx~9r=9vUfYm(&;l_8 zt+#D4c#f{gQju*#Jhk^N^`UN0Pv(-fX!3sh2agg-f&Gw{ghvFHyPVU>qp|oUe>RT3 zp>=80k4{-e2uxyE+0yH_KGHBw53z=PwU1_25FNCM1N}_JVT{(tq+!P4c}xkJfR9K| zqWX*;3dA65D4=9gADz6D%=0R`EpM1hAp-@Xe2oc~i+6_VKyPqV|3mHxpCKt0m~oyR z%KMQ5XU6;)#3_VbaOgn=@2*NcOG38%ch_ho#l94JO?)G*P0OItxw8sMI)k_X4a?GL zpC%oilNM8hcmlcAoKZQ%lysVBeS?D0*dasKlU*WWiK(5zkp!o@gcSLre_Yt&kju)g zakAmNaY(tvEsW-6s<}jPa@I;SL5yy-UdPe|ysB_DQymuNf>}&>zgsFRdYb8&S6c)V zrr{;0Dr*g~V!3Mi>7Ih3V!Zwmob&pGo;ijR3PT$>CXcOsv;u$7b0)5yDxXM&&~?)T zw|d`4#cobfkTaxB@}LLtI-o<=0!AODAQ?1^r8eA*vrW%9MVaB;`8bD5!VoC?1oqlU z^*c*Z62G$Hwt~Wa`mM89KW(S^2$bH)z~dCRRUmy= zT#0T1vxrZc(!WQA$H>h1*~JSwXK^ZbFi9t_FAJuLLfQ#Is`}syv2c+7ys4 z;PlYwTT2HxicWwv<=Wn@Ron&@dwFCVB?`TtDKhhAF5GfIbuFxGXRILnKDvw?ikE{% zOZcz=yx*q%!?c0A>K_4Tm5SSKAB^u+$G7ZOGp=8L*SQv1d0)Wqv*c(zBA?m)_B8HM zeP-2ByUPtXXI;CwPI-2?P}lr!+@f^mZd2c+rd%FmoadaJ9M_FRj)&k;~R63<3-$lWzpIfxHR|Lpy@g! zOf*q@Qn^fUwAk=YZ5aVT0k!gAkmOrhO!cEhD{tlI{n@00-o+F1y&SF|D&mYpZsFGDGx4SzY2* ztF&7SFgs+cIQ%U!Oq_NZw`?{%B{&y*#%3D-D4LGY{6X$UmN9|E|9f7$O#H&>eAWRa@ zv8tyIC%7h#zk^Hj8Ov|MCF(+SF>AvzQ48Qz6YddydLT#L(QS^aH=P!`T9Y$t`VF~m zi7ZClk=x};y09EJLqJC`Js$9$X1cT+`vem?B1wDU;ts02#q$ZmxP1BX;J}XVbhm1u zL7LzleAvJ*0t+kP8XFrib;-E>MKRlNTSRZ!LUj-9w&lIbY@bH^QyXDljcM_pfA(h^ z^Cc4FF$TWmT~AFs12VI_KO|kv@mx#10M-I9P4l0kOn7Mvn2?ksDfH|`4(dgGa*Zo5 zF<4k5bU49^?4k(x9Gdj*vfyq(|Lp7hel;x@tnINro+wO!?0TLXthrxxLZl$VbTXFg zsUolsqY8=fMPiy7Z|Y5Anu|$OfN4X3p^7F}M=1n!c@OSb>@fub;+>%qi_7v@sszsa z17(T90UTKuc!!#&-C0s>EsqHX0umA6FYk%MBaE^A*Ly}|5G734=ZomeIr_n!kObn~v!zFJY)54B%%$Bq@g<$!(M^<7wL;+}3YX`q8tpi@Gq)taM3_@x}iE7i)<~Gxz$MR0#gbMp*2!K;P^!wAUyO##gDIrhNkFa*QR(+;_w`3pNRML$qg>p>4BY9Z6VA(Po|N-u9f zRBgUrJ1{oxK}EhtLIubruN>jPz7oh+SCj+#xyXi`D}pdP81%NP{x->ZETx+Iw3Wg( z@0s`oW)B?L+<2@`Jy*QLNTBu(9crF1Yik+Bqs_ScIaTT^-h98SB{6FwHrg0V$wj=* z!P7s{S^Sj;XU`5L)RTUjd!gefyNgs3#(*FvolTg7B#A3$G@!^pmcie0$kV4u`2>vSeMhFVIoN0r^vZ`M9e zyQiUXemQNSn?J)B5!ouT;ud>p={R+Q)1I+ldkDU`{`gkC_^c~vLy^t@6KeGst%x>m zDDnlzXX5z$g~w+s&LhLl8n^v+YT|qkpcZ5M*#y7gxN1Z>+jjX?* zJ|5sMUb9WBzs>4yB+0UkGb53dSkmwJ6xM-G57;Z@5CRgA*vW4b#|L~7<4<(MhI-Fb zFDI2Gir|C}nq0ocAgafAeO$3x>A-_~BHW#c*ZLiHk4BTlsQvnM`teeqDqW?NmG2*zLVKrv2X3O z-Ch98KL0Fy1?f6GczVsi;vXx5vFA|5`g~}((77~_^`b{Z!Wy&1OHnP~^Y~QAP|+H; zUL1hql7rsFZ7k8Qwldwtr?P|j!a~HS_5T>v+?-nkzo-aDqUVbIBtAm^{{s2vM{yRX)4TyDf zRg-?Ts}0z_K0XlK)HP+pTk5Katsjuehyu8c!Pz1yQRvL%_w7T)XhMQQ7+0>#XyEt1 zW2{~-P0>DZ008-T|D++){s(`HqPydd3slh7%F5XA#|N+I+swav>6gW*JVF-h+2L>X*C>ZdpG_Vzorp2}Q!L3Sb-8VViNR$%_ zOZA+$8QjIi&nzi{u#i{mhq}aw7>BSd~wrz^Z`;8{v z>$e)0Qs+BS%Q=r7j4_79pHZAA9m(u@gq8ZAG7%Y!v+%ai5 zme?4_AxgR=<{Z`-6d;#%ji;vClKoprKkS!JTOModAgI_>oZ0esm7T#uWx~~2`SHct zHZm;L%Lg^pB^QNc%8YoKp#}wv#(fL|#3QHYR`PJOF0FfHR_MBpm%D>Ek@Pymp#TH*eo#KYC_H>N_R!4=w=I(*tk)hjs;*K-nulEoISgyWl=jpFR1OrZ}3n9n`{LBz&uI@y^ z?-6nv+lrq3m7;xcXk}rGNw>eu`g*MST$!V9@kvL1_Y0lb|m$1Mv>e&iA z@V~r9dpHL2rK*>Ee6VuavJVq#LegI%hO9A?Be0q5z&@qc5+am`uW3>lQh06Vi6&w3 zLPH#k-SJtCauF=^v7j;8D5l79o$I&Qthp>oq=$JVA%#4P6P60=+hP!3HSuyxO(dcS z;A+s_fEN`uS)n??6VlQX5>z;dL)87hxHA|6h#+-&jXfSuqjYmDXHb4M1GzN<(Yn6y zxH&j%_(dyDj87k+ND@QJ4d}-BgBLQNB;-dV(2)D`;25U|RqR(8(~KIM?kFpr-=rv4 z$ccgr+^Q(91qMTsVqGH(Q@$|RmK*B>%8q8=kuN`$Nx6RrrKEmp%`R@N>mrHty91iq z`?uLy)(Mz>n$O|v^F>Y z!!&gdSEFt|CI3niA5-!0guu5eac;i})p1S9Bz9vfJbuk&74Et%+YVPP4xvaSqbdZ- zsLpDB*>Gr6u06X$9T0pu!9AeMf!*ZrZC~uD5&~v0w}UlY_`1m13~1g* z(UOVD)$nUkXk}#8r+U1Erg+kD-uYw~6D-t5|D2#1TeIg$(=7AQ0W9{8vz*12$O;-q zafUC`_mGTHr*OecfS@O-#4De5mM!*(bH+yz6v!k=!?P72ZKbj;C2J+iD(JCJV&sDY9f#D7E~v*pNB`sBy51|%>?onMk)bWxQq*ZqXA>KFn6|L z54V{J=C`()YHzd_8P*U$&U(=%AVx_zk>z9fHvJ1=Ujvj~&^}CvWY96)NU8=LqiRNI zBA(~#X8*~1*e3$y7X#(u_`0pHeCHdUj#kzp0hpvC{SN(KFvoFw;oYAQ1qWwvpL5cl zcrngGV8gN@;l0?Tp%qRExrVO6uQYY!yg##@eyY^t&<_dA`WQxjlz~xPQP`chDQuTi zdr17Hb&{k2sxc@O^%=6O>Qi*9MGD7M_5q!;D7{Ibb{JE76aXhXGOHaF@}kI+@Csap zSPed+dz{a0`zY0plV%!!-dt3xhqY|WV`Y^34%MP z_AUtqx8%jLup~Ppgd9s>pSZTDiCLum(g+NYfenxo-?@c@S~U4CV8DZ3u}08yLu0*t z3*!H#%+_2$3%_{ttoiasPoUTzs@*47LB51dv3UTV9~fUCriFPUSX?#`&mUnNVolm- zi*)t4qORhknC*@?UYZs@x8-Myz?08l@4P=N34`1KFOn-3(6U1SqY9K3=P4K`r1-ML zU5rRub;YPv*Qn6$QMSLHcS|^~*HN`lq%CS^4YN`nD7E-qOER`gtouy9vbrH`E2LPm z`Qfer@#=%|qJrBM#?8W4M~?4FJli=dSIu-+1AW~7TWya0Y%!ckQ{TM#w+#Fv1h9CrNaK ziP{Cd$kHTOI1!rZ7Z*&1CZR=K?p({n1>gj43K9?8uRL=%H%}W$LbSLT3~m)07CqUdS7R9&Yz+cO zmJ~tAqwzQmn2VaJ*+hzb3VRNLU%0}Eba`EJY0%sg>ZZ!4Pjjh`AW;!Y_yZFfLIdvN zngK5kpFdH}P3(NAHmn@E&!j~HQ$1(5cCvqll4Kq(o!1)1Yn-I;u`v4);XPr~bm4*B zwU^&_2r@OqrLK)XrZqYt(Xa~8M@Ft`+7rn|t5u4+cG{*E4T5dSG=WxtZ)hGm(4(ZU zLs}tTZ^1x^uIR)BTaptIs7N+$SZ6j7`B=JqYainAVRVy^tQv{397VUVv@*wPhKCDW zZ^0TDiG>Zd)HvIvXU>3h1?P`lnlelRm;`1{Mo~qBInQRbCxPF&#D}JR0T*8COy-X@ zu0ReU1pPwAt7W>wBxS6NUDW{N(lAQMy4t^1)GOiT0cADlbmbJ1a4W6gnnM>iKzf?r z_$k9#4C%DNw_Uhs|C{#j`Kb1k9;*#W`Nf_?O1aR~vC8Af>K;v#7PdYg~dq;SQmPRu9xN* z+i0{zl^tj=&~4(4WIZNbm~QW zD&@!uXRkysOjW_;!Z4IMd!_Od{o7qaj1NT8jT46HUVG@c#@Ar~;Ttx5!9OsL6+~ej zjm4EBF+Rki-Pw2_5qm8lKB3#=m5d$zy)GOEt3e!IVK#)`jTo{RZVn5Y+@euRmLYh&r2%gnN(pfU>7@WrlnC;0(edmv$5qHO}Aok|nbINg@634_&Yenc} zI#j|<0=E=g(p3X>>JoPhnhu1-9oVCT`(oAj%g7S-+xc9HV4FT28U7>UB zaV0$HiS4l5L+k#!!%>TVVm#i0;_#irxB(8&tdW{lP5Sd|G5bM(<^O6VuQnfiJ-!g) zxBtq_Lf`n|@d=ySLtrYdaQTTH#WbvEP2EH){bE+=dSyD(LXks!UcUD&Fv)JB^GrYO zQ4u+}un4LAgypwVl(4f?{6v?PJB}cm9r?n(>>*IAdRtBDl37tycR20=}p`kL=!B z`M5kLzDeQ5t#;+pkGcYNo8&Zet*gC{BA0+FqLm;k+yx z@VeQ%lc>Sg=na-DWDc7@8Jou^;*c!?w(wW@HkUf2m{m`Xf+4^-n#Cf+KD{PehAn;) zNvJ##W*dKG!qvO%p5K)X^Q~GIGg8Hws$`@naapWM7r(zucjzR~|JL7;j3eKTF}AQ%d>%8T56uQrA>k2B1N4#U3Uq-cVJ1 z5y6!xiod7hu7aLbJbNr6KOjX?_W2|0f1RK0HF0qyXKM*Netj`}RqsgqZ z?qhW>XT6?q42v}&%T#FhZC3Df+r`^o$~9cd1+@nNyh+s}skx)+0;qwG=5XED=x5mr z$kqy&@TrB}--`tE3>p%X+cMQu2+KGY2{;HDBe?t)H;x=_-8xu=3>xB+<29*EGZ6FV ze!+=njDu4o7c`XwmYy2t$jlQce^`Oy(fX^ ztAtwzm`c(yYVRC#gw1i`TX|us=X`aykk2wO+42_TA{6I$_ka@F*$!FCbOJ6>+HZg1 zZ!XD4Akf!wtIwKT=$iVU*;wV4rF;)^)t}Lt<0N{+f-}H-!?uP0+~J1u-6#3d5^-@@ zuAXT};2H3TyYOw($AL$->u8sTv)*SToY&!y!~#}lM|oIKz3l~&({Dn!lL z6^%(FXK?q@+OBEpmcrEpExHcyKwa8uFGX#&!yNJSp0H8VzM7@SSLjjqFw`e)_tt*X zt~b&?VCJB?N}jQP-cg^zWb|S>sAZ!SlQ}#3reoKB)-Xc&4%3E$YKw- z2iZlSt=E5V*6-f!d$k||0QOP-NlL=}pQI!KV@Id|CS535Dq7n0f*HVE+2Oe%!e# zBsM2AdZRPtIpvsr-+8?0`}KZq3lRB26W|w87V0wDuo0TPZt}ILxJKrzDGD4?4a${ z=nO3==`#70%nTI0fYQ5shD;fOH{={85WB++ef#}KMQeEjv6YO3j^{UY0!JSjhQ|}_ zLQblQlZ-s{zI%tsrqxvB&4cAy-}*!z%)RuvKSRJ* z;WBB_(Z6QowFF24fE}(4-9$yOZTA_F35Kj2RLZWcGzbzx8to6Zmd;`X**bK_p$~lX zchU}VSthl0W97T`@MY^bg>kL_2<6ljBwvBPclA1~V)t_%>5Ni{70rwA20NRlh4BMb z3uO{x|GFwvfZQJL@UbfQ~Y?QNYH$G3N#-=A&q!CL6 zF)T~HEa~2`?K9@t!^3q1pm*Qc5MHoJ{q|bbij2+yjUjFAkhP6=B=GjDdr*|J!o_<6 zx_uxj&c?e96Xnl5Koblrn6ii3|B!b4Y_Bi1>-1NjDv41)VzXq6CQ4{A&y*K;ZAHj2 zdZXV9Wg8ED!)$OwxHiR5dlPVD+;?&rW*7Pr`k@{0MR^n zC;U{2-^%+PF>gKil4)eW3pf62LmIQQZ2Q$)PNust>0uhjnK)B%#B>GNl>C65fi2ek z3+1J(^S7YA6h&GCkEnW;fpp!3LDnXsTxSV;OV?4mj_PSssRQuQzE(qyxB1m8cCuFl z=6anhY#gcw^+p7;Mk`^W=1YBWjVJBy9;LPez;@}arf$po^uI|rGj1!x6+fh#T+n~| z=6|&1{}U%5{?i=rb2k59n0aS8df7fcq_3%D6iawvekK?gnB4Ga4g)PP5)xrhsK9l3 z8aub!mVwYTdwFK!M1O|7kA^sXLF|Bt6IFOgNU zNTPEcv+U&PWg}#?mU)+ULy-&1{W&lkOaT)`&^sxjw>>^jss=quq+wdGxggI@Pp>~X znm}+hC9gGu8&>F}2ULPi>4R*ieA+PW@UWkU!MzXfXTR&<)d3fb5a!K zDgE(V)qw0#0f)=^l_}@=AzvK}>`Xd5W14L|$fykwghIlI?JU9x3z|^?Euyu`Ej|oL zGuMKCw_vUE62f^-((&YLS z=+#1ljDX(kpGz-aT29W?$`MAskn>h;ND~%ShON<$omr4MUmKajtl*jEfAVd4GSr@~U=VU5tHD0$_=gi!RSP&PNwjx6Wc6han4J+pAB{YH~ zsTx8Wq}0HSS18+s`KSN)FA%VwcqkIs;?cCaFs(}wB~8J5-pxBj7{jedGh?lH+1mjf z_STqR?dIqAFHsPMQnGQa>`7HAqd4N3pg72`HtM`NtIsF6f@9$?F{eTXCd5r{;e)3M z=V0Hn6@I+m*w6x(HAJ1&Y>-dv{1GYBUlbq(NQ5y%%+s6rOd@_;G?kyGPkw)@0B*e`lr_cZuna>S9Mw?R}KdmBA`(>DY!&DoOphxV#N6qju# z<3nPr^@&OHIb_id&UJ}-(Lw&pYk#^}fTA=G-EtF{zKGLX`gDduWtxWtZ zm7r<4-30Q6{z(UyEszpCUo0+#2RaAAY$ZfJ;<*n<6?C1s>GcAQ(gR__INc_C|DNsG zE1}JGxO9kKaa@6b6GiCKl}U-CMIzdj=@+?jJi=It4A8L#3I)fEXdfKi0t;bC-UxIV z#CC0|T~x1YUsj?H4ZJBGg7rDxM9D{L4^d!fjy&mz>GG^2?z0uQXw0tI!)Fo{ZOk0W zwBxuqgm{UPS*kKz$6T-o5-*Nk2osfpv+542GFtG<`dixMV`rs6e*msyzHQ|~T;AXn z$4(E6n9FLN+&Ut{Ao+r^$w@bXM8XR=Z}v`EfGLqyMX$&zU2NNBKSY0(Skcx}X@qel z#HwxN0;0idUo3Q?Sx|7W^90?pO;C+>+eaZEQ7NuM&9aBQOlm-iQ>cbE+QO#5>eMZ@ zAe4To^U_f;;A5(Y%mzhNE~JhJW#e6ss4odaNlA{&+)1G}Uhd!&JX>X6N5~GVIYxd7 z1+3>NQ`oOJj8aTPIKjI)5IU(}sX|X3Bi0a90+bq7%^|ZYYGL*0akX}vmA@3VQeWC5 zJ&mYq4QX7Gmio3U1})HRi(nL!3Z%(BFqLYI=qUn@wv4N0*9jFXXCI@zt^K1BsWyN* z#Ofkd=4qlrHiD_g-hSn%2p2}25KmG*mk^KYw%Cg^;ikHNE^iuXeY;tjV+_VJ8}C~t z9`y^dzG2~fl2Xew24kAX5=U1DO1?``Bd9P2B!_CGWH0wuD%a@@ z7L#=efbDIzQ|`a`nmw9^#QnqV?!bQl$&T&6vzC$fz?>BiaA6M3MH_Zbp0~TsGsPtwdga z(+?GC1zBoLlq~iLSfUiH#|0PM&PT$Z{-_)4e+{VQAzosAO zqwO*e2nYxvh>Hsdi3rH*-9%^nLjK)CCf4U%{6wa~XTZS0#lVBo=0s zK)ujs=0K;D_jh6C!U2K^NcGOgT>j7P#zdx)2nfFswg=vz0Tfge)C3e<&qxmhQ5xFH zzlV2ew79Cp&nC#@=lRcno&A5@Cdn%N@4-#TPG1)XPf`;IM4d;nw}PYN+crD4v!WHR*tTukwryK0PF8OA zKD*9$>)vzr`RExn+#xbs? zCoj*l3nPg!-`}Rneb#`u9pqr&A`gb#UKoKjq#i6B&<670*1>Nc@r{h~*GGa3nQM&Z z@P0-2gC)}|{!OkYxVw@v@fclTUX}I2H=?t%r5|h$(`$v0|H5FsiQ~F19OZEckt)obhbwOAuw#rypD9D;dwOJzL{8>0z z_!#O68!40Gg!D;BL3*tIv+!|qo$yNw{s?koVzJr~S2EJI44{IX|CyYSp>vv+qNSIo zGc(^cF^%m#auo-MPd!<~#KOc%#S;95gb7;-Ya__d6FV~43yga5qoFmIcoUXaFg*ge zFf_$KCko}Ctz+DQ(7E~D7&ia5>+%1q)=_k_Hvu?1|LeG;@gK%3`fd#k9azL|gb+cw zxLlIN8l1=lq`$yGDGiB3$IaXc3o^D`-9!enH8-?%?5n`b9_7_k71u;9hx85kv@4q2 zm$vn*s+yaswBNeY)~0Og^Nyba)1~WGRp}iavKd|NLdREU_x=; zk$-Y-dlVzVS>3gQwDbp$X@iJv> zGHlo&9?%f_ovSIRLj?U+a>RxmK05Z&e5(t_dG;v0pS*LlLT~J+JjALNu`W**;mLLC z_GBpp^pmPe!Ngz^rxUSUXggItXe@-3G{O^PV(X%jYNYKcuIFt(>-36)+F{47gm>AI!l8KurOLjo3L2LOhpjDz$VwyOh5e!iKf8c2w ztC23J)CNJzRyXgR&xwzOnh8wzVuRsg&QfQwTRRbI$&GA42}a`v#wG&iWZ6vx&uMwZ6yE2pAEk+jQX`z3_ydXT=N zqv=t`S95C&8Cz1{xbY!FUZfyq`3(&T(V3YQ1ptBi4$9(qMOyTT(ui=B?(;5;FRo=% zGY(ND${S1oZ4(s~gpR564L|7X_HwHoNnj#@b*)uowG|MDWA>5fC!2zYu&k^X>@ijl z#Bs#nI84)liHqOKLa|k0u9e};N!FknRnd$BP38Am=&}A}km)y-A+n70MZ*YmdSER< zw;%V^_tphsUKc3aSIJfI{zw!)kqHG?37K)btcFf&iWb^6s2+l)!;~C#(r)f%h@bUp zlIN>laGW5Hql77NsjdVgc@g(GjhRtVl|^`UM@6>|$_!q=*?ZLzhLcuBbh(Ab<+ zWFT$5soW;1{>ccMfF-GwQGRzMF{8#bG{T%preEVQDJH-$stK>zSO3Y4WP1aJ zSq!;+eV$Ht6@Sc*)^Y&vmLf=7Job^Myv5J1s6w|C)8P;k(81!Q91izm>JW2q1q=CS zXN81<#hoT$sg&9kTSig&yXq!G)G?HG99|fH+vBfE3OWRYy0ujL0B) zv!(6!9i?Us7!X<}`FA0bxhY~skTF!4)01U-cR|Y)`;NHzXq668bs`JU4a4q{&Jz*# z%*7plBq`SkYP9PW(;sWYDahDk+>{ImaZ@B-n!|5KAKDHojps#n66hX&H};mN%QIx> z|MY^l+NGv~_qc-{LAqs^f0vgN4xyzV(Yc~aFK~qXBN$^vGnmSrW+D}lS zG7`J3_OBC`x^XeJS=bu$=|DPqLR{NA?u=*@b+JhcZe}y3G5pEwWQYl-50jgsdF18c z7qw>5f4_}347?eLHHiGUsP3zRD?Vr_QKb?u{rB;MHXb3V;T;x&%RU}cNzqDK zgMk-hA-T>id2>3E9Unv=7Nm*?ANJVCpshj~3!V_oY|C+kAB7g9B_}yzlx6z4g)>Z~ zvrU=qsc>I_A#qsy9N-vra_ z#{VcOV--bO&?{KebHGgy)1El#%;>8y%<8{WCgTRb1FamB+)j{%skAm~+1oB}#FHi? zm^3}Qn7vt&&-s5l(>`Wc7FChFO-y-cihNp^`QaTL$%b>n6mLkcw@)Nb<&f-%kT zgbUL*N!c(ghC1#MqPBJTsoK~%|E_fCRf}aQ)7x_)M3f-LEAc7L_GCA#DKb3y%c?JP z8VsMe%{r}TnQ6ZIF~kfW-LK;@W=M_C&xCEbNmRj!lG{EH@^aQ_NKwnKlZvA0r*4?j zXII|27`Z#M-k6eh{%h$lg^Av_t?<@);H5vIwLXx`>9M=frbntSL&%|wga+F76$R63 zW$&koISP7_oM&KSjx&bd1ai@3eOu0?!9Y#rc%Dce2t~D=!7k9!tO3^@6AwlRJ*vDw z%4x$ttr?pso}ytTqHUk6S?C7cfi<^tMx-gn$w%nEBw-Zbj2iiw518FU*Y&oLJ9_6- z52*NZ`|ovR6hQJN>w86ArCte63N>fg5!w?u_@-M#C_ zvou<7S(Y<#^SucKMi?;V#c*$Z#}u7V?zlgod(1E|$?{Xi;$)^&?x6LLo?EnJDk-$8 zD@HA)c+%!+%XbRP4ih3jDL+P5nZ2QZun6{vK$}B8>4Wuv2`OMbime(r6`$ae^k3S1 zsD^J&D!c$ydF%C({N>jp+iA>DZCoDzD}XzQ>=wN&=XQnPe*rN!oYDdwOYtz9HE2-j z?LD&p@{UjI;9$ebl`g@VZVR6r=nlSjQHnF{6^f7wRXA5eu>P1ARtBb@aqkdxBcb)2 zlW(3q?9Dqc>XEGO2cPxl!qX#LmqBnO;`c6@M7X%E!ug+3CZg}9YL+bLlgY zv}sinXVC%qy^GoaY!*PP_xv&p7faGC$cSixt?>S4sUp2nSc0u8t`XtM)zHER$0eXd zD!lET_E+d&r`$rwU_cZ5Jh{7%GOJW8*|m=~+4fHyd;BK$!aMfSJe5hpkhD>hB}zoL zPWI(JQl*$RQ8fu(xWyexbi-~By{vC2a|6g5yOziDkjJ{1?oSYd%{_~NP>tEL) zWjXtA6I36Z5+e|XAY)bVF4G-I$Ee$(=y}5vE{Ux}aV3*@=P4Mv@XRM=4_QdEo zZcQX!cq6s5q%^(qNoHzmZ*aNGtDE?K@6S3OWdAk}nFx*6C$iAb zVUv+pOXZDZj}(#QxV;J(bq^q72snkE%vB5sp#gW9WVT4ArF@p0ntn0t9Y~q(J%CNp z-{sz}MuBcqNO<*7h=uKNS8^_t$8o%8vUkPNS~m|8IJC#qOra*xYBP3aku^1Py}kpz z9#OU#u0!__iN_6V(OtXDR=G2-o!M&D%a71vW(>7n*jfmHjf{qXJ$BI;YqT*$TEUY3 zG{kNHNQ=eL;O|Owg)*jm8X9%qca$ud(tmp4nAun-HaRNkz5qkA&3W)(z&y8LUSwcL z2EDMDOK{9T^r187Ph^bVDZ6RMlk7ZW?Ogr$<<0nA;+P^xikD^Nm1-;4BN#K)u3 z7kG}(1;(pLhUq7)@>ZD%Hx?wD`CTPCs;|9Dof@EisZY8Eq%metHALF&k`uWa*C-b% zJ)zr`Y~hz*7b-V%c|O-zCG(iH$2w$en7+w}SC+TWfS7>XFQ1~q8Q-G-W$o%t0!QjI|GY)vzEeO`o)ihUS74LX2DJsHX zoW(maW@F16#Jn7HE#wl^cN%&243_X;$(JS$ZV&0yD|wS@{ak($O>6yKvWuXR$1|}7 zcWj;?4Jg-Rw2&z_ri=xObK>YMT$q$=qkGVOr8MOWM<(64cu#;vy0>o9#P&Rz4?HAK zYJ7?*)13&YDybbyl>=w3e%B*LqQr|WfsvN=RWehrZ9>E`N@IwM?$7iD&qBuqakLev zKk}|DN>Zh|Hg})5m2!b>kiq)In=Ki}oZqs&JxV7sgx{bi?kNa~tVV!&<8zOdRl_X0 z%oG2M&^ioQc0fJBH9(Pq_H*NVBF+&PHoqiwzV-0@-LS6b0C78eA&v$_f^~ZZez7VK z#s7o_s?lm99`b|t+-}0++gsgTvTT-DvY^jlev6zSV7n_XE(gIcQ4&v!n@T+^-A$i< z$YL^4f3UY06A>>r>wbj_UdEU#x&aFf z9kXFqen)td`PhfxDd4PPu`Tg+DDD~S=6$|y2N_eujrW@2`%WXtah`Toc)7?i@B?KG zP=k{Lq2RC?Y1o9TP#s_9?NFUc2aK@Tj5t-S1!(BEOmP+D6H&)*Kb}f2Im0a+>>&Z$ z4lxp}O{WX4T#6jj0TWP{&u%;9R zt_8d37OS$1qDOl$`9S%dJbp~#ZxU5?WX8rb5hsx$VLS3P{Db(+pO}tfyh0rpsqw-h zu$qV{wp0XN0%Bc$YJQ?gy<4sDAKOk*P!8LP`O5JcO|3U>$7h$o2wGb?X zKLF1bbFemq$p7z`Q7~-;z6A6YvYz?~Rwh|{IPAxMHi-Q%4ShfP5zo^@-6<+6;z9?Z zk(1U|y1oczn6j>|0T*$6Ed^4Ob9T>|N0H$8&f0n_k4o>srfV2e{$sT{g&?p5lemM? zkse9$meV?vSY=>f1om>Knej+jDR$kX1!<1Tw?@Gcc{Wf}WYultn<`Yn@ED@Ox;qh>@GXBt8%$pun{V+5c8C*a&IGoT<_c5 ze$BSxdjwFpO1U$s`X{-voVB@(Pkixw^~^r6R}^f7aVY`QvoGQG9kn>wr1}*&phpt55qhXC8SG+=p?B zy*?Nw5IZiGFxN7w;(Uq$3%O{E=N*Nr1aMMnN{Y1G|AY6%>31GKw>L@7?4q6bnY2BKG4%Wplv-+ z5@rS@56+W?j(sG>oEJG@3#7p3PF-l@IH(RG64jUmuW!&wJMz^Bm*s3wu&d|d6@Z5=)Ns z+)utLO~ma<%zo=$Qtc~ePY#Vn%h8gWq;br!*!ybK$<|}QR^3-r_d(1Di`g1}u-}?%6sYE2)VD8EZZ($sG0a-}D zM_m>M6Me0}7E9gU4Q2q@XfrILj*ZkIm@=#qu`@2(VEt@ zcl;)D*iic0{G4Wa84Z#`Xu+K%^HL)(R@lql9HWy-tH35I%*YA{on8mieA3fEN#3G9 zoRWlxZRETdb~I1&bS&kP;$jmK_JzFozUp@MpWmh`UaU#_xkjt?r*9sdTPcO6&eLu( z?-J$qTE5o->VFq@FW?r$wFeSo_{Hwhg_n?=0Gr^4XfQuz796t|ftvN^ea9LXdULbt0u*RE_gP>bBxkS+UOa zQCBKKb1@~=)Wv~Z;8F&aQv=Fp;DLlTr;ZRyb;yjP0J_VgcG zYQ+4Zd!sD5iw!FYSWZLm-h;&FNFS1q{6=-nxA~(L z-tNL=t*6(Q9Ql`L3p@@%ezKAm^rdlf^{7jv{K5GOaVQrFYv&M4%R**Roj?g6mi=t~ zAf?-T9*@Jh%B{3iw8$e!B5zAk{hK=oZ^lTsIll$qg>~PtM=8N z9}TQ0vbDsNe`UX*=b|D|(c60#1H#x}@bwN~wjr|((~Rtk3z)mZ@=nH3H|V68!_zC# zPF*#;nJ`!2x0W!?#YRG{VVJKI+dmvJ3mf0J5vWR@7(fZpp7|jZF#INGk0_UN(TZ9J z)E!y#c9$dzSHa5wRg#uQ<3NTohjI*eTm=fCR6LKNf_w;B6!kMp$yvX&IhUrnn^9_j#qosLXs*R&^Orpe5S{b_6kMM^T>Cj; zo`-v*%x>E>4Ac&qAl>;$lsNQ{yD}ZQ=qa3XKeR*1K&yq|pUAz>cc21xfUDyyO`;rb z-`^XU8>7eF4zy%QQxNQ`6-Cyce=>dPqDGq2SB4tX`@JF2iBpKu90po}kM4VPB$&h@ z1FhN^Xac##jT1w{i82zlaGuV7=LRNaME)UtBZ00zd>P@sPT1%*ubiNBRBZoYub^R^ zptx7UeLaNh`BQNOq%A38J`8YX%G%A}Qh-%4zCGi@8z2!TK*A$~Z9(aRdN<n{R- zx8}<`W|u z^|?Mx{Evpa%Y!!j2L>KEDMp?hT+N^BqH_#dWH(Q8}pJt zP~+e>N&*p+?()f^uhw=RH44YoTx?tVE1qC$J|&gvDMM_yAbA`=i%yG<4$4DhBqRRU zye!CZCIj0h(sdZ>o-G_@zX0V1ZNYiO{T&0|*RYp3hAK(J=CM4Zm7{;;>etd;_bGkx zX}yJly=>W$cN6Vg%4K*aev*<)YHhbtwDs@i%#F;P#$}Ubvtz($u6G_-$iZm`4!y^i zJ%Ti#`FPx+yRt3!A?C>JlYWmNV(Lwg+o@Cb%R9UGHqnUIefUlTrst?fsc4;W_~zG6 z0}B50R;mjH##ZX2LJl&P+(SNO>2VGQ{U_?M<~FFT+yoVU07;-1BU>xMg2t85l-=Tb zxcDtjs^}$PP@@R-d>CsnFM9`0izey=9Y&7T+QYH4-i7S(cQF)Ka)4`KDpn=IAXM{I zT@bW3vyD0nh)U{F+4z&GNQ9+Mb|mEZg7@%r(e0{oRI+LqnVK|JpGSUhotDvNB{Nte zoc|nfO=7R$5_sp&erv_qVeC*k3jlO%G0>V<)UrMmDb}UO;$pr!93w^E(&X;g2fAU3 zv)c4bD@=l$q4zER;_}r16}`>K?I&jz;|#9_eTc3ml_FpC<&-d(fqU^nESz%)m^1jg z+7F!iC+sS|Fr6kR{fb=@3PBnh8MO9C@^)kvqd1L;a+NUpjx-sh@pGY zxJ`La%ULIy1*gmcg~v6r>nFz0#>9+QK>bg9pFPplpXRaB1GCpzhxNrxwzQ!kCtTm~+<7s*F(d=pyulpt*`*v83 z9;nhsZ*SUbXtWR|shJI#rL{%5gsHgiN+hdvB&tZU`2aON0jjmb%n9F_-OZKFcu*Ac zy3$r&>7x17Ggd~d@BpUz8}7$@nikE{3{hK28x;1gr_aY{&)PoBVQk6kUiXXF(`sH4 z{#G@8q77W%Ue8gD`;DObGq!de&zR}Y=&Wh!z;TY|XzDtn&y*_GsAZl(HX9putcV-H zBu~#shrlC11v+$ue!u3boKm`ck4C$|WW6*}3!IX;=C4X(_s2)a@n(aGGZheUC$sMH z3;RP?yWqK6^#G0?-aeD{TG?KrN>d4hgTnjo|q7Gw%W^_svAA5_*4G=7q*LpgFyXK#$pTXXIwX$_;obryi zhu9Je^x#bS!@ym7Hd9c%L;OkNv8Y&DRiJ`g2~2W@mejIZB}A8`y1i?G9_Ud?QfkL; zKTs{hT2;R<9=Q=SP=WolU&i;McGeK+VTZ_YSzrBZb|XK@@N9-{*)T%&iCiSXu6j8% z;Z6B`yIomYs1p(m&sEfZ2@2&LC9K6&z19}FC&CUcq;IgSksUm|rV39W<`RW5U zRfzS8la| z{P`BQd|fx`9VQHjyJ{pPmS(QcQ$C6LlOr;p>;i(hz$IVYWDQVb6PSI3zSFobBjbRE zk#(UDXT-0uqSY^GY-_#5gc*cMYOZ^te*jOdoYoq>-|Pa%w|?rszY|gY55SYGrL)Wb z2Rmu#sOYSq{cWy>gdaYp&fu&IyMlxQlf}g*4IUhJ6G4pqL2LY+44S!G4+xWnu-V^s zvY+2vA8u=LEJ5%clU=~zWo1e0bYWibn>~{?;8|Gd{+aIUl~YhfLh24VfNNXT^`yPi zV)uS(|MfYM0wnH80-Mv@rExE|L2Xb69lXcJV^9jqkP_aU#-M#P?!azPXFj>a2m<0o zpMFuSjO9C7shg{5=srY!G9?_{{;GU8xhMsE*DCmKTBcbym7m1|W37%jor4GoxF71| zBifCDJN^NZP=r>2=6lIJ8_w<@P5U`rt*2i<4s)#BhkQDjoP5?>h~w)X4E!$KP3*wg z0eWfa|4j+uRH*TcWnqre%9da_ok3wk4;F(vBirW;ZisZo!-FzfR;N#RdIkO|k(}1m zLTY75Rzspm9eNmWmcgh3@N7}W8U3C-nZc0rs*;tAOFfW(LuwuA1;#BLdPt^oC=46w z6Ia4~hQ2HZ$lOC7)Cy|IxpnHYa~z7(z~?Enhht%iW>%}OoSx@p`P-v583BoaKM_&Q zF2LS!wYQquj!v@MK>t_)3^C4w8JqY3E-V!XW?n|kqi3>hH?TMqt{$4(yu;d@A8?I@ zqcNaC!g%JD*~w*sLBwbQNhu!W9O?1o0QvOtxjjlg_~Z51;Q=GlAMF`uSgE}vrfOpX z=4Jai@s8YfyF8pkwH$5`u#sw#V1>jHt!2@@dS3`w57-+@DU#hWX2oOf+kz@<^~`rGsjJTy(6feAlGy4ih=ALmNGT*s(knWCxt=;b&NH18m5;i()#mw>*CW zDJ2*&t5T`*;>jHm2c1EbC+iaYtV=rC>Sczbi8NO zD4aqs^AMXJu5cQcWs|BE)L~OA2lr}O$z`GGe~}uP8lFPr!f#WA%PJnS+g<_-8+^4N==lCXy(^8H?Ggu}Q?u3o7gb|RvxVXL|TP>GZHBsa$ z6LKsEYQJY|Mq;2_S3S+=6{=JjGFt=p0j+U#ZY1@h_nO2JJ-Uz&&B4(48(a9n$^+~w z-ZozL!rQW{(M|U1AYB#GME6*yIC2H z7h6!k%^AQcy&5R*>$W7-o`lnl&`O@OtL4d!dealUeZ_uroaU7{r7tnjM5Up0SrnE2 z7~9+(!|B~BqqJJn=`B_P?28{p!S491ftf1j8&%EVaBA~{9z8jXGA6g#l8U=7+#f0y zMx3j7S)fK34T)?qf~Z7l>4+K1l&?61SAo5Rv^k@fr%s~#>ft0Xz$5*o=lZs#{RLd* zCwn0v`N<@$LuhB>m-+|F!nfElz!reQycdqpLO{5%SX1 zes3uoRPbF7J@P(%UanqVAE7i@gNZGCoA4fim!N#WJ8)#Dd#E0ve0`!HAz^}|*)LTs zV*8y2zfR8Xz>*gu61xW94*}a8HH@=0_aj@@upbwhDE5@qBe*l^*3!;$memql>S6W2 zs~_y3Jv2*LFA~kN<||`pDy?ZO4Z&T)BWWs6TBh#sLh#Ryzxi?Vu-&@d0XeuD-nR3-@c9Gz z-<=x%Uno(ge~A)QF62>!F!@+I0B7}zqS`|=hQW3^rD8wO`U&!-O!^37$@g6~*#Smt z%Ug7V5_9IeF=5XH{J#+PzKv(FXj+Vg>pS?I&ARQUxnAEcc1IL|R6GoSv8;OOBX;a% zU%VHoU%o1hS^lWI1>uO4jtFJcp~soUdTSZ1rhFwXP06mdZk_%CNJROX;m}YXB^76-EV1zxCzglAh_o=JfBk!BF?h|Z*f}?_w`om(u zYUrZrKO<;tOpcF`^4Qw}Hb!iMzIX^Z^PV<7?)ddazi)H0-iSMk+DXM?H7IV)1n zNV3}FQE-q>D`~QdKdoS-T5?N+R(FVv`Lf#qZ z-6W*0L7ImOMJp1kRSxXr!Imfr7IcSx0+;7)EQ{*xGWjSpmLA2}(3IDi`N@6CZ_YXq zC`~IYxIvD8y|QiIA~^beH6da#E0AcT1wrhBKtp$%0l}_T#{io3(SHF5ps|jYdX_gj%y;YuFo|);BAF+wHOrWy8W_4qW#Ms6^kG zgfa__I;k=@y(Jo(*?81c8r2B4f^FAM^)_h_8E_h`Lx+uiI{&>dc-zgs)L&xOwrzDH z9OKsGB)~!uV~P#vFiZG_8f@+M2f)QY-l%+Kz5`fD8wzQjizNEz@D+4l2(4w6zKI>8c7)*|KzYZ;L>-<%dBlMH~E=2{kWplTw8%( zv7$!-3m7GGHr;e&V$E-fiuq^$29&9H#0);zeY6{b^Gd8&|vd)!IeY+y{ATPa78HIFXZL#jYu zSJW6xXW;OP`_EUQZk7RqbHa{~wp0TNguCC85v!KR@ss?+s+$jCbAnavYilDi>wa0z zIoA#dRdb)Rk=bEeB{HulllpG-u-rzBD3rsg$Y`WfgZB>taXdn2(ztw685Y11$6Ceu zSw7+Bn(QiM8 zF!gizNAacUrx}kO6ue(qTEqi|($*A1 zICi(ihS7wSbt?e*OpYF4uWePVoP4l8CTf+C#q4#Uo&#=M6Ji-v*P2zkMGi;C*2IV1 zUp2;06TsCfHlnLs1T;J~*!Q-~nS_}d`ifotUYU5M=`)35)uCITqAdL+9~zfT=D)$HGXf3g z%$y4HZX2E8LaZ4L;LeAgpfQ`7XWQf906|(bPAb)}BGOhFHTv5eLYMJOEm||I{STMA zX;K+$X8ac8a8uBlKI=0d>a5>zoMS;gHA@mVthD806J6__b+Ikef>h(Dojism;m4Z5 zwBpQW@EJ@S0D21@%-=*z92_z{Buo~MO&Mjt3?~)NpmF%wki+R3%^HfRG~_I*gj{@P zl4WokPvcC*ql|71V)d|=2nzl)7YjL}%u9Xux){}7GD}8I(Cq^oPm|YXS>^2nhf%)G0Oah;H zNZ_3lz2dAB-Fo0|xmxkNcA!VUMQb76T`uXC5g%}({5g!E8q7HPeC#j!bIb*M9#(QnN0)=k}{|v^Z67(lN_v+$$*dLn3zBQ2|~^?<~<84yzTzo`k6mX~ala%I~`Nz;VMmR7Y%N z18%Z+5;A(<7w^WjCA+f;$0NmJ0ZJzXsT1O6;Z8qW2F&Zj*(3!Pwv&Ls(A9BcE4m7| zs%(r;-zv~(Lej5i=;=y|`I>xes<>#*Sc2mhF6tHWlzM=|dA!81-R^w$v^DJM~70Q33kL0SP%RoR zJHQN$Y~=H2feV#I-&9? zeO;Hb-e<8lRo7|URzG?5*LNgza>Wo?SujP=`o7dp)QO;Bdz@C{4OgBecGk;cv7-d= zZW3p}GM_0M8Pq2q=*|ejYPA+=|=q{8RKwyD1nv@{9Nq79+o!- z!z0y=Od>P&h|EINUyH7T4VD#o0WX+HO*?#&qpLDwttT3~ldYMQvatF?U3!Fo;-2LB ze89ITTXV8mr{BPy+y1k&-Ko$SwV&13148NM=x;)3+0T1HRfQ)j!)4spu3ks9=T7K` zvb^*HasDF%KoWa+hJr9cj!^5NBQ5917&7gldm6IVFEME>NU$J8X7+o#fuDN&*6o6# z0k!J4%2!sYW4f7M=l&8fN3e9;9ST>wH(|>Q>^wEbUG58 z13E$0d&C4o$?Yti7!Kn{%p&ehDa^%$O0RA3p*Bz<6?`axkc4U29eqTmwN+}Dhnu9^ z5Z+~NgNqx*@-ZCV$vTBZLN0%=?}&|VjVJF(y*0BRPO?&cbb>*=@Ff17YJ1~hJAALR z4{vujb$k#ndI#U>kLQ?cSGv4JgrQ-`;|ZEpTVcu=$hOubjJc(B%Mn5|cs3Ae<25Dc z4sWUC#tG6D2K|GSBo^{EHY+qa0;FyjOB7>*7Y}<=D~$7a30}$ZR+*wyo?=gARVor` zPd1LhpoZ;Zz+2WVSRPZM&z<;zBIBz0L69!w3Sr3)tCMz%DgRStL!L{ zv*Ci?QUtb{4893Zw09!X-2VA`ew~xwZmQ(U_j(>Jr?lmuuHMz8sm>Lw_1K$OPfgpC z=v{ik74L1IC;!ade=_WtTJs#WkB5-GuUI^CcYWoW;%F1IiZ>8Cd^gwb$cu@_U^%mo}^NE>Y`58@}h}RpOQ6P@*(}C*z!_} zLGzhs$@21P=}o?S+%O*F+rtyuA9LjB#9v{H<_7Eeo;kh+$EDoXHIQ(w(l!wRFno^~ ze{#HzA1_7sRaL7e>`@Jv&Ryo^Wl4Nu$_78U{7R{}D(CK1tD=@tv1balM*nQ znCM*mLiYpCQ+IMk)kxFSPxf`kUC9>pDjBV84=NGfm0HK*lYzbB6#VIXPGO;nw;(X0 z%R9w#gCW~)o|-tLeC~PK?|j+^ljs{qx;+Z5?AI$O@T^Wb|GqSbzaI^q?EvtNh4rIL zXhlk#{Df#e4eD(wv2+fIGe;%y@zsQN^zPx@MwwE`?5XAYNJ{^kjD|+iTlg0-|FT@5 z{6&fB0}DZ_X!GQwf5w`;C!X^NeR`+FL-bA@!{fo2X{(3cMwLNM${otLqH+7S=?lIm zR5wTX1=QrRr2ec_t^44grVBw!nys5qKtNjmHe;6ge_#lNjGbMaj7(glz73!L;VSem zg{rEa0*(YKpGl3@2B$ouzptO45z01Cam=Cm#XKn8RrYM`wR$7I>1xy# zz}V6pS*(S2#@wDshj8_V-o_jfTI*eV=PQ~_wcT3vFS9W|`mp}9!Ud2xwTC)DE1SeO zn!aptmd-@Ckac8j<&qV8as`JahSmqtH(Tk5n@vAzEj$! zW2R=<>40vV+Wkek>U)Iga4###QVB?QcuQ8&dm1I{8OTU=d5Je6shV0)7k)ciQ%5*}JVE-u9O35G8l zRY?7~fr53r=U`Pb;mPyZjM%HT(n=w5zbv^FZ6p#`8}aeakmJtLS<)^t=BeJ)ETfFW zS|r}ekEd_9TFH#>v@frI%EHfb1RKr;({eN&BaH3kV6j%YVw-8sfWFdb)t~ud|7tSv z@eZSsxEGpon!;rk!x>Ixjz;XI)^oRIpy5)Q{~!bSd?REA>438BI_Fw4WW7 zl0Jj4?W7B~qWFdwM$iVePn@HdT^A$Z5sLNeJ4wWKH;8Pk2_g{levkiQuYF<0@k}GA z(Y(*xdr4c6q3M@fi@)1@t_B}9vGAfb-mG80r1>9?nQ-4g36O41drvL1Pg?&!eN=q& zbi4lSw}K)F`nll8atIGR*C5o|XUdpf!Pg{(`1r)1%yhoPqpLy%k-q29rmvkt>RZQW zQ0wGflb^1z0?v?Km=8_}nYUy(-JCwUKkpYnX6GkRD2y{NCE4tNWxcf&521oOqHF(^#Ku%P-40e_{`wD^3Z?;cAz3sj?^ zete1Rj&RCE)h!Aj&9Od0Sw?oB4<SSKcsGsh3{%;ykG zmAW&{g+KR+w`y@drpTa#UE745rW5O?7q-4H4)0GFkq=)6E@L4hyDot$PST#eG^pDu zgH+1f&5F~EWjW?*+YbpDshpCn#vJ z8}d6&0%tVp&CU#-)wP+#uVSj8g*JNx6dLf%AL}Ty$_%yo_QlL;?7sFbJmRSf%5e0+!=k*7iJX(e@0Z8wnxvT_`-;r7*}cYoWkq~(aUyI z0jyyx*$Q zVx!99)t|Fk|5T-3oG?nd!g%vAQeaJy&lBBXS{|RXrEJ}Txo+!T!uoiWC;7pH`*6i- zdl83?vn5UOdMhu>VifH4=MguzM)GqQ-ON5Vo8QiEE#c~U6dg4Dp${?THXx5?S5jvIQga=C!pl`qQ<)70=8g&Zo0edr0OyaEuB{7?E5q&TdQJtu!qDNa+B}w z+}aBbF28r_!4Zk*(dsDqOmCt87Dn3edjljHmpZ3uZOT!mv5tx9HHo37Q!3f_Zz#VX&Dx_+e$-?0Mn zJbB0GPl#l*{DKTGhdH?RD4zF>;fAO=$Sa9RD)ptw>{N8c1S1T!W%V@47>Ns4i!!2d zx2=U)11Hytyppm5u?A)(!s!{Leu8=B*bwxuaXPh{##{gbT@_cuV;?wIcWr=;^An+3 zb#7n|sRC}SQ1AlqLKf+ZpS%#qHo!AwCTi7WKP5i4&k@Jf?1Ju0!pA$fF16B~z0_AJ z$39*0)P^wj9R)Tr_hMta+w1l!@58(2KxXLYG~eMxykTcaD13y#C;qd~x=`cU&o0)HsLqr@LE zHAus^6KZ8kGcrL0xuA4){CE4+7l{cZ`*h3~!2DDD{f|3*HcpEAHm3iY`NEYplyFoq zdDx+?#M${3v*!F+DD;Bzi|17Xf)tl6SZF1wn9Fyh*@vwcTWpfnWb9vYUSZvo@Sl5x z=Gi!03cMd86(`%5$oR1a)0f&^J72sH(k=$yPA>Q|!J7Ol;e^5WU98!o)+?OS6v?Y_ zJLk+=0miK}H&STqi*>6BEJ!Fx9(p`=b#mtA=U+4Cp-Mip%`nk1anmSM`K?xLtYL#f z_~*c2s|29e1AE3P7>o4b_~o*TJX2Nd7A})0Efue6}DlFl8?d+ z>ao>rEz|ogMnl7Z5uy{q4pRi$VItXSd0eAOv!$4I$=`JcGBleqU>M*9U-8~FwIA9V z61$L1klk=DFq=rCJRpYqS}9;K5orsF+0U6(R;(pw2EAUs7E=$u_xrifURpJhGAMAA z6`JZWb~#OaXa9M&D68aQ?==+GA*+XlUwrIM!=T}YCN%Ggr6yChgDquyb}F8@6V0Rf zi+G6IeibPwZL)MoPKBhNF5UkPA1YI6l^tfYAo$@5fb8mTpZm_w2C8#KFHKWoL27Xp z@h6Jiiid@s+e4rqDs1jFVU+RKtwDq5sV7d(?C4nX?hu}9DY)H8?GfQBRnc!SHBB)W zDon1_{-CoaMSR9G&eyo&SR!8p!_bq#AQCC`J!1H$dDu2wXYaBx>g=oNW5yo0f6%Zl zbOQ|v(c4fj#h;~ZkecMvNlbc^3?j8LUXk~2F&5*LQa-=Zaxn=)F-<6##F8A7dT0oL zis3n?Fm8b5@4?eLCEPcuvV^*y6KPIj5`8eRSnxw-6sHb8A;x=4kdt~5DS7=~l@l*v z{eT4;yiC6tnxnHGDNlCFaRGjl@szfUq-e2m`*+I4I%Iyp$9g8wStNMswABYHO;$M_ ze96b)S;235Y?@4*5+Eh>yh1wg%5=m_M06}+`q}MCc!0)5-CQsttj})vaPRC3S**QK zWimjMdAV6<373uQALx-usk}^@yhu%|IU2gTExo>+2IBCW9~=CK+Y;m zH%3niA_lXL)%QsBH~o+*?&H?r6kXeozqfU1GF-@FK0^+F{bR`C|3K(s`M02}^_ek> z`d)z1KuaAkB6IayGdr#aX1g9j2wNsanWg)Z*LtwVXidhYFsmc=F{k5k+xJocg+3hd zuk6FCF()PL7P7jfHRgkB?*lg9_xERbJzPY%K1>*~2I>G`lJA4Z;w#W)1qYHgtv!fk z7C*;qF~u3A@h^oc-pbBI3B1?ioVlamj)cy4n=fwE;F??R9hz1eGFT9Vl@hQ-sTwRt zX@SK(Rqp1IgbH_>MDRcb6p1h+q(Lkc$N|i4h`p$CB{J@G4EQa+9e6PcqRQcPp7WLC z?^Gxb8wi*oceCiC!~H9QC1Vy+z0Jl9;TmAfaLj{jKYzFmnOT>H$fWgi0{eq{a=u{2 zG^`-gW2uK1fr+%M7l}BLQego{Lu?iEo%{PBwDYk<8O2;VB^;0C6Sp&Fb95o@Ewf*= zl-wXtq$p+>igBH{8us3O2SnTp^BSqWSFD+((IJ`7%ttB9nEE7duvWWT0Ia~JY`~AZ z`hh+s8zyBzvUVMnNd@=@p2p8hRRV)iOLts8Nd`(g`Tz z;(-%&{Rrok#YhZ4n0q6jl!yeN9?g=hiG;oL7c{-5>+z}715?)849~cxa4QfH2zK}DR|+7!26bfm1oaDU{>9O{6K<@9X;vu z8`xin<5H)NxBOEdbNT%2{r85*|D=!o@87$>(FW!kc_Z}EFC@c0oNZR{X}9unc`D@c zMT!JrDoyJ^hMu9QY-W_|j$6Ll{)C3fjw)4pRlE86W!}5&&VtS?m&{m+-$|-93u9i6 z6TF@m7pXVtuXmG`ogf^+V%UP9F9~HKwk=Wx)(0gW#-7bJN>}iu1}(ZaJw;= zU8mp{SCE^Qbr^G?Vjs8$-45Y@DN?%f%H5X3c9{>$xkmww=CpK)z})U>s3obo%i4 zOzgazWBaHg7rkoX*QJZA6&=$4+G;{|Z;V93;VM4(X(}`j0yxysXHLqF7;E5Ki_153 z!DyG#NvGNrt5zFzQ`Uk*!gfFCRi)SLJ(UjRc*qfi8OCs@ciE@S*=@&P#JiS&A8`cC z#?`f14zL!iBu=i+TsH8#qAU#^=bUg=0A0Zw*iAz_ELBYCm1#W(oKQFd3E}-JDdv&5 z*1=+D@rEjyedP3T>S1sc{GikN-H$wkiF7~z%>W}6682&IP$(DO7TCgsx;6{-Ymk^0 zt-CdaU1{F{2}I-MxvI+o7%W%CZ`P0(S?idU=1OBoQ#&1#%V{8-1um2NOPvU=gwyaL zFhbU;`u;twpOzR-cNWyzc%Hyy_#4M+WAMOGggs&Rm7b^r&n~()gIi}CB~V5WnL&Pm z-w$_utOENzEdnb^aiRoVi-W%U_1tyO&1gCS-dx2r|U~4h2XP$f=Y%sU?fvHI`Am`o%Q=07SAY0hI_;+6S4+xNB27h2lE}MX(7k+ zIrh4ouDS?sYshHnqaFNCr)kYk-@u9YF=pvo)6DE!@Uv@9LNQ4h)0bpy^(ZKw^nN-# z^j3QiPdf-t#t7ZGpeR|-;6g0vlAhs1!vyi7L$chekzCm5#6wYaKPZ%q*tqb4cBI`~ zG-IQY-nUM@ZK%q@QI4*rzNS77Y~A9{={9r&9b#%{E5|&2-f}9Zuz+!eI}Rld0i43P zEhm{`eK*X;`D(tb4pXZG^aan*k|%Nw+(+t}Oljuy=$yz-kw7@fpT3c1Mx?8A;l+KE z<+Bp(PBTrpFw9v~ME#d^yzt;;>ekR|TKO4^j$W#h&z$G>C$B{=qDmB6DFnv}J}etm;YtZ@^0uqPkoyjf04wgT%rTKAWA6nzjc# znjQ4w$Bw1$Q;O|Y=`G~XS7s>nL1Vzv50Vvv<}R|RIV(V3uWl45(|a1Dr$O%69M@=| z1yefl_dC#Qn&}xqt&eEFF3|@yHl!fYuYs5RYl)ZgJe`jie>G56%L|OtPs(QglQaJB z8|Z(UBm^8B^xZ!h8xqEUp9ct6F<1IbEB6+P2x#ID(z>{^6T^48~HE7HdXmv zq?K8j#1+p~24wCE8;;;IYpAfWp2O5}~!<8O*G%gZprADiGmxvg874BGMvkw7FbGu7!JbjY7& zt`Y(`LUk!jf@UJMUt0161fVL zuaRK^cT~^O6vo1ydSxwP6qz%S2?Js0O~QOZ`Vc~Mn@X!xHaiHE7l)ZmaZzkP-+q@G zZ=e`t(-zD%vZ~4wkWg4XP0aH2d($e4mtgi|D(rITvkuPaiZ2nyN%AOP6}7z+R+rgP@U`h6V~aSEo$)Qhi;$1 zUf+je0_QrDsL#WvneULu+Zl~b;76y&SK(aQ%i+;(+ysnI`cn(@1?NGT0!qwdvH8r+ zB6@KlLO-dF8p^Ee6YB3ISx#G2Dkr($vdH`N^WAaBEs%1^aWx3Oqc?(hLzuA;NmEbE zT4fMf9IoMAa0`?8gcUp@)>VAp*(O}_3OszIvagt82Ib>{7^TYY6hK+eiKU@hf&$bu zk-hz~?-j}{5Z|&4^%eRWJ_MaZ9)z#I$qf1qwgK|wh0IOyr#ybE-rdc04|_pS^q34} zAGVbqx`BeU+ReXfMGE})ITT_D(03h3dp#JU%G8QFz zf?%jx65Spokec%iM=VLRBJa*B#$^YU2Y$vr)rL0q{iTd)dFzL@+wT#d{b`qJtw&H2 z{gyaS-5+FrBFt|jZAr$TNk9zL<)0VRq?V}g(Jx^}ySZxid}%(O|DJe^*TU&lK1ct+ zPebSb{|EcmTKwPQ&gT{Ae~tdi)^fA*s6OYahq@tQoInbqoFUyfq7Zt9K&X@`>Bld0 z;;)JgI1~{sN9SLBLtY_y&4`dlqAxx@Zp~+GjbRM6bv)eklkO9aHZL!elRv){R2B6M zMlG__cBgymQXQ%2Cs28GH~8yot`;9!A{Mxu%a}^<>ivv6lGfyTOWk@)LOB-X(<2rC(WYW;63jG1j_slAcWO_*+ z^F)AYV|LhGk7Q#Y-cJjRmQBL8F-#(C>+kPr(4gX4&4D0|k)b*m3rT`E1ka^9XVSI| zH){%fAt_l}G-}IlsTP&E06?OF0N1}Ws#l!bIGBzv(nP;br|B?Ay7w~feWWOTTQLd9 zJ1UZ%)d+3`^``vOefuF=d?CNaMm74%-*jyw{vM0nGu3n069*Ja(mT{Z6WzM;%+)Tm zYKEw8fs`@LL~2Er=t($n&)y;}kYGpVwT&y$hUgDmp{Q6Ac{vjRBnFsk5sqbLP9*fY zp7E3<<)S=Qj(#mwq)oIIyWE!4kQGFe$=A@p)~qj;1#~i#{>l38AqdJaX1ZXyjAgo_ z^SNSHp_@bkcy)4~=An9!c8TJ}<@G-#S{sTO*;%@L5G3UO&0E7Ghx+G8gK$)A5->+; zP<+dXb%X+!v4zmfIMAUq6lsqk3!)yy%Ss5Yk+cpD4}Cq@?m!X^sy%9%Y7@+3)#pJu zuq${(2kqtXAqC2pG#V5VRvck;s`)B=`MSbs!kam?%S)=Rgb`E?>XpRJM}``Tj`o?YPUauyh?8UFs-OX{*Ztnc69-XQ3|J1;-c z1Lr@&=>Lf^`rkPEQz`w#(LA*)7j&qh$`H!(eLfUu{gwO-{(6Fnx7q%f8wD%SaCEIr zt+dB{SA3UQ!2_Fqd|iB-e$U&X^zV>6>1XONw*c#gX2-BvFedpqD{=AL7El^mB*5}fk zOj&kCF6v6eMj3?F1UguBOmG;HSGkQasLB!F3U=UadIHn{Km8jC_AoB8b z;N>6p-fwVEDW;C5elLpUteCKkMqTp7>B}hQ%{!}adL`JLLj_t{mpiOgb4`n z7&^nS^is>Elo)V3e5$KeKjs`$37^fV?g)lBZse$B(P^|pQ`#NG;MUcmD6+~fG8zDV z5*04&DA~k!Gbo?)%<* zdvre3!?RjwDW6-9DxAya?f~@oLPaQPIiJ5aihv0EP4BnpXkN0ZkUQ&7)czwGA`!Qg zoUaUrUyVlMBX1v|7d$nwhA3%982Z9(F>{7;)U!>aBJEmqN-%?uVHFw^TUN}Tz?kB} z(wHyN?Hzy855k`+v7tNTE4PGQU^4g+n7)Q#!lbXI2#6%wB`1-!oWdmM9m4dJsYeL5 zOjU$gMu%|<5*LR&eED4ZYAHabGJHL@4BF?%A0@UXDUDC$8u8S6Jy%FOqnfbjmzIgN zagm;oamo3U$?ITHB&yO_SFiDGLwSpEK2u)YBCF={{&$T>4N_$We%AQnKYF5R{(~Xl zGn(Db*ulx%_+RPl>1vj0IDgRA)UX)|!r>uPe+#WG+FS8-k<3M6Rt0wtWJ5}Wk%1J- zKr#kY2MCKIBb*aUoZQCWuH^;r&eFg4d@V!_I#D6lDWyI-9()h*If@*jT6>sah?&}C zfnaHI#6L)DpX48`8q12x1+BDKjYT0b+=E=fiYF>I&l{_is+HCdSmdWQJNqzl1Y16$EHsB%k_Wxo16?!qaH%($*z^Gcx3a z3(jjy0O@xSD6wp2uRq{GmZt?6*wS7elTL}Cy=WiS`H|TntG?dep@%+m6Z4r$!aBu7 z<%!ppk`zJs8w`@yFVNh1f+~tc(>j=ZgaUWSm?KroOh=M9n}ds@A1R!9sRs(Y4O=5S{rh)(F6(MDSi8i=;Ax z93?wbhp_A#V=n!Qmqx=RsF6=Ob`nO9iGq=s2P_dpf})L%PSMTZr|7|CvBPV1{y|z* zSmKq_6eK`7_jy5hZpK-EooxLJ6_`}!JAzLb6H2VYGCuRA`;T#DT678V3xr~rEEXsO z>xt@v)3W63_LGGgqvD*T1dK))Dy+jo_9h;dfl(5gRyhMEAf@(vH$ru(!El%3BdB@7 zgMD#358CwsYWzoASr!JBtb@Ryv`FoDdJY#Cx)6l15n;xC?>$Y&#CGxhy!C^nM6fwb zab>q|?YQwmor3t?CO_1|*0veFFs!REymsgMbmd$$0=t12*~6LK6PAzO=zp{g8=`wwlKvJS1lyt6iyXp|tr?j#AbyenZq<6h6T}Pae@u za$zQua!ugMHrerirez3pyoMcw$Sz~o8RwSJJC7MU(8Hz+T%!m;h1ak((4p_#o6HccjsU70E?b*z@nt>X$^xf*EW?*){8f#i7AFyLG36vz z5VOZ?Z$U6DAJ;NlLgipr`vm~gE8@>@mijpMpgN24XxFPH72zJs zRaZ?t=bOysl#Aytj9b4$X>E;qaI}RDWJ{RLkd+2JBSh<4QfOzqPw+3 zwhI1eMm*rCylMl0L=eIB>H4!_wGUpTg7ft#4QWN`R% zroCYGLM<-yay66Ww^AFo1dME{Jf7;-oqP7sbQ2M|EVML*LxmeiD|2kxRWT<)@i$)9 zahMTiI#hvm)T`Nf`HXn^j-sqIyX>&K4>VkAhUMVmR2a*qzzE9qBph*9%VE|0AbORY zS5FCmSX|JgJH-p-ubaGA&}iM=HKYNz^qzbsPU)ARLj4_VL!Y?ei=7Un4+UuIQ|t>D zPvYPwxH{y0N{kya1y2;N9*bjQOfD`q3AKLNwvns~Pxp5mzbJRSRnduy>9&x9xwj#r z;ikYbWec#ShaOX#T+;ak5eLy&++wz~06K}ja`_@!=Z~{--^3t}zGaAv`yfp6BIt;U zs&n$<4`{{fG9tnwj|U0NzEC^N6@~55Tz+IcQ}(E-Ufq`7R2Fo_Um?i3WcLmq$ToJB zD+0QTLv)TLsr)+Ekz;pU2~z#X_rV9sU&hbL_wNk5DtA(;gUl?qSUcTxNHj7g;t9>K zqU#>TkAru)(ZqL`T{)L4bH3qcYaGOC4m}w2W&Bb3L0w06Mi%#Ytb|WQ7T*Y9U$^`~ z0*YNdoEL%gzHZ@u@+_peM4gFA(>Ns7%`{W~_+~w@$`L->O6L{?TMFkDZ*wQ~*n;86 zQ24pJ!&bQ;rj{#*zNAs_Xl0P;z8Ia086AH>CqGorJYG8gqG!%<=L3yCkzOy-{|VX? z`d@Lv9REUlila8O{HQ!Af5izyQ_@CWlUb+BLmihWmP!_ZQpQk*Dz8=PZ->nk7c}f9 z*9F-cfFMH!i}3x5Ed^zBIdqAs)|7EJgfA^6+p zakLU{HpL^GG&10*uu)4ZPe8ddzA-T1^J<2U_QMf>YSgsOM{v+lYFlR8 zCk~uUBMxE9a2pC5dw6LRbV!=vlC}Ue54OlXyhSeo9g;;_6K7K_m+%D1#-us{yz+Cw^en|f=gxTtdnD1KbqdX3yvf!bOx+3 zoC6USDjw`Msu8RFr*J2PqbvTdH&g8uI@Hf;@%fWs`0v?;{|O>u{&&Is3lZro`OsKX zq9V1i8Rt-mRCKe*DXx#;Mr-kP1QTK zq1mX!naBRPp}I4n>m%`ei&kWoe`_-D6?b%>n9F6d@tyPPK#7RAti zWDrowL>J-?u*Zd8s5AP!iYQ^tt}dvn0)w5$olM8n#r#}iGXniQTj&btXC83=YHynt zA&$tO<<|0#<;MIUz=@K%jj5HfldaAFm(hy)4V?5m@%E=|2(1v!@zWh?fwhWEXKIr^-o@>NjZ&Z@uMRNtc$*UndnmX}ePjC_A zz>HcL6mvfM^=xd>!7VF5NOMcHy zw%|TD+j>U#E9ZWsby?=l1W6OK&^hXeMFm{z#(xp6nlqo@wa*&0`bPl$pA?e+?Gw!U zZ?A=pE%GNv1Qv&;4QmjJuU;Mkg({_0uDTM%k_8RGuE?0v`t-au8SiIQ+B35T*& zE?F^wM72VT2hyv7ivlI~t&bBIn+)r>h6Yk;^jPSGt{-=07;qR1nYGnC$+`EN!x_2I zdIUkV*IAuTWek6+lHcr-MMXgiJAA25*&;5Hb~sV66gC}G-`58x?Ey5%@G$4cfd-?Z zFg=3E9*Zj>NL5l=HH)=j)j-(6qRHbXKq^a8!pMAn3N}o*!VcNSP6Bx#qacS_Ds4=D zPZYK8gZw;UAx^l?`mK1VzU&}`H2nPmMp*aQNm4f}@UURbKIOGIY7mJV@2X9hQJ76+ zg{dtjK(4I7ytT)I?_fP*ZKi50igOL*#4QM|#TK~I3RJr8NRLX? zh?y!yS4ouVb#4yTs6oq9`_+$f&7?@;i#;LFD>w}UdJB>B)NFhEfcuQ034s*LSuYeA z!5*ZPr$keG5H0VXQu(dPIK;_C}V5WFX`r(YEj3R~RL%7txR?Ts( ztUL{hKJN(qpnT7Zw;7#cQ0e*n3h`GHe)JU^4EQYYtA8x;|HKeU8|z!TD>xfF|JyjI zyrTF?ft~`y31|oi6oLfXex+uKf>Z{(2~2O67)STaG)k!3lUfyxi}qj7e_VojO;N>D z6<>qBQjBISk%Gge1ddIl&CaeJoGyJzfIH;BDAg6}przaFwKwk97xx?r_PO^g3Y6`= zkD40P#?>3N*W46qEnQH*0eUNUEsGVBwfajghGQyYL8o(Q%DK)%_*a)fG$L9p=(S|$ zCt;juxu`2{E%CO33$nDcqtZ#4TF5r&xGsWF+yN13J6!K&{C#7E36DvoG_$gqU3z}F zld(7<#6aC!oWp@%{H@8FAp)CGT!_$NNl%b#&63SliC%@jMp$CSa? z@CSk=SY*Kase2FL@)#-YvaYuSWOA~n+%#IKlL!0N;>HRx9Cf92C3w`-3gE{!iPqHa zSnTnxsl1lD(6sYQow@3b;sbD((QS>C7RvzND^REt6Ay6Z^iyFRfBR=7cPh^169O_s zGB<{Vnmc$TP8!-r9L7**C66lrDNyBIr zZ?xQ&XE)W5xc&AWYcB7IbytIGV@k@IT+I${O`=#Q!0!6M!onakD><&}fOXSUj;7#l zdbm2`3D$zxUjN8V2G^@EVZ>nq7pRn-0_SMPQBs%1!oVPe-AIe-2UMl~?IW4*Qsf=_ zEbRfiwalp;SMWRBC18C3S0WD4cZKUP^E)HE)(Skt`T27e>Ep0Dp3eYl0lNMqc|TQG zCsFQ}-lCR` zyOvvJ9`eo|&0Q46Xkba*8SMo~0p;3Pnx&MqU#C%yq={eSy_1?oZFs<|Cstgu_i zR@vOFg8HF#+OV^qcEx-ADFX7f(t^}FRE?-;v?-?hj_2Zs-NwfrQo9) zF4>MSwRAM)VN*vbi z77{!-L>c;^FdCOn%B-f$d@Ogf?5(aSXYSZ9%v)Z7GUp(tH*rGwhDb6SoRcy$;>r>| zLzLI~?mizLc^h4)8vo7w4q8^Hd6t+-r;;!K4rDS{6iYYc8r!(Qu#KDiY5W>1FaX*s zSOS$X;3BG*s^AJtx@^{F2UR;_m!4viec)AAF8G>QYV=3zeDn;)>Q>n%*N6LL6_JM3 z77b~@W8xLszI%wq@xi0TF7|-?GO`iNC98A#4?p!Rnb4B-Lf=5byNGO(3oZYKp*4g7 zBF2$b{NMMGh6adWf`LQ>p1Q<^CD%3`sX?$_oxypbI-@gx5oSs@>#wUzRp7c2G5!WumV~T#kfD&vWuf4>O4too%qi4B95*O&nI&j^ zq243Aoa_@|XSqTV3|}x%PDLZ;2S9_FZ#Mdh0?s%c^cC%RfOb$;YX?kYF&b`(3wu`& z9EMtkW&pVYzu>f$Ob)+(=0!W-B2dW?l}fhx@l=Ml>&~#SsQp2Ex>Q2tTXDZI^FoZe zrS#2cT2-^$=%rW4*xbo=V`|2bO|y?KR8B2=HH>~43Y8SRlfpEzg_=H(Cdrcx3amVB zZlKIujwT`1(G))MJ*Q2%0k|1Fs=6Y{LH>xGnG8`U|}$ntTPRIZ|JPtV5N;9MMqg(>$e5v%CLP+ zV1fiy8HKxlQzp&ul^E!oVZigIIeU^MNsw?RvUE;EmGKePSxO60pqn1wAT^|qJw7ws zvk*#WU*)5_jC>-9m{27ZZxAe;W`NpN3SeV*4a30++5@`sMu|Q7M>=+6zp8S7SvjwKwwO|C(?q&0 z{D$cmEfT|h^o6Y>#8q0mxAh0VA5{~t^|N3A&u3~_FG7+4oVyNhE{56r<6_bt$2gAr z+(cvig?;acpfj~{cpllT;R2i1hHwq_pHZ%W+IDU>v=dfMg9^STrE|8UhXuQ09OJ67 zr4^%l8`FW9F_E9GG=p8`ZCZi8G}uit3-0u8m&a<0;%7Zj+27mFuVpa+MOb@iEa1^` zji|hT4i5snD&T+6muQfwaYSHbBRi{)u#Y~@jc#1mR;iBXyd#IzV8sRS^$6kHF@>qT zb_xcvqgRBy60+3E z%$!f0JON-F;_s#5f%tcI_|8cRisSuIYx&y7ka68=kQd6k4ggKBQR+Tl zbzT838f>qiK)URP9oeTo%b@jvXfQ{PXEn7z?!DkFnx(-EyA3!zR5UK^mRcewmN?vL z#K}NGcwEUK+7-00 z9Zc)>=Z~{^3g~qu7_SSSF1ZbqAH%?54_86kn)o2DeYOnFu4T?Yuxv~Chr^#<^Zl$s zyMaL7(rkJ=lAb@F+tLrL{&cz8I*DG`CRb}GKCEjUUI}&w?&3URNw9#C`IqK-&mIv> z1@-1<{yp(G=DDG(o3w(hndgjxJJ*i*wdej{XSI*K@EqUIV--H&Qn+o1UHCC!due7l zfB3@E1Nq5IfCJR7AM?>Wx?i8TKOkzFhORYva$82Jj&*V>)k4D@h#YPPUJFQ9%u$_?0q za4I%pxTk#lf3Q3~GD4bQh2c>*1uX!Tj9mwrB=gRQBA9eKUt3!N1r0bncsP2uj6;ry4Jg8K?ilrMWf$`Ib#2ALMB(SC0?R)TkwHh$WG-sn123^}HArIVl6qfaM}h`|nkbID3f zkr@}KSGYLq{mnFJnkh?>!g1qQ3VjDE#{J zl*w|is3EoWD}vnv`>Xws7sred6aNQ?ao|P69u%n$Sd{TCW9&=Q@N-7dvsd;dMD7WP z!j9+Ib5OTIWWs{Iq?U{CFCFbcjdwb4CRPhFELG?e(&sWYqZ@3j6ZnDhMh=tqm7cPy z?y|`5BT1`0W!BB2<{=3_>U`1F_B;}gsle@W_!6{LHVMZjKhFY)9@K#Y_P<`3hEClN zh)-Bi@Q-Uv|0(BP&|KL3f5j*$Fa4L|YYOPgGZ#{$@RUkO;9ruUkdn%-`;|os<>uh0 z0yj{MOdf=|Mep_nS{aRm_gAD~8W#6N$ed(75A#EY=R~vX^})sD#uxNU24GazQDnkS zN_}L3H3oKt@gLauk{#>>!-eC3)`gn8p~YZA8iv;iGi<87%dVo%z0XJ_n+2L)I_8BE zu1U2-h&~~Jkd#W{Id+5=+bIwW@IVf3kT7dhM#)gO4kT7q*xUrxpJCeM4$NMi&(4@M zH#Mtj8!6WraVE4H{aVIkH`R~!ww>>IaUJ5wJyd&w8lDOo=ly_Hsknn;;T)348&3tJ${Dpd#yOB zX~8Gs`g2j7@B?9LP>HA~j*`R@)(B8pS$Tli#6zv{l}>P`HQq9rr)wu>^$oKG`}H7g z_romFSEm!#Ke4@421T@E>MD`n+HXY-!2?T7e2UoiR^getCw1o(gjG!(pK~NB4@`2T zx)kRdl6zbE=Z-$U$IpR_XBp!@R0*;;EJZ=OX!X%9<%e73sxqq4a2mJpi60onb+ykd zhx-idfp~_Vc>iI?6xH6WpLP=xN)iNDs4%c_{z80BXJ1}=M|ck9KKUqZZyKxd`$E|U zqqq6zlw{C*~mdMyw9E(zUCg?$^#9=8ip$7_^A} z4&wGeL(uleoxV(h)?tKKBYYpGF1}zT-gl)En5*=t#V4LLge|Ercq-)KF|`u z-Y29SRZ-5EDv?Zek0N*Js#awNqwIUKBxbJk#}6WVM|f12yD@Ii?KqPTQjXMK+>~ff zNWsO0Z?`Ctb>ep=O*SH$*6s*&gTq_gUkmvp|R z3Pr!~5llCg7>Ze-DRKK5*oyQiJLP__(h#Xz3#*fxTh2)2Yop*e>7GFF8z^+ckXSHs)43eCzm@ z;fd9B&kN3n)upAkr;`)cFOgMc#NAQcNC}f`U^XcMT^I#wW{U~7P@%25`lM{+7)~Tu z6{pxQqTMWICi=M@qc|NAsJ(8m1J4DP+^csG515Li`p}(YS$if8m@)qkYwy4$YLqRB zp0cY>*|u%lwochNW!tuG+qP}nwmH>(``&r+B3^gAnE44`e0#6GR%WhD$|sg-K0zH6 zjydR08toN znZo9!(V7q3$N7;QL{w_|WKlc#x`_O$G!lOB^}L){*eZp0$nimF>;0%Gh@f02*FPxE zw$b>L&sg6z6pOGKxjDpn(h${0pbJ&4upBbvUdHPrtQDp@#_b`+UYr2Ra%VHwOHECi zzNDMizhLYTe}b*0vJ1MJI(lp^myg#m9rB=8YZs$ouEYrax!%y+o?sZ|hKr=h)7Dm{ z7GXC)brA0Y&w1I2?HT-4R4Rka-22SC4!)u~D-A;R&h)_|@!PFqYxOa*hPkDD#7?hr ztEIxMIrbkGB$o&#BaX5@=ozv{#qcBzf{b+$#qItOP-24aGQ61;MZB|l3DDzF5 zDIXCv$TFEj5*OB$LF%zRh=9+v1>xVp4WHN@wo#Y>=hMGM)}LIQV7;YR%?{JyDZi;UGax}eff+0nm62vo-x&SrcCeXJXBz1T+O zm$H%crKAvI+lrmzmr9W})xel_yp+VCfxj{ry$N@ z3GrKeiqpbJh+}Hyuf1Mca|XlaI3EcG;sls&v>g6~$!x@Ss{Ha>^R%X6mDO^J$whnMp}SeNLP7v^2q{h?7ubKKtr~9YdZ$kLM%$QaB4@h0ecYbPB<7*;< zo|OqXH3cFXs)8teqA>*IYmDqZ(>JH`@EBqZ&h*ySA6RDw={6hY3ArZm)(e9?ov+PD zudtsQ(L_@-yzEJ?wKb9xQKvHqbz+zh(UqoQuoUc>7`2&50#Hkku4a_aqi;Hkykzvm z-zy2&UM_@sqj5PRb7~x=3`jeI(60P4OT4r7L^?@%m-uGYpOG|jT9?6t4De8&!EBam zU?DzFq7VvfyI)G=&gx?gBD#8F{%+V8psU1fW_Sm^AiO6jJ~?7!dPQquz^0WqDv1A@ zHhEzx*Nb^jvtzF@PIJ$k>L@ozCqmY3`B7wT?lR}kA0d8=lfTNk%1w%Ct2GELLs!UV zRES;*y{H;DRA6M{NNTImORk{QTCR`q7lEa8TUUOvi{gO-9180vg+@J3J$J%eWDuR4 z;5e?r1oGH$?=OUda&80UsIgT&#gt@RrUn&BeRs|t!4dhM5jCd)$ygJWiw#6Fa))%Q zk^y!39^}?;%W+(JsoF;wdmM>lW>?)Rc{Z^~oX~LLPiOPgp?+D0v$l2p?mfZi_@(RP z!qSk&LZ&5qBBCUlj!vm&oDV6@o;`6icd9frV_-5DN6WFgb?7m^6M%C_M%yd7T5Lb$ zLcqV|S;!7@Si17Z80%`co!dAr&L4wmyc&J<#GQg6#$JTax7TF9_Kdt%V@)PCoNqlU z6#Syn3D!n7EMVQ55E&n4w9xMGsFI(R=eNy+Q`;^4a;^*p24syUhXoHg0!dRxv6E>HjvCLn)}^ucZj z{E_EQ>gL!+rmfksZpuYsl_5Za`F{UNau_>yj3jS?J-0>IeMb#<5d-1_5avHY7I_NcBtxmfbN6#iJH;9EEW6IehWB5ZG zi>)p&rl;CQ=9#N+!K1p{8E8J8tvxUV2(@M0{%9(G+Z{(&ukE>OvX2K4Nc3f6mlF=WS!Uiec1Awtee<-GOnAY zWh7gm4*3t=g1=9cYk9v3b>|o?+$MkIdDeYardL3O39KY5o(kWcI3zR&~Q0P z#12H}U&oCIXFu6H=4V2x$-jGRv_=k5NFesA!1n7zRd{;wE#?HghD@uOUS|QULoAN( zkPENw?rzO7cDg`j>Giy0CP!?TEc~Ikq&oPF=`zM*TAEs)bTI}$2Jn;h4dnynvriiJ zo%(|jOllDe2k2(GsNa!mk6NtfskIH=ip3=10oP6T_No)gxh5a=MzvmZ`kV2nuQ2lT zDvZKhE)*^|D=FtKW_m#ri0~!%tex8ryFeZu-OvmQ!0M_1>L!AB*%g~%nj{Z81F;Jc zmrU7K!uMuT#;00e>Yg;Tcdl6#RCEViMqa6(tqM%Z22WZzg`!?G%Hg;0UR`AAi@IitoUDOMJAXpotR60o*zUEFfo_X03MG(jOh#oKT3sV5Df#}gd8Ix*$3cv zKQ(4Kuq3LN53Z4G5kEB~Rmz~!^QHYX`}5XSc6ZnJFFM~qU;@BX?jN82=3>isIXJ3y z+LS6pv2pn<9WwFyB8Gj40bnWZCfknHfg*U$ki*P$pyhFXH>iRZHdZd%a51Lht%WDn)H=t zX;g}JYFDy;wKZtIz2TmQL+VoYA{|eCfqao7&1v%Za!N znLP$@ZuN`a^E=QC9DgR@w;Bws*ceLOA6Oh{ERA0i*Jx?ZOOZ@c6ATH1prHxJ?L5wb z81q+u{8n5y#C3&o_OVcaoax7$ej-U7E(}?msf;B}@^6f-6jS->3(y$pa0oC%7t+L~ z_PhX}fkA05QhmWv_Nbh=9$75?8zh;HtRbLHrpq!T17OVL+Ux_#iyi_)4OM3NaW?q*ybd9P2PO)OUFt(KcJB88C`HXd*M zlGt)9x+X*h_0lDp9y||8d&=kS#!C3KG=+JKF%SF0_b~QMcW8RGfg?+mULbvx++RQ) zpc71q2?iJ42SPwO?g@iU$DIe^W@E20FTy;9mrWwC4tY!KUH-BklxrQP4q};WFHd(O zdLBfbEW&Io$Z*((SLsh+^jKvTGHZ&Idl3-~6x@rVO?dMUlMdvAX*EQ82+H_;`}M$+ z;5=jhMwusBYdk@c<|b6Fc8|*g;KmOs%x6& zryPQ48x%DY%{UuBkEFasyoHPN8>c%V0O%b8^z5(Me`2^Zj@h02v%kOYkoa)tK+S>M zP%=79+M%3imKm?vTlHm&VxFl;|F#ci-S%y$^^v=QGWi~@FKJ5-K0p_SXIU6=og&UK z1g^5bA)W*DH>gz|B5%Y4ir{;$Pq_&D7M&NSWF%%^wH8!7SO}YpqWrc6bxxUV-`$4)i^!9Wa*NKCKM61^H9!sg0uwVzF+ zyngg$AfrZtlU-og#X-DWp`1YpQzaGheKyAOV@q*Cd=ifxk@V8(t!HZvB7YN62OX-; zjG$k9Dqzec1*4I@+5|KpS9#hO6nm;yR6wS$#cl+Jg=(m%*VcQgI7ivg5Q2~ER|q6`9WkL&`_9!}Wm1YonT1`g2Vi6B8(jdlrd%b#v&W)9TC`wm`>AImyO# zz?p7~dcd}bsB}Wq3}cqjsAo4c2qZN65jSHhzJkhOD#5$^*!zsCYCATQZ1X}F>5ePq zQ^x^``z(aCrGM9+3>j~28mAoBl<&Prvm38Ri;AQ&lH>yW2kfgnlO_e#!dS*$i0IF)f)oc10CYK0zE#l;;jOw@68jRc>=>Ua{Lg~=o$w94mo-+`TLFF*iFFE8b;VH3d<|vT=2>Iz$3CPI4BVgNaMOXtrxo_ ztPF*yHHzg%^af0-!UDh9=}Xk~O5pZc&;sU@mZW`DreS1Vd!1vt$`*&nT6UW;IlUcW1X zF(Vzg>Lzu7h^G%`NTa2UjZH`3&+ZP&^q^9vm&cEYTroMk4GLl7+ibJnM8Dv&vGipxr*(%?J+-7rJtNE^m<=qQicl z9X(c5t`Ji-7pSG|fA0}|TGYU&h{6!(8r zeM=rNAk!|E2-0;^ZuiDhcp#G8vfL6oPX;KN%9|b_Hue= z|1ygR{8u27vu2wDUsr7<8MXOAe~mcqYEfu!iY^9o?t^c$S>{fR(bC0~z=t|d>`M>a zjVSun#2y9G{N&YEyYp1%aYpLru266vs z0b-u9fF&ZO^qQD4p-|HvV&wDverMn}z7)<7NAmy{Ab2A?$XDS22~jhnwg6JiPDWdN zKe3bfofxwLy13mZA3DzhnMOKw0*G_CT#iq#6~~!7{tsal`My4?vK0J@XSL1Y3lFmR zu0Vt&x7(0M2$j+8=E1txGKD_lzj6IBJE8b`hxoMtjqUy2-tU4pZhHqCz`0*K{#=JT z&)GpHc7}boVe9qO*1PWRy3YHln~|W|0X1L47%slliD)tRh{4 z#ofGHYndnIo1=*if(<=XPb;%MNEBF}Uw1blxOK;awoA%KH!1rNCOE@mQ&-4G-ZmT;N08^w5EdI+ z&HPbwp^1s5%kV{m2&DrhKqrL_!Ba;6~GrYTur1S&)`jz|xP5$56 z_W5sZyTYvbKZv~e&5N{4^SOl~jmkxqC22q!WTf0eaQ@twrQigDE@>764#y3c_H-5A zLE4)^RDO8Rn;-e_?bMHXV*wkT&2=j0aYn0i*Z0dCOb>U1b^@A4F~gLw8$|*nX{(Yt z8nNw^5!D>kMONVCB7OZtmVKnFj|Oiu_fdo?05gswV+5KJ*rZ>LjXg-A1}{ z%ixaXxY`jXG-dBa-4ee4rgTsqU{E-Zme!4K?peMchClL&pLsObwd@}lA-5hd3AzP$ z@qtBr*}^HPnW<>Qp_x>b^hLnSIMG+PRB@GM59H#?+zkGMELL@X{s8(1T% zcQqk@-_9lLB5MYwucjB{kM$y9tcNA9sr+Pj53QU(yr~7TIZbj3pZj-JMaC-`Nhzxf zRtPKjp=bMS3gRUDvsok2ak=5^(3s!LSh&u=W0pSyH12mg0J5GzJ~mTE+QLjyM{MFn zEN5x_7th@09;_rAC~v?s^H1;(F>co~WpCEAZBPA6QP({O6fU z_QFba7%cn!ta3l$y^f)(l5S9{9$}k4vvk*IIMRmfppEubUHMD%Em~xbDNXD!TKQ)w z28|MqaA&LYoy{gS1D`OKU|bO~P0@oVv)|50F&w;Mt)e@;^QzdcF+3E%sFEJ?8b zt3mvqp|^t}&(#g|TGf=Qc(&QJr}2mT~sLtuO5 zL#U5~ItCq#+LY8WGew*2&R0KuA?NdY_H^*CqZ>6rzuXSeju0^S4aZ3pqKz2`58ArG zVgH#5hrU}^81kUKrcR4;4*NnJ5#LLpByhr@hpNk{>tN{6NM$!ogshMx^tUn0@_6PT zrNO^9UUV7D{|sN#n#si8LxWF(FgyGH7S!{C&qQQ` zWPM%3Go2Iuluqgttp~6FvZ`y(Pmzw1Bgi%rzy7KjFqjw7?xywoho&Vn_ta+M<}?S< z+8Q2puU)XvOO-mva*H|-?z7-Io=w`Gx$)84vqUX3z=3Meaa#G)&flsdI$)GU^iU?c zh`bCdh@&4MMQnDc-i4POP4GHz6Lt5AM2*Lah3{#wE-# z$lwkSl308?L^Y0`^gNO-46MbTB8n@OBJIZ{ zJ)@sHu`@c@rJ!i#DvRg8ykf#<^;3d=#-H8)qb-U5R(k$#4B;OMnm>lC%~s9fNWaTm z033V&Bxw9*B9Hs+CvHGb@;l-SGYKL>-Ffl~$#41qPP#)F5w|CpAq(A{ydbnaev|z@ z)4t0-m9hK#;{`+)KANfk?I_wPN63N7qkC3)E*kR>8W{}`{9xoG*&eCpN9KA%j9!XI ze{@T&dByc0#a`ALN*I1ItkDGzUY!g=6N+oa7+)E4kU4Rxq+>FEJ^WQTAX*q~-N>q# z!GLd|B=l(*3)*GO^8M91H~i%dw+>x|vq1EFJ6GIWH<+9b88x#hUOPr0=ad{Qt*C9H0mE2G@(=-E{L(v-DDWKtkyf^uEKMo}a~k>l$! z+F7Uty=TOsyPn%p6TQDCiZS{I5isnJsad1Hdsc`+^XLuH=_|~Fbx%};^7s(el}3t5 z3R<3%4L0jk-mFKb*dLQQ@rLGp>x0l@1=*ny-a$W^V7)>{hrMs-7^cv4-{as~XxOFz z4(MlWCcf9>z$PYVQ z$nB(R_v31rn1Ku;85#Zf)(gz$8^pJ*-h8^^x?cK%S*(N=m-0RrsusWEy-s;c+OIQb z#gc?kDmyDUpQl>if5gb_&tu;&)7jSmXhVOQ8X&Mb%o9E5JI&Xes`fOSk|{Ziwrj?U z&JRhnmRnTlJYj5oABgwEaxLu;$Fr_6guU19UaZ6UOg=LiWWg;fX+ez1eX-3a?Mx3e zf~>SzldKeV+l!0t9n9DdQSTK2_gwvCIEkgx#1{hXd zeP0R`85Bo=Efq_e5@Ln zD(h?W>U&M17p4eAdvnAZpn*XTnk5)Og3Z-& z!&<1t)`srsHjNege(*2ISSw(?Yi&~5XL{iSXAXTf#6X}sU1?HJXp4}Le%I*6#8h&x zzsGjL8fNn7P~nhv;)vRZ06kJ)mM*mU1L`So#?W^t#lwd-Z;LQt&_`g_@2oYHG|J*K z6?~qL?Se6Fnxf0V(!EFzk!0Lq*>x5#2g9G(lX@swz*M%Yo@9S-7bebDNeGAHI6+q1 z<7CWoJxL>WJ>ll8w3^9g;%d*l2I$RT2(~^R*9L79ep4a*(h|nGy^DF*g8nXNeg)R zrG7ER?o;(f!& zFo|gd6zWa&b$!XLX7^!c=PhBXrCY6`_4Ti-$195S&$R{n=PwyS(~uY23k6lJM>kS& zO|T$uTz~TUdh>c>Q2;lW!>IzZP>Az(9R-XHL#akoKH{QSjTTA!?tA0Ii$T`Ho6K75 z?v%0rjtX927j?j*W@Z&@E$42opP2Aqp-@>!A8~Kzy%rpMBy|yAIXid&Z6A}*D zt?ri6UMG~8AS-xw@4YZ$^A1Fp1S!*`GIZ-D#-|!27Yx#KP_rR7oAOwcuID(l;Kb$t zUaf457#HnFvi|8;#?Balq0Lup)2m#qIc>rjl+QAz|7sExj5DC+$g!`CPqxQw%G2Cp z$#5=roqpQ9>)N*`MG!MU-M%=ojL82uJws8xXoaBmg1TL~o_*$|8M>k4Z6=HV!0-G<1Do0He}PLc2evi_&*sBsvJOrP@Tdz1YY?&@ z3q#5N%IuHBBht)|B$`<4jetLOD|BFXBM1$((Hs9TY?9P>LHz*j8Bz@V6{g4t6kP6d zg>{_$yQTGuR-C+w?2&bcWLHf}B! zMx}M+%+gRfCvm|NY;9>axCJ!#mSw?ZTn-d{M~rM2naJS$!%a6uughA0zuE4({+LKiu^Y_AY=#TylM${EvH z?qJTOjaFGtb=Tw9wQLItxHm1*=ZDyP=l<==3$??g*)}T{#h0T=($%U%I z6)B1HRQ9lc=e6mXdgA6>lemF?2U+?5EShR}Ojdoa>6im78$f3qjy}Eyy}aeUyxlyK zb@f>3oUlYtObTxS#|~^Oa7_hp#m((+QFMK-7a5pz^=dNQB@H;IQ*fb!j8>=U#VBGH zzW-r-+5;MUy80$te@-`YPX$2x?zZg60CyI&0v~7(#SNDK2*@{l!iYRfEus8z2<6Sh zE*r+2X_=T+VFCqQ4+)COrsO`HcP}eFhC&iO>E9Y*_k4ZBBRa zKJ<0?+fTcAT-}%A{i*Yhfd_mxf)w>f&BFlqe`|E6``5%H-!9Wnhs50s0};SC-rm89 zX9@t1Ll{!%6M&@qtG2yVIbsf&nEV3?3NgeNZYTfuvYGO4qY~nGp6T1$$K&O9FdxqZ z>I3jaQsg2AuQ>jlCPieTD%`+Qx!efE<|X^(CnsvOfW1x^Bx}6BB6sEPWH0kxA}JGf z7!$E`{sDqWeLvR%fkYg{yTmi<-V$LLGs0+jFq9w&kmy$0^~$!0ze3zG0phfG!Zwup zh5OcXV%JInD|ettZelebQsDip6k9s8!JnyTt&!vtYAGZYa89xQ1SH_Crm|4i1`COv zexBHk20B^fp9y_%ZlXYJ_84#c2_-eI`19>0ySnI<5qI8`wMwOK-_j}7HdBHmJvs0BoY^9L9fuQKEh3)vK|oSsZmi}fBq>_;m43x zbp9D)bAH;W|8F?t|5tY2|JbW0s;n!ls~~9)ClMM@620=2&#qo%0 zc;>OF?tJF(+y4GMRQ;8&rT`B=Vx`$+(zb3~7+3ACQkX=`*<_;Dbh>n>SeSNG}4^64=9N5@wcBjvQeX}<%HwBO1&I{ ztf_S$UXT}pn`WlgvT{90)mhs2WDJt}n1pKm4$?!~M8(x*O`Q=jBu}#6)d5m#X4I>z zOPOI4IbVsMxJHqMqCCiA^tq?R1rxVFK{Az}OO!!282Ic?`3B=y22!l&SL+ad*$2k1;a`SV8RM+3YXJ z%H)8D|69^zgnw`y(7*C@l5_m=ZpdQz54>mB_)&UEPhou`-IAYMrF`GB?cgEo?l7g#{q@sZDKa zF<{?OwU~0k*>qMa4bY>aLTq-;%R2lC@1!?VWQx*W316PNtMp($;hWc0Qx>>KiJn4T zW-lRfJ(8#xVDw?xE}_RnZJXnIeN%zTTDkhFO{Nul#qEJXSzRZpaxoUaTd8!4Jaw(TcvvSUODM?ahnFZz^ABEru=hP!0wc-ZI^U4hm%~ww_ zSzBw?ePpt2X!#QOjwammmO&Eb2D#<~h)v)x8iFSo-N$AJb_!FB7FEFnrpab*Yw+o zMY0G94ST=6^Cc4>LQ>7_FrQjK`P(N_Ir*MOdw8s;g`u|dv!$*h$UVm_2JGBhc@B|9 zc)vL)s$e{xx3gPOw(;|T5C<{~QXnV3eJET;zGP-uN3rI4p5G&}0GwYRXtwTOH+tS* zdX5wN(5&Q#9P~31$-RvH8<=Fq#xQOXyA%u)hRDX8kdnBr+(QFjI+x?qeG%*pU+nmhHH^uiGDbRI6IQ+SACjwC<%XZ*a*fM4R8FDTuh z5h!Ohi##i>EK749yjb!=emHY8UoTCJy>5iGDg><^MU@r(>USy=(^%0xuo?24*M7uj zi+bsb+ZeTd{ycD$4@dfw9+U5XDoJ$!x>(-n@9vr=%r1$D(C(b7Sp#n6IY{`s2u1_!LdvND3jmZK%60 zPv8a@iU2-E)djECH|`B14afR0M{64megyI+8VWR#u!faIGr(K!$qT!5b20UxmYgg+ z8eC%x4g2L9Cl(i)Q0z^0gAUt9Hq$KIMzZ3Ryp}f2SZ%J1mP%)b;3$r-*$p2Ou)ZQC z>zFJm>a$6rFL<;wy^0+aYsKnI8s!#uj!RJFu%-zsisJ?r>~uHS=TooD_3NIMZgzh=-V1oWNgPG^9W_M~EOl!q%Xc z)w4C}&)VK`Hiw44;TaS+WlbulCMvi)njGRQTTr+w21bi{$U5|mGNQ%lNXf@7GVkbx zq%zmwv{b8RZ>V8-{#e^`-|itP>2Hxj^g15 z(kkvzeAj|Vpmqa+azKJD+zNb(+t)5#-MP;63Y4g-BX1xQ{KDGo5rTXq@q~{PTwI5d zGG@4~MAEq?&y|Q!;ikaVpSD4FWCwH}`hfe77BjM++%^6OPY?UISDo}fkapt#uzLS* zFkMp;kRORhvGq^;>f#mXVA_m8w3z^sFCH2?LT98~U92sOlS$&22HdBQmy&}MQ>4dC zpx(6eQO5QA(S(Pmw+CPk2$rZ`6n_(Kf=G3=0*5ckoO4>$oEF)GNAbrAzKEW0uSD>3 z3t_7{=b{K$dK!O3vj%ImKoeTVT4E_vpjIaT9?CYCrCsC#a&>6a9>+}#zZYoG-o9e4 zp(z8L?_6HE<8FA+fJLF!WTQ>uv~E2^6Nd^Vomi7RW;YH6s2L|K8FXVt*bQ@{mNZfL ztGZ`m39kr3L8%V<#Cj`(KN4}7L>Jt#gTTi;*bmW@)aFYS8OwCVjx7NPz0eA6ns?r9 z@@j9Ugk5XDFx-RS1@anB|0dOcTXX(obHaG_o%Jd(U=xI@DmQ9wWr2@!Gx z9)KrD0uVGTMQ|h+2R|XK-t}7sX z-$L#_IXafaa-+qVtzi3}y98Snw7`2N*N!xeosXPX3}3`dJt=I!CFI}XKU*8|$ccPl z_!boyJzXIr1H!*U3TDDGH zx#qq^5lzwQ+S=KvjJ>rW-jYSXh5v$@8A8lzc~Qea0YN+qSv<_LWR)afB14nhSM$k8&2Lznnd7DlN z3<@f*Z;?PZB#UxZ#bT?{f=hn)D=kOUeZV=Y=V-&zj1n3Nee#`X$miXiMwa|}I6*H? z9B)o{|5)ABPh0e^@f1!NOL)&E@2j`=$R-d}uH!;;qpay#M z*y#7{$r!rvX&tJ5#bNP`UJ*^{A*yckYd(T4NVR)m+^da02_;vJcS2jv!5>@b#}L|I zro!Mcks$uux+i0L&tRY`7eVczu%wf=4A-2eHlLbHHjXA&yavC{S0$@NktpXEcbPC3 zqT8HlHf{M+CoD?ro!4R;MB1J9^5{fTrAw+=6AyC%o|V?PaI(Mp&xyI?7tn6N&twJv zZvpE6WNGuiDZ>A%X^ol?x`@Y#Ue~yzbw+vym?0(vw)M)(Xt@>|>=RPveHfF?wuK#G+@4hOMui){D%lNX*il=AGKj z@VB17*qJaQY1`6$jE}Otx4y5QJH3OBx82{Ueo_5yZso(9*hIY&572)Xh#mRp5@JKh z-iE&v2kz(2RrC0g*k1sF4G3igdj>rg_2bsQU%u{OUx?)!(P^~qKeA%AT50j>FN<`j z%R4m>Fsn2Z0>adv-IAk%haEhJhcpJ;x9tjh8c6TI-I)?AK?GQbXTanj*v+!hNB2{Z zZw2YCWmrSE>jxfj0-JOMy8 zY|Htbt8a-gU1i%(M0VGMWJ74kBvzHOpajQ;@2_T7=xXJ;$thSnNd-Wj&%6d7VF@wR z=TQkGgQvprQ~~vLw%j{41(Q3I<(NBgMJB$fHA`WnuW|$yQmadVQC=;jnj1P^lzA&e zwGtaMA4*ZmWTDtn9&8vji;xMEey&m3RHkFxEZ2WD`8Yn*n)Vg}WgMxU47EXrcvM4k zOn|g1DK&(mXICojtRyPTAt3Ry*<`&0VkugUkZk%7K*|`?h<%LMGfDII~={ z_-C-6d%nh%(w1rLayMD&x?T5c#j$G!W>K!6L&wMF@UYa!a&L`zI(_6;R3U`L3Z(Br zK7eloc1XV$NcwikCgXy;oj^M_ktF?&%FT2Xt?0*9wO|Vda=|?Z0E4{KArOJ#ubfCp ziDe^EyxSC`s;e%0F_J3V)_`T3k6~JB26~8)fOfB#Vnum1=R&+%V>jW#I65g}8u@)? zjvCyvL!#*6+2O8>t1Oc|&INfgL3=KQO1&_dI7-^#YC_1YV!>Zj;34Z>VQV!Yi_|~m zfmv0!b=itl6QkspEQO6Z#sT8U>*-brfAknFRqX5=qUYhaC3}LBCDQd6X#q6a!#!eCTfHtO7TWYUH%2Blh*BZMjGMrSaH&~5CK}OM z?q@NGB^eMi4NUeVSRHz3e%1;ZX7dVH zEZa$rp%*{d$1IK20_QTlnR0_tmt%MW1J5wq&_d_1WZyvpT7bmQb~U9FKN()q;- z4V)WL^;80tVL45@oLb)WVx^5Ib~m;dtkgYOuma#(c0R$`OA)zl_^FF4&#t89WZJRy zBMW}<3qD^ zHcTiYDWDRL>vwHm>cF!66bry2uZ~XWK%s0lx%YhmSS&?OlDc$>rUd4onlO$b2sMB#g>~5G(8G-SRLML|EmW1363>+=D2xg(&mp$wP${;NBNN+q zu_}(TtKE0lTY3honpp>2YRp~8V!QM`Nj%~&u9F|S1`E2Za%0kxEy+ES6O?ptq7`D` z*-l__$gabZz@7(T>1MxgdY*UQ3u1+oJfkFKIU3)nUhqFwKzQdG39*R~F3%wC7a=ZT zgt=}IU&z@%&iK~Llyox~B5kI;`)IXp>;b9FzL20E%PbY}&+mF@cR}VdI6`VRM6Px_ z#*DRP^2KsPIMI`9PET4CxsA}mFRkH73{f(l}9~}v5-myaci0V;z(}w%N`QmH4gt(MdgE1_qTi(Hj>wtb{DCBkB znPxbR^RT+ZH|gL+3$>v%paho=0XEP^DnpmA?5wJpZPs?pyKsS@YS~ech_7--98%oP zmak)2h&%Grgh+4>a=wHd6yRof-eluJj9B4Ko0}WkZ0OnmWMgszkfO<9mhIohpas(4 z3|tsejlLGA5KKAkrE*ZD#DybHgQ>)a?*FWjs9zvt<(L&DMj~Cw4QWsqjw#5e6|soV zCz}N)Zi<6f5(1bJpAK}N@M5Nr1-BUbTf)>rAj-~hWwUD-&~b3djP#x^0KtmVm-%rI z`@PYxyN3e_7PfNbVxGzT3ruyItv}3fiOKG9qhgIK-$GyFjW8%qEVC9UJ>{l@o=jZ( z;;dU%bm)$XYw;qYvsVmPG&ep*Qim0$WRkfrEOzasR)fiW{BjAzaiYJ36Rkg_p=av~ z$`Hsa<%a03b}dl3;A0o%X2&BG*$;a|fpILpvJ~Mme|s(#Mds0?zICx3mIvSQ3UWAQ zFUr;`C}pnqNR5n1qAFJL_tGuOM#;U%0?W1TtSs@TSR==xwf6n7%tdffwQ9INxlD5u}*o$DU0Q5lez!B+V+ z)1j-ur^$?qU_>N~*Xk6twb$n33wiMM{E)r}X`4XR|yhq1Z)e`3zIlAR{;Se8KCjZEnG%E=k2-Fz4)Ub1RdBkI=e$A{2Jv?9hO zMf0wDc{a+;ZLLoDxIFE9LI_Z=rPXYZYxjpdZHl4(=5xh1!OA=ASH8gEe28B0xW+c= zI)|vc^O6#b`TW7$J*DT|o*EK-!AISaDPa@F$N3=b@aL*Y4sY4S`5LKgfoGrkGY4tb zQ!7d#aB6ISRFn$!Tob*;*bVhbt}6F-sg(S)R|Vm(hUpjlAV;_xN%yE#qzE}v$nk2cbPw00;m zTA%lQW&>}ced4%jNik(@I&N#v>MQ0GX4?}UJY0k)CArT|EJyhHO!IABGxNg1 zk}JB4eTCY>2FHH4`wj1ndqI_2$mQCAyH!6)r<0d-BP&vPO>-MeDEV`1x?pFmoG4u{ zZXp#;ko2_;7lRn#+92k;8^Z3@Op*(gkm{|Y4Cdb(QV=s}>)3Wbmd%qCXApR63-FbZ2Cs=o zTE`~ex5;zSkTM@D@;|hax7Rn%G#=})d%`9ObmrgGsp5I?Zv#F}Fz_+m=daDw64pwbeM|iz+aH##9g{)wyl1`7L%TNNn=azN z*faP7>SBfPm&aAM37H0s#Iu+?9Hp4q>E0^n_jHp-@PN7EbkCHo6ax^K;xsFwTLav& z)=C`1sY>vbmN0j#Ka(QnDpmbw(o=xE%UVqw~tz;O^;pld70 z$eM*G1{UOJcD6(s8YpEt97)&huZUNIh?HcwA7abyqd+-}1b&6tOzdy4%J)R1Un{Bt zQJaDLEQM|n?lg4>1-(mWiZ6e+r^8E%e4USYvScGma<7qMx@GjG2eoe^@oIi6s`2;6 zzWpg8ZYH&B{(#7=9InIbywGY*?-S*l)EYwNk`;^g8g|Xe0~&C<@cK(l`q5ue%QA~p z{cdnuf!T%|GpnO1+=LjXKTU22Z^2%_)Me!9(!zCwH0`hOi6$}YRp11FK|#S(Kb(mp zV;cC#q-$vB(ae(14_meEsfB6vcp8+N_g|LK{JL+ys6L_SE)&oAZSzGN!qZ>Ef!7@~ zZiQl4sgPa|C5;E4P|}(@10$DD;qhzZ4^Bg#aMZdj2)nmQ1~NlH-1jP>s!VkR+PhM#MZaIl#ou2jJ)euk-?dspbfzw074I5L|2D~m=*U@yJq>aQ z0Dp(fZyZ#b{|QWcn zH_kwRRTJUL`W}KwgH4GLJr{9QSM<>E76rrv)Jy@t8FB z*kqoU;3~_%Nv`IEL;@`^-}I4Kthd<8uhzfUNTfaz`^GCo^fy@i20uQi^)jwfiYx2`~51h~=cY;wi`LNephxAlfe~v9pQAy+x}b*z5E@(@h@^OGzW0}Jcc(Q zci2A$`eIeL!Y``SdMc(6jP}1};##{6ZP_0%Q|X~_@&gYQ3-rN0;cB+e-?`Wl0P1{o!}PUU zy-sHZRnKKsAA0X2ab54nU(bw^zdV!ffSK%=jE&CK1@{t@<#Nhkn3Vl_eQJs6KDZ7t^hv%FUsC2Sd^gK*4%s9wr$(CZQHhO+cx*I zZQHhO_xkU--TiX=oam@}s;7#m%&eIs$NWYsN{S(6RloBgjrG6G7*9KHrvqjMg<1;K zPl*yH9?$q`xbu8?AL=bVcH{ZfBFumHj`#~lPBLTdLW}f@D$%KX$kJ`Db510x{5hW# z0vq;eTFifXgw;+SV0(SR*~ZuN@_7lcu-~J_tHz9sdoRSJF!O+HgBUn+BRPp8j~EbD zdwmCVi6W72d7VVK@r^@V!`1Q8Gl2}kHV5|tR!(8r4>b8I46eT`>|dBO#>he*MDKp^>8Zb=^Ve8QR-&QRR z8bG!K@yAS}rPL-(@Y$E+hDp?I!d^*myG{kpcjJA}Y-)Ifde-wS!*ZIXkm822{d0b1 z@rgUqCE2haKT{3_0o!CN z?!b1DS4hEO6*?nfKL!xSoRY~DkI3RTS64lxG9Trq_N!2HF12^5gck!=ZXYL0QIqvR z>M~b|JI{gTC&3{E=7wTCI~@>}x>grXPeo1uceH~k_XnQrZDWX_m})4(SX4h6u0lLk zn@}~BP9;qR$_Pac;Y(J?OFhfrE{x$mVDeabgQ86{xd*Ua`tuHyd`ab7@uquATAVpP z7a1Gx^hF1a8w%kCP;ur3&ST8rjy=8LXMnAP-^HGYRU8sU3$`O8#mGKWyL55@VE8TI z%|kOUr8B628izkuyRLxjMFHN8W(nO_n-uUPfasNfgG8f#g4=6cv8d==Zf~w&VXEAN zeizb-j1iKwhgV}+x|Z)g&3&Vvl) z?bE=M8xhLWvqp6%q->xyzN93ggim_T?hx3qphN$5ZL78@BBgu)>Kq=B1^6->8 zL_vcNZ%Yrqcxy%-t80jkXDZ=LI=h(D1D=gk?;5W9TCTc=B2SJYZ%D3JqudYKX-bTF zpfamZMUpYFhe>}8O2djf4U-sW4KGn3ki4U!dJx)as*O!GGG9gJ8q<4u@tXs97_%s! zRl1xTwZ&}jn&52R`C{=4sr+o@SR0?DOVaqgA84v%Pvx7rZnyREjdfin48z? z)H}??3~+4mTq;|z`JJd4onn*X=$(Rk%wY*ZjkBzvF_0J`@I}#oUF4n~Ep0coUV=(z z|CEd6F@_`ValpJ01a8|2{&{i)pNxc977@(xluehcB(G{oO3D;LhVZG^xSsbIFSF?H zg;9R>5*FVy!EGT0K4#LVWSn$>KFZrLbWoI2pG`slcLjRYJSig-dX*R}nseJBDW`(L zIddZtWIUid0jk81Py!+7aky7vIE6i`i#R$3dGa=?G!s9ge1c<6lV)zPenv9H2nm{d zp`TDI`U@I?P!X8#oK=H(lQhXj$qwa~b^RdXp*=?t+jIx81zeenWNnn9HD#d`Uce-2 zNucOt5CJ`8#i<&#$p8dB=<@6x2K@}tC&^_BNL5KyWymzd{jcq2PaQK#eIZ)i10Wqj zM)uC)URD`>)g}qLCY2kFIVu0ykQS~-iv@san;Hx#|JnM%9PZq&+${yu_)rBre|x0q zFwgJrXCA=V{Trm^8xoI#KQ4qY@~aRt)BK%%A&X z-rVO)7K|8^Y~EC+?$4_n3{!00#&&PzI5SE$wxSYvB1NH~v63-PfrUfnk)U~h7&AZk z(@$_Y0%O$_yH@|O?_;DPYcXs*qEHm+CX1EbO$0fkm7HHe1Xjr~h09$(eo9Hn8eUL2w@(D;!f@vC z%&0&eZ{S~xB~g7uqvR=cJ-@9$;bR?-&X&mSUSZ8{ac#ZgiT)Yxa`~I1oO!k2_KoE% zHN)ZnoOVUY891}V4%T3V%1OhwZGY<)iEV+aOQP97Zz$M#w^B&Ag9O zhMZec){e>&G1F_(-mQZb??A24mS6*PZWKaux@=u1z}`!1|p5{O=)WrdO9-bo=ZKU+;*=8 zdcs$f0d*y9A~9Y{zjInP?6qU%t(xbH%qX0ezs7B{(GBNQ;zH_SS2#VY9<0Vox7k+w zrbHcKbX47GnEM=d7ugO@3`jh3?G2t^_{;(bmA@Wk*-jb8b&{7GfJS)7!ai-&VHU}d z9fX%1gE#ru^VRVSCtH7fnS(e|7cJwhn0Zr2Z>rM_I?R#0BiFXby1Iv-&OcUkw~YUN zCE-yc+Nnl$OTo#hLT#kJw?!KAa2x`b{Ph;1O*}Q2c5h-BpjOS@H`)CsI{8snK_NKV zDTV)?u1`7p(U$m(7Xh1wZ-O25{jr}{VCOZ(kE66_mEB>7>|28U!In-_tEk-<9A)l} zp+bIaRx9Ra7q|E;#nRgl27j4%tlOT2ng3?IyDlPcC--d9{Jiva>}NSw$VXv%Zb^}$)#IgR|uCs z3i41A&IaCFW$dyV;Z(fmA|5gQvI8=RP0ZwFfiDP<+Q8Hr;D$+J_v)~;!DrCaP=drzxpOnilA7;fNUy$Rfl>}<`gT*6oOURY!WXoCXZ&+JjFgHKI ze;n4QL(m7ibOY^iu5{4(`4L|dwSvOZKP&=2-V#0-g>p0S%1Ew z*Y+!rG*21cpwlm{^CbixgsbU)f})jckcKCu^Sd{_#3wQ&lZ+**1*hIWuPsViX7L?+ zZlcOK0T9pTdGTr#j1oON03or1WdN9r#nX) zSPa1XAm^+)&CM1qTv3*6>duo|-;0O?ub7UqsS2%3&5b_@3)HLT#Hd%q+|!hLbJl4P znPd5<1Q%`M?Fb>aLim@*sPEF(Cqk+bLQ&ju0aI@T?uiTQusuW?o6I>6jB3z_WV)J{ z*x7u`X{9%PA}DEWWxQL4l(vZglo9CE&j?R8B+IRE7s)^LlO6tOoOwmw^CHu3U=>V6>%CP2aTK#^GftupoQG00l ztqD2ZiBag=j-?7!k>%Hav#vQhiwvF}>#x#u?ca$Kg8r-XWh~xWKPQ$?Jy$OG5%ZyF zYpiFZIl86DVHZqBu$9y3e!HB+;)@r=EdWO_0A9Ey0JrdDaxjYUuVik?vGVY(h$v*Z zp)Bp&6`RHo2QJmrRCzJ(#hY{F0m%lLP=>V0Ue1Q^avr==%ApdjOerZ`Qq)LoF#>UAJxbWVK%3{{ zhGX(+RnR;|(}b(HdOcj^wHJdW5Ai~jP)x{d6(hd6*FI#ASzQOS+hdgtN978~@&w$8S!okr zw}{)J7_U=yaFNW{UZ@vRK^eL~x*{gKPxkVdAeRzUaFgQ-;|6pz@%k@|bi8kDV!HF~ z?Xq>JPugJ59bay>ydw`vJwW1<&)J;HH9lYAADl4a}k#ioGLCcGQg zEYNIUwR#09hUQH#1uhB0c}pRL0sSYEa}}BvHtykpwj81JHr1~^i)WKh&uBtwK>(6B z4`-hpvMZ}}n8;L8^3P**vIDH4{I;U@?=Ieo9{K`flZ43`ZO+M9ezp&!SL0OF}j1W%o+$12ZThb~s$f&RH2ssH*6(#Yk!6 z0p$9f@|Bx7cLdc{Tl#vP24~G&3}(}T%hhT=_KVp_kjM-;nN9Hi&;QCJv-Fk#n!*3` zr%vs^v*G_wunHvybKC#2h$O3MDk}b_9=Rk4(qI9>(~D3oOHKhtnKda3AjvUB7!dCl zN8|(nVnKs*i=RK{FWiYf=40zx>bjYkQam#(+?8ja!Ja27eq4FW&=4t+O|q+hY*_kQ zR@>HgCH8#3J-PlN{dXBEy4$N*sYZWQYLXvUrBWrpo=%HQ8KTT|<-lO6NzCg7z#SVs z6K&K-Mni1s5If~H6bs|u4Z@+Wq0VeYs7eRiC_F)<3gl6$sTvIdWLjNZAYZ=j^k^~? z?vx}Qq7^p)4%0MVZ(KQ7lqIDuT$zBvhG=cN0fUfwEAQAO+N9=jXBHGSPvP7w?wQ-TP)}?JULeo1+2Al& zi%~^;j$?ABLL~na7wP42J9o|=Ws&lqkqQZW-Zt| zIhs+JH$FTj&5Ct*$MJ+roFs1#se3T5Yz*FwoZ~@~)k6}s_w26q)^mlQi`61g`u@!> zFQ%ts?E%-g)H=}mis_O%naWD@PQZJHa}ii;(6w+KAD+^q15@2kWS1dC+BsZYk8nG$ zS7HKQgck$98y^v%=UK+dCC@RGKAOt`p8|VR?(G4*yedG7n#S$YBl%^14IQlYUEkJg z+=`D2=O66H9rBj)oICmSy4lUBlLOv--o6vycJmPP5MPnU=AfUTV@*l65L0P_+WfIQ zTDIf9)n3+FkmU@N;upj<+IX4+I&?a|X!6tVL;N^1tB=3v@55p?Fsc-g?ZFX7Y z;kE|EMZ1J|?cGb^X{oy(1lTj?+bn-?2Je^?jxUf*kZO?F z6@<|R*&4-xU!(S^Jn2eM%1D{w@Kg0|f^v7ZTbbJp|9x72A&t8Vm(>S#FJX@q@@ zlFQaA$lzMd=SboNOR4h7qoLN|!XV!6^S{Clky;9bo`22H|NdL^^Z$<#^}jR6vlZt4 z1J~eg>998MXljxW780sz-71KF-vty4h$bNtmX-+Hvu?+p*stHXw2AbJ`00%dA3P1j z-4#W@i2@Fkjf@gwnSWFuVvpaSV||1MhiO0nH40duBRb2R>&M zFxi6aGzz>O%+X=;F71}2)6|ze=4&;=k3hII1QQEts*O>_Pv(NK*S&!fXwR|(9vV;S&V!ZY!}`W2 zj))_pA(eg2fob(m_{@FxUH=mJ%R2osw2R8Bf4paEI3N(@r5*hdtoG+7=I1%1s@l(5 zqdUwH-7x%SdzUv_sjUD9u-8(iTI?=Y)Zdj_M3$Y!jha1L5h;5~Q6$&?t&l`#NlCf) zVGyh#ifUL&6nVudhc+7hA;VWt5{E&7IdYm52~+o9TtBE18(B86`NJTaen>esgT|d& zrK+!T%o4K3AoaE`hpS5ZMpO#=13aqQVGK)cbY^QLGPO6XbJaOu9L?bk>3^22zdkVA zz`xdGsQ;GT@;`M_C|a2t{_jqTVijx0UoeJG4Y7Jm=WsnZOJC(GTB;g?2vA@q+y)X9 z&~v!z(_6okxTX~uqcrD2y39xZLi#=B zJ1oZnllSyi6A>h*amllor|S*-jQchF40~nI_lau{=s(mQ*a8{-4|h_{#)p$DDH3@K zj&uQn$VFpuEo@rC%tfPK1h)yf%8r$2TfSKuO$};(2zI?NzNQg|&DuKRf)NHM0yFqd_M|4dp6C?}}MRd{& zq|mcv%xr>BF`I3ed}LUVI`#ZE3W*RrkmkJT%j2tn#Fi7->V6rNYJ>7TeiNKOXXtdZ zLO(>Yo&`=e)6=<0{~)Tzw8qD!)ZIm|yF#TOWxLpHs6Aeu0&&V?wxg%fvn_=FWP`N- z%Z5Sc?2wbP1SrHuSk>o5bhgO5XdnHYi&t{p1fv{#14ql{?4OsRXC&O{f3xadxQVne~T z+A%#>3?Yl@_6I+>ogJcpXXqZs;O14_MySYTytg6ENRfTb{li$m10erydix_z)=313 z!Eo2|mE*1)i&AklZ=SKAd);p#YNtu*)L>DIo|^etf0_?s(sdv}dy#wWTgQ>;OYWG@ z=DO-}gZowqz#I00z23U|VqIK8wxLj+cDaaC5@TKk{|W{icN*PIex3GTn(MUq&heE1 zxnQN9&DgYQm2mLEOLFGNKk$4%1vsD`C44R$e-&o#&^rRiA-g)~yp6 z6%ql`Gh`rhTH?tf@_XpBzv^z&@pE^;4JIOgWadKM#`j1oXVu82l!xod?OE?_do`1k zRa=yvtmp1I_vz~EoP=#}&|hJ?DJzM>WsW7@lDsG5&(P+<*QlpgWej+H0B#-49CL1g z7YR6)S47%ETE?l4z0*1}XQeLaZb00Vds0-IqEaZq-g!fIUN9Sd`$KuS25&s9=Yy<2 zYYs{SbN`$}p#xwc!o!}C8BVw;Qe8*x3=cq1o_-5`fJuniHpdHfh*&sA-w|If0%b5+ zqu#^AIt0Y=pw4f?)knr{FdL;>dchV|VKg=Qy|nIHgolFJ-Pl+GclC&TATy2pL=AI> zN!RMFl-}_Qc!y2D;^x7;;@PDrdlp13%bo^sy zCE@z%k6Q>y)Vrb+om+Kk>L|PSD8_;&wEEKo#3YZ|y_N(&dlmP7S#UXQ_Q0O#3#zkS z8S}_oxQ6?hx@ww#!(~GUX_<1tX-I1bc6+WnbYx0BcLz>QKUBz~Q^})$+lq@3`3SzQ zv>fL>55HwB<4@J7zT^KW+Wy^fR;U~8e=pwrjlm1Pt5IGy;3w(KeJyuQ+?D=SrYRRU zC2&o@;={wW z-{qX&<)q7CL85#oUHnj zNs1*%JUi8RM8++$Z3~wy$ z`USqC3_U^=yTa4%Du3I!M=#RaKeh9yO%m&(Y!k0b!eSfcb`>lz5AQk2$ELw#1Ni=! zhLJC=3stIyAD8SAUPI3Nanc8$F`vQj#C_kJ=B@E5;_$Ec$o zuxvl&E2K$tY{Ihb`HoKi$S3Q_rouXElxm+X345d2W~FzC<@6MB--kZh!q8RfNbOY~ zYz==vG!gESDl^#7PP_tIKXv^8{O7+uFMv!L_zU4+`EMZ{O#egI-2dBBL?mdYZ)0lg z_`h`{rC&CiJlr=7^<%$4ep01!CEhatQe0$n69jOQTr$vn-tb`YR_}hjwMz@a=YiuZ z%;&67ujD@9tK2Yq$Hu%%cptB+X*c78x1-7Q+HdpRCjecfGweEANsQ4_TqB{le1fu| z%A-+T6-GgoL`Kf!(p24MciFXgJE%=a4&Yr^ni7~;_bPW>1c+dV8ihFV`go>i7I}KA zGvUi6?1xF`BHn0#P8MlaY}!OFdNKoJxfXuZmupRdhWXEwFnh zrz(xOPb(bUt|)9EB?jedFC5Zr42(@M(Ccg;+~~qst}3i6v9;!=a@o6Hw-!=zK-t)4 z3x7);?FH1r+m9s?wntw2b*n;Q){ktB25OgQLY>hRK3X(8DgEgm%k*FNetC2+;YDRA z^1-UrbfwJZa2jYK)YeoRfDJ+aY?E==kn7B#L^W>vCqIMYio1nWFWa?(wTSz~tdVmp zh8E>OCqGKYvt9y(Rd8x$y+Q&LZNlK~I+rHJ{s@rC>#NC`fN-`_T>!45+O1xW{^;D8 z^pp_LVBIL)cABmB@gwn){TL{KLY|IuSaL*B3eB}nVl!ZUY~1rc{?nSND?9StK0Ki3 zKzgbhJ^1<-g=$klBgq2~2+c9q5IcH7diF2-yb96a_b@|ZlDweif%PK@#-oW+c%g+B z+2oYE^;C8)1kV@a&|PXqvb%Qdq!~BcNHffj=G})V@&t7M~ zd91JS&4~v&iuZUDYSkZ2pH}ca1t`{U@r@OU%q{|IZc+{QY_o-6_v9V>$UQ{o*fQ&m zE$@Afd~eslafd*O)qI3zv3#lLo&yVpQXQjiYX!^A2fEAn9>}Buczc z+Gd$ulfY-0ui@dTedUf)j_J0ot|1?NP}EwJE)9)Ydw0U19aH4CaZ)+sTV`;wY=el+ zt&tvmqKOTnjRDH!8F2L#p{b42y}bI74+~6a3JzToU+i|GcP7|`7?Gv+$Q3Vd>^utrL zE9d3+?xyahnERHW?<2%Ng|CKSJpO~uoT~K@E7evmW(`KBk%H-7HAd^~m2y}a( z!2!vXQ)@%>oo(;}e7mp6juT4L^DEA`uRO*mD`%8;|ICoB7&A@CICDK+jvM{hC}#y$ z48|st=S^G|Ao|}3fiM(YrfH-hUJC)u{d=8!rYr(*L7|xP)$^QV{-LncR%-+sJ2G2> zH%=WfO6f5`_jC;NnQzfRKuujmt_Sg{IyYis9)-nT(kfZFyBM%@(~rgZI9f~Z3OW5+ za4nB%V5w_#>KKZ{H6jnObn0nOCg)B3)d%EBr}^5!0Yag%`s77At&&#*Ip9Gpr13XN z?egYn!Rdl{{GTJNE9B^GM*~T)1be8SRMiGfqY|I_0Y~fu%vo8|pASS>uQnaC95UzXl^7UR*YH}Z zp{=HsSSaZ*wn|luDyK_KL=z`7j+5_R&;u~gjU7e7C&?eh0T09=nC46E48>XA)KAtG0Zng#BC{Hr)4K>Y zROMuq!$YNT*a-i!9*Ac#(@_F4$rUuDFic^p#g&L;EVhQ;G6|{zNS!pOgB<(B3A35* z>QjLa-jp|R!`8Va%r}6{tHFa+XAS`e=THVEKp1CRJjkRhHAgr^Dy<})D-hQ%N0SUc z-2HSk0hCrW6rUH%!7f^;fTSt$i#&fN@lh$GkT7esxRlp_X4Hi#1ESk014leZrcmre zWvxlpL%rO?P1XzGc2d-B%yLm+yw-sv;Mj_tS1ElBoFx(E%<9QShIHx$$AjizD>j;PV$R7peqCUco(-^wNBTtmaU1^rV>1y?j$kgk)%47x~liid01ZWu`bB*M~op_h-(x53{ zMlRK(6KSu?1bS%{Yr)8?& zZ6#Ps#d4E|C_i&QnttEs{Rk`!VHk){$m>+72-8EixHhy#$t(FQdej#GM6UaRC}l15 zI9eaS4)n<1(AnXcX9~$siMeo^kZToi0*cGhD8${9J2fv*?%V=b{5$k@-r>53e9l&1 zd=%NsUH|04U77-(s?pBB$uD$_59C4i0Mua&*MBx}M*`85)C^>lP$N4dAB4&}fNs3J z>QQ0!!`?P3KRFwJ{ypQ)eHT9dP*g|5xz1r0NZWCHOE+LBR(*@pzEwJ872%|ly15Xc zw?=<>0(7Jy7=0ZIP}M_AwAfZ5iuei%Oz|q%~r{F;Tb28t0yV8`7Soc+;PZ}5j@p71&T zdz|j+PldX+Q92iD8upB}Mpaiffzxc5ag}DmSu&Jarq5Zj7GvIQsL=@yyFusWIw#uf z(5l-jFWr)N+C9P9hR{CYbOOpNDCfm=x+6Rn8q1W+lKjFx?3v?5GjBri={Fe})a~3b4H^0p$eZ)smE- z2zgza1tnRHn_13AAXk%*f|(QtEf;r`%E!$k8y1%{-IX&w*ZGYA<<3H-g|Yd zs*QwsrRbPrKSm-5@D=hiA)TTsF~eD*LB?X4Fel&Ke+PbF8w+XcH>gxvJIqxXf7=0+ zbRRn_?uVs6Fv2d_1d-dnC4C<|cAg+ZL`YVOGE%O(F)RdY4w0~HT*5M8!8?p^W|Z~0 z_TO=L-_PN+M1StRjJT??L<}1pZOM4xeJvsK=ycv^48KhQDDJ-$*7WZbP@n$bo5HV^ zDn{RSI1OXDcBHc)$Q^ddK%2yaxr$*ywt=}}uO9ii?Lq}C?Qz>1#K4D+0}@_dxgg-5 z+!xQ!eEd(||J3u~Sv5H~zqN!W!hcs!{7*XFe_{&$_nAVqnz`qHbUM*U(G=iqXfy=8 zzlB4?(7}9h^l8-0$^OH7a7@x5?g62r32{cvR7B>@&E^?2>Uq`~EYM8R8v+0%r4XqBL!!}2Ix{#+ ziDT38o$-^-B=hB+CPj}{HIAhwMyh4EWM!O1*mE3-8s~Z^F@T|uLOR090VVtAC69I@ z6BeKe?GU>9qF{$I3}cWY9L4>*tMv2PUmnY|3B%y_p%4xZ9DGe&Z5^%+0LGaC>Y4N9 zS~`+PppA!N*THYH^1I%HqsR9U7zV{D!pKT5n4pRpK17mz*V^1#<>P0MmU2?84(qK# z6Y}|V6fJ9`;E1iImx{X=5=7BS@i)hFdS-n7rivbNFNS}wmFzTU9O^C9!ixG+iD1;)FL^# z*Q#8!tXBAhJ^x^<$xt~CgKHbiUxFI|Q_taWggiMV^5S>f?Z!H8E19oNLr0KDpSuZT>GZ@Ge z;#(8H*A-+Q_|qUUuMyl_N9j^eKs$1DE+7QKLhdz#Gi2lm8+D2oVcLBEvIM8LJ_$^D zcCQ3-AaK15N5MWkuw&$f3;9~YR7r!+DH_5yhT^}-3~h`pvkD{Bm#EGzR`$Tt2_%pW z&P19t&Tr}w1P>7uIpo9L`hu{n@=Y<4#OdRwK5TS*(N{UPsm#nLDHT~WcX@{sZn}hV z%z<~mc*e3O(qxH~qhJF8vGgHMd0rSpSV58sg2Zal^rE!#3IfXZ1icvIgmw|iO2m5U zvyOR)^#H~^(K6M(dvvVEbbN{pMK_V51*g2rb(=fv-j+KmN>zSMWR<>)y>Al4hn4(dKc{xw|0Z8EQ^dS=k6<$jHWRf9e^@gu(ewD2x z|Hh4+;G<$B4ki_ z9>=E6v-#yyC{WMVxWx3}$kkKJj#zNU|4t4z1QYJOJQ z$_>-~Fe%NbyKUm?-MQ1W+q3pm9>$wc#RvEmf4c2KSm71Ug&1owIRh0BUUVMs-7u%Z zM}(5X$ zoog9tjpW7t^roFsBT(HE0Bzp8_~gdaADku4nG-VRbeYY_PL%N;;Cb@%uE;G7VwASq zA|S#+t{8t*cK5f0Q16*|wr+X6A`%rauy(@&+#40Xgl^Fl>I_p3bmH#6aS2%9PoBU& zUN+$ECf}!aTNa01dMz zzpf-Gn}|m9w`(_;ExBH{n0gj7Z?izJ1wvR@z(5A;RjA}Ss!>cIcSaoCJu;YZUWCqx zW=v?u7%L|BU~~zg#wKpLInC6{(wmKf9+d^;kUiJfkUM7Y)q2+R2gyS=t|XIY+tz17@Zx9z;k8)Py5^9 zmLET8j{%DVedlO=za#XoOmBHNG01B2AerUyi&3srLpyo($}JSm@9+vxQ=a|@uz~@9 ztlKYHDo+~n+tSr8$}Ln!FxgyMM7Ks$0 zo2dSomTUN$zo$WN4&hbH7}UZ)M(Te?4#fCRXixyb&$vbS|WEW{Ey|!_Jx^?q)6Bp z+IAccxYpE{n?5fMNw9Zl;RX?U?EIEt<0)IXL%`Q1J<7p|`8*;OkL-MSA{CZwKBDYH z?4{|yoZ5qGx0E8^80T;I`Ey{7w*o+{DG<>CbM)F^stewu3`DG{ztdJKKDN7#Oz_$3 z>l)WTQQ38I6uhZ@mwOehC&=G9lw-ZASm>wJ6MVJB5`CF4bvo&_f?get$L$SspmY9zG@<8sj#Ta2SZP-TDo%MeX8V_%rQD6*lvK8tE>@p zwarithQ!+@F8Art$gfS=r6uu|*mSPFj*&u0%)0q2R)3U(!zJZiQYOzsJ9Dx>R>#I)Ev@>|_7r{~%0D=_&D><88Z;rR$a$ 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%0Dm z{GutE5Q5w%{bOU(>@-uCtKsQsU7!j5ErCdVBh}|$DeW6~5>;|;{HI{slHG_`;NsAv z{XNQvFr7dteK%)X;Q6QB+Byb$)0l1O89oRcK5DKVXtw>M!x(K?Ty{k(aDenYTjTjv zdx`A*nw0Xq?{1X#tE<2PjhhSt1L>HsAp-byp14&Bp*J2PlR1X9^nyZAbnqdNwhs)P zD4~imHDVGx#_$IKT0A%#T92jLF!qTjcS zv^kgnQ*_@JuB3XveriwRm@GL5CN@i3Qt}@}QS?c`2Eu@=)1j{?UjeJPX#_;kr%7kC z_ZXKW315*4B`pdOighCO#N4gc0e_6HbyMMZ4rI_0|E@4<|BO27IS+R@@sm~2=_0qNlTz;x6Z&QcYE zwsR8NPHuJ7_%q3S%$%8S_;Ie^=3WCczt~|na{p+DYz&0Ts9=>UP54N0O42$|3UK5~ zCLFlY_(rbd(>26o_qjTG_YSlhO8JbVM$=_wunRoOJyql?%5^V+W|^-Yh*QuDM;1Gm zZ9rn(lApj0(+hf~E};~BKcXPQbC)MHF$xPtNEhh6>1e4zoM_-D3zbJq3GFQgl!9LhcQ@K8fSAC1e<^WX$YQPt=O`jR>-LbV(%E?}$|!V@u|;p;S;Mw)>2c zXhFWNL(@3~eGJ(i6UOOWQpgXSfeMh($j&zjp)YnLl#T4ijMU&#+R!nlW>@6hoW^m% zZ*4u|>=|d*Y_~$e}8PFgMc-%5#olN#e6$dn!OIos0I|-%}_$OS}a$a6c zF)*%6OC&`o@$rG7{w22npwpViG9fXq{r2t|#^*WP-@okU`MmDt9eB!2>ojhLmCc@D zcbsx{?|$;yb~V}l*v{w%twpu1Fq5w>Hahg4r%r3iB7aT3B#}5WGhjPxFOF-Mq$)L2 zti4aQ?-N@Q;Yna)@|ci%gKBsi;sO-uSu}ssaWclA*C~aRj zQ5syF;Q?mnuF>hZW`ld=N@h^W#8n;cwW-+5oBW0gET|{qWY#N!!Ioi9c6F1}8rlBN zqhNmXrX_Z1V;nRjA&yP{u-edqmw0ovk#sQ``xMnGcFF-IAV+RLRd%pYDN!qRM)Xkd zdw!x)F<6Zg+(v1SQlur;-llb>C;6;jbA{=n(jP?nhr62k%dm><+D_U`wq);Bi&14a7wV~}RS{Kd zE6YhPNn7*u8GAiQNswUm6iJ_I(DjOXVE_KCTzIJkHtr6ONu-wWc~oRHY{TLi)28&d zK8Y~kw8{JEjpKZjYx0wVZB}3@GazHkZ%cE!#f1IXs3&THMOhzzu|a)1yY+5XG}<$N z#$b&Rv1>=b+2JbMlgrYxOUAl7IHEx<<5+3O8D@#<2ySoT#Ol?j<6e{iqkfPwVP|J~ zYLk&Ews1`)OYTpF7Vgf>8ht4e6O2nt8pZaRHTJVwi z5MFT0F@vu%^be@W@Fxv0%;#kKW#H~TjzOEaE#}ZXgyq-DrEP#@nMB+(# z{hNSjS}~J$reiJRb;Cr3{K3fvt3@XKY(lD@`X^= zHY8lO?jy+%ia5FjO|}`Nq*iUPf53axDGv%h?t@sBZq7&j?=LP2tWVPwv2ri)3@$gs zEWY?`!G9tER@q<dOEyKu4Zm z4Jp~!bN2AEl2_x#8O5Bu7w)#+VbTD$WQDqk{F|m5|6ntwr66X=!yB$w3Q+rChwY)+ zaj*s_YJ+o`Gh6H?V=@bL*WtmNl2;8*A^D|X5-t+WZfj$slD-7}IfsC9l&Aa_^`O8? zo)8)}n)T%(dGekFDz6fPa#csGTSiERXXODL$M~J zyxq8Q7xA1iJ#8FeO%uD(itwL&schwrDVF(r2UuHh1#;RB?8DtFCx{7 zo8Ztr(^UDJV*hij1+70l@I;bZfobGE(Ymppdh)$vk~rsbhY&}XLSj!f`D%eK{O>{J zQ{iugM29Gw4S+RX^U4p7b5xPq;QFd}oT5UxL#gj|96=6Z7YQ2$4*K9!!9ETdb?EIX z4f@|fR4)+_ASVMzQE42v(s%rHG|v*lwrXAGphNl(jSmj?>ZRo|`_3-;Xl)OvXl{=h zoaPhFL$`u1>1bBzJrnlTylv89?SvI-GSB<1H1YGNdju68Sf43C+v^dp~04CgVTWbKNS^G_4sd8L?Qu0Q0>o!xW&sHnuv zIiqLW1v>nO^+?Ff@kn3mMN86#1sr2y=Esn|d>yhypS<1fDe$~c?I}(De^OtoWu~T( z=hW;<6vV_ISVVe(hdD%tuCYB1(d29MvLj-P>!kLU#oayM_rTy`owCP>!a=QPlw7M# zqhyCpOAj2IoEp*_geo#dPddO5YDv=ez?tO>M|JOg))Y?>Z=M7-iH-Gr$q7dC_+6Tj1jTz_Hob@TWjdPwoI2i0T> z8|9i}ZD&Tsz-S@-8t6mVV+d^hWA-;K19tC%)TqG8&QHNs{>(ai z#y0dASE5_;zT0@Jt3UH2E0PrLch3_h`@w~|dvF%j6k}vd5SE6tR>cfU?%tsA-(4)k zl{@C$kCeXj69WA}+Q6g^Yj8?83fgbG_)esZUQ4f+Srng%Q{oa{*kW5d4;?A8z>Nlm zU(TMGD~`_kAK5&gJx{#!nY?#1pM5=F5@p@=h28ri?*;McSS&##O+nL)2;I3kuyf;( zGW%j+=Q5|TY8+v!5usB1%Qc3{cQ0VqvKC(vf4`D-Gz20d6%S6o!QAtIImnl^Ewwp+ zUqq<-uK_pz5yJdeC%3jzaxgX)a5lFxGIsd)RFL(ZIfwjhB){DCxN_S9?gz;b^TSUF z4YUyyqEQRaXQl;FMvIdrwaJNC`@ru;3@^$mp-Fr_RutbnqcDbVPE=(*sip|FC9!es z@5jdWywf&ky%kkJ=a@i&W6ad%apN@R*IW13Gudy$7UMkeoieaxc;(t$E?R9^?V5NU zxz_tZbz4F?i`+90FjTcz;GYuw^qp+yMU+zp9wP3>s7iB!XXT0yedsvdJ7s(XM+btg zI;ZV{Q!IMNl0GLbU0odcQ4GMB`!=(#eHJ~~0odCowoLRux+BraP!x{op~<(<$J{04 z1jS%Rauh)@Uv)E$YTztPYk{7a<-#0NMm6krGHZ_S1|D26THR_Dq|!~eP86u9fi|Nx zFs-O$$7TL}n!a0(-mF~IGnp4z#B&7nh9^VFXf6;=RX^Z7Kx^xeA^mW{l2$+EGGHCEbTJoPbqxEXQQFrggh_5-pFHe2|r3 zCRc3t#RsUlNUjHn>LYf4JX+Ssu0I2}IkB5)fjgcc26={>QAtzr?t>a3LQlz%(!xha zo+u0iqu-TVL7D8T`(;(EviV#Ye3)MHTJJ|ZBN4fd89VUrj6xjK36U)#IOX`f`e2f77u63#I9h4f&6Y``J?`elcZIMO#88l>Ai z3#6G~&^ILBVNh%^(3jYAHS9jaO0$|eWISc87JiGql5IsSPZ})lr6@bp%ocfWr`P5> z*Vhd8Xr1T;qZ&KU=kBLCD&1g_RFmScti&^MqHaD9Ek^dM_UXnLrM9tZDEz{es{_F% z@mw;`Ve^mznYcS_vlVIl{*Y(iO3nf^|( zFEfY%*=*zq^`ili?=NyQ1K+^;Mp%U*#=#h-s-yDZv2wAi#?znj^&J;IAXX|WBvZrfF%#VI+b>HdE3FlThku0BGQTSBYvK%_f=6`KhTEbY>r72W1 z?OCbjWlNHe!bu0#pW}jD&E96ARaPQ zUW0l4Jq4e&@?{cT$2(-iyFtb1p}Wym>YJdn^7o4@VpWf|1secKjMSXvu&u+Ve!kTW zsj`%^XhozAH~p|yMsRN0+oNQAh1(y~PF2a5C8bRm;&9bIkMR*=5h>xO|SMdd$cpvHB+F@6$VwlNfrS(hN(Nz8lWQz7w;~HT_NMK#< zVy%q@W1h959C20{g)xPgJJ{ z@E!Q;8a0eN8}m>Pt!N;9Z+VVz=oNLluE?=WqSYNizqw!My!M92=!L(2@Uudqqf-VK z{*UFXaG1kSX2*06(NDN9v`SObr1&fGyD3+*rVw+w9CYv3S00Kd856K=QYpeTB~i_HBb?Trr~bNy~W}w zf;q>_f|DCo{dr}OuD1+Sqb34M$`@_waiN~u^!1jl)I85S{y&p#uUQ&*>o>fH{9oD5 z{|K=C(+?HRt?jIg)vT@l-3qJzzxxRH6ElRlNc2MlgyXf5l3IiyW5qx~VFdn?Qj85V z#c65x_q7;?6WOWU^t39c6*aR$Fm)6+)XFcs?h?uqu79myBGV;;%JpTo9jBkNc#hkT zr|^BhZYh6rKkEqk^)$It?xjz4n6LK+TCU#gbg*OM)R`DIvGZ73UPB~mGaN5i zkde}+>8s`v@BrkPW1S;gqEXYXB-9=gPa7cJv<*E5nEPxY63LpsV~92K*I5muMPXQX zQ-L{E-vlk~);Tc##|FAh$BZLB4hpEs^3K ztK%08>UpKoX_iL7#jX?2br_4(jAma<3nppL2&If=Vl9xk5TaaiZDBnY4&0jn%${ZyLF>PFjPU zw`bv`%c|393pRkjX=g7#T0mfn^QscMNDfY%?)fvy^6K9>vp&cSQR>yExd|ghM_sQd&(3pFAsiw9lczbRZO?v=pgWQ z-g`hU8=};c9O6=DD4ycas+F9;}r6q1bf6r$Y8I zTYO&QrSW2G_lT+0N7tX^+>y^Sd__kEVd}5Rd=#BAWK;_Qis=b+7CJ+vJq*tYCkVD8>;e#*?f4c+a?{;76;syB+Qck@hSkD+ zu5<>BlV7W(aEty*3_Y=UYbI7hQ{pj(5W))d|B7-=84{1~Mj?cEEuLCddON}(TO9|M zp0v`*HHQ2Po_y`|ctA|DG>E(~*}vRhx`nEqVq8x%Zls+&rlEoFK%Lf@eWNXJ@hw~_ zAYl5Y zOlWp1@KrjG*m6kK>g@40|4_;(D2LlcSh(@$ExfZ*jN0C05u#h&05-@UKS2KJDhS;0 z5TM^(Mdv%)`+wI)CtT&UFcvJxKAHGjACJf>~d?i~PyWhB{p0d8!kA0_}`ikbKfyq;%u&n$?-vr_U z5!X!v`yJ!MU)udW104H$N2b_eC)*>F1NmyIYF4*u zy*wA&oRy`4|DN?KQh;SIWHKvTf=wB1s2M`sR;F3huv_}$W+u;LtYJcu#?wbHnZ(fG z5j1h&L=ID`!heT}r>-h$rC2D@>K7;zXo6l1Qt!$UC#n(F zrcA7n+bM}^!oqi8ROS6X#%?Hp!ykeeYQVaYn=q?7LtjtbiQ6xZrDjKnoX;~1#NKb6 zq%Jqiha=Onkun(0D*yKSgQbC;2Q6UGsD>F@FDv`0C||jcbpWXqF$q%6%;?+_S0D#1 z9Qk^XZ9>$f11La0MfC z+&!3*6SC7D{rc$@bW%K+K^gqoAOGtXt!7)wP+Pl{*>-72E77nk*s{ztIpsv{cTj_n zXnb^QsnN-jpr;A!an01`nNq_P!eE$`BvXA#a?B9uJTEBReX11*?#T)3TkFRsGXbjLSU_nZ^UfgRH0u3 zlgqWqczm8+MeiS$T(u9TGqo64m@z%k5X4_$iQ0#t>IM{>E5x;v*;PW!0C`Pt@!Dct zet(Tt>0#=Yq=TeTjR5~y62TO^E36ASh@U@yZFEB;+KdXU?4iJ?>z|l`fVGFs4e7C& zr*5bm^Fy>VU!0LqJ1XP)ZI}-@1=fk?UMkOHubr%sID^P0rK^+~VYHSCgw*d@pIJHg za}+g2a1GG*ZK5&sRlyAT>uV5 ztq(TLafOXn;s#cpAt3uBH9BS=c_ZFW-FjAxKRJksaMlh!?YUe(J3{6?>Nfce9M_UO z&lq0`^BHJOzo+Z6SFONab1t+2V=U=YCG3NSnS@=wL?daPsAKk|8cc^ueWTykRDxzQiT@(ISOz5r5muM zvPQWM3N&cE>zxQUwSL|>#^4=k23gQFdBYp_#na+wA~uQ<*z!eX`$1Fxy>U^`^ary= zT6zM;ti@ToROC^5i9u0ku3#FGO+M8A;`>`a4ign^aphO94s|)VRX}9O$AmF%ofzTK zkm^e-GkVO9IPNA}abJcU=p+|Qu~9CmbJ^#ZR%XvURHr@w5jx6!_WN(t;#7UnPEpj!s6Ab*o@J3Pq+Cq=_0lP14S!8 zvy&I}bcGRqQ4EUq7RmX<+LXWh#5H;Q4dHC7U{OknQ%9ug$whk5T z04=r4A=$8nCKFbl>MfL4$%p8cn4!>44ARx#Ov<3IX?!y~XXbXWXfIYvkFa zq0i3?x==mE$de)b#Kgj%ls9d!FA34S6@%~k;DR?kx_YWp+O4D#7M?bRTR$`>3~1Q z3do#kR-rYO;-pGt%2N4Hq0*TXp?meQq{^W!&ZCI%i&wl1$U>8Jrg$1Lu(4bnB5+9# z4lSn;+9C$DAhS}@P#3IBm?Wtz1n{%SuHgO3by=g_BE)etQe5#hR&TJFRS~j7rKwSx z?yn5$-Vvfhqi)hre-u2WnMMm3M8^XwG6vEoRgw$`t2PDsk9{)p^k6M7o!@} zL0c%0wMk4Qkw=+SMQ#euEx7k!^+0<^eJ$9x82t@Kg% zSJ0#6$tES5t=K1pgc9InSU3Dn)m-k3JpJo7$EX9dk0gXbAiKv^O3%;`m5Y)~=+h$` zF~$YY9O6@2;ipt6-R5f|=s434BM_GlOc(|Z7xIKC3P)dej|wHQJsf?L`YCBuf7t1D zv{C+H*3pi8!7Him#CfQ-{tk^`b8a=^O!**+8;pgW^u5=F;(M8-I$ z=JJEw%12K10$0rNp#K0h!Pyt$lz2Wr4DL}2CqFp!;rb%gOKwG!8ykkq=t@j2Uw5-8 zVVB#+p|}kCN@Z6ScSy@JoLp>U1_DaF(GFeJGLi()Eu+*2yj5`D@2AS2@dmlOSdC?l z8AeOzhbMeTuT-|Sz(q)rIBUf~UCF00H?eWMfDB)mx_cXXEEid*u8LZt7Rureuk>T+ zzT%9*7yPa%@1L2@Z40AV%x>JC3F>~5rK+LzgrkJdE5E=|QDKvq&g+=5hhklo+of{i zi8(c`Ek1?83O$`H;#ND}TnU&Ag8RJJv!rdxp?0c1>tm?4x#B+;Z^&RMUx*w52wAHs zdw~5qR}kQ^W|;lDnC((Ccg4y!CJp=}FQit2ID?rgnmcY!{grIMV^Q}594$X9_ktAX z4PvPi^c+awo^3gkfC*|T>7LHtFBLM}Vla-tDdC17enoP{r1p7hSe}!Fw$BHL;J4)N z@a2W0!-2-*W^b3mysow|`fjYGT5)f+K8f#k$Q^L<3V8xa>>=-*xcS(r3~07!^|mKE z>XuWa4Z=z9CTYj^>6HPDm5KZ! z$o5*)X8PZ@$Agb>R>Ryl?!TL7WDCGTX2%q|vcL==WbKaZbr?<4>dXaF!|4`Z89oOi z+mM;+B8oFc#s`p@IyRYP@HSqBr50w`0ld7vMm%J-2(rTW*qH|hp29tEs6puZU+KC2 zFbp#8@AmxO=DC$W$w0Q|Ewr3JD|YO*Y1!|numfk^k#ynRpru>p$tMZyf#loNe{Sxx z&5P-K-XNUME{>&nCu>LPTzjK3?>r(qC|)Egr&V-|vf_5h z;ujoAV4h2q&-vgWxSV~+JF0suy1#0&{xJ;K+N8!HPigniI0pp`3xZz7H|o|Vurr;? z*?Y~rz8O$t-P3tG+HCTP-OmtQ0qyv=p1%1z7k&KQPo^s8Jl#*|D(5uaPt+Aj*Pgz{ zjV>=ZFN)CyZPWBnuK2>$9{B9xz+ELf_e7|Uw5e*U$n;(jh*witaXoLVXilf7$=(eZGkBk>B?{b_#xGwqRQoZuZNVCPQg4BE** z#O#80ZU%lop+gt{fFEvG^1?f@JLcx^_%p@i`eg0ppsF2~?tap>xEJ#9H6h5CF;`IY z$gHnO%)#v*J9dehCO0|j9_GAtlltR@D|VAYV$ah4b3{I9TIkoHCs&^K_k{&3c5-tL zn%L#6k)np~_y=taz@60RvfHn$!PHerOG;7Ahz_3eB*RywfFYD|3BDFV{3e)_BqiIf zY{O6NgyxaO;meTf{WlP;J@?lM>b_TT{H=PbIW!JJ58tvz42M zlgFSbn#!}B&Y43;yuR;);B=8!4-VC1Yj`w)sPRSBCXebTix1lZpUqc8BooPyYz@cS zvbV@>#(U=;_c<>BY(l^*>e7U!!6n@d!u^OrnmWP8*H213CUPtiC&k>tYABb!nOS8{ zJF)u#;*9Yp8_{R64nR>#wOk>?tUR7Q8ZxGLF~~e9THqLvX5C+F>eD#G@7IjuHw0$2 zX%9N|V^+nwOi1-1LZ(x@tXbvc*5^xpNnN4ZDaTjkQnggQaodhFo5i(be#4$Y6IGNC za=^wIZ~;6bMDgv+{};asK&VZv*j|0#B~1GYqdHN&oti)OT{KSMlEgq7blgO z4xwVVl!{MK8+T{^XG1G=tBTp!`l?xFK%SkLX<<-gaOnWont*?2EM>-M$Vj`53r_{P&eM@Z>! z19y-`*zqUt)YQY^k4R|6JD(&}ouLh;n(Yg7^l^Ub*pFoGC3?C?@s8Bd*pKgb^twt` z%h|J26CGe;0&2vwJNiAFp`vAkhaGsNVUOo~?R9L3x#?IAt;-n7^pR*s$Hj2q^6RzB zTj#{JjxwBf_u_>Wh#E=lpN(26K#VD|3WHNQ3SoiN^&f@hq+qqQ>QWjMhm%bdMl2%R zM}qM6aMJkH;>4GU^LA+dPpc2V_X9tDN;v>P+A_k{psauS@r&b{v@ERuG& zK>kj0g4Scy-yalSB6nAyg)J7smj07GL?KkdGzP9Z_4O~_GWaBpvh;hos*d;HM*sgv zsQqifDlH{rYxI9@-IO&IHI*^6IUzF-?8svUa({zTrVwiZQ!FK;0e11MHZ~y3s zY5>pS`|`_jq(1H$Gf5C$o*xr4F3WaL8@vgNmUYl-S-BOkB0s>SqtupJ+CVSt&o@S(4AqK9#lSPZv&~a{r zx}u~q_3rhr4Q{lwo? z!C_?~LhI!T5&5;08QHw_@8<+VT8iGTyK7UW@V0N}|Md zhz5Z+chu3?HRobCXlgaCjfbVyUl~|q8)ee!WARV=wLK_aMGC6Z-Ju)o6Ik21ye;bG zMfD+QU9U%>(?);ET)OSZswp_0UPjr(hd1RgE9;F$)jfe}fScGvD?wLosgeTW_ba1~ z+sue`ofwwtsdFNB*&P*t_0xs#?mQ`bRHb|!i|h{tV=Z}5ruyeD`8;F13boF;+5=g( ztd1!LWnY#N(MX(d1fbtTe}9oVb?+48tFp0FP^QdO{PyGdWbHMbNT^=8`o+EH?7oq~ z*2`ybfe{dq}|fw2VN4Pf(Snj&^TZy&Gyzc%~}qwKYsY6HBl!#&hR%O;lMf38$XO5hJ2D| zZKTF1cfJML0@di*OX9Oj=oiM-G69p+sABJSlq;7_^)Pk%GiJYG_l`FHXV1dfbI#1L zWJ@m+bh6vKdr)FE=&;(Z8)}$YkPwPv_yCF14v4d6yjjo}zLvhv7uQd`X+uBJ!>ert zsVhg))rWGZAY>A%PdR1cxe7A+ULPq6BoX#GqS=zGFdCb!p?Wf=vUCAj1oLb6qGsdv z38g$HcXD8S6@S_t7qx!thU|4`hxQu_8&|vKfbLNQOqBSIA&KXc(&%l4q-B95g^=1K z_o!_FyoF4%Kf(eZLB&0BU!_;p8)f;63X+naJC&+Ryos9cnLLA?m)B%uD~Y)zRza?8 zVv7!+?(RCPw7c@&?#mSnGOA;5MQz5P@c&4Y&tbj;a^LjqIK+SZKK-xKq^hyOzc5Z> zhJQ_O^Lz;08HM(Aa3toE=>q0ZVDZ3>N_cJ%zP4FDE=DyO z_cc2Jq@?E`JW%wOCBI6wsH#j%jwjOo?7w{Of1CZi(J>ogG!6BoaN#&kGa3RqMsOU5 z-v_c{C{|XNV+~upO>)+YP2WKN>}T4mT8uDSf$sKX!f-RzlbMXC2U64G&+yM6TBigal}>MV9L$wskMU4>5d73gXdj|9>yF~*;&(>h6@TeO<{MZAPlxX z=Vi!%8Kkq$rqFj&Z1x$w8k2htIC{tkZhQ`J;te-u{kBj=F4#(M@gf%95yeu$Ttd&= zY#zRA2a7@?Q^r zA>k0MY;bSbc9@K>cK~?yE_(p|&h7Jz1T($TdAF=rHX*&p`jflc&Z_(X(E{JNplMhW zvtYs&aWW% zs8Yjw0crE_>@}#ZUqh?Zu{f{Qu{Pfkj}PMjA+dh3wMX;V`e8jdp26y=(dRGH1g?SR z?CxEay@TW`$%e2&N?sFu?2PW}`W()=*&9oSL7{_Vc6xUG+<)VE3@uTmL+@!gxHtHq z3=8XDf3MK#YdxaGAdRi6VymUD8!(D_Zt;p}0r9i*lSRr= zxOj0HLPD0wP|dgpAFBOhSJ_54<^K?NjxnMIQMzs0wr$(CZQHhO+ct08wrv}?t=pKM zNhW!Dc{A_lIe#iS*}Iaev)B5@B#A+2ZQ#SXrK6*FvUhewZ36|e=Z}psc83i!nhFcuR(nZN zlcT3^azP~Hekb?N!HZDT!d`uADjxu&C10wbsunMy{rr*^BH$K+TX>fc*7zn0l8T)Y6O9l0W?-)iDJ`~v`mwP zr2^-}&+wLI$%ciIpU@juPeb3wsM$aG&|TfFfLxVw^ElW_6!VvKP%Y>~<3qb>It2({ z)KIJ;MQL>k9P^6HNKlMv)G|_p>B*M|0+VE@r>G~iG}H9vV605=YEV>C0-nzklKQqv zbey>$x|nKgmiG@*s}2HmXX#fmSp)R!5LxqZsCo@{AIGrJ&TF~+zD}OA4C<3%pO{`D zXLc-<@n@X}I#W)xKMs*()}x(|QUIqD&C&8&2;t{3FyvpeRED+nAOLHv_x=##=&fUFL7cwK?Rk8B3_gp3 zUZKlr>vtRYem_l>$!O)PcM|gZg*`g~4_z}( z*#&-_9M5ueEZno{lFgJb8;G##^_ACE7jGcjm~0(6AXqs5Q|k!U^J@hUABfPRt8sPT zoSQJ+WYR6M=#tzzm(eh9-+|VVtLC(f2^k^p5@y{+;8C%&lOvmO>cBFo4hg+SY zKeQ2r?;m0D*xFC)3R>^FcBZ4oX0i2q_X(~8iX#_wyu_sIOzIss(S=RtS+;YK2rHE? z@Nzknbm+N7XeXoa2f%O-FHbE$FvU6iq&e@NJ!^|}BIwgV3ve^ez2zvwRDZ;t-tqF1BdoYeUq zEN%va7xeb!NBiw4JcT>}2N_i{YKP0?I!s`Tpl6#3oC%iq!OFgj#xB$cyWIip;J>;s$%4@fXT;n#u zSL;m2CDqosUy#RkVdy0`e?8E(QEiM^CsMb(FZdJ$9%9Lqf}iz7oYu~a(~#B}{lE}! zQo)%eN)C`M#a}uG`+=E}=>eQ~7bHo)I2XufZi#9reL$W2Bt7o4nWAYvV~*lyx>$d~ zetply&HKHYYz792;JEm=!EIAiH<01>r$1o_Hy7(+3g#VEBz$|aa7~yTsHV?2+z5p% z;7XwZ?K2!^Yz65KG>BA_E=(8G6WIW~UCM{@zeP(!G4iNL@o=2{cu zu5xTuBfIAW01g|9nt*cbalP||5l_Tne+6|wR#XY|66}sHjYFj3VGH2`EUXRq9xS_> z8Dy3bjKE29RveAfi?|AJGor~eY$F_%B7cr7a&^$)zyfKL1vi@wI2@H~bcHhV{ku(( zDgvir6XAkWOkN6&^LDE!%A9=ebaoG6>aSfp;heY+gZb@I0qcUQu92k)j*elK%{Un4 z<1C}F@!%qt_95CEJOg%WcZq-aDGsYz(E-MR6igz9K_{XT!ayicuO}zqTfl=3aMCFXijQ0$3scHe_V zr59kB>Qm4mrehu|k%%_h%Q$wt0i8pEtF02hN<^Ee_{q0p5I<&SQOh>U>a4)CJjkIR zWxLdJ^Z0R>za_yn&L~w(einP}2;rW95xpr;^;8th$vo@0r&?J1)-rEXq=R#z%rF=?vb+b*p zHju(ThHaU$yz(5hM`2*sT&Iy`y7_vwj&<}Y6t2jIR(Eae$fM;+4fE_=P zcKI;=&fV+B=oThy=k8vLonKeaKf1me6&3#MgKx)J0(&~6GC$nt?Z88k#lt6?$~Q0} zj?(!XyBxLamGft5kkI4-3}(SfOcT^zv_uJ8p-JooQ$>)Bu4rVd%tO2z8XpOoc{uYv zrf^DQ`Qy-6`BV6Fsjm0kw59GH89fH_as$Pk9~7>Sjtw=eKubHE;NlUb=-Qi)am0TZ zl42Ik4uWQn1)!3UH(c*Clk$Va(e2Rw+2!#t1XF@Fy_vqfBuO&NMFfWMa(}2?Y^2iB z_VX#z0|)bMkn|kdvn;1Po~g?a)qjdQ0JQPgW?W=#{8Le$0~2XE_LEE<09jFqtL-9G zZf1v73Un+d8%;nW#b8k09mc5YU97Fdnft%jtRG(1b~M3=@xGms3v64~m z*L)|K5|Pq&r8kvMUERwG=>U5nWrmYe$0un*Dg!!0TbI0r0rt_M_BpI0eXFP@lc6;) zX`v(+-U3)AsQVtxU96M$#|5@^#$gO<>$3tFrk>YMx;jx}Uh8!g`U7QkBYCp~*Id)& zbDFJ3nkTTH2gy{Q5lwd9hvyjMU)KBh3hP{D?}ItC+i{IaRP_Yw%yt{I$~#K=amd$yKzgOClQ2XEaCd*D7UZSPM@Z_C8oL~z^T*M zR@IhiXEhZS^%b}Fle&&`!@7wb+oa<&o~pKa9j+?ixKHo|QLDFj1?5qmf^rJLJCqyx zcR_$@Vuk3rkA-eYj$K;qs9?^`(x0!B+$XwV-)rBH9d*^S9=1LrCYEksxlekuC_h&n zgSzKZUY#KmVbnT(3Des{xHa?>_kLL!-S)Y_uS5~b{DeK`6TS|8g(}bv#)cwP%e_qD zvI0mhD8?oMOr9n^;DqvNU;(3Y<}{BASp7FDK<#sC&pkSxj5V#vL!wNlYUo|CyEc@$6^R1)+VZF zF~9;^TVhz(@NOY;ETCQwLOJJXh;vvVT5d8;_X$%jEI)20vrXndU1XlL-P+tR{TBJ2 zPT)snxk!n~c<_7&@`oF$2hBzNTV&*b6}2EYAuU zw&M)X0@EXBo8BDauRG3q;XY`7_~X~XSBB0Uzx7-B45fbTD7nY1gwG*-h|P&53=0@< z-f-w`%mD6m#*l#?IG5U&JoFTjKMw%T&5`%2i%3Ub;7O!8kZXTr4*ld>4aQ3uPh_!6ukv+Reew_63HkQ7beKI%XrguDDQlbF_$(Wa!Q4f`Bj4PIos8%fwP_WB6jPso)IYKK+%m8@u^}=(h@VQX}>E%YmjYC6u);?NG z5i;7_PI4HXPh~3NsMszbL3aU4Ee&urP-iKJ!EiZ4?Mh_F3wH`}YVN}mZce7NIFaQ< z-O>ogptLIYr0goc)p>t1fFW7ORGe3MDkAOD)2x*{eO{v<#}8 zZbh+o=ZR?g<|}8zoKPR1M9ZpvE5j@IGaiwo&oUA&4Rv9 z`~R$4p5)6&!TRqxgz$erwA@=4*!$;VI#r?ibQj}$SoKt54Uc`ckjY!Qv~BP~A*&Oa zYT!e?t=Z4$2Rw<_vaMj{T{b1pLFLa?8q5|ytvN5D%jvDtZz|P1gJWI8Tk4{LeX8at z=fbZ*Xttr>QOfNOGToI4umbZC+lK7esvXjCQp!gXpc&z8$}E&`*3uIZkZv$$`%As) zRB-DIzBbqV(=?#mUE9x`+OZ+T6|HM$d3L+^ZJb^oCL z;z%nUBP+kkPMI6l)q7i9$HTBn_Y&?_|AA8@BYs_cthTmw4A7u$)40N(U;_7ZRb}ru zE@lXx+bpElw5n^R&9L1zW~Op;`~@NVzNf5HGH1W%mU-ptqrGbfw`%Ejpb<0@eY;)U zx!kpp`+5|Pfb;wD6N2TLw`EV^A6UeS5iJ5=!HCtsVaMJW0a~(RLLbg4ns3>!y8L!MUO`uIku6H%rdr+tvZ$tXLSA*ZE(`$IN-F z&kFKiv%LTJ5rii_*o%DiQJ5E444)>FDrOJs3j9huhwp_|D<4yC7PmwB<)vVD@wqBL z+lBaHh%~QEJ_8oNDdUgLyf{lMh|;jUesiBg#5)g$*`4@v zRG}W&0wj5cN~xZ#4k$ceQ&m?oKegeNd@1)zzU(vlv-(>g8vbG?*9|z6^BNfkw3MR1 zvOUJ7Yx_w^0I`2AkY``zZcz7C8hxErg_Q_G!~n^r3k_d4#i~?FDc$UGWs`v!ae^9zw^uJU9=A=!Lh` zi*wzW%o^j~=E~}f!Y4j)uFu%d5Tcn7EGk?OJmTCpeq1$jzbhAt#!|b_y;J(Q6N%$% zz*p)J!wDheU-oVMwH`64#hnSsnM3~S`85?LMr({)QrIzPt?5Sz9`j+I_`%2Xj59`$ z*(guE@N!7TxeX6K+EY&Oxn$$K^8NRxj5AA**_QikL;c5V>t7)EJ)ZQ*IgwY-M&Eo9 zQ^eBv{jbg4bhX)1W&jVk{0~t$pV+koIxmYmI%ZtYu>!cI;K!g|6^Dd$GG6H=S*o9% za58aE>j43+JU=~cdAdUzm9OlkiEkU5uWwQ>C;u0acZDWS$?B8r%ks<93|3Zs`X@ML zH$FDiX3(BlL#_p;hBma~@_uC=nG*20J;=l}0V~9V5CILuaaZ6ATUPWHP-o6;SR`E` zuEv)rS9o0!>Jw>AXX5HStP9_c6s-%iZISLDRpx|-C;}@>C))vk5<};Lj6Tj2bh- z^=pf+iUMoQ1c@L5G%cOoLoUGuO~fwFOK-w1(zR53(&ne8_+?upsa#Ds;gAz5mPmWs zq1h(Af_N%cC?=$)r1)h$QEGn`h`c{_edkaa*x+Ji^Hy)b3$OM7m-?W~_(8(_|4tTLXLm#viz8|8kI) z^Eds4z_p#cDjdr}$0;JWet7h{sQkp^>ZPwzDUO^Q#UE-KYurLExR+etQ_jj;K%?+N z!_Zj$G4_JPcD-6z&vo}3-F=6ZF;lQ!4*DE=LKaLAbo~w)dg?CWjFS=He6n9`=zh|F znwPGARRRPfy9(UX0zP77kcI!;#d0_?{oQ2ZtKB6S3IEmg?)q_40KJRM0av02EJr(_ z@`E$`1NQuoK7ElgT&mBH?9Dq(Ys&Vml}xuf6srpYTy&XV$oK0kO3@-fYF(bsX|ZG? zEb5=v8$cp+B_;8bDn}syDrgt^3Qh7pu)b!9v{MYT0xj2=%9mhHncluWfIho*evhZu^;m71%7>_TfXtN zD)(0a$I;H<3&`|`u>OM3J2akYHbpZWhs@lg>(t56`XoL#Vw8EbL2->d$TB~oAQ0Q1 z1w7YF4C7Wi12rm<2a`9KCpR0owA9vbe*H9bgL;TBIpt zQRH03%K}(*M^ltkq2V~ycu5s{0EuO+;7V3{Yu11kea9*bL_frdoq|}`K#A9L+@$l% ziYm7pTg0!#?TZ$}EhzQmHS&rd-;)#z%h2=|NnvT+W*)YI$WxqaCh?Y-uB5(3bcPm> zT*Oms#d&l0ftOi#fW_xF_7bXBaL{y zhGG`U{(VxGl&<($Nd@O@kBeLy^^&HNl?f)V(Tbc@So5)N3`A8OO)*L^r)GagrFhMj zOVIQ(K2S{le%7f6H@&0jj!`RA`AB-^AiZRZ=kZf7~4sTGw&ZQ z&s-rcNW~PoCW{)3Sx&RKgszzKp zR8ALmI`YhU=}xh1RP8ljPp?u6EA>N@cZ-GWS`)0A9EK@YS;a-vv!CE2 zwc&5o3!2PZIEvTsMxWfFP+Np>z}sUPEX69st1`auNM5fRISnZL18)(Nf&qCCv)@>l zCg_+(a4WHxs&CYJV~}2q$o3r8=^n4|QQv}U@g8z}TWZSIzv+c>%oF#*bFaPjwC_nO zf6%@e)}9?API(DP#sL_fX;iO%hYA^w4tPr~{HwlZiyY zmpjCdT!+Mp-dp<6XbR()<O=HH|o< zOs@Gqv>nAmU*N z>pePGH+Em7l|#yn%EDK<+q5f|9tcHU2l)X$x(~XFcAT4LH(5p9BPVINS15M~e%xfl zcmC_&0VQ4lFK-0OJ2%z|4|LpHdh7$pJ)o04pb_&(xWfuk1Pn61q0Gj6%UcQ)Z0AA& zH>(u>7T=Lu7XV)k@|E7b{T;6@AQMW%r;Zz5K3xVu-^97>{-1wApvVcyyk+1IjsrO3CPsV@yp$ZG)2A`uLl_9yuQv`5$F3Uw>U&e(l@5ae6Fo|U zO%LQSc|IasEyB6u6G$MW{Cf}0mqhWRtag8!flr19*Fx-H|iZIzlFg_sTNiMR> zNhK1SXbnpoOVHL@*$f2jg|_{7WmfiE~RJ>R2dXjM04@Gs)Qkb;yslDSu>8f$@S?N#ZPn;OoRsM;%v9_CgA z#(_K=;mb>4%dJa>2c(@_H6yPKVKS}D0enbbfN2yzJ+K`HsC9pDEd#FSOL>j6_%IZR zIlcxKM?{mlBQEz9V(#A!vPkr7n^~0B^C)iW!oT$M8dO-RSoc{+B<^=@xM(HzX&VmOz2vP$1#b=hJQ<7={lG&t0w<d^&m&MfcA*z;w`4MY8CKR= z46TBxv@>{5dUpCe>D-|`Pn^zAb_K6=r6)z@dW~T88S=XYtVk<+nG);m>phRJteWN; z26OinP9zf2TUbaRW!|DrsHjw1roeubkIPKs z$u{5d=*N{qaRN$Z3cETX)ut$0=JMojYwVDfD~C^)PW8`O7m}bKKcH`lScT z{-`1uTPM!^$b8Jp>-4woyXq;Ty@Ya3(Mf`Do*KVqMPBk#MO}fy>qHohMj9Ai02rF~ z%Xl1klh%oKxE;)dMKE=BP`JL_rz4Q+I5hs1XUTVH`VpE~!KK3s@pizBqq$-}5LX-2Qy&NE{>ywC z#CvzlNp6%jddIi3!X-E7Vp$#7p{14_{FE<-e_st&Wo=I5_Cj%FWM`jp6sW{Y4a%{R zQ|jF%{u|Lg6jU1q*xG8#I%q{Lnk{K{%;?9%EnIr#p{nTt%%ut08@q$&Ds`@p#aDoZ?!w{P!Rkz1?Ie!6oQxkQX9`p&0JT>H{;e zCrtVcQP~6Y^8*EQSkHpptw;4Ec6QV&+AF8`4)%VM{YUpZw=TtgiS8Y4C-~~?L6?hU zueki=-xKjWycgWs*-78|*#qzg0@4@z?Z0Djq49XaPXB0>cYH>fJOttsb0d`7u|q!~ z7Ou^qPy*Sm=+xRSW}&@QYjK(p4^~a?L$pri@)WpDIqqeY+XJXTkyO_)rs{0YgFLec z=?{cs94`It;SbW263e%ILGgbYut&R`MSmIYC~d{`C`Y?K3Nr2=H4xLWtgP@$&u3MB zum>ryOK=*1mP;!vtvYWs59a=u^HNwbtJsAFP3oyw*cvR|r}&H=aiL;e9%k(0IK##BJu(x4{((Wee8aaAdkaw&d%;ZSFak3miu zTYQVqBJ85lc9U$4AtkWd+cSpJg)++H=RD^trq zfH2m9npQL$na24Qp4)S|4QQTHMfcL6ymHy2#DJyg)4TI)Gbv0n{_*T#uBbcJ()Iw%;3ecm;bc z&v#_Bg>Z4XKsu0`UC12voU}3)vdc$JJRTs^|CAjZ44_r^{7I}Q_&5&L~_KcnXcblsgAE-)delr>=g`M z&;$K4co%E_c1Yv*XGAGi5jhZC(nRI{m=5b4nrw8f7^e8JV+rhJJdZkP)&qQHbj{&r zqA97# zc(@zzi?-Q~yXmsRW=k?C_XE?iYR_f#*==bGmd3QJPOs*+Oz603jF3M%F}$G8UU8z8 zKaF@HQdujNhe(CkQ_g{o@J>RAuDz0ei@Pr}bh~-`YMp}B16*}BD6X15x=LI6DJq_t zJCslkSIuoxull*_YYN#3G0k?dypL-DRu?h)ZG3S+|`9<;yDPBlfKa{LbmzYQWYP( zqs0q68it8&b5JLP5J_Nh;}aY-nz(3og<8#C0hfoc{(H$8r_n*-^juczJzo<(Z#M$DYJ7<-8oQY1uH?~)%Khu+>zh&FH^)DYxM{sw z)arr!=NT!#tOt7vSQpQiQ;9bf715n92{2XzRRuLUx9EW8SCR2XLx z#Zsb-aRJwnLvGX)!(O70C>%N}w~{d*Zw4-@Q>*MTL;Gp`N?)KknQ5gwOQQ0@)wl4P zLAnpe67t7gsYdjd@^myp-Cp2bNrdwqc0Y{DYkp0|9Lvh1ZMn(uNwwYzJ3$7Q*cb;O zaa4h!I4c+iuZXh-qpjC5GikL~R)KX=O&Lr$&#?o})L&PUHBA^ZGA$W1zR^Z>#+Z#M zL>i^k^KW5P+DIl1>ttiV3~jhkwRw{`QdI+5cmJ;FLeshf5j6(nPCDpA;B4_IAduPEMwFF0zIWzYlJ|lJoy|bEc|D|K`eK@V3DR6$aQM-i00lTNHwffXiXB zO;_`U0#z0zMyMKiC<#gqn}`lyxesxt%&y9QcDf9+h3RrRff$>W44yX3M7f_%4M{l{+!N7W+mI znaQxrtq+Ao&9)HVr$tl8Xv*L~ufmj8J1?&_L?phrR2oMqLmi55^2Ub-BF437+kp~S z+uqWn2YCo|X}(#lQIBOV^IWy{aQV|^Ozk8#1N!-o5S1W_y8?N-hTDiv29+WEIvWJo1_cTOgQL)f=XPm zgi$xok0%B_VhWVZXc0{|!pQF*R9&92`4+dG9csM2OXGV{5bpqvwk{TFgEmApLQ$(s zD*yco!4*NcJqE*R(qYCpwk@=+eoVbM>rZLNi_R1gyBBhS@q#8Fv(K%wUMU*4pv$w|2CUw%aMH?ZP==0|A% zr%q6@v^8~hF|_@^yC7C&M}A2G`Gq0M#g~JZ|&xv54(Lephkefa}~u;FnkWf`@W|TYS*z~I87~R8xln`qrn_w zj^gm6%yHk8MX-A?BfyZ7KX}aVH`YHbXC!O;4JtT(H)mi4U)(dSV2)1BDw<9K$|q@^ z#0EO2$ZaLN4-d~p_q(hl;?WLFfWUZS=4u&hDVQS2koFoI3MMjX302)v6-A?+I;0y0jps-a zTG{=~(9H}aB>n+9n%(bT{}@on&P>_s^z7BEg56Z`*$5F-W**TSgTwpBrzCcM zf^0$pZU(piQzjgS#tYv1h#BSF_8EsEiZN-K0A*=k^K~zJa4A=yeEtw$q)$-LuCab--#ef$?OW?R9=!cR zF#nQb{2#FYWT2{*AXhAZYuM+1ji~tl19pu64cN)r{{nWt*(HpUI!Hp;6oe^40OYhS zZyW@rR8>?7L>(sz6y{r+oZ6ghP3*9TeFTmNqktrQDsZ0wekew6#t2qG>rK3mW~VpV znEpTa&)5N74Y0=;YUD&oJehY4f5wzTDtQm`zH+?hQkHs+3;O3doZ@wHTiv@=$m-~E z6Q#l?8?jrJ`4Q<&q%7rfKwggX?BNd+d+_1gCodUM+C)f>*@mK6`AeP071l}XL5Nrz z1B@^|X|fm`(g^J=y+>!$?1pWNQo{;gXTyGtxv@{F;#(_yj9GMp{mL4>edFQE9`Fa!>9k z5{9ltc$em5f&N9h5BqLVEB{@S%~9_@3HHc&`)pLerTs?gskDl?6aY!29)lcV%X#nG z$hxt}=Bne1`ecw3MY(q5i~$GhgsJtHn;ZtSTY}qh>2$ub=l&FyY;|wO7vcgvESqYk;nm68uIUsGqBM@g-xUKUqT0_skAD=3$V!$mFJYuyn$uyyU!nwpM zFEpirXHJuPC7zr?ra8O&W|vh=?^!^JwbT+TtdX`*$~j=t!rbt^p_UYJ3!;YkE9cmg zo2tA;$Z3r^G$SL|xb+!hU7pIIo4ZtOVSNRrTJe`w1M9{BH#^I_Dx@y|KP%04dB+z0 zx6%gxSK5y3|Fv5xnVQ*{8oOB9+x;J*9Hm;&2EUp)K62({?#vDW50H#;Vjfsep=AJM z7!U|72_iBCm;$C>OOF8)vN;)q#-2rV{N^h8Tg4Nqipm{g&>sumgW|27&70fH)}79s z9j$-st9D&(EwX)&d)(~5*qw-a?nKWI@7d?sbFT9@cklh$nH-`bs=s_OPFWGP@ULdB zYY`%x+8e3Rp}T4190q$pgaS*G{uPTe^T8d&4U}pqaJ+Rgy7jhSx$M3f_`V$xx$|vO zfv17h#)aWtjO;bZfCB}R)G8Ba_SDrjv{RxZxD6U?Heq0`!_0D1@` z?P_Jhrwn!2V?&GMOha1P=rs1_B^HV4MaxU8v*?D@SYdIKM`R2Nnh|2U!7ff9{AY)GgJCOwS;C_j$WYV@B z6oCM9ZwiSpFW1C}I+5TXha^U@J_Z-P}Todsi&pml>{F~TxQVN;sF zkfGc$8P`q9k>!zVMnk@F1UaN zLH}O4bmrLsSj@YIjbqov*rg0_mM_V=Fuwue;tEsAE-GS^`t}wq`E96g;YF|$E3@25sWyTa_3&2>SPC2YM{DF-XIV)Fdn4)|ccfLoF{8jTkb~@1)fJ{7Lo$ z4GU~q$5KE)hD}mmo-(h^QUef=OD5jxNdoI(Ny5b|CN2ZeCdw^@OIU0gCmD<92?TfL zT(WFXW|yQ^ZtR@0veYrNK}dql+;ONow&^c37cX^XefXj4KmlU>ufD>cPiD;ZvK$#g z3rDayAL2}mu`TZ+S22ASOq zP+<;}fsRsE6EZ_vxNVZ_AChJop^wQn=lNgP4{*ph?3WsbF0LhQt{v%D$?I>$a(v0& z)5?384m%B7oR$+z<5&w0kkoe$J6>rkTkGJ){eAuCJ7DSjs?{<{3?F z=6O?9=~<<&M)_qfmzb$-P(W-KL_49x{Y?!E^dL}epy21&1)RBmGI?fHUnq5KxZRV} z6Er7I$G7Z%P&_WwxxRkSFc>hk#QEFB;ZVjO_PM*o`c_ZgWtPD%GYhME`);DCL40d+ z$lab$`ex=-Rydi^tMPJLdt}6rZ(C_PhjTF6H<|keJEWS(y0p?vz7 zd@mtqrSYyG(I$p`O$enh=1eNhs*M)u;b0l8CeX6e87?!3>CWqc8w9J!k|D#SXC=3t zcHT5zrQ=dt?IR_!&q=_Tv0RZRu&*u{6I?l6QxBQI=x*B5_*_;dY~z;|PkbEblx3Jh zZa2pQ0OfZSx#Cj*i7pIh)I$>qX z&99dv*mM08DdtSFcyVCPTyv|QaWQ!v88^U&63;G`=44e+;!Uw%_)EK;LIiG}H+*nm^t(mQ9y`z)VMN_T z-Gxd=G`AUixMg$~JusJ^3Q1SCSxb?+x@gA$U3JYSr^hLVh1*Nu4?c}T{cbS@VRG5v zc_ek}IE(M{GD|J^wh8VjQi=~rd>o16a<*AYqG7#_TI933Q_u`+EBA!<{KAvRMViV;q6j_v5h!dzC9{_-}?q=~Alrf)g z6Vi|TvD1VSXUQ~#0+Z$eQK^F)UglXhT{mex&PN01K8M=nk)6^sr~5(X?>+#?gmmxn+6zGl`N=2bgBn?L*sQ<%7$my$Q^| z7hrcR4)Zb}uGcH+*2x(Q@nM|H_jKpit9qoZRJ81n2+NvlpWJHc7VDwYUnWmQt$%N6t};w;$t~(O302+9kdme1;3P0Hz5*0~t(o?m=rJEI(=C7P9rT+n2L&EmtS#qUU3!3Hl>XwA ziNEs0o(O>rHSJm5m5=r+Z#Kh_uCBCdR6)t;o zycv7?t77Axrc)Btrtj<#OJ7a=>_xe#_zmx9U~~mW&SQf(G_*WtPy^wYX=|HvV? zpiSm)OXu?a55~>{s;ca3;3(axgmj01bR&%@-7VeSA|Tx$2ug!Af*>FvAuR$bEsY>4 zA}V3f-(hB);pyf5zdP&AV$E9fd;9D<=j^l3eGN=#sXjrh2OK$NIsE&4Is8sHs2s&4 zd|E!zJ34c&7gM}s;pUi<*ZIlo_f73?!nYBp*6G#H`2#FdQaMcpITd0O=CAxe6MC5A zIDTLtX0Cj(nudcjqY*&VSDPrQGs6C1|MuIP#cuNKaqU0+WUS6DYw(djMH|wKy>ocw z4*D~@HT6`-wyzskb}>k9@s;Pycd1!Fk_D z$LX-a-dg0gp>O!8{KnpgbtTJnDtxw%L52?-f3F zo>JtjRp0`5x?IYL;newSj>wj%%-Bl<{1P^(3yo>%C75~yL6d5!vvK#?k~fJv1UILp zwO0)7NWbLW_|UXN8=HaU(;~y!={jPA^IYmlaOd5oksUI_5h-I|ie{W?qarNV6pP-A z!zd3cNjrVx-boZEI9v3{uzjyC%`NK{p2*fYzLVL3`tGL%92EIqBs{n=htlsLp$@%A><3JZDj=Jc+m z7m@oh)wE!ic}w?;eQkg4<3;sdwB!@J+WnRU@ydH;2}gkz7M726>3cS56OT}J2$K&o zG5Pkgh+o}Nj9SalRK#8E3)y#Ki)Nv5_|c@IWgl;cRP}C^qo;hUsffIwN}Tv%O6aU; z4rc7}`oQ*b)`QzOA91Rn@AY80Ws@%XHy9=uJftA=!I5<0_)^>|{zMV?oP2NeMntYm zAO}TJ)ef5KCUg3@Ia=GIjfToY@v92NgIson#ere+fgRTEv+^QqKG$nMTNU3&nZ@vb zJZ9J@*oBU`^nGCh41N}5$isXY+%_47=L6}oL`s1xNoRY zmfpAb3@!bQutY_5{yw>AZQCuIc`?e+V;R1h1B9mLum?Y+(}UIt_SB-CEWI4r7aLd) znI3*??yxqWYfndK<*4hfRap4Km0X5lq)Pr~`^xq?cEdi)y1nJ=hfS_eR2eJrO8D<9 zn6o5VP$|w2soDf@C~B`P82Dab)yzyu^AZ<}(X=Blj_lB`w!pw)bPn?|X zrTKU5lP@Wqql+NjZ>km%V#evbYzCZB$_X& zbh*T=h-V(XN=sUGk3EMMwE0EQD*G3; z>LzXvTnWpP|3subIrbU_3BO6jS`GtO6RY^M>W=?`w0x9#_Ynq-vE{{Q>qE0j zPY<-Ox!=e=mX~MVpbsP9A$e`sGO=aGQC||A^Rm3TKRIce-{TT;d}A>))re{DqmU)B z-u3sX*aImw`&q?y6sten5(k6|OE+0sx1l^q{n+n|B`aLPN`3`9W^=1Y8wyS_p@&z4u@W-<)WYSV+> z?btH;P$jW5TcG;}1%Id_+he&S9$`E$W-IdXx#kAAa{YWPzD4vY!_VeN)4n5hZ_6ET z)?Rq_G-d0MBNC6U6(QYUNYwIUZfgtM)9RcUHP#;ne2ubFJ?=K59b%a6-{?ffUC?V? zSbQx=9VJ<2-(1+CKKj1p=bJ`6XkaM&Wm`xzsLY3KAfm>OV>PTfa&?RQds(GdpJ>ND z;rd0Vi^N}vwS>!ab2cds7?5hh-mP$M>m*=pB=|7Rg)LNuy<2M9r7Za5l-~KHRQ!nB zacRFTL;ee*Z}mzT2T9z|K)&w^DOW7#N1v!~UAgrVbZ@0}|6uEx<)k*oMB6%)$kiX3 z7!)ksR3iJrh1$B+ac*Zot#hyhqouvz@x5;G>dJE^%hz)gg6pp~q>d^~jUgU9L{52G zZmgQ@p!4P&&$D(9^vlB-4OV@Syl=zA~=yEa*`H3iDKBPuPtU0UR0)>C4c=csNs zvf$&;+b0`Cnn}{cbT@HOMy^*0PgQWMykd|_H~FF<&yS*1DC=j;MOn|5^O31JB(s?i zQHO+14=F=#!~42&`s*i~>kFy@(n{RUN7yIz&nKl?ZyysOAjEz;qN8y3=~>~+m2DVk3&;gchOErgpL{Xx zXdit=&_i@CRD7t~SVSCk74yQCdp|#fTyahi8Ct<053axUuH4sCBva#+_(DJl`@L5NS z46dNZ5>{%-2WFlf!(5`5%#6v*1}H@)YpF-h1eb2-x_AjvnuX_fDs`wLxo#)qj$fWG z&()&1Thg`8N}k2_LHKpA)hg-b?LBP{o*TIsJ{?t&3}m)TpQEy5q6JNiZ=q{1J$y<( zTM=1!kb?Fo|J#Hs?mHo>VONs%IC_s4msH3^*)8?Y_xfEzqBZ=U#Y}*2b!{GNb^{A# zxy^Q*@oiBp^Go?MxiM^)=ylcOK$Kmgezl3qUbfcE0g`LF@Aua12Qgw*KV3l?WkH*~ z@k!}`)$-mh#(kcd(%4LsRDL?*pLq*81z(7ka~NX_eXd783cUSn?)8(>{MKNUsV4S^Aff=*G_sXmSl~ zO5J~b&GFm8UvH4@{el+}1Iqe=a1W5KK)JQGr!A+HgR{B4t&_Eaqp7u}ikZ8m8)yjl z+tK6HUO5p;;yv!I*!ZbHu!z@&)G=b5K%DT*1QQ+a+>LN@DYqWSX38f_dSCR{Cj}e6 zBKt`y&$#t65a323QnmeXLGfh_M_{^KTip0|_N~_bxBXR4gwOfe?N}i^iMa%uGDtxg z%%rhKR}()cQEz!!e5j9@A-12biu9Jv40>~={*8CTrLTkDvIptj zi0zewQKFO%Te=_p^lRQq#FKvZIJ&8zL8y(PD-*xMWOy%{A$(cG(eXK}vK+XFvT@6- zz=DXIX#BztFXOGDWMSt~r&wP@wK~o9gSz%XzUe)kxnYMC4Bat@$t&vBt;d3BJ?DgW zdWY^5mneiEmQcCmcvSJfpnM^|E0`$8M~#arwTJj3!Qk$_3Boe%vLq|J8#)B+|pQYNwJsm_`3Hq5s~jBUVoYV#w7meMo~S^rFz@E_*;D#OtZQY zY40vf?b;_<3kGh{Z1u}$iiOU)zRUOcx;R}WBwe4Kuk*yXASn>V()*F`-HW_7%OO{p z`!u4riJn$Iev5@o_#W9Xlc0s~USPEO(4>rBdH>>U24cY{y7eArF|Ex6w2Xp0OJ?It zEM*qnMu+BM8)Tihc#I1CYOF@(9{vv~xyh0O=!I`?ExDwHJCiQjUH!`mOVWj=n1B-+ z!981oe3Rpe6Uuwqo;p~%uYd9;$G2CR($Z3}IFSg>hw?daVWFE6CMro?Btb(*p+|}F z!W&^r@X4G?FC{YybKw0+45j}_OV9iS^JH=!ElfIxw|Px+g%zmyfIhbGKbhY6kjFb>&TL$R;7&DLrmNnOKtVj zdwu6YvyFv0S@qD5&GH#s?aN}GE+Zq%oYWou#Q>B}y!#Xisp zKcD+GxJ9OH){`x5i|IBkJ{|eDh~PxlJ6$8>SNs&4vsvtO1?F-0@?+AtZxmISS8Ij) zg(snm;KjMMv$059A}D&0UB9K+=`Yts#qW2)waz{-+vaj!>f-^%B2!^YHLr`<*29c% zQeF3ER;-x9^rIfvEs&)YE76zmTr^Et-eIfRZ!2P@vHrFp_s*-!ZWRTEz-qQdhG?OVc+yR$H{}j9utn1D7`qIg*Dn~7Lh3>= zV4+*9N$oeOmOmdpbnexI$9OFlG#?GA_XxP$%qq2Lb+}`Zb#+09vbw$pNs2Wq)g@Sf z$YC>LIt^o3$n^PyUzjr6qX)JnskOrecQ1L_DcDukdWQzfU1_9_tD24c{2fi(B3u|j zw!7)grH>PRymVn=}cVTS|`frD~KHBjun+sk|FBq_w z-uB8*nB$?Pgo#l&1~|(&q~~4tBXOO%9uQZ#F?cTNaTI*9sfn{4MJRZ@B{O}w#!!a1ljW%A zqf3e2ygEbphk`HBO&olv^N%+?8sz2>llS{_M=lU>;0RW>e?_0v6866tUY)FhO~)K^ zb#N`+N0%MD3yX9=S9$yeI@@^)M@pty2?1LVb3eku6tvQjHy)T0q&P2v#WnISbiCKb zcV&8ZU8bS%p34P}E)r?NCZ?IG*wt9~K(gCUcg=X5W3NqN`@{%#5LG%N%va_)&Q4G3F6?K<=N$M4pr{qz2r{;=h(tD+g^2WR86EWyZb)-#>p1r9tbIbS`(YZKZk@5LU)Mpe3<6Mj5bP zIKTfxZ=s-*pgUrXAC1dY5i}wmtO7VyT zscn!D_7)Xl2{^9oAo=HdowL4tnWfQA;$s5Fo1Qc_Ck%_tdq`JHPv zhbctCWLT02y5mUm!BsohM*Ng%yKX*#C7{6lY+UB(h-V0`WqPnH>x?A(&lzH2#C|4s~ z16~tG?yR#cWVQLypgGA|M-^V-kL8`s+m7h7AJogbY)0ey?c$T%sg}rYx^olfN^C>x zD8e}Y->CRJ2$oyHr)8NaKP)9z9OS1X7_$q4LIzAqg70*bor(cm^anPgE zrQ@fzQ(`Yt>~CdtTkC!QDF4u%E{8pg%yp3ud*aJubDXl+&oGrWM=*(+THwMQ`+3qLPC2rlKRg%rF?!F$rx`|ckkQBgKnBEkpeo>s7coR7lfEHY=|EQ zUGuPRD{5HZUTo^V>vU)lq?UJNL#_8y!?)Sl22aWNZty5NVV7~cWo-Sm$Bs(3`K3k; zCyo*H*KPUFE4Ku;(yen`r%ym~esY10zf}iW!*MDrS2upkOLnlhG5c~$Y#|2E9hFsV z^83YX9_dQ%2-6oeA4OU}Rl~1peE8_)M(~~%iO@ry^xg3f#9JQa{a2UP>1W#CEbzS- z3|HDpaL3Kg^rM@5ys5NSoh9p#r8>sdcpSA>W>nhB+rk&XSY7hbd?;R*Xe7LNwpYX_ zMR%8<_vK+4%Zty0w*=-`e%=R@tTYr3R+{+|{opbAcTxzLl$}o&k|RXrpddG279rOw$c# z)mdxhVu=TD^M8pM4{I6Wp60OJP|L#IGRJG-iKUG16`RK!luvecs{KYlWhCtFj{EF3 z;>XM4qH6+S{=3;$MZ=NH#qZZ96O9W0q=F zXzD#Yg0nr~8SvmvQMEe)cK9UW>uV$Wg)eLmv=+zNV;Q$uyV<6tT$mbP<)>TTh^h(kxLwc9ztPxOv;+j;#Uo+!jLHRYRqvZBN=>uxeu@DGoGoU3@Y(^6S; zKbs6hH=Dv<$P3?j-O8UKk<|L0rMj^+9!eNsAN@MzsAdtN0h9BRz_Av3w=(AZqza$3BmSZdpX=9j2@I zF!kV?k3me+L0ZB~qvWSCywjA`mXrkt&B2spt_gChaaun%QHe&-e^NZ=*HxDOph$*} zLb&-L$ew^h#PY)pRfnbhx>{+Ws;SP;AB$K}iNNp1mb5S1)jAOjvS{WZWnZs27jxTY z>L?&aU`J0h$?DOI60flZM%7p3yh5JDLbzD@x5Rko-pbwpzn)6_Xu##(z-#c6=;uj$KPqgfkj#*J<2qo<(p>$TnhK^d4b|h(`Sqh=1b; z@oL|5ht}@}Pgw}ljkM=1Iyd_E7)6|P#s!32n(6{tl<irP^!zw>l^B+qKfr2)ZC*Z8$NwVOjloXa5K}2KITCoC8#wBsoivuB>iA0L=g~b;F7+LiDUpTFH zOs#OFnCs{XP9l?tK6UZv&a$9-UY~+P_rX|qS!z^tBr=Csc7R^>CCh#*){U0)kGBg9t3q2x+#UFt#Zm6Xv4g?BxQCvh>_;Z`l#OfKM=T!+=Raz6 zy}oJkqm_2!Ag*X=F6ha?!{OCyV#f$|;wtU0QTCj}($v~Ijt7ZVtwh<2?hL2Q3nQan z4raRK^ZI;zODNR}wd)~gHu=0j;!zkAJLR=bnzlU|Y9mwRVIuT`C&S3YI#$#Qncwaf zaJC)iT=|j`S#XC&szr+4AG`M`YaxLp>Ka*2WC4vW-5PI!gGNcD)_Bp%VN*nWxd%n= z3}xL0QlA>3!)+s@%&Y++qs$DF>u3*{NV8BAL%@9y9PHJ0bVVT>f>ov~e5s#q5}KJ( z5$xe9d=!nvWJdg+$ZSfPD|1WJttDCi0tHW{=X;KH)}f(Si+C>#M>~@m8w7KTy*7E9 zQx?ZwJZ;<^m9C)7u5YbNA!eC!5=R`lvDH98M6H)sQi>~CIXUQ0IbQICs z9W_xoLa=vus_WHc-2R$o7n@I^mOfu!s!?H(694!X>#O8fmv`Nbo*RzyzIpqmtjQ;i zEp1bCbA`pFJvN!bts!c>j6Cbr>eu>fub&1D)TTOx6)a3EJl7oJEzeN9pF4F6jp+M( zJN8=7&2IJE#HcrtEq(dLLT=g5{fpB)?7Fy8 zSjNvwi4>o#4b+fgK5vWUe6bbs_)`>93nlAQyDI5Y!oCN0X%WA=qK-wOGn&O*GTERo z`<~@lFe2Pz8P(P&T}lUVf!GEVw&&Y=d-ZPKguL`vu4U+d|fcWN2=IO_C5N?~W(aNuip z)|EFS&Bac*d_{Gs>hUYn82A@)U)K{)X=U`{4tNp?dZ|_2zp!d=m#5mPNEfj70?E{z z#?1CkZh3`+zAY}5P1k^mNvJTFl-@9!r0`W!q_@_ad=2+u zoC(Ep!PNSSQyPY2y`?N1;hewy(`!qrKF*K$*{qUjO9V%#UY84dX}7}-nPq-U4sDgY z+k{u{DW}c6QjtR8RCE?sdRTa%@oXxbyD5);*hEE--b5N- z|2|`0bB{MJTbBFnPum1u8^KjViq3p?u8K`c(!Si+^ehI(9r!cRGu~BlcCQQzdQi3B zuQt5+c`KlT-O2wpORQL38)K2UgD)fIzz!|K^Q*T$aH$=j1=~{v`(4F;kEq#mcbLU5 z;rcEYbt7ivXXQs#?u6gdUvZX#7djZ4MPN-lO};7htxslybtPrfLV7?zTTdq5v*E%0 zE?T;%yQaCec$Vm6A1ZZk?)beJ-o7%X;4@yb#AmkSM8<0+VEahnb<2b(9(FB`Ow7xL zN|T$HH-&v)>t1+NA!UHus&BKN^E|syt?~m&01nH}t@Q4QN11meR#R;73!a1$DFnWy z->Fa&uJ-lS^Q<#Zc-gPx%Ne|5<)Nsq$Hb$uuYaVX&)?d;iSt#Cja2dTa(;<-tIWdM zf&hJMi&kF=-j`?;y{{t?`$8;LdL-|p;%{Hl`alu5kLdGJ8oY%1+!j^w(q!*gB7w@m zrTZAw4;P(xy%TEiSk@EnX)e8Dlq1aBRFmu8du}0qgm|p>4VBceSQqaYUGLLC{HNo; zZvIp~#WkV=XE`d&@Xm4|Z%v%8H`4!eYXWrA|MRm%TuKxK>iQ3fhovy$GrC!y7#7^C z8)TKeHW)b`_p}DHpKNkHbWX}HY(5BgJ|AyUDd9Y8&|Z5sX_k=t%EFhcEdhvM5wgRu zq&=DMUmQ|J3QDmd?Ruv```kK8R5@#^E{wc$SVVlD>UnA<(>rB>G5jCj;-6TSkn~kW z(&Gx#M)zJ7pRhEEzKjz5QGUf)!}NkeoX_<9GL-_uH^OkERqjv3)o(?x8nh<}pPH0RFq?4HR!mo_U8ata zy`cFvL!NfqqVAyAr(XKULt{@py7exbqTJfLyv6-Yy`n(=++d1wN0$WC$qx}d zez{b9i@|%Fe0-)`Xk~Ul_oqdmz?#t&bY9N7AOnj@3&PC4%Naj0v|noOhw?6cCgsX9 zJ;HRd{)$RCEtSZJJ+h$N7s*mWcB+uCz03+c5<|rv#K+1-!{=5 zbt|>{{QS^y)o*oOC}N2YY3J5e-O4;J`=E9ux>|KYwRxZWltDF5RZZV@S+L6@hsB1kjA-}R z;jf2=C^N68=xtO;_&fJ{iZV6!eQ-}3R#ax z<0{@Aucg_g&qFT8CSSB2$T%F*f{>^(46EptCB9G2DBs#?tLy7+L(44TUTLPktLV%X zpW0V<(YHWqZ!rJf^OBlTm$Ze7ri{f)7b&QM@UC7I-0HSK@f~7%*t?*S)R{Tr>5!4Z z#$&|eLUE|2GZK^hx~K+=grqB>&B>ND-pE_;A%}>;YbE<w{iEt};Ji5K7ZHcuO%TtQY5XA_sVP zfx&27io<~Vyv+B;HpgjXQ2cy@vHp|nLAWzge9PoOTV|KR6K)ML>`$*ZDK_4b=jDfL z2(!BI&g5^~qaMnAQtS;0+V`OzB+p_B0t%ZGz4ZnfLSoNY&)TNjra;*FJTidN5M z`!@8cm?!DBw=)fLU!_SpqIemw+{qii?VaK#6iUcSI#_hCAa*_TO8m#$Zxyc&r>^)i zwnl@!{{$hgcXR02F2?OK7hkIj);E_#vKI_nwprY2Kd~nqvt`i_%3`dhJ#Wj{3@#nZ zrk6q8P!&;-Ey5x4m%)Wn%XJMjXwrmE2qZsxvhRmtW@?fbD^ zx%w<&xL;}RaJuH?78(@prtM>mzuJwzU`T_`p|h`lTuQb6L0^)qHT->Ah1QH;xWPR} z`{z=fWR2G8;zlpBi23@M9w7{N&WYc9c3rEY3j2^=%VPK3gG-tZw-g$%_fojRY&&cp zF7x;)2gV7;kj_{dPof<~9E3RWn?5Mw{JM;TQs$A&qQo$OkG{#^!O@@uj%>CuTJ)u( ztZ!@j_R41sT$yV)pW=}7#6%7J7^izSW>Y>j>IEzSXJY3SM_>zN4X3LL(i2ct;?Ec6X!{zIp_Pmp~@1#^OUkbkR$QxNXu} z6ZaE@zlHDTH+^ZE`?l(L?uw+&Ls=4v+VW?j)m+sTHLl!GYBR@uDZ<+yn;Nhu&ysN< zQ=)T2E~}e+{$;R!ZUaa19==g0VCn) zv->fws(AOj?Hd&1+~Tt&A_k9BUb7ul%OZ6kN+lHgNi8*9>~ao}n;s{5&nQPw>wGeS zuwiQ#b%E&t=^Q)_kwZ-&%FbGv>i=BsR1~{`D2eA!sHDB92lX&VDQ7EU?c0}%e0kGcFJ2H1jd?R3o*;k8h;nC^ir(Yqc4^Pg_FE6kv%HNm z(28v@X13bYN1zcuxH^OE*HQBHIGJnz)|$Vnl1c}-5{npSS04Nm8I3X$^_xk)P8@M0 zI=UTg`2Iy5!)m7_FSgcKNl~bG00&`pd~f$anBc)roJ+b)%Fb}4EqUo{W- zwau8>^LP*L{k5hx7~hqr2fF?SSKstdKC0<#;VkQ8Zs~GzMf4x7Cr&F*OW=hcM-gIG zASy8PqK8QdF-Y3c`=*tuBbUousEw5VoK+bd7fU>8U*f}75$xNJ_*J#!X}qj0fhVVz zmG$u<_^r>)wI7IqM!XIdXlw%9gS5@~EpxH8JNYY7!WuX4eCxXZfVDD_L396I?fA~~ z`Q}?hsQSjytGA_S2y%B0;?d~Db0|L%eh{H)Ee^hRJLt1dz-2cQ4q8S3dqJZ)=-TD) zXe@q=rn#7yj)jHjgf`S+b>010&DKHqWF1rLQMqqs+aj-@a)_Qk4PA%b{_(eZG|bxX zb9;BZ_VbDjzQu>0GyTBr2d!x`5 zyhqZ|kg5fVitrZM%^7+JLaw>) z8|J7r#ATVG{O}QITVbwx9j0ZBH*1|2!|uS;rN32lgnAN)u9_q^FM(4i!fozgf^rNw zQ(Fg5H_P9ABP?lOnNX6byLBx~pM#bNsi1JV+A&D`YcLT$%RGY&K@j7|o3FS#7QAkJ zKQI1(@p_aTRa*pi_N3EPb@^byQ+J{5!xpgL8knPMJ$HHDl0-Z_%3Z7enQK2EyR$*5 z)k?jE)>G`3UA_0k5A@%5qFss2?6Gz;PWqOAU|>)`dfh!McVH=;)!x!6mG|A9+V(bM z9*>mLM%&&-tp|J=sA|Vt;R$-R*kL?7&H|R+?9y-VM%OgveJri*n@{1k43~K1+mrt_ zpEI1Kk<_;=yWJN>AJ!W8H%>H|i6%{$SBxP0)Xy>*w4e zKX&|kHLSZ;U3gWc-(8T zardH3vN)WCCXvJANb;U(4ScHDPtW_-|A4jc&Y;2awiG^L&A7^w!3caL{5-V@QrQnG z!K1|PJN+daxkI%6r2Zk3WWKG!x%H3YhKWDOBY2k}JGunh@KR?B#-SPoX+;xN`zhdn6LR5+7cc$)l%N$(BofgMC$n?jY^c-BbgTgRH zAHR=E;gLe6a(rJvmPzzrZNgJ|XxU{UlD_cC>g%z}1?0FSla6x?>jc=UQ^-;8c(|9` z6YM#*Udvvrpw1z@XQKX+$I5+9&2H;<<{^tOgY6R6mg7{CR929a z)zIWnl9PQ+gA-zcCu2ImB6m>@M^z_^Nm4p3St&fn$~$Q1`~2XSSN176&nlM^>K<5I zv$VMAD(p!Qu6s)|GX8j`hDO#&D6?x! zl^cTZb^ssM8|TgwArK*;fqx=>tR$kp+1ulRFdqS*lTIzz=g*#4n4E8C>Sg*n@WT5n zvPh6KTETBelfuwU!B_kNykU8Z0}At+F~UX<{O@+)Lkoks0^a-b2gb$J+#a+tvfDaY zIYaXB6a-Z=fQ3+ig(zTnlTf^0y}wYR;jf?yM*u___>jS%PR9I)Xv&@r4v-?Hk$Zb` z0-am}Vx25#{(IuVlKKyhg1V)PgQ>YCBP$G zhKaB$A^HM{7YK|=^B)iVMMeyP)UW}a(;DV(wk{r!5@yd<-y8zCM1X_U8V7KbKO~d_ zFX@5gv=<=D=>s9Gz~`j)^4}wW34-Hh>Ei6>0a{%-6%?JV6>Z%;ESF8~8Y^-~Y00wl;o%gNT& z^VHG~ikgR2Z1@Ba`GApObFK4r2#~GE**bGdx>>ucn!16`eMq2^1rOaa@D5!t-BH5~ zwB89CsBP)yezK2)GN>wY;@wYxh7M@3;(c_5rYZcYenXqJAsONDWY>8BKCscnxC4z;*Oa?v>ELn(k6gD|{$y=L26(VDOlAl)PtMfcL+X}?rKFpi=`C;>$;A_% z3Q}n{NY4YdGjJnVc|*a1@!yjJyg? z@Wu7EmrPv4LqL$?{XMw#lA!S#t`29%BYwBhaTU<61<(N9DOtgqqW~JGXzOGN$NT}I z=11FL=yJFS2w-+P^(2)*19kuQPbpg`Q@30Hy=D_CrVdJ{;w6EkxuE_BYpcZyXgGXd zT}QNhrUir@0;>z~p3qZ|$1`Z2#w~Z?QPR#1CvW+3c7qdI11+^x$skmnfp%dP!O#ND zh6&eyGM_Vakp1kxG2G9JfWVsbyCN>OLBmfLLub3eGKXydE^t~xFm1r*c;0nrp32`9 zEGR3{n#)ASVj&=8gV_-_$0uw+z*OD-xpDrGDlAg?pCvw4}toI;L3Sg9H#pSnj z{3qGK!UN#*+aBux5(S;sx9+~0>H#Lr1#ZZ4%3*-VA3|Wvot->PLBzPZgV_h9BMnRF zNf!L_Ae%n$#4w;YSghr_bAM)`Q&>%B7v+=nD5U-j5V7X(0^P|12Zx-j~CN6v=NJIaa4N|Qpg~s=O067DJ#bCit*x-W|Elurjsd-v@LMuTG z#oWRW=rsjwKw-hh?C`-LUw|3Z!`2ddvDBD{P~8bsKnbLVHChcfe6RvoW@^|tL;IIH zx_!3;kXIV`7l`&#Pd^WQ?1{^Q*D6D*m*CFp$|{hJlEBgl)@u_4;Zqef-7KLsYwA$0 zvkQ2I7k+oI`y%j}XCjYLxMV#*DsVylUCj4V@R4Un!QF!KJr`i3DKLE4t?47V|G~5b z*HPUq6+r$o1v3+*VtHd8l~MpY6`;eerM$1fr)z*}fP1K~c)2J2?%O7OW-wlcP7QCUPw22lX<2>th!nz9Of zs-&5_hnuOn$6v}gIX;7$1{FLQgJMB~hy<%O*pPdw@jvhR7uq3e94>6hZT0MZ)`0fGIL(LmRj5q#t?MF3&BA(ilUdEONrcti})GprJ( zP2i&eQr5}C4Z6~KS>dTZEkHVett9LsTf`hb_LszP{rHM%5;`j|9Wnmzk=<+!AAd3z zL2Dv^hW1SY5IG2>O4!&Fc7)FalhHr#p@)|=`Pb7)a)1G=L7@>gX|lTg55B3n4YUjU zQsd!_1M8uI#0fhcQQU^ll=3tKaiMWmrKmMOgH8SPB@}vp`!N`DI2bYwjD#y-4fV&y^)CrkL4TdI z1tf0Mi}dOom>fxE5fJEMaPL#k!ktw7&)!scy~o%?0s>Zn*#MSE0M_)-0%~|TyXcsD znA~X)JIRyV}BM)m~&h7|DoK^*Nm1QR6O zvlE404Qr_kknJUyzF@ZJV14+S6rbHm~aFF@eDEzLM}l@yho zEubgC>+1-^SU|EFkR@Q#m=VbtI1O7z7YEDh?q`&SQ#k^V%R$KCf|4VwJ({S`ApTP% zJ6ne;_d~ZA!Jxwc7uFM-na^PUEv2p_^hs-4n5X8#elIb7Wjh0?V`+A_fKkS> z{wI6;llDj0QjUif1n*a48kFy0Whx9j2Khk@tfOdQf0_NoeFjc{Z ziJvP34R!@)?qKTf{=0l_B}44TV6>xPw6LqC6)#94=w~=-jevyVfALKUk)6$5V#pEM;9~`{lPiY zA2>d}cv=Lc=m8&C=Te%5;QZT20;w&ZmxAt(!N3}TwrEcc4FN&o9R%!`wm>};+F4m9 zlgdtJuzoO5*a<>(9)btc^>9{v?iBFRJpeo-pg7o-#qI)J=06AikOS98AwL%n2HXNZ zu$6`0x+4e;rzZ}d-DM<`d8-%B$a-qr0osREICL6%rKVX`wEx( zYt0WyP5m%m^%#_Fm;YEI=x)QMp0s>G65DHJ3rIoUTLW^!7C5wz{}++|hOC>Lvzw|j zDB+)x4Z}m1Tv&m_o^-H*){Ik6|9Qkeqv$^egJ|1VC+=~)`gOOMQ^1xO@-6ox@|(m*4j zkGkpqKKcfG5NOp_)mM&mg6}yoJnWf(5*_sSoNvP3YfiME2k(D(7ZD{Dj@k!{obpq z0X}$B*l)>%UK*OOZfR}lbK)QWoHs*aV`cAu2m$H49n=SCVBF)iEHw64I}s%Ar^3|s zRbV3=ASpErE*oqI{s=JO!2cZ4L(<;aziHuR_5ruy0I3f)+QaTa1EI4Dv`)pn z*s1ct;NO864p!XqRA~CYc83PKFn(DE$5{y3z(}ym%G^w7AWU+ChN_0>isS;%ya6`k zux3)ohK8zZ{9Aa3)av7=Qhg0TlmkTA1&=6D2UPUH!2Pr1u!J7?Q;9Vz430AXc_0Y^y{a%nn zKd;)j0C2>a2a*yj(XSbrc&ZH(k{EYUr&1F5rxh4G*vOuG6yHD-p}Vpm;amHz?S^2f zzIgHX0Qfip4gas*4-z=&Gx4$vMASpDSAkvMrOZJ9|LW0)1hF_65U7DjI$4wfU7mVk z79l|Y^g5lDm-esK&ffwwe?WsZ3+plj?bntRtQwup*pkHZ)9%xOfu;e|z()GF6$s)V z-QAFbUS4IpEDFRtX()mnwBttz=&wPak={$Rq|8Mvi#tVI``)mf3!Suky3L9=BbpM0>SE~f1HoCvu;Q+%%=m0AW*jv3yb@cDn=0yya>f)xC6wihE}+ZzC*#LOQ_`?=nn2@>hZnKXpnAscvh-X$~SF_8w3Q#peqgFCylSLdkHdq`0ziwC?PfT^N#$> zFz^MN;0s_i(*l}<|JbaU|J$t0c}g>U(86a>Dd`KJXdKuS)}A>x;j>S*E<;M494MxK zvaex#cw z03;=t6=7YYI|M%V-+L2~;_mzOq@EOtQh)^+VbWf36nySqw-F$j7v^fBHURTvw+QQQ zX`ns!{~6X?XT){PkXdRt(C_;{a>ioZ{~Iml<_>K_^vsIvFMw_U_O-AJu}P2y;pHXp4ZpS2Lk5iBqA zI|T3ab$>|tq7X23%Yl5mc&BS#&;rs#cHIDND+uR7w80A4dJg$dGo5}Z z3Z#HDsy#@iKtNf*ge`1+L4x4@x)ch@LM>*U82~I#Fj#t+!DgaBuuduO%qdNhBj5#) z%n6JZHhVuugCPFZmj7=bJ^c+C(=%E&9A0*%IDyzF2P++B7)hrv;c?;5HKsjZSatzb z2Y5NGZL;y;QB}@x#+%P2J~sgglYukBM$GDkvv{Xl>LHC}5-w+W7Z|7otW6nUhW>;4 zEa-n12_TVArtj9BSZNPf33fR;Nq-jdRAc>F#^7=U zx*Vu)ZMw2tQ>{XijO0Owypua!C>J-ep{LpN%%K8B`#;O#_s*r4+%PZ&EE+xD?JBH{ z1ck-h*Ou5YiCX&u)toxIv|fdm%N^dt{i7pa@59lbbm`c5)Ce-0HY!iYt=}GR1f~VS zzLI#l)u+Tw>pa*i|Mh6lhPOPX>tK^U-TQz-qFc&B8QDW#o}jXG_+6|O4d5oBsi1E# zmIn=hWj%#$&oN)HL#QC~qe8WhYiFVkzi8pNB1P#I;cnRAZ_+{tTca!F356AleA2P{ z!Z{G!jW4ZxyE+Vz^NI+T?=jQ5(L=D+jIA!s|BB-VsCmBmXmdBbyfFy2O@O9skDoDs z)w8|L?+*7XGdRrdt)6neT?4^$~2^?E1PPxAD3 z%I&La1#|%pRO~kUaF6R^=;r+o#J; zW&*g@I(ag#oy5?+S_V<4*JNEI546SRO!~a9GqWRh8+OmZVq-ED7Zn$!+~}&=EPnn6 DfW@{R From 0d258ccf9197c4269ffad47a5304c869587b3bc6 Mon Sep 17 00:00:00 2001 From: GRosenberg Date: Wed, 23 Nov 2016 22:48:28 -0800 Subject: [PATCH 17/20] Add CommonMark, TxtMark, & PegDown as builtin converters. --- plugin/.classpath | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugin/.classpath b/plugin/.classpath index 1d62615..a24f30e 100644 --- a/plugin/.classpath +++ b/plugin/.classpath @@ -1,14 +1,14 @@ - - - + + + From 855af60fd6d68072300b86dc56530169993964a7 Mon Sep 17 00:00:00 2001 From: GRosenberg Date: Fri, 25 Nov 2016 11:33:07 -0800 Subject: [PATCH 18/20] Code cleanup. --- feature/feature.xml | 6 + plugin/META-INF/MANIFEST.MF | 8 +- plugin/plugin.xml | 144 ++++++++++-------- plugin/pom.xml | 4 +- plugin/src/winterwell/markdown/Log.java | 4 +- .../{Activator.java => MarkdownUIPlugin.java} | 8 +- .../markdown/commands/ExportHTML.java | 1 + .../markdown/commands/FormatParagraph.java | 1 + .../markdown/commands/OpenMdView.java | 36 ++--- .../ActionBarContributor.java | 4 +- .../markdown/editors/MDConfiguration.java | 49 ++---- .../markdown/editors/MDScanner.java | 4 +- .../markdown/editors/MarkdownEditor.java | 4 +- .../markdown/pagemodel/MarkdownPage.java | 4 +- .../markdown/pagemodel/MdConverter.java | 4 +- .../preferences/PrefPageColoring.java | 4 +- .../markdown/preferences/PrefPageGeneral.java | 4 +- .../markdown/preferences/PrefPageStyles.java | 6 +- .../markdown/preferences/PrefsInit.java | 6 +- .../markdown/views/MarkdownPreview.java | 38 ++--- pom.xml | 2 +- 21 files changed, 175 insertions(+), 166 deletions(-) rename plugin/src/winterwell/markdown/{Activator.java => MarkdownUIPlugin.java} (76%) rename plugin/src/winterwell/markdown/{commands => editors}/ActionBarContributor.java (90%) diff --git a/feature/feature.xml b/feature/feature.xml index 3bc4b55..6dc7dbc 100644 --- a/feature/feature.xml +++ b/feature/feature.xml @@ -50,6 +50,12 @@ The Markdown syntax is copyright (c) 2004, John Gruber. It is used under a BSD-s + + + + + + + + + name="LitCoffee Markdown Editor"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + - - - - - - - - + point="org.eclipse.ui.keywords"> + + - diff --git a/plugin/pom.xml b/plugin/pom.xml index 24c3986..6bc3001 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -14,8 +14,8 @@ winterwell.markdown eclipse-plugin - Markdown Editor - Markdown Editor + Markdown Editor plugin + Markdown Editor plugin diff --git a/plugin/src/winterwell/markdown/Log.java b/plugin/src/winterwell/markdown/Log.java index 70c18b9..ebf8cd6 100644 --- a/plugin/src/winterwell/markdown/Log.java +++ b/plugin/src/winterwell/markdown/Log.java @@ -32,11 +32,11 @@ public static void log(int severity, int code, String message, Throwable excepti } public static IStatus createStatus(int severity, int code, String message, Throwable exception) { - return new Status(severity, Activator.PLUGIN_ID, code, message, exception); + return new Status(severity, MarkdownUIPlugin.PLUGIN_ID, code, message, exception); } public static void log(IStatus status) { - ILog log = Activator.getDefault().getLog(); + ILog log = MarkdownUIPlugin.getDefault().getLog(); log.log(status); } } diff --git a/plugin/src/winterwell/markdown/Activator.java b/plugin/src/winterwell/markdown/MarkdownUIPlugin.java similarity index 76% rename from plugin/src/winterwell/markdown/Activator.java rename to plugin/src/winterwell/markdown/MarkdownUIPlugin.java index e951c54..a8e03ea 100755 --- a/plugin/src/winterwell/markdown/Activator.java +++ b/plugin/src/winterwell/markdown/MarkdownUIPlugin.java @@ -6,15 +6,15 @@ /** * The activator class controls the plug-in life cycle */ -public class Activator extends AbstractUIPlugin { +public class MarkdownUIPlugin extends AbstractUIPlugin { // The plug-in ID public static final String PLUGIN_ID = "winterwell.markdown"; // The shared instance - private static Activator plugin; + private static MarkdownUIPlugin plugin; - public Activator() {} + public MarkdownUIPlugin() {} public void start(BundleContext context) throws Exception { super.start(context); @@ -29,7 +29,7 @@ public void stop(BundleContext context) throws Exception { /** * Returns the shared instance */ - public static Activator getDefault() { + public static MarkdownUIPlugin getDefault() { return plugin; } } diff --git a/plugin/src/winterwell/markdown/commands/ExportHTML.java b/plugin/src/winterwell/markdown/commands/ExportHTML.java index 91e1751..7d57df2 100755 --- a/plugin/src/winterwell/markdown/commands/ExportHTML.java +++ b/plugin/src/winterwell/markdown/commands/ExportHTML.java @@ -8,6 +8,7 @@ import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IPathEditorInput; +import winterwell.markdown.editors.ActionBarContributor; import winterwell.markdown.editors.MarkdownEditor; import winterwell.markdown.util.FileUtils; diff --git a/plugin/src/winterwell/markdown/commands/FormatParagraph.java b/plugin/src/winterwell/markdown/commands/FormatParagraph.java index 48aeb4c..ba2ffb8 100755 --- a/plugin/src/winterwell/markdown/commands/FormatParagraph.java +++ b/plugin/src/winterwell/markdown/commands/FormatParagraph.java @@ -15,6 +15,7 @@ import org.eclipse.jface.text.source.ISourceViewer; import winterwell.markdown.Log; +import winterwell.markdown.editors.ActionBarContributor; import winterwell.markdown.editors.MarkdownEditor; import winterwell.markdown.pagemodel.MarkdownFormatter; import winterwell.markdown.pagemodel.MarkdownPage; diff --git a/plugin/src/winterwell/markdown/commands/OpenMdView.java b/plugin/src/winterwell/markdown/commands/OpenMdView.java index 7b64db4..827ad8d 100644 --- a/plugin/src/winterwell/markdown/commands/OpenMdView.java +++ b/plugin/src/winterwell/markdown/commands/OpenMdView.java @@ -3,37 +3,39 @@ import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.swt.widgets.Display; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.dialogs.ErrorDialog; +import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PartInitException; import org.eclipse.ui.handlers.HandlerUtil; import winterwell.markdown.Log; +import winterwell.markdown.MarkdownUIPlugin; +import winterwell.markdown.views.MarkdownPreview; public class OpenMdView extends AbstractHandler { @Override public Object execute(final ExecutionEvent event) throws ExecutionException { try { - IWorkbenchPage activePage = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage(); - String mdViewId = "winterwell.markdown.views.MarkdownPreview"; - IViewPart mdView = activePage.showView(mdViewId); - activePage.activate(mdView); - } catch (PartInitException e) { - showError(e); - } catch (Exception e) { - showError(e); - } + IWorkbenchPage activePage = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage(); + IViewPart mdView = activePage.showView(MarkdownPreview.ID); + activePage.activate(mdView); + } catch (Exception e) { + showError(event, e); + } return null; } - private void showError(Exception e) { - String title = "Exception while opening Markdown View"; - String message = title+" (winterwell.markdown.views.MarkdownPreview)" - +"\nCheck Error Log View"; + private void showError(ExecutionEvent event, Exception e) { + String title = "Exception while opening Markdown Preview"; + String message = title + " (" + MarkdownPreview.ID + ")" + "\nCheck Error Log"; Log.error(message, e); - MessageDialog.openError(Display.getDefault().getActiveShell(), title , message); + + Shell shell = HandlerUtil.getActiveShell(event); + IStatus status = new Status(IStatus.ERROR, MarkdownUIPlugin.PLUGIN_ID, message, e); + ErrorDialog.openError(shell, title, message, status, 0); } } diff --git a/plugin/src/winterwell/markdown/commands/ActionBarContributor.java b/plugin/src/winterwell/markdown/editors/ActionBarContributor.java similarity index 90% rename from plugin/src/winterwell/markdown/commands/ActionBarContributor.java rename to plugin/src/winterwell/markdown/editors/ActionBarContributor.java index a1634f3..1794314 100755 --- a/plugin/src/winterwell/markdown/commands/ActionBarContributor.java +++ b/plugin/src/winterwell/markdown/editors/ActionBarContributor.java @@ -1,10 +1,12 @@ -package winterwell.markdown.commands; +package winterwell.markdown.editors; import org.eclipse.jface.action.IMenuManager; import org.eclipse.ui.IActionBars; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.editors.text.TextEditorActionContributor; +import winterwell.markdown.commands.ExportHTML; +import winterwell.markdown.commands.FormatParagraph; import winterwell.markdown.views.MarkdownPreview; public class ActionBarContributor extends TextEditorActionContributor { diff --git a/plugin/src/winterwell/markdown/editors/MDConfiguration.java b/plugin/src/winterwell/markdown/editors/MDConfiguration.java index b36f83c..b564f3d 100755 --- a/plugin/src/winterwell/markdown/editors/MDConfiguration.java +++ b/plugin/src/winterwell/markdown/editors/MDConfiguration.java @@ -22,7 +22,7 @@ public MDConfiguration(ColorManager colorManager, IPreferenceStore prefStore) { @Override public IPresentationReconciler getPresentationReconciler(ISourceViewer sourceViewer) { MDScanner scanner = new MDScanner(colorManager); - PresentationReconciler pr = (PresentationReconciler) super.getPresentationReconciler(sourceViewer); // FIXME + PresentationReconciler pr = (PresentationReconciler) super.getPresentationReconciler(sourceViewer); DefaultDamagerRepairer ddr = new DefaultDamagerRepairer(scanner); pr.setRepairer(ddr, IDocument.DEFAULT_CONTENT_TYPE); pr.setDamager(ddr, IDocument.DEFAULT_CONTENT_TYPE); @@ -31,44 +31,23 @@ public IPresentationReconciler getPresentationReconciler(ISourceViewer sourceVie @Override public IReconciler getReconciler(ISourceViewer sourceViewer) { - // This awful mess adds in update support - // Get super strategy - IReconciler rs = super.getReconciler(sourceViewer); - return rs; // Seems to work fine?! + return super.getReconciler(sourceViewer); - // if (true) return rs; - - // final IReconcilingStrategy fsuperStrategy = rs == null ? null : - // rs.getReconcilingStrategy("text"); - // // Add our own - // IReconcilingStrategy strategy = new IReconcilingStrategy() { - // - // private IDocument doc; - // - // public void reconcile(IRegion partition) { - // MarkdownEditor ed = MarkdownEditor.getEditor(doc); - // if (ed != null) ed.updatePage(partition); - // if (fsuperStrategy != null) fsuperStrategy.reconcile(partition); + // if (fPreferenceStore == null || + // !fPreferenceStore.getBoolean(SpellingService.PREFERENCE_SPELLING_ENABLED)) { + // return null; // } // - // public void reconcile(DirtyRegion dirtyRegion, IRegion subRegion) { - // MarkdownEditor ed = MarkdownEditor.getEditor(doc); - // if (ed != null) ed.updatePage(subRegion); - // if (fsuperStrategy != null) fsuperStrategy.reconcile(dirtyRegion, subRegion); - // } + // SpellingService spellingService = MarkdownUIPlugin.getSpellingService(); + // // EditorsUI.getSpellingService(); + // if (spellingService.getActiveSpellingEngineDescriptor(fPreferenceStore) == null) return + // null; // - // public void setDocument(IDocument document) { - // this.doc = document; - // if (fsuperStrategy != null) fsuperStrategy.setDocument(document); - // } - // }; - // // Make a reconciler - // MonoReconciler m2 = new MonoReconciler(strategy, true); - // m2.setIsIncrementalReconciler(true); - // m2.setProgressMonitor(new NullProgressMonitor()); - // m2.setDelay(500); - // // Done - // return m2; + // IReconcilingStrategy strategy = new SpellingReconcileStrategy(sourceViewer, + // spellingService); + // MonoReconciler reconciler = new MonoReconciler(strategy, false); + // reconciler.setDelay(500); + // return reconciler; } @SuppressWarnings("unused") diff --git a/plugin/src/winterwell/markdown/editors/MDScanner.java b/plugin/src/winterwell/markdown/editors/MDScanner.java index 6838ade..34da047 100755 --- a/plugin/src/winterwell/markdown/editors/MDScanner.java +++ b/plugin/src/winterwell/markdown/editors/MDScanner.java @@ -14,7 +14,7 @@ import org.eclipse.jface.text.rules.Token; import org.eclipse.swt.SWT; -import winterwell.markdown.Activator; +import winterwell.markdown.MarkdownUIPlugin; import winterwell.markdown.preferences.PrefPageGeneral; /** @@ -26,7 +26,7 @@ public class MDScanner extends RuleBasedScanner { ColorManager cm; public MDScanner(ColorManager cm) { this.cm = cm; - IPreferenceStore pStore = Activator.getDefault().getPreferenceStore(); + IPreferenceStore pStore = MarkdownUIPlugin.getDefault().getPreferenceStore(); Token heading = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, PrefPageGeneral.PREF_HEADER)), null, SWT.BOLD)); Token comment = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, PrefPageGeneral.PREF_COMMENT)))); Token emphasis = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, PrefPageGeneral.PREF_DEFAULT)), null, SWT.ITALIC)); diff --git a/plugin/src/winterwell/markdown/editors/MarkdownEditor.java b/plugin/src/winterwell/markdown/editors/MarkdownEditor.java index 0b26feb..4235f6b 100755 --- a/plugin/src/winterwell/markdown/editors/MarkdownEditor.java +++ b/plugin/src/winterwell/markdown/editors/MarkdownEditor.java @@ -40,7 +40,7 @@ import org.eclipse.ui.texteditor.IDocumentProvider; import org.eclipse.ui.views.contentoutline.IContentOutlinePage; -import winterwell.markdown.Activator; +import winterwell.markdown.MarkdownUIPlugin; import winterwell.markdown.Log; import winterwell.markdown.pagemodel.MarkdownPage; import winterwell.markdown.pagemodel.MarkdownPage.Header; @@ -74,7 +74,7 @@ public class MarkdownEditor extends TextEditor implements IDocumentListener { public MarkdownEditor() { super(); - pStore = Activator.getDefault().getPreferenceStore(); + pStore = MarkdownUIPlugin.getDefault().getPreferenceStore(); colorManager = new ColorManager(); setSourceViewerConfiguration(new MDConfiguration(colorManager, getPreferenceStore())); } diff --git a/plugin/src/winterwell/markdown/pagemodel/MarkdownPage.java b/plugin/src/winterwell/markdown/pagemodel/MarkdownPage.java index 0333a59..e9781a7 100755 --- a/plugin/src/winterwell/markdown/pagemodel/MarkdownPage.java +++ b/plugin/src/winterwell/markdown/pagemodel/MarkdownPage.java @@ -15,7 +15,7 @@ import org.eclipse.jface.preference.IPreferenceStore; -import winterwell.markdown.Activator; +import winterwell.markdown.MarkdownUIPlugin; import winterwell.markdown.StringMethods; import winterwell.markdown.preferences.PrefPageGeneral; import winterwell.markdown.util.Strings; @@ -220,7 +220,7 @@ public enum KLineType { * @param text */ public MarkdownPage(String text) { - pStore = Activator.getDefault().getPreferenceStore(); + pStore = MarkdownUIPlugin.getDefault().getPreferenceStore(); setText(text); } diff --git a/plugin/src/winterwell/markdown/pagemodel/MdConverter.java b/plugin/src/winterwell/markdown/pagemodel/MdConverter.java index b828d17..78ada22 100644 --- a/plugin/src/winterwell/markdown/pagemodel/MdConverter.java +++ b/plugin/src/winterwell/markdown/pagemodel/MdConverter.java @@ -13,7 +13,7 @@ import com.github.rjeschke.txtmark.Configuration.Builder; import com.github.rjeschke.txtmark.Processor; -import winterwell.markdown.Activator; +import winterwell.markdown.MarkdownUIPlugin; import winterwell.markdown.preferences.PrefPageGeneral; import winterwell.markdown.preferences.Prefs; import winterwell.markdown.util.FailureException; @@ -27,7 +27,7 @@ public class MdConverter { public MdConverter() { super(); - store = Activator.getDefault().getPreferenceStore(); + store = MarkdownUIPlugin.getDefault().getPreferenceStore(); } public String convert(String text) { diff --git a/plugin/src/winterwell/markdown/preferences/PrefPageColoring.java b/plugin/src/winterwell/markdown/preferences/PrefPageColoring.java index 82b460c..763e304 100644 --- a/plugin/src/winterwell/markdown/preferences/PrefPageColoring.java +++ b/plugin/src/winterwell/markdown/preferences/PrefPageColoring.java @@ -10,7 +10,7 @@ import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; -import winterwell.markdown.Activator; +import winterwell.markdown.MarkdownUIPlugin; public class PrefPageColoring extends FieldEditorPreferencePage implements IWorkbenchPreferencePage, Prefs { @@ -20,7 +20,7 @@ public PrefPageColoring() { } public void init(IWorkbench workbench) { - setPreferenceStore(Activator.getDefault().getPreferenceStore()); + setPreferenceStore(MarkdownUIPlugin.getDefault().getPreferenceStore()); } /** Creates the field editors. */ diff --git a/plugin/src/winterwell/markdown/preferences/PrefPageGeneral.java b/plugin/src/winterwell/markdown/preferences/PrefPageGeneral.java index e7aec9f..34ea97f 100755 --- a/plugin/src/winterwell/markdown/preferences/PrefPageGeneral.java +++ b/plugin/src/winterwell/markdown/preferences/PrefPageGeneral.java @@ -13,7 +13,7 @@ import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; -import winterwell.markdown.Activator; +import winterwell.markdown.MarkdownUIPlugin; public class PrefPageGeneral extends FieldEditorPreferencePage implements IWorkbenchPreferencePage, Prefs { @@ -44,7 +44,7 @@ public PrefPageGeneral() { } public void init(IWorkbench workbench) { - setPreferenceStore(Activator.getDefault().getPreferenceStore()); + setPreferenceStore(MarkdownUIPlugin.getDefault().getPreferenceStore()); } /** Create fields controlling general editor behavior */ diff --git a/plugin/src/winterwell/markdown/preferences/PrefPageStyles.java b/plugin/src/winterwell/markdown/preferences/PrefPageStyles.java index 861964a..0afb9c3 100644 --- a/plugin/src/winterwell/markdown/preferences/PrefPageStyles.java +++ b/plugin/src/winterwell/markdown/preferences/PrefPageStyles.java @@ -22,7 +22,7 @@ import org.eclipse.ui.IWorkbenchPreferencePage; import org.osgi.framework.Bundle; -import winterwell.markdown.Activator; +import winterwell.markdown.MarkdownUIPlugin; public class PrefPageStyles extends FieldEditorPreferencePage implements IWorkbenchPreferencePage, Prefs { @@ -32,7 +32,7 @@ public PrefPageStyles() { } public void init(IWorkbench workbench) { - setPreferenceStore(Activator.getDefault().getPreferenceStore()); + setPreferenceStore(MarkdownUIPlugin.getDefault().getPreferenceStore()); } /** Creates the field editors. */ @@ -63,7 +63,7 @@ public void createFieldEditors() { // build list of builtin stylesheets // key=name, value=bundle cache URL as string private String[][] builtins() { - Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID); + Bundle bundle = Platform.getBundle(MarkdownUIPlugin.PLUGIN_ID); URL url = bundle.getEntry("resources/"); File dir = null; try { diff --git a/plugin/src/winterwell/markdown/preferences/PrefsInit.java b/plugin/src/winterwell/markdown/preferences/PrefsInit.java index da399c9..edade5b 100644 --- a/plugin/src/winterwell/markdown/preferences/PrefsInit.java +++ b/plugin/src/winterwell/markdown/preferences/PrefsInit.java @@ -13,7 +13,7 @@ import org.eclipse.swt.graphics.RGB; import org.osgi.framework.Bundle; -import winterwell.markdown.Activator; +import winterwell.markdown.MarkdownUIPlugin; /** * Initialize default preference values @@ -28,7 +28,7 @@ public class PrefsInit extends AbstractPreferenceInitializer implements Prefs { private static final RGB DEF_CODE_BG = new RGB(244, 244, 244); public void initializeDefaultPreferences() { - IPreferenceStore store = Activator.getDefault().getPreferenceStore(); + IPreferenceStore store = MarkdownUIPlugin.getDefault().getPreferenceStore(); store.setDefault(PREF_WORD_WRAP, false); store.setDefault(PREF_FOLDING, true); @@ -57,7 +57,7 @@ public void initializeDefaultPreferences() { // get bundle cache URL for the default stylesheet private String cssDefault() { - Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID); + Bundle bundle = Platform.getBundle(MarkdownUIPlugin.PLUGIN_ID); URL url = FileLocator.find(bundle, new Path("resources/" + DEF_MDCSS), null); try { url = FileLocator.toFileURL(url); diff --git a/plugin/src/winterwell/markdown/views/MarkdownPreview.java b/plugin/src/winterwell/markdown/views/MarkdownPreview.java index 1c03850..1e29c70 100755 --- a/plugin/src/winterwell/markdown/views/MarkdownPreview.java +++ b/plugin/src/winterwell/markdown/views/MarkdownPreview.java @@ -36,15 +36,18 @@ import org.eclipse.ui.part.ViewPart; import org.osgi.framework.Bundle; -import winterwell.markdown.Activator; import winterwell.markdown.Log; -import winterwell.markdown.commands.ActionBarContributor; +import winterwell.markdown.MarkdownUIPlugin; +import winterwell.markdown.editors.ActionBarContributor; import winterwell.markdown.editors.MarkdownEditor; import winterwell.markdown.pagemodel.MarkdownPage; import winterwell.markdown.preferences.Prefs; +import winterwell.markdown.util.Strings; public class MarkdownPreview extends ViewPart implements Prefs { + public static final String ID = "winterwell.markdown.views.MarkdownPreview"; + // script to return the current top scroll position of the browser widget private static final String GETSCROLLTOP = "function getScrollTop() { " //$NON-NLS-1$ + " if(typeof pageYOffset!='undefined') return pageYOffset;" //$NON-NLS-1$ @@ -54,11 +57,6 @@ public class MarkdownPreview extends ViewPart implements Prefs { + "D=(D.clientHeight)?D:B;return D.scrollTop;}" //$NON-NLS-1$ + "}; return getScrollTop();"; //$NON-NLS-1$ - private static final String EOL = System.getProperty("line.separator"); - - private static final IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); - private static final IPath location = root.getLocation(); - public static MarkdownPreview preview = null; private Browser viewer = null; private StyleListener styleListener; @@ -81,7 +79,7 @@ public void propertyChange(PropertyChangeEvent event) { public MarkdownPreview() { preview = this; styleListener = new StyleListener(); - Activator.getDefault().getPreferenceStore().addPropertyChangeListener(styleListener); + MarkdownUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(styleListener); } /** @@ -130,13 +128,13 @@ public void completed(ProgressEvent event) { } catch (Exception e) { StringWriter errors = new StringWriter(); e.printStackTrace(new PrintWriter(errors)); - Log.error(e.getLocalizedMessage() + EOL + errors.toString()); + Log.error(e.getLocalizedMessage() + Strings.EOL + errors.toString()); List lines = new ArrayList<>(); for (StackTraceElement line : e.getStackTrace()) { - lines.add(new Status(IStatus.ERROR, Activator.PLUGIN_ID, line.toString())); + lines.add(new Status(IStatus.ERROR, MarkdownUIPlugin.PLUGIN_ID, line.toString())); } - MultiStatus status = new MultiStatus(Activator.PLUGIN_ID, IStatus.ERROR, + MultiStatus status = new MultiStatus(MarkdownUIPlugin.PLUGIN_ID, IStatus.ERROR, lines.toArray(new Status[lines.size()]), e.getLocalizedMessage(), e); ErrorDialog.openError(null, "Viewer error", e.getMessage(), status); } @@ -154,7 +152,7 @@ public void setFocus() { @Override public void dispose() { - Activator.getDefault().getPreferenceStore().removePropertyChangeListener(styleListener); + MarkdownUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(styleListener); viewer = null; super.dispose(); } @@ -181,7 +179,7 @@ private String getMdStyles(IPath path) { if (pathname != null) return pathname; // 3) read the file identified by the pref key 'PREF_CSS_CUSTOM' from the filesystem - IPreferenceStore store = Activator.getDefault().getPreferenceStore(); + IPreferenceStore store = MarkdownUIPlugin.getDefault().getPreferenceStore(); String customCss = store.getString(PREF_CSS_CUSTOM); if (!customCss.isEmpty()) { File file = new File(customCss); @@ -203,7 +201,7 @@ private String getMdStyles(IPath path) { } // 5) read 'markdown.css' from the bundle - Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID); + Bundle bundle = Platform.getBundle(MarkdownUIPlugin.PLUGIN_ID); URL url = FileLocator.find(bundle, new Path("resources/" + DEF_MDCSS), null); try { url = FileLocator.toFileURL(url); @@ -217,12 +215,14 @@ private String getMdStyles(IPath path) { private String find(IPath styles) { String name = styles.lastSegment(); IPath base = styles.removeLastSegments(1); + + IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); IContainer dir = root.getContainerForLocation(base); while (dir.getType() != IResource.ROOT) { IResource member = dir.findMember(name); if (member != null) { - return location.append(member.getFullPath()).toFile().toURI().toString(); + return root.getLocation().append(member.getFullPath()).toFile().toURI().toString(); } dir = dir.getParent(); } @@ -230,12 +230,12 @@ private String find(IPath styles) { } private String addHeader(String html, String base, String style) { - StringBuilder sb = new StringBuilder("" + EOL); - if (base != null) sb.append("" + EOL); + StringBuilder sb = new StringBuilder("" + Strings.EOL); + if (base != null) sb.append("" + Strings.EOL); if (style != null) { - sb.append("" + EOL); + sb.append("" + Strings.EOL); } - sb.append("" + EOL + html + EOL + ""); + sb.append("" + Strings.EOL + html + Strings.EOL + ""); return sb.toString(); } diff --git a/pom.xml b/pom.xml index dad2731..a272cf3 100644 --- a/pom.xml +++ b/pom.xml @@ -58,8 +58,8 @@ - plugin feature + plugin site From 35a480769ce98bd8895751f47ab4fb3414c6b561 Mon Sep 17 00:00:00 2001 From: GRosenberg Date: Sat, 26 Nov 2016 13:50:27 -0800 Subject: [PATCH 19/20] Initial spelling support indpendent of platform preference. --- plugin/META-INF/MANIFEST.MF | 14 +- .../winterwell/markdown/MarkdownUIPlugin.java | 23 +- .../markdown/commands/OpenGfmView.java | 29 +- .../markdown/commands/OpenMdView.java | 23 +- .../editors/ActionBarContributor.java | 6 - .../markdown/editors/MDConfiguration.java | 50 +- .../markdown/editors/MarkdownEditor.java | 227 +++------ ...linePage.java => MarkdownOutlinePage.java} | 118 ++--- .../EclipsePreferencesAdapter.java | 256 ++++++++++ .../preferences/OverlayPreferenceStore.java | 440 ++++++++++++++++++ .../markdown/preferences/Prefs.java | 12 +- .../markdown/preferences/PrefsInit.java | 4 +- .../markdown/util/PartListener.java | 23 + .../src/winterwell/markdown/util/Strings.java | 1 + .../winterwell/markdown/views/Limiter.java | 94 ++++ .../markdown/views/MarkdownPreview.java | 129 +++-- 16 files changed, 1134 insertions(+), 315 deletions(-) rename plugin/src/winterwell/markdown/editors/{MarkdownContentOutlinePage.java => MarkdownOutlinePage.java} (82%) create mode 100644 plugin/src/winterwell/markdown/preferences/EclipsePreferencesAdapter.java create mode 100644 plugin/src/winterwell/markdown/preferences/OverlayPreferenceStore.java create mode 100644 plugin/src/winterwell/markdown/util/PartListener.java create mode 100644 plugin/src/winterwell/markdown/views/Limiter.java diff --git a/plugin/META-INF/MANIFEST.MF b/plugin/META-INF/MANIFEST.MF index 6f25e18..450ad01 100644 --- a/plugin/META-INF/MANIFEST.MF +++ b/plugin/META-INF/MANIFEST.MF @@ -5,16 +5,15 @@ Bundle-SymbolicName: winterwell.markdown;singleton:=true Bundle-Version: 1.3.0.qualifier Bundle-Activator: winterwell.markdown.MarkdownUIPlugin Bundle-Vendor: Winterwell Associates Ltd -Require-Bundle: org.eclipse.ui, - org.eclipse.core.runtime, - org.eclipse.ui.editors, - org.eclipse.jface.text, +Require-Bundle: org.eclipse.core.runtime, org.eclipse.core.resources, - org.eclipse.ui.views, - org.eclipse.jface, org.eclipse.swt, + org.eclipse.ui.editors, + org.eclipse.ui.views, + org.eclipse.core.commands, org.eclipse.ui.workbench, - org.eclipse.ui.workbench.texteditor + org.eclipse.jface, + org.eclipse.jface.text Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Bundle-ClassPath: ., @@ -25,3 +24,4 @@ Bundle-ClassPath: ., lib/parboiled-java.jar, lib/parboiled-core.jar, lib/asm-all.jar +Import-Package: org.eclipse.ui diff --git a/plugin/src/winterwell/markdown/MarkdownUIPlugin.java b/plugin/src/winterwell/markdown/MarkdownUIPlugin.java index a8e03ea..1f7e313 100755 --- a/plugin/src/winterwell/markdown/MarkdownUIPlugin.java +++ b/plugin/src/winterwell/markdown/MarkdownUIPlugin.java @@ -14,7 +14,12 @@ public class MarkdownUIPlugin extends AbstractUIPlugin { // The shared instance private static MarkdownUIPlugin plugin; - public MarkdownUIPlugin() {} + // preference store specific to this plugin + // private IPreferenceStore store; + + public MarkdownUIPlugin() { + super(); + } public void start(BundleContext context) throws Exception { super.start(context); @@ -32,4 +37,20 @@ public void stop(BundleContext context) throws Exception { public static MarkdownUIPlugin getDefault() { return plugin; } + + // /** + // * Workaround to allow editor specific enabling of the speller. Overrides the global + // preference + // * value for spelling enabled. + // */ + // public IPreferenceStore getPreferenceStore() { + // if (store == null) { + // OverlayKey[] keys = new OverlayKey[] { + // new OverlayKey(OverlayPreferenceStore.BOOLEAN, SpellingService.PREFERENCE_SPELLING_ENABLED) + // }; + // this.store = new OverlayPreferenceStore(super.getPreferenceStore(), keys); + // this.store.setValue(SpellingService.PREFERENCE_SPELLING_ENABLED, true); + // } + // return store; + // } } diff --git a/plugin/src/winterwell/markdown/commands/OpenGfmView.java b/plugin/src/winterwell/markdown/commands/OpenGfmView.java index fa20024..2805f9c 100644 --- a/plugin/src/winterwell/markdown/commands/OpenGfmView.java +++ b/plugin/src/winterwell/markdown/commands/OpenGfmView.java @@ -5,37 +5,40 @@ import org.eclipse.core.commands.ExecutionException; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import winterwell.markdown.Log; +import winterwell.markdown.util.Strings; public class OpenGfmView extends AbstractHandler { + public static final String GFMV_ID = "code.satyagraha.gfm.viewer.views.GfmView"; + @Override public Object execute(final ExecutionEvent event) throws ExecutionException { try { - IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); - String gfmViewId = "code.satyagraha.gfm.viewer.views.GfmView"; - IViewPart gfmView = activePage.showView(gfmViewId); - activePage.activate(gfmView); + IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); + IViewPart gfmView = activePage.showView(GFMV_ID); + activePage.activate(gfmView); } catch (PartInitException e) { showError(e); - } catch (Exception e) { - showError(e); - } + } return null; } private void showError(Exception e) { String title = "Exception while opening GitHub Flavored Markdown View"; - String message = title+" (code.satyagraha.gfm.viewer.views.GfmView)" - +"\nCheck Error Log View and continue at https://github.com/winterstein/Eclipse-Markdown-Editor-Plugin/issues/42" - +"\n\nYou can also right-click file in Project Explorer" - +"\n and select \"Show in GFM view\"."; - Log.error(message, e); - MessageDialog.openError(Display.getDefault().getActiveShell(), title , message); + String message = title + Strings.EOL2 // + + "The 'GitHub Flavored Markdown viewer' was not found." + Strings.EOL2 // + + "Install using the Eclipse Marketplace client " + Strings.EOL // + + "or from https://github.com/satyagraha/gfm_viewer"; + Log.error(message); + + Shell shell = Display.getDefault().getActiveShell(); + MessageDialog.openError(shell, title, message); } } diff --git a/plugin/src/winterwell/markdown/commands/OpenMdView.java b/plugin/src/winterwell/markdown/commands/OpenMdView.java index 827ad8d..e3e90b8 100644 --- a/plugin/src/winterwell/markdown/commands/OpenMdView.java +++ b/plugin/src/winterwell/markdown/commands/OpenMdView.java @@ -3,16 +3,15 @@ import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.dialogs.ErrorDialog; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PartInitException; import org.eclipse.ui.handlers.HandlerUtil; import winterwell.markdown.Log; -import winterwell.markdown.MarkdownUIPlugin; import winterwell.markdown.views.MarkdownPreview; public class OpenMdView extends AbstractHandler { @@ -22,20 +21,20 @@ public Object execute(final ExecutionEvent event) throws ExecutionException { try { IWorkbenchPage activePage = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage(); IViewPart mdView = activePage.showView(MarkdownPreview.ID); - activePage.activate(mdView); - } catch (Exception e) { - showError(event, e); + MarkdownPreview preview = (MarkdownPreview) mdView; + activePage.activate(preview); + } catch (PartInitException e) { + showError(e); } return null; } - private void showError(ExecutionEvent event, Exception e) { + private void showError(Exception e) { String title = "Exception while opening Markdown Preview"; - String message = title + " (" + MarkdownPreview.ID + ")" + "\nCheck Error Log"; + String message = title + " (" + MarkdownPreview.ID + ")"; Log.error(message, e); - Shell shell = HandlerUtil.getActiveShell(event); - IStatus status = new Status(IStatus.ERROR, MarkdownUIPlugin.PLUGIN_ID, message, e); - ErrorDialog.openError(shell, title, message, status, 0); + Shell shell = Display.getDefault().getActiveShell(); + MessageDialog.openError(shell, title , message); } } diff --git a/plugin/src/winterwell/markdown/editors/ActionBarContributor.java b/plugin/src/winterwell/markdown/editors/ActionBarContributor.java index 1794314..112e283 100755 --- a/plugin/src/winterwell/markdown/editors/ActionBarContributor.java +++ b/plugin/src/winterwell/markdown/editors/ActionBarContributor.java @@ -7,7 +7,6 @@ import winterwell.markdown.commands.ExportHTML; import winterwell.markdown.commands.FormatParagraph; -import winterwell.markdown.views.MarkdownPreview; public class ActionBarContributor extends TextEditorActionContributor { @@ -24,10 +23,6 @@ public void setActiveEditor(IEditorPart targetEditor) { // todo bars.setGlobalActionHandler(ActionFactory.PRINT.getId(), print); // bars.updateActionBars(); } - // Update preview? - if (MarkdownPreview.preview != null) { - MarkdownPreview.preview.update(); - } } public static IEditorPart getActiveEditor() { @@ -48,5 +43,4 @@ public void contributeToMenu(IMenuManager menu) { file.appendToGroup("import.ext", new ExportHTML()); } } - } diff --git a/plugin/src/winterwell/markdown/editors/MDConfiguration.java b/plugin/src/winterwell/markdown/editors/MDConfiguration.java index b564f3d..63f53cb 100755 --- a/plugin/src/winterwell/markdown/editors/MDConfiguration.java +++ b/plugin/src/winterwell/markdown/editors/MDConfiguration.java @@ -13,9 +13,11 @@ public class MDConfiguration extends TextSourceViewerConfiguration { private ColorManager colorManager; + // private OverlayPreferenceStore spellStore; + // private SpellingService spellService; - public MDConfiguration(ColorManager colorManager, IPreferenceStore prefStore) { - super(prefStore); + public MDConfiguration(ColorManager colorManager, IPreferenceStore store) { + super(store); this.colorManager = colorManager; } @@ -30,26 +32,42 @@ public IPresentationReconciler getPresentationReconciler(ISourceViewer sourceVie } @Override - public IReconciler getReconciler(ISourceViewer sourceViewer) { - return super.getReconciler(sourceViewer); - - // if (fPreferenceStore == null || - // !fPreferenceStore.getBoolean(SpellingService.PREFERENCE_SPELLING_ENABLED)) { - // return null; - // } - // - // SpellingService spellingService = MarkdownUIPlugin.getSpellingService(); - // // EditorsUI.getSpellingService(); - // if (spellingService.getActiveSpellingEngineDescriptor(fPreferenceStore) == null) return - // null; + public IReconciler getReconciler(ISourceViewer viewer) { + // boolean global = + // fPreferenceStore.getBoolean(SpellingService.PREFERENCE_SPELLING_ENABLED); + // boolean local = fPreferenceStore.getBoolean(Prefs.PREF_SPELLING_ENABLED); + // if (local && !global) { + // SpellingService service = getSpellingService(); + // if (service.getActiveSpellingEngineDescriptor(getSpellStore()) == null) { + // return super.getReconciler(viewer); // bail + // }; // - // IReconcilingStrategy strategy = new SpellingReconcileStrategy(sourceViewer, - // spellingService); + // IReconcilingStrategy strategy = new SpellingReconcileStrategy(viewer, service); // MonoReconciler reconciler = new MonoReconciler(strategy, false); // reconciler.setDelay(500); // return reconciler; + // } + return super.getReconciler(viewer); } + // private SpellingService getSpellingService() { + // if (spellService == null) { + // spellService = new SpellingService(getSpellStore()); + // } + // return spellService; + // } + // + // private IPreferenceStore getSpellStore() { + // if (spellStore == null) { + // OverlayKey[] keys = new OverlayKey[] { + // new OverlayKey(OverlayPreferenceStore.BOOLEAN, SpellingService.PREFERENCE_SPELLING_ENABLED) + // }; + // this.spellStore = new OverlayPreferenceStore(fPreferenceStore, keys); + // this.spellStore.setValue(SpellingService.PREFERENCE_SPELLING_ENABLED, true); + // } + // return spellStore; + // } + @SuppressWarnings("unused") @Override public ITextHover getTextHover(ISourceViewer sourceViewer, String contentType) { diff --git a/plugin/src/winterwell/markdown/editors/MarkdownEditor.java b/plugin/src/winterwell/markdown/editors/MarkdownEditor.java index 4235f6b..f91254b 100755 --- a/plugin/src/winterwell/markdown/editors/MarkdownEditor.java +++ b/plugin/src/winterwell/markdown/editors/MarkdownEditor.java @@ -15,6 +15,7 @@ import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.preferences.InstanceScope; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.text.DocumentEvent; import org.eclipse.jface.text.IDocument; @@ -30,63 +31,86 @@ import org.eclipse.jface.text.source.projection.ProjectionViewer; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; -import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IPathEditorInput; import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.editors.text.EditorsUI; import org.eclipse.ui.editors.text.TextEditor; import org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants; +import org.eclipse.ui.texteditor.ChainedPreferenceStore; import org.eclipse.ui.texteditor.IDocumentProvider; import org.eclipse.ui.views.contentoutline.IContentOutlinePage; -import winterwell.markdown.MarkdownUIPlugin; import winterwell.markdown.Log; +import winterwell.markdown.MarkdownUIPlugin; import winterwell.markdown.pagemodel.MarkdownPage; import winterwell.markdown.pagemodel.MarkdownPage.Header; +import winterwell.markdown.preferences.EclipsePreferencesAdapter; import winterwell.markdown.preferences.PrefPageGeneral; import winterwell.markdown.preferences.Prefs; -import winterwell.markdown.views.MarkdownPreview; /** * Text editor with markdown support. * * @author Daniel Winterstein */ -public class MarkdownEditor extends TextEditor implements IDocumentListener { +public class MarkdownEditor extends TextEditor { - /** - * Maximum length for a task tag message - */ - private static final int MAX_TASK_MSG_LENGTH = 80; - private ColorManager colorManager; - private MarkdownContentOutlinePage fOutlinePage = null; + public static final String ID = "winterwell.markdown.editors.MarkdownEditor"; + public static final String ID2 = "org.nodeclipse.ui.editors.LitCoffeeEditor"; - IDocument oldDoc = null; + /** Maximum length for a task tag message */ + private static final int MAX_TASK_MSG_LENGTH = 80; + private static final Annotation[] ANNOTATION_ARRAY = new Annotation[0]; + private static final Position[] POSITION_ARRAY = new Position[0]; + private MarkdownOutlinePage fOutlinePage; + private ColorManager colorManager; private MarkdownPage page; - private boolean pageDirty = true; + private boolean haveRunFolding = false; private ProjectionSupport projectionSupport; - private final IPreferenceStore pStore; - private IPropertyChangeListener prefChangeListener; + private Map oldAnnotations = new HashMap(0); + + private final IDocumentListener docListener = new IDocumentListener() { + + @Override + public void documentChanged(DocumentEvent event) { + pageDirty = true; + } + + @Override + public void documentAboutToBeChanged(DocumentEvent event) {} + }; + + private final IPropertyChangeListener prefChangeListener = new IPropertyChangeListener() { + + @Override + public void propertyChange(PropertyChangeEvent event) { + if (event.getProperty().equals(PrefPageGeneral.PREF_WORD_WRAP)) { + getViewer().getTextWidget().setWordWrap(isWordWrap()); + } + } + }; public MarkdownEditor() { super(); - pStore = MarkdownUIPlugin.getDefault().getPreferenceStore(); + initPreferenceStore(); colorManager = new ColorManager(); setSourceViewerConfiguration(new MDConfiguration(colorManager, getPreferenceStore())); } @Override public void createPartControl(Composite parent) { - // Over-ride to add code-folding support + // add code-folding support super.createPartControl(parent); if (getSourceViewer() instanceof ProjectionViewer) { ProjectionViewer viewer = (ProjectionViewer) getSourceViewer(); projectionSupport = new ProjectionSupport(viewer, getAnnotationAccess(), getSharedColors()); projectionSupport.install(); + // turn projection mode on viewer.doOperation(ProjectionViewer.TOGGLE); } @@ -102,27 +126,15 @@ public ISourceViewer getViewer() { @Override protected ISourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, int styles) { - // if (true) return super.createSourceViewer(parent, ruler, styles); // Create with code-folding ISourceViewer viewer = new ProjectionViewer(parent, ruler, getOverviewRuler(), isOverviewRulerVisible(), styles); + // ensure decoration support has been created and configured. getSourceViewerDecorationSupport(viewer); - // Setup word-wrapping - final StyledText widget = viewer.getTextWidget(); - // Listen to pref changes - prefChangeListener = new IPropertyChangeListener() { - - public void propertyChange(PropertyChangeEvent event) { - if (event.getProperty().equals(PrefPageGeneral.PREF_WORD_WRAP)) { - widget.setWordWrap(isWordWrap()); - } - } - }; - pStore.addPropertyChangeListener(prefChangeListener); // initialize word-wrapping - widget.setWordWrap(isWordWrap()); + viewer.getTextWidget().setWordWrap(isWordWrap()); return viewer; } @@ -132,47 +144,44 @@ private boolean isWordWrap() { } public void dispose() { - if (MarkdownPreview.preview != null) { - PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().hideView(MarkdownPreview.preview); - } - if (pStore != null) { - pStore.removePropertyChangeListener(prefChangeListener); - } + removePreferenceStoreListener(); colorManager.dispose(); super.dispose(); } - public void documentAboutToBeChanged(DocumentEvent event) {} - - public void documentChanged(DocumentEvent event) { - pageDirty = true; - } - @Override protected void doSetInput(IEditorInput input) throws CoreException { - // Detach from old - if (oldDoc != null) { - oldDoc.removeDocumentListener(this); - if (doc2editor.get(oldDoc) == this) doc2editor.remove(oldDoc); - } - // Set + + // Remove old doc listener + if (getDocument() != null) getDocument().removeDocumentListener(docListener); + super.doSetInput(input); - // Attach as a listener to new doc - IDocument doc = getDocument(); - oldDoc = doc; - if (doc == null) return; - doc.addDocumentListener(this); - doc2editor.put(doc, this); - // Initialise code folding + + // Attach listener to new doc + getDocument().addDocumentListener(docListener); + + // Initialize code folding haveRunFolding = false; updateSectionFoldingAnnotations(null); } - @Override - protected void editorSaved() { - if (MarkdownPreview.preview != null) { - // Update the preview when the file is saved - MarkdownPreview.preview.update(); + /** + * Initializes the preference store for this editor. + */ + private void initPreferenceStore() { + List stores = new ArrayList<>(3); + stores.add(new EclipsePreferencesAdapter(InstanceScope.INSTANCE, MarkdownUIPlugin.PLUGIN_ID)); + stores.add(EditorsUI.getPreferenceStore()); + stores.add(PlatformUI.getPreferenceStore()); + + ChainedPreferenceStore store = new ChainedPreferenceStore(stores.toArray(new IPreferenceStore[stores.size()])); + store.addPropertyChangeListener(prefChangeListener); + setPreferenceStore(store); + } + + private void removePreferenceStoreListener() { + if (getPreferenceStore() != null) { + getPreferenceStore().removePropertyChangeListener(prefChangeListener); } } @@ -180,7 +189,7 @@ protected void editorSaved() { public Object getAdapter(Class required) { if (IContentOutlinePage.class.equals(required)) { if (fOutlinePage == null) { - fOutlinePage = new MarkdownContentOutlinePage(getDocumentProvider(), this); + fOutlinePage = new MarkdownOutlinePage(getDocumentProvider(), this); if (getEditorInput() != null) fOutlinePage.setInput(getEditorInput()); } return fOutlinePage; @@ -207,7 +216,7 @@ public int getPrintColumns() { } /** - * @return The text of the editor's document, or null if unavailable. + * @return The text of the editor's current document, or null if unavailable. */ public String getText() { IDocument doc = getDocument(); @@ -223,21 +232,16 @@ private void updateMarkdownPage() { void updateTaskTags(IRegion region) { try { - boolean useTags = pStore.getBoolean(PrefPageGeneral.PREF_TASK_TAGS); + boolean useTags = getPreferenceStore().getBoolean(PrefPageGeneral.PREF_TASK_TAGS); if (!useTags) return; // Get task tags - // IPreferenceStore peuistore = EditorsUI.getPreferenceStore(); - //// IPreferenceStore pStore_jdt = - // org.eclipse.jdt.core.compiler.getDefault().getPreferenceStore(); - // String tagString = peuistore.getString("org.eclipse.jdt.core.compiler.taskTags"); - String tagString = pStore.getString(PrefPageGeneral.PREF_TASK_TAGS_DEFINED); + String tagString = getPreferenceStore().getString(PrefPageGeneral.PREF_TASK_TAGS_DEFINED); List tags = Arrays.asList(tagString.split(",")); // Get resource for editor IFile docFile = getResource(this); // Get existing tasks IMarker[] taskMarkers = docFile.findMarkers(IMarker.TASK, true, IResource.DEPTH_INFINITE); List markers = new ArrayList(Arrays.asList(taskMarkers)); - // Collections.sort(markers, c) sort for efficiency // Find tags in doc List text = getMarkdownPage().getText(); for (int i = 1; i <= text.size(); i++) { @@ -264,23 +268,13 @@ void updateTaskTags(IRegion region) { for (IMarker m : markers) { try { m.delete(); - } catch (Exception ex) { - // - } + } catch (Exception e) {} } - } catch (Exception ex) { - // - } + } catch (Exception e) {} } /** * Find an existing marker, if there is one. - * - * @param i - * @param tagIndex - * @param line - * @param markers - * @return */ private IMarker updateTaskTags2_checkExisting(int i, int tagIndex, String line, List markers) { String tagMessage = line.substring(tagIndex).trim(); @@ -290,9 +284,7 @@ private IMarker updateTaskTags2_checkExisting(int i, int tagIndex, String line, if (i != lineNum) continue; String txt = ((String) marker.getAttribute(IMarker.MESSAGE)).trim(); if (tagMessage.equals(txt)) return marker; - } catch (Exception ex) { - // Ignore - } + } catch (Exception ex) {} } return null; } @@ -308,32 +300,14 @@ private IFile getResource(MarkdownEditor markdownEditor) { return docFile; } - /** - * @param doc - * @return - */ - public static MarkdownEditor getEditor(IDocument doc) { - return doc2editor.get(doc); - } - - private static final Map doc2editor = new HashMap(); - /** * @param region */ public void updatePage(IRegion region) { - // if (!pageDirty) return; updateTaskTags(region); updateSectionFoldingAnnotations(region); } - private static final Annotation[] ANNOTATION_ARRAY = new Annotation[0]; - - private static final Position[] POSITION_ARRAY = new Position[0]; - - private boolean haveRunFolding = false; - private Map oldAnnotations = new HashMap(0); - /** * @param region can be null */ @@ -423,53 +397,4 @@ private void updateSectionFoldingAnnotations2(IDocument doc, List

header } } } - } - -/* - * - IEditorPart editor = null; IWorkbenchWindow window = - * PlatformUI.getWorkbench().getActiveWorkbenchWindow(); if (window != null) { IWorkbenchPage - * activePage = window.getActivePage(); if (activePage != null) editor = - * activePage.getActiveEditor(); } if (editor != null) { // todo: Add operations for active editor } - * - */ diff --git a/plugin/src/winterwell/markdown/editors/MarkdownContentOutlinePage.java b/plugin/src/winterwell/markdown/editors/MarkdownOutlinePage.java similarity index 82% rename from plugin/src/winterwell/markdown/editors/MarkdownContentOutlinePage.java rename to plugin/src/winterwell/markdown/editors/MarkdownOutlinePage.java index ee8bbcc..6716b74 100755 --- a/plugin/src/winterwell/markdown/editors/MarkdownContentOutlinePage.java +++ b/plugin/src/winterwell/markdown/editors/MarkdownOutlinePage.java @@ -19,7 +19,9 @@ import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IDocumentListener; import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.ITextListener; import org.eclipse.jface.text.Region; +import org.eclipse.jface.text.TextEvent; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITreeContentProvider; @@ -47,70 +49,47 @@ /** * @author Daniel Winterstein */ -public final class MarkdownContentOutlinePage extends ContentOutlinePage { +public final class MarkdownOutlinePage extends ContentOutlinePage { - /** - * @author Daniel Winterstein - */ public final class ContentProvider implements ITreeContentProvider, IDocumentListener { - // protected final static String SEGMENTS= "__md_segments"; - // //$NON-NLS-1$ - // protected IPositionUpdater fPositionUpdater= new - // DefaultPositionUpdater(SEGMENTS); - private MarkdownPage fContent; - // protected List fContent= new ArrayList(10); - private MarkdownEditor fTextEditor; + private MarkdownPage page; private void parse() { - fContent = fTextEditor.getMarkdownPage(); + this.page = editor.getMarkdownPage(); } - /* - * @see IContentProvider#inputChanged(Viewer, Object, Object) - */ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - // Detach from old + if (oldInput != null) { IDocument document = fDocumentProvider.getDocument(oldInput); if (document != null) { document.removeDocumentListener(this); } } - fContent = null; - // Attach to new - if (newInput == null) return; - IDocument document = fDocumentProvider.getDocument(newInput); - if (document == null) return; - fTextEditor = MarkdownEditor.getEditor(document); - document.addDocumentListener(this); - parse(); + + page = null; + if (newInput != null) { + IDocument document = fDocumentProvider.getDocument(newInput); + if (document != null) { + document.addDocumentListener(this); + parse(); + } + } } - /* - * @see IContentProvider#dispose - */ public void dispose() { - fContent = null; + page = null; } - /* - * @see IContentProvider#isDeleted(Object) - */ public boolean isDeleted(Object element) { return false; } - /* - * @see IStructuredContentProvider#getElements(Object) - */ public Object[] getElements(Object element) { - return fContent.getHeadings(null).toArray(); + return page.getHeadings(null).toArray(); } - /* - * @see ITreeContentProvider#hasChildren(Object) - */ public boolean hasChildren(Object element) { if (element == fInput) { return true; @@ -122,28 +101,20 @@ public boolean hasChildren(Object element) { return false; } - /* - * @see ITreeContentProvider#getParent(Object) - */ public Object getParent(Object element) { if (!(element instanceof MarkdownPage.Header)) return null; return ((MarkdownPage.Header) element).getParent(); } - /* - * @see ITreeContentProvider#getChildren(Object) - */ public Object[] getChildren(Object element) { if (element == fInput) { - return fContent.getHeadings(null).toArray(); + return page.getHeadings(null).toArray(); } if (!(element instanceof MarkdownPage.Header)) return null; return ((MarkdownPage.Header) element).getSubHeaders().toArray(); } - public void documentAboutToBeChanged(DocumentEvent event) { - // nothing - } + public void documentAboutToBeChanged(DocumentEvent event) {} public void documentChanged(DocumentEvent event) { parse(); @@ -153,22 +124,25 @@ public void documentChanged(DocumentEvent event) { private Object fInput = null; private final IDocumentProvider fDocumentProvider; - private final MarkdownEditor fTextEditor; + private final MarkdownEditor editor; protected boolean showWordCounts; private List
selectedHeaders; /** * @param documentProvider - * @param mdEditor + * @param editor */ - public MarkdownContentOutlinePage(IDocumentProvider documentProvider, MarkdownEditor mdEditor) { - fDocumentProvider = documentProvider; - fTextEditor = mdEditor; + public MarkdownOutlinePage(IDocumentProvider documentProvider, MarkdownEditor editor) { + this.fDocumentProvider = documentProvider; + this.editor = editor; + + editor.getViewer().addTextListener(new ITextListener() { + + @Override + public void textChanged(TextEvent event) {} + }); } - /* - * (non-Javadoc) Method declared on ContentOutlinePage - */ @Override public void createControl(Composite parent) { super.createControl(parent); @@ -186,7 +160,7 @@ public String getText(Object element) { IRegion region = getRegion(header); String text; try { - text = fTextEditor.getDocument().get(region.getOffset(), region.getLength()); + text = editor.getDocument().get(region.getOffset(), region.getLength()); text = Strings.stripTags(text); text = text.replaceAll("#", "").trim(); assert text.startsWith(hText); @@ -315,9 +289,9 @@ protected void doSyncToEditor() throws BadLocationException { TreeViewer viewer = getTreeViewer(); if (viewer == null) return; // Get header - MarkdownPage page = fTextEditor.getMarkdownPage(); - int caretOffset = fTextEditor.getViewer().getTextWidget().getCaretOffset(); - IDocument doc = fTextEditor.getDocument(); + MarkdownPage page = editor.getMarkdownPage(); + int caretOffset = editor.getViewer().getTextWidget().getCaretOffset(); + IDocument doc = editor.getDocument(); int line = doc.getLineOfOffset(caretOffset); List lineTypes = page.getLineTypes(); for (; line > -1; line--) { @@ -359,7 +333,7 @@ protected void doMove(int i) throws BadLocationException { // Get text region to move MarkdownPage.Header first = selectedHeaders.get(0); MarkdownPage.Header last = selectedHeaders.get(selectedHeaders.size() - 1); - int start = fTextEditor.getDocument().getLineOffset(first.getLineNumber()); + int start = editor.getDocument().getLineOffset(first.getLineNumber()); IRegion r = getRegion(last); int end = r.getOffset() + r.getLength(); // int length = end - start; @@ -377,7 +351,7 @@ protected void doMove(int i) throws BadLocationException { insert = nr.getOffset(); } // Get text - String text = fTextEditor.getDocument().get(); + String text = editor.getDocument().get(); // Move text String section = text.substring(start, end); String pre, post; @@ -389,10 +363,10 @@ protected void doMove(int i) throws BadLocationException { post = text.substring(insert, start) + text.substring(end); } text = pre + section + post; - assert text.length() == fTextEditor.getDocument().get().length() : text.length() - - fTextEditor.getDocument().get().length() + " chars gained/lost"; + assert text.length() == editor.getDocument().get().length() : text.length() + - editor.getDocument().get().length() + " chars gained/lost"; // Update doc - fTextEditor.getDocument().set(text); + editor.getDocument().set(text); } /** @@ -406,7 +380,7 @@ protected void doPromoteDemote(int upDown) { HashSet
toAdjust = new HashSet
(selectedHeaders); HashSet
adjusted = new HashSet
(); // Adjust - MarkdownPage mdPage = fTextEditor.getMarkdownPage(); + MarkdownPage mdPage = editor.getMarkdownPage(); List lines = new ArrayList(mdPage.getText()); while (toAdjust.size() != 0) { Header h = toAdjust.iterator().next(); @@ -435,7 +409,7 @@ protected void doPromoteDemote(int upDown) { for (String line : lines) { sb.append(line); } - fTextEditor.getDocument().set(sb.toString()); + editor.getDocument().set(sb.toString()); } /** @@ -447,7 +421,7 @@ protected void doPromoteDemote(int upDown) { */ protected IRegion getRegion(Header header) { try { - IDocument doc = fTextEditor.getDocument(); + IDocument doc = editor.getDocument(); // Line numbers int start = header.getLineNumber(); Header next = header.getNext(); @@ -483,19 +457,19 @@ public void selectionChanged(SelectionChangedEvent event) { selectedHeaders = (List) Arrays.asList(sections); MarkdownPage.Header first = (Header) sections[0]; MarkdownPage.Header last = (Header) sections[sections.length - 1]; - int start = fTextEditor.getDocument().getLineOffset(first.getLineNumber()); + int start = editor.getDocument().getLineOffset(first.getLineNumber()); int length; if (first == last) { - length = fTextEditor.getDocument().getLineLength(first.getLineNumber()); + length = editor.getDocument().getLineLength(first.getLineNumber()); } else { IRegion r = getRegion(last); int end = r.getOffset() + r.getLength(); length = end - start; } - fTextEditor.setHighlightRange(start, length, true); + editor.setHighlightRange(start, length, true); } catch (Exception e) { Log.error(e); - fTextEditor.resetHighlightRange(); + editor.resetHighlightRange(); } } diff --git a/plugin/src/winterwell/markdown/preferences/EclipsePreferencesAdapter.java b/plugin/src/winterwell/markdown/preferences/EclipsePreferencesAdapter.java new file mode 100644 index 0000000..834b5a2 --- /dev/null +++ b/plugin/src/winterwell/markdown/preferences/EclipsePreferencesAdapter.java @@ -0,0 +1,256 @@ +/******************************************************************************* + * Copyright (c) 2005, 2016 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package winterwell.markdown.preferences; + +import org.osgi.service.prefs.BackingStoreException; + +import org.eclipse.swt.widgets.Display; + +import org.eclipse.core.runtime.ListenerList; +import org.eclipse.core.runtime.preferences.IEclipsePreferences; +import org.eclipse.core.runtime.preferences.IScopeContext; + +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.util.IPropertyChangeListener; +import org.eclipse.jface.util.PropertyChangeEvent; + +/** + * Adapts an options {@link IEclipsePreferences} to + * {@link org.eclipse.jface.preference.IPreferenceStore}. + *

+ * This preference store is read-only i.e. write access throws an + * {@link java.lang.UnsupportedOperationException}. + *

+ * + * @since 3.1 + */ +public class EclipsePreferencesAdapter implements IPreferenceStore { + + /** + * Preference change listener. Listens for events preferences fires a + * {@link org.eclipse.jface.util.PropertyChangeEvent} on this adapter with arguments from the + * received event. + */ + private class PreferenceChangeListener implements IEclipsePreferences.IPreferenceChangeListener { + + @Override + public void preferenceChange(final IEclipsePreferences.PreferenceChangeEvent event) { + if (Display.getCurrent() == null) { + Display.getDefault().asyncExec(new Runnable() { + + @Override + public void run() { + firePropertyChangeEvent(event.getKey(), event.getOldValue(), event.getNewValue()); + } + }); + } else { + firePropertyChangeEvent(event.getKey(), event.getOldValue(), event.getNewValue()); + } + } + } + + /** Listeners on on this adapter */ + private ListenerList fListeners = new ListenerList<>(ListenerList.IDENTITY); + + /** Listener on the node */ + private IEclipsePreferences.IPreferenceChangeListener fListener = new PreferenceChangeListener(); + + /** wrapped node */ + private final IScopeContext fContext; + private final String fQualifier; + + /** + * Initialize with the node to wrap + * + * @param context The context to access + */ + public EclipsePreferencesAdapter(IScopeContext context, String qualifier) { + fContext = context; + fQualifier = qualifier; + } + + private IEclipsePreferences getNode() { + return fContext.getNode(fQualifier); + } + + @Override + public void addPropertyChangeListener(IPropertyChangeListener listener) { + if (fListeners.size() == 0) getNode().addPreferenceChangeListener(fListener); + fListeners.add(listener); + } + + @Override + public void removePropertyChangeListener(IPropertyChangeListener listener) { + fListeners.remove(listener); + if (fListeners.size() == 0) { + getNode().removePreferenceChangeListener(fListener); + } + } + + @Override + public boolean contains(String name) { + return getNode().get(name, null) != null; + } + + @Override + public void firePropertyChangeEvent(String name, Object oldValue, Object newValue) { + PropertyChangeEvent event = new PropertyChangeEvent(this, name, oldValue, newValue); + for (IPropertyChangeListener listener : fListeners) { + listener.propertyChange(event); + } + } + + @Override + public boolean getBoolean(String name) { + return getNode().getBoolean(name, BOOLEAN_DEFAULT_DEFAULT); + } + + @Override + public boolean getDefaultBoolean(String name) { + return BOOLEAN_DEFAULT_DEFAULT; + } + + @Override + public double getDefaultDouble(String name) { + return DOUBLE_DEFAULT_DEFAULT; + } + + @Override + public float getDefaultFloat(String name) { + return FLOAT_DEFAULT_DEFAULT; + } + + @Override + public int getDefaultInt(String name) { + return INT_DEFAULT_DEFAULT; + } + + @Override + public long getDefaultLong(String name) { + return LONG_DEFAULT_DEFAULT; + } + + @Override + public String getDefaultString(String name) { + return STRING_DEFAULT_DEFAULT; + } + + @Override + public double getDouble(String name) { + return getNode().getDouble(name, DOUBLE_DEFAULT_DEFAULT); + } + + @Override + public float getFloat(String name) { + return getNode().getFloat(name, FLOAT_DEFAULT_DEFAULT); + } + + @Override + public int getInt(String name) { + return getNode().getInt(name, INT_DEFAULT_DEFAULT); + } + + @Override + public long getLong(String name) { + return getNode().getLong(name, LONG_DEFAULT_DEFAULT); + } + + @Override + public String getString(String name) { + return getNode().get(name, STRING_DEFAULT_DEFAULT); + } + + @Override + public boolean isDefault(String name) { + return false; + } + + @Override + public boolean needsSaving() { + try { + return getNode().keys().length > 0; + } catch (BackingStoreException e) { + // ignore + } + return true; + } + + @Override + public void putValue(String name, String value) { + throw new UnsupportedOperationException(); + } + + @Override + public void setDefault(String name, double value) { + throw new UnsupportedOperationException(); + } + + @Override + public void setDefault(String name, float value) { + throw new UnsupportedOperationException(); + } + + @Override + public void setDefault(String name, int value) { + throw new UnsupportedOperationException(); + } + + @Override + public void setDefault(String name, long value) { + throw new UnsupportedOperationException(); + } + + @Override + public void setDefault(String name, String defaultObject) { + throw new UnsupportedOperationException(); + } + + @Override + public void setDefault(String name, boolean value) { + throw new UnsupportedOperationException(); + } + + @Override + public void setToDefault(String name) { + throw new UnsupportedOperationException(); + } + + @Override + public void setValue(String name, double value) { + throw new UnsupportedOperationException(); + } + + @Override + public void setValue(String name, float value) { + throw new UnsupportedOperationException(); + } + + @Override + public void setValue(String name, int value) { + throw new UnsupportedOperationException(); + } + + @Override + public void setValue(String name, long value) { + throw new UnsupportedOperationException(); + } + + @Override + public void setValue(String name, String value) { + throw new UnsupportedOperationException(); + } + + @Override + public void setValue(String name, boolean value) { + throw new UnsupportedOperationException(); + } + +} diff --git a/plugin/src/winterwell/markdown/preferences/OverlayPreferenceStore.java b/plugin/src/winterwell/markdown/preferences/OverlayPreferenceStore.java new file mode 100644 index 0000000..87e5de5 --- /dev/null +++ b/plugin/src/winterwell/markdown/preferences/OverlayPreferenceStore.java @@ -0,0 +1,440 @@ +package winterwell.markdown.preferences; + +import org.eclipse.core.runtime.Assert; +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.preference.PreferenceStore; +import org.eclipse.jface.util.IPropertyChangeListener; +import org.eclipse.jface.util.PropertyChangeEvent; + +/** + * An overlaying preference store. + * + * @since 2.1 + */ +public class OverlayPreferenceStore implements IPreferenceStore { + + /** + * Descriptor used to denote data types. + */ + public static final class TypeDescriptor { + + private TypeDescriptor() {} + } + + public static final TypeDescriptor BOOLEAN = new TypeDescriptor(); + public static final TypeDescriptor DOUBLE = new TypeDescriptor(); + public static final TypeDescriptor FLOAT = new TypeDescriptor(); + public static final TypeDescriptor INT = new TypeDescriptor(); + public static final TypeDescriptor LONG = new TypeDescriptor(); + public static final TypeDescriptor STRING = new TypeDescriptor(); + + /** + * Data structure for the overlay key. + */ + public static class OverlayKey { + + TypeDescriptor fDescriptor; + String fKey; + + public OverlayKey(TypeDescriptor descriptor, String key) { + fDescriptor = descriptor; + fKey = key; + } + } + + /* + * @see IPropertyChangeListener + */ + private class PropertyListener implements IPropertyChangeListener { + + @Override + public void propertyChange(PropertyChangeEvent event) { + OverlayKey key = findOverlayKey(event.getProperty()); + if (key != null) propagateProperty(fParent, key, fStore); + } + } + + /** The parent preference store. */ + private IPreferenceStore fParent; + /** This store. */ + private IPreferenceStore fStore; + /** The keys of this store. */ + private OverlayKey[] fOverlayKeys; + /** The property listener. */ + private PropertyListener fPropertyListener; + private boolean fLoaded; + + /** + * Creates and returns a new overlay preference store. + * + * @param parent the parent preference store + * @param overlayKeys the overlay keys + */ + public OverlayPreferenceStore(IPreferenceStore parent, OverlayKey[] overlayKeys) { + fParent = parent; + fOverlayKeys = overlayKeys; + fStore = new PreferenceStore(); + } + + /** + * Tries to find and return the overlay key for the given preference key string. + * + * @param key the preference key string + * @return the overlay key or null if none can be found + */ + private OverlayKey findOverlayKey(String key) { + for (int i = 0; i < fOverlayKeys.length; i++) { + if (fOverlayKeys[i].fKey.equals(key)) return fOverlayKeys[i]; + } + return null; + } + + /** + * Tells whether the given preference key string is covered by this overlay store. + * + * @param key the preference key string + * @return true if this overlay store covers the given key + */ + private boolean covers(String key) { + return (findOverlayKey(key) != null); + } + + /** + * Propagates the given overlay key from the orgin to the target preference store. + * + * @param orgin the source preference store + * @param key the overlay key + * @param target the preference store to which the key is propagated + */ + private void propagateProperty(IPreferenceStore orgin, OverlayKey key, IPreferenceStore target) { + + if (orgin.isDefault(key.fKey)) { + if (!target.isDefault(key.fKey)) target.setToDefault(key.fKey); + return; + } + + TypeDescriptor d = key.fDescriptor; + if (BOOLEAN == d) { + + boolean originValue = orgin.getBoolean(key.fKey); + boolean targetValue = target.getBoolean(key.fKey); + if (targetValue != originValue) target.setValue(key.fKey, originValue); + + } else if (DOUBLE == d) { + + double originValue = orgin.getDouble(key.fKey); + double targetValue = target.getDouble(key.fKey); + if (targetValue != originValue) target.setValue(key.fKey, originValue); + + } else if (FLOAT == d) { + + float originValue = orgin.getFloat(key.fKey); + float targetValue = target.getFloat(key.fKey); + if (targetValue != originValue) target.setValue(key.fKey, originValue); + + } else if (INT == d) { + + int originValue = orgin.getInt(key.fKey); + int targetValue = target.getInt(key.fKey); + if (targetValue != originValue) target.setValue(key.fKey, originValue); + + } else if (LONG == d) { + + long originValue = orgin.getLong(key.fKey); + long targetValue = target.getLong(key.fKey); + if (targetValue != originValue) target.setValue(key.fKey, originValue); + + } else if (STRING == d) { + + String originValue = orgin.getString(key.fKey); + String targetValue = target.getString(key.fKey); + if (targetValue != null && originValue != null && !targetValue.equals(originValue)) + target.setValue(key.fKey, originValue); + + } + } + + /** + * Propagates all overlay keys from this store to the parent store. + */ + public void propagate() { + for (int i = 0; i < fOverlayKeys.length; i++) + propagateProperty(fStore, fOverlayKeys[i], fParent); + } + + /** + * Loads the given key from the orgin into the target. + * + * @param orgin the source preference store + * @param key the overlay key + * @param target the preference store to which the key is propagated + * @param forceInitialization if true the value in the target gets initialized + * before loading + */ + private void loadProperty(IPreferenceStore orgin, OverlayKey key, IPreferenceStore target, + boolean forceInitialization) { + TypeDescriptor d = key.fDescriptor; + if (BOOLEAN == d) { + + if (forceInitialization) target.setValue(key.fKey, true); + target.setValue(key.fKey, orgin.getBoolean(key.fKey)); + target.setDefault(key.fKey, orgin.getDefaultBoolean(key.fKey)); + + } else if (DOUBLE == d) { + + if (forceInitialization) target.setValue(key.fKey, 1.0D); + target.setValue(key.fKey, orgin.getDouble(key.fKey)); + target.setDefault(key.fKey, orgin.getDefaultDouble(key.fKey)); + + } else if (FLOAT == d) { + + if (forceInitialization) target.setValue(key.fKey, 1.0F); + target.setValue(key.fKey, orgin.getFloat(key.fKey)); + target.setDefault(key.fKey, orgin.getDefaultFloat(key.fKey)); + + } else if (INT == d) { + + if (forceInitialization) target.setValue(key.fKey, 1); + target.setValue(key.fKey, orgin.getInt(key.fKey)); + target.setDefault(key.fKey, orgin.getDefaultInt(key.fKey)); + + } else if (LONG == d) { + + if (forceInitialization) target.setValue(key.fKey, 1L); + target.setValue(key.fKey, orgin.getLong(key.fKey)); + target.setDefault(key.fKey, orgin.getDefaultLong(key.fKey)); + + } else if (STRING == d) { + + if (forceInitialization) target.setValue(key.fKey, "1"); //$NON-NLS-1$ + target.setValue(key.fKey, orgin.getString(key.fKey)); + target.setDefault(key.fKey, orgin.getDefaultString(key.fKey)); + + } + } + + /** + * Loads the values from the parent into this store. + */ + public void load() { + for (int i = 0; i < fOverlayKeys.length; i++) + loadProperty(fParent, fOverlayKeys[i], fStore, true); + + fLoaded = true; + } + + /** + * Loads the default values. + */ + public void loadDefaults() { + for (int i = 0; i < fOverlayKeys.length; i++) + setToDefault(fOverlayKeys[i].fKey); + } + + /** + * Starts to listen for changes. + */ + public void start() { + if (fPropertyListener == null) { + fPropertyListener = new PropertyListener(); + fParent.addPropertyChangeListener(fPropertyListener); + } + } + + /** + * Stops to listen for changes. + */ + public void stop() { + if (fPropertyListener != null) { + fParent.removePropertyChangeListener(fPropertyListener); + fPropertyListener = null; + } + } + + @Override + public void addPropertyChangeListener(IPropertyChangeListener listener) { + fStore.addPropertyChangeListener(listener); + } + + @Override + public void removePropertyChangeListener(IPropertyChangeListener listener) { + fStore.removePropertyChangeListener(listener); + } + + @Override + public void firePropertyChangeEvent(String name, Object oldValue, Object newValue) { + fStore.firePropertyChangeEvent(name, oldValue, newValue); + } + + @Override + public boolean contains(String name) { + return fStore.contains(name); + } + + @Override + public boolean getBoolean(String name) { + return fStore.getBoolean(name); + } + + @Override + public boolean getDefaultBoolean(String name) { + return fStore.getDefaultBoolean(name); + } + + @Override + public double getDefaultDouble(String name) { + return fStore.getDefaultDouble(name); + } + + @Override + public float getDefaultFloat(String name) { + return fStore.getDefaultFloat(name); + } + + @Override + public int getDefaultInt(String name) { + return fStore.getDefaultInt(name); + } + + @Override + public long getDefaultLong(String name) { + return fStore.getDefaultLong(name); + } + + @Override + public String getDefaultString(String name) { + return fStore.getDefaultString(name); + } + + @Override + public double getDouble(String name) { + return fStore.getDouble(name); + } + + @Override + public float getFloat(String name) { + return fStore.getFloat(name); + } + + @Override + public int getInt(String name) { + return fStore.getInt(name); + } + + @Override + public long getLong(String name) { + return fStore.getLong(name); + } + + @Override + public String getString(String name) { + return fStore.getString(name); + } + + @Override + public boolean isDefault(String name) { + return fStore.isDefault(name); + } + + @Override + public boolean needsSaving() { + return fStore.needsSaving(); + } + + @Override + public void putValue(String name, String value) { + if (covers(name)) fStore.putValue(name, value); + } + + @Override + public void setDefault(String name, double value) { + if (covers(name)) fStore.setDefault(name, value); + } + + @Override + public void setDefault(String name, float value) { + if (covers(name)) fStore.setDefault(name, value); + } + + @Override + public void setDefault(String name, int value) { + if (covers(name)) fStore.setDefault(name, value); + } + + @Override + public void setDefault(String name, long value) { + if (covers(name)) fStore.setDefault(name, value); + } + + @Override + public void setDefault(String name, String value) { + if (covers(name)) fStore.setDefault(name, value); + } + + @Override + public void setDefault(String name, boolean value) { + if (covers(name)) fStore.setDefault(name, value); + } + + @Override + public void setToDefault(String name) { + fStore.setToDefault(name); + } + + @Override + public void setValue(String name, double value) { + if (covers(name)) fStore.setValue(name, value); + } + + @Override + public void setValue(String name, float value) { + if (covers(name)) fStore.setValue(name, value); + } + + @Override + public void setValue(String name, int value) { + if (covers(name)) fStore.setValue(name, value); + } + + @Override + public void setValue(String name, long value) { + if (covers(name)) fStore.setValue(name, value); + } + + @Override + public void setValue(String name, String value) { + if (covers(name)) fStore.setValue(name, value); + } + + @Override + public void setValue(String name, boolean value) { + if (covers(name)) fStore.setValue(name, value); + } + + /** + * The keys to add to the list of overlay keys. + *

+ * Note: This method must be called before {@link #load()} is called. + *

+ * + * @param keys an array with overlay keys + * @since 3.0 + */ + public void addKeys(OverlayKey[] keys) { + Assert.isTrue(!fLoaded); + Assert.isNotNull(keys); + + int overlayKeysLength = fOverlayKeys.length; + OverlayKey[] result = new OverlayKey[keys.length + overlayKeysLength]; + + for (int i = 0, length = overlayKeysLength; i < length; i++) + result[i] = fOverlayKeys[i]; + + for (int i = 0, length = keys.length; i < length; i++) + result[overlayKeysLength + i] = keys[i]; + + fOverlayKeys = result; + + if (fLoaded) load(); + } +} diff --git a/plugin/src/winterwell/markdown/preferences/Prefs.java b/plugin/src/winterwell/markdown/preferences/Prefs.java index a5727b8..c6fa5e9 100644 --- a/plugin/src/winterwell/markdown/preferences/Prefs.java +++ b/plugin/src/winterwell/markdown/preferences/Prefs.java @@ -2,7 +2,11 @@ public interface Prefs { - // Preference store keys + // preference related values + public static final String DEF_MDCSS = "markdown.css"; + public static final String CSS = "css"; + + // preference store keys public static final String PREF_FOLDING = "Pref_Folding"; public static final String PREF_WORD_WRAP = "Pref_WordWrap"; public static final String PREF_TASK_TAGS = "Pref_TaskTagsOn"; @@ -35,8 +39,8 @@ public interface Prefs { public static final String PREF_CSS_DEFAULT = "Pref_Markdown_Css"; public static final String PREF_CSS_CUSTOM = ""; - // Public preference related values - public static final String DEF_MDCSS = "markdown.css"; - public static final String CSS = "css"; + public static final String PREF_SPELLING_ENABLED = "Pref_Spelling_Enabled"; + + public static final String PREF_UPDATE_DELAY = "Pref_Update_Delay"; } diff --git a/plugin/src/winterwell/markdown/preferences/PrefsInit.java b/plugin/src/winterwell/markdown/preferences/PrefsInit.java index edade5b..654ea89 100644 --- a/plugin/src/winterwell/markdown/preferences/PrefsInit.java +++ b/plugin/src/winterwell/markdown/preferences/PrefsInit.java @@ -47,6 +47,8 @@ public void initializeDefaultPreferences() { store.setDefault(PREF_GITHUB_SYNTAX, true); store.setDefault(PREF_MULTIMARKDOWN_METADATA, false); + store.setDefault(PREF_SPELLING_ENABLED, true); + PreferenceConverter.setDefault(store, PREF_DEFAULT, DEF_DEFAULT); PreferenceConverter.setDefault(store, PREF_COMMENT, DEF_COMMENT); PreferenceConverter.setDefault(store, PREF_HEADER, DEF_HEADER); @@ -55,7 +57,7 @@ public void initializeDefaultPreferences() { PreferenceConverter.setDefault(store, PREF_CODE_BG, DEF_CODE_BG); } - // get bundle cache URL for the default stylesheet + // create bundle cache URL for the default stylesheet private String cssDefault() { Bundle bundle = Platform.getBundle(MarkdownUIPlugin.PLUGIN_ID); URL url = FileLocator.find(bundle, new Path("resources/" + DEF_MDCSS), null); diff --git a/plugin/src/winterwell/markdown/util/PartListener.java b/plugin/src/winterwell/markdown/util/PartListener.java new file mode 100644 index 0000000..f6a9da5 --- /dev/null +++ b/plugin/src/winterwell/markdown/util/PartListener.java @@ -0,0 +1,23 @@ +package winterwell.markdown.util; + +import org.eclipse.ui.IPartListener; +import org.eclipse.ui.IWorkbenchPart; + +public class PartListener implements IPartListener { + + @Override + public void partActivated(IWorkbenchPart part) {} + + @Override + public void partBroughtToTop(IWorkbenchPart part) {} + + @Override + public void partClosed(IWorkbenchPart part) {} + + @Override + public void partDeactivated(IWorkbenchPart part) {} + + @Override + public void partOpened(IWorkbenchPart part) {} + +} diff --git a/plugin/src/winterwell/markdown/util/Strings.java b/plugin/src/winterwell/markdown/util/Strings.java index a34bbeb..8b56558 100644 --- a/plugin/src/winterwell/markdown/util/Strings.java +++ b/plugin/src/winterwell/markdown/util/Strings.java @@ -22,6 +22,7 @@ public final class Strings { public static final String ISO_LATIN = "ISO-8859-1"; public static final String UTF_8 = "UTF-8"; public static final String EOL = System.getProperty("line.separator"); + public static final String EOL2 = EOL + EOL; public static final String APOSTROPHES = "'`\u2019\u2018\u2019\u02BC"; public static final Pattern ASCII_PUNCTUATION = Pattern diff --git a/plugin/src/winterwell/markdown/views/Limiter.java b/plugin/src/winterwell/markdown/views/Limiter.java new file mode 100644 index 0000000..9a6ce1d --- /dev/null +++ b/plugin/src/winterwell/markdown/views/Limiter.java @@ -0,0 +1,94 @@ +package winterwell.markdown.views; + +import org.eclipse.swt.SWTException; +import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.PlatformUI; + +import winterwell.markdown.MarkdownUIPlugin; +import winterwell.markdown.preferences.Prefs; + +/** + * Rate limits view updates by ignoring all but the last update trigger received within a limit + * window. + *

+ * A trigger received outside of an active limit window causes an immediate update and the opening + * of a an active limit window. + *

+ * All triggers received within an active limit window causes, on termination of that active limit + * window, a single update and the start of a new active limit window. + *

+ * If no trigger is received within the an active limit window, no terminal update is performed and + * no new active limit window is opened. + */ +public class Limiter extends Thread { + + private MarkdownPreview view; + private final Display display; + private final int delay; + + private boolean running; + private long start; + private long mark; + + public Limiter(MarkdownPreview view) { + super("Limiter"); + this.view = view; + this.display = PlatformUI.getWorkbench().getDisplay(); + this.delay = MarkdownUIPlugin.getDefault().getPreferenceStore().getInt(Prefs.PREF_UPDATE_DELAY) * 1000; + } + + public void dispose() { + this.view = null; + } + + public void trigger() { + if (view != null) { + if (!running) { + startTimer(); + } else { + mark(System.currentTimeMillis()); + } + } + } + + private synchronized void startTimer() { + running = true; + doUpdate(); + + try { + display.asyncExec(new Runnable() { + + public void run() { + while (running) { + start = System.currentTimeMillis(); + mark(start); + while (System.currentTimeMillis() < start + delay) { + try { + Thread.sleep(delay); + } catch (InterruptedException e) {} + } + if (mark > start) { // triggered during window + doUpdate(); + } else { // no trigger, so close window + running = false; + } + } + } + }); + } catch (SWTException e) {} + } + + private synchronized void mark(long mark) { + this.mark = System.currentTimeMillis(); + } + + // asynchronous callback to perform the actual update + private void doUpdate() { + display.asyncExec(new Runnable() { + + public void run() { + if (view != null) view.update(); + } + }); + } +} diff --git a/plugin/src/winterwell/markdown/views/MarkdownPreview.java b/plugin/src/winterwell/markdown/views/MarkdownPreview.java index 1e29c70..9b038d0 100755 --- a/plugin/src/winterwell/markdown/views/MarkdownPreview.java +++ b/plugin/src/winterwell/markdown/views/MarkdownPreview.java @@ -24,6 +24,9 @@ import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.text.ITextListener; +import org.eclipse.jface.text.ITextViewer; +import org.eclipse.jface.text.TextEvent; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.swt.SWT; @@ -32,7 +35,11 @@ import org.eclipse.swt.browser.ProgressEvent; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IPartListener; import org.eclipse.ui.IPathEditorInput; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PlatformUI; import org.eclipse.ui.part.ViewPart; import org.osgi.framework.Bundle; @@ -42,6 +49,7 @@ import winterwell.markdown.editors.MarkdownEditor; import winterwell.markdown.pagemodel.MarkdownPage; import winterwell.markdown.preferences.Prefs; +import winterwell.markdown.util.PartListener; import winterwell.markdown.util.Strings; public class MarkdownPreview extends ViewPart implements Prefs { @@ -57,50 +65,99 @@ public class MarkdownPreview extends ViewPart implements Prefs { + "D=(D.clientHeight)?D:B;return D.scrollTop;}" //$NON-NLS-1$ + "}; return getScrollTop();"; //$NON-NLS-1$ - public static MarkdownPreview preview = null; - private Browser viewer = null; - private StyleListener styleListener; + private static MarkdownPreview view; + private Browser browser; - public class StyleListener implements IPropertyChangeListener { + private Limiter limiter; + + private IPartListener partListener = new PartListener() { + + @Override + public void partActivated(IWorkbenchPart part) { + if (part instanceof MarkdownEditor) { + ((MarkdownEditor) part).getViewer().addTextListener(textListener); + limiter.trigger(); + } else if (part instanceof MarkdownPreview) { + limiter.trigger(); + } + } + + @Override + public void partClosed(IWorkbenchPart part) { + if (part instanceof MarkdownEditor) { + getActivePage().hideView(view); + } + } + }; + + private final IPropertyChangeListener styleListener = new IPropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent event) { switch (event.getProperty()) { case PREF_CSS_CUSTOM: case PREF_CSS_DEFAULT: - update(); + limiter.trigger(); } } - } + }; + + private ITextListener textListener = new ITextListener() { + + @Override + public void textChanged(TextEvent event) { + limiter.trigger(); + } + }; /** * The constructor. */ public MarkdownPreview() { - preview = this; - styleListener = new StyleListener(); - MarkdownUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(styleListener); + view = this; } /** - * Callback to create and initialize the viewer. + * Callback to create and initialize the browser. */ @Override public void createPartControl(Composite parent) { - viewer = new Browser(parent, SWT.MULTI); + browser = new Browser(parent, SWT.MULTI); + limiter = new Limiter(view); + + getPreferenceStore().addPropertyChangeListener(styleListener); + getActivePage().addPartListener(partListener); } - public void update() { - if (viewer == null) return; + @Override + public void dispose() { + getPreferenceStore().removePropertyChangeListener(styleListener); + getActivePage().removePartListener(partListener); + ITextViewer srcViewer = getSourceViewer(); + srcViewer.removeTextListener(textListener); + + if (limiter != null) { + limiter.dispose(); + limiter = null; + } + browser = null; + super.dispose(); + } + + public synchronized void update() { + if (browser == null) return; try { IEditorPart editor = ActionBarContributor.getActiveEditor(); if (!(editor instanceof MarkdownEditor)) { - viewer.setText(""); + browser.setText(""); return; } - Object result = viewer.evaluate(GETSCROLLTOP); + // // object used for wait/notify communications + // Boolean load = true; + + Object result = browser.evaluate(GETSCROLLTOP); final int scrollTop = result != null ? ((Number) result).intValue() : 0; String html = ""; @@ -108,22 +165,26 @@ public void update() { MarkdownPage page = ed.getMarkdownPage(); if (page != null) { html = page.html(); - IPath path = getEditorInput(editor); + IPath path = getInputPath(editor); html = addHeader(html, getBaseUrl(path), getMdStyles(path)); - viewer.addProgressListener(new ProgressAdapter() { + browser.addProgressListener(new ProgressAdapter() { @Override public void completed(ProgressEvent event) { - viewer.removeProgressListener(this); - viewer.execute(String.format("window.scrollTo(0,%d);", scrollTop)); //$NON-NLS-1$ - viewer.setRedraw(true); + browser.removeProgressListener(this); + browser.execute(String.format("window.scrollTo(0,%d);", scrollTop)); //$NON-NLS-1$ + browser.setRedraw(true); + // load.notify(); } }); } - viewer.setRedraw(false); - viewer.setText(html); + browser.setRedraw(false); + browser.setText(html); + + // wait for the browser load operation to complete + // load.wait(getPreferenceStore().getInt(PREF_UPDATE_DELAY) * 1000); } catch (Exception e) { StringWriter errors = new StringWriter(); @@ -141,23 +202,27 @@ public void completed(ProgressEvent event) { } /** - * Passing the focus request to the viewer's control. + * Passing the focus request to the browser's control. */ @Override public void setFocus() { - if (viewer == null) return; - viewer.setFocus(); - update(); + if (browser != null) browser.setFocus(); } - @Override - public void dispose() { - MarkdownUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(styleListener); - viewer = null; - super.dispose(); + protected IWorkbenchPage getActivePage() { + return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); + } + + protected ITextViewer getSourceViewer() { + MarkdownEditor editor = (MarkdownEditor) ActionBarContributor.getActiveEditor(); + return editor.getViewer(); + } + + protected IPreferenceStore getPreferenceStore() { + return MarkdownUIPlugin.getDefault().getPreferenceStore(); } - private IPath getEditorInput(IEditorPart editor) { + private IPath getInputPath(IEditorPart editor) { IPathEditorInput input = (IPathEditorInput) editor.getEditorInput(); return input.getPath(); } From 7fd0ffb425fa6e84910d0c1da15b2e493d2ca2f4 Mon Sep 17 00:00:00 2001 From: GRosenberg Date: Sat, 26 Nov 2016 20:38:09 -0800 Subject: [PATCH 20/20] Add Markdown speller preference page. --- plugin/.gitignore | 1 + plugin/META-INF/MANIFEST.MF | 5 +- plugin/plugin.xml | 6 + plugin/src/winterwell/markdown/Log.java | 14 +- .../src/winterwell/markdown/MarkdownUI.java | 60 ++ .../winterwell/markdown/MarkdownUIPlugin.java | 56 -- .../WritableChainedPreferenceStore.java | 88 +++ .../markdown/editors/MDConfiguration.java | 56 +- .../markdown/editors/MDScanner.java | 4 +- .../markdown/editors/MarkdownEditor.java | 24 +- .../markdown/pagemodel/MarkdownPage.java | 4 +- .../markdown/pagemodel/MdConverter.java | 4 +- .../EclipsePreferencesAdapter.java | 256 -------- .../preferences/PrefPageColoring.java | 4 +- .../markdown/preferences/PrefPageGeneral.java | 4 +- .../markdown/preferences/PrefPageSpeller.java | 59 ++ .../markdown/preferences/PrefPageStyles.java | 6 +- .../markdown/preferences/PrefsInit.java | 9 +- ...tractConfigurationBlockPreferencePage.java | 96 +++ .../spelling/IEditorsStatusConstants.java | 18 + .../IPreferenceConfigurationBlock.java | 74 +++ .../OverlayPreferenceStore.java | 70 ++- .../spelling/SpellingConfigurationBlock.java | 567 ++++++++++++++++++ .../markdown/spelling/StatusInfo.java | 177 ++++++ .../markdown/spelling/StatusUtil.java | 81 +++ .../markdown/spelling/TextEditorMessages.java | 153 +++++ .../spelling/TextEditorMessages.properties | 160 +++++ .../winterwell/markdown/views/Limiter.java | 4 +- .../markdown/views/MarkdownPreview.java | 12 +- 29 files changed, 1643 insertions(+), 429 deletions(-) create mode 100755 plugin/src/winterwell/markdown/MarkdownUI.java delete mode 100755 plugin/src/winterwell/markdown/MarkdownUIPlugin.java create mode 100644 plugin/src/winterwell/markdown/WritableChainedPreferenceStore.java delete mode 100644 plugin/src/winterwell/markdown/preferences/EclipsePreferencesAdapter.java create mode 100644 plugin/src/winterwell/markdown/preferences/PrefPageSpeller.java create mode 100644 plugin/src/winterwell/markdown/spelling/AbstractConfigurationBlockPreferencePage.java create mode 100644 plugin/src/winterwell/markdown/spelling/IEditorsStatusConstants.java create mode 100644 plugin/src/winterwell/markdown/spelling/IPreferenceConfigurationBlock.java rename plugin/src/winterwell/markdown/{preferences => spelling}/OverlayPreferenceStore.java (83%) create mode 100644 plugin/src/winterwell/markdown/spelling/SpellingConfigurationBlock.java create mode 100644 plugin/src/winterwell/markdown/spelling/StatusInfo.java create mode 100644 plugin/src/winterwell/markdown/spelling/StatusUtil.java create mode 100644 plugin/src/winterwell/markdown/spelling/TextEditorMessages.java create mode 100644 plugin/src/winterwell/markdown/spelling/TextEditorMessages.properties diff --git a/plugin/.gitignore b/plugin/.gitignore index d0fdd30..04aad86 100644 --- a/plugin/.gitignore +++ b/plugin/.gitignore @@ -1 +1,2 @@ /utils/ +/attic/ diff --git a/plugin/META-INF/MANIFEST.MF b/plugin/META-INF/MANIFEST.MF index 450ad01..245fc60 100644 --- a/plugin/META-INF/MANIFEST.MF +++ b/plugin/META-INF/MANIFEST.MF @@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: Markdown Bundle-SymbolicName: winterwell.markdown;singleton:=true Bundle-Version: 1.3.0.qualifier -Bundle-Activator: winterwell.markdown.MarkdownUIPlugin +Bundle-Activator: winterwell.markdown.MarkdownUI Bundle-Vendor: Winterwell Associates Ltd Require-Bundle: org.eclipse.core.runtime, org.eclipse.core.resources, @@ -13,7 +13,8 @@ Require-Bundle: org.eclipse.core.runtime, org.eclipse.core.commands, org.eclipse.ui.workbench, org.eclipse.jface, - org.eclipse.jface.text + org.eclipse.jface.text, + org.eclipse.ui.workbench.texteditor Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Bundle-ClassPath: ., diff --git a/plugin/plugin.xml b/plugin/plugin.xml index cc6594b..bf06744 100755 --- a/plugin/plugin.xml +++ b/plugin/plugin.xml @@ -23,6 +23,12 @@ id="winterwell.markdown.preferences.PrefPageHighlight" name="Syntax Coloring"> + + diff --git a/plugin/src/winterwell/markdown/Log.java b/plugin/src/winterwell/markdown/Log.java index ebf8cd6..8d7848c 100644 --- a/plugin/src/winterwell/markdown/Log.java +++ b/plugin/src/winterwell/markdown/Log.java @@ -11,6 +11,10 @@ */ public class Log { + public static IStatus createStatus(int severity, int code, String message, Throwable exception) { + return new Status(severity, MarkdownUI.PLUGIN_ID, code, message, exception); + } + public static void info(String message) { log(IStatus.INFO, IStatus.OK, message, null); } @@ -27,16 +31,16 @@ public static void error(String message, Throwable exception) { log(IStatus.ERROR, IStatus.ERROR, message, exception); } - public static void log(int severity, int code, String message, Throwable exception) { - log(createStatus(severity, code, message, exception)); + public static void error(int code, String message, Throwable exception) { + log(createStatus(IStatus.ERROR, code, message, exception)); } - public static IStatus createStatus(int severity, int code, String message, Throwable exception) { - return new Status(severity, MarkdownUIPlugin.PLUGIN_ID, code, message, exception); + public static void log(int severity, int code, String message, Throwable exception) { + log(createStatus(severity, code, message, exception)); } public static void log(IStatus status) { - ILog log = MarkdownUIPlugin.getDefault().getLog(); + ILog log = MarkdownUI.getDefault().getLog(); log.log(status); } } diff --git a/plugin/src/winterwell/markdown/MarkdownUI.java b/plugin/src/winterwell/markdown/MarkdownUI.java new file mode 100755 index 0000000..fff04cf --- /dev/null +++ b/plugin/src/winterwell/markdown/MarkdownUI.java @@ -0,0 +1,60 @@ +package winterwell.markdown; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.editors.text.EditorsUI; +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.osgi.framework.BundleContext; + +/** + * The activator class controls the plug-in life cycle + */ +public class MarkdownUI extends AbstractUIPlugin { + + // The plug-in ID + public static final String PLUGIN_ID = "winterwell.markdown"; + + // The shared instance + private static MarkdownUI plugin; + + private IPreferenceStore combinedStore; + + public MarkdownUI() { + super(); + } + + public void start(BundleContext context) throws Exception { + super.start(context); + plugin = this; + } + + public void stop(BundleContext context) throws Exception { + plugin = null; + super.stop(context); + } + + /** + * Returns the shared instance + */ + public static MarkdownUI getDefault() { + return plugin; + } + + /** + * Returns a chained preference store representing the combined values of the MarkdownUI, + * EditorsUI, and PlatformUI stores. + */ + public IPreferenceStore getCombinedPreferenceStore() { + if (combinedStore == null) { + List stores = new ArrayList<>(); + stores.add(getPreferenceStore()); // MarkdownUI store + stores.add(EditorsUI.getPreferenceStore()); + stores.add(PlatformUI.getPreferenceStore()); + combinedStore = new WritableChainedPreferenceStore(stores.toArray(new IPreferenceStore[stores.size()])); + } + return combinedStore; + } +} diff --git a/plugin/src/winterwell/markdown/MarkdownUIPlugin.java b/plugin/src/winterwell/markdown/MarkdownUIPlugin.java deleted file mode 100755 index 1f7e313..0000000 --- a/plugin/src/winterwell/markdown/MarkdownUIPlugin.java +++ /dev/null @@ -1,56 +0,0 @@ -package winterwell.markdown; - -import org.eclipse.ui.plugin.AbstractUIPlugin; -import org.osgi.framework.BundleContext; - -/** - * The activator class controls the plug-in life cycle - */ -public class MarkdownUIPlugin extends AbstractUIPlugin { - - // The plug-in ID - public static final String PLUGIN_ID = "winterwell.markdown"; - - // The shared instance - private static MarkdownUIPlugin plugin; - - // preference store specific to this plugin - // private IPreferenceStore store; - - public MarkdownUIPlugin() { - super(); - } - - public void start(BundleContext context) throws Exception { - super.start(context); - plugin = this; - } - - public void stop(BundleContext context) throws Exception { - plugin = null; - super.stop(context); - } - - /** - * Returns the shared instance - */ - public static MarkdownUIPlugin getDefault() { - return plugin; - } - - // /** - // * Workaround to allow editor specific enabling of the speller. Overrides the global - // preference - // * value for spelling enabled. - // */ - // public IPreferenceStore getPreferenceStore() { - // if (store == null) { - // OverlayKey[] keys = new OverlayKey[] { - // new OverlayKey(OverlayPreferenceStore.BOOLEAN, SpellingService.PREFERENCE_SPELLING_ENABLED) - // }; - // this.store = new OverlayPreferenceStore(super.getPreferenceStore(), keys); - // this.store.setValue(SpellingService.PREFERENCE_SPELLING_ENABLED, true); - // } - // return store; - // } -} diff --git a/plugin/src/winterwell/markdown/WritableChainedPreferenceStore.java b/plugin/src/winterwell/markdown/WritableChainedPreferenceStore.java new file mode 100644 index 0000000..328b455 --- /dev/null +++ b/plugin/src/winterwell/markdown/WritableChainedPreferenceStore.java @@ -0,0 +1,88 @@ +package winterwell.markdown; + +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.ui.texteditor.ChainedPreferenceStore; + +/** + * Provides a chained preference store where the first of the chained stores is available for writes. + */ +public class WritableChainedPreferenceStore extends ChainedPreferenceStore { + + private IPreferenceStore writeStore; + + public WritableChainedPreferenceStore(IPreferenceStore[] preferenceStores) { + super(preferenceStores); + this.writeStore = preferenceStores[0]; + } + + @Override + public boolean needsSaving() { + return writeStore.needsSaving(); + } + + @Override + public void setValue(String name, double value) { + writeStore.setValue(name, value); + } + + @Override + public void setValue(String name, float value) { + writeStore.setValue(name, value); + } + + @Override + public void setValue(String name, int value) { + writeStore.setValue(name, value); + } + + @Override + public void setValue(String name, long value) { + writeStore.setValue(name, value); + } + + @Override + public void setValue(String name, String value) { + writeStore.setValue(name, value); + } + + @Override + public void setValue(String name, boolean value) { + writeStore.setValue(name, value); + } + + @Override + public void setToDefault(String name) { + writeStore.setToDefault(name); + } + + @Override + public void setDefault(String name, boolean value) { + + writeStore.setDefault(name, value); + } + + @Override + public void setDefault(String name, double value) { + writeStore.setDefault(name, value); + } + + @Override + public void setDefault(String name, float value) { + writeStore.setDefault(name, value); + } + + @Override + public void setDefault(String name, int value) { + writeStore.setDefault(name, value); + } + + @Override + public void setDefault(String name, long value) { + writeStore.setDefault(name, value); + } + + @Override + public void setDefault(String name, String defaultObject) { + writeStore.setDefault(name, defaultObject); + } +} diff --git a/plugin/src/winterwell/markdown/editors/MDConfiguration.java b/plugin/src/winterwell/markdown/editors/MDConfiguration.java index 63f53cb..63fe0b7 100755 --- a/plugin/src/winterwell/markdown/editors/MDConfiguration.java +++ b/plugin/src/winterwell/markdown/editors/MDConfiguration.java @@ -6,15 +6,19 @@ import org.eclipse.jface.text.presentation.IPresentationReconciler; import org.eclipse.jface.text.presentation.PresentationReconciler; import org.eclipse.jface.text.reconciler.IReconciler; +import org.eclipse.jface.text.reconciler.IReconcilingStrategy; +import org.eclipse.jface.text.reconciler.MonoReconciler; import org.eclipse.jface.text.rules.DefaultDamagerRepairer; import org.eclipse.jface.text.source.ISourceViewer; import org.eclipse.ui.editors.text.TextSourceViewerConfiguration; +import org.eclipse.ui.texteditor.spelling.SpellingReconcileStrategy; +import org.eclipse.ui.texteditor.spelling.SpellingService; + +import winterwell.markdown.preferences.Prefs; public class MDConfiguration extends TextSourceViewerConfiguration { private ColorManager colorManager; - // private OverlayPreferenceStore spellStore; - // private SpellingService spellService; public MDConfiguration(ColorManager colorManager, IPreferenceStore store) { super(store); @@ -33,41 +37,25 @@ public IPresentationReconciler getPresentationReconciler(ISourceViewer sourceVie @Override public IReconciler getReconciler(ISourceViewer viewer) { - // boolean global = - // fPreferenceStore.getBoolean(SpellingService.PREFERENCE_SPELLING_ENABLED); - // boolean local = fPreferenceStore.getBoolean(Prefs.PREF_SPELLING_ENABLED); - // if (local && !global) { - // SpellingService service = getSpellingService(); - // if (service.getActiveSpellingEngineDescriptor(getSpellStore()) == null) { - // return super.getReconciler(viewer); // bail - // }; - // - // IReconcilingStrategy strategy = new SpellingReconcileStrategy(viewer, service); - // MonoReconciler reconciler = new MonoReconciler(strategy, false); - // reconciler.setDelay(500); - // return reconciler; - // } + boolean local = fPreferenceStore.getBoolean(Prefs.PREF_SPELLING_ENABLED); + if (local) { + + // use the combined preference store + SpellingService service = new SpellingService(fPreferenceStore); + if (service.getActiveSpellingEngineDescriptor(fPreferenceStore) == null) { + return super.getReconciler(viewer); // bail + } + + IReconcilingStrategy strategy = new SpellingReconcileStrategy(viewer, service); + MonoReconciler reconciler = new MonoReconciler(strategy, false); + reconciler.setDelay(500); + return reconciler; + } + + // default; uses just the PlatformUI store return super.getReconciler(viewer); } - // private SpellingService getSpellingService() { - // if (spellService == null) { - // spellService = new SpellingService(getSpellStore()); - // } - // return spellService; - // } - // - // private IPreferenceStore getSpellStore() { - // if (spellStore == null) { - // OverlayKey[] keys = new OverlayKey[] { - // new OverlayKey(OverlayPreferenceStore.BOOLEAN, SpellingService.PREFERENCE_SPELLING_ENABLED) - // }; - // this.spellStore = new OverlayPreferenceStore(fPreferenceStore, keys); - // this.spellStore.setValue(SpellingService.PREFERENCE_SPELLING_ENABLED, true); - // } - // return spellStore; - // } - @SuppressWarnings("unused") @Override public ITextHover getTextHover(ISourceViewer sourceViewer, String contentType) { diff --git a/plugin/src/winterwell/markdown/editors/MDScanner.java b/plugin/src/winterwell/markdown/editors/MDScanner.java index 34da047..5cd27c1 100755 --- a/plugin/src/winterwell/markdown/editors/MDScanner.java +++ b/plugin/src/winterwell/markdown/editors/MDScanner.java @@ -14,7 +14,7 @@ import org.eclipse.jface.text.rules.Token; import org.eclipse.swt.SWT; -import winterwell.markdown.MarkdownUIPlugin; +import winterwell.markdown.MarkdownUI; import winterwell.markdown.preferences.PrefPageGeneral; /** @@ -26,7 +26,7 @@ public class MDScanner extends RuleBasedScanner { ColorManager cm; public MDScanner(ColorManager cm) { this.cm = cm; - IPreferenceStore pStore = MarkdownUIPlugin.getDefault().getPreferenceStore(); + IPreferenceStore pStore = MarkdownUI.getDefault().getPreferenceStore(); Token heading = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, PrefPageGeneral.PREF_HEADER)), null, SWT.BOLD)); Token comment = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, PrefPageGeneral.PREF_COMMENT)))); Token emphasis = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, PrefPageGeneral.PREF_DEFAULT)), null, SWT.ITALIC)); diff --git a/plugin/src/winterwell/markdown/editors/MarkdownEditor.java b/plugin/src/winterwell/markdown/editors/MarkdownEditor.java index f91254b..05b96ec 100755 --- a/plugin/src/winterwell/markdown/editors/MarkdownEditor.java +++ b/plugin/src/winterwell/markdown/editors/MarkdownEditor.java @@ -15,7 +15,6 @@ import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.preferences.InstanceScope; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.text.DocumentEvent; import org.eclipse.jface.text.IDocument; @@ -34,19 +33,15 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IPathEditorInput; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.editors.text.EditorsUI; import org.eclipse.ui.editors.text.TextEditor; import org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants; -import org.eclipse.ui.texteditor.ChainedPreferenceStore; import org.eclipse.ui.texteditor.IDocumentProvider; import org.eclipse.ui.views.contentoutline.IContentOutlinePage; import winterwell.markdown.Log; -import winterwell.markdown.MarkdownUIPlugin; +import winterwell.markdown.MarkdownUI; import winterwell.markdown.pagemodel.MarkdownPage; import winterwell.markdown.pagemodel.MarkdownPage.Header; -import winterwell.markdown.preferences.EclipsePreferencesAdapter; import winterwell.markdown.preferences.PrefPageGeneral; import winterwell.markdown.preferences.Prefs; @@ -97,7 +92,7 @@ public void propertyChange(PropertyChangeEvent event) { public MarkdownEditor() { super(); - initPreferenceStore(); + initCombinedPreferenceStore(); colorManager = new ColorManager(); setSourceViewerConfiguration(new MDConfiguration(colorManager, getPreferenceStore())); } @@ -146,6 +141,7 @@ private boolean isWordWrap() { public void dispose() { removePreferenceStoreListener(); colorManager.dispose(); + colorManager = null; super.dispose(); } @@ -166,15 +162,11 @@ protected void doSetInput(IEditorInput input) throws CoreException { } /** - * Initializes the preference store for this editor. + * Initializes the preference store for this editor. The constucted store represents the + * combined values of the MarkdownUI, EditorsUI, and PlatformUI stores. */ - private void initPreferenceStore() { - List stores = new ArrayList<>(3); - stores.add(new EclipsePreferencesAdapter(InstanceScope.INSTANCE, MarkdownUIPlugin.PLUGIN_ID)); - stores.add(EditorsUI.getPreferenceStore()); - stores.add(PlatformUI.getPreferenceStore()); - - ChainedPreferenceStore store = new ChainedPreferenceStore(stores.toArray(new IPreferenceStore[stores.size()])); + private void initCombinedPreferenceStore() { + IPreferenceStore store = MarkdownUI.getDefault().getCombinedPreferenceStore(); store.addPropertyChangeListener(prefChangeListener); setPreferenceStore(store); } @@ -216,7 +208,7 @@ public int getPrintColumns() { } /** - * @return The text of the editor's current document, or null if unavailable. + * Gets the text of the editor's current document, or null if unavailable. */ public String getText() { IDocument doc = getDocument(); diff --git a/plugin/src/winterwell/markdown/pagemodel/MarkdownPage.java b/plugin/src/winterwell/markdown/pagemodel/MarkdownPage.java index e9781a7..68e1098 100755 --- a/plugin/src/winterwell/markdown/pagemodel/MarkdownPage.java +++ b/plugin/src/winterwell/markdown/pagemodel/MarkdownPage.java @@ -15,7 +15,7 @@ import org.eclipse.jface.preference.IPreferenceStore; -import winterwell.markdown.MarkdownUIPlugin; +import winterwell.markdown.MarkdownUI; import winterwell.markdown.StringMethods; import winterwell.markdown.preferences.PrefPageGeneral; import winterwell.markdown.util.Strings; @@ -220,7 +220,7 @@ public enum KLineType { * @param text */ public MarkdownPage(String text) { - pStore = MarkdownUIPlugin.getDefault().getPreferenceStore(); + pStore = MarkdownUI.getDefault().getPreferenceStore(); setText(text); } diff --git a/plugin/src/winterwell/markdown/pagemodel/MdConverter.java b/plugin/src/winterwell/markdown/pagemodel/MdConverter.java index 78ada22..ae3c8c1 100644 --- a/plugin/src/winterwell/markdown/pagemodel/MdConverter.java +++ b/plugin/src/winterwell/markdown/pagemodel/MdConverter.java @@ -13,7 +13,7 @@ import com.github.rjeschke.txtmark.Configuration.Builder; import com.github.rjeschke.txtmark.Processor; -import winterwell.markdown.MarkdownUIPlugin; +import winterwell.markdown.MarkdownUI; import winterwell.markdown.preferences.PrefPageGeneral; import winterwell.markdown.preferences.Prefs; import winterwell.markdown.util.FailureException; @@ -27,7 +27,7 @@ public class MdConverter { public MdConverter() { super(); - store = MarkdownUIPlugin.getDefault().getPreferenceStore(); + store = MarkdownUI.getDefault().getPreferenceStore(); } public String convert(String text) { diff --git a/plugin/src/winterwell/markdown/preferences/EclipsePreferencesAdapter.java b/plugin/src/winterwell/markdown/preferences/EclipsePreferencesAdapter.java deleted file mode 100644 index 834b5a2..0000000 --- a/plugin/src/winterwell/markdown/preferences/EclipsePreferencesAdapter.java +++ /dev/null @@ -1,256 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2016 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package winterwell.markdown.preferences; - -import org.osgi.service.prefs.BackingStoreException; - -import org.eclipse.swt.widgets.Display; - -import org.eclipse.core.runtime.ListenerList; -import org.eclipse.core.runtime.preferences.IEclipsePreferences; -import org.eclipse.core.runtime.preferences.IScopeContext; - -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.jface.util.PropertyChangeEvent; - -/** - * Adapts an options {@link IEclipsePreferences} to - * {@link org.eclipse.jface.preference.IPreferenceStore}. - *

- * This preference store is read-only i.e. write access throws an - * {@link java.lang.UnsupportedOperationException}. - *

- * - * @since 3.1 - */ -public class EclipsePreferencesAdapter implements IPreferenceStore { - - /** - * Preference change listener. Listens for events preferences fires a - * {@link org.eclipse.jface.util.PropertyChangeEvent} on this adapter with arguments from the - * received event. - */ - private class PreferenceChangeListener implements IEclipsePreferences.IPreferenceChangeListener { - - @Override - public void preferenceChange(final IEclipsePreferences.PreferenceChangeEvent event) { - if (Display.getCurrent() == null) { - Display.getDefault().asyncExec(new Runnable() { - - @Override - public void run() { - firePropertyChangeEvent(event.getKey(), event.getOldValue(), event.getNewValue()); - } - }); - } else { - firePropertyChangeEvent(event.getKey(), event.getOldValue(), event.getNewValue()); - } - } - } - - /** Listeners on on this adapter */ - private ListenerList fListeners = new ListenerList<>(ListenerList.IDENTITY); - - /** Listener on the node */ - private IEclipsePreferences.IPreferenceChangeListener fListener = new PreferenceChangeListener(); - - /** wrapped node */ - private final IScopeContext fContext; - private final String fQualifier; - - /** - * Initialize with the node to wrap - * - * @param context The context to access - */ - public EclipsePreferencesAdapter(IScopeContext context, String qualifier) { - fContext = context; - fQualifier = qualifier; - } - - private IEclipsePreferences getNode() { - return fContext.getNode(fQualifier); - } - - @Override - public void addPropertyChangeListener(IPropertyChangeListener listener) { - if (fListeners.size() == 0) getNode().addPreferenceChangeListener(fListener); - fListeners.add(listener); - } - - @Override - public void removePropertyChangeListener(IPropertyChangeListener listener) { - fListeners.remove(listener); - if (fListeners.size() == 0) { - getNode().removePreferenceChangeListener(fListener); - } - } - - @Override - public boolean contains(String name) { - return getNode().get(name, null) != null; - } - - @Override - public void firePropertyChangeEvent(String name, Object oldValue, Object newValue) { - PropertyChangeEvent event = new PropertyChangeEvent(this, name, oldValue, newValue); - for (IPropertyChangeListener listener : fListeners) { - listener.propertyChange(event); - } - } - - @Override - public boolean getBoolean(String name) { - return getNode().getBoolean(name, BOOLEAN_DEFAULT_DEFAULT); - } - - @Override - public boolean getDefaultBoolean(String name) { - return BOOLEAN_DEFAULT_DEFAULT; - } - - @Override - public double getDefaultDouble(String name) { - return DOUBLE_DEFAULT_DEFAULT; - } - - @Override - public float getDefaultFloat(String name) { - return FLOAT_DEFAULT_DEFAULT; - } - - @Override - public int getDefaultInt(String name) { - return INT_DEFAULT_DEFAULT; - } - - @Override - public long getDefaultLong(String name) { - return LONG_DEFAULT_DEFAULT; - } - - @Override - public String getDefaultString(String name) { - return STRING_DEFAULT_DEFAULT; - } - - @Override - public double getDouble(String name) { - return getNode().getDouble(name, DOUBLE_DEFAULT_DEFAULT); - } - - @Override - public float getFloat(String name) { - return getNode().getFloat(name, FLOAT_DEFAULT_DEFAULT); - } - - @Override - public int getInt(String name) { - return getNode().getInt(name, INT_DEFAULT_DEFAULT); - } - - @Override - public long getLong(String name) { - return getNode().getLong(name, LONG_DEFAULT_DEFAULT); - } - - @Override - public String getString(String name) { - return getNode().get(name, STRING_DEFAULT_DEFAULT); - } - - @Override - public boolean isDefault(String name) { - return false; - } - - @Override - public boolean needsSaving() { - try { - return getNode().keys().length > 0; - } catch (BackingStoreException e) { - // ignore - } - return true; - } - - @Override - public void putValue(String name, String value) { - throw new UnsupportedOperationException(); - } - - @Override - public void setDefault(String name, double value) { - throw new UnsupportedOperationException(); - } - - @Override - public void setDefault(String name, float value) { - throw new UnsupportedOperationException(); - } - - @Override - public void setDefault(String name, int value) { - throw new UnsupportedOperationException(); - } - - @Override - public void setDefault(String name, long value) { - throw new UnsupportedOperationException(); - } - - @Override - public void setDefault(String name, String defaultObject) { - throw new UnsupportedOperationException(); - } - - @Override - public void setDefault(String name, boolean value) { - throw new UnsupportedOperationException(); - } - - @Override - public void setToDefault(String name) { - throw new UnsupportedOperationException(); - } - - @Override - public void setValue(String name, double value) { - throw new UnsupportedOperationException(); - } - - @Override - public void setValue(String name, float value) { - throw new UnsupportedOperationException(); - } - - @Override - public void setValue(String name, int value) { - throw new UnsupportedOperationException(); - } - - @Override - public void setValue(String name, long value) { - throw new UnsupportedOperationException(); - } - - @Override - public void setValue(String name, String value) { - throw new UnsupportedOperationException(); - } - - @Override - public void setValue(String name, boolean value) { - throw new UnsupportedOperationException(); - } - -} diff --git a/plugin/src/winterwell/markdown/preferences/PrefPageColoring.java b/plugin/src/winterwell/markdown/preferences/PrefPageColoring.java index 763e304..1ff1eed 100644 --- a/plugin/src/winterwell/markdown/preferences/PrefPageColoring.java +++ b/plugin/src/winterwell/markdown/preferences/PrefPageColoring.java @@ -10,7 +10,7 @@ import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; -import winterwell.markdown.MarkdownUIPlugin; +import winterwell.markdown.MarkdownUI; public class PrefPageColoring extends FieldEditorPreferencePage implements IWorkbenchPreferencePage, Prefs { @@ -20,7 +20,7 @@ public PrefPageColoring() { } public void init(IWorkbench workbench) { - setPreferenceStore(MarkdownUIPlugin.getDefault().getPreferenceStore()); + setPreferenceStore(MarkdownUI.getDefault().getPreferenceStore()); } /** Creates the field editors. */ diff --git a/plugin/src/winterwell/markdown/preferences/PrefPageGeneral.java b/plugin/src/winterwell/markdown/preferences/PrefPageGeneral.java index 34ea97f..d75d9fa 100755 --- a/plugin/src/winterwell/markdown/preferences/PrefPageGeneral.java +++ b/plugin/src/winterwell/markdown/preferences/PrefPageGeneral.java @@ -13,7 +13,7 @@ import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; -import winterwell.markdown.MarkdownUIPlugin; +import winterwell.markdown.MarkdownUI; public class PrefPageGeneral extends FieldEditorPreferencePage implements IWorkbenchPreferencePage, Prefs { @@ -44,7 +44,7 @@ public PrefPageGeneral() { } public void init(IWorkbench workbench) { - setPreferenceStore(MarkdownUIPlugin.getDefault().getPreferenceStore()); + setPreferenceStore(MarkdownUI.getDefault().getPreferenceStore()); } /** Create fields controlling general editor behavior */ diff --git a/plugin/src/winterwell/markdown/preferences/PrefPageSpeller.java b/plugin/src/winterwell/markdown/preferences/PrefPageSpeller.java new file mode 100644 index 0000000..35e6ce3 --- /dev/null +++ b/plugin/src/winterwell/markdown/preferences/PrefPageSpeller.java @@ -0,0 +1,59 @@ +package winterwell.markdown.preferences; + +import org.eclipse.core.runtime.IStatus; +import org.eclipse.ui.editors.text.ITextEditorHelpContextIds; +import org.eclipse.ui.texteditor.spelling.IPreferenceStatusMonitor; + +import winterwell.markdown.MarkdownUI; +import winterwell.markdown.spelling.AbstractConfigurationBlockPreferencePage; +import winterwell.markdown.spelling.IPreferenceConfigurationBlock; +import winterwell.markdown.spelling.OverlayPreferenceStore; +import winterwell.markdown.spelling.SpellingConfigurationBlock; +import winterwell.markdown.spelling.StatusUtil; + +/** + * Spelling preference page for options specific to Markdown. + */ +public class PrefPageSpeller extends AbstractConfigurationBlockPreferencePage { + + /** Status monitor */ + private class StatusMonitor implements IPreferenceStatusMonitor { + + @Override + public void statusChanged(IStatus status) { + handleStatusChanged(status); + } + } + + public PrefPageSpeller() { + super(); + } + + @Override + protected IPreferenceConfigurationBlock createConfigurationBlock(OverlayPreferenceStore overlayPreferenceStore) { + return new SpellingConfigurationBlock(overlayPreferenceStore, new StatusMonitor()); + } + + /** + * Handles status changes. + * + * @param status the new status + */ + protected void handleStatusChanged(IStatus status) { + setValid(!status.matches(IStatus.ERROR)); + StatusUtil.applyToStatusLine(this, status); + } + + @Override + protected void setDescription() {} + + @Override + protected void setPreferenceStore() { + setPreferenceStore(MarkdownUI.getDefault().getCombinedPreferenceStore()); + } + + @Override + protected String getHelpId() { + return ITextEditorHelpContextIds.SPELLING_PREFERENCE_PAGE; + } +} diff --git a/plugin/src/winterwell/markdown/preferences/PrefPageStyles.java b/plugin/src/winterwell/markdown/preferences/PrefPageStyles.java index 0afb9c3..bd20700 100644 --- a/plugin/src/winterwell/markdown/preferences/PrefPageStyles.java +++ b/plugin/src/winterwell/markdown/preferences/PrefPageStyles.java @@ -22,7 +22,7 @@ import org.eclipse.ui.IWorkbenchPreferencePage; import org.osgi.framework.Bundle; -import winterwell.markdown.MarkdownUIPlugin; +import winterwell.markdown.MarkdownUI; public class PrefPageStyles extends FieldEditorPreferencePage implements IWorkbenchPreferencePage, Prefs { @@ -32,7 +32,7 @@ public PrefPageStyles() { } public void init(IWorkbench workbench) { - setPreferenceStore(MarkdownUIPlugin.getDefault().getPreferenceStore()); + setPreferenceStore(MarkdownUI.getDefault().getPreferenceStore()); } /** Creates the field editors. */ @@ -63,7 +63,7 @@ public void createFieldEditors() { // build list of builtin stylesheets // key=name, value=bundle cache URL as string private String[][] builtins() { - Bundle bundle = Platform.getBundle(MarkdownUIPlugin.PLUGIN_ID); + Bundle bundle = Platform.getBundle(MarkdownUI.PLUGIN_ID); URL url = bundle.getEntry("resources/"); File dir = null; try { diff --git a/plugin/src/winterwell/markdown/preferences/PrefsInit.java b/plugin/src/winterwell/markdown/preferences/PrefsInit.java index 654ea89..17720ce 100644 --- a/plugin/src/winterwell/markdown/preferences/PrefsInit.java +++ b/plugin/src/winterwell/markdown/preferences/PrefsInit.java @@ -11,9 +11,10 @@ import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferenceConverter; import org.eclipse.swt.graphics.RGB; +import org.eclipse.ui.texteditor.spelling.SpellingService; import org.osgi.framework.Bundle; -import winterwell.markdown.MarkdownUIPlugin; +import winterwell.markdown.MarkdownUI; /** * Initialize default preference values @@ -28,7 +29,7 @@ public class PrefsInit extends AbstractPreferenceInitializer implements Prefs { private static final RGB DEF_CODE_BG = new RGB(244, 244, 244); public void initializeDefaultPreferences() { - IPreferenceStore store = MarkdownUIPlugin.getDefault().getPreferenceStore(); + IPreferenceStore store = MarkdownUI.getDefault().getPreferenceStore(); store.setDefault(PREF_WORD_WRAP, false); store.setDefault(PREF_FOLDING, true); @@ -47,6 +48,8 @@ public void initializeDefaultPreferences() { store.setDefault(PREF_GITHUB_SYNTAX, true); store.setDefault(PREF_MULTIMARKDOWN_METADATA, false); + // hides the corresponding PlatformUI preference value + store.setDefault(SpellingService.PREFERENCE_SPELLING_ENABLED, true); store.setDefault(PREF_SPELLING_ENABLED, true); PreferenceConverter.setDefault(store, PREF_DEFAULT, DEF_DEFAULT); @@ -59,7 +62,7 @@ public void initializeDefaultPreferences() { // create bundle cache URL for the default stylesheet private String cssDefault() { - Bundle bundle = Platform.getBundle(MarkdownUIPlugin.PLUGIN_ID); + Bundle bundle = Platform.getBundle(MarkdownUI.PLUGIN_ID); URL url = FileLocator.find(bundle, new Path("resources/" + DEF_MDCSS), null); try { url = FileLocator.toFileURL(url); diff --git a/plugin/src/winterwell/markdown/spelling/AbstractConfigurationBlockPreferencePage.java b/plugin/src/winterwell/markdown/spelling/AbstractConfigurationBlockPreferencePage.java new file mode 100644 index 0000000..1a2b01d --- /dev/null +++ b/plugin/src/winterwell/markdown/spelling/AbstractConfigurationBlockPreferencePage.java @@ -0,0 +1,96 @@ +package winterwell.markdown.spelling; + +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; + +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.preference.PreferencePage; + +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.PlatformUI; + +/** + * Abstract preference page which is used to wrap a + * {@link org.eclipse.ui.internal.editors.text.IPreferenceConfigurationBlock}. + * + * @since 3.0 + */ +public abstract class AbstractConfigurationBlockPreferencePage extends PreferencePage + implements IWorkbenchPreferencePage { + + private IPreferenceConfigurationBlock fConfigurationBlock; + private OverlayPreferenceStore fOverlayStore; + + /** + * Creates a new preference page. + */ + public AbstractConfigurationBlockPreferencePage() { + setDescription(); + setPreferenceStore(); + fOverlayStore = new OverlayPreferenceStore(getPreferenceStore(), new OverlayPreferenceStore.OverlayKey[] {}); + fConfigurationBlock = createConfigurationBlock(fOverlayStore); + } + + protected abstract IPreferenceConfigurationBlock createConfigurationBlock( + OverlayPreferenceStore overlayPreferenceStore); + + protected abstract String getHelpId(); + + protected abstract void setDescription(); + + protected abstract void setPreferenceStore(); + + @Override + public void init(IWorkbench workbench) {} + + @Override + public void createControl(Composite parent) { + super.createControl(parent); + PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), getHelpId()); + } + + @Override + protected Control createContents(Composite parent) { + fOverlayStore.load(); + fOverlayStore.start(); + Control content = fConfigurationBlock.createControl(parent); + initialize(); + Dialog.applyDialogFont(content); + return content; + } + + private void initialize() { + fConfigurationBlock.initialize(); + } + + @Override + public boolean performOk() { + if (!fConfigurationBlock.canPerformOk()) return false; + fConfigurationBlock.performOk(); + fOverlayStore.propagate(); // TODO: chained store cannot propogate!!! + return true; + } + + @Override + public void performDefaults() { + fOverlayStore.loadDefaults(); + fConfigurationBlock.performDefaults(); + super.performDefaults(); + } + + @Override + public void dispose() { + fConfigurationBlock.dispose(); + if (fOverlayStore != null) { + fOverlayStore.stop(); + fOverlayStore = null; + } + super.dispose(); + } + + @Override + public void applyData(Object data) { + fConfigurationBlock.applyData(data); + } +} diff --git a/plugin/src/winterwell/markdown/spelling/IEditorsStatusConstants.java b/plugin/src/winterwell/markdown/spelling/IEditorsStatusConstants.java new file mode 100644 index 0000000..cfdf018 --- /dev/null +++ b/plugin/src/winterwell/markdown/spelling/IEditorsStatusConstants.java @@ -0,0 +1,18 @@ +package winterwell.markdown.spelling; + +/** + * Defines plug-in-specific status codes. + * + * @see org.eclipse.core.runtime.IStatus#getCode() + * @see org.eclipse.core.runtime.Status#Status(int, java.lang.String, int, java.lang.String, + * java.lang.Throwable) + * @since 2.1 + */ +public interface IEditorsStatusConstants { + + /** + * Status constant indicating that an internal error occurred. Value: 1001 + */ + public static final int INTERNAL_ERROR = 10001; + +} diff --git a/plugin/src/winterwell/markdown/spelling/IPreferenceConfigurationBlock.java b/plugin/src/winterwell/markdown/spelling/IPreferenceConfigurationBlock.java new file mode 100644 index 0000000..61e2c9e --- /dev/null +++ b/plugin/src/winterwell/markdown/spelling/IPreferenceConfigurationBlock.java @@ -0,0 +1,74 @@ +package winterwell.markdown.spelling; + +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; + +import org.eclipse.jface.preference.PreferencePage; + +/** + * Interface for preference configuration blocks which can either be wrapped by a + * {@link org.eclipse.ui.internal.editors.text.AbstractConfigurationBlockPreferencePage} or be + * included some preference page. + *

+ * Clients may implement this interface. + *

+ * + * @since 3.0 + */ +public interface IPreferenceConfigurationBlock { + + /** + * Creates the preference control. + * + * @param parent the parent composite to which to add the preferences control + * @return the control that was added to parent + */ + Control createControl(Composite parent); + + /** + * Called after creating the control. Implementations should load the preferences values and + * update the controls accordingly. + */ + void initialize(); + + /** + * Called when the OK button is pressed on the preference page. Implementations + * should commit the configured preference settings into their form of preference storage. + */ + void performOk(); + + /** + * Called when the OK button is pressed on the preference page. Implementations can + * abort the 'OK' operation by returning false. + * + * @return true iff the 'OK' operation can be performed + * @since 3.1 + */ + boolean canPerformOk(); + + /** + * Called when the Defaults button is pressed on the preference page. + * Implementation should reset any preference settings to their default values and adjust the + * controls accordingly. + */ + void performDefaults(); + + /** + * Called when the preference page is being disposed. Implementations should free any resources + * they are holding on to. + */ + void dispose(); + + /** + * Applies the given data. + *

+ * It is up to the implementor to define whether it supports this and which kind of data it + * accepts. + *

+ * + * @param data the data which is specified by each configuration block + * @see PreferencePage#applyData(Object) + * @since 3.4 + */ + void applyData(Object data); +} diff --git a/plugin/src/winterwell/markdown/preferences/OverlayPreferenceStore.java b/plugin/src/winterwell/markdown/spelling/OverlayPreferenceStore.java similarity index 83% rename from plugin/src/winterwell/markdown/preferences/OverlayPreferenceStore.java rename to plugin/src/winterwell/markdown/spelling/OverlayPreferenceStore.java index 87e5de5..2f3b336 100644 --- a/plugin/src/winterwell/markdown/preferences/OverlayPreferenceStore.java +++ b/plugin/src/winterwell/markdown/spelling/OverlayPreferenceStore.java @@ -1,4 +1,4 @@ -package winterwell.markdown.preferences; +package winterwell.markdown.spelling; import org.eclipse.core.runtime.Assert; import org.eclipse.jface.preference.IPreferenceStore; @@ -8,8 +8,6 @@ /** * An overlaying preference store. - * - * @since 2.1 */ public class OverlayPreferenceStore implements IPreferenceStore { @@ -83,8 +81,8 @@ public OverlayPreferenceStore(IPreferenceStore parent, OverlayKey[] overlayKeys) * @return the overlay key or null if none can be found */ private OverlayKey findOverlayKey(String key) { - for (int i = 0; i < fOverlayKeys.length; i++) { - if (fOverlayKeys[i].fKey.equals(key)) return fOverlayKeys[i]; + for (OverlayKey fOverlayKey : fOverlayKeys) { + if (fOverlayKey.fKey.equals(key)) return fOverlayKey; } return null; } @@ -100,15 +98,15 @@ private boolean covers(String key) { } /** - * Propagates the given overlay key from the orgin to the target preference store. + * Propagates the given overlay key from the origin to the target preference store. * - * @param orgin the source preference store + * @param origin the source preference store * @param key the overlay key * @param target the preference store to which the key is propagated */ - private void propagateProperty(IPreferenceStore orgin, OverlayKey key, IPreferenceStore target) { + private void propagateProperty(IPreferenceStore origin, OverlayKey key, IPreferenceStore target) { - if (orgin.isDefault(key.fKey)) { + if (origin.isDefault(key.fKey)) { if (!target.isDefault(key.fKey)) target.setToDefault(key.fKey); return; } @@ -116,37 +114,37 @@ private void propagateProperty(IPreferenceStore orgin, OverlayKey key, IPreferen TypeDescriptor d = key.fDescriptor; if (BOOLEAN == d) { - boolean originValue = orgin.getBoolean(key.fKey); + boolean originValue = origin.getBoolean(key.fKey); boolean targetValue = target.getBoolean(key.fKey); if (targetValue != originValue) target.setValue(key.fKey, originValue); } else if (DOUBLE == d) { - double originValue = orgin.getDouble(key.fKey); + double originValue = origin.getDouble(key.fKey); double targetValue = target.getDouble(key.fKey); if (targetValue != originValue) target.setValue(key.fKey, originValue); } else if (FLOAT == d) { - float originValue = orgin.getFloat(key.fKey); + float originValue = origin.getFloat(key.fKey); float targetValue = target.getFloat(key.fKey); if (targetValue != originValue) target.setValue(key.fKey, originValue); } else if (INT == d) { - int originValue = orgin.getInt(key.fKey); + int originValue = origin.getInt(key.fKey); int targetValue = target.getInt(key.fKey); if (targetValue != originValue) target.setValue(key.fKey, originValue); } else if (LONG == d) { - long originValue = orgin.getLong(key.fKey); + long originValue = origin.getLong(key.fKey); long targetValue = target.getLong(key.fKey); if (targetValue != originValue) target.setValue(key.fKey, originValue); } else if (STRING == d) { - String originValue = orgin.getString(key.fKey); + String originValue = origin.getString(key.fKey); String targetValue = target.getString(key.fKey); if (targetValue != null && originValue != null && !targetValue.equals(originValue)) target.setValue(key.fKey, originValue); @@ -158,57 +156,57 @@ private void propagateProperty(IPreferenceStore orgin, OverlayKey key, IPreferen * Propagates all overlay keys from this store to the parent store. */ public void propagate() { - for (int i = 0; i < fOverlayKeys.length; i++) - propagateProperty(fStore, fOverlayKeys[i], fParent); + for (OverlayKey fOverlayKey : fOverlayKeys) + propagateProperty(fStore, fOverlayKey, fParent); } /** - * Loads the given key from the orgin into the target. + * Loads the given key from the origin into the target. * - * @param orgin the source preference store + * @param origin the source preference store * @param key the overlay key * @param target the preference store to which the key is propagated * @param forceInitialization if true the value in the target gets initialized * before loading */ - private void loadProperty(IPreferenceStore orgin, OverlayKey key, IPreferenceStore target, + private void loadProperty(IPreferenceStore origin, OverlayKey key, IPreferenceStore target, boolean forceInitialization) { TypeDescriptor d = key.fDescriptor; if (BOOLEAN == d) { if (forceInitialization) target.setValue(key.fKey, true); - target.setValue(key.fKey, orgin.getBoolean(key.fKey)); - target.setDefault(key.fKey, orgin.getDefaultBoolean(key.fKey)); + target.setValue(key.fKey, origin.getBoolean(key.fKey)); + target.setDefault(key.fKey, origin.getDefaultBoolean(key.fKey)); } else if (DOUBLE == d) { if (forceInitialization) target.setValue(key.fKey, 1.0D); - target.setValue(key.fKey, orgin.getDouble(key.fKey)); - target.setDefault(key.fKey, orgin.getDefaultDouble(key.fKey)); + target.setValue(key.fKey, origin.getDouble(key.fKey)); + target.setDefault(key.fKey, origin.getDefaultDouble(key.fKey)); } else if (FLOAT == d) { if (forceInitialization) target.setValue(key.fKey, 1.0F); - target.setValue(key.fKey, orgin.getFloat(key.fKey)); - target.setDefault(key.fKey, orgin.getDefaultFloat(key.fKey)); + target.setValue(key.fKey, origin.getFloat(key.fKey)); + target.setDefault(key.fKey, origin.getDefaultFloat(key.fKey)); } else if (INT == d) { if (forceInitialization) target.setValue(key.fKey, 1); - target.setValue(key.fKey, orgin.getInt(key.fKey)); - target.setDefault(key.fKey, orgin.getDefaultInt(key.fKey)); + target.setValue(key.fKey, origin.getInt(key.fKey)); + target.setDefault(key.fKey, origin.getDefaultInt(key.fKey)); } else if (LONG == d) { if (forceInitialization) target.setValue(key.fKey, 1L); - target.setValue(key.fKey, orgin.getLong(key.fKey)); - target.setDefault(key.fKey, orgin.getDefaultLong(key.fKey)); + target.setValue(key.fKey, origin.getLong(key.fKey)); + target.setDefault(key.fKey, origin.getDefaultLong(key.fKey)); } else if (STRING == d) { if (forceInitialization) target.setValue(key.fKey, "1"); //$NON-NLS-1$ - target.setValue(key.fKey, orgin.getString(key.fKey)); - target.setDefault(key.fKey, orgin.getDefaultString(key.fKey)); + target.setValue(key.fKey, origin.getString(key.fKey)); + target.setDefault(key.fKey, origin.getDefaultString(key.fKey)); } } @@ -217,8 +215,8 @@ private void loadProperty(IPreferenceStore orgin, OverlayKey key, IPreferenceSto * Loads the values from the parent into this store. */ public void load() { - for (int i = 0; i < fOverlayKeys.length; i++) - loadProperty(fParent, fOverlayKeys[i], fStore, true); + for (OverlayKey fOverlayKey : fOverlayKeys) + loadProperty(fParent, fOverlayKey, fStore, true); fLoaded = true; } @@ -227,8 +225,8 @@ public void load() { * Loads the default values. */ public void loadDefaults() { - for (int i = 0; i < fOverlayKeys.length; i++) - setToDefault(fOverlayKeys[i].fKey); + for (OverlayKey fOverlayKey : fOverlayKeys) + setToDefault(fOverlayKey.fKey); } /** diff --git a/plugin/src/winterwell/markdown/spelling/SpellingConfigurationBlock.java b/plugin/src/winterwell/markdown/spelling/SpellingConfigurationBlock.java new file mode 100644 index 0000000..555d110 --- /dev/null +++ b/plugin/src/winterwell/markdown/spelling/SpellingConfigurationBlock.java @@ -0,0 +1,567 @@ +package winterwell.markdown.spelling; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.core.runtime.Assert; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.ISafeRunnable; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.SafeRunner; +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.layout.PixelConverter; +import org.eclipse.jface.viewers.ComboViewer; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredContentProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.StackLayout; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.FillLayout; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.editors.text.EditorsUI; +import org.eclipse.ui.texteditor.spelling.IPreferenceStatusMonitor; +import org.eclipse.ui.texteditor.spelling.ISpellingPreferenceBlock; +import org.eclipse.ui.texteditor.spelling.SpellingEngineDescriptor; +import org.eclipse.ui.texteditor.spelling.SpellingService; + +import winterwell.markdown.Log; +import winterwell.markdown.spelling.OverlayPreferenceStore.OverlayKey; + +/** + * Configures spelling preferences specific to Markdown. + */ +public class SpellingConfigurationBlock implements IPreferenceConfigurationBlock { + + /** Error preferences block. */ + private static class ErrorPreferences implements ISpellingPreferenceBlock { + + /** Error message */ + private String fMessage; + + /** Error label */ + private Label fLabel; + + /** + * Initialize with the given error message. + * + * @param message the error message + */ + protected ErrorPreferences(String message) { + fMessage = message; + } + + @Override + public Control createControl(Composite composite) { + Composite inner = new Composite(composite, SWT.NONE); + inner.setLayout(new FillLayout(SWT.VERTICAL)); + + fLabel = new Label(inner, SWT.CENTER); + fLabel.setText(fMessage); + + return inner; + } + + @Override + public void initialize(IPreferenceStatusMonitor statusMonitor) {} + + @Override + public boolean canPerformOk() { + return true; + } + + @Override + public void performOk() {} + + @Override + public void performDefaults() {} + + @Override + public void performRevert() {} + + @Override + public void dispose() {} + + @Override + public void setEnabled(boolean enabled) { + fLabel.setEnabled(enabled); + } + } + + /** + * Forwarding status monitor for accessing the current status. + */ + private static class ForwardingStatusMonitor implements IPreferenceStatusMonitor { + + /** Status monitor to which status changes are forwarded */ + private IPreferenceStatusMonitor fForwardedMonitor; + + /** Latest reported status */ + private IStatus fStatus; + + /** + * Initializes with the given status monitor to which status changes are forwarded. + * + * @param forwardedMonitor the status monitor to which changes are forwarded + */ + public ForwardingStatusMonitor(IPreferenceStatusMonitor forwardedMonitor) { + fForwardedMonitor = forwardedMonitor; + } + + @Override + public void statusChanged(IStatus status) { + fStatus = status; + fForwardedMonitor.statusChanged(status); + } + + /** + * Returns the latest reported status. + * + * @return the latest reported status, can be null + */ + public IStatus getStatus() { + return fStatus; + } + } + + /** The overlay preference store. */ + private final OverlayPreferenceStore fStore; + + /* The controls */ + private Combo fProviderCombo; + private Button fEnablementCheckbox; + private ComboViewer fProviderViewer; + private Composite fComboGroup; + private Composite fGroup; + private StackLayout fStackLayout; + + /* the model */ + private final Map fProviderDescriptors; + private final Map fProviderPreferences; + private final Map fProviderControls; + + private ForwardingStatusMonitor fStatusMonitor; + + private ISpellingPreferenceBlock fCurrentBlock; + + public SpellingConfigurationBlock(OverlayPreferenceStore store, IPreferenceStatusMonitor statusMonitor) { + Assert.isNotNull(store); + fStore = store; + fStore.addKeys(createOverlayStoreKeys()); + fStatusMonitor = new ForwardingStatusMonitor(statusMonitor); + fProviderDescriptors = createListModel(); + fProviderPreferences = new HashMap<>(); + fProviderControls = new HashMap<>(); + } + + private Map createListModel() { + SpellingEngineDescriptor[] descs = EditorsUI.getSpellingService().getSpellingEngineDescriptors(); + Map map = new HashMap<>(); + for (SpellingEngineDescriptor desc : descs) { + map.put(desc.getId(), desc); + } + return map; + } + + private OverlayPreferenceStore.OverlayKey[] createOverlayStoreKeys() { + + ArrayList overlayKeys = new ArrayList<>(); + + overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, + SpellingService.PREFERENCE_SPELLING_ENABLED)); + overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, + SpellingService.PREFERENCE_SPELLING_ENGINE)); + + OverlayPreferenceStore.OverlayKey[] keys = new OverlayPreferenceStore.OverlayKey[overlayKeys.size()]; + overlayKeys.toArray(keys); + return keys; + } + + /** + * Creates page for spelling preferences. + * + * @param parent the parent composite + * @return the control for the preference page + */ + @Override + public Control createControl(Composite parent) { + + Composite composite = new Composite(parent, SWT.NULL); + // assume parent page uses grid-data + GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_CENTER | GridData.VERTICAL_ALIGN_FILL); + composite.setLayoutData(gd); + GridLayout layout = new GridLayout(); + layout.numColumns = 2; + layout.marginHeight = 0; + layout.marginWidth = 0; + + PixelConverter pc = new PixelConverter(composite); + layout.verticalSpacing = pc.convertHeightInCharsToPixels(1) / 2; + composite.setLayout(layout); + + if (EditorsUI.getSpellingService().getSpellingEngineDescriptors().length == 0) { + Label label = new Label(composite, SWT.NONE); + label.setText(TextEditorMessages.SpellingConfigurationBlock_error_not_installed); + return composite; + } + + /* check box for new editors */ + fEnablementCheckbox = new Button(composite, SWT.CHECK); + fEnablementCheckbox.setText(TextEditorMessages.SpellingConfigurationBlock_enable); + gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING); + fEnablementCheckbox.setLayoutData(gd); + fEnablementCheckbox.addSelectionListener(new SelectionListener() { + + @Override + public void widgetSelected(SelectionEvent e) { + boolean enabled = fEnablementCheckbox.getSelection(); + fStore.setValue(SpellingService.PREFERENCE_SPELLING_ENABLED, enabled); + updateCheckboxDependencies(); + } + + @Override + public void widgetDefaultSelected(SelectionEvent e) {} + }); + + Label label = new Label(composite, SWT.CENTER); + gd = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING); + label.setLayoutData(gd); + + if (fProviderDescriptors.size() > 1) { + fComboGroup = new Composite(composite, SWT.NONE); + gd = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING); + gd.horizontalIndent = 10; + fComboGroup.setLayoutData(gd); + GridLayout gridLayout = new GridLayout(2, false); + gridLayout.marginWidth = 0; + fComboGroup.setLayout(gridLayout); + + Label comboLabel = new Label(fComboGroup, SWT.CENTER); + gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_CENTER); + comboLabel.setLayoutData(gd); + comboLabel.setText(TextEditorMessages.SpellingConfigurationBlock_combo_caption); + + label = new Label(composite, SWT.CENTER); + gd = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING); + label.setLayoutData(gd); + + fProviderCombo = new Combo(fComboGroup, SWT.READ_ONLY | SWT.DROP_DOWN); + gd = new GridData(GridData.HORIZONTAL_ALIGN_END | GridData.VERTICAL_ALIGN_CENTER); + fProviderCombo.setLayoutData(gd); + + fProviderViewer = createProviderViewer(); + } + + Composite groupComp = new Composite(composite, SWT.NONE); + gd = new GridData(GridData.FILL_BOTH); + gd.horizontalSpan = 2; + groupComp.setLayoutData(gd); + GridLayout gridLayout = new GridLayout(1, false); + gridLayout.marginWidth = 0; + groupComp.setLayout(gridLayout); + + /* contributed provider preferences. */ + fGroup = new Composite(groupComp, SWT.NONE); + gd = new GridData(SWT.FILL, SWT.FILL, true, true); + gd.horizontalIndent = 10; + fGroup.setLayoutData(gd); + fStackLayout = new StackLayout(); + fGroup.setLayout(fStackLayout); + + return composite; + } + + @Override + public void applyData(Object data) {} + + private ComboViewer createProviderViewer() { + /* list viewer */ + final ComboViewer viewer = new ComboViewer(fProviderCombo); + viewer.setContentProvider(new IStructuredContentProvider() { + + @Override + public void dispose() {} + + @Override + public void inputChanged(Viewer v, Object oldInput, Object newInput) {} + + @Override + public Object[] getElements(Object inputElement) { + return fProviderDescriptors.values().toArray(); + } + }); + viewer.setLabelProvider(new LabelProvider() { + + @Override + public Image getImage(Object element) { + return null; + } + + @Override + public String getText(Object element) { + return ((SpellingEngineDescriptor) element).getLabel(); + } + }); + viewer.addSelectionChangedListener(new ISelectionChangedListener() { + + @Override + public void selectionChanged(SelectionChangedEvent event) { + IStructuredSelection sel = (IStructuredSelection) event.getSelection(); + if (sel.isEmpty()) return; + if (fCurrentBlock != null && fStatusMonitor.getStatus() != null + && fStatusMonitor.getStatus().matches(IStatus.ERROR)) + if (isPerformRevert()) { + ISafeRunnable runnable = new ISafeRunnable() { + + @Override + public void run() throws Exception { + fCurrentBlock.performRevert(); + } + + @Override + public void handleException(Throwable x) {} + }; + SafeRunner.run(runnable); + } else { + revertSelection(); + return; + } + fStore.setValue(SpellingService.PREFERENCE_SPELLING_ENGINE, + ((SpellingEngineDescriptor) sel.getFirstElement()).getId()); + updateListDependencies(); + } + + private boolean isPerformRevert() { + Shell shell = viewer.getControl().getShell(); + MessageDialog dialog = new MessageDialog(shell, + TextEditorMessages.SpellingConfigurationBlock_error_title, null, + TextEditorMessages.SpellingConfigurationBlock_error_message, MessageDialog.QUESTION, + new String[] { IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL }, 1); + return dialog.open() == 0; + } + + private void revertSelection() { + try { + viewer.removeSelectionChangedListener(this); + SpellingEngineDescriptor desc = EditorsUI.getSpellingService() + .getActiveSpellingEngineDescriptor(fStore); + if (desc != null) viewer.setSelection(new StructuredSelection(desc), true); + } finally { + viewer.addSelectionChangedListener(this); + } + } + }); + viewer.setInput(fProviderDescriptors); + viewer.refresh(); + + return viewer; + } + + private void updateCheckboxDependencies() { + final boolean enabled = fEnablementCheckbox.getSelection(); + if (fComboGroup != null) setEnabled(fComboGroup, enabled); + SpellingEngineDescriptor desc = EditorsUI.getSpellingService().getActiveSpellingEngineDescriptor(fStore); + String id = desc != null ? desc.getId() : ""; //$NON-NLS-1$ + final ISpellingPreferenceBlock preferenceBlock = fProviderPreferences.get(id); + if (preferenceBlock != null) { + ISafeRunnable runnable = new ISafeRunnable() { + + @Override + public void run() throws Exception { + preferenceBlock.setEnabled(enabled); + } + + @Override + public void handleException(Throwable x) {} + }; + SafeRunner.run(runnable); + } + } + + private void setEnabled(Control control, boolean enabled) { + if (control instanceof Composite) { + Control[] children = ((Composite) control).getChildren(); + for (Control child : children) + setEnabled(child, enabled); + } + control.setEnabled(enabled); + } + + void updateListDependencies() { + SpellingEngineDescriptor desc = EditorsUI.getSpellingService().getActiveSpellingEngineDescriptor(fStore); + String id; + if (desc == null) { + // safety in case there is no such descriptor + id = ""; //$NON-NLS-1$ + String message = TextEditorMessages.SpellingConfigurationBlock_error_not_exist; + Log.log(new Status(IStatus.WARNING, EditorsUI.PLUGIN_ID, IStatus.OK, message, null)); + fCurrentBlock = new ErrorPreferences(message); + } else { + id = desc.getId(); + fCurrentBlock = fProviderPreferences.get(id); + if (fCurrentBlock == null) { + try { + fCurrentBlock = desc.createPreferences(); + fProviderPreferences.put(id, fCurrentBlock); + } catch (CoreException e) { + Log.error(e); + fCurrentBlock = new ErrorPreferences(e.getLocalizedMessage()); + } + } + } + + Control control = fProviderControls.get(id); + if (control == null) { + final Control[] result = new Control[1]; + ISafeRunnable runnable = new ISafeRunnable() { + + @Override + public void run() throws Exception { + result[0] = fCurrentBlock.createControl(fGroup); + } + + @Override + public void handleException(Throwable x) {} + }; + SafeRunner.run(runnable); + control = result[0]; + if (control == null) { + String message = TextEditorMessages.SpellingConfigurationBlock_info_no_preferences; + Log.log(IStatus.WARNING, IStatus.OK, message, null); + control = new ErrorPreferences(message).createControl(fGroup); + } else { + fProviderControls.put(id, control); + } + } + Dialog.applyDialogFont(control); + fStackLayout.topControl = control; + control.pack(); + fGroup.layout(); + fGroup.getParent().layout(); + + fStatusMonitor.statusChanged(new StatusInfo()); + ISafeRunnable runnable = new ISafeRunnable() { + + @Override + public void run() throws Exception { + fCurrentBlock.initialize(fStatusMonitor); + } + + @Override + public void handleException(Throwable x) {} + }; + SafeRunner.run(runnable); + } + + @Override + public void initialize() { + restoreFromPreferences(); + } + + @Override + public boolean canPerformOk() { + SpellingEngineDescriptor desc = EditorsUI.getSpellingService().getActiveSpellingEngineDescriptor(fStore); + String id = desc != null ? desc.getId() : ""; //$NON-NLS-1$ + final ISpellingPreferenceBlock block = fProviderPreferences.get(id); + if (block == null) return true; + + final Boolean[] result = new Boolean[] { Boolean.TRUE }; + ISafeRunnable runnable = new ISafeRunnable() { + + @Override + public void run() throws Exception { + result[0] = Boolean.valueOf(block.canPerformOk()); + } + + @Override + public void handleException(Throwable x) {} + }; + SafeRunner.run(runnable); + return result[0].booleanValue(); + } + + @Override + public void performOk() { + for (ISpellingPreferenceBlock block : fProviderPreferences.values()) { + ISafeRunnable runnable = new ISafeRunnable() { + + @Override + public void run() throws Exception { + block.performOk(); + } + + @Override + public void handleException(Throwable x) {} + }; + SafeRunner.run(runnable); + } + } + + @Override + public void performDefaults() { + restoreFromPreferences(); + for (ISpellingPreferenceBlock block : fProviderPreferences.values()) { + ISafeRunnable runnable = new ISafeRunnable() { + + @Override + public void run() throws Exception { + block.performDefaults(); + } + + @Override + public void handleException(Throwable x) {} + }; + SafeRunner.run(runnable); + } + } + + @Override + public void dispose() { + for (ISpellingPreferenceBlock block : fProviderPreferences.values()) { + ISafeRunnable runnable = new ISafeRunnable() { + + @Override + public void run() throws Exception { + block.dispose(); + } + + @Override + public void handleException(Throwable x) {} + }; + SafeRunner.run(runnable); + } + } + + private void restoreFromPreferences() { + if (fEnablementCheckbox == null) return; + + boolean enabled = fStore.getBoolean(SpellingService.PREFERENCE_SPELLING_ENABLED); + fEnablementCheckbox.setSelection(enabled); + + if (fProviderViewer == null) + updateListDependencies(); + else { + SpellingEngineDescriptor desc = EditorsUI.getSpellingService().getActiveSpellingEngineDescriptor(fStore); + if (desc != null) fProviderViewer.setSelection(new StructuredSelection(desc), true); + } + + updateCheckboxDependencies(); + } +} diff --git a/plugin/src/winterwell/markdown/spelling/StatusInfo.java b/plugin/src/winterwell/markdown/spelling/StatusInfo.java new file mode 100644 index 0000000..d576c33 --- /dev/null +++ b/plugin/src/winterwell/markdown/spelling/StatusInfo.java @@ -0,0 +1,177 @@ +package winterwell.markdown.spelling; + +import org.eclipse.core.runtime.Assert; +import org.eclipse.core.runtime.IStatus; + +import org.eclipse.ui.editors.text.EditorsUI; + +/** + * A settable IStatus. + * Can be an error, warning, info or ok. For error, info and warning states, + * a message describes the problem. + * + * @since 2.1 + */ +class StatusInfo implements IStatus { + + /** The message of this status. */ + private String fStatusMessage; + /** The severity of this status. */ + private int fSeverity; + + /** + * Creates a status set to OK (no message). + */ + public StatusInfo() { + this(OK, null); + } + + /** + * Creates a status with the given severity and message. + * + * @param severity the severity of this status: ERROR, WARNING, INFO and OK. + * @param message the message of this status. Applies only for ERROR, + * WARNING and INFO. + */ + public StatusInfo(int severity, String message) { + fStatusMessage= message; + fSeverity= severity; + } + + @Override + public boolean isOK() { + return fSeverity == IStatus.OK; + } + + /** + * Returns whether this status indicates a warning. + * + * @return true if this status has severity + * {@link IStatus#WARNING} and false otherwise + */ + public boolean isWarning() { + return fSeverity == IStatus.WARNING; + } + + /** + * Returns whether this status indicates an info. + * + * @return true if this status has severity + * {@link IStatus#INFO} and false otherwise + */ + public boolean isInfo() { + return fSeverity == IStatus.INFO; + } + + /** + * Returns whether this status indicates an error. + * + * @return true if this status has severity + * {@link IStatus#ERROR} and false otherwise + */ + public boolean isError() { + return fSeverity == IStatus.ERROR; + } + + @Override + public String getMessage() { + return fStatusMessage; + } + + /** + * Sets the status to ERROR. + * + * @param errorMessage the error message which can be an empty string, but not null + */ + public void setError(String errorMessage) { + Assert.isNotNull(errorMessage); + fStatusMessage= errorMessage; + fSeverity= IStatus.ERROR; + } + + /** + * Sets the status to WARNING. + * + * @param warningMessage the warning message which can be an empty string, but not null + */ + public void setWarning(String warningMessage) { + Assert.isNotNull(warningMessage); + fStatusMessage= warningMessage; + fSeverity= IStatus.WARNING; + } + + /** + * Sets the status to INFO. + * + * @param infoMessage the info message which can be an empty string, but not null + */ + public void setInfo(String infoMessage) { + Assert.isNotNull(infoMessage); + fStatusMessage= infoMessage; + fSeverity= IStatus.INFO; + } + + /** + * Sets the status to OK. + */ + public void setOK() { + fStatusMessage= null; + fSeverity= IStatus.OK; + } + + @Override + public boolean matches(int severityMask) { + return (fSeverity & severityMask) != 0; + } + + /** + * Returns always false. + * + * @see IStatus#isMultiStatus() + */ + @Override + public boolean isMultiStatus() { + return false; + } + + @Override + public int getSeverity() { + return fSeverity; + } + + @Override + public String getPlugin() { + return EditorsUI.PLUGIN_ID; + } + + /** + * Returns always null. + * + * @see IStatus#getException() + */ + @Override + public Throwable getException() { + return null; + } + + /** + * Returns always the error severity. + * + * @see IStatus#getCode() + */ + @Override + public int getCode() { + return fSeverity; + } + + /** + * Returns always null. + * + * @see IStatus#getChildren() + */ + @Override + public IStatus[] getChildren() { + return new IStatus[0]; + } + +} diff --git a/plugin/src/winterwell/markdown/spelling/StatusUtil.java b/plugin/src/winterwell/markdown/spelling/StatusUtil.java new file mode 100644 index 0000000..e4c6bed --- /dev/null +++ b/plugin/src/winterwell/markdown/spelling/StatusUtil.java @@ -0,0 +1,81 @@ +package winterwell.markdown.spelling; + +import org.eclipse.core.runtime.IStatus; + +import org.eclipse.jface.dialogs.DialogPage; +import org.eclipse.jface.dialogs.IMessageProvider; + +/** + * A utility class to work with IStatus. + * + * @since 3.1 + */ +public class StatusUtil { + + /** + * Compares two instances of {@link IStatus}. The more severe is returned: An error is more + * severe than a warning, and a warning is more severe than OK. If the two statuses have the + * same severity, the second is returned. + * + * @param s1 a status object + * @param s2 a status object + * @return the more severe status + */ + public static IStatus getMoreSevere(IStatus s1, IStatus s2) { + if (s1.getSeverity() > s2.getSeverity()) return s1; + + return s2; + } + + /** + * Finds the most severe status from a array of statuses. An error is more severe than a + * warning, and a warning is more severe than OK. + * + * @param status an array with status objects + * @return the most severe status object + */ + public static IStatus getMostSevere(IStatus[] status) { + IStatus max = null; + for (int i = 0; i < status.length; i++) { + IStatus curr = status[i]; + if (curr.matches(IStatus.ERROR)) { + return curr; + } + if (max == null || curr.getSeverity() > max.getSeverity()) { + max = curr; + } + } + return max; + } + + /** + * Applies the status to the status line of a dialog page. + * + * @param page the dialog page + * @param status the status + */ + public static void applyToStatusLine(DialogPage page, IStatus status) { + String message = status.getMessage(); + switch (status.getSeverity()) { + case IStatus.OK: + page.setMessage(message, IMessageProvider.NONE); + page.setErrorMessage(null); + break; + case IStatus.WARNING: + page.setMessage(message, IMessageProvider.WARNING); + page.setErrorMessage(null); + break; + case IStatus.INFO: + page.setMessage(message, IMessageProvider.INFORMATION); + page.setErrorMessage(null); + break; + default: + if (message.length() == 0) { + message = null; + } + page.setMessage(null); + page.setErrorMessage(message); + break; + } + } +} diff --git a/plugin/src/winterwell/markdown/spelling/TextEditorMessages.java b/plugin/src/winterwell/markdown/spelling/TextEditorMessages.java new file mode 100644 index 0000000..92500f0 --- /dev/null +++ b/plugin/src/winterwell/markdown/spelling/TextEditorMessages.java @@ -0,0 +1,153 @@ +package winterwell.markdown.spelling; + +import org.eclipse.osgi.util.NLS; + +/** + * Helper class to get NLSed messages. + * + * @since 2.1 + */ +public final class TextEditorMessages extends NLS { + + private static final String BUNDLE_NAME = TextEditorMessages.class.getName(); + + private TextEditorMessages() { + // Do not instantiate + } + + public static String AnnotationsConfigurationBlock_DASHED_BOX; + public static String EditorsPlugin_additionalInfo_affordance; + public static String EditorsPlugin_internal_error; + public static String LinkedModeConfigurationBlock_DASHED_BOX; + public static String TextEditorPreferencePage_displayedTabWidth; + public static String TextEditorPreferencePage_enableWordWrap; + public static String TextEditorPreferencePage_convertTabsToSpaces; + public static String TextEditorPreferencePage_undoHistorySize; + public static String TextEditorPreferencePage_printMarginColumn; + public static String TextEditorPreferencePage_showLineNumbers; + public static String TextEditorPreferencePage_highlightCurrentLine; + public static String TextEditorPreferencePage_showPrintMargin; + public static String TextEditorPreferencePage_color; + public static String TextEditorPreferencePage_appearanceOptions; + public static String TextEditorPreferencePage_lineNumberForegroundColor; + public static String TextEditorPreferencePage_currentLineHighlighColor; + public static String TextEditorPreferencePage_printMarginColor; + public static String TextEditorPreferencePage_foregroundColor; + public static String TextEditorPreferencePage_backgroundColor; + public static String TextEditorPreferencePage_findScopeColor; + public static String TextEditorPreferencePage_accessibility_disableCustomCarets; + public static String TextEditorPreferencePage_accessibility_wideCaret; + public static String TextEditorPreferencePage_accessibility_useSaturatedColorsInOverviewRuler; + public static String TextEditorPreferencePage_showAffordance; + public static String TextEditorPreferencePage_selectionForegroundColor; + public static String TextEditorPreferencePage_selectionBackgroundColor; + public static String TextEditorPreferencePage_systemDefault; + public static String TextEditorPreferencePage_invalidInput; + public static String TextEditorPreferencePage_invalidRange; + public static String TextEditorPreferencePage_emptyInput; + public static String TextEditorPreferencePage_colorsAndFonts_link; + public static String TextEditorPreferencePage_Font_link; + public static String QuickDiffConfigurationBlock_description; + public static String QuickDiffConfigurationBlock_referenceProviderTitle; + public static String QuickDiffConfigurationBlock_referenceProviderNoteMessage; + public static String QuickDiffConfigurationBlock_referenceProviderNoteTitle; + public static String QuickDiffConfigurationBlock_characterMode; + public static String QuickDiffConfigurationBlock_showForNewEditors; + public static String QuickDiffConfigurationBlock_showInOverviewRuler; + public static String QuickDiffConfigurationBlock_colorTitle; + public static String QuickDiffConfigurationBlock_changeColor; + public static String QuickDiffConfigurationBlock_additionColor; + public static String QuickDiffConfigurationBlock_deletionColor; + public static String NewTextEditorAction_namePrefix; + public static String AnnotationsConfigurationBlock_description; + public static String AnnotationsConfigurationBlock_showInText; + public static String AnnotationsConfigurationBlock_showInOverviewRuler; + public static String AnnotationsConfigurationBlock_showInVerticalRuler; + public static String AnnotationsConfigurationBlock_isNavigationTarget; + public static String AnnotationsConfigurationBlock_annotationPresentationOptions; + public static String AnnotationsConfigurationBlock_SQUIGGLES; + public static String AnnotationsConfigurationBlock_PROBLEM_UNDERLINE; + public static String AnnotationsConfigurationBlock_UNDERLINE; + public static String AnnotationsConfigurationBlock_BOX; + public static String AnnotationsConfigurationBlock_IBEAM; + public static String AnnotationsConfigurationBlock_HIGHLIGHT; + public static String AnnotationsConfigurationBlock_labels_showIn; + public static String AnnotationsConfigurationBlock_color; + public static String HyperlinkDetectorsConfigurationBlock_description; + public static String HyperlinkDetectorTable_nameColumn; + public static String HyperlinkDetectorTable_modifierKeysColumn; + public static String HyperlinkDetectorTable_targetNameColumn; + public static String SelectResourcesDialog_filterSelection; + public static String SelectResourcesDialog_deselectAll; + public static String SelectResourcesDialog_selectAll; + public static String SelectResourcesDialog_noFilesSelected; + public static String SelectResourcesDialog_oneFileSelected; + public static String SelectResourcesDialog_nFilesSelected; + public static String ConvertLineDelimitersAction_convert_all; + public static String ConvertLineDelimitersAction_convert_text; + public static String ConvertLineDelimitersAction_default_label; + public static String ConvertLineDelimitersAction_dialog_title; + public static String ConvertLineDelimitersToWindows_label; + public static String ConvertLineDelimitersToUnix_label; + public static String ConvertLineDelimitersAction_dialog_description; + public static String ConvertLineDelimitersAction_nontext_selection; + public static String ConvertLineDelimitersAction_show_only_text_files; + public static String RemoveTrailingWhitespaceHandler_dialog_title; + public static String RemoveTrailingWhitespaceHandler_dialog_description; + public static String HyperlinksEnabled_label; + public static String HyperlinkColor_label; + public static String HyperlinkKeyModifier_label; + public static String HyperlinkDefaultKeyModifier_label; + public static String HyperlinkKeyModifier_error_modifierIsNotValid; + public static String HyperlinkKeyModifier_error_shiftIsDisabled; + public static String HyperlinkKeyModifier_delimiter; + public static String HyperlinkKeyModifier_concatModifierStrings; + public static String HyperlinkKeyModifier_insertDelimiterAndModifier; + public static String HyperlinkKeyModifier_insertDelimiterAndModifierAndDelimiter; + public static String HyperlinkKeyModifier_insertModifierAndDelimiter; + public static String AccessibilityPreferencePage_accessibility_title; + public static String SpellingConfigurationBlock_enable; + public static String SpellingConfigurationBlock_combo_caption; + public static String SpellingConfigurationBlock_info_no_preferences; + public static String SpellingConfigurationBlock_error_not_installed; + public static String SpellingConfigurationBlock_error_not_exist; + public static String SpellingConfigurationBlock_error_title; + public static String SpellingConfigurationBlock_error_message; + + static { + NLS.initializeMessages(BUNDLE_NAME, TextEditorMessages.class); + } + + public static String TextEditorDefaultsPreferencePage_carriageReturn; + public static String TextEditorDefaultsPreferencePage_transparencyLevel; + public static String TextEditorDefaultsPreferencePage_configureWhitespaceCharacterPainterProperties; + public static String TextEditorDefaultsPreferencePage_enclosed; + public static String TextEditorDefaultsPreferencePage_enrichHoverMode; + public static String TextEditorDefaultsPreferencePage_enrichHover_immediately; + public static String TextEditorDefaultsPreferencePage_enrichHover_afterDelay; + public static String TextEditorDefaultsPreferencePage_enrichHover_disabled; + public static String TextEditorDefaultsPreferencePage_enrichHover_onClick; + public static String TextEditorDefaultsPreferencePage_ideographicSpace; + public static String TextEditorDefaultsPreferencePage_leading; + public static String TextEditorDefaultsPreferencePage_lineFeed; + public static String TextEditorDefaultsPreferencePage_range_indicator; + public static String TextEditorDefaultsPreferencePage_smartHomeEnd; + public static String TextEditorDefaultsPreferencePage_warn_if_derived; + public static String TextEditorDefaultsPreferencePage_showWhitespaceCharacters; + public static String TextEditorDefaultsPreferencePage_showWhitespaceCharactersLinkText; + public static String TextEditorDefaultsPreferencePage_showWhitespaceCharactersDialogInvalidInput; + public static String TextEditorDefaultsPreferencePage_showWhitespaceCharactersDialogTitle; + public static String TextEditorDefaultsPreferencePage_space; + public static String TextEditorDefaultsPreferencePage_tab; + public static String TextEditorDefaultsPreferencePage_textDragAndDrop; + public static String TextEditorDefaultsPreferencePage_trailing; + public static String LinkedModeConfigurationBlock_annotationPresentationOptions; + public static String LinkedModeConfigurationBlock_SQUIGGLES; + public static String LinkedModeConfigurationBlock_UNDERLINE; + public static String LinkedModeConfigurationBlock_BOX; + public static String LinkedModeConfigurationBlock_IBEAM; + public static String LinkedModeConfigurationBlock_HIGHLIGHT; + public static String LinkedModeConfigurationBlock_labels_showIn; + public static String LinkedModeConfigurationBlock_color; + public static String LinkedModeConfigurationBlock_linking_title; +} diff --git a/plugin/src/winterwell/markdown/spelling/TextEditorMessages.properties b/plugin/src/winterwell/markdown/spelling/TextEditorMessages.properties new file mode 100644 index 0000000..053cf9f --- /dev/null +++ b/plugin/src/winterwell/markdown/spelling/TextEditorMessages.properties @@ -0,0 +1,160 @@ +############################################################################### +# Copyright (c) 2000, 2015 IBM Corporation and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# IBM Corporation - initial API and implementation +############################################################################### + +EditorsPlugin_additionalInfo_affordance=Press 'Tab' from proposal table or click for focus +EditorsPlugin_internal_error=Internal Error + +TextEditorPreferencePage_displayedTabWidth=Displayed &tab width: +TextEditorPreferencePage_enableWordWrap=&Enable word wrap when opening an editor +TextEditorPreferencePage_convertTabsToSpaces=&Insert spaces for tabs +TextEditorPreferencePage_undoHistorySize=&Undo history size: +TextEditorPreferencePage_printMarginColumn=Print margin colu&mn: +TextEditorPreferencePage_showLineNumbers=Show line num&bers +TextEditorPreferencePage_highlightCurrentLine=Hi&ghlight current line +TextEditorPreferencePage_showPrintMargin=Sho&w print margin +TextEditorPreferencePage_color=&Color: +TextEditorPreferencePage_appearanceOptions=Appearance co&lor options: +TextEditorPreferencePage_lineNumberForegroundColor=Line number foreground +TextEditorPreferencePage_currentLineHighlighColor=Current line highlight +TextEditorPreferencePage_printMarginColor=Print margin +TextEditorPreferencePage_foregroundColor=Foreground color +TextEditorPreferencePage_backgroundColor=Background color +TextEditorPreferencePage_findScopeColor=Find scope +TextEditorPreferencePage_accessibility_disableCustomCarets= Use &custom caret +TextEditorPreferencePage_accessibility_wideCaret= &Enable thick caret +TextEditorPreferencePage_accessibility_useSaturatedColorsInOverviewRuler=U&se saturated colors in overview ruler +TextEditorDefaultsPreferencePage_carriageReturn=Carriage Return ( \u00a4 ) +TextEditorDefaultsPreferencePage_transparencyLevel=&Transparency level (0 is transparent and 255 is opaque): +TextEditorDefaultsPreferencePage_configureWhitespaceCharacterPainterProperties=Configure visibility of whitespace characters in different regions of a line of text: +TextEditorDefaultsPreferencePage_enclosed=Enclosed +TextEditorDefaultsPreferencePage_enrichHoverMode=When mouse mo&ved into hover: +TextEditorDefaultsPreferencePage_enrichHover_afterDelay=Enrich after delay +TextEditorDefaultsPreferencePage_enrichHover_disabled=Close hover +TextEditorDefaultsPreferencePage_enrichHover_immediately=Enrich immediately +TextEditorDefaultsPreferencePage_enrichHover_onClick=Enrich on click +TextEditorDefaultsPreferencePage_ideographicSpace=Ideographic space ( \u00b0 ) +TextEditorDefaultsPreferencePage_leading=Leading +TextEditorDefaultsPreferencePage_lineFeed=Line Feed ( \u00b6 ) +TextEditorDefaultsPreferencePage_range_indicator=Show &range indicator +TextEditorDefaultsPreferencePage_warn_if_derived= War&n before editing a derived file +TextEditorDefaultsPreferencePage_smartHomeEnd= &Smart caret positioning at line start and end +TextEditorDefaultsPreferencePage_showWhitespaceCharacters= Sh&ow whitespace characters +TextEditorDefaultsPreferencePage_showWhitespaceCharactersLinkText= (
configure visibility) +TextEditorDefaultsPreferencePage_showWhitespaceCharactersDialogInvalidInput=''{0}'' is not a valid input. +TextEditorDefaultsPreferencePage_showWhitespaceCharactersDialogTitle=Show Whitespace Characters +TextEditorDefaultsPreferencePage_space=Space ( \u00b7 ) +TextEditorDefaultsPreferencePage_tab=Tab ( \u00bb ) +TextEditorDefaultsPreferencePage_textDragAndDrop= Enable drag and dro&p of text +TextEditorDefaultsPreferencePage_trailing=Trailing +TextEditorPreferencePage_colorsAndFonts_link= More colors can be configured on the 'Colors and Fonts' preference page. +TextEditorPreferencePage_Font_link= Some editors may not honor all of these settings.\n\ +\n\ +See 'Colors and Fonts' to configure the font. + +TextEditorPreferencePage_selectionForegroundColor= Selection foreground color +TextEditorPreferencePage_selectionBackgroundColor= Selection background color +TextEditorPreferencePage_systemDefault= System De&fault + +TextEditorPreferencePage_invalidInput= ''{0}'' is not a valid input. +TextEditorPreferencePage_invalidRange= Value must be in between ''{0}'' and ''{1}''. +TextEditorPreferencePage_emptyInput= Empty input. + +TextEditorPreferencePage_showAffordance= S&how affordance in hover on how to make it sticky + + +QuickDiffConfigurationBlock_description= General Quick Diff settings. +QuickDiffConfigurationBlock_referenceProviderTitle= &Use this reference source: +QuickDiffConfigurationBlock_referenceProviderNoteMessage= Changing the reference source does not update open editors. +QuickDiffConfigurationBlock_referenceProviderNoteTitle= Note: +QuickDiffConfigurationBlock_characterMode= &Use characters to show changes in vertical ruler +QuickDiffConfigurationBlock_showForNewEditors= &Enable quick diff +QuickDiffConfigurationBlock_showInOverviewRuler= Show differences in &overview ruler +QuickDiffConfigurationBlock_colorTitle= Colo&rs +QuickDiffConfigurationBlock_changeColor= C&hanges: +QuickDiffConfigurationBlock_additionColor= Addi&tions: +QuickDiffConfigurationBlock_deletionColor= De&letions: + +NewTextEditorAction_namePrefix=Untitled + +AnnotationsConfigurationBlock_description= General annotation settings. +AnnotationsConfigurationBlock_showInText=&Text as +AnnotationsConfigurationBlock_DASHED_BOX=Dashed Box +AnnotationsConfigurationBlock_showInOverviewRuler=&Overview ruler +AnnotationsConfigurationBlock_showInVerticalRuler=&Vertical ruler +AnnotationsConfigurationBlock_isNavigationTarget=&Include in next/previous navigation +AnnotationsConfigurationBlock_annotationPresentationOptions=Annotation ty&pes: +AnnotationsConfigurationBlock_SQUIGGLES=Squiggly Line +AnnotationsConfigurationBlock_PROBLEM_UNDERLINE=Native Problem Underline +AnnotationsConfigurationBlock_UNDERLINE=Underlined +AnnotationsConfigurationBlock_BOX=Box +AnnotationsConfigurationBlock_IBEAM=Vertical Bar +AnnotationsConfigurationBlock_HIGHLIGHT=Highlighted +AnnotationsConfigurationBlock_labels_showIn=Show in +AnnotationsConfigurationBlock_color=&Color: + +HyperlinkDetectorsConfigurationBlock_description= On demand hyperlinks are shown when moving the mouse in the editor while the specified modifier is pressed. The hyperlinks appear on mouse move when no modifier is specified.\n +HyperlinksEnabled_label= &Enable on demand hyperlink style navigation +HyperlinkDetectorTable_nameColumn= Link Kind +HyperlinkDetectorTable_modifierKeysColumn= Modifier Keys +HyperlinkDetectorTable_targetNameColumn= Available In +HyperlinkColor_label=Hyperlink +HyperlinkDefaultKeyModifier_label= De&fault modifier key: +HyperlinkKeyModifier_label= &Modifier keys for selected detector: +HyperlinkKeyModifier_error_modifierIsNotValid= Modifier ''{0}'' is not valid. +HyperlinkKeyModifier_error_shiftIsDisabled= The modifier 'Shift' is not allowed because 'Shift' + click sets a new selection. +HyperlinkKeyModifier_delimiter= + +HyperlinkKeyModifier_concatModifierStrings= {0} + {1} +HyperlinkKeyModifier_insertDelimiterAndModifier= \ + {0} +# The following two property values need to end with a space +HyperlinkKeyModifier_insertDelimiterAndModifierAndDelimiter= \ + {0} +\ +HyperlinkKeyModifier_insertModifierAndDelimiter= \ {0} +\ + +SelectResourcesDialog_filterSelection= &Filter Selection... +SelectResourcesDialog_deselectAll= &Deselect All +SelectResourcesDialog_selectAll= &Select All +SelectResourcesDialog_noFilesSelected= No file selected. +SelectResourcesDialog_oneFileSelected= 1 file selected. +SelectResourcesDialog_nFilesSelected= {0} files selected. + +ConvertLineDelimitersAction_convert_all=Convert &All +ConvertLineDelimitersAction_convert_text=Convert &Text Files +ConvertLineDelimitersAction_default_label=\ [default] +ConvertLineDelimitersAction_dialog_title=Convert Line Delimiters to {0} +ConvertLineDelimitersToWindows_label=&Windows (CRLF, \\r\\n, 0D0A, \u00A4\u00B6) +ConvertLineDelimitersToUnix_label=&Unix (LF, \\n, 0A, \u00B6) +ConvertLineDelimitersAction_dialog_description=Select files to convert: +ConvertLineDelimitersAction_nontext_selection=The selection contains files that could have binary content. Do you want to convert all files or only text files? +ConvertLineDelimitersAction_show_only_text_files=Show only &text files +RemoveTrailingWhitespaceHandler_dialog_title=Remove Trailing Whitespace +RemoveTrailingWhitespaceHandler_dialog_description=Select files: + + +AccessibilityPreferencePage_accessibility_title=Accessibility + +SpellingConfigurationBlock_enable= &Enable spell checking +SpellingConfigurationBlock_combo_caption= Select spelling engine to &use: +SpellingConfigurationBlock_info_no_preferences= The selected spelling engine did not provide a preference control +SpellingConfigurationBlock_error_not_installed= The spelling service is not installed. +SpellingConfigurationBlock_error_not_exist= The selected spelling engine does not exist +SpellingConfigurationBlock_error_title=Dismiss Changes +SpellingConfigurationBlock_error_message=The currently displayed spelling engine preferences contain invalid values. Dismiss changes? + +# linked mode +LinkedModeConfigurationBlock_annotationPresentationOptions= &Ranges: +LinkedModeConfigurationBlock_SQUIGGLES=Squiggles +LinkedModeConfigurationBlock_UNDERLINE=Underlined +LinkedModeConfigurationBlock_BOX=Box +LinkedModeConfigurationBlock_IBEAM=Vertical Bar +LinkedModeConfigurationBlock_HIGHLIGHT=Highlighted +LinkedModeConfigurationBlock_DASHED_BOX=Dashed Box +LinkedModeConfigurationBlock_labels_showIn=&Show in text as: +LinkedModeConfigurationBlock_color= C&olor: +LinkedModeConfigurationBlock_linking_title=Lin&ked Mode diff --git a/plugin/src/winterwell/markdown/views/Limiter.java b/plugin/src/winterwell/markdown/views/Limiter.java index 9a6ce1d..09560d5 100644 --- a/plugin/src/winterwell/markdown/views/Limiter.java +++ b/plugin/src/winterwell/markdown/views/Limiter.java @@ -4,7 +4,7 @@ import org.eclipse.swt.widgets.Display; import org.eclipse.ui.PlatformUI; -import winterwell.markdown.MarkdownUIPlugin; +import winterwell.markdown.MarkdownUI; import winterwell.markdown.preferences.Prefs; /** @@ -34,7 +34,7 @@ public Limiter(MarkdownPreview view) { super("Limiter"); this.view = view; this.display = PlatformUI.getWorkbench().getDisplay(); - this.delay = MarkdownUIPlugin.getDefault().getPreferenceStore().getInt(Prefs.PREF_UPDATE_DELAY) * 1000; + this.delay = MarkdownUI.getDefault().getPreferenceStore().getInt(Prefs.PREF_UPDATE_DELAY) * 1000; } public void dispose() { diff --git a/plugin/src/winterwell/markdown/views/MarkdownPreview.java b/plugin/src/winterwell/markdown/views/MarkdownPreview.java index 9b038d0..ef08dd7 100755 --- a/plugin/src/winterwell/markdown/views/MarkdownPreview.java +++ b/plugin/src/winterwell/markdown/views/MarkdownPreview.java @@ -44,7 +44,7 @@ import org.osgi.framework.Bundle; import winterwell.markdown.Log; -import winterwell.markdown.MarkdownUIPlugin; +import winterwell.markdown.MarkdownUI; import winterwell.markdown.editors.ActionBarContributor; import winterwell.markdown.editors.MarkdownEditor; import winterwell.markdown.pagemodel.MarkdownPage; @@ -193,9 +193,9 @@ public void completed(ProgressEvent event) { List lines = new ArrayList<>(); for (StackTraceElement line : e.getStackTrace()) { - lines.add(new Status(IStatus.ERROR, MarkdownUIPlugin.PLUGIN_ID, line.toString())); + lines.add(new Status(IStatus.ERROR, MarkdownUI.PLUGIN_ID, line.toString())); } - MultiStatus status = new MultiStatus(MarkdownUIPlugin.PLUGIN_ID, IStatus.ERROR, + MultiStatus status = new MultiStatus(MarkdownUI.PLUGIN_ID, IStatus.ERROR, lines.toArray(new Status[lines.size()]), e.getLocalizedMessage(), e); ErrorDialog.openError(null, "Viewer error", e.getMessage(), status); } @@ -219,7 +219,7 @@ protected ITextViewer getSourceViewer() { } protected IPreferenceStore getPreferenceStore() { - return MarkdownUIPlugin.getDefault().getPreferenceStore(); + return MarkdownUI.getDefault().getPreferenceStore(); } private IPath getInputPath(IEditorPart editor) { @@ -244,7 +244,7 @@ private String getMdStyles(IPath path) { if (pathname != null) return pathname; // 3) read the file identified by the pref key 'PREF_CSS_CUSTOM' from the filesystem - IPreferenceStore store = MarkdownUIPlugin.getDefault().getPreferenceStore(); + IPreferenceStore store = MarkdownUI.getDefault().getPreferenceStore(); String customCss = store.getString(PREF_CSS_CUSTOM); if (!customCss.isEmpty()) { File file = new File(customCss); @@ -266,7 +266,7 @@ private String getMdStyles(IPath path) { } // 5) read 'markdown.css' from the bundle - Bundle bundle = Platform.getBundle(MarkdownUIPlugin.PLUGIN_ID); + Bundle bundle = Platform.getBundle(MarkdownUI.PLUGIN_ID); URL url = FileLocator.find(bundle, new Path("resources/" + DEF_MDCSS), null); try { url = FileLocator.toFileURL(url);

}_EUzAIr)}YB(M i)Wd_lOKXH>rIhP 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%0Aezh{- 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ⅆ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≻(z9i(1n`JQ)Y_7-=2Zq(`e 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 z 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