Skip to content

Commit

Permalink
fix: caption label space
Browse files Browse the repository at this point in the history
  • Loading branch information
randolfly committed Dec 4, 2024
1 parent c16c784 commit 04e8fa5
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 15 deletions.
40 changes: 31 additions & 9 deletions Randolf.WordToolkit/Model/FieldPool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -60,21 +60,43 @@ public List<Range> GetRangesFromField(List<Field> selectedFields)
.Select(f => f.Result.Sentences.First)
.Select(r => r.Words.First)
.ToList();
var resultRange = new List<Range>(selectedFields.Count*2);
for (var i=0;i< selectedRanges.Count;i++)
{
var fieldLabel = CommonUtils.GetFieldLabel(
var fieldLabels = CommonUtils.GetFieldLabel(
CommonUtils.FormatString(
selectedFields[i].Result.Sentences.First.Text));
selectedRanges[i].MoveEnd(WdUnits.wdCharacter, fieldLabel.Length);
var range1 = selectedRanges[i];
var range2 = selectedRanges[i].Duplicate;
range2.MoveEnd(WdUnits.wdCharacter,
fieldLabels[1].Length + fieldLabels[2].Length);
range2.MoveStart(WdUnits.wdCharacter,
(fieldLabels[0].Length + fieldLabels[1].Length));

resultRange.Add(range1);
resultRange.Add(range2);
}
return selectedRanges;
return resultRange;
}

public static List<string> GetBookmarkNames(List<string> selectedText)
{
return CommonUtils.CalculateHash(selectedText)
.Select(s => $"_Ref{s}") // make bookmark as hidden
.ToList();
/// <summary>
/// generate bookmark names
/// </summary>
/// <param name="selectedText">label field name</param>
/// <returns></returns>
public static List<string> GetBookmarkNames(List<string> selectedText) {
var bookmarkNames = new List<string>(selectedText.Count * 2);
var hashList = CommonUtils.CalculateHash(selectedText);
for (int i = 0; i < hashList.Count; i++)
{
// Get the first 6 characters of the hash
var hashPrefix = hashList[i].Substring(0, 6);
var text1 = $"_Ref{hashPrefix}1";
var text2 = $"_Ref{hashPrefix}2";
bookmarkNames.Add(text1);
bookmarkNames.Add(text2);
}
return bookmarkNames;
}

/// <summary>
Expand All @@ -94,9 +116,9 @@ public List<Bookmark> AddBookmarks(List<Range> ranges, List<string> bookmarkName
{
var bookmark = ranges[i].Bookmarks.Add(bookmarkNames[i], ranges[i]);
bookmarkList.Add(bookmark);

}

// insert bookmark
foreach (var bookmark in bookmarkNames)
Globals.ThisAddIn.Application.Selection.Fields.Add(Globals.ThisAddIn.Application.Selection.Range,
WdFieldType.wdFieldRef, bookmark);
Expand Down
13 changes: 8 additions & 5 deletions Randolf.WordToolkit/Util/CommonUtils.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,17 @@ public static string FormatField(Field field)

/// <summary>
/// Get the label of a field.
/// Example: "Figure 1.1 example structure" -> " 1.1"
/// Example: "Figure 1.1 example structure" -> ["Figure", " ", "1.1"]
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static string GetFieldLabel(string input) {
var match = Regex.Match(input, @"([^\d\s]+(?<id>\s+\d+[-.]?\d*))");
var id = match.Groups["id"];
return id.Value;
public static List<string> GetFieldLabel(string input) {
var match = Regex.Match(input, @"((?<name>[^\d\s]+)(?<bar>\s+)(?<id>\d+[-.]?\d*))");
var label_list = new List<string>();
label_list.Add(match.Groups["name"].Value);
label_list.Add(match.Groups["bar"].Value);
label_list.Add(match.Groups["id"].Value);
return label_list;
}

#region Hash Calculation
Expand Down
4 changes: 3 additions & 1 deletion Randolf.WordToolkit/View/SearchDialog.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,11 @@ private void txt_SearchInput_TextChanged(object sender, EventArgs e) {
private void btn_InsertFields_Click(object sender, EventArgs e) {
var selectedText = this.list_SearchResult.SelectedItems.Cast<string>().ToList();
var selectedFields = FieldPool.GetFieldsFromText(selectedText);

// add 2 bookmark to remove space between labels
// e.g. : Fig 1.1 example -> "Fig", "1.1"
var selectedRanges = FieldPool.GetRangesFromField(selectedFields);
var bookmarkNames = FieldPool.GetBookmarkNames(selectedText);

FieldPool.AddBookmarks(selectedRanges, bookmarkNames);
}

Expand Down

0 comments on commit 04e8fa5

Please sign in to comment.