cataract 0.2.2 → 0.2.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3e4b300f6a6341cae02280d452f06ee15685f516a3c2e38fe2ebb80ea321f5c9
4
- data.tar.gz: 427b9ed2a6b89f775943ac6e4d912734676cd21481b2b5b070cae0a3e0624eaa
3
+ metadata.gz: a5945042f40d16bf57bcc0c5479221959e231eb2742c51019f907d1d3ab1110c
4
+ data.tar.gz: 92734f20818a3c0e94b8f7adaccf5e6a37d65325223f0dbbafae2efc8ddc11d8
5
5
  SHA512:
6
- metadata.gz: ce2ff83a256eed934014f9452d52a768a984eb89beaa801de17ceaabf603340c6ebe6daefedd47733febd025ce79d7c979739450867e9b9cc75f0ccf266f4c7c
7
- data.tar.gz: 98f270d1a6293d35b343ec84f11d1c625987dfa3ebee2f3b6155c8909dc29c3a4f30b485828bc0c1a35f51bbffa8ebae9db40cf324b3f6c9d037a0dd3ab08028
6
+ metadata.gz: b1c8dc3e693f042549bdaf2561599c76cf2f5940809f3c5005b17ee90a04cab9a99f35598f55f9d422a3f00ab04d493c76a0f291ce636711c9dabcb2879aceb2
7
+ data.tar.gz: 6d239fd54239b01ec42215296964d0140e40ae1841eae2d4af12e0982d5478ad2ee49c5f6628f067ef5168bef5845f07780e63fc6e6be4875c06c21f8f0afb20
data/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  ## [ Unreleased ]
2
2
 
3
+ ## [0.2.3 - 2025-11-18]
4
+ - Pure Parser: Bugs with url()
5
+
3
6
  ## [0.2.2 - 2025-11-18]
4
7
 
5
8
  - Feature: Selector list tracking - parser preserves comma-separated selector groupings (e.g., `h1, h2, h3`) through parse/flatten/serialize cycle
@@ -641,13 +641,30 @@ module Cataract
641
641
 
642
642
  skip_ws_and_comments
643
643
 
644
- # Parse value (read until ';' or '}')
644
+ # Parse value (read until ';' or '}', but respect quoted strings)
645
645
  value_start = @pos
646
646
  important = false
647
+ in_quote = nil # nil, BYTE_SQUOTE, or BYTE_DQUOTE
647
648
 
648
649
  until eof?
649
650
  byte = peek_byte
650
- break if byte == BYTE_SEMICOLON || byte == BYTE_RBRACE
651
+
652
+ if in_quote
653
+ # Inside quoted string - only exit on matching quote
654
+ if byte == in_quote
655
+ in_quote = nil
656
+ elsif byte == BYTE_BACKSLASH && @pos + 1 < @len
657
+ # Skip escaped character
658
+ @pos += 1
659
+ end
660
+ else
661
+ # Not in quote - check for terminators or quote start
662
+ break if byte == BYTE_SEMICOLON || byte == BYTE_RBRACE
663
+
664
+ if byte == BYTE_SQUOTE || byte == BYTE_DQUOTE
665
+ in_quote = byte
666
+ end
667
+ end
651
668
 
652
669
  @pos += 1
653
670
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Cataract
4
- VERSION = '0.2.2'
4
+ VERSION = '0.2.3'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cataract
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Cook