Skip to content

Commit 5a296cb

Browse files
committed
Update README.md for clarity on project details and output formats
1 parent 22f74dc commit 5a296cb

1 file changed

Lines changed: 59 additions & 113 deletions

File tree

README.md

Lines changed: 59 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Svensk författningssamling (SFS) till Markdown-filer
22

3+
> [!NOTE]
4+
> **Detta är en del av [SE-Lex](https://github.com/se-lex)**, läs mer om [projektet här](https://github.com/se-lex).
5+
>
6+
> SFS-författningar exporteras till [https://github.com/se-lex/sfs](https://github.com/se-lex/sfs) och publiceras också som HTML på [https://selex.se](https://selex.se) med stöd för EU:s juridiska identifieringsstandard (ELI).
7+
38
Detta repository innehåller Python-script för att konvertera SFS-författningar (Svensk författningssamling) från JSON-format till välformaterade Markdown-filer och andra format.
49

510
## Installation
@@ -16,7 +21,31 @@ pip install -r requirements.txt
1621
Konvertera JSON-filer med författningar till Markdown:
1722

1823
```bash
19-
python sfs_processor.py --input sfs_json --output SFS --formats md
24+
python sfs_processor.py --input sfs_json --output SFS --formats md-markers
25+
```
26+
27+
## Output-format
28+
29+
Verktyget kan generera författningar i flera olika format, beroende på användningsområde:
30+
31+
### Markdown-format
32+
33+
- **`md-markers`** (standard): Markdown med semantiska `<section>`-taggar och selex-attribut för juridisk status och temporal hantering
34+
- **`md`**: Rena Markdown-filer med normaliserade rubriknivåer, lämpliga för visning och läsning
35+
36+
### Git-format
37+
38+
- **`git`**: Exporterar författningar som Git-commits med historiska datum, vilket skapar en versionshistorik av lagstiftningen
39+
40+
### HTML-format
41+
42+
- **`html`**: Genererar HTML-filer i ELI-struktur (`/eli/sfs/{år}/{nummer}/index.html`) för webbpublicering
43+
- **`htmldiff`**: Som HTML men inkluderar även separata versioner för varje ändringsförfattning
44+
45+
Exempel på att kombinera flera format:
46+
47+
```bash
48+
python sfs_processor.py --input sfs_json --output output --formats md,html,git
2049
```
2150

2251
## Hämta källdata
@@ -44,32 +73,14 @@ Nedladdade filer sparas som standard i katalogen `sfs_docs`. Du kan ange annan k
4473
Konvertera alla JSON-filer i en katalog till Markdown:
4574

4675
```bash
47-
python sfs_processor.py --input sfs_json --output SFS --formats md
76+
python sfs_processor.py --input sfs_json --output SFS --formats md-markers
4877
```
4978

5079
### Struktur av genererade Markdown-filer
5180

5281
Beroende på vilket format du väljer får du olika strukturer:
5382

54-
#### Format: `md` (standard)
55-
56-
Rena Markdown-filer med normaliserade rubriknivåer:
57-
58-
```markdown
59-
# Lag (2024:123) om exempel
60-
61-
## Inledande bestämmelser
62-
63-
### 1 §
64-
65-
Innehållet i paragrafen...
66-
67-
### 2 §
68-
69-
Mer innehåll...
70-
```
71-
72-
#### Format: `md-markers`
83+
#### Format: `md-markers` (standard)
7384

7485
Markdown-filer med bevarad semantisk struktur genom `<section>`-taggar:
7586

@@ -88,6 +99,26 @@ Innehållet i paragrafen...
8899

89100
Denna semantiska struktur bevarar dokumentets logiska uppbyggnad och möjliggör automatisk bearbetning, analys, och navigation av författningstexten. Section-taggarna kan även användas för CSS-styling och JavaScript-funktionalitet.
90101

102+
#### Format: `md`
103+
104+
Rena Markdown-filer med normaliserade rubriknivåer, utan section-taggar:
105+
106+
```markdown
107+
# Lag (2024:123) om exempel
108+
109+
## Inledande bestämmelser
110+
111+
### 1 §
112+
113+
Innehållet i paragrafen...
114+
115+
### 2 §
116+
117+
Mer innehåll...
118+
```
119+
120+
Detta format är lämpligt för enkel visning och läsning, utan metadata eller temporal hantering.
121+
91122
### Selex-attribut för juridisk status och datum
92123

93124
Förutom CSS-klasser använder `<section>`-taggarna även `selex:`-attribut för att hantera juridisk status och datum. Dessa attribut möjliggör filtrering av innehåll baserat på ikraftträdande- och upphörandedatum:
@@ -125,33 +156,11 @@ Dessa attribut används automatiskt av systemets datumfiltrering för att skapa
125156

126157
Systemet hanterar temporal processing (tidsbaserad filtrering) olika beroende på vilket format som används:
127158

128-
- **`md` format**: Tillämpar temporal processing med dagens datum som målpunkt. Selex-taggar tas bort efter filtrering.
129-
- **`md-markers` format**: Bevarar selex-taggar och hoppar över temporal processing. Detta gör att alla temporal attribut behålls för senare bearbetning.
130-
- **`git` format**: Hoppar över temporal processing i huvudbearbetningen. Temporal hantering sköts separat i git-arbetsflödet för att skapa historiska commits.
131-
- **`html` format**: Tillämpar temporal processing med dagens datum innan HTML-generering.
132-
- **`htmldiff` format**: Tillämpar temporal processing med dagens datum innan HTML-generering.
133-
134-
### Konvertering till HTML med ELI-struktur
135-
136-
```bash
137-
python sfs_processor.py --input sfs_json --output output --formats html
138-
```
139-
140-
Detta skapar HTML-filer i ELI-strukturen: `/eli/sfs/{artal}/{lopnummer}/index.html`
141-
142-
### HTML med ändringsversioner
143-
144-
För att inkludera separata versioner för varje ändringsförfattning:
145-
146-
```bash
147-
python sfs_processor.py --input sfs_json --output output --formats htmldiff
148-
```
149-
150-
### Kombinera flera format
151-
152-
```bash
153-
python sfs_processor.py --input sfs_json --output output --formats md,html,htmldiff
154-
```
159+
- **`md`**: Tillämpar temporal processing med dagens datum som målpunkt. Selex-taggar tas bort efter filtrering.
160+
- **`md-markers`**: Bevarar selex-taggar och hoppar över temporal processing. Detta gör att alla temporal attribut behålls för senare bearbetning.
161+
- **`git`**: Hoppar över temporal processing i huvudbearbetningen. Temporal hantering sköts separat i git-arbetsflödet för att skapa historiska commits.
162+
- **`html`**: Tillämpar temporal processing med dagens datum innan HTML-generering.
163+
- **`htmldiff`**: Tillämpar temporal processing med dagens datum innan HTML-generering.
155164

156165
## Kommandoradsalternativ
157166

@@ -163,7 +172,7 @@ python sfs_processor.py [--input INPUT] [--output OUTPUT] [--formats FORMATS] [-
163172

164173
- `--input`: Input-katalog med JSON-filer (default: "sfs_json")
165174
- `--output`: Output-katalog för konverterade filer (default: "SFS")
166-
- `--formats`: Utdataformat att generera, kommaseparerat. Stödjer: md, md-markers, git, html, htmldiff (default: "md")
175+
- `--formats`: Utdataformat att generera, kommaseparerat. Stödjer: md-markers, md, git, html, htmldiff (default: "md-markers")
167176
- `md`: Generera rena markdown-filer utan section-taggar
168177
- `md-markers`: Generera markdown-filer med section-taggar bevarade
169178
- `git`: Aktivera Git-commits med historiska datum
@@ -173,73 +182,10 @@ python sfs_processor.py [--input INPUT] [--output OUTPUT] [--formats FORMATS] [-
173182
- `--no-year-folder`: Skapa inte årbaserade undermappar för dokument
174183
- `--verbose`: Visa detaljerad information om bearbetningen
175184

176-
## Tester
177-
178-
Projektet använder pytest för testning med omfattande testsvit som täcker funktionalitet och edge cases.
179-
180-
### Installation av testberoenden
181-
182-
```bash
183-
pip install pytest pytest-cov pytest-mock requests-mock
184-
```
185-
186-
### Köra alla tester
187-
188-
```bash
189-
pytest
190-
```
191-
192-
### Köra tester med täckningsrapport
193-
194-
```bash
195-
pytest --cov=. --cov-report=html
196-
```
197-
198-
### Köra specifika testkategorier
199-
200-
```bash
201-
# Endast unit-tester (snabba, ingen I/O)
202-
pytest -m unit
203-
204-
# Endast integrationstester
205-
pytest -m integration
206-
207-
# Endast API-tester (mockade API-anrop)
208-
pytest -m api
209-
210-
# Hoppa över långsamma tester
211-
pytest -m "not slow"
212-
```
213-
214-
### Köra enskilda testfiler
215-
216-
```bash
217-
pytest test/test_linking.py -v
218-
pytest test/test_title_temporal.py -v
219-
pytest test/test_predocs.py -v
220-
```
221-
222-
### CI/CD
223-
224-
Testerna körs automatiskt vid varje push och pull request via GitHub Actions. Täckningsrapporter genereras och arkiveras som artifacts.
225-
226185
## Bidra
227186

228187
Vi välkomnar bidrag från communityn! 🙌
229188

230189
- Läs [CONTRIBUTING.md](CONTRIBUTING.md) för riktlinjer om hur du bidrar
231190
- Se [DEVELOPMENT.md](DEVELOPMENT.md) för utvecklardokumentation och arkitekturöversikt
232-
- Öppna ett [GitHub Issue](https://github.com/se-lex/sfs-processor/issues) för att rapportera buggar eller föreslå nya funktioner
233-
234-
## Community och support
235-
236-
- **Rapportera buggar**: Öppna ett issue på GitHub med detaljerad beskrivning
237-
- **Föreslå funktioner**: Diskutera nya idéer via GitHub Issues
238-
- **Frågor**: Använd GitHub Issues med etiketten "question"
239-
240-
Se [CONTRIBUTING.md](CONTRIBUTING.md) för mer information om hur du kan hjälpa till.
241-
242-
## Licens
243-
244-
Projektet är licensierat under **Business Source License 1.1 (BSL 1.1)**. Se [LICENSE](LICENSE)-filen för fullständiga villkor.
245-
191+
- Kontakt: Martin Rimskog via [e-post](mailto:martin@marca.se) eller [LinkedIn](https://www.linkedin.com/in/martinrimskog/)

0 commit comments

Comments
 (0)