pubid 2.0.0.pre.alpha.54 → 2.0.0.pre.alpha.56

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.
@@ -1076,7 +1076,16 @@ module Pubid
1076
1076
  extract_value(parsed[:draft_version]).to_s.match?(/\A\d/)
1077
1077
  # A promoted stage ("29119.FDIS") is printed identity - the joint
1078
1078
  # model carries it, never the printed Standard face.
1079
+ # P + a /D designator (any draft capture) is a DRAFT, never a
1080
+ # printed Std (the owner's 2026-10-24 ruling): the P marker is
1081
+ # project status, so the joint/project-draft family owns the row
1082
+ # whatever date trails the designator. The non-P rows keep the
1083
+ # printed-strip doctrine (the normalization ledger).
1084
+ p_with_draft = parsed[:project_marker] &&
1085
+ (parsed[:draft_version] || parsed[:draft_iso_stage] ||
1086
+ parsed[:draft_month] || parsed[:draft_year])
1079
1087
  printed_joint = parsed[:iso_published] && parsed[:iso_stage].nil? &&
1088
+ !p_with_draft &&
1080
1089
  (parsed[:printed_dash_year] || parsed[:printed_month_year] ||
1081
1090
  (numeric_draft && parsed[:draft_month]) ||
1082
1091
  # A date-less stage-less joint reference carrying only a
@@ -1098,6 +1107,10 @@ module Pubid
1098
1107
  "#{parsed[:part_dash] ? "-" : "."}#{part_val}"
1099
1108
  end
1100
1109
  end
1110
+ # the subpart carries its separator too (C1 separator-in-capture);
1111
+ # the two-party rows split "-57-1202"-class parts into both
1112
+ sub_val = parsed[:subpart] && extract_value(parsed[:subpart])
1113
+ printed_code += sub_val if sub_val && !sub_val.empty?
1101
1114
  # P = project: the marker is identity, preserved as spelled.
1102
1115
  printed_code = "P#{printed_code}" if parsed[:project_marker]
1103
1116
  printed_attrs = { publisher: attributes[:publisher],
@@ -1118,9 +1131,14 @@ module Pubid
1118
1131
  printed_attrs[:year] = attributes[:year]
1119
1132
  printed_attrs[:month] = attributes[:month]
1120
1133
  elsif parsed[:draft_month]
1121
- # The date trails the draft itself ("D8, June 2010"); keep it
1122
- # inside the draft so the code stays date-less.
1123
- printed_draft = "#{printed_draft}, #{extract_value(parsed[:draft_month])} " "#{extract_value(parsed[:draft_year])}"
1134
+ # The date trails the draft itself ("D31, Aug 2010"): the
1135
+ # normalization ledger strips the ordinal draft on the
1136
+ # printed joint face and surfaces the date as the printed
1137
+ # date ("11073-10418 D13, January 2011" ->
1138
+ # "11073.10418, January 2011") -- composing it back into the
1139
+ # draft emitted "/D, Aug 2010" remnants.
1140
+ printed_attrs[:year] = extract_value(parsed[:draft_year])
1141
+ printed_attrs[:month] = extract_value(parsed[:draft_month])
1124
1142
  end
1125
1143
  printed_attrs[:code] = printed_code
1126
1144
  printed_attrs[:draft] = printed_draft if printed_draft
data/lib/pubid/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pubid
4
- VERSION = "2.0.0.pre.alpha.54"
4
+ VERSION = "2.0.0.pre.alpha.56"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pubid
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.pre.alpha.54
4
+ version: 2.0.0.pre.alpha.56
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.