Make comment blocks expandable & improve parsing

This commit is contained in:
azakhi 2018-08-19 21:01:47 +03:00
parent 281c7d85e1
commit 961805272d
3 changed files with 90 additions and 8 deletions

View File

@ -75,6 +75,7 @@ namespace Filtration.Parser.Services
}
lines[i] = lines[i].TrimStart('#');
lines[i] = lines[i].TrimStart(' ');
lines[i] = lines[i].Replace("#", " # ");
var spaceOrEndOfLinePos = lines[i].IndexOf(" ", StringComparison.Ordinal) > 0 ? lines[i].IndexOf(" ", StringComparison.Ordinal) : lines[i].Length;
var lineOption = lines[i].Substring(0, spaceOrEndOfLinePos);
@ -108,11 +109,49 @@ namespace Filtration.Parser.Services
return lines.Aggregate((c, n) => c + Environment.NewLine + n);
}
public static string ConvertCommentedToDisabled(string inputString)
{
var lines = Regex.Split(inputString, "\r\n|\r|\n");
var parsingCommented = false;
for (var i = 0; i < lines.Length; i++)
{
if (!parsingCommented)
{
if (lines[i].StartsWith("# Show") || lines[i].StartsWith("#Show"))
{
parsingCommented = true;
lines[i] = "#Disabled Block Start" + Environment.NewLine + lines[i];
}
}
else
{
if (!lines[i].StartsWith("#"))
{
parsingCommented = false;
lines[i - 1] += Environment.NewLine + "#Disabled Block End";
}
}
}
if(parsingCommented)
{
lines[lines.Length - 1] += Environment.NewLine + "#Disabled Block End";
}
return string.Join(Environment.NewLine, lines);
}
public IItemFilterScript TranslateStringToItemFilterScript(string inputString)
{
var script = _itemFilterScriptFactory.Create();
_blockGroupHierarchyBuilder.Initialise(script.ItemFilterBlockGroups.First());
//NeverSink's Indepth Loot Filter parsing
if (inputString.Contains("NeverSink's Indepth Loot Filter"))
{
inputString = ConvertCommentedToDisabled(inputString);
}
inputString = inputString.Replace("\t", "");
if (inputString.Contains("#Disabled Block Start"))
{
@ -265,6 +304,13 @@ namespace Filtration.Parser.Services
}
}
//NeverSink's Indepth Loot Filter parsing
if (outputString.Contains("NeverSink's Indepth Loot Filter"))
{
outputString = Regex.Replace(outputString, "(\r)?\n#Disabled Block Start*(\r)?\n", Environment.NewLine);
outputString = Regex.Replace(outputString, "(\r)?\n#Disabled Block End*(\r)?\n", Environment.NewLine);
}
return outputString;
}
}

View File

@ -1,6 +1,7 @@
using Filtration.ObjectModel;
using GalaSoft.MvvmLight.CommandWpf;
using System;
namespace Filtration.ViewModels
{
internal interface IItemFilterCommentBlockViewModel : IItemFilterBlockViewModelBase
@ -47,8 +48,22 @@ namespace Filtration.ViewModels
ItemFilterCommentBlock.Comment = value;
IsDirty = true;
RaisePropertyChanged();
RaisePropertyChanged("Header");
}
}
}
public string Header
{
get
{
string[] commentLines = ItemFilterCommentBlock.Comment.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
if (commentLines[0].StartsWith(@"============") || commentLines[0].StartsWith(@"------------"))
{
commentLines[0] = commentLines[1];
}
return commentLines[0].TrimStart(' ');
}
}

View File

@ -76,8 +76,19 @@
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBox Grid.Column ="0" Text="{Binding Comment, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" VerticalAlignment="Center" TextWrapping="Wrap" MinWidth="150"/>
<Button Grid.Column="1" Command="{Binding ToggleSectionCommand}"
<Expander Grid.Column="1"
Style="{StaticResource ExpanderRightAlignStyle}"
x:Name="BlockExpander">
<Expander.Header>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Grid.Column="0" VerticalAlignment="Center" MinWidth="150" Content="{Binding Header, Mode=OneWay}"></Label>
<Button Grid.Column="1" Command="{Binding ToggleSectionCommand}"
Width="25"
Height="25"
VerticalAlignment="Center"
@ -86,9 +97,9 @@
Background="Transparent"
BorderBrush="Transparent"
ToolTip="Expand Section" Visibility="{Binding IsExpanded, Converter={StaticResource InverseBooleanVisibilityConverter}}">
<Image Source="/Filtration;component/Resources/Icons/expand_icon.png" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Button>
<Button Grid.Column="1" Command="{Binding ToggleSectionCommand}"
<Image Source="/Filtration;component/Resources/Icons/expand_icon.png" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Button>
<Button Grid.Column="1" Command="{Binding ToggleSectionCommand}"
Width="25"
Height="25"
VerticalAlignment="Center"
@ -97,8 +108,18 @@
Background="Transparent"
BorderBrush="Transparent"
ToolTip="Collapse Section" Visibility="{Binding IsExpanded, Converter={StaticResource BooleanVisibilityConverter}}">
<Image Source="/Filtration;component/Resources/Icons/collapse_icon.png" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Button>
<Image Source="/Filtration;component/Resources/Icons/collapse_icon.png" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Button>
</Grid>
</Expander.Header>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBox Grid.Column ="0" Text="{Binding Comment, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" VerticalAlignment="Center" TextWrapping="Wrap" MinWidth="150"/>
</Grid>
</Expander>
</Grid>
</Border>
</Grid>