Browse Source

Merge branch 'Add-ice-skating-features' of https://github.com/scarapella/openstreetbrowser-categories-main into Add-ice-skating-features

master
scarapella 3 months ago
parent
commit
f8ca96cc19
  1. 44
      .github/copilot-instructions.md

44
.github/copilot-instructions.md

@ -0,0 +1,44 @@
# Copilot instructions for openstreetbrowser-categories-main
This file gives succinct, actionable guidance for AI coding agents working in this package.
- **Big picture**: this package defines map category descriptors as YAML files. Each category YAML contains metadata for the UI (localized `name`), an Overpass-style `query`, a `feature` Jinja template (controls title/description/marker/style) and a `const` section mapping tag-derived keys (e.g. `piste:type=ice_skate`) to rendering details.
- **Key files/locations**:
- Category examples: `ice_skating.yaml` (root of this package).
- Translations helper: `lang/README.md` (contains rules for copying translation entries into categories).
- **YAML + Jinja pattern**:
- Templates use Jinja-like expressions inside YAML block scalars (`feature.pre`, `feature.title`, `feature.body`, etc.).
- Common template helpers used in files: `attribute(tags, '...')`, `localizedTag(tags, '...')`, `tagTrans(key,value)`, `keyTrans(...)`, and `markerPointer()` / `markerCircle()` helpers.
- Be careful with quoting and nested braces; preserve existing whitespace and indentation when editing.
- **Query conventions**:
- `type` is frequently `overpass` and `query` holds Overpass QL blocks. Look at `ice_skating.yaml` for examples combining `way[...]`, `node[...]`, and boolean filters.
- Category queries intentionally avoid overlap with other category packages (see inline comments). When updating queries, maintain such exclusions and add TODO comments for unresolved tagging patterns.
- **Rendering conventions**:
- `const` keys use `tag=value` strings (e.g. `piste:type=ice_skate`) to map to `symbol`, `style`, `sign`, and `priority`.
- `feature.pre` usually resolves which `key`/`value` pair applies and sets `constIndex = (key ~ "=" ~ value)` to lookup `const[constIndex]`.
- `markerSign` may include raw HTML (icons). `markerSymbol`/`listMarkerSymbol` choose display helpers based on `item.symbol`.
- Respect `restricted_access_value` logic: values like `no`, `private`, `discouraged` should gray-out markers (`#7F7F7F`) and change behavior in templates.
- **When adding a new category YAML**:
- Copy an existing file (e.g. `ice_skating.yaml`) as the minimal scaffold: `name`, `type`, `query`, `feature`, `const`.
- Implement `feature.pre` to deterministically set `key` and `value` then lookup `const` via the `constIndex` pattern.
- Keep UI strings via `localizedTag` / `tagTrans` rather than hardcoding text.
- **Project-specific patterns for AI**:
- Prefer read-only edits first: update `const` styles or `feature` templates without changing query logic unless necessary.
- Preserve TODO comments in queries — they encode tagging ambiguity and cross-package concerns.
- Use existing helper names (`markerPointer`, `markerCircle`, `tagTrans`) rather than inventing new ones.
- **Testing / validation (discoverable)**:
- There are no unit tests in this package. Validate changes by comparing rendered template outputs in a running OpenStreetBrowser instance (manual step outside this package).
- For syntax safety, run a YAML linter and ensure Jinja blocks remain properly indented and quoted.
- **Examples to inspect**:
- `ice_skating.yaml`: demonstrates query composition, `feature.pre` logic, `const` mappings, localized `name`, and marker styling.
- `lang/README.md`: describes how translations in `lang/` are applied to categories.
If anything here is unclear or you want the instructions tailored to a different contributor workflow, tell me which parts to expand or examples to add.
Loading…
Cancel
Save