liquid2 0.1.1 → 0.3.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.
data/sig/liquid2.rbs CHANGED
@@ -76,12 +76,16 @@ module Liquid2
76
76
 
77
77
  @undefined: singleton(Undefined)
78
78
 
79
+ @falsy_undefined: bool
80
+
79
81
  @loader: TemplateLoader
80
82
 
81
83
  @globals: Hash[String, untyped]?
82
84
 
83
85
  @scanner: StringScanner
84
86
 
87
+ @arithmetic_operators: bool
88
+
85
89
  attr_reader tags: Hash[String, _Tag]
86
90
 
87
91
  attr_reader local_namespace_limit: Integer?
@@ -98,7 +102,11 @@ module Liquid2
98
102
 
99
103
  attr_reader shorthand_indexes: bool
100
104
 
101
- def initialize: (?context_depth_limit: ::Integer, ?globals: Hash[String, untyped]?, ?loader: TemplateLoader?, ?local_namespace_limit: Integer?, ?loop_iteration_limit: Integer?, ?output_stream_limit: Integer?, ?shorthand_indexes: bool, ?suppress_blank_control_flow_blocks: bool, ?undefined: singleton(Undefined)) -> void
105
+ attr_reader falsy_undefined: bool
106
+
107
+ attr_reader arithmetic_operators: bool
108
+
109
+ def initialize: (?context_depth_limit: ::Integer, ?globals: Hash[String, untyped]?, ?loader: TemplateLoader?, ?local_namespace_limit: Integer?, ?loop_iteration_limit: Integer?, ?output_stream_limit: Integer?, ?shorthand_indexes: bool, ?suppress_blank_control_flow_blocks: bool, ?undefined: singleton(Undefined), ?falsy_undefined: bool) -> void
102
110
 
103
111
  # @param source [String] template source text.
104
112
  # @return [Template]
@@ -123,6 +131,10 @@ module Liquid2
123
131
  # if _name_ did not exist in the filter register.
124
132
  def delete_filter: (String name) -> ([_Filter, (Integer | nil)] | nil)
125
133
 
134
+ def register_tag: (String name, _Tag tag) -> void
135
+
136
+ def delete_tag: (String name) -> (_Tag | nil)
137
+
126
138
  def setup_tags_and_filters: () -> void
127
139
 
128
140
  def undefined: (String name, ?node: _HasToken?) -> Undefined
@@ -336,6 +348,8 @@ module Liquid2
336
348
  def parse_string: () -> String
337
349
 
338
350
  def parse_identifier: (?trailing_question: bool) -> Identifier
351
+
352
+ def parse_name: () -> String
339
353
 
340
354
  # Parse comma separated expression.
341
355
  # Leading commas should be consumed by the caller.
@@ -346,6 +360,10 @@ module Liquid2
346
360
  # Leading commas should be consumed by the caller.
347
361
  # @return [Array<KeywordArgument>]
348
362
  def parse_keyword_arguments: () -> Array[KeywordArgument]
363
+
364
+ def parse_parameters: () -> Hash[String, Parameter]
365
+
366
+ def parse_arguments: () -> [Array[untyped], Array[KeywordArgument]]
349
367
 
350
368
  class Precedence
351
369
  LOWEST: 1
@@ -361,6 +379,12 @@ module Liquid2
361
379
  MEMBERSHIP: 6
362
380
 
363
381
  PREFIX: 7
382
+
383
+ ADD_SUB: 8
384
+
385
+ MUL_DIV: 9
386
+
387
+ POW: 10
364
388
  end
365
389
 
366
390
  PRECEDENCES: Hash[Symbol, Integer]
@@ -461,6 +485,8 @@ module Liquid2
461
485
 
462
486
  attr_reader up_to_date: Proc::_Callable?
463
487
 
488
+ attr_reader source: String
489
+
464
490
  # @param env [Environment]
465
491
  # @param ast [RootNode]
466
492
  # @param name [String] The template's name.
@@ -489,6 +515,10 @@ module Liquid2
489
515
 
490
516
  def comments: () -> Array[BlockComment | InlineComment | Comment]
491
517
 
518
+ def docs: () -> Array[DocTag]
519
+
520
+ def macros: (?include_partials: bool) -> [Array[MacroTag], Array[CallTag]]
521
+
492
522
  # Return an array of variables used in this template, without path segments.
493
523
  # @param include_partials [bool]
494
524
  # @return [Array[String]]
@@ -589,29 +619,33 @@ module Liquid2
589
619
 
590
620
  def []: (*untyped) ?{ (?) -> untyped } -> self
591
621
 
592
- def key?: (*untyped) ?{ (?) -> untyped } -> false
622
+ def key?: (*untyped) ?{ (?) -> untyped } -> untyped
593
623
 
594
- def include?: (*untyped) ?{ (?) -> untyped } -> false
624
+ def include?: (*untyped) ?{ (?) -> untyped } -> untyped
595
625
 
596
- def member?: (*untyped) ?{ (?) -> untyped } -> false
626
+ def member?: (*untyped) ?{ (?) -> untyped } -> untyped
597
627
 
598
628
  def fetch: (*untyped) ?{ (?) -> untyped } -> self
599
629
 
600
- def !: () -> true
630
+ def !: () -> untyped
601
631
 
602
632
  def ==: (untyped other) -> untyped
603
633
 
604
634
  alias eql? ==
605
635
 
606
- def size: () -> 0
636
+ def size: () -> untyped
607
637
 
608
- def length: () -> 0
638
+ def length: () -> untyped
609
639
 
610
640
  def to_s: () -> ""
611
641
 
612
- def to_i: () -> 0
642
+ def to_i: () -> untyped
643
+
644
+ def +@: () -> untyped
645
+
646
+ def -@: () -> untyped
613
647
 
614
- def to_f: () -> ::Float
648
+ def to_f: () -> untyped
615
649
 
616
650
  def each: (*untyped) ?{ (?) -> untyped } -> untyped
617
651
 
@@ -619,9 +653,9 @@ module Liquid2
619
653
 
620
654
  def join: (*untyped) -> ""
621
655
 
622
- def to_liquid: (RenderContext _context) -> nil
656
+ def to_liquid: (RenderContext _context) -> untyped
623
657
 
624
- def poke: () -> true
658
+ def poke: () -> bool
625
659
  end
626
660
 
627
661
  # An undefined type that always raises an exception.
@@ -659,6 +693,10 @@ module Liquid2
659
693
  def to_s: () -> untyped
660
694
 
661
695
  def to_i: () -> untyped
696
+
697
+ def +@: () -> untyped
698
+
699
+ def -@: () -> untyped
662
700
 
663
701
  def to_f: () -> untyped
664
702
 
@@ -830,11 +868,11 @@ module Liquid2
830
868
  @loops: Array[ForLoop]
831
869
 
832
870
  # A stack of interrupts used to signal breaking and continuing `for` loops.
833
- @interrupts: Array[:break | :continue]
871
+ @interrupts: Array[Symbol]
834
872
 
835
873
  attr_reader env: Environment
836
874
 
837
- attr_reader template: Template
875
+ attr_accessor template: Template
838
876
 
839
877
  attr_reader globals: _Namespace
840
878
 
@@ -842,8 +880,7 @@ module Liquid2
842
880
 
843
881
  attr_reader tag_namespace: Hash[Symbol, untyped]
844
882
 
845
- attr_accessor interrupts: Array[:break | :continue]
846
-
883
+ attr_accessor interrupts: Array[Symbol]
847
884
 
848
885
  BUILT_IN: BuiltIn
849
886
 
@@ -911,16 +948,13 @@ module Liquid2
911
948
 
912
949
  def get_output_buffer: (untyped parent_buffer) -> untyped
913
950
 
914
- # Mark _string_ as "safe" if auto escape is enabled.
915
- def markup: (untyped string) -> untyped
916
-
917
951
  def cycle: (untyped key, untyped length) -> untyped
918
952
 
919
- def increment: (untyped name) -> untyped
953
+ def increment: (untyped name) -> Integer
920
954
 
921
- def decrement: (untyped name) -> untyped
955
+ def decrement: (untyped name) -> Integer
922
956
 
923
- def assign_score: (untyped value) -> untyped
957
+ def assign_score: (untyped value) -> Integer
924
958
 
925
959
  end
926
960
  end
@@ -942,7 +976,7 @@ module Liquid2
942
976
 
943
977
  attr_accessor source: (String | nil)
944
978
 
945
- def initialize: (String message, ?[Symbol, String?, Integer]? token) -> void
979
+ def initialize: (String message, ?[Symbol, String?, Integer]? token, ?template_name: String?) -> void
946
980
 
947
981
  def detailed_message: (?highlight: bool, **untyped kwargs) -> String
948
982
 
@@ -975,6 +1009,12 @@ module Liquid2
975
1009
  class DisabledTagError < LiquidError
976
1010
  end
977
1011
 
1012
+ class TemplateInheritanceError < LiquidError
1013
+ end
1014
+
1015
+ class RequiredBlockError < TemplateInheritanceError
1016
+ end
1017
+
978
1018
  # The standard _for_ tag.
979
1019
  class ForTag < Tag
980
1020
  @expression: LoopExpression
@@ -1117,6 +1157,26 @@ module Liquid2
1117
1157
 
1118
1158
  def evaluate: (RenderContext context) -> [String, untyped]
1119
1159
  end
1160
+
1161
+ class Parameter < Expression
1162
+ @name: String
1163
+
1164
+ @sym: Symbol
1165
+
1166
+ @value: untyped
1167
+
1168
+ attr_reader name: String
1169
+
1170
+ attr_reader sym: Symbol
1171
+
1172
+ attr_reader value: (untyped | :undefined)
1173
+
1174
+ # @param name [Token]
1175
+ # @param value [Expression]
1176
+ def initialize: ([Symbol, String?, Integer] token, String name, untyped value) -> void
1177
+
1178
+ def evaluate: (RenderContext context) -> [String, untyped]
1179
+ end
1120
1180
  end
1121
1181
 
1122
1182
  module Liquid2
@@ -1170,11 +1230,11 @@ module Liquid2
1170
1230
  class FilteredExpression < Expression
1171
1231
  @left: Expression
1172
1232
 
1173
- @filters: Array[Filter]
1233
+ @filters: Array[Filter]?
1174
1234
 
1175
- attr_reader filters: Array[Filter]
1235
+ attr_reader filters: Array[Filter]?
1176
1236
 
1177
- def initialize: ([Symbol, String?, Integer] token, untyped left, Array[Filter] filters) -> void
1237
+ def initialize: ([Symbol, String?, Integer] token, untyped left, Array[Filter]? filters) -> void
1178
1238
 
1179
1239
  def evaluate: (RenderContext context) -> untyped
1180
1240
  end
@@ -1207,25 +1267,17 @@ module Liquid2
1207
1267
  class Filter < Expression
1208
1268
  @name: String
1209
1269
 
1210
- @args: Array[untyped]
1270
+ @args: Array[untyped]?
1211
1271
 
1212
1272
  attr_reader name: String
1213
1273
 
1214
- attr_reader args: Array[untyped]
1274
+ attr_reader args: Array[untyped]?
1215
1275
 
1216
1276
  # @param name [Token]
1217
1277
  # @param args [Array[Expression]]
1218
- def initialize: ([Symbol, String?, Integer] token, String name, Array[untyped] args) -> void
1278
+ def initialize: ([Symbol, String?, Integer] token, String name, Array[untyped]? args) -> void
1219
1279
 
1220
1280
  def evaluate: (untyped left, RenderContext context) -> untyped
1221
-
1222
- private
1223
-
1224
- # @param context [RenderContext]
1225
- # @return [positional arguments, keyword arguments] An array with two elements.
1226
- # The first is an array of evaluates positional arguments. The second is a hash
1227
- # of keyword names to evaluated keyword values.
1228
- def evaluate_args: (RenderContext context) -> [Array[untyped], Hash[Symbol, untyped]]
1229
1281
  end
1230
1282
  end
1231
1283
 
@@ -1341,10 +1393,16 @@ module Liquid2
1341
1393
  attr_reader segments: Array[String | Integer | Path]
1342
1394
  attr_reader head: (String | Integer | Path)
1343
1395
 
1396
+ RE_PROPERTY: ::Regexp
1397
+
1344
1398
  # @param segments [Array[String | Integer | Path]]
1345
1399
  def initialize: ([Symbol, String?, Integer] token, Array[String | Integer | Path] segments) -> void
1346
1400
 
1347
1401
  def evaluate: (RenderContext context) -> untyped
1402
+
1403
+ private
1404
+
1405
+ def segment_to_s: (untyped segment, ?head: bool) -> ::String
1348
1406
  end
1349
1407
  end
1350
1408
 
@@ -1553,7 +1611,7 @@ module Liquid2
1553
1611
  def self.to_integer: (untyped obj) -> Integer
1554
1612
 
1555
1613
  # Cast _obj_ to a number, favouring BigDecimal over Float.
1556
- def self.to_decimal: (untyped obj, ?default: ::Integer) -> (Integer | BigDecimal | Numeric)
1614
+ def self.to_decimal: (untyped obj, ?default: untyped) -> (Integer | BigDecimal | Numeric)
1557
1615
 
1558
1616
  # Cast _obj_ to a date and time. Return `nil` if casting fails.
1559
1617
  def self.to_date: (untyped obj) -> untyped
@@ -1717,6 +1775,8 @@ module Liquid2
1717
1775
 
1718
1776
  def self.nil_safe_casecmp: (untyped a, untyped b) -> (0 | 1 | -1)
1719
1777
 
1778
+ INFINITY_ARRAY: [Float]
1779
+
1720
1780
  def self.numeric_compare: (untyped left, untyped right) -> (0 | 1 | -1)
1721
1781
 
1722
1782
  def self.ints: (untyped obj) -> Array[(Integer | Float | BigDecimal)]
@@ -1956,6 +2016,8 @@ module Liquid2
1956
2016
  class DocTag < Tag
1957
2017
  @text: String
1958
2018
 
2019
+ attr_reader text: String
2020
+
1959
2021
  def self.parse: ([Symbol, String?, Integer] token, Parser parser) -> DocTag
1960
2022
 
1961
2023
  # @param text [String]
@@ -1984,7 +2046,7 @@ end
1984
2046
  module Liquid2
1985
2047
  # The standard _include_ tag.
1986
2048
  class IncludeTag < Tag
1987
- @name: untyped
2049
+ @template_name: untyped
1988
2050
 
1989
2051
  @repeat: bool
1990
2052
 
@@ -2014,7 +2076,7 @@ module Liquid2
2014
2076
 
2015
2077
  # The standard _render_ tag.
2016
2078
  class RenderTag < Tag
2017
- @name: untyped
2079
+ @template_name: untyped
2018
2080
 
2019
2081
  @repeat: bool
2020
2082
 
@@ -2345,4 +2407,233 @@ module Liquid2
2345
2407
  # Return _left_ serialized in JSON format.
2346
2408
  def self.json: (untyped left, ?pretty: bool) -> String
2347
2409
  end
2348
- end
2410
+ end
2411
+
2412
+ module Liquid2
2413
+ # The _macro_ tag.
2414
+ class MacroTag < Tag
2415
+ @macro_name: String
2416
+
2417
+ @params: Hash[String, Parameter]
2418
+
2419
+ @block: Block
2420
+
2421
+ @blank: bool
2422
+
2423
+ END_BLOCK: Set[String]
2424
+
2425
+ attr_reader macro_name: String
2426
+
2427
+ attr_reader params: Hash[String, Parameter]
2428
+
2429
+ attr_reader Block: Block
2430
+
2431
+ # @param parser [Parser]
2432
+ # @return [MacroTag]
2433
+ def self.parse: ([Symbol, String?, Integer] token, Parser parser) -> MacroTag
2434
+
2435
+ def initialize: ([Symbol, String?, Integer] token, String name, Hash[String, Parameter] params, Block block) -> void
2436
+
2437
+ def render: (RenderContext context, String _buffer) -> void
2438
+ end
2439
+
2440
+ # The _call_ tag.
2441
+ class CallTag < Tag
2442
+ @macro_name: String
2443
+
2444
+ @args: Array[untyped]
2445
+
2446
+ @kwargs: Array[KeywordArgument]
2447
+
2448
+ @blank: bool
2449
+
2450
+ DISABLED_TAGS: Set[String]
2451
+
2452
+ attr_reader macro_name: String
2453
+
2454
+ attr_reader args: Array[untyped]
2455
+
2456
+ attr_reader kwargs: Array[KeywordArgument]
2457
+
2458
+ # @param parser [Parser]
2459
+ # @return [CallTag]
2460
+ def self.parse: ([Symbol, String?, Integer] token, Parser parser) -> CallTag
2461
+
2462
+ def initialize: ([Symbol, String?, Integer] token, String name, Array[untyped] args, Array[KeywordArgument] kwargs) -> void
2463
+
2464
+ def render: (RenderContext context, String buffer) -> void
2465
+ end
2466
+ end
2467
+
2468
+ module Liquid2
2469
+ # The _extends_ tag.
2470
+ class ExtendsTag < Tag
2471
+ @template_name: String
2472
+
2473
+ @blank: bool
2474
+
2475
+ attr_reader template_name: String
2476
+
2477
+ # @param token [[Symbol, String?, Integer]]
2478
+ # @param parser [Parser]
2479
+ # @return [ExtendsTag]
2480
+ def self.parse: ([Symbol, String?, Integer] token, Parser parser) -> ExtendsTag
2481
+
2482
+ def initialize: ([Symbol, String?, Integer] token, String name) -> void
2483
+
2484
+ def render: (RenderContext context, String buffer) -> void
2485
+
2486
+ def stack_blocks: (RenderContext context, Template template) -> Template?
2487
+
2488
+ def inheritance_nodes: (RenderContext context, Template template) -> [Array[ExtendsTag], Array[BlockTag]]
2489
+ end
2490
+
2491
+ # The _block_ tag.
2492
+ class BlockTag < Tag
2493
+ @block_name: String
2494
+
2495
+ @block: Block
2496
+
2497
+ @required: bool
2498
+
2499
+ @blank: bool
2500
+
2501
+ END_BLOCK: Set[String]
2502
+
2503
+ attr_reader block_name: String
2504
+
2505
+ attr_reader block: Block
2506
+
2507
+ attr_reader required: bool
2508
+
2509
+ # @param token [[Symbol, String?, Integer]]
2510
+ # @param parser [Parser]
2511
+ # @return [BlockTag]
2512
+ def self.parse: ([Symbol, String?, Integer] token, Parser parser) -> BlockTag
2513
+
2514
+ def initialize: ([Symbol, String?, Integer] token, String name, Block block, required: bool) -> void
2515
+
2516
+ def render: (RenderContext context, String buffer) -> void
2517
+ end
2518
+
2519
+ class BlockDrop
2520
+ @token: [Symbol, String?, Integer]
2521
+
2522
+ @context: RenderContext
2523
+
2524
+ @buffer: String
2525
+
2526
+ @name: String
2527
+
2528
+ @parent: [BlockTag, bool, Template, untyped?]?
2529
+
2530
+ attr_reader token: [Symbol, String?, Integer]
2531
+
2532
+ # @param token [[Symbol, String?, Integer]]
2533
+ # @param context [RenderContext]
2534
+ # @param name [String]
2535
+ # @param parent [[BlockTag, bool, String, Block?]?]
2536
+ def initialize: ([Symbol, String?, Integer] token, RenderContext context, String name, untyped parent) -> void
2537
+
2538
+ def to_s: () -> ::String
2539
+
2540
+ def key?: (untyped key) -> bool
2541
+
2542
+ def []: (untyped key) -> untyped
2543
+ end
2544
+ end
2545
+
2546
+ module Liquid2
2547
+ class WithTag < Tag
2548
+ @args: Array[KeywordArgument]
2549
+
2550
+ @block: Block
2551
+
2552
+ @blank: bool
2553
+
2554
+ END_BLOCK: Set[String]
2555
+
2556
+ # @param token [[Symbol, String?, Integer]]
2557
+ # @param parser [Parser]
2558
+ # @return [WithTag]
2559
+ def self.parse: ([Symbol, String?, Integer] token, Parser parser) -> WithTag
2560
+
2561
+ # @param token [[Symbol, String?, Integer]]
2562
+ # @param args [Array[KeywordArgument]]
2563
+ # @param block [Block]
2564
+ def initialize: ([Symbol, String?, Integer] token, Array[KeywordArgument] args, Block block) -> void
2565
+
2566
+ def render: (RenderContext context, String buffer) -> void
2567
+
2568
+ def children: (untyped _static_context, ?include_partials: bool) -> ::Array[Node]
2569
+
2570
+ def block_scope: () -> Array[Identifier]
2571
+ end
2572
+ end
2573
+
2574
+ module Liquid2
2575
+ # Base class for all arithmetic expressions.
2576
+ class ArithmeticExpression < Expression
2577
+ @left: untyped
2578
+
2579
+ @right: untyped
2580
+
2581
+ # @param left [Expression]
2582
+ # @param right [Expression]
2583
+ def initialize: ([Symbol, String?, Integer] token, untyped left, untyped right) -> void
2584
+
2585
+ def children: () -> ::Array[untyped]
2586
+
2587
+ def inner_evaluate: (untyped context) -> ::Array[untyped]
2588
+ end
2589
+
2590
+ # Infix addition
2591
+ class Plus < ArithmeticExpression
2592
+ def evaluate: (RenderContext context) -> untyped
2593
+ end
2594
+
2595
+ # Infix subtraction
2596
+ class Minus < ArithmeticExpression
2597
+ def evaluate: (RenderContext context) -> untyped
2598
+ end
2599
+
2600
+ # Infix multiplication
2601
+ class Times < ArithmeticExpression
2602
+ def evaluate: (RenderContext context) -> untyped
2603
+ end
2604
+
2605
+ # Infix division
2606
+ class Divide < ArithmeticExpression
2607
+ def evaluate: (RenderContext context) -> untyped
2608
+ end
2609
+
2610
+ # Infix modulo
2611
+ class Modulo < ArithmeticExpression
2612
+ def evaluate: (RenderContext context) -> untyped
2613
+ end
2614
+
2615
+ # Infix exponentiation
2616
+ class Pow < ArithmeticExpression
2617
+ def evaluate: (RenderContext context) -> untyped
2618
+ end
2619
+
2620
+ # Prefix negation
2621
+ class Negative < Expression
2622
+ @right: untyped
2623
+
2624
+ # @param right [Expression]
2625
+ def initialize: ([Symbol, String?, Integer] token, untyped right) -> void
2626
+
2627
+ def evaluate: (RenderContext context) -> untyped
2628
+ end
2629
+
2630
+ # Prefix positive
2631
+ class Positive < Expression
2632
+ @right: untyped
2633
+
2634
+ # @param right [Expression]
2635
+ def initialize: ([Symbol, String?, Integer] token, untyped right) -> void
2636
+
2637
+ def evaluate: (RenderContext context) -> untyped
2638
+ end
2639
+ end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: liquid2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Prior
@@ -73,7 +73,6 @@ extra_rdoc_files: []
73
73
  files:
74
74
  - ".rubocop.yml"
75
75
  - ".ruby-version"
76
- - ".vscode/settings.json"
77
76
  - CHANGELOG.md
78
77
  - LICENSE.txt
79
78
  - LICENSE_SHOPIFY.txt
@@ -86,6 +85,7 @@ files:
86
85
  - lib/liquid2/errors.rb
87
86
  - lib/liquid2/expression.rb
88
87
  - lib/liquid2/expressions/arguments.rb
88
+ - lib/liquid2/expressions/arithmetic.rb
89
89
  - lib/liquid2/expressions/array.rb
90
90
  - lib/liquid2/expressions/blank.rb
91
91
  - lib/liquid2/expressions/boolean.rb
metadata.gz.sig CHANGED
Binary file
@@ -1,32 +0,0 @@
1
- {
2
- "rubocop.mode": "enableUnconditionally",
3
- "cSpell.words": [
4
- "bigdecimal",
5
- "bytesize",
6
- "byteslice",
7
- "charpos",
8
- "Cyclomatic",
9
- "endcapture",
10
- "endcase",
11
- "endcomment",
12
- "endraw",
13
- "forloop",
14
- "ivar",
15
- "keyreq",
16
- "kwargs",
17
- "ljust",
18
- "lparen",
19
- "lstrip",
20
- "ndigits",
21
- "nodoc",
22
- "parentloop",
23
- "rparen",
24
- "rpartition",
25
- "rstrip",
26
- "tablerow",
27
- "truncatewords"
28
- ],
29
- "cSpell.enabledFileTypes": {
30
- "ruby": true
31
- }
32
- }