Reupload to git vps.

This commit is contained in:
Daniel Cumbor 2025-07-13 19:43:32 +01:00
commit 922d38ee51
5 changed files with 156 additions and 0 deletions

8
Editor.meta Normal file
View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1ef57e1dadf599b4ba71061a638fd258
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,126 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using UnityEditor;
using UnityEngine;
public class DictionaryProcessorWindow : EditorWindow
{
private int _filteredWordCount;
private int _maxWordLength = 6;
private int _minWordLength = 3;
private int _originalWordCount;
private string _outputFileName = "FilteredDictionary";
private string _previewText = "";
private Vector2 _scrollPosition;
private TextAsset _sourceFile;
private void OnGUI()
{
GUILayout.Label("Dictionary Processing Tool", EditorStyles.boldLabel);
EditorGUILayout.Space();
_sourceFile = (TextAsset)EditorGUILayout.ObjectField("Source Dictionary",
_sourceFile, typeof(TextAsset), false);
EditorGUILayout.Space();
GUILayout.Label("Filtering Options", EditorStyles.boldLabel);
_minWordLength = EditorGUILayout.IntSlider("Min Word Length", _minWordLength, 1, 10);
_maxWordLength = EditorGUILayout.IntSlider("Max Word Length", _maxWordLength, 1, 15);
EditorGUILayout.Space();
GUILayout.Label("Output Settings", EditorStyles.boldLabel);
_outputFileName = EditorGUILayout.TextField("Output File Name", _outputFileName);
EditorGUILayout.Space();
EditorGUILayout.BeginHorizontal();
if (GUILayout.Button("Preview")) PreviewFiltering();
GUI.enabled = _sourceFile;
if (GUILayout.Button("Process & Save")) ProcessAndSave();
GUI.enabled = true;
EditorGUILayout.EndHorizontal();
if (_originalWordCount > 0)
{
EditorGUILayout.Space();
EditorGUILayout.LabelField($"Original: {_originalWordCount:N0} words");
EditorGUILayout.LabelField(
$"Filtered: {_filteredWordCount:N0} words ({(float)_filteredWordCount / _originalWordCount * 100:F1}% kept)");
}
if (!string.IsNullOrEmpty(_previewText))
{
EditorGUILayout.Space();
GUILayout.Label("Preview (first 50 words):", EditorStyles.boldLabel);
_scrollPosition = EditorGUILayout.BeginScrollView(_scrollPosition, GUILayout.Height(200));
EditorGUILayout.TextArea(_previewText, GUILayout.ExpandHeight(true));
EditorGUILayout.EndScrollView();
}
}
[MenuItem("Tools/Dictionary Processor")]
public static void ShowWindow()
{
GetWindow<DictionaryProcessorWindow>("Dictionary Processor");
}
private void PreviewFiltering()
{
if (!_sourceFile) return;
var filteredWords = ProcessWords(_sourceFile.text);
_originalWordCount = _sourceFile.text.Split('\n').Length;
_filteredWordCount = filteredWords.Count;
_previewText = string.Join("\n", filteredWords.Take(50));
if (filteredWords.Count > 50)
_previewText += $"\n... and {filteredWords.Count - 50} more words";
}
private void ProcessAndSave()
{
if (!_sourceFile) return;
var filteredWords = ProcessWords(_sourceFile.text);
var outputPath = Path.Combine(Application.dataPath, "StreamingAssets", $"{_outputFileName}.txt");
Directory.CreateDirectory(Path.GetDirectoryName(outputPath) ?? throw new NullReferenceException("Invalid path"));
File.WriteAllText(outputPath, string.Join("\n", filteredWords));
AssetDatabase.Refresh();
Debug.Log($"Dictionary processed! {filteredWords.Count} words saved to: {outputPath}");
_originalWordCount = _sourceFile.text.Split('\n').Length;
_filteredWordCount = filteredWords.Count;
}
private List<string> ProcessWords(string text)
{
var words = text.Split(new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
var filteredWords = new List<string>();
foreach (var rawWord in words)
{
var word = rawWord.Trim().ToLowerInvariant();
if (word.Length < _minWordLength || word.Length > _maxWordLength)
continue;
if (!Regex.IsMatch(word, @"^[a-z]+$"))
continue;
filteredWords.Add(word);
}
return filteredWords.Distinct().OrderBy(w => w).ToList();
}
}

View file

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: a7ebd227f3b8fbb4b9723d3f17cc1c43

13
package.json Normal file
View file

@ -0,0 +1,13 @@
{
"name": "com.danielcumbor.dictionaryprocessor",
"version": "1.0.0",
"displayName": "DC Dictionary Processor",
"description": "A custom Unity tool window for filtering dictionaries.",
"unity": "6000.0",
"unityRelease": "23f1",
"author": {
"name": "Daniel Cumbor",
"email": "danc@ultr.uk",
"url": "https://www.danielcumbor.uk"
}
}

7
package.json.meta Normal file
View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 71f47fb424c5a4e45a5a8bdb452ac2fa
PackageManifestImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: