disarm 0.18.0 → 0.19.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 97a1134e3c4dd290d1b24d101c251a92662aa7ef00b04706b8d814a20c51f38d
4
- data.tar.gz: 16f89af520143e300c0c21c83f0b30749e64faa3ba35519c6b9bcbb0347e86fb
3
+ metadata.gz: 1fe7093d6eacd02aaefd2c58728e86cf7722c11eace2868138bc7c8389998469
4
+ data.tar.gz: 42ae4ab7b64ce29af6fa9026076694bf2a4527f660da846a7931a9fb05ee4cb3
5
5
  SHA512:
6
- metadata.gz: 1605f0c7a86da20fb66f2bbc75b332f5ba9aa95abc5e7bc62d474b1ed1cae612cc58a2c0d1304cb58b3eb244245790577d8cc254b563c723149fb3f84f613eba
7
- data.tar.gz: c7defb7539d47ac7c06c9f6221940d34b5a94766999d45d67d26c851073491b168b85dde3e7834577939c34fcd6f20f517485f04605dbb134749325feff8d8ab
6
+ metadata.gz: b2a1582a1a35164a6de6b17b03b89fac792d66c8e9a8097555fb08508bd845525cb015175effc8f84c9dbcad826491da007c0afd23c03d661ad9923bd2029a2d
7
+ data.tar.gz: 1463ecfca3ce4e3c3a0faec46ed0f4d3ea465cd22a00a262b8eba016c44ad9583821ff031ed906cf2a550d22d213ecc71c1abc6ece33e73e21f85d94e864bcc1
data/NOTICE CHANGED
@@ -38,6 +38,7 @@ Unicode data
38
38
  Python's unicodedata module
39
39
  Unicode Security Mechanisms (UTS #39): confusables.txt (vendored as
40
40
  data/confusables.txt)
41
+ The Ideographic Variation Database (IVD): IVD_Sequences.txt
41
42
  Unicode CLDR emoji annotations: common/annotations/en.xml and
42
43
  common/annotationsDerived/en.xml (vendored as data/cldr/en.xml and
43
44
  data/cldr/en_derived.xml)
@@ -30,7 +30,7 @@ crate-type = ["cdylib"]
30
30
  # dep — not a path — so the gem is self-contained and the rb-sys-dock cross-gem
31
31
  # build (which mounts only this gem dir) can fetch it. Imported as `disarm_core`
32
32
  # because the package name `disarm` would otherwise clash with this crate.
33
- disarm_core = { package = "disarm", version = "0.18", default-features = false }
33
+ disarm_core = { package = "disarm", version = "0.19", default-features = false }
34
34
  # magnus: ergonomic, safe Ruby<->Rust bindings over rb-sys. 0.8 supports Ruby >= 3.0
35
35
  # (the gem's required_ruby_version); rb-sys handles the platform glue.
36
- magnus = "0.8"
36
+ magnus = "0.9"
@@ -916,6 +916,12 @@ fn inspect_anomalies_impl(text: &str, lex: &HashSet<String>) -> AnomalyReportTup
916
916
  (r.anomalous, kinds, findings, r.reason)
917
917
  }
918
918
 
919
+ /// `Disarm._anomaly_severity(kind)` — the level a finding of this kind carries (#946).
920
+ fn anomaly_severity(kind: String) -> Result<String, Error> {
921
+ let kind: api::AnomalyKind = kind.parse().map_err(|e| map_err(&e))?;
922
+ Ok(kind.severity().as_str().to_owned())
923
+ }
924
+
919
925
  /// `Disarm._inspect_anomalies(text, lexicon)` — `[anomalous, kinds, findings,
920
926
  /// reason]` where each finding is `[kind, token, start, end, detail, reason]` (the
921
927
  /// Ruby layer maps it to a hash).
@@ -1078,6 +1084,7 @@ fn init(ruby: &Ruby) -> Result<(), Error> {
1078
1084
  module.define_singleton_method("_list_context_langs", function!(list_context_langs, 0))?;
1079
1085
 
1080
1086
  module.define_singleton_method("_has_anomalies?", function!(has_anomalies, 2))?;
1087
+ module.define_singleton_method("_anomaly_severity", function!(anomaly_severity, 1))?;
1081
1088
  module.define_singleton_method("_inspect_anomalies", function!(inspect_anomalies, 2))?;
1082
1089
 
1083
1090
  // Reusable lexicon handle (HAI-SDLC 6.1): build the HashSet once, reuse it
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Disarm
4
4
  # Kept in lockstep with the Rust crate / Python package version.
5
- VERSION = "0.18.0"
5
+ VERSION = "0.19.0"
6
6
  end
data/lib/disarm.rb CHANGED
@@ -633,6 +633,14 @@ module Disarm
633
633
  end
634
634
  end
635
635
 
636
+ # The level a finding of this kind carries, by the name a report holds: "error" or
637
+ # "warning", which are SARIF's names. `smuggled` is the one "error", because it fires
638
+ # only on a run that decodes to readable text. Raises Disarm::InvalidArgument on a
639
+ # name that is no kind.
640
+ def anomaly_severity(kind)
641
+ translate_errors { _anomaly_severity(kind.to_s) }
642
+ end
643
+
636
644
  # Full anomaly analysis: a hash with `:anomalous`, `:kinds` (in first-appearance
637
645
  # order), `:findings` (each `{ kind:, token:, start:, end:, detail:, reason: }`,
638
646
  # with byte offsets), and `:reason` (the first finding's reason, or nil).
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: disarm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.0
4
+ version: 0.19.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Quinn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-10-30 00:00:00.000000000 Z
11
+ date: 2026-11-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rb_sys