cddl 0.11.4 → 0.12.1
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 +4 -4
 - data/bin/cddl +4 -1
 - data/cddl.gemspec +1 -1
 - data/data/cddl.abnf +21 -9
 - data/lib/cddl.rb +39 -4
 - data/test-data/b64u-strict.cddl +12 -0
 - data/test-data/enum.cddl +14 -0
 - data/test-data/enum1.cddl +12 -0
 - metadata +6 -3
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: a29d5d85e11598502b09d04e3b08a7ada9b6d0d8a9eb0e425bb01da81b92532b
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 61c2a191c264c34600f0b66a8e7cfb2ea1359f3954676828a56a63aa25e3015c
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 671d119f1cb328151c0631cbcd808f5a32d1f82d6c715a64cb5e5c9702b3452c996278a6b5055613de74b00f76489a9874037b336ac3a760947d4a2526d84cc9
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 8146d9b66bb87e84b2179507fb9144012676be726dd5f4312da2482a047e46429a6d41d5b1d49097724aa8cfd68519be06e6e8f860e97f0cbc187de0c20242ca
         
     | 
    
        data/bin/cddl
    CHANGED
    
    | 
         @@ -29,7 +29,10 @@ def read_arg(arg, remember_fn = true) 
     | 
|
| 
       29 
29 
     | 
    
         
             
              else
         
     | 
| 
       30 
30 
     | 
    
         
             
                usage unless arg
         
     | 
| 
       31 
31 
     | 
    
         
             
                $fn = arg if remember_fn
         
     | 
| 
       32 
     | 
    
         
            -
                File.read(arg, mode: "rb")
         
     | 
| 
      
 32 
     | 
    
         
            +
                File.read(arg, mode: "rb").force_encoding(Encoding::UTF_8).scrub { |c|
         
     | 
| 
      
 33 
     | 
    
         
            +
                  warn "*** replaced invalid UTF-8 byte sequence #{c.inspect} by U+FFFD REPLACEMENT CHARACTER"
         
     | 
| 
      
 34 
     | 
    
         
            +
                  0xFFFD.chr(Encoding::UTF_8)
         
     | 
| 
      
 35 
     | 
    
         
            +
                }
         
     | 
| 
       33 
36 
     | 
    
         
             
              end
         
     | 
| 
       34 
37 
     | 
    
         
             
            end
         
     | 
| 
       35 
38 
     | 
    
         | 
    
        data/cddl.gemspec
    CHANGED
    
    
    
        data/data/cddl.abnf
    CHANGED
    
    | 
         @@ -70,27 +70,39 @@ fraction = 1*DIGIT 
     | 
|
| 
       70 
70 
     | 
    
         
             
            exponent = int
         
     | 
| 
       71 
71 
     | 
    
         | 
| 
       72 
72 
     | 
    
         
             
            text = %x22 *SCHAR %x22
         
     | 
| 
       73 
     | 
    
         
            -
            SCHAR = %x20-21 / %x23-7E / SESC
         
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
      
 73 
     | 
    
         
            +
            SCHAR = %x20-21 / %x23-5B / %x5D-7E / NONASCII / SESC
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
            SESC = "\" ( %x22 / "/" / "\" /                 ; \" \/ \\
         
     | 
| 
      
 76 
     | 
    
         
            +
                         %x62 / %x66 / %x6E / %x72 / %x74 / ; \b \f \n \r \t
         
     | 
| 
      
 77 
     | 
    
         
            +
                         (%x75 hexchar) )                   ; \uXXXX
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
            hexchar = "{" (1*"0" [ hexscalar ] / hexscalar) "}" /
         
     | 
| 
      
 80 
     | 
    
         
            +
                      non-surrogate / (high-surrogate "\" %x75 low-surrogate)
         
     | 
| 
      
 81 
     | 
    
         
            +
            non-surrogate = ((DIGIT / "A"/"B"/"C" / "E"/"F") HEXDIG HEXDIG HEXDIG) /
         
     | 
| 
      
 82 
     | 
    
         
            +
                            ("D" %x30-37 HEXDIG HEXDIG)
         
     | 
| 
      
 83 
     | 
    
         
            +
            high-surrogate = "D" ("8"/"9"/"A"/"B") HEXDIG HEXDIG
         
     | 
| 
      
 84 
     | 
    
         
            +
            low-surrogate = "D" ("C"/"D"/"E"/"F") HEXDIG HEXDIG
         
     | 
| 
      
 85 
     | 
    
         
            +
            hexscalar = "10" HEXDIG HEXDIG HEXDIG HEXDIG / HEXDIG1 HEXDIG HEXDIG HEXDIG HEXDIG
         
     | 
| 
      
 86 
     | 
    
         
            +
                      / non-surrogate / HEXDIG [HEXDIG [HEXDIG]]
         
     | 
| 
       75 
87 
     | 
    
         | 
| 
       76 
88 
     | 
    
         
             
            bytes = [bsqual] %x27 *BCHAR %x27
         
     | 
| 
       77 
     | 
    
         
            -
            BCHAR = %x20-26 / %x28-5B / %x5D-7E / SESC / CRLF
         
     | 
| 
       78 
     | 
    
         
            -
            bsqual =  
     | 
| 
       79 
     | 
    
         
            -
                   / %x62.36.34 ; "b64"
         
     | 
| 
      
 89 
     | 
    
         
            +
            BCHAR = %x20-26 / %x28-5B / %x5D-7E / NONASCII / SESC / "\'" / CRLF
         
     | 
| 
      
 90 
     | 
    
         
            +
            bsqual = "h" / "b64"
         
     | 
| 
       80 
91 
     | 
    
         | 
| 
       81 
92 
     | 
    
         
             
            id = EALPHA *(*("-" / ".") (EALPHA / DIGIT))
         
     | 
| 
       82 
93 
     | 
    
         
             
            ALPHA = %x41-5A / %x61-7A
         
     | 
| 
       83 
     | 
    
         
            -
            EALPHA =  
     | 
| 
      
 94 
     | 
    
         
            +
            EALPHA = ALPHA / "@" / "_" / "$"
         
     | 
| 
       84 
95 
     | 
    
         
             
            DIGIT = %x30-39
         
     | 
| 
       85 
96 
     | 
    
         
             
            DIGIT1 = %x31-39
         
     | 
| 
       86 
97 
     | 
    
         
             
            HEXDIG = DIGIT / "A" / "B" / "C" / "D" / "E" / "F"
         
     | 
| 
      
 98 
     | 
    
         
            +
            HEXDIG1 = DIGIT1 / "A" / "B" / "C" / "D" / "E" / "F"
         
     | 
| 
       87 
99 
     | 
    
         
             
            BINDIG = %x30-31
         
     | 
| 
       88 
100 
     | 
    
         | 
| 
       89 
101 
     | 
    
         
             
            S = *WS
         
     | 
| 
       90 
102 
     | 
    
         
             
            WS = SP / NL
         
     | 
| 
       91 
103 
     | 
    
         
             
            SP = %x20
         
     | 
| 
       92 
104 
     | 
    
         
             
            NL = COMMENT / CRLF
         
     | 
| 
       93 
     | 
    
         
            -
            COMMENT = ";" * 
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
      
 105 
     | 
    
         
            +
            COMMENT = ";" *PCHAR CRLF
         
     | 
| 
      
 106 
     | 
    
         
            +
            PCHAR = %x20-7E / NONASCII
         
     | 
| 
      
 107 
     | 
    
         
            +
            NONASCII = %xA0-D7FF / %xE000-10FFFD
         
     | 
| 
       95 
108 
     | 
    
         
             
            CRLF = %x0A / %x0D.0A
         
     | 
| 
       96 
     | 
    
         
            -
             
     | 
    
        data/lib/cddl.rb
    CHANGED
    
    | 
         @@ -61,7 +61,7 @@ module CDDL 
     | 
|
| 
       61 
61 
     | 
    
         
             
                    if upto - presult < 100
         
     | 
| 
       62 
62 
     | 
    
         
             
                      part2 = source_text[presult...upto]
         
     | 
| 
       63 
63 
     | 
    
         
             
                    else
         
     | 
| 
       64 
     | 
    
         
            -
                      part2 = source_text[presult, 50] + "......." + source_text[upto-50, 50]
         
     | 
| 
      
 64 
     | 
    
         
            +
                      part2 = source_text[presult, 50] + "......." + (source_text[upto-50, 50] || "")
         
     | 
| 
       65 
65 
     | 
    
         
             
                    end
         
     | 
| 
       66 
66 
     | 
    
         
             
                    warn "*** Look for syntax problems around the #{
         
     | 
| 
       67 
67 
     | 
    
         
             
                           "%%%".colorize(background: :light_yellow)} markers:\n#{
         
     | 
| 
         @@ -1271,7 +1271,7 @@ module CDDL 
     | 
|
| 
       1271 
1271 
     | 
    
         
             
                            String === d && (
         
     | 
| 
       1272 
1272 
     | 
    
         
             
                            decoded = case conop
         
     | 
| 
       1273 
1273 
     | 
    
         
             
                                when :b64u
         
     | 
| 
       1274 
     | 
    
         
            -
                                   
     | 
| 
      
 1274 
     | 
    
         
            +
                                  /[+\/=]/ !~ d &&
         
     | 
| 
       1275 
1275 
     | 
    
         
             
                                  Base64.urlsafe_decode64(d)
         
     | 
| 
       1276 
1276 
     | 
    
         
             
                                when :"b64u-sloppy"
         
     | 
| 
       1277 
1277 
     | 
    
         
             
                                  /[-_=]/ !~ d &&
         
     | 
| 
         @@ -1473,6 +1473,18 @@ module CDDL 
     | 
|
| 
       1473 
1473 
     | 
    
         
             
                                 end
         
     | 
| 
       1474 
1474 
     | 
    
         
             
                end
         
     | 
| 
       1475 
1475 
     | 
    
         | 
| 
      
 1476 
     | 
    
         
            +
                STRING_ESCAPES = {
         
     | 
| 
      
 1477 
     | 
    
         
            +
                  "\"" => "\"",
         
     | 
| 
      
 1478 
     | 
    
         
            +
                  "/" => "/",
         
     | 
| 
      
 1479 
     | 
    
         
            +
                  "\\" => "\\",
         
     | 
| 
      
 1480 
     | 
    
         
            +
                  "'" => "'",
         
     | 
| 
      
 1481 
     | 
    
         
            +
                  "b" => "\b",
         
     | 
| 
      
 1482 
     | 
    
         
            +
                  "f" => "\f",
         
     | 
| 
      
 1483 
     | 
    
         
            +
                  "n" => "\n",
         
     | 
| 
      
 1484 
     | 
    
         
            +
                  "r" => "\r",
         
     | 
| 
      
 1485 
     | 
    
         
            +
                  "t" => "\t",
         
     | 
| 
      
 1486 
     | 
    
         
            +
                }
         
     | 
| 
      
 1487 
     | 
    
         
            +
             
     | 
| 
       1476 
1488 
     | 
    
         
             
                def value(n)
         
     | 
| 
       1477 
1489 
     | 
    
         
             
                  # cheat:
         
     | 
| 
       1478 
1490 
     | 
    
         
             
                  # warn n
         
     | 
| 
         @@ -1482,7 +1494,20 @@ module CDDL 
     | 
|
| 
       1482 
1494 
     | 
    
         
             
                    if parts[-1] != ""
         
     | 
| 
       1483 
1495 
     | 
    
         
             
                      warn "*** Problem decoding byte string #{s.inspect}"
         
     | 
| 
       1484 
1496 
     | 
    
         
             
                    end
         
     | 
| 
       1485 
     | 
    
         
            -
                    bsval = parts[0...-1].join("'").gsub(/\\( 
     | 
| 
      
 1497 
     | 
    
         
            +
                    bsval = parts[0...-1].join("'").gsub(/\\u([Dd][89AaBb][0-9a-zA-Z]{2})\\u([Dd][CcDdEeFf][0-9a-zA-Z]{2})|\\u([0-9a-zA-Z]{4})|\\u\{([0-9a-zA-Z]+)\}|\r?(\n)|\\([^u])/) {
         
     | 
| 
      
 1498 
     | 
    
         
            +
                      if hex = $3 || $4
         
     | 
| 
      
 1499 
     | 
    
         
            +
                        hex.to_i(16).chr(Encoding::UTF_8)
         
     | 
| 
      
 1500 
     | 
    
         
            +
                      elsif lf = $5
         
     | 
| 
      
 1501 
     | 
    
         
            +
                        lf
         
     | 
| 
      
 1502 
     | 
    
         
            +
                      elsif escaped = $6
         
     | 
| 
      
 1503 
     | 
    
         
            +
                        STRING_ESCAPES[$6] or (
         
     | 
| 
      
 1504 
     | 
    
         
            +
                          fail "Invalid String Escape #{escaped.inspect} in #{s.inspect}"
         
     | 
| 
      
 1505 
     | 
    
         
            +
                        )
         
     | 
| 
      
 1506 
     | 
    
         
            +
                      else
         
     | 
| 
      
 1507 
     | 
    
         
            +
                        ((($1.to_i(16) & 0x3ff) << 10) +
         
     | 
| 
      
 1508 
     | 
    
         
            +
                         ($2.to_i(16) & 0x3ff) + 0x10000).chr(Encoding::UTF_8)
         
     | 
| 
      
 1509 
     | 
    
         
            +
                      end
         
     | 
| 
      
 1510 
     | 
    
         
            +
                    }
         
     | 
| 
       1486 
1511 
     | 
    
         
             
                    [:bytes,
         
     | 
| 
       1487 
1512 
     | 
    
         
             
                     case bsqual
         
     | 
| 
       1488 
1513 
     | 
    
         
             
                     when ""
         
     | 
| 
         @@ -1496,7 +1521,17 @@ module CDDL 
     | 
|
| 
       1496 
1521 
     | 
    
         
             
                     end
         
     | 
| 
       1497 
1522 
     | 
    
         
             
                    ]
         
     | 
| 
       1498 
1523 
     | 
    
         
             
                  else
         
     | 
| 
       1499 
     | 
    
         
            -
                     
     | 
| 
      
 1524 
     | 
    
         
            +
                    if s[-1] == '"'
         
     | 
| 
      
 1525 
     | 
    
         
            +
                      s.gsub!(/\\u([Dd][89AaBb][0-9a-zA-Z]{2})\\u([Dd][CcDdEeFf][0-9a-zA-Z]{2})|\\([^u]|u[0-9a-zA-Z]{4})/) {
         
     | 
| 
      
 1526 
     | 
    
         
            +
                        if $3
         
     | 
| 
      
 1527 
     | 
    
         
            +
                          "\\#$3" # skip this, use eval parser
         
     | 
| 
      
 1528 
     | 
    
         
            +
                        else
         
     | 
| 
      
 1529 
     | 
    
         
            +
                          ((($1.to_i(16) & 0x3ff) << 10) +
         
     | 
| 
      
 1530 
     | 
    
         
            +
                           ($2.to_i(16) & 0x3ff) + 0x10000).chr(Encoding::UTF_8)
         
     | 
| 
      
 1531 
     | 
    
         
            +
                        end
         
     | 
| 
      
 1532 
     | 
    
         
            +
                      }
         
     | 
| 
      
 1533 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1534 
     | 
    
         
            +
                    val = eval(s)
         
     | 
| 
       1500 
1535 
     | 
    
         
             
                    # warn val
         
     | 
| 
       1501 
1536 
     | 
    
         
             
                    case val
         
     | 
| 
       1502 
1537 
     | 
    
         
             
                     when Integer; [:int, val]
         
     | 
    
        data/test-data/enum.cddl
    ADDED
    
    | 
         @@ -0,0 +1,14 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
                          terminal-color = &basecolors
         
     | 
| 
      
 2 
     | 
    
         
            +
                          basecolors = (
         
     | 
| 
      
 3 
     | 
    
         
            +
                            black: 0,  red: 1,  green: 2,  yellow: 3,
         
     | 
| 
      
 4 
     | 
    
         
            +
                            blue: 4,  magenta: 5,  cyan: 6,  white: 7,
         
     | 
| 
      
 5 
     | 
    
         
            +
                            reserved: (8..255) .feature "extension"
         
     | 
| 
      
 6 
     | 
    
         
            +
                          )
         
     | 
| 
      
 7 
     | 
    
         
            +
                          ; extended-color = &(
         
     | 
| 
      
 8 
     | 
    
         
            +
                          ;   basecolors,
         
     | 
| 
      
 9 
     | 
    
         
            +
                          ;   orange: 8,  pink: 9,  purple: 10,  brown: 11,
         
     | 
| 
      
 10 
     | 
    
         
            +
                          ; )
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            ;;gp 10
         
     | 
| 
      
 13 
     | 
    
         
            +
            ;;vp 42
         
     | 
| 
      
 14 
     | 
    
         
            +
            ;;vp 433
         
     | 
| 
         @@ -0,0 +1,12 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            terminal-color = $terminal-color / text .feature "extension"
         
     | 
| 
      
 2 
     | 
    
         
            +
            $terminal-color /= &basecolors
         
     | 
| 
      
 3 
     | 
    
         
            +
            basecolors = (
         
     | 
| 
      
 4 
     | 
    
         
            +
                           black: "black",  red: "red",  green: "green", 
         
     | 
| 
      
 5 
     | 
    
         
            +
                         )
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            pastelcolors = ( pink: "pink", mauve: "mauve", peach: "peach", lavender: "lavender" )
         
     | 
| 
      
 8 
     | 
    
         
            +
            $terminal-color /= &pastelcolors
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            ;;gp 10
         
     | 
| 
      
 11 
     | 
    
         
            +
            ;;vp "florp"
         
     | 
| 
      
 12 
     | 
    
         
            +
            ;;vp "lavender"
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: cddl
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.12.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Carsten Bormann
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2024- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2024-05-16 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: cbor-diag
         
     | 
| 
         @@ -163,6 +163,7 @@ files: 
     | 
|
| 
       163 
163 
     | 
    
         
             
            - test-data/b.cddl
         
     | 
| 
       164 
164 
     | 
    
         
             
            - test-data/b64c-sloppy.cddl
         
     | 
| 
       165 
165 
     | 
    
         
             
            - test-data/b64c.cddl
         
     | 
| 
      
 166 
     | 
    
         
            +
            - test-data/b64u-strict.cddl
         
     | 
| 
       166 
167 
     | 
    
         
             
            - test-data/b64u.cddl
         
     | 
| 
       167 
168 
     | 
    
         
             
            - test-data/badaddr.cddl
         
     | 
| 
       168 
169 
     | 
    
         
             
            - test-data/base32.cddl
         
     | 
| 
         @@ -191,6 +192,8 @@ files: 
     | 
|
| 
       191 
192 
     | 
    
         
             
            - test-data/dotplus3.cddl
         
     | 
| 
       192 
193 
     | 
    
         
             
            - test-data/dotplus4.cddl
         
     | 
| 
       193 
194 
     | 
    
         
             
            - test-data/dotsize.cddl
         
     | 
| 
      
 195 
     | 
    
         
            +
            - test-data/enum.cddl
         
     | 
| 
      
 196 
     | 
    
         
            +
            - test-data/enum1.cddl
         
     | 
| 
       194 
197 
     | 
    
         
             
            - test-data/extractor-demo.cddl
         
     | 
| 
       195 
198 
     | 
    
         
             
            - test-data/feat1.cddl
         
     | 
| 
       196 
199 
     | 
    
         
             
            - test-data/feature-controller.cddl
         
     | 
| 
         @@ -287,7 +290,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       287 
290 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       288 
291 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       289 
292 
     | 
    
         
             
            requirements: []
         
     | 
| 
       290 
     | 
    
         
            -
            rubygems_version: 3.5. 
     | 
| 
      
 293 
     | 
    
         
            +
            rubygems_version: 3.5.9
         
     | 
| 
       291 
294 
     | 
    
         
             
            signing_key:
         
     | 
| 
       292 
295 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       293 
296 
     | 
    
         
             
            summary: CDDL generator and validator.
         
     |