|
3 | 3 | using System.Text.RegularExpressions; |
4 | 4 | using UnityEngine; |
5 | 5 |
|
6 | | -public class RegexHypertext : HypertextBase |
| 6 | +namespace Hypertext |
7 | 7 | { |
8 | | - readonly Dictionary<string, Entry> _entryTable = new Dictionary<string, Entry>(); |
9 | | - |
10 | | - struct Entry |
| 8 | + public class RegexHypertext : HypertextBase |
11 | 9 | { |
12 | | - public string RegexPattern; |
13 | | - public Color Color; |
14 | | - public Action<string> OnClick; |
| 10 | + readonly Dictionary<string, Entry> _entryTable = new Dictionary<string, Entry>(); |
15 | 11 |
|
16 | | - public Entry(string regexPattern, Color color, Action<string> onClick) |
| 12 | + struct Entry |
17 | 13 | { |
18 | | - RegexPattern = regexPattern; |
19 | | - Color = color; |
20 | | - OnClick = onClick; |
21 | | - } |
22 | | - } |
| 14 | + public string RegexPattern; |
| 15 | + public Color Color; |
| 16 | + public Action<string> OnClick; |
23 | 17 |
|
24 | | - /// <summary> |
25 | | - /// 正規表現にマッチした部分文字列にクリックイベントを登録します |
26 | | - /// </summary> |
27 | | - /// <param name="regexPattern">正規表現</param> |
28 | | - /// <param name="onClick">クリック時のコールバック</param> |
29 | | - public void SetClickableByRegex(string regexPattern, Action<string> onClick) |
30 | | - { |
31 | | - SetClickableByRegex(regexPattern, color, onClick); |
32 | | - } |
| 18 | + public Entry(string regexPattern, Color color, Action<string> onClick) |
| 19 | + { |
| 20 | + RegexPattern = regexPattern; |
| 21 | + Color = color; |
| 22 | + OnClick = onClick; |
| 23 | + } |
| 24 | + } |
33 | 25 |
|
34 | | - /// <summary> |
35 | | - /// 正規表現にマッチした部分文字列に色とクリックイベントを登録します |
36 | | - /// </summary> |
37 | | - /// <param name="regexPattern">正規表現</param> |
38 | | - /// <param name="color">正規表現でマッチしたテキストの色</param> |
39 | | - /// <param name="onClick">クリック時のコールバック</param> |
40 | | - public void SetClickableByRegex(string regexPattern, Color color, Action<string> onClick) |
41 | | - { |
42 | | - if (string.IsNullOrEmpty(regexPattern) || onClick == null) |
| 26 | + /// <summary> |
| 27 | + /// 正規表現にマッチした部分文字列にクリックイベントを登録します |
| 28 | + /// </summary> |
| 29 | + /// <param name="regexPattern">正規表現</param> |
| 30 | + /// <param name="onClick">クリック時のコールバック</param> |
| 31 | + public void SetClickableByRegex(string regexPattern, Action<string> onClick) |
43 | 32 | { |
44 | | - return; |
| 33 | + SetClickableByRegex(regexPattern, color, onClick); |
45 | 34 | } |
46 | 35 |
|
47 | | - _entryTable[regexPattern] = new Entry(regexPattern, color, onClick); |
48 | | - } |
| 36 | + /// <summary> |
| 37 | + /// 正規表現にマッチした部分文字列に色とクリックイベントを登録します |
| 38 | + /// </summary> |
| 39 | + /// <param name="regexPattern">正規表現</param> |
| 40 | + /// <param name="color">正規表現でマッチしたテキストの色</param> |
| 41 | + /// <param name="onClick">クリック時のコールバック</param> |
| 42 | + public void SetClickableByRegex(string regexPattern, Color color, Action<string> onClick) |
| 43 | + { |
| 44 | + if (string.IsNullOrEmpty(regexPattern) || onClick == null) |
| 45 | + { |
| 46 | + return; |
| 47 | + } |
49 | 48 |
|
50 | | - public override void RemoveClickable() |
51 | | - { |
52 | | - base.RemoveClickable(); |
53 | | - _entryTable.Clear(); |
54 | | - } |
| 49 | + _entryTable[regexPattern] = new Entry(regexPattern, color, onClick); |
| 50 | + } |
55 | 51 |
|
56 | | - /// <summary> |
57 | | - /// テキストの変更などでクリックする文字位置の再計算が必要なときに呼び出されます |
58 | | - /// 親の RegisterClickable メソッドを使ってクリック対象文字の情報を登録してください |
59 | | - /// </summary> |
60 | | - protected override void RegisterClickable() |
61 | | - { |
62 | | - foreach (var entry in _entryTable.Values) |
| 52 | + public override void RemoveClickable() |
| 53 | + { |
| 54 | + base.RemoveClickable(); |
| 55 | + _entryTable.Clear(); |
| 56 | + } |
| 57 | + |
| 58 | + /// <summary> |
| 59 | + /// テキストの変更などでクリックする文字位置の再計算が必要なときに呼び出されます |
| 60 | + /// 親の RegisterClickable メソッドを使ってクリック対象文字の情報を登録してください |
| 61 | + /// </summary> |
| 62 | + protected override void RegisterClickable() |
63 | 63 | { |
64 | | - foreach (Match match in Regex.Matches(text, entry.RegexPattern)) |
| 64 | + foreach (var entry in _entryTable.Values) |
65 | 65 | { |
66 | | - RegisterClickable(match.Index, match.Value.Length, entry.Color, entry.OnClick); |
| 66 | + foreach (Match match in Regex.Matches(text, entry.RegexPattern)) |
| 67 | + { |
| 68 | + RegisterClickable(match.Index, match.Value.Length, entry.Color, entry.OnClick); |
| 69 | + } |
67 | 70 | } |
68 | 71 | } |
69 | 72 | } |
|
0 commit comments