Skip to content

Commit

Permalink
Merge branch 'release/v2.10.1'
Browse files Browse the repository at this point in the history
  • Loading branch information
naukri7707 committed Jan 16, 2024
2 parents 3937461 + b4e76ee commit e14b88a
Show file tree
Hide file tree
Showing 8 changed files with 369 additions and 73 deletions.
6 changes: 6 additions & 0 deletions Packages/com.naukri.inspector-maid/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog

## [2.10.1] - 2024-01-16

### 重構

- 移除 `IfStyler` 使用 `object[]` 設定匹配值的方式,避免單 `null` 參數時產生的邏輯誤謬。

## [2.10.0] - 2024-01-16

### 新增
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ private bool Condition(object bindingValue)
{
// return true if value isn't default.
0 => !InspectorMaidUtility.IsBoxedValueEqual(bindingValue, bindingMemberDefaultValue),
// return true if value is equal to any value in target values.
_ => attribute.values.Any(it => InspectorMaidUtility.IsBoxedValueEqual(bindingValue, it)),
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,57 +2,22 @@
{
public abstract class IfStylerAttribute : StylerAttribute, IBindingDataProvider
{
public IfStylerAttribute(
// We avoid using object[] to set values because its precedence is higher than object.
// This could lead to misinterpretation when using null as a value, as it would be treated as an object[].
// For instance,
// ShowIf("field", null): We expect the field to be displayed when it is null.
// However, due to the mentioned reason, it is treated as an empty object[], equivalent to ShowIf("field"),
// so the field won't be displayed, but this is obviously a logical error.
// Therefore, we refrain from using object[] to define values and instead use multiple value parameters to define values, preventing this issue.
protected IfStylerAttribute(
string binding,
object value,
ConditionLogic conditionLogic = ConditionLogic.Value,
object[] args = null
) : this(binding, new object[] { value }, conditionLogic, args)
{
}

public IfStylerAttribute(
string binding,
object value1,
object value2,
ConditionLogic conditionLogic = ConditionLogic.Value,
object[] args = null
) : this(binding, new object[] { value1, value2 }, conditionLogic, args)
{
}

public IfStylerAttribute(
string binding,
object value1,
object value2,
object value3,
ConditionLogic conditionLogic = ConditionLogic.Value,
object[] args = null
) : this(binding, new object[] { value1, value2, value3 }, conditionLogic, args)
{
}

public IfStylerAttribute(
string binding,
object value1,
object value2,
object value3,
object value4,
ConditionLogic conditionLogic = ConditionLogic.Value,
object[] args = null
) : this(binding, new object[] { value1, value2, value3, value4 }, conditionLogic, args)
{
}

public IfStylerAttribute(
string binding,
object[] values = null,
object[] values,
ConditionLogic conditionLogic = ConditionLogic.Value,
object[] args = null
)
{
this.binding = binding;
this.values = values ?? new object[0];
this.values = values;
this.conditionLogic = conditionLogic;
this.args = args;
}
Expand Down
93 changes: 87 additions & 6 deletions Packages/com.naukri.inspector-maid/Runtime/DisableIfAttribute.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,30 @@ namespace Naukri.InspectorMaid
{
public class DisableIfAttribute : IfStylerAttribute
{
public DisableIfAttribute(
string binding,
ConditionLogic conditionLogic = ConditionLogic.Value,
object[] args = null
) : base(
binding,
new object[0],
conditionLogic,
args
)
{
}

public DisableIfAttribute(
string binding,
object value,
ConditionLogic conditionLogic = ConditionLogic.Value,
object[] args = null
) : base(binding, value, conditionLogic, args)
) : base(
binding,
new object[] { value },
conditionLogic,
args
)
{
}

Expand All @@ -19,7 +37,12 @@ public DisableIfAttribute(
object value2,
ConditionLogic conditionLogic = ConditionLogic.Value,
object[] args = null
) : base(binding, value1, value2, conditionLogic, args)
) : base(
binding,
new object[] { value1, value2 },
conditionLogic,
args
)
{
}

Expand All @@ -30,7 +53,12 @@ public DisableIfAttribute(
object value3,
ConditionLogic conditionLogic = ConditionLogic.Value,
object[] args = null
) : base(binding, value1, value2, value3, conditionLogic, args)
) : base(
binding,
new object[] { value1, value2, value3 },
conditionLogic,
args
)
{
}

Expand All @@ -42,16 +70,69 @@ public DisableIfAttribute(
object value4,
ConditionLogic conditionLogic = ConditionLogic.Value,
object[] args = null
) : base(binding, value1, value2, value3, value4, conditionLogic, args)
) : base(
binding,
new object[] { value1, value2, value3, value4 },
conditionLogic,
args
)
{
}

public DisableIfAttribute(
string binding,
object[] values = null,
object value1,
object value2,
object value3,
object value4,
object value5,
ConditionLogic conditionLogic = ConditionLogic.Value,
object[] args = null
) : base(
binding,
new object[] { value1, value2, value3, value4, value5 },
conditionLogic,
args
)
{
}

public DisableIfAttribute(
string binding,
object value1,
object value2,
object value3,
object value4,
object value5,
object value6,
ConditionLogic conditionLogic = ConditionLogic.Value,
object[] args = null
) : base(
binding,
new object[] { value1, value2, value3, value4, value5, value6 },
conditionLogic,
args
)
{
}

public DisableIfAttribute(
string binding,
object value1,
object value2,
object value3,
object value4,
object value5,
object value6,
object value7,
ConditionLogic conditionLogic = ConditionLogic.Value,
object[] args = null
) : base(binding, values, conditionLogic, args)
) : base(
binding,
new object[] { value1, value2, value3, value4, value5, value6, value7 },
conditionLogic,
args
)
{
}
}
Expand Down
97 changes: 89 additions & 8 deletions Packages/com.naukri.inspector-maid/Runtime/EnableIfAttribute.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,30 @@ namespace Naukri.InspectorMaid
{
public class EnableIfAttribute : IfStylerAttribute
{
public EnableIfAttribute(
string binding,
ConditionLogic conditionLogic = ConditionLogic.Value,
object[] args = null
) : base(
binding,
new object[0],
conditionLogic,
args
)
{
}

public EnableIfAttribute(
string binding,
object value,
ConditionLogic conditionLogic = ConditionLogic.Value,
object[] args = null
) : base(binding, value, conditionLogic, args)
) : base(
binding,
new object[] { value },
conditionLogic,
args
)
{
}

Expand All @@ -19,7 +37,12 @@ public EnableIfAttribute(
object value2,
ConditionLogic conditionLogic = ConditionLogic.Value,
object[] args = null
) : base(binding, value1, value2, conditionLogic, args)
) : base(
binding,
new object[] { value1, value2 },
conditionLogic,
args
)
{
}

Expand All @@ -29,8 +52,13 @@ public EnableIfAttribute(
object value2,
object value3,
ConditionLogic conditionLogic = ConditionLogic.Value,
object[] args = null)
: base(binding, value1, value2, value3, conditionLogic, args)
object[] args = null
) : base(
binding,
new object[] { value1, value2, value3 },
conditionLogic,
args
)
{
}

Expand All @@ -41,17 +69,70 @@ public EnableIfAttribute(
object value3,
object value4,
ConditionLogic conditionLogic = ConditionLogic.Value,
object[] args = null)
: base(binding, value1, value2, value3, value4, conditionLogic, args)
object[] args = null
) : base(
binding,
new object[] { value1, value2, value3, value4 },
conditionLogic,
args
)
{
}

public EnableIfAttribute(
string binding,
object[] values = null,
object value1,
object value2,
object value3,
object value4,
object value5,
ConditionLogic conditionLogic = ConditionLogic.Value,
object[] args = null
) : base(
binding,
new object[] { value1, value2, value3, value4, value5 },
conditionLogic,
args
)
{
}

public EnableIfAttribute(
string binding,
object value1,
object value2,
object value3,
object value4,
object value5,
object value6,
ConditionLogic conditionLogic = ConditionLogic.Value,
object[] args = null
) : base(
binding,
new object[] { value1, value2, value3, value4, value5, value6 },
conditionLogic,
args
)
{
}

public EnableIfAttribute(
string binding,
object value1,
object value2,
object value3,
object value4,
object value5,
object value6,
object value7,
ConditionLogic conditionLogic = ConditionLogic.Value,
object[] args = null
) : base(binding, values, conditionLogic, args)
) : base(
binding,
new object[] { value1, value2, value3, value4, value5, value6, value7 },
conditionLogic,
args
)
{
}
}
Expand Down
Loading

0 comments on commit e14b88a

Please sign in to comment.