@mytechtoday/augment-extensions 2.2.0 → 2.3.0
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.
- package/README.md +121 -11
- package/augment-extensions/coding-standards/perl/README.md +173 -0
- package/cli/dist/commands/generate-shot-list/formatter/json-formatter.d.ts +1 -0
- package/cli/dist/commands/generate-shot-list/formatter/json-formatter.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/formatter/json-formatter.js +6 -0
- package/cli/dist/commands/generate-shot-list/formatter/json-formatter.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/formatter/jsonl-formatter.d.ts +1 -0
- package/cli/dist/commands/generate-shot-list/formatter/jsonl-formatter.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/formatter/jsonl-formatter.js +6 -0
- package/cli/dist/commands/generate-shot-list/formatter/jsonl-formatter.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/formatter/markdown-formatter.d.ts +14 -0
- package/cli/dist/commands/generate-shot-list/formatter/markdown-formatter.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/formatter/markdown-formatter.js +46 -3
- package/cli/dist/commands/generate-shot-list/formatter/markdown-formatter.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/generator/context-builder.d.ts +29 -1
- package/cli/dist/commands/generate-shot-list/generator/context-builder.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/generator/context-builder.js +310 -27
- package/cli/dist/commands/generate-shot-list/generator/context-builder.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/generator/index.d.ts +18 -0
- package/cli/dist/commands/generate-shot-list/generator/index.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/generator/index.js +146 -19
- package/cli/dist/commands/generate-shot-list/generator/index.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/generator/metadata-extractor.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/generator/metadata-extractor.js +1 -0
- package/cli/dist/commands/generate-shot-list/generator/metadata-extractor.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/generator/types.d.ts +10 -3
- package/cli/dist/commands/generate-shot-list/generator/types.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/schema/shot-list.schema.json +341 -0
- package/cli/dist/commands/generate-shot-list/schema/validator.d.ts +55 -0
- package/cli/dist/commands/generate-shot-list/schema/validator.d.ts.map +1 -0
- package/cli/dist/commands/generate-shot-list/schema/validator.js +180 -0
- package/cli/dist/commands/generate-shot-list/schema/validator.js.map +1 -0
- package/cli/dist/commands/generate-shot-list.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list.js +35 -24
- package/cli/dist/commands/generate-shot-list.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**Reusable augmentation modules for Augment Code AI - Beyond the 49,400 character limit.**
|
|
4
4
|
|
|
5
|
-
[](https://github.com/mytech-today-now/augment-extensions)
|
|
6
6
|
[](./LICENSE)
|
|
7
7
|
[](https://www.npmjs.com/package/@mytechtoday/augment-extensions)
|
|
8
8
|
[](https://github.com/mytech-today-now/augment-extensions/actions/workflows/ci.yml)
|
|
@@ -14,17 +14,44 @@ Augment Extensions is a modular repository system that extends Augment Code AI's
|
|
|
14
14
|
|
|
15
15
|
Augment Code AI limits the `.augment/` folder to ~49,400 characters. This repository provides:
|
|
16
16
|
|
|
17
|
-
- **
|
|
17
|
+
- **2.3M+ characters** of comprehensive guidelines across 22+ modules
|
|
18
18
|
- **Coding standards** for 8 languages/frameworks (HTML, CSS, JS, TypeScript, Python, React, PHP)
|
|
19
19
|
- **Domain-specific rules** (WordPress, API design, security, databases, MCP)
|
|
20
|
+
- **Writing standards** (Screenplay with 17 cinematic styles, Shakespeare)
|
|
20
21
|
- **Workflow integrations** (OpenSpec, Beads)
|
|
21
22
|
- **Extensive examples** (Gutenberg blocks, REST API, WooCommerce, design patterns)
|
|
22
23
|
- **Versioned updates** that propagate to consuming projects
|
|
23
24
|
- **Project-agnostic modules** that work across different codebases
|
|
24
25
|
|
|
25
|
-
## ✨ What's New in
|
|
26
|
+
## ✨ What's New in v2.3.0
|
|
26
27
|
|
|
27
|
-
###
|
|
28
|
+
### Shot List Generator Refactor - Production Ready 🎬
|
|
29
|
+
|
|
30
|
+
**Major Refactor Complete (AUGX-SHOT-GEN-001):**
|
|
31
|
+
All 12 requirements implemented for production-ready shot list generation:
|
|
32
|
+
|
|
33
|
+
1. ✅ **Default Output Behavior** - Auto-generates `<input>-ai-shot-list.<ext>` when `--output` not provided
|
|
34
|
+
2. ✅ **Intelligent Shot Splitting** - Automatically splits shots exceeding max duration into sub-shots (3a, 3b, 3c)
|
|
35
|
+
3. ✅ **Duration Formatting** - Clean MM:SS format for all durations (no decimals)
|
|
36
|
+
4. ✅ **Terminal Feedback Severity** - Color-coded warnings (red errors, yellow warnings)
|
|
37
|
+
5. ✅ **Visual Style Property** - Reality/Animation/CGI/Hybrid classification per shot
|
|
38
|
+
6. ✅ **Simplified Character Count** - Clean `C: #### / 4000` format with color indicators
|
|
39
|
+
7. ✅ **No-Dialogue Shots** - Explicit "No dialogue in this shot" in descriptions
|
|
40
|
+
8. ✅ **Mandatory Dialogue Property** - MPAA-style screenplay format or "No dialogue in this shot"
|
|
41
|
+
9. ✅ **Character Blocking Continuity** - Tracks positions/wardrobe/appearance across shots
|
|
42
|
+
10. ✅ **Rich Character Descriptions** - Character Bible with complete wardrobe/appearance/props/emotion
|
|
43
|
+
11. ✅ **Rich Set Descriptions** - Set Bible with environment/lighting/atmosphere/weather/timeOfDay
|
|
44
|
+
12. ✅ **JSON/JSONL Format Corrections** - Valid JSON with all fields, JSONL one shot per line
|
|
45
|
+
|
|
46
|
+
**Key Features:**
|
|
47
|
+
- 🎭 **Character Bible System** - Maintains consistent character descriptions across all shots
|
|
48
|
+
- 🎬 **Set Bible System** - Maintains consistent set/location descriptions across all shots
|
|
49
|
+
- 📐 **Blocking Continuity** - Tracks character positions and spatial relationships
|
|
50
|
+
- 🎨 **Visual Style Detection** - Automatically determines Reality/Animation/CGI/Hybrid
|
|
51
|
+
- 📊 **Production-Ready Output** - Suitable for downstream video generation AI
|
|
52
|
+
- ✅ **Validated JSON/JSONL** - Properly structured output for automated processing
|
|
53
|
+
|
|
54
|
+
### Previous Updates (v1.6.1)
|
|
28
55
|
|
|
29
56
|
**Shakespeare Module Enhancements:**
|
|
30
57
|
- ✅ **Comedy Scene Examples** - Added 2 comprehensive scene examples:
|
|
@@ -459,7 +486,7 @@ See [.augment/mcp/README.md](./.augment/mcp/README.md) for detailed MCP integrat
|
|
|
459
486
|
|
|
460
487
|
```
|
|
461
488
|
augment-extensions/
|
|
462
|
-
├── augment-extensions/ # Extension modules (
|
|
489
|
+
├── augment-extensions/ # Extension modules (2.3M+ characters)
|
|
463
490
|
│ ├── coding-standards/ # Language/framework standards (8 modules)
|
|
464
491
|
│ │ ├── html/ # HTML standards (32K chars)
|
|
465
492
|
│ │ ├── css/ # CSS standards (30K chars)
|
|
@@ -478,6 +505,21 @@ augment-extensions/
|
|
|
478
505
|
│ │ ├── security/ # OWASP security guidelines (38K chars)
|
|
479
506
|
│ │ ├── wordpress/ # WordPress development (general)
|
|
480
507
|
│ │ └── wordpress-plugin/ # WordPress plugin development (344K chars)
|
|
508
|
+
│ ├── writing-standards/ # Writing standards (2 modules, 583K chars) ✨ NEW
|
|
509
|
+
│ │ ├── screenplay/ # Screenplay writing (163.5K chars)
|
|
510
|
+
│ │ │ ├── cinematic-styles/ # 17 cinematic style guides (257K chars)
|
|
511
|
+
│ │ │ │ ├── directors/ # 11 auteur directors (Nolan, Tarantino, Lynch, etc.)
|
|
512
|
+
│ │ │ │ ├── franchises/ # Star Wars, MCU/Avengers
|
|
513
|
+
│ │ │ │ ├── films/ # Blue Ruin (indie filmmaking)
|
|
514
|
+
│ │ │ │ ├── comedy-formats/ # Monty Python, Saturday Night Live
|
|
515
|
+
│ │ │ │ └── narrative-theory/ # Joseph Campbell (Hero's Journey)
|
|
516
|
+
│ │ │ ├── genres/ # Genre conventions
|
|
517
|
+
│ │ │ ├── styles/ # Narrative styles (linear, non-linear, etc.)
|
|
518
|
+
│ │ │ └── themes/ # Thematic integration
|
|
519
|
+
│ │ └── literature/ # Literature writing standards
|
|
520
|
+
│ │ └── shakespeare/ # Shakespeare writing (419.7K chars)
|
|
521
|
+
│ │ ├── rules/ # Poetry, drama, language, character & themes
|
|
522
|
+
│ │ └── examples/ # Annotated sonnets, scene examples, exercises
|
|
481
523
|
│ ├── workflows/ # Workflow integrations (2 modules)
|
|
482
524
|
│ │ ├── openspec/ # Spec-driven development (32K chars)
|
|
483
525
|
│ │ └── beads/ # Git-backed issue tracking (39K chars)
|
|
@@ -752,12 +794,41 @@ augx use coding-standards/typescript --version 1.0.0 --pin
|
|
|
752
794
|
- **[WooCommerce Extension](./augment-extensions/examples/woocommerce-extension/)** (v1.0.0, ~24K chars)
|
|
753
795
|
- Product customizer with custom fields, checkout customization
|
|
754
796
|
|
|
797
|
+
### Writing Standards (2 modules, ~583K chars)
|
|
798
|
+
|
|
799
|
+
- **[Screenplay Writing Standards](./augment-extensions/writing-standards/screenplay/)** (v1.0.0, ~163.5K chars)
|
|
800
|
+
- **Industry-Standard Formatting** - AMPAS Nicholl Fellowship formatting standards
|
|
801
|
+
- **Narrative Frameworks** - Syd Field, Blake Snyder, Joseph Campbell structures
|
|
802
|
+
- **8 Screenplay Categories** - Hollywood, indie, TV, web, news, commercials, streaming, live TV
|
|
803
|
+
- **Character Development** - Programmatic character arcs, traits, motivations
|
|
804
|
+
- **Dialogue Mastery** - Natural speech, subtext, character voice
|
|
805
|
+
- **Screen Continuity** - Visual consistency rules (180-degree rule, match cuts)
|
|
806
|
+
- **Fountain Format** - Industry-standard plain-text screenplay markup
|
|
807
|
+
- **Cinematic Styles** (257K chars) - 17 comprehensive style guides:
|
|
808
|
+
- **11 Auteur Directors** - Christopher Nolan, Quentin Tarantino, Coen Brothers, David Lynch, Denis Villeneuve, Martin Scorsese, Steven Spielberg, Stanley Kubrick, Wes Anderson, Francis Ford Coppola, George Lucas
|
|
809
|
+
- **2 Franchises** - Star Wars, MCU/Avengers
|
|
810
|
+
- **1 Film** - Blue Ruin (indie filmmaking)
|
|
811
|
+
- **2 Comedy Formats** - Monty Python, Saturday Night Live
|
|
812
|
+
- **1 Narrative Theory** - Joseph Campbell (Hero's Journey)
|
|
813
|
+
- **VS Code Integration** - Better Fountain extension support
|
|
814
|
+
- **Export Tools** - Final Draft (.fdx), PDF, HTML export
|
|
815
|
+
|
|
816
|
+
- **[Shakespeare Writing Standards](./augment-extensions/writing-standards/literature/shakespeare/)** (v1.0.0, ~419.7K chars)
|
|
817
|
+
- **Poetry** - Sonnets, narrative poetry, verse forms, iambic pentameter
|
|
818
|
+
- **Drama** - Tragedy, comedy, history plays, scene construction
|
|
819
|
+
- **Language** - Elizabethan English, rhetoric & wordplay, vocabulary guide
|
|
820
|
+
- **Character & Themes** - Character development, thematic elements
|
|
821
|
+
- **Annotated Examples** - Sonnets, scene examples, exercises
|
|
822
|
+
- **Comedy Scene Examples** - Much Ado About Nothing Act 2 Scene 3 (497 lines), Twelfth Night Act 2 Scene 5 (654 lines)
|
|
823
|
+
- **Comprehensive Coverage** - 33 files, 10,000+ lines, complete guide to Shakespearean writing
|
|
824
|
+
|
|
755
825
|
### Statistics
|
|
756
826
|
|
|
757
|
-
- **Total Modules**:
|
|
758
|
-
- **Total Character Count**: ~
|
|
827
|
+
- **Total Modules**: 22 (8 coding standards, 6 domain rules, 2 workflows, 4 examples, 2 writing standards)
|
|
828
|
+
- **Total Character Count**: ~2,357,692 (2.3M+ characters)
|
|
759
829
|
- **Languages Covered**: HTML, CSS, JavaScript, TypeScript, Python, React, PHP
|
|
760
830
|
- **Domains Covered**: APIs, Databases, MCP, Security, WordPress
|
|
831
|
+
- **Writing Formats**: Screenplay (Fountain), Shakespearean Literature
|
|
761
832
|
|
|
762
833
|
See [MODULES.md](./MODULES.md) for detailed module documentation.
|
|
763
834
|
|
|
@@ -930,6 +1001,43 @@ augx link domain-rules/security
|
|
|
930
1001
|
augx link workflows/openspec
|
|
931
1002
|
```
|
|
932
1003
|
|
|
1004
|
+
### Example 6: Screenplay Writing with Cinematic Styles
|
|
1005
|
+
|
|
1006
|
+
```bash
|
|
1007
|
+
# Link screenplay writing standards
|
|
1008
|
+
augx link writing-standards/screenplay
|
|
1009
|
+
|
|
1010
|
+
# Generate shot list with cinematic style
|
|
1011
|
+
augx generate-shot-list --path my-screenplay.fountain --style christopher-nolan
|
|
1012
|
+
|
|
1013
|
+
# Generate shot list with multiple styles (priority-based merging)
|
|
1014
|
+
augx generate-shot-list --path my-screenplay.fountain \
|
|
1015
|
+
--style christopher-nolan \
|
|
1016
|
+
--style denis-villeneuve
|
|
1017
|
+
|
|
1018
|
+
# View available cinematic styles
|
|
1019
|
+
augx show writing-standards/screenplay
|
|
1020
|
+
|
|
1021
|
+
# Search for specific director styles
|
|
1022
|
+
augx search "quentin tarantino"
|
|
1023
|
+
augx search "wes anderson"
|
|
1024
|
+
```
|
|
1025
|
+
|
|
1026
|
+
### Example 7: Shakespearean Writing
|
|
1027
|
+
|
|
1028
|
+
```bash
|
|
1029
|
+
# Link Shakespeare writing standards
|
|
1030
|
+
augx link writing-standards/literature/shakespeare
|
|
1031
|
+
|
|
1032
|
+
# View Shakespeare module content
|
|
1033
|
+
augx show shakespeare
|
|
1034
|
+
|
|
1035
|
+
# Search for specific topics
|
|
1036
|
+
augx search "iambic pentameter"
|
|
1037
|
+
augx search "comedy techniques"
|
|
1038
|
+
augx search "sonnets"
|
|
1039
|
+
```
|
|
1040
|
+
|
|
933
1041
|
## 🔄 Update Propagation
|
|
934
1042
|
|
|
935
1043
|
When module maintainers release updates:
|
|
@@ -1085,11 +1193,12 @@ augx search "REST API"
|
|
|
1085
1193
|
|
|
1086
1194
|
### Comprehensive Coverage
|
|
1087
1195
|
|
|
1088
|
-
- **
|
|
1196
|
+
- **2.3M+ characters** of guidelines across 22+ modules
|
|
1089
1197
|
- **8 programming languages/frameworks** - HTML, CSS, JavaScript, TypeScript, Python, React, PHP
|
|
1090
1198
|
- **6 domain-specific areas** - APIs, Databases, MCP, Security, WordPress
|
|
1091
1199
|
- **2 workflow systems** - OpenSpec (spec-driven development), Beads (issue tracking)
|
|
1092
1200
|
- **4 example modules** - Design patterns, Gutenberg blocks, REST API, WooCommerce
|
|
1201
|
+
- **2 writing standards** - Screenplay (with 17 cinematic styles), Shakespeare
|
|
1093
1202
|
|
|
1094
1203
|
### Model Context Protocol (MCP) - 219K chars ✨ NEW
|
|
1095
1204
|
|
|
@@ -1171,8 +1280,9 @@ MIT License - See [LICENSE](./LICENSE) for details.
|
|
|
1171
1280
|
| **Domain Rules** | 6 | ~1,085,000 | APIs, Databases, MCP, Security, WordPress |
|
|
1172
1281
|
| **Workflows** | 2 | ~71,000 | OpenSpec, Beads |
|
|
1173
1282
|
| **Examples** | 4 | ~122,000 | Design Patterns, Gutenberg, REST API, WooCommerce |
|
|
1283
|
+
| **Writing Standards** | 2 | ~583,000 | Screenplay (Cinematic Styles), Shakespeare |
|
|
1174
1284
|
| **Collections** | 1 | ~164,000 | HTML/CSS/JS Bundle |
|
|
1175
|
-
| **TOTAL** | **
|
|
1285
|
+
| **TOTAL** | **22** | **~2,357,000** | **2.3M+ characters** |
|
|
1176
1286
|
|
|
1177
1287
|
## 🔗 Links
|
|
1178
1288
|
|
|
@@ -1183,7 +1293,7 @@ MIT License - See [LICENSE](./LICENSE) for details.
|
|
|
1183
1293
|
|
|
1184
1294
|
---
|
|
1185
1295
|
|
|
1186
|
-
**Status**: Active Development | **Version**:
|
|
1296
|
+
**Status**: Active Development | **Version**: 2.3.0 | **Maintainer**: @mytech-today-now
|
|
1187
1297
|
|
|
1188
|
-
**Latest Release**:
|
|
1298
|
+
**Latest Release**: Shot List Generator Refactor Complete (AUGX-SHOT-GEN-001) - Production-ready shot list generation with Character/Set Bibles, intelligent shot splitting, blocking continuity, visual style detection, and validated JSON/JSONL output for downstream video generation AI.
|
|
1189
1299
|
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
# Perl Coding Standard
|
|
2
|
+
|
|
3
|
+
This document defines the coding standards for all Perl code in projects using augment-extensions. The goal is to ensure consistency, readability, maintainability, security, and performance across Perl 5.20+ codebases (preferably 5.36+ for modern features).
|
|
4
|
+
|
|
5
|
+
These guidelines build on core Perl community recommendations:
|
|
6
|
+
- `perlstyle` (core Perl style guide)
|
|
7
|
+
- Perl Best Practices (Damian Conway, O'Reilly 2005 — still highly relevant)
|
|
8
|
+
- Modern Perl (4th edition practices)
|
|
9
|
+
- Perltidy defaults with overrides for team consistency
|
|
10
|
+
|
|
11
|
+
All Perl code **must** pass strict and warnings, and should use modern features where they improve clarity and safety.
|
|
12
|
+
|
|
13
|
+
## 1. File Naming and Organization
|
|
14
|
+
|
|
15
|
+
- Use lowercase_with_underscores.pl for scripts.
|
|
16
|
+
- Use CamelCase.pm for modules / classes (but prefer lowercase_with_underscores.pm for utility modules when not object-oriented).
|
|
17
|
+
- Main application entry point: `app.pl` or `scriptname.pl`.
|
|
18
|
+
- Tests: `t/001_basic.t`, `t/foo-bar.t` (use descriptive names).
|
|
19
|
+
- Configuration files: `.pl`, `.conf`, or `.ini` (avoid `.pm` unless it's a config module).
|
|
20
|
+
- Organize large projects with `lib/`, `bin/`, `t/`, `script/`, `share/`.
|
|
21
|
+
|
|
22
|
+
**Must** place `use strict;` and `use warnings;` (or `use v5.36;` which implies them) at the top of every file.
|
|
23
|
+
|
|
24
|
+
```perl
|
|
25
|
+
use v5.36; # Enables strict, warnings, signatures, etc.
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## 2. Indentation and Whitespace
|
|
29
|
+
|
|
30
|
+
Use 4 spaces for indentation (no tabs).
|
|
31
|
+
Use perltidy with project .perltidyrc for automatic formatting:
|
|
32
|
+
-i=4 -et=4 -l=100 -ce -bar -bbb -bbc -bbs
|
|
33
|
+
|
|
34
|
+
Align fat commas (=>) where reasonable.
|
|
35
|
+
|
|
36
|
+
Keep lines ≤ 100 characters (soft limit 120).
|
|
37
|
+
One true brace style (K&R / OTBS): opening brace on same line as control structure.
|
|
38
|
+
|
|
39
|
+
Blank lines:
|
|
40
|
+
1 between logical blocks inside subroutines.
|
|
41
|
+
2 between subroutines.
|
|
42
|
+
|
|
43
|
+
Avoid trailing whitespace.
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
Example:
|
|
47
|
+
```perl
|
|
48
|
+
sub process_data ($data) {
|
|
49
|
+
my $result = {};
|
|
50
|
+
|
|
51
|
+
if ($data->{enabled}) {
|
|
52
|
+
$result->{status} = 'active';
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
$result->{status} = 'inactive';
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return $result;
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## 3. Naming Conventions
|
|
63
|
+
|
|
64
|
+
Variables: $snake_case (lowercase with underscores).
|
|
65
|
+
Constants: UPPER_CASE.
|
|
66
|
+
Subroutines: snake_case().
|
|
67
|
+
Packages/Modules: CamelCase for OO / distributions, lowercase::with::namespaces otherwise.
|
|
68
|
+
Filehandles: $fh or $IN_FH, $OUT_FH.
|
|
69
|
+
Package variables: avoid globals; prefer our or state when needed.
|
|
70
|
+
Avoid single-letter variables except for obvious loop counters ($i, $j) or throwaways ($_).
|
|
71
|
+
|
|
72
|
+
Prefer lexical variables (my, our, state) over local or package globals.
|
|
73
|
+
Avoid $a, $b outside sort blocks.
|
|
74
|
+
|
|
75
|
+
## 4. Comments and Documentation
|
|
76
|
+
|
|
77
|
+
Use POD for module/user documentation.
|
|
78
|
+
Inline comments for non-obvious logic only.
|
|
79
|
+
Use # for comments, aligned when possible.
|
|
80
|
+
Document all subs with purpose, params, returns using simple POD or plain comments.
|
|
81
|
+
For complex regexes, use /xms and comment each line.
|
|
82
|
+
|
|
83
|
+
Example:
|
|
84
|
+
```perl
|
|
85
|
+
|
|
86
|
+
# Parse ISO date with named captures
|
|
87
|
+
if ($input =~ m{
|
|
88
|
+
^ (?<year> \d{4} ) -
|
|
89
|
+
(?<month> \d{2} ) -
|
|
90
|
+
(?<day> \d{2} ) $
|
|
91
|
+
}xms) {
|
|
92
|
+
# ...
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## 5. Language Features and Best Practices
|
|
97
|
+
|
|
98
|
+
Alwaysuse v5.36; (or at minimum use 5.20;) for signatures, postderef, etc.
|
|
99
|
+
Use subroutine signatures (sub foo ($bar, $baz) { ... }).
|
|
100
|
+
Prefer say over print when no newline is unwanted.
|
|
101
|
+
Use // (defined-or) and //= over || for defaults unless undef is meaningful.
|
|
102
|
+
List assignment and slices for clarity:
|
|
103
|
+
|
|
104
|
+
```perl
|
|
105
|
+
my ($host, $port) = @config{qw(host port)};
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Use Carp instead of die in libraries (croak, confess).
|
|
109
|
+
Prefer exceptions over return undef for error handling.
|
|
110
|
+
Use Try::Tiny or core try/catch (v5.36+) for exception handling.
|
|
111
|
+
|
|
112
|
+
```perl
|
|
113
|
+
use Try::Tiny;
|
|
114
|
+
|
|
115
|
+
try {
|
|
116
|
+
dangerous_operation();
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
croak "Failed: $_";
|
|
120
|
+
};
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## 6. Control Structures
|
|
124
|
+
|
|
125
|
+
Prefer postfix conditionals for simple guards:
|
|
126
|
+
|
|
127
|
+
```perl
|
|
128
|
+
return if !$condition;
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Use for instead of foreach (they are synonyms, but for is idiomatic).
|
|
132
|
+
Avoid C-style for (;;) unless performance-critical.
|
|
133
|
+
Use given/when sparingly (deprecated in future Perl); prefer if/elsif/else.
|
|
134
|
+
|
|
135
|
+
## 7. Regular Expressions
|
|
136
|
+
|
|
137
|
+
Always use /xms flags for complex regexes.
|
|
138
|
+
Use named captures ((?<name>...)) over numbered.
|
|
139
|
+
Prefer qr// for building regexes.
|
|
140
|
+
Quote regex metacharacters when interpolating user input (quotemeta).
|
|
141
|
+
|
|
142
|
+
## 8. Error Handling and Security
|
|
143
|
+
|
|
144
|
+
Check return values of system calls (open, sysread, chdir, etc.).
|
|
145
|
+
Use IPC::System::Simple or capture output safely.
|
|
146
|
+
Taint mode (-T) for CGI / untrusted input scripts.
|
|
147
|
+
Use Hash::Util to lock hashes where appropriate.
|
|
148
|
+
Avoid system(@args) with interpolation; prefer list form.
|
|
149
|
+
|
|
150
|
+
## 9. Testing
|
|
151
|
+
|
|
152
|
+
Use Test2::V0 or Test::More + Test2::Suite.
|
|
153
|
+
Write tests first when feasible (TDD encouraged).
|
|
154
|
+
Aim for >80% coverage on business logic.
|
|
155
|
+
Use done_testing() instead of plan count.
|
|
156
|
+
|
|
157
|
+
## 10. Performance and Modernization
|
|
158
|
+
|
|
159
|
+
Profile before optimizing (Devel::NYTProf).
|
|
160
|
+
Prefer arrayrefs over arrays for large data.
|
|
161
|
+
Use Moo / Moose / Mojo::Base for OO (project choice).
|
|
162
|
+
Avoid source filters.
|
|
163
|
+
Use feature qw( postderef signatures ) if not using v5.36.
|
|
164
|
+
|
|
165
|
+
## Tooling
|
|
166
|
+
|
|
167
|
+
Run perltidy -b before commit.
|
|
168
|
+
Use perlcritic with severity 3+ (custom .perlcriticrc recommended).
|
|
169
|
+
Enforce via pre-commit hooks or CI.
|
|
170
|
+
|
|
171
|
+
Follow these guidelines unless a deliberate, documented exception exists. Consistency across the codebase takes precedence over individual preferences.
|
|
172
|
+
|
|
173
|
+
This new Perl standard mirrors the structure, prescriptive tone, code examples, and depth seen in the repo's other language standards (e.g., Python's emphasis on modern features/type hints, PHP's PSR adherence with extensions). Place it in `augment-extensions/coding-standards/perl/README.md` (or similar) to match the pattern. If you need adjustments or more sections, let me know!
|
|
@@ -16,6 +16,7 @@ export declare class JSONFormatter extends BaseFormatter {
|
|
|
16
16
|
format(shotList: ShotList, options?: FormatterOptions): string;
|
|
17
17
|
/**
|
|
18
18
|
* Format individual shot for JSON
|
|
19
|
+
* Requirement 12: Include all fields from Shot interface
|
|
19
20
|
*/
|
|
20
21
|
private formatShot;
|
|
21
22
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-formatter.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/json-formatter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAiB,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,qBAAa,aAAc,SAAQ,aAAa;IAC9C;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM;IAmC9D
|
|
1
|
+
{"version":3,"file":"json-formatter.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/json-formatter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAiB,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,qBAAa,aAAc,SAAQ,aAAa;IAC9C;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM;IAmC9D;;;OAGG;IACH,OAAO,CAAC,UAAU;IAmDlB;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,WAAW,IAAI,MAAM;CAGtB"}
|
|
@@ -49,6 +49,7 @@ class JSONFormatter extends base_formatter_1.BaseFormatter {
|
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
51
|
* Format individual shot for JSON
|
|
52
|
+
* Requirement 12: Include all fields from Shot interface
|
|
52
53
|
*/
|
|
53
54
|
formatShot(shot, options) {
|
|
54
55
|
const includeWarnings = options?.includeWarnings !== false;
|
|
@@ -72,14 +73,19 @@ class JSONFormatter extends base_formatter_1.BaseFormatter {
|
|
|
72
73
|
name: char.name,
|
|
73
74
|
position: char.position,
|
|
74
75
|
appearance: char.appearance,
|
|
76
|
+
wardrobe: char.wardrobe || null, // Requirement 10: Rich character descriptions
|
|
77
|
+
physicalAppearance: char.physicalAppearance || null, // Requirement 10: Rich character descriptions
|
|
75
78
|
emotion: char.emotion || null,
|
|
76
79
|
action: char.action || null
|
|
77
80
|
})),
|
|
78
81
|
description: shot.description,
|
|
82
|
+
dialogue: shot.dialogue, // Requirement 8 & 12: Mandatory dialogue property
|
|
79
83
|
metadata: {
|
|
80
84
|
shotType: shot.metadata.shotType,
|
|
81
85
|
cameraMovement: shot.metadata.cameraMovement,
|
|
82
86
|
framing: shot.metadata.framing,
|
|
87
|
+
visualStyle: shot.metadata.visualStyle, // Requirement 5 & 12: Visual style property
|
|
88
|
+
cinematicStyle: shot.metadata.cinematicStyle || null, // Requirement 12: Cinematic style
|
|
83
89
|
technicalNotes: shot.metadata.technicalNotes || []
|
|
84
90
|
},
|
|
85
91
|
duration: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-formatter.js","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/json-formatter.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,qDAAiD;AAIjD;;GAEG;AACH,MAAa,aAAc,SAAQ,8BAAa;IAC9C;;OAEG;IACH,MAAM,CAAC,QAAkB,EAAE,OAA0B;QACnD,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,KAAK,KAAK,CAAC,CAAC,kBAAkB;QACtE,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,KAAK,KAAK,CAAC,CAAC,kBAAkB;QAE9E,iCAAiC;QACjC,MAAM,MAAM,GAAG;YACb,QAAQ,EAAE;gBACR,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,IAAI;gBAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,IAAI;gBAC/B,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE;gBACxD,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,YAAY;gBAC5C,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,aAAa;gBAC9C,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,aAAa;aAC/C;YACD,OAAO,EAAE;gBACP,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,aAAa,EAAE,QAAQ,CAAC,aAAa;gBACrC,sBAAsB,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC;gBACnE,eAAe,EAAE,QAAQ,CAAC,eAAe;gBACzC,iBAAiB,EAAE,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;gBAClE,iBAAiB,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;gBACrD,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;aAC9C;YACD,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACvE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SAClE,CAAC;QAEF,oBAAoB;QACpB,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"json-formatter.js","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/json-formatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ export declare class JSONLFormatter extends BaseFormatter {
|
|
|
19
19
|
format(shotList: ShotList, options?: FormatterOptions): string;
|
|
20
20
|
/**
|
|
21
21
|
* Format individual shot for JSONL
|
|
22
|
+
* Requirement 12: Include all fields from Shot interface
|
|
22
23
|
*/
|
|
23
24
|
private formatShot;
|
|
24
25
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonl-formatter.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/jsonl-formatter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAiB,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,aAAa;IAC/C;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM;IAY9D
|
|
1
|
+
{"version":3,"file":"jsonl-formatter.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/jsonl-formatter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAiB,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,aAAa;IAC/C;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM;IAY9D;;;OAGG;IACH,OAAO,CAAC,UAAU;IAmDlB;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,WAAW,IAAI,MAAM;CAGtB"}
|
|
@@ -26,6 +26,7 @@ class JSONLFormatter extends base_formatter_1.BaseFormatter {
|
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
28
|
* Format individual shot for JSONL
|
|
29
|
+
* Requirement 12: Include all fields from Shot interface
|
|
29
30
|
*/
|
|
30
31
|
formatShot(shot, options) {
|
|
31
32
|
const includeWarnings = options?.includeWarnings !== false;
|
|
@@ -49,14 +50,19 @@ class JSONLFormatter extends base_formatter_1.BaseFormatter {
|
|
|
49
50
|
name: char.name,
|
|
50
51
|
position: char.position,
|
|
51
52
|
appearance: char.appearance,
|
|
53
|
+
wardrobe: char.wardrobe || null, // Requirement 10: Rich character descriptions
|
|
54
|
+
physicalAppearance: char.physicalAppearance || null, // Requirement 10: Rich character descriptions
|
|
52
55
|
emotion: char.emotion || null,
|
|
53
56
|
action: char.action || null
|
|
54
57
|
})),
|
|
55
58
|
description: shot.description,
|
|
59
|
+
dialogue: shot.dialogue, // Requirement 8 & 12: Mandatory dialogue property
|
|
56
60
|
metadata: {
|
|
57
61
|
shotType: shot.metadata.shotType,
|
|
58
62
|
cameraMovement: shot.metadata.cameraMovement,
|
|
59
63
|
framing: shot.metadata.framing,
|
|
64
|
+
visualStyle: shot.metadata.visualStyle, // Requirement 5 & 12: Visual style property
|
|
65
|
+
cinematicStyle: shot.metadata.cinematicStyle || null, // Requirement 12: Cinematic style
|
|
60
66
|
technicalNotes: shot.metadata.technicalNotes || []
|
|
61
67
|
},
|
|
62
68
|
duration: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonl-formatter.js","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/jsonl-formatter.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,qDAAiD;AAIjD;;;;;GAKG;AACH,MAAa,cAAe,SAAQ,8BAAa;IAC/C;;OAEG;IACH,MAAM,CAAC,QAAkB,EAAE,OAA0B;QACnD,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,KAAK,KAAK,CAAC,CAAC,kBAAkB;QAE9E,mCAAmC;QACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAC/C,CAAC;QAEF,oCAAoC;QACpC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"jsonl-formatter.js","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/jsonl-formatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,20 @@ export declare class MarkdownFormatter extends BaseFormatter {
|
|
|
22
22
|
* Get character count status indicator
|
|
23
23
|
*/
|
|
24
24
|
private getCharacterStatus;
|
|
25
|
+
/**
|
|
26
|
+
* Get character count color function (Requirement 6)
|
|
27
|
+
* - Green if under 4000 characters
|
|
28
|
+
* - Yellow if between 4000 and 5000 characters
|
|
29
|
+
* - Red if over 5000 characters
|
|
30
|
+
*/
|
|
31
|
+
private getCharacterCountColor;
|
|
32
|
+
/**
|
|
33
|
+
* Get duration severity color (Requirement 4)
|
|
34
|
+
* - Red for shots exceeding max duration (error)
|
|
35
|
+
* - Yellow for shots approaching max duration (warning)
|
|
36
|
+
* - Green for shots within acceptable range
|
|
37
|
+
*/
|
|
38
|
+
private getDurationSeverityColor;
|
|
25
39
|
/**
|
|
26
40
|
* Get file extension
|
|
27
41
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-formatter.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/markdown-formatter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"markdown-formatter.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/markdown-formatter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAQ,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,aAAa;IAClD;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM;IAyD9D;;OAEG;IACH,OAAO,CAAC,UAAU;IAiFlB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAUhC;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,WAAW,IAAI,MAAM;CAGtB"}
|
|
@@ -4,8 +4,12 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Generates Markdown output with structured shot list, headings, metadata tables
|
|
6
6
|
*/
|
|
7
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
|
+
};
|
|
7
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
11
|
exports.MarkdownFormatter = void 0;
|
|
12
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
13
|
const base_formatter_1 = require("./base-formatter");
|
|
10
14
|
/**
|
|
11
15
|
* Markdown formatter implementation
|
|
@@ -33,9 +37,9 @@ class MarkdownFormatter extends base_formatter_1.BaseFormatter {
|
|
|
33
37
|
parts.push('| Metric | Value |');
|
|
34
38
|
parts.push('|--------|-------|');
|
|
35
39
|
parts.push(`| Total Shots | ${shotList.totalShots} |`);
|
|
36
|
-
parts.push(`| Total Duration | ${this.
|
|
40
|
+
parts.push(`| Total Duration | ${this.formatTime(shotList.totalDuration)} |`); // Requirement 3: MM:SS format
|
|
37
41
|
parts.push(`| Total Characters | ${shotList.totalCharacters.toLocaleString()} |`);
|
|
38
|
-
parts.push(`| Average Shot Length | ${this.
|
|
42
|
+
parts.push(`| Average Shot Length | ${this.formatTime(Math.round(shotList.totalDuration / shotList.totalShots))} |`); // Requirement 3: MM:SS format
|
|
39
43
|
parts.push(`| Average Characters | ${this.getAverageCharCount(shotList)} |`);
|
|
40
44
|
parts.push(`| Max Characters | ${this.getMaxCharCount(shotList)} |`);
|
|
41
45
|
parts.push(`| Character Limit | ${maxChars} |`);
|
|
@@ -84,7 +88,12 @@ class MarkdownFormatter extends base_formatter_1.BaseFormatter {
|
|
|
84
88
|
parts.push(`| Shot Type | ${shot.metadata.shotType} |`);
|
|
85
89
|
parts.push(`| Camera Movement | ${shot.metadata.cameraMovement} |`);
|
|
86
90
|
parts.push(`| Framing | ${shot.metadata.framing} |`);
|
|
87
|
-
|
|
91
|
+
// Requirement 5: Visual Style Property
|
|
92
|
+
parts.push(`| Visual Style | ${shot.metadata.visualStyle || 'Reality'} |`);
|
|
93
|
+
// Requirement 6: Simplified character count display with chalk colors
|
|
94
|
+
const charCountColor = this.getCharacterCountColor(shot.characterCount, maxChars);
|
|
95
|
+
const coloredCharCount = charCountColor(shot.characterCount.toString());
|
|
96
|
+
parts.push(`| C: | ${coloredCharCount} / ${maxChars} |`);
|
|
88
97
|
if (shot.metadata.technicalNotes && shot.metadata.technicalNotes.length > 0) {
|
|
89
98
|
parts.push(`| Technical Notes | ${shot.metadata.technicalNotes.join(', ')} |`);
|
|
90
99
|
}
|
|
@@ -142,6 +151,40 @@ class MarkdownFormatter extends base_formatter_1.BaseFormatter {
|
|
|
142
151
|
return '🟡';
|
|
143
152
|
return '🟢';
|
|
144
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Get character count color function (Requirement 6)
|
|
156
|
+
* - Green if under 4000 characters
|
|
157
|
+
* - Yellow if between 4000 and 5000 characters
|
|
158
|
+
* - Red if over 5000 characters
|
|
159
|
+
*/
|
|
160
|
+
getCharacterCountColor(charCount, maxChars) {
|
|
161
|
+
if (charCount > 5000) {
|
|
162
|
+
return chalk_1.default.red;
|
|
163
|
+
}
|
|
164
|
+
else if (charCount >= 4000) {
|
|
165
|
+
return chalk_1.default.yellow;
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
return chalk_1.default.green;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Get duration severity color (Requirement 4)
|
|
173
|
+
* - Red for shots exceeding max duration (error)
|
|
174
|
+
* - Yellow for shots approaching max duration (warning)
|
|
175
|
+
* - Green for shots within acceptable range
|
|
176
|
+
*/
|
|
177
|
+
getDurationSeverityColor(duration, maxDuration) {
|
|
178
|
+
if (duration > maxDuration) {
|
|
179
|
+
return chalk_1.default.red; // Error: exceeds max
|
|
180
|
+
}
|
|
181
|
+
else if (duration >= maxDuration * 0.9) {
|
|
182
|
+
return chalk_1.default.yellow; // Warning: approaching limit
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
return chalk_1.default.green; // OK
|
|
186
|
+
}
|
|
187
|
+
}
|
|
145
188
|
/**
|
|
146
189
|
* Get file extension
|
|
147
190
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-formatter.js","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/markdown-formatter.ts"],"names":[],"mappings":";AAAA;;;;GAIG
|
|
1
|
+
{"version":3,"file":"markdown-formatter.js","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/markdown-formatter.ts"],"names":[],"mappings":"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"}
|