@sigil-sifter/magic 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +7 -0
- package/README.md +95 -0
- package/package.json +30 -0
- package/src/core/MagicCard.js +250 -0
- package/src/core/helpers.js +6 -0
- package/src/core/index.js +3 -0
- package/src/data/abilityWords.js +66 -0
- package/src/data/colors.js +15 -0
- package/src/data/gameFormats.js +25 -0
- package/src/data/games.js +5 -0
- package/src/data/guilds.js +33 -0
- package/src/data/languages.js +30 -0
- package/src/data/rarities.js +25 -0
- package/src/expressions/ArrayLengthExpression.js +15 -0
- package/src/expressions/ColorExpression.js +40 -0
- package/src/expressions/DevotionExpression.js +56 -0
- package/src/expressions/EvenOddExpression.js +43 -0
- package/src/expressions/ExactStringExpression.js +11 -0
- package/src/expressions/FormatExpression.js +19 -0
- package/src/expressions/GameExpression.js +19 -0
- package/src/expressions/KeywordAbilityExpression.js +33 -0
- package/src/expressions/LanguageExpression.js +34 -0
- package/src/expressions/ManaExpression.js +36 -0
- package/src/expressions/PowTouExpression.js +41 -0
- package/src/expressions/ProducesExpression.js +35 -0
- package/src/expressions/RarityExpression.js +30 -0
- package/src/expressions/has/IndicatorExpression.js +11 -0
- package/src/expressions/has/WatermarkExpression.js +11 -0
- package/src/expressions/is/BoosterExpression.js +11 -0
- package/src/expressions/is/DFCExpression.js +11 -0
- package/src/expressions/is/EtchedExpression.js +11 -0
- package/src/expressions/is/FlipExpression.js +11 -0
- package/src/expressions/is/FoilExpression.js +11 -0
- package/src/expressions/is/FrenchVanillaExpression.js +11 -0
- package/src/expressions/is/FullArtExpression.js +11 -0
- package/src/expressions/is/GlossyExpression.js +11 -0
- package/src/expressions/is/HistoricExpression.js +11 -0
- package/src/expressions/is/HybridExpression.js +11 -0
- package/src/expressions/is/LevelerExpression.js +11 -0
- package/src/expressions/is/MDFCExpression.js +11 -0
- package/src/expressions/is/MeldExpression.js +11 -0
- package/src/expressions/is/ModalExpression.js +11 -0
- package/src/expressions/is/NonFoilExpression.js +11 -0
- package/src/expressions/is/PartyExpression.js +11 -0
- package/src/expressions/is/PermanentExpression.js +11 -0
- package/src/expressions/is/PhyrexianExpression.js +11 -0
- package/src/expressions/is/PromoExpression.js +11 -0
- package/src/expressions/is/ReprintExpression.js +11 -0
- package/src/expressions/is/ReservedExpression.js +11 -0
- package/src/expressions/is/SpellExpression.js +11 -0
- package/src/expressions/is/SplitExpression.js +11 -0
- package/src/expressions/is/SpotlightExpression.js +11 -0
- package/src/expressions/is/TextlessExpression.js +11 -0
- package/src/expressions/is/TransformExpression.js +11 -0
- package/src/expressions/is/UniversesBeyondExpression.js +11 -0
- package/src/expressions/is/VanillaExpression.js +11 -0
- package/src/expressions/is/index.js +59 -0
- package/src/extensions/ColorExtension.js +22 -0
- package/src/extensions/FormatExtension.js +15 -0
- package/src/extensions/GameExtension.js +15 -0
- package/src/extensions/KeywordExtension.js +11 -0
- package/src/extensions/LanguageExtension.js +15 -0
- package/src/extensions/RarityExtension.js +20 -0
- package/src/extensions/SetExtension.js +13 -0
- package/src/index.js +36 -0
- package/src/keywords/AbilityKeyword.js +16 -0
- package/src/keywords/ArtistKeyword.js +11 -0
- package/src/keywords/BannedKeyword.js +21 -0
- package/src/keywords/BorderKeyword.js +21 -0
- package/src/keywords/CardTypeKeyword.js +11 -0
- package/src/keywords/CollectorNumberKeyword.js +16 -0
- package/src/keywords/ColorIdentityKeyword.js +11 -0
- package/src/keywords/ColorKeyword.js +17 -0
- package/src/keywords/DevotionKeyword.js +21 -0
- package/src/keywords/FlavorTextKeyword.js +11 -0
- package/src/keywords/FormatKeyword.js +21 -0
- package/src/keywords/FrameKeyword.js +22 -0
- package/src/keywords/GameKeyword.js +21 -0
- package/src/keywords/HasKeyword.js +13 -0
- package/src/keywords/IsKeyword.js +17 -0
- package/src/keywords/LanguageKeyword.js +16 -0
- package/src/keywords/LoyaltyKeyword.js +16 -0
- package/src/keywords/ManaCostKeyword.js +20 -0
- package/src/keywords/ManaValueKeyword.js +17 -0
- package/src/keywords/NameKeyword.js +11 -0
- package/src/keywords/NotKeyword.js +21 -0
- package/src/keywords/PowerKeyword.js +29 -0
- package/src/keywords/ProducesKeyword.js +16 -0
- package/src/keywords/RarityKeyword.js +16 -0
- package/src/keywords/RestrictedKeyword.js +21 -0
- package/src/keywords/RulesTextKeyword.js +11 -0
- package/src/keywords/SetKeyword.js +21 -0
- package/src/keywords/SetTypeKeyword.js +21 -0
- package/src/keywords/StampKeyword.js +21 -0
- package/src/keywords/ToughnessKeyword.js +29 -0
- package/src/keywords/WatermarkKeyword.js +16 -0
- package/src/keywords/index.js +65 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Keyword } from 'sigil-sifter/keywords';
|
|
2
|
+
import { IncludesOperator } from 'sigil-sifter/operators';
|
|
3
|
+
import * as booleanExpressions from '../expressions/is/index.js';
|
|
4
|
+
|
|
5
|
+
export default class NotKeyword extends Keyword {
|
|
6
|
+
static get keys() {
|
|
7
|
+
return ['not'];
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
static get supportedOperators() {
|
|
11
|
+
return [IncludesOperator];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
static get supportedExpressions() {
|
|
15
|
+
return Object.values(booleanExpressions);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
test(card) {
|
|
19
|
+
return !super.test(card);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { SearchSyntaxError } from 'sigil-sifter/core';
|
|
2
|
+
import { NumericExpression } from 'sigil-sifter/expressions';
|
|
3
|
+
import { Keyword } from 'sigil-sifter/keywords';
|
|
4
|
+
import PowTouExpression from '../expressions/PowTouExpression.js';
|
|
5
|
+
import { comparingPtAgainst } from '../core/helpers.js';
|
|
6
|
+
|
|
7
|
+
export default class PowerKeyword extends Keyword {
|
|
8
|
+
static get keys() {
|
|
9
|
+
return ['power', 'pow'];
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
static get supportedExpressions() {
|
|
13
|
+
return [NumericExpression, PowTouExpression];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
static parse(sifter, match, str) {
|
|
17
|
+
const keyword = super.parse(sifter, match, str);
|
|
18
|
+
if (comparingPtAgainst(keyword.expression, 'power'))
|
|
19
|
+
throw new SearchSyntaxError('Cannot compare power against itself.');
|
|
20
|
+
return keyword;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
test(card) {
|
|
24
|
+
if (this.expression.constructor === PowTouExpression)
|
|
25
|
+
return card.pts.some(pt => super.test(pt));
|
|
26
|
+
|
|
27
|
+
return card.pts.some(pt => super.test(pt.power));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Keyword } from 'sigil-sifter/keywords';
|
|
2
|
+
import ProducesExpression from '../expressions/ProducesExpression.js';
|
|
3
|
+
|
|
4
|
+
export default class ProducesKeyword extends Keyword {
|
|
5
|
+
static get keys() {
|
|
6
|
+
return ['produces'];
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
static get supportedExpressions() {
|
|
10
|
+
return [ProducesExpression];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
test(card) {
|
|
14
|
+
return this.operator.testValue(card.produces, this.expression);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Keyword } from 'sigil-sifter/keywords';
|
|
2
|
+
import RarityExpression from '../expressions/RarityExpression.js';
|
|
3
|
+
|
|
4
|
+
export default class RarityKeyword extends Keyword {
|
|
5
|
+
static get keys() {
|
|
6
|
+
return ['rarity', 'r'];
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
static get supportedExpressions() {
|
|
10
|
+
return [RarityExpression];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
test(card) {
|
|
14
|
+
return super.test(card.rarity);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Keyword } from 'sigil-sifter/keywords';
|
|
2
|
+
import FormatExpression from '../expressions/FormatExpression.js';
|
|
3
|
+
import { EqualsOperator, IncludesOperator } from 'sigil-sifter/operators';
|
|
4
|
+
|
|
5
|
+
export default class RestrictedKeyword extends Keyword {
|
|
6
|
+
static get keys() {
|
|
7
|
+
return ['restricted'];
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
static get supportedOperators() {
|
|
11
|
+
return [IncludesOperator, EqualsOperator];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
static get supportedExpressions() {
|
|
15
|
+
return [FormatExpression];
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
test(card) {
|
|
19
|
+
return card.restricted.some(formatName => super.test(formatName));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { StringKeyword } from 'sigil-sifter/keywords';
|
|
2
|
+
|
|
3
|
+
export default class RulesTextKeyword extends StringKeyword {
|
|
4
|
+
static get keys() {
|
|
5
|
+
return ['oracle', 'o'];
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
test(card) {
|
|
9
|
+
return card.rulesTexts.some(rulesText => super.test(rulesText));
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Keyword } from 'sigil-sifter/keywords';
|
|
2
|
+
import ExactStringExpression from '../expressions/ExactStringExpression.js';
|
|
3
|
+
import { EqualsOperator, IncludesOperator } from 'sigil-sifter/operators';
|
|
4
|
+
|
|
5
|
+
export default class SetKeyword extends Keyword {
|
|
6
|
+
static get keys() {
|
|
7
|
+
return ['set', 'edition', 's', 'e'];
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
static get supportedOperators() {
|
|
11
|
+
return [IncludesOperator, EqualsOperator];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
static get supportedExpressions() {
|
|
15
|
+
return [ExactStringExpression];
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
test(card) {
|
|
19
|
+
return super.test(card.set.code) || super.test(card.set.name);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Keyword } from 'sigil-sifter/keywords';
|
|
2
|
+
import ExactStringExpression from '../expressions/ExactStringExpression.js';
|
|
3
|
+
import { EqualsOperator, IncludesOperator } from 'sigil-sifter/operators';
|
|
4
|
+
|
|
5
|
+
export default class SetTypeKeyword extends Keyword {
|
|
6
|
+
static get keys() {
|
|
7
|
+
return ['settype', 'st'];
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
static get supportedOperators() {
|
|
11
|
+
return [IncludesOperator, EqualsOperator];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
static get supportedExpressions() {
|
|
15
|
+
return [ExactStringExpression];
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
test(card) {
|
|
19
|
+
return super.test(card.setType);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Keyword } from 'sigil-sifter/keywords';
|
|
2
|
+
import ExactStringExpression from '../expressions/ExactStringExpression.js';
|
|
3
|
+
import { EqualsOperator, IncludesOperator } from 'sigil-sifter/operators';
|
|
4
|
+
|
|
5
|
+
export default class StampKeyword extends Keyword {
|
|
6
|
+
static get keys() {
|
|
7
|
+
return ['stamp'];
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
static get supportedOperators() {
|
|
11
|
+
return [IncludesOperator, EqualsOperator];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
static get supportedExpressions() {
|
|
15
|
+
return [ExactStringExpression];
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
test(card) {
|
|
19
|
+
return super.test(card.stamp);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { SearchSyntaxError } from 'sigil-sifter/core';
|
|
2
|
+
import { NumericExpression } from 'sigil-sifter/expressions';
|
|
3
|
+
import { Keyword } from 'sigil-sifter/keywords';
|
|
4
|
+
import PowTouExpression from '../expressions/PowTouExpression.js';
|
|
5
|
+
import { comparingPtAgainst } from '../core/helpers.js';
|
|
6
|
+
|
|
7
|
+
export default class ToughnessKeyword extends Keyword {
|
|
8
|
+
static get keys() {
|
|
9
|
+
return ['toughness', 'tou'];
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
static get supportedExpressions() {
|
|
13
|
+
return [NumericExpression, PowTouExpression];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
static parse(sifter, match, str) {
|
|
17
|
+
const keyword = super.parse(sifter, match, str);
|
|
18
|
+
if (comparingPtAgainst(keyword.expression, 'toughness'))
|
|
19
|
+
throw new SearchSyntaxError('Cannot compare toughness against itself.');
|
|
20
|
+
return keyword;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
test(card) {
|
|
24
|
+
if (this.expression.constructor === PowTouExpression)
|
|
25
|
+
return card.pts.some(pt => super.test(pt));
|
|
26
|
+
|
|
27
|
+
return card.pts.some(pt => super.test(pt.toughness));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { StringKeyword } from 'sigil-sifter/keywords';
|
|
2
|
+
import { IncludesOperator } from 'sigil-sifter/operators';
|
|
3
|
+
|
|
4
|
+
export default class WatermarkKeyword extends StringKeyword {
|
|
5
|
+
static get keys() {
|
|
6
|
+
return ['watermark'];
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
static get supportedOperators() {
|
|
10
|
+
return [IncludesOperator];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
test(card) {
|
|
14
|
+
return card.watermarks.some(w => super.test(w));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import AbilityKeyword from './AbilityKeyword.js';
|
|
2
|
+
import ArtistKeyword from './ArtistKeyword.js';
|
|
3
|
+
import BannedKeyword from './BannedKeyword.js';
|
|
4
|
+
import BorderKeyword from './BorderKeyword.js';
|
|
5
|
+
import CardTypeKeyword from './CardTypeKeyword.js';
|
|
6
|
+
import CollectorNumberKeyword from './CollectorNumberKeyword.js';
|
|
7
|
+
import ColorKeyword from './ColorKeyword.js';
|
|
8
|
+
import ColorIdentityKeyword from './ColorIdentityKeyword.js';
|
|
9
|
+
import DevotionKeyword from './DevotionKeyword.js';
|
|
10
|
+
import FlavorTextKeyword from './FlavorTextKeyword.js';
|
|
11
|
+
import FormatKeyword from './FormatKeyword.js';
|
|
12
|
+
import FrameKeyword from './FrameKeyword.js';
|
|
13
|
+
import GameKeyword from './GameKeyword.js';
|
|
14
|
+
import HasKeyword from './HasKeyword.js';
|
|
15
|
+
import IsKeyword from './IsKeyword.js';
|
|
16
|
+
import LanguageKeyword from './LanguageKeyword.js';
|
|
17
|
+
import LoyaltyKeyword from './LoyaltyKeyword.js';
|
|
18
|
+
import ManaCostKeyword from './ManaCostKeyword.js';
|
|
19
|
+
import ManaValueKeyword from './ManaValueKeyword.js';
|
|
20
|
+
import NameKeyword from './NameKeyword.js';
|
|
21
|
+
import NotKeyword from './NotKeyword.js';
|
|
22
|
+
import PowerKeyword from './PowerKeyword.js';
|
|
23
|
+
import ProducesKeyword from './ProducesKeyword.js';
|
|
24
|
+
import RarityKeyword from './RarityKeyword.js';
|
|
25
|
+
import RestrictedKeyword from './RestrictedKeyword.js';
|
|
26
|
+
import RulesTextKeyword from './RulesTextKeyword.js';
|
|
27
|
+
import SetKeyword from './SetKeyword.js';
|
|
28
|
+
import SetTypeKeyword from './SetTypeKeyword.js';
|
|
29
|
+
import StampKeyword from './StampKeyword.js';
|
|
30
|
+
import ToughnessKeyword from './ToughnessKeyword.js';
|
|
31
|
+
import WatermarkKeyword from './WatermarkKeyword.js';
|
|
32
|
+
|
|
33
|
+
export {
|
|
34
|
+
AbilityKeyword,
|
|
35
|
+
ArtistKeyword,
|
|
36
|
+
BannedKeyword,
|
|
37
|
+
BorderKeyword,
|
|
38
|
+
CardTypeKeyword,
|
|
39
|
+
CollectorNumberKeyword,
|
|
40
|
+
ColorKeyword,
|
|
41
|
+
ColorIdentityKeyword,
|
|
42
|
+
DevotionKeyword,
|
|
43
|
+
FlavorTextKeyword,
|
|
44
|
+
FormatKeyword,
|
|
45
|
+
FrameKeyword,
|
|
46
|
+
GameKeyword,
|
|
47
|
+
HasKeyword,
|
|
48
|
+
IsKeyword,
|
|
49
|
+
LanguageKeyword,
|
|
50
|
+
LoyaltyKeyword,
|
|
51
|
+
ManaCostKeyword,
|
|
52
|
+
ManaValueKeyword,
|
|
53
|
+
NameKeyword,
|
|
54
|
+
NotKeyword,
|
|
55
|
+
PowerKeyword,
|
|
56
|
+
ProducesKeyword,
|
|
57
|
+
RarityKeyword,
|
|
58
|
+
RestrictedKeyword,
|
|
59
|
+
RulesTextKeyword,
|
|
60
|
+
SetKeyword,
|
|
61
|
+
SetTypeKeyword,
|
|
62
|
+
StampKeyword,
|
|
63
|
+
ToughnessKeyword,
|
|
64
|
+
WatermarkKeyword,
|
|
65
|
+
}
|