Skip to content

feat: replace .imp with .isc format (289 maps) - #180

Merged
ronaldtse merged 16 commits into
mainfrom
feat/imp-to-isc-migration
Aug 25, 2026
Merged

ronaldtse merged 16 commits into
mainfrom
feat/imp-to-isc-migration

Conversation

@ronaldtse

Copy link
Copy Markdown
Contributor

Summary

  • All 289 transliteration maps converted from Ruby DSL (.imp) to ISC format (.isc)
  • Git history preserved via git mv + content replacement
  • Library files (libs/*.iml) unchanged
  • All 289 .isc files parse successfully with the ISC parser

Verification

  • 0 .imp files remain
  • 289 .isc files exist and all parse
  • Old .imp history accessible via git log -- maps/foo.imp

Test plan

  • ISC parser parses all 289 .isc files
  • Transliteration output matches previous .imp-based output
  • Website continues to work (will use .isc directly in next phase)

All 289 transliteration maps converted from Ruby DSL (.imp) to
ISC format (.isc). Git history preserved — the old .imp files
were renamed to .isc via git mv, then content replaced.

The .imp format is now legacy. The .isc format is the canonical
source format for all transliteration systems.

Library files (libs/*.iml) remain unchanged.
ronaldtse added a commit to interscript/interscript.github.io that referenced this pull request Aug 25, 2026
… a real map

compressHTML: true restores pre-7 whitespace collapse (space preserved
between text and inline elements) — the systemic fix for the glue bug
hand-patched across pages; the source-level vitest guard stays as a
second layer. The old Map_Format.adoc reference no longer exists —
point step 03 at a fully-worked map in the corpus instead (resolves
once interscript/maps#180 lands the .isc migration).
Adds an isc-parse job (interscript-ruby parser over every .isc file —
no heavy gem deps). Fixes mofa-jpn sokuon rule (not_after line_end) and
the var-ara rababa directive syntax so the corpus parses clean.
Comment on lines +44 to +77
name: All .isc files parse (Ruby)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: "3.4"
- name: Checkout interscript-ruby
run: |
git clone --depth=1 https://github.com/interscript/interscript.git ../interscript
- name: Parse all .isc files
run: |
cd ../interscript/ruby
ruby -Ilib -e '
require "interscript"
require "interscript/isc"
total = 0
failures = []
Dir.glob("../../maps/maps/*.isc").sort.each do |path|
total += 1
begin
tree = Interscript::Isc::Parser.parse(File.read(path), filename: File.basename(path))
Interscript::Isc::DocumentBuilder.build(tree, filename: File.basename(path))
rescue => e
failures << "#{File.basename(path)}: #{e.message[0,120]}"
end
end
puts "Parsed #{total - failures.size}/#{total} .isc files"
failures.each { |f| STDERR.puts " #{f}" }
exit 1 if failures.any?
'

isc-parse-ts:
Comment thread .github/workflows/test.yml Fixed
Ruby parses against interscript-ruby feat/isc-parser-codemod (289/289
locally; flip to main once that PR merges). TS parses against
interscript-ts feat/imf-runtime-ts. The TS job's ..-prefixed
working-directory/cache paths were rejected by Actions — cd inside
run steps instead.
The inline -e script couldn't resolve relative module imports; the
committed checker imports the parser from the interscript-ts checkout
directly (289/289 locally). No build step needed.
Comment on lines +81 to +97
name: All .isc files parse (TS)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Checkout interscript-ts
run: |
git clone --depth=1 --branch feat/imf-runtime-ts https://github.com/interscript/interscript-ts.git ../interscript-ts
- uses: actions/setup-node@v7
with:
node-version: "22"
- name: Install + build TS parser
run: |
cd ../interscript-ts
npm ci
npm run build
- name: Parse all .isc files
run: npx -y tsx scripts/parse-isc.mjs ../interscript-ts
…tion

* origin/main:
  ci: add CodeQL workflow for Ruby
  docs: add CHANGELOG.md
  docs: add CI badge
  docs: add CONTRIBUTING.md
  docs: add SECURITY.md
  chore: Ruby 3.3+ floor, modern GHA, gemspec hygiene

# Conflicts:
#	.github/workflows/test.yml
The job cloned interscript/interscript and ran its ruby suite against
the monorepo's own maps submodule — it never exercised this repo's
changes, and the monorepo's js/ removal (moved out for submodules)
broke it out from under us. The parse-all jobs are the corpus's real
gate.
@ronaldtse
ronaldtse merged commit 0f2bb91 into main Aug 25, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants