-
Notifications
You must be signed in to change notification settings - Fork 31
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* add suppot template mode
- Loading branch information
Showing
22 changed files
with
836 additions
and
563 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,132 @@ | ||
|
||
[*.{cs,vb}] | ||
#### Naming styles #### | ||
|
||
# Naming rules | ||
|
||
dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion | ||
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface | ||
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i | ||
|
||
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion | ||
dotnet_naming_rule.types_should_be_pascal_case.symbols = types | ||
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case | ||
|
||
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion | ||
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members | ||
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case | ||
|
||
# Symbol specifications | ||
|
||
dotnet_naming_symbols.interface.applicable_kinds = interface | ||
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected | ||
dotnet_naming_symbols.interface.required_modifiers = | ||
|
||
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum | ||
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected | ||
dotnet_naming_symbols.types.required_modifiers = | ||
|
||
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method | ||
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected | ||
dotnet_naming_symbols.non_field_members.required_modifiers = | ||
|
||
# Naming styles | ||
|
||
dotnet_naming_style.begins_with_i.required_prefix = I | ||
dotnet_naming_style.begins_with_i.required_suffix = | ||
dotnet_naming_style.begins_with_i.word_separator = | ||
dotnet_naming_style.begins_with_i.capitalization = pascal_case | ||
|
||
dotnet_naming_style.pascal_case.required_prefix = | ||
dotnet_naming_style.pascal_case.required_suffix = | ||
dotnet_naming_style.pascal_case.word_separator = | ||
dotnet_naming_style.pascal_case.capitalization = pascal_case | ||
|
||
dotnet_naming_style.pascal_case.required_prefix = | ||
dotnet_naming_style.pascal_case.required_suffix = | ||
dotnet_naming_style.pascal_case.word_separator = | ||
dotnet_naming_style.pascal_case.capitalization = pascal_case | ||
dotnet_style_operator_placement_when_wrapping = beginning_of_line | ||
tab_width = 4 | ||
indent_size = 4 | ||
end_of_line = crlf | ||
dotnet_style_coalesce_expression = true:suggestion | ||
dotnet_style_null_propagation = true:suggestion | ||
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion | ||
dotnet_style_prefer_auto_properties = true:silent | ||
dotnet_style_object_initializer = true:suggestion | ||
dotnet_style_collection_initializer = true:suggestion | ||
dotnet_style_prefer_simplified_boolean_expressions = true:suggestion | ||
dotnet_style_prefer_conditional_expression_over_assignment = true:silent | ||
dotnet_style_prefer_conditional_expression_over_return = true:silent | ||
dotnet_style_explicit_tuple_names = true:suggestion | ||
dotnet_style_prefer_inferred_tuple_names = true:suggestion | ||
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion | ||
dotnet_style_prefer_compound_assignment = true:suggestion | ||
dotnet_style_prefer_simplified_interpolation = true:suggestion | ||
dotnet_style_namespace_match_folder = true:suggestion | ||
dotnet_style_readonly_field = true:suggestion | ||
dotnet_style_predefined_type_for_member_access = true:silent | ||
dotnet_style_predefined_type_for_locals_parameters_members = true:silent | ||
dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent | ||
dotnet_style_allow_statement_immediately_after_block_experimental = true:silent | ||
dotnet_style_allow_multiple_blank_lines_experimental = true:silent | ||
dotnet_code_quality_unused_parameters = all:suggestion | ||
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent | ||
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent | ||
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent | ||
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent | ||
dotnet_style_qualification_for_field = false:silent | ||
dotnet_style_qualification_for_property = false:silent | ||
dotnet_style_qualification_for_method = false:silent | ||
dotnet_style_qualification_for_event = false:silent | ||
|
||
[*.cs] | ||
csharp_indent_labels = one_less_than_current | ||
csharp_using_directive_placement = outside_namespace:silent | ||
csharp_prefer_simple_using_statement = true:suggestion | ||
csharp_prefer_braces = true:silent | ||
csharp_style_namespace_declarations = block_scoped:silent | ||
csharp_style_prefer_method_group_conversion = true:silent | ||
csharp_style_prefer_top_level_statements = true:silent | ||
csharp_style_prefer_primary_constructors = true:suggestion | ||
csharp_style_expression_bodied_methods = false:silent | ||
csharp_style_expression_bodied_constructors = false:silent | ||
csharp_style_expression_bodied_operators = false:silent | ||
csharp_style_expression_bodied_properties = true:silent | ||
csharp_style_expression_bodied_indexers = true:silent | ||
csharp_style_expression_bodied_accessors = true:silent | ||
csharp_style_expression_bodied_lambdas = true:silent | ||
csharp_style_expression_bodied_local_functions = false:silent | ||
csharp_style_throw_expression = true:suggestion | ||
csharp_style_prefer_null_check_over_type_check = true:suggestion | ||
csharp_prefer_simple_default_expression = true:suggestion | ||
csharp_style_prefer_local_over_anonymous_function = true:suggestion | ||
csharp_style_prefer_index_operator = true:suggestion | ||
csharp_space_around_binary_operators = before_and_after | ||
csharp_style_prefer_range_operator = true:suggestion | ||
csharp_style_implicit_object_creation_when_type_is_apparent = true:suggestion | ||
csharp_style_prefer_tuple_swap = true:suggestion | ||
csharp_style_inlined_variable_declaration = true:suggestion | ||
csharp_style_prefer_utf8_string_literals = true:suggestion | ||
csharp_style_deconstructed_variable_declaration = true:suggestion | ||
csharp_style_unused_value_assignment_preference = discard_variable:suggestion | ||
csharp_style_unused_value_expression_statement_preference = discard_variable:silent | ||
csharp_prefer_static_local_function = true:suggestion | ||
csharp_style_prefer_readonly_struct = true:suggestion | ||
csharp_style_prefer_readonly_struct_member = true:suggestion | ||
csharp_style_allow_embedded_statements_on_same_line_experimental = true:silent | ||
csharp_style_allow_blank_lines_between_consecutive_braces_experimental = true:silent | ||
csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true:silent | ||
csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = true:silent | ||
csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = true:silent | ||
csharp_style_conditional_delegate_call = true:suggestion | ||
csharp_style_prefer_switch_expression = true:suggestion | ||
csharp_style_prefer_pattern_matching = true:silent | ||
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion | ||
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion | ||
csharp_style_prefer_not_pattern = true:suggestion | ||
csharp_style_prefer_extended_property_pattern = true:suggestion | ||
csharp_style_var_for_built_in_types = false:silent | ||
csharp_style_var_elsewhere = false:silent | ||
csharp_style_var_when_type_is_apparent = false:silent |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
using System.Text; | ||
|
||
namespace OData.QueryBuilder.Builders | ||
{ | ||
internal class QBuilder | ||
{ | ||
private readonly StringBuilder _builder; | ||
|
||
public QBuilder(string baseUrl) | ||
{ | ||
_builder = new StringBuilder(baseUrl); | ||
} | ||
|
||
public QBuilder() | ||
{ | ||
_builder = new StringBuilder(); | ||
} | ||
|
||
public bool IsEmpty() => _builder.Length == 0; | ||
|
||
public QBuilder Append(string value) | ||
{ | ||
_builder.Append(value); | ||
|
||
return this; | ||
} | ||
|
||
public QBuilder Append(char value) | ||
{ | ||
_builder.Append(value); | ||
|
||
return this; | ||
} | ||
|
||
public QBuilder LastRemove(char @char) | ||
{ | ||
if (_builder.Length == 0) | ||
{ | ||
return this; | ||
} | ||
|
||
var lastIndex = _builder.Length - 1; | ||
|
||
if (_builder[lastIndex] == @char) | ||
{ | ||
_builder.Remove(lastIndex, 1); | ||
} | ||
|
||
return this; | ||
} | ||
|
||
public QBuilder LastReplace(char oldChar, char newChar) | ||
{ | ||
var lastIndex = _builder.Length - 1; | ||
|
||
if (_builder[lastIndex] == oldChar) | ||
{ | ||
_builder[lastIndex] = newChar; | ||
} | ||
|
||
return this; | ||
} | ||
|
||
public QBuilder Merge(string startValue, char endChar, string value) | ||
{ | ||
var positionEndFilter = -1; | ||
|
||
for (var position = _builder.Length - 1; position >= 0; position--) | ||
{ | ||
if (_builder[position] == endChar) | ||
{ | ||
positionEndFilter = position; | ||
|
||
continue; | ||
} | ||
|
||
if (_builder[position] == startValue[0] | ||
&& _builder[position + 1] == startValue[1]) | ||
{ | ||
|
||
_builder.Insert(positionEndFilter, value); | ||
|
||
break; | ||
} | ||
} | ||
|
||
return this; | ||
} | ||
|
||
public override string ToString() | ||
{ | ||
return _builder.ToString(); | ||
} | ||
} | ||
} |
34 changes: 17 additions & 17 deletions
34
src/OData.QueryBuilder/Conventions/AddressingEntities/AddressingEntries.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,48 +1,48 @@ | ||
using OData.QueryBuilder.Conventions.AddressingEntities.Query; | ||
using OData.QueryBuilder.Builders; | ||
using OData.QueryBuilder.Conventions.AddressingEntities.Query; | ||
using OData.QueryBuilder.Conventions.Constants; | ||
using OData.QueryBuilder.Extensions; | ||
using OData.QueryBuilder.Options; | ||
using System; | ||
using System.Text; | ||
|
||
namespace OData.QueryBuilder.Conventions.AddressingEntities | ||
{ | ||
internal class AddressingEntries<TEntity> : IAddressingEntries<TEntity> | ||
internal class AddressingEntries<TEntity> : ODataQueryCollection<TEntity>, IAddressingEntries<TEntity> | ||
{ | ||
private readonly ODataQueryBuilderOptions _odataQueryBuilderOptions; | ||
private readonly StringBuilder _stringBuilder; | ||
|
||
public AddressingEntries(StringBuilder stringBuilder, ODataQueryBuilderOptions odataQueryBuilderOptions) | ||
public AddressingEntries(QBuilder queryBuilder, ODataQueryBuilderOptions odataQueryBuilderOptions) | ||
: base(queryBuilder, odataQueryBuilderOptions) | ||
{ | ||
_stringBuilder = stringBuilder; | ||
_odataQueryBuilderOptions = odataQueryBuilderOptions; | ||
} | ||
|
||
public IODataQueryKey<TEntity> ByKey(params int[] keys) | ||
{ | ||
_stringBuilder.Append($"{QuerySeparators.LeftBracket}{string.Join(QuerySeparators.StringComma, keys)}{QuerySeparators.RigthBracket}{QuerySeparators.Begin}"); | ||
var key = keys.ToValue(_odataQueryBuilderOptions); | ||
_queryBuilder.Append($"{QuerySeparators.LeftBracket}{key}{QuerySeparators.RigthBracket}{QuerySeparators.Begin}"); | ||
|
||
return new ODataQueryKey<TEntity>(_stringBuilder, _odataQueryBuilderOptions); | ||
return this; | ||
} | ||
|
||
public IODataQueryKey<TEntity> ByKey(params string[] keys) | ||
{ | ||
_stringBuilder.Append($"{QuerySeparators.LeftBracket}'{string.Join($"'{QuerySeparators.Comma}'", keys)}'{QuerySeparators.RigthBracket}{QuerySeparators.Begin}"); | ||
var key = keys.ToValue(_odataQueryBuilderOptions); | ||
_queryBuilder.Append($"{QuerySeparators.LeftBracket}{key}{QuerySeparators.RigthBracket}{QuerySeparators.Begin}"); | ||
|
||
return new ODataQueryKey<TEntity>(_stringBuilder, _odataQueryBuilderOptions); | ||
return this; | ||
} | ||
|
||
public IODataQueryKey<TEntity> ByKey(params Guid[] keys) | ||
{ | ||
_stringBuilder.Append($"{QuerySeparators.LeftBracket}{string.Join(QuerySeparators.StringComma, keys)}{QuerySeparators.RigthBracket}{QuerySeparators.Begin}"); | ||
var key = keys.ToValue(_odataQueryBuilderOptions); | ||
_queryBuilder.Append($"{QuerySeparators.LeftBracket}{key}{QuerySeparators.RigthBracket}{QuerySeparators.Begin}"); | ||
|
||
return new ODataQueryKey<TEntity>(_stringBuilder, _odataQueryBuilderOptions); | ||
return this; | ||
} | ||
|
||
public IODataQueryCollection<TEntity> ByList() | ||
{ | ||
_stringBuilder.Append(QuerySeparators.Begin); | ||
_queryBuilder.Append(QuerySeparators.Begin); | ||
|
||
return new ODataQueryCollection<TEntity>(_stringBuilder, _odataQueryBuilderOptions); | ||
return this; | ||
} | ||
} | ||
} |
15 changes: 8 additions & 7 deletions
15
...Data.QueryBuilder/Conventions/AddressingEntities/Query/Expand/AbstractODataQueryExpand.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,21 +1,22 @@ | ||
using OData.QueryBuilder.Conventions.Constants; | ||
using OData.QueryBuilder.Extensions; | ||
using OData.QueryBuilder.Builders; | ||
using OData.QueryBuilder.Conventions.Constants; | ||
using OData.QueryBuilder.Options; | ||
using System.Text; | ||
|
||
namespace OData.QueryBuilder.Conventions.AddressingEntities.Query.Expand | ||
{ | ||
internal abstract class AbstractODataQueryExpand | ||
{ | ||
protected readonly ODataQueryBuilderOptions _odataQueryBuilderOptions; | ||
protected readonly StringBuilder _stringBuilder; | ||
protected readonly QBuilder _queryBuilder; | ||
|
||
public AbstractODataQueryExpand(StringBuilder stringBuilder, ODataQueryBuilderOptions odataQueryBuilderOptions) | ||
public AbstractODataQueryExpand( | ||
QBuilder queryBuilder, | ||
ODataQueryBuilderOptions odataQueryBuilderOptions) | ||
{ | ||
_stringBuilder = stringBuilder; | ||
_queryBuilder = queryBuilder; | ||
_odataQueryBuilderOptions = odataQueryBuilderOptions; | ||
} | ||
|
||
public StringBuilder Query => _stringBuilder.LastRemove(QuerySeparators.Nested); | ||
public QBuilder QueryBuilder => _queryBuilder.LastRemove(QuerySeparators.Nested); | ||
} | ||
} |
Oops, something went wrong.