Migration
This commit is contained in:
commit
793d2347f4
86
2016/04/ParseCSVLine.txt
Normal file
86
2016/04/ParseCSVLine.txt
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
/// <summary>
|
||||||
|
/// Parse CSV line into string array.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="line">CSV line.</param>
|
||||||
|
/// <returns>List of items in CSV.</returns>
|
||||||
|
protected string[] ParseCSVLine(string line)
|
||||||
|
{
|
||||||
|
string[] rv = new string[0];
|
||||||
|
|
||||||
|
int quotCount = 0;
|
||||||
|
bool ignoreNext = false;
|
||||||
|
bool hadQuot = false;
|
||||||
|
int startPos = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < line.Length; i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
// ignore char
|
||||||
|
if (ignoreNext)
|
||||||
|
{
|
||||||
|
ignoreNext = false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ignore next char
|
||||||
|
if (line[i].Equals('\\'))
|
||||||
|
{
|
||||||
|
ignoreNext = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// push quot
|
||||||
|
if (line[i].Equals('"'))
|
||||||
|
{
|
||||||
|
hadQuot = true;
|
||||||
|
|
||||||
|
if (quotCount <= 0)
|
||||||
|
{
|
||||||
|
quotCount++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
quotCount--;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (line[i].Equals(','))
|
||||||
|
{
|
||||||
|
if (quotCount <= 0)
|
||||||
|
{
|
||||||
|
string cell = line.Substring(startPos, (i - startPos));
|
||||||
|
if (hadQuot)
|
||||||
|
{
|
||||||
|
Array.Resize(ref rv, (rv.Length + 1));
|
||||||
|
rv[(rv.Length - 1)] = cell.Substring(1, (cell.Length - 2));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Array.Resize(ref rv, (rv.Length + 1));
|
||||||
|
rv[(rv.Length - 1)] = cell;
|
||||||
|
}
|
||||||
|
startPos = (i + 1);
|
||||||
|
hadQuot = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// last cell
|
||||||
|
if (startPos <= line.Length)
|
||||||
|
{
|
||||||
|
string cell = line.Substring(startPos, (line.Length - startPos));
|
||||||
|
if (hadQuot)
|
||||||
|
{
|
||||||
|
Array.Resize(ref rv, (rv.Length + 1));
|
||||||
|
rv[(rv.Length - 1)] = cell.Substring(1, (cell.Length - 2));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Array.Resize(ref rv, (rv.Length + 1));
|
||||||
|
rv[(rv.Length - 1)] = cell;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return rv;
|
||||||
|
}
|
116
2016/08/bshelper-modal-v0.1.0.023.js
Normal file
116
2016/08/bshelper-modal-v0.1.0.023.js
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
/**
|
||||||
|
* BSHelper
|
||||||
|
* Bootstrap Helper
|
||||||
|
* @version v0.1.0.023 (2015/07/14 1157)
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BSDialog
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
var BSDialog = {
|
||||||
|
Create:function(id, title, url, is_big){
|
||||||
|
id = "dlg" + id;
|
||||||
|
if ($("#" + id).length <= 0) this.Add(id, title, ((is_big == undefined)? false : is_big));
|
||||||
|
//--
|
||||||
|
$("#" + id).find(".modal-content").load(url);
|
||||||
|
$("#" + id).modal('show');
|
||||||
|
$("#" + id).on('hide.bs.modal', function(){
|
||||||
|
$("body > div[id='" + id + "']").remove();
|
||||||
|
$("body > div[class~='modal-backdrop']").remove();
|
||||||
|
$("body").removeClass("modal-open");
|
||||||
|
});
|
||||||
|
},
|
||||||
|
Add:function(id, title, is_big){
|
||||||
|
if ($("body > div#" + id).length > 0) return;
|
||||||
|
//--
|
||||||
|
var html = "";
|
||||||
|
html += "<div class=\"modal fade\" id=\"" + id + "\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"" + id + "Label\" aria-hidden=\"true\">";
|
||||||
|
html += " <div class=\"modal-dialog" + ((is_big)? " modal-lg" : "") + "\">";
|
||||||
|
html += " <div class=\"modal-content\">";
|
||||||
|
html += " <div class=\"modal-header\">";
|
||||||
|
html += " <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">×</button>";
|
||||||
|
html += " <strong class=\"modal-title\" id=\"" + id + "Label\">" + title + "</strong>";
|
||||||
|
html += " </div>";
|
||||||
|
html += " <div class=\"modal-body custom-loading\"></div>";
|
||||||
|
html += " <div class=\"modal-footer\">";
|
||||||
|
html += " <button type=\"button\" class=\"btn btn-default\" data-dismiss=\"modal\">Close</button>";
|
||||||
|
html += " </div>";
|
||||||
|
html += " </div>";
|
||||||
|
html += " </div>";
|
||||||
|
html += "</div>";
|
||||||
|
//--
|
||||||
|
$("body").append(html);
|
||||||
|
},
|
||||||
|
Close: function (id) {
|
||||||
|
if (typeof (id) == "object")
|
||||||
|
{
|
||||||
|
var sender = null;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (typeof (id.target) != "undefined")
|
||||||
|
{
|
||||||
|
sender = id.target;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof (id) != "undefined")
|
||||||
|
{
|
||||||
|
sender = id;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} while (false);
|
||||||
|
|
||||||
|
if (sender == null) return;
|
||||||
|
|
||||||
|
var panel = $(sender).parentsUntil("div[id^='dlg']").parent();
|
||||||
|
if ($(panel).length > 0)
|
||||||
|
{
|
||||||
|
var dialogID = $(panel).attr("id").substr(3);
|
||||||
|
|
||||||
|
this.Close(dialogID);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if ($("body > div#dlg" + id).length <= 0) return;
|
||||||
|
|
||||||
|
$("body > div#dlg" + id).remove();
|
||||||
|
$("body > div[class~='modal-backdrop']").remove();
|
||||||
|
$("body").removeClass("modal-open");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
Clear:function(){
|
||||||
|
$("body > div[class~='modal'][role='dialog']").remove();
|
||||||
|
$("body > div[class~='modal-backdrop']").remove();
|
||||||
|
$("body").removeClass("modal-open");
|
||||||
|
},
|
||||||
|
ShowToast:function(id, title, message, is_big){
|
||||||
|
if ($("body > div#" + id).length > 0) return;
|
||||||
|
//--
|
||||||
|
var html = "";
|
||||||
|
html += "<div class=\"modal fade\" id=\"" + id + "\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"" + id + "Label\" aria-hidden=\"true\">";
|
||||||
|
html += " <div class=\"modal-dialog" + ((is_big)? " modal-lg" : "") + "\">";
|
||||||
|
html += " <div class=\"modal-content\">";
|
||||||
|
html += " <div class=\"modal-header\">";
|
||||||
|
html += " <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">×</button>";
|
||||||
|
html += " <strong class=\"modal-title\" id=\"" + id + "Label\">" + title + "</strong>";
|
||||||
|
html += " </div>";
|
||||||
|
html += " <div class=\"modal-body\">" + message + "</div>";
|
||||||
|
html += " <div class=\"modal-footer\">";
|
||||||
|
html += " <button type=\"button\" class=\"btn btn-default\" data-dismiss=\"modal\">Close</button>";
|
||||||
|
html += " </div>";
|
||||||
|
html += " </div>";
|
||||||
|
html += " </div>";
|
||||||
|
html += "</div>";
|
||||||
|
//--
|
||||||
|
$("body").append(html);
|
||||||
|
//--
|
||||||
|
$("#" + id).modal('show');
|
||||||
|
$("#" + id).on('hide.bs.modal', function(){
|
||||||
|
$("body > div[id='" + id + "']").remove();
|
||||||
|
$("body > div[class~='modal-backdrop']").remove();
|
||||||
|
$("body").removeClass("modal-open");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
168
2018/01/httpweb.cs
Normal file
168
2018/01/httpweb.cs
Normal file
@ -0,0 +1,168 @@
|
|||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Net;
|
||||||
|
using System.Text;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace RyzStudio.Net
|
||||||
|
{
|
||||||
|
public class HttpWeb
|
||||||
|
{
|
||||||
|
public string defaultUserAgent = "Momozilla/5.0 (" + Environment.OSVersion.Platform.ToString() + " ; " + Environment.OSVersion.VersionString + "; " + Application.CurrentCulture.TwoLetterISOLanguageName + ")";
|
||||||
|
public int defaultTimeout = 6000;
|
||||||
|
public int defaultMaxRedirect = 8;
|
||||||
|
public bool defaultAllowRedirect = true;
|
||||||
|
public CookieContainer defaultCookierContainer = null;
|
||||||
|
|
||||||
|
public HttpWeb()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public HttpWebRequest CreateRequest(string url)
|
||||||
|
{
|
||||||
|
return this.CreateRequest(url, url);
|
||||||
|
}
|
||||||
|
|
||||||
|
public HttpWebRequest CreateRequest(string url, string referrerURL)
|
||||||
|
{
|
||||||
|
if (defaultCookierContainer == null)
|
||||||
|
{
|
||||||
|
defaultCookierContainer = new CookieContainer();
|
||||||
|
}
|
||||||
|
|
||||||
|
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
|
||||||
|
webRequest.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore);
|
||||||
|
webRequest.MaximumAutomaticRedirections = defaultMaxRedirect;
|
||||||
|
webRequest.CookieContainer = defaultCookierContainer;
|
||||||
|
webRequest.UserAgent = defaultUserAgent;
|
||||||
|
webRequest.AllowAutoRedirect = defaultAllowRedirect;
|
||||||
|
webRequest.Timeout = defaultTimeout;
|
||||||
|
|
||||||
|
return webRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetResponse(out string sourceCode, string url, string referrerURL = "")
|
||||||
|
{
|
||||||
|
HttpWebRequest webRequest = this.CreateRequest(url, referrerURL);
|
||||||
|
|
||||||
|
return GetResponse(out sourceCode, webRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetResponse(out string sourceCode, HttpWebRequest webRequest)
|
||||||
|
{
|
||||||
|
sourceCode = string.Empty;
|
||||||
|
|
||||||
|
int rv = 0;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
|
||||||
|
|
||||||
|
rv = (int)webResponse.StatusCode;
|
||||||
|
|
||||||
|
StreamReader readContent = new StreamReader(webResponse.GetResponseStream());
|
||||||
|
sourceCode = readContent.ReadToEnd();
|
||||||
|
|
||||||
|
webResponse.Close();
|
||||||
|
webResponse = null;
|
||||||
|
}
|
||||||
|
catch (WebException xc)
|
||||||
|
{
|
||||||
|
if (xc.Response is HttpWebResponse)
|
||||||
|
{
|
||||||
|
HttpWebResponse rs = xc.Response as HttpWebResponse;
|
||||||
|
StreamReader readContent = new StreamReader(rs.GetResponseStream());
|
||||||
|
if (readContent != null)
|
||||||
|
{
|
||||||
|
sourceCode = readContent.ReadToEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
rv = (int)rs.StatusCode;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rv = (int)xc.Status;
|
||||||
|
sourceCode = xc.Message;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception xc)
|
||||||
|
{
|
||||||
|
sourceCode = xc.Message;
|
||||||
|
}
|
||||||
|
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HttpWebRequest AddBasicAuthentication(HttpWebRequest webRequest, string username, string password)
|
||||||
|
{
|
||||||
|
webRequest.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(string.Concat(username, ":", password)));
|
||||||
|
webRequest.PreAuthenticate = true;
|
||||||
|
|
||||||
|
return webRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public int GetPOSTResponse(out string sourceCode, HttpWebRequest webRequest, string postData)
|
||||||
|
{
|
||||||
|
sourceCode = "";
|
||||||
|
int rv = 0;
|
||||||
|
byte[] buffer = Encoding.UTF8.GetBytes(postData);
|
||||||
|
|
||||||
|
webRequest.ContentLength = buffer.Length;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Stream dataStream = webRequest.GetRequestStream();
|
||||||
|
dataStream.Write(buffer, 0, buffer.Length);
|
||||||
|
dataStream.Close();
|
||||||
|
}
|
||||||
|
catch (Exception xc)
|
||||||
|
{
|
||||||
|
sourceCode = xc.Message;
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.GetResponse(out sourceCode, webRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetHeader(out WebHeaderCollection headerCollection, string url, string referrerURL = "")
|
||||||
|
{
|
||||||
|
headerCollection = null;
|
||||||
|
|
||||||
|
int rv = 0;
|
||||||
|
|
||||||
|
HttpWebRequest webRequest = this.CreateRequest(url, referrerURL);
|
||||||
|
webRequest.Method = "HEAD";
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
|
||||||
|
headerCollection = webResponse.Headers;
|
||||||
|
|
||||||
|
rv = (int)webResponse.StatusCode;
|
||||||
|
|
||||||
|
webResponse.Close();
|
||||||
|
webResponse = null;
|
||||||
|
}
|
||||||
|
catch (WebException xc)
|
||||||
|
{
|
||||||
|
if (xc.Response is HttpWebResponse)
|
||||||
|
{
|
||||||
|
HttpWebResponse rs = xc.Response as HttpWebResponse;
|
||||||
|
|
||||||
|
rv = (int)rs.StatusCode;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rv = (int)xc.Status;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception xc)
|
||||||
|
{
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
248
2019/02/Docxument.cs
Normal file
248
2019/02/Docxument.cs
Normal file
@ -0,0 +1,248 @@
|
|||||||
|
using ICSharpCode.SharpZipLib.Zip;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Security;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace HiImRay
|
||||||
|
{
|
||||||
|
public class Docxument
|
||||||
|
{
|
||||||
|
protected string Filename { get; set; }
|
||||||
|
|
||||||
|
public int CompressionLevel { get; set; } = 9;
|
||||||
|
public Dictionary<string, string> ReplacementWords = new Dictionary<string, string>();
|
||||||
|
public Dictionary<string, List<Dictionary<string, string>>> ReplacementParagraphs = new Dictionary<string, List<Dictionary<string, string>>>();
|
||||||
|
|
||||||
|
public Docxument()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public Docxument(string filename)
|
||||||
|
{
|
||||||
|
Load(filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Load(string filename)
|
||||||
|
{
|
||||||
|
this.Filename = filename;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Save(string saveFilename)
|
||||||
|
{
|
||||||
|
int size = 2048;
|
||||||
|
byte[] buffer = new byte[size];
|
||||||
|
int bufferSize = 0;
|
||||||
|
|
||||||
|
// read file
|
||||||
|
ZipEntry readEntry = null;
|
||||||
|
ZipInputStream readStream = new ZipInputStream(File.OpenRead(this.Filename));
|
||||||
|
|
||||||
|
// write file
|
||||||
|
ZipOutputStream writeStream = new ZipOutputStream(File.Create(saveFilename));
|
||||||
|
writeStream.SetLevel(this.CompressionLevel);
|
||||||
|
|
||||||
|
// loop
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
readEntry = readStream.GetNextEntry();
|
||||||
|
if (readEntry == null)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!readEntry.IsFile)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(readEntry.Name))
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// change document
|
||||||
|
if (readEntry.Name.Equals("word/document.xml"))
|
||||||
|
{
|
||||||
|
MemoryStream ms = new MemoryStream();
|
||||||
|
buffer = new byte[size];
|
||||||
|
bufferSize = 0;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
bufferSize = readStream.Read(buffer, 0, buffer.Length);
|
||||||
|
ms.Write(buffer, 0, bufferSize);
|
||||||
|
} while (bufferSize > 0);
|
||||||
|
|
||||||
|
ms.Position = 0;
|
||||||
|
|
||||||
|
StreamReader sr = new StreamReader(ms);
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.Append(sr.ReadToEnd());
|
||||||
|
|
||||||
|
// make changes
|
||||||
|
sb = replaceTokens(sb, this.ReplacementWords);
|
||||||
|
sb = replaceParagraphs(sb, this.ReplacementParagraphs);
|
||||||
|
|
||||||
|
// make readable
|
||||||
|
MemoryStream ms2 = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(sb.ToString()));
|
||||||
|
ms2.Position = 0;
|
||||||
|
|
||||||
|
// write new document xml
|
||||||
|
writeStream.PutNextEntry(new ZipEntry(readEntry.Name));
|
||||||
|
|
||||||
|
buffer = new byte[size];
|
||||||
|
bufferSize = 0;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
bufferSize = ms2.Read(buffer, 0, buffer.Length);
|
||||||
|
writeStream.Write(buffer, 0, bufferSize);
|
||||||
|
} while (bufferSize > 0);
|
||||||
|
|
||||||
|
ms2.Close();
|
||||||
|
ms2.Dispose();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
writeStream.PutNextEntry(new ZipEntry(readEntry.Name));
|
||||||
|
|
||||||
|
buffer = new byte[size];
|
||||||
|
bufferSize = 0;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
bufferSize = readStream.Read(buffer, 0, buffer.Length);
|
||||||
|
writeStream.Write(buffer, 0, bufferSize);
|
||||||
|
} while (bufferSize > 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
writeStream.Finish();
|
||||||
|
writeStream.Flush();
|
||||||
|
writeStream.Close();
|
||||||
|
writeStream.Dispose();
|
||||||
|
|
||||||
|
readStream.Close();
|
||||||
|
readStream.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected StringBuilder replaceTokens(StringBuilder sb, Dictionary<string, string> options)
|
||||||
|
{
|
||||||
|
foreach (KeyValuePair<string, string> item in options)
|
||||||
|
{
|
||||||
|
sb.Replace("{{" + item.Key + "}}", SecurityElement.Escape(item.Value));
|
||||||
|
}
|
||||||
|
|
||||||
|
return sb;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected StringBuilder replaceParagraphs(StringBuilder sb, Dictionary<string, List<Dictionary<string, string>>> options)
|
||||||
|
{
|
||||||
|
foreach (KeyValuePair<string, List<Dictionary<string, string>>> item in options)
|
||||||
|
{
|
||||||
|
sb = replaceParagraph(sb, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
return sb;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected StringBuilder replaceParagraph(StringBuilder sb, KeyValuePair<string, List<Dictionary<string, string>>> options)
|
||||||
|
{
|
||||||
|
string paragraph = sb.ToString();
|
||||||
|
|
||||||
|
Tuple<int, int> outerCoord = getOuterParagraph(paragraph, "{{" + options.Key + "}}");
|
||||||
|
if (outerCoord != null)
|
||||||
|
{
|
||||||
|
sb.Remove(outerCoord.Item1, outerCoord.Item2);
|
||||||
|
|
||||||
|
Tuple<int, int> innerCoord = getInnerParagraph(paragraph.Substring(outerCoord.Item1, outerCoord.Item2), "{{" + options.Key + "}}");
|
||||||
|
string innerParagraph = paragraph.Substring((innerCoord.Item1 + outerCoord.Item1), innerCoord.Item2);
|
||||||
|
|
||||||
|
StringBuilder innerText = new StringBuilder();
|
||||||
|
foreach (Dictionary<string, string> row in options.Value)
|
||||||
|
{
|
||||||
|
StringBuilder sb2 = new StringBuilder();
|
||||||
|
sb2.Append(innerParagraph);
|
||||||
|
|
||||||
|
sb2 = replaceTokens(sb2, row);
|
||||||
|
|
||||||
|
innerText.Append(sb2.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
sb.Insert(outerCoord.Item1, innerText.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return sb;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Tuple<int, int> getOuterParagraph(string fullText, string findTerm)
|
||||||
|
{
|
||||||
|
string headTerm = "<w:p ";
|
||||||
|
string tailTerm = "</w:p>";
|
||||||
|
|
||||||
|
int headIndex = fullText.IndexOf(findTerm);
|
||||||
|
if (headIndex < 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
int tailIndex = fullText.IndexOf(findTerm, (headIndex + findTerm.Length));
|
||||||
|
if (tailIndex < 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
headIndex = fullText.LastIndexOf(headTerm, headIndex);
|
||||||
|
if (headIndex < 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
tailIndex = fullText.IndexOf(tailTerm, (tailIndex + tailTerm.Length));
|
||||||
|
if (tailIndex < 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
tailIndex += tailTerm.Length;
|
||||||
|
|
||||||
|
return new Tuple<int, int>(headIndex, (tailIndex - headIndex));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Tuple<int, int> getInnerParagraph(string fullText, string findTerm)
|
||||||
|
{
|
||||||
|
string headTerm = "<w:p ";
|
||||||
|
string tailTerm = "</w:p>";
|
||||||
|
|
||||||
|
int headIndex = fullText.IndexOf(findTerm);
|
||||||
|
if (headIndex < 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
int tailIndex = fullText.IndexOf(findTerm, (headIndex + findTerm.Length));
|
||||||
|
if (tailIndex < 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
headIndex = fullText.IndexOf(tailTerm, headIndex);
|
||||||
|
if (headIndex < 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
headIndex += tailTerm.Length;
|
||||||
|
|
||||||
|
tailIndex = fullText.LastIndexOf(headTerm, tailIndex);
|
||||||
|
if (tailIndex < 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Tuple<int, int>(headIndex, (tailIndex - headIndex));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user