<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sisudoc-spine/org/out_src_abstraction_peg_text.org, branch main</title>
<subtitle>SiSU Spine: document publishing and search (in D) 2015</subtitle>
<link rel='alternate' type='text/html' href='https://sisudoc.org/projects/sisudoc-spine/'/>
<entry>
<title>org headers rearranged (&amp; odd hilighting issue)</title>
<updated>2026-05-04T16:12:12+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-05-04T15:46:57+00:00</published>
<link rel='alternate' type='text/html' href='https://sisudoc.org/projects/sisudoc-spine/commit/?id=c81bb010f45b732f97d7fbecd812ecae28f2be7d'/>
<id>c81bb010f45b732f97d7fbecd812ecae28f2be7d</id>
<content type='text'>
- odd hilighting issue ... must result from my org config, but "fix"
  makes things easier for me.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- odd hilighting issue ... must result from my org config, but "fix"
  makes things easier for me.
</pre>
</div>
</content>
</entry>
<entry>
<title>org/ out of sync with ./src (sync)</title>
<updated>2026-05-04T15:44:55+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-05-03T22:10:11+00:00</published>
<link rel='alternate' type='text/html' href='https://sisudoc.org/projects/sisudoc-spine/commit/?id=559b8b714a9694ba561009be5cd54cde3495b005'/>
<id>559b8b714a9694ba561009be5cd54cde3495b005</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>.ssp: omit empty-value array property entries</title>
<updated>2026-04-23T00:42:31+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-04-22T18:06:31+00:00</published>
<link rel='alternate' type='text/html' href='https://sisudoc.org/projects/sisudoc-spine/commit/?id=e292f03817f4bf307b2cc6e35bd81b7fe2d33717'/>
<id>e292f03817f4bf307b2cc6e35bd81b7fe2d33717</id>
<content type='text'>
Add empty-string guards to array property loops
(.stow_link, .lev4_subtoc, .anchor_tag) so entries with
zero-length values are not emitted. Empty properties have
no value for PEG parsing - absent lines are faster to skip
than matching a property name to find an empty value.

Removes 1488 empty .anchor_tag: lines from Wealth of
Networks .ssp alone.

Co-Authored-By: Anthropic Claude Opus 4.6 (1M context)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add empty-string guards to array property loops
(.stow_link, .lev4_subtoc, .anchor_tag) so entries with
zero-length values are not emitted. Empty properties have
no value for PEG parsing - absent lines are faster to skip
than matching a property name to find an empty value.

Removes 1488 empty .anchor_tag: lines from Wealth of
Networks .ssp alone.

Co-Authored-By: Anthropic Claude Opus 4.6 (1M context)
</pre>
</div>
</content>
</entry>
<entry>
<title>.ssp: add .children property for heading tree navigation</title>
<updated>2026-04-23T00:42:31+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-04-22T18:04:24+00:00</published>
<link rel='alternate' type='text/html' href='https://sisudoc.org/projects/sisudoc-spine/commit/?id=0cd28e99f8847b8c4b554a45f1ae22a4cd19eb1c'/>
<id>0cd28e99f8847b8c4b554a45f1ae22a4cd19eb1c</id>
<content type='text'>
- Add explicit child heading OCN lists to heading objects,
  pre-computed in a single O(n) pass over the body section
  before serialization. This makes the document tree directly
  navigable without scanning - each heading lists its direct
  sub-heading OCNs.

- Example output for a chapter heading:
    [10] heading :1
    .last_descendant: 65
    .children: 14 24 42 57

- Implementation: builds an int[][int] map (parent_ocn -&gt;
  child heading OCNs) from one pass over the body objects,
  then emits .children: during serialization for headings
  that have entries in the map.

- The tree was already reconstructable from parent_ocn +
  last_descendant_ocn, but .children makes it immediate -
  no scanning required to find a heading's sub-structure.

- Tested against all 35 sample documents - zero failures.

  Co-Authored-By: Anthropic Claude Opus 4.6 (1M context)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Add explicit child heading OCN lists to heading objects,
  pre-computed in a single O(n) pass over the body section
  before serialization. This makes the document tree directly
  navigable without scanning - each heading lists its direct
  sub-heading OCNs.

- Example output for a chapter heading:
    [10] heading :1
    .last_descendant: 65
    .children: 14 24 42 57

- Implementation: builds an int[][int] map (parent_ocn -&gt;
  child heading OCNs) from one pass over the body objects,
  then emits .children: during serialization for headings
  that have entries in the map.

- The tree was already reconstructable from parent_ocn +
  last_descendant_ocn, but .children makes it immediate -
  no scanning required to find a heading's sub-structure.

- Tested against all 35 sample documents - zero failures.

  Co-Authored-By: Anthropic Claude Opus 4.6 (1M context)
</pre>
</div>
</content>
</entry>
<entry>
<title>.ssp serializer: include all ObjGenericComposite fields</title>
<updated>2026-04-23T00:42:31+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-04-22T18:02:51+00:00</published>
<link rel='alternate' type='text/html' href='https://sisudoc.org/projects/sisudoc-spine/commit/?id=0edd3f79f2ceaf74c009a1f4dc25aa95b5a1c673'/>
<id>0edd3f79f2ceaf74c009a1f4dc25aa95b5a1c673</id>
<content type='text'>
- Make the .ssp format a complete representation of the
  document abstraction by serializing all remaining fields
  from ObjGenericComposite (only omitting ptr.* runtime
  indices which are meaningless outside the in-memory context).

- New fields added:
    .ancestors_collapsed: - collapsed level ancestor chain
    .dom_status: - DOM structure markedup tags status[8]
    .dom_status_collapsed: - DOM structure collapsed status[8]
    .heading_lev_collapsed: - collapsed heading level
    .parent_lev: - parent heading level (markup)
    .o_n_type: - object numbering type (0=ocn, 1=non, 2=bkidx)
    .is_of_type: - para/block type classification
    .attrib: - general attributes string
    .meta_lang: - block language (group/block/quote)
    .meta_syntax: - codeblock syntax from metainfo
    .sha256: - hex-encoded SHA-256 digest of object content
    .has: images_no_dim - image without dimensions flag
    .table_aligns: - column alignment array
    .table_walls: - table walls/borders flag
    .stow_link: - extracted URLs (one per line)
    .heading_lev_anchor: - heading level anchor tag
    .segment_epub: - EPUB segment anchor tag
    .heading_ancestors_text: - pipe-separated ancestor headings
    .lev4_subtoc: - sub-table-of-contents entries (one per line)
    .anchor_tag: - additional anchor tags (one per line)

- Tested against all 35 sample documents - zero failures.

  Co-Authored-By: Anthropic Claude Opus 4.6 (1M context)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Make the .ssp format a complete representation of the
  document abstraction by serializing all remaining fields
  from ObjGenericComposite (only omitting ptr.* runtime
  indices which are meaningless outside the in-memory context).

- New fields added:
    .ancestors_collapsed: - collapsed level ancestor chain
    .dom_status: - DOM structure markedup tags status[8]
    .dom_status_collapsed: - DOM structure collapsed status[8]
    .heading_lev_collapsed: - collapsed heading level
    .parent_lev: - parent heading level (markup)
    .o_n_type: - object numbering type (0=ocn, 1=non, 2=bkidx)
    .is_of_type: - para/block type classification
    .attrib: - general attributes string
    .meta_lang: - block language (group/block/quote)
    .meta_syntax: - codeblock syntax from metainfo
    .sha256: - hex-encoded SHA-256 digest of object content
    .has: images_no_dim - image without dimensions flag
    .table_aligns: - column alignment array
    .table_walls: - table walls/borders flag
    .stow_link: - extracted URLs (one per line)
    .heading_lev_anchor: - heading level anchor tag
    .segment_epub: - EPUB segment anchor tag
    .heading_ancestors_text: - pipe-separated ancestor headings
    .lev4_subtoc: - sub-table-of-contents entries (one per line)
    .anchor_tag: - additional anchor tags (one per line)

- Tested against all 35 sample documents - zero failures.

  Co-Authored-By: Anthropic Claude Opus 4.6 (1M context)
</pre>
</div>
</content>
</entry>
<entry>
<title>.ssp serializer: omit identifier when it equals OCN</title>
<updated>2026-04-23T00:42:31+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-04-22T18:00:13+00:00</published>
<link rel='alternate' type='text/html' href='https://sisudoc.org/projects/sisudoc-spine/commit/?id=5f9cb0e9724ab4c3f3539ef801b4604504543e4a'/>
<id>5f9cb0e9724ab4c3f3539ef801b4604504543e4a</id>
<content type='text'>
- For heading objects, the identifier was always emitted on the
  declaration line (e.g. "[10] heading :1 10") even when it was
  just the OCN repeated. Now only emits the identifier when it
  differs from the OCN (i.e. when there is a named segment like
  "acknowledgments" or "a1"), reducing redundancy.

  Before: [10] heading :1 10
  After:  [10] heading :1

  Named segments still appear: [0] heading :1 a1

  Co-Authored-By: Anthropic Claude Opus 4.6 (1M context)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- For heading objects, the identifier was always emitted on the
  declaration line (e.g. "[10] heading :1 10") even when it was
  just the OCN repeated. Now only emits the identifier when it
  differs from the OCN (i.e. when there is a named segment like
  "acknowledgments" or "a1"), reducing redundancy.

  Before: [10] heading :1 10
  After:  [10] heading :1

  Named segments still appear: [0] heading :1 a1

  Co-Authored-By: Anthropic Claude Opus 4.6 (1M context)
</pre>
</div>
</content>
</entry>
<entry>
<title>.ssp document abstraction as PEG parsable text</title>
<updated>2026-04-23T00:42:31+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-04-22T17:44:39+00:00</published>
<link rel='alternate' type='text/html' href='https://sisudoc.org/projects/sisudoc-spine/commit/?id=49fd1ba683dd36e3826cf0d48e950c26d5235c1c'/>
<id>49fd1ba683dd36e3826cf0d48e950c26d5235c1c</id>
<content type='text'>
  --show-abstraction flag to write .ssp document abstraction files

- Add a new output mode that serializes the in-memory document
  abstraction (produced by spineAbstraction) to a human-readable,
  line-oriented text format (.ssp). This captures the full object
  model after parsing and abstraction but before output generation.

- The .ssp format uses unambiguous line prefixes:
    @section { }  - section boundaries (head/toc/body/endnotes/...)
    [N] type      - object declaration with OCN
    .name: value  - object properties (only non-defaults)
    | content     - text content lines
    % comment     - comments

- New files:
    src/sisudoc/io_out/create_abstraction_txt.d
      Serializer module following the same template pattern as
      metadoc_show_summary.d. Walks doc.abstraction() section by
      section, writing metadata preamble (@meta, @make, @doc_has)
      then each object with its properties and text content.
      Output goes to {output_path}/{lang}/abstraction/{doc}.ssp

- Changes to spine.d:
    - Add "show-abstraction" to opts initialization, getopt, and
      OptActions struct
    - Add show_abstraction to abstraction(), require_processing_files(),
      and meta_processing_general() so the flag triggers full document
      processing
    - Insert call at both spineAbstraction sites (parallel and serial
      branches), gated by show_abstraction flag, following the same
      pattern as show_config/show_summary/show_make

- Tested against all 35 sample documents (including multilingual
  live-manual in 9 languages) - zero failures. Works standalone
  (--show-abstraction) or combined with other output flags
  (--show-abstraction --html --text). No effect on existing code
  paths when the flag is not used.

  Co-Authored-By: Anthropic Claude Opus 4.6 (1M context)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  --show-abstraction flag to write .ssp document abstraction files

- Add a new output mode that serializes the in-memory document
  abstraction (produced by spineAbstraction) to a human-readable,
  line-oriented text format (.ssp). This captures the full object
  model after parsing and abstraction but before output generation.

- The .ssp format uses unambiguous line prefixes:
    @section { }  - section boundaries (head/toc/body/endnotes/...)
    [N] type      - object declaration with OCN
    .name: value  - object properties (only non-defaults)
    | content     - text content lines
    % comment     - comments

- New files:
    src/sisudoc/io_out/create_abstraction_txt.d
      Serializer module following the same template pattern as
      metadoc_show_summary.d. Walks doc.abstraction() section by
      section, writing metadata preamble (@meta, @make, @doc_has)
      then each object with its properties and text content.
      Output goes to {output_path}/{lang}/abstraction/{doc}.ssp

- Changes to spine.d:
    - Add "show-abstraction" to opts initialization, getopt, and
      OptActions struct
    - Add show_abstraction to abstraction(), require_processing_files(),
      and meta_processing_general() so the flag triggers full document
      processing
    - Insert call at both spineAbstraction sites (parallel and serial
      branches), gated by show_abstraction flag, following the same
      pattern as show_config/show_summary/show_make

- Tested against all 35 sample documents (including multilingual
  live-manual in 9 languages) - zero failures. Works standalone
  (--show-abstraction) or combined with other output flags
  (--show-abstraction --html --text). No effect on existing code
  paths when the flag is not used.

  Co-Authored-By: Anthropic Claude Opus 4.6 (1M context)
</pre>
</div>
</content>
</entry>
</feed>
