markup-plus 0.6.0__tar.gz

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.
Files changed (60) hide show
  1. markup_plus-0.6.0/.gitignore +121 -0
  2. markup_plus-0.6.0/CHANGELOG.md +249 -0
  3. markup_plus-0.6.0/CODE_OF_CONDUCT.md +187 -0
  4. markup_plus-0.6.0/CONTRIBUTING.md +1099 -0
  5. markup_plus-0.6.0/LICENSE +249 -0
  6. markup_plus-0.6.0/PKG-INFO +248 -0
  7. markup_plus-0.6.0/README.md +203 -0
  8. markup_plus-0.6.0/ROADMAP.md +201 -0
  9. markup_plus-0.6.0/SECURITY.md +329 -0
  10. markup_plus-0.6.0/docs/CUSTOM-CSS.md +825 -0
  11. markup_plus-0.6.0/docs/DEVELOPER.md +903 -0
  12. markup_plus-0.6.0/docs/FAQ.md +987 -0
  13. markup_plus-0.6.0/docs/GUIDE.md +1930 -0
  14. markup_plus-0.6.0/docs/INSTALL.md +759 -0
  15. markup_plus-0.6.0/docs/TUTORIAL.md +1465 -0
  16. markup_plus-0.6.0/examples/code.mup +111 -0
  17. markup_plus-0.6.0/examples/fulltest.mup +160 -0
  18. markup_plus-0.6.0/examples/gallery.mup +43 -0
  19. markup_plus-0.6.0/examples/hello.mup +243 -0
  20. markup_plus-0.6.0/examples/images.mup +38 -0
  21. markup_plus-0.6.0/examples/links.mup +45 -0
  22. markup_plus-0.6.0/examples/lists.mup +23 -0
  23. markup_plus-0.6.0/examples/phase3_final.mup +108 -0
  24. markup_plus-0.6.0/examples/phase3_final_en.mup +100 -0
  25. markup_plus-0.6.0/examples/phase4.mup +154 -0
  26. markup_plus-0.6.0/examples/phase5.mup +378 -0
  27. markup_plus-0.6.0/examples/quotes.mup +32 -0
  28. markup_plus-0.6.0/examples/showcase.mup +278 -0
  29. markup_plus-0.6.0/examples/tables.mup +62 -0
  30. markup_plus-0.6.0/examples/test_en.mup +289 -0
  31. markup_plus-0.6.0/examples/test_fa.mup +289 -0
  32. markup_plus-0.6.0/pyproject.toml +123 -0
  33. markup_plus-0.6.0/src/markup_plus/__init__.py +23 -0
  34. markup_plus-0.6.0/src/markup_plus/__main__.py +8 -0
  35. markup_plus-0.6.0/src/markup_plus/ast.py +260 -0
  36. markup_plus-0.6.0/src/markup_plus/cli/__init__.py +173 -0
  37. markup_plus-0.6.0/src/markup_plus/cli/__main__.py +8 -0
  38. markup_plus-0.6.0/src/markup_plus/cli/commands.py +323 -0
  39. markup_plus-0.6.0/src/markup_plus/cli/display.py +170 -0
  40. markup_plus-0.6.0/src/markup_plus/cli/errors.py +136 -0
  41. markup_plus-0.6.0/src/markup_plus/cli/theme.py +154 -0
  42. markup_plus-0.6.0/src/markup_plus/errors.py +40 -0
  43. markup_plus-0.6.0/src/markup_plus/lexer.py +35 -0
  44. markup_plus-0.6.0/src/markup_plus/parser.py +1068 -0
  45. markup_plus-0.6.0/src/markup_plus/renderer.py +1902 -0
  46. markup_plus-0.6.0/src/markup_plus/themes/__init__.py +79 -0
  47. markup_plus-0.6.0/src/markup_plus/themes/css/base.css +1043 -0
  48. markup_plus-0.6.0/tests/__init__.py +0 -0
  49. markup_plus-0.6.0/tests/fixtures/basic.mup +0 -0
  50. markup_plus-0.6.0/tests/fixtures/components.mup +0 -0
  51. markup_plus-0.6.0/tests/fixtures/variables.mup +0 -0
  52. markup_plus-0.6.0/tests/test_code.py +237 -0
  53. markup_plus-0.6.0/tests/test_images.py +184 -0
  54. markup_plus-0.6.0/tests/test_lists.py +77 -0
  55. markup_plus-0.6.0/tests/test_parser.py +49 -0
  56. markup_plus-0.6.0/tests/test_phase3.py +215 -0
  57. markup_plus-0.6.0/tests/test_phase4.py +295 -0
  58. markup_plus-0.6.0/tests/test_quotes.py +73 -0
  59. markup_plus-0.6.0/tests/test_renderer.py +60 -0
  60. markup_plus-0.6.0/tests/test_tables.py +140 -0
@@ -0,0 +1,121 @@
1
+ # ============================================================
2
+ # Python
3
+ # ============================================================
4
+ __pycache__/
5
+ *.py[cod]
6
+ *$py.class
7
+ *.so
8
+ .Python
9
+ build/
10
+ develop-eggs/
11
+ dist/
12
+ downloads/
13
+ eggs/
14
+ .eggs/
15
+ lib/
16
+ lib64/
17
+ parts/
18
+ sdist/
19
+ var/
20
+ wheels/
21
+ pip-wheel-metadata/
22
+ share/python-wheels/
23
+ *.egg-info/
24
+ .installed.cfg
25
+ *.egg
26
+ MANIFEST
27
+
28
+ # ============================================================
29
+ # Virtual Environments
30
+ # ============================================================
31
+ venv/
32
+ env/
33
+ ENV/
34
+ env.bak/
35
+ venv.bak/
36
+ .venv/
37
+ build_env/
38
+
39
+ # ============================================================
40
+ # PyInstaller
41
+ # ============================================================
42
+ *.manifest
43
+ *.spec
44
+ pyinstaller-hooks/
45
+
46
+ # ============================================================
47
+ # IDE and Editors
48
+ # ============================================================
49
+ .vscode/
50
+ .idea/
51
+ *.swp
52
+ *.swo
53
+ *~
54
+ .project
55
+ .pydevproject
56
+ .settings/
57
+
58
+ # ============================================================
59
+ # Operating System
60
+ # ============================================================
61
+ .DS_Store
62
+ .DS_Store?
63
+ ._*
64
+ .Spotlight-V100
65
+ .Trashes
66
+ ehthumbs.db
67
+ Thumbs.db
68
+ desktop.ini
69
+
70
+ # ============================================================
71
+ # Testing
72
+ # ============================================================
73
+ .pytest_cache/
74
+ .coverage
75
+ .coverage.*
76
+ htmlcov/
77
+ .tox/
78
+ .nox/
79
+ .hypothesis/
80
+
81
+ # ============================================================
82
+ # Generated HTML (from examples)
83
+ # ============================================================
84
+ examples/*.html
85
+
86
+ # ============================================================
87
+ # Installer (local only, not in Git)
88
+ # ============================================================
89
+ installer/
90
+ installer-output/
91
+ *.exe
92
+
93
+ # ============================================================
94
+ # Local development
95
+ # ============================================================
96
+ *.log
97
+ *.bak
98
+ *.tmp
99
+ *.temp
100
+ .cache/
101
+ tmp/
102
+
103
+ # ============================================================
104
+ # Distribution
105
+ # ============================================================
106
+ *.tar.gz
107
+ *.zip
108
+ *.whl
109
+ *.egg
110
+
111
+ # ============================================================
112
+ # Environment
113
+ # ============================================================
114
+ .env
115
+ .env.local
116
+ .env.*.local
117
+
118
+ # ============================================================
119
+ # Jupyter
120
+ # ============================================================
121
+ .ipynb_checkpoints/
@@ -0,0 +1,249 @@
1
+ Changelog
2
+ =========
3
+
4
+ All notable changes to Markup+ will be documented in this file.
5
+
6
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
7
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
8
+
9
+ ---
10
+
11
+ ## [Unreleased]
12
+
13
+ ### Planned
14
+ - `@run` directive for executing HTML/JS/CSS in-place
15
+ - Nested lists support
16
+ - Table cell spanning
17
+ - PDF export
18
+ - Live preview server
19
+ - Plugin system
20
+
21
+ ---
22
+
23
+ ## [0.6.0] - 2026-09-16
24
+
25
+ Release v0.6.0: Custom CSS, themes, standalone exe.
26
+
27
+ ### Added
28
+ - Custom CSS support via `--css` flag
29
+ - Ready-made themes (Ocean Blue, Midnight Dark, Forest Green, Rose Pink, Solarized Light, Nord, Paper)
30
+ - Standalone executable for Windows
31
+ - Theme switching at conversion time
32
+ - Complete CSS variables system for customization
33
+
34
+ ### Changed
35
+ - Improved rendering pipeline
36
+ - Enhanced theme system
37
+
38
+ ### Fixed
39
+ - Various rendering issues from previous versions
40
+
41
+ ---
42
+
43
+ ## [0.5.0] - 2026-09-16
44
+
45
+ Phase 4: Variables, if/elif/else, each loops, filters, and comments.
46
+
47
+ ### Added
48
+ - Variable system (`@let`) with strings, numbers, booleans, and arrays
49
+ - Conditional blocks (`@if`, `@elif`, `@else`, `@endif`)
50
+ - Loop blocks (`@each` with optional index)
51
+ - Filter system with `upper`, `lower`, `capitalize`, `title`, `reverse`, `length`
52
+ - Comment directive (`@#`)
53
+ - Variable substitution with `{name}` syntax
54
+ - Filter chaining with `|`
55
+
56
+ ### Changed
57
+ - Parser now tracks variable definitions
58
+ - Renderer evaluates conditions and loops
59
+
60
+ ---
61
+
62
+ ## [0.4.0] - 2026-09-16
63
+
64
+ Phase 3.4-3.5: Task lists, front matter, TOC, and footnotes.
65
+
66
+ ### Added
67
+ - Task lists with checkboxes (`- [x]` and `- [ ]`)
68
+ - Front matter support for metadata (between `---` lines)
69
+ - Table of contents directive (`@toc`) with custom title
70
+ - Footnotes support with `[^1]` syntax
71
+ - Front matter fields become variables
72
+
73
+ ### Changed
74
+ - Parser handles front matter as metadata
75
+ - TOC automatically generated from headings
76
+
77
+ ---
78
+
79
+ ## [0.3.3] - 2026-09-16
80
+
81
+ Phase 3.3: Auto RTL detection for Persian, Arabic, Hebrew.
82
+
83
+ ### Added
84
+ - Automatic RTL detection for Persian, Arabic, Hebrew, and Urdu
85
+ - 30% RTL character threshold for auto-detection
86
+ - `--rtl` and `--ltr` flags for manual control
87
+ - Persian-friendly fonts and layout
88
+
89
+ ### Changed
90
+ - Direction detection algorithm uses Unicode bidirectional properties
91
+
92
+ ### Fixed
93
+ - RTL rendering for mixed Persian and English text
94
+
95
+ ---
96
+
97
+ ## [0.3.2] - 2026-09-15
98
+
99
+ Phase 3.2: Tables with alignment support.
100
+
101
+ ### Added
102
+ - Markdown-style tables with `|` syntax
103
+ - Column alignment: left (`:---`), center (`:---:`), right (`---:`)
104
+ - Table header styling
105
+ - Alternating row colors
106
+
107
+ ### Fixed
108
+ - Table rendering with special characters
109
+
110
+ ---
111
+
112
+ ## [0.3.1] - 2026-09-15
113
+
114
+ Phase 3.1: Links, autolinks, strikethrough + test updates.
115
+
116
+ ### Added
117
+ - Link syntax with `[text](url)` and `[text](url "title")`
118
+ - Autolinks with `<https://example.com>`
119
+ - Strikethrough with `~~text~~`
120
+ - Links open in new tab automatically
121
+
122
+ ### Changed
123
+ - Test suite updates for new features
124
+
125
+ ---
126
+
127
+ ## [0.3.0] - 2026-09-15
128
+
129
+ Phase 2.5: Complete feature set - lightbox, themes, scroll reveal.
130
+
131
+ ### Added
132
+ - Image lightbox with keyboard navigation
133
+ - Light and dark themes
134
+ - Scroll reveal animations
135
+ - Theme switcher
136
+
137
+ ### Changed
138
+ - Complete redesign of image rendering
139
+ - Enhanced visual presentation
140
+
141
+ ---
142
+
143
+ ## [0.2.0] - 2026-09-15
144
+
145
+ Phase 2.4: Images with alignment, captions, links, and options.
146
+
147
+ ### Added
148
+ - Image syntax with `![alt](url)`
149
+ - Image options: width, height, align, caption, description, link, zoomable
150
+ - Image alignment (left, center, right)
151
+ - Image captions below images
152
+ - Clickable images with links
153
+
154
+ ### Changed
155
+ - Image rendering with wrapper elements
156
+
157
+ ---
158
+
159
+ ## [0.1.0] - 2026-09-15
160
+
161
+ Phase 1: Core - headings, paragraphs, inline formatting.
162
+
163
+ ### Added
164
+ - Heading support (H1 to H6)
165
+ - Paragraph support
166
+ - Bold (`**text**`) and italic (`*text*`) formatting
167
+ - Inline code with backticks
168
+ - Basic HTML output
169
+ - CLI entry point (`mup` command)
170
+
171
+ ### Added (within v0.1.0 development)
172
+ - Phase 2.2: Blockquotes and horizontal rules
173
+ - Phase 2.3.5: Enhanced code blocks with live preview
174
+ - Fenced code blocks with syntax highlighting
175
+ - Code block copy and download buttons
176
+ - Live preview for HTML/CSS/JS code
177
+
178
+ ---
179
+
180
+ ## Version History Summary
181
+
182
+ | Version | Date | Phase | Focus |
183
+ |---------|------|-------|-------|
184
+ | 0.1.0 | 2026-09-15 | Phase 1-2.3 | Core + Blockquotes + Code blocks |
185
+ | 0.2.0 | 2026-09-15 | Phase 2.4 | Images with options |
186
+ | 0.3.0 | 2026-09-15 | Phase 2.5 | Lightbox + Themes + Scroll reveal |
187
+ | 0.3.1 | 2026-09-15 | Phase 3.1 | Links + Autolinks + Strikethrough |
188
+ | 0.3.2 | 2026-09-15 | Phase 3.2 | Tables with alignment |
189
+ | 0.3.3 | 2026-09-16 | Phase 3.3 | Auto RTL detection |
190
+ | 0.4.0 | 2026-09-16 | Phase 3.4-3.5 | Task lists + Front matter + TOC + Footnotes |
191
+ | 0.5.0 | 2026-09-16 | Phase 4 | Variables + Conditionals + Loops + Filters |
192
+ | 0.6.0 | 2026-09-16 | Release | Custom CSS + Themes + Standalone exe |
193
+
194
+ ---
195
+
196
+ ## Upcoming Versions
197
+
198
+ ### [0.7.0] - Planned
199
+ - `@run` directive for executing HTML/JS/CSS in-place
200
+ - Nested lists
201
+ - Table cell spanning
202
+ - Better error messages with line context
203
+ - Auto-fix suggestions
204
+ - Watch mode (`mup watch`)
205
+
206
+ ### [0.8.0] - Planned
207
+ - PDF export
208
+ - Markdown export
209
+ - EPUB export
210
+ - JSON export
211
+ - Static site generation
212
+ - Custom HTML templates
213
+
214
+ ### [0.9.0] - Planned
215
+ - Incremental compilation
216
+ - Streaming parser
217
+ - Parallel rendering
218
+ - Plugin system
219
+ - Built-in plugins
220
+
221
+ ### [1.0.0] - Planned
222
+ - Stable API
223
+ - 100% test coverage on core modules
224
+ - Desktop IDE (Markup+ Studio)
225
+ - Windows installer
226
+ - Documentation website
227
+ - Video course
228
+
229
+ ---
230
+
231
+ ## Links
232
+
233
+ - [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
234
+ - [Semantic Versioning](https://semver.org/spec/v2.0.0.html)
235
+ - [Markup+ Repository](https://github.com/ataee-dev/markup-plus)
236
+ - [Markup+ Issues](https://github.com/ataee-dev/markup-plus/issues)
237
+ - [Markup+ Discussions](https://github.com/ataee-dev/markup-plus/discussions)
238
+
239
+ ---
240
+
241
+ ## Contact
242
+
243
+ - Email: hosseinataee2009@gmail.com
244
+ - Repository: https://github.com/ataee-dev/markup-plus
245
+
246
+ ---
247
+
248
+ Markup+ Non-Commercial License
249
+ Copyright 2026 Hossein Ataee
@@ -0,0 +1,187 @@
1
+ Contributor Code of Conduct
2
+ ============================
3
+
4
+ Version: 0.6.0
5
+ Last Updated: January 2026
6
+
7
+ ---
8
+
9
+ Our Pledge
10
+ ----------
11
+
12
+ We as members, contributors, and leaders pledge to make participation
13
+ in our community a harassment-free experience for everyone, regardless
14
+ of age, body size, visible or invisible disability, ethnicity, sex
15
+ characteristics, gender identity and expression, level of experience,
16
+ education, socio-economic status, nationality, personal appearance,
17
+ race, caste, color, religion, or sexual identity and orientation.
18
+
19
+ We pledge to act and interact in ways that contribute to an open,
20
+ welcoming, diverse, inclusive, and healthy community.
21
+
22
+ ---
23
+
24
+ Our Standards
25
+ -------------
26
+
27
+ Examples of behavior that contributes to a positive environment for
28
+ our community include:
29
+
30
+ - Demonstrating empathy and kindness toward other people
31
+ - Being respectful of differing opinions, viewpoints, and experiences
32
+ - Giving and gracefully accepting constructive feedback
33
+ - Accepting responsibility and apologizing to those affected by our
34
+ mistakes, and learning from the experience
35
+ - Focusing on what is best not just for us as individuals, but for the
36
+ overall community
37
+
38
+ Examples of unacceptable behavior include:
39
+
40
+ - The use of sexualized language or imagery, and sexual attention or
41
+ advances of any kind
42
+ - Trolling, insulting or derogatory comments, and personal or political
43
+ attacks
44
+ - Public or private harassment
45
+ - Publishing others' private information, such as a physical or email
46
+ address, without their explicit permission
47
+ - Other conduct which could reasonably be considered inappropriate in
48
+ a professional setting
49
+
50
+ ---
51
+
52
+ Enforcement Responsibilities
53
+ ----------------------------
54
+
55
+ Community leaders are responsible for clarifying and enforcing our
56
+ standards of acceptable behavior and will take appropriate and fair
57
+ corrective action in response to any behavior that they deem
58
+ inappropriate, threatening, offensive, or harmful.
59
+
60
+ Community leaders have the right and responsibility to remove, edit,
61
+ or reject comments, commits, code, wiki edits, issues, and other
62
+ contributions that are not aligned to this Code of Conduct, and will
63
+ communicate reasons for moderation decisions when appropriate.
64
+
65
+ ---
66
+
67
+ Scope
68
+ -----
69
+
70
+ This Code of Conduct applies within all community spaces, and also
71
+ applies when an individual is officially representing the community
72
+ in public spaces. Examples of representing our community include
73
+ using an official email address, posting via an official social media
74
+ account, or acting as an appointed representative at an online or
75
+ offline event.
76
+
77
+ ---
78
+
79
+ Enforcement
80
+ -----------
81
+
82
+ Instances of abusive, harassing, or otherwise unacceptable behavior
83
+ may be reported to the community leaders responsible for enforcement
84
+ at:
85
+
86
+ hosseinataee2009@gmail.com
87
+
88
+ All complaints will be reviewed and investigated promptly and fairly.
89
+
90
+ All community leaders are obligated to respect the privacy and
91
+ security of the reporter of any incident.
92
+
93
+ ---
94
+
95
+ Enforcement Guidelines
96
+ ----------------------
97
+
98
+ Community leaders will follow these Community Impact Guidelines in
99
+ determining the consequences for any action they deem in violation
100
+ of this Code of Conduct:
101
+
102
+ ### 1. Correction
103
+
104
+ Community Impact: Use of inappropriate language or other behavior
105
+ deemed unprofessional or unwelcome in the community.
106
+
107
+ Consequence: A private, written warning from community leaders,
108
+ providing clarity around the nature of the violation and an
109
+ explanation of why the behavior was inappropriate. A public apology
110
+ may be requested.
111
+
112
+ ### 2. Warning
113
+
114
+ Community Impact: A violation through a single incident or series of
115
+ actions.
116
+
117
+ Consequence: A warning with consequences for continued behavior. No
118
+ interaction with the people involved, including unsolicited
119
+ interaction with those enforcing the Code of Conduct, for a specified
120
+ period of time. This includes avoiding interactions in community
121
+ spaces as well as external channels like social media. Violating
122
+ these terms may lead to a temporary or permanent ban.
123
+
124
+ ### 3. Temporary Ban
125
+
126
+ Community Impact: A serious violation of community standards,
127
+ including sustained inappropriate behavior.
128
+
129
+ Consequence: A temporary ban from any sort of interaction or public
130
+ communication with the community for a specified period of time. No
131
+ public or private interaction with the people involved, including
132
+ unsolicited interaction with those enforcing the Code of Conduct, is
133
+ allowed during this period. Violating these terms may lead to a
134
+ permanent ban.
135
+
136
+ ### 4. Permanent Ban
137
+
138
+ Community Impact: Demonstrating a pattern of violation of community
139
+ standards, including sustained inappropriate behavior, harassment of
140
+ an individual, or aggression toward or disparagement of classes of
141
+ individuals.
142
+
143
+ Consequence: A permanent ban from any sort of public interaction
144
+ within the community.
145
+
146
+ ---
147
+
148
+ Attribution
149
+ -----------
150
+
151
+ This Code of Conduct is adapted from the Contributor Covenant,
152
+ version 2.1, available at:
153
+
154
+ https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
155
+
156
+ Community Impact Guidelines were inspired by Mozilla's code of
157
+ conduct enforcement ladder:
158
+
159
+ https://github.com/mozilla/diversity
160
+
161
+ For answers to common questions about this code of conduct, see the
162
+ FAQ at:
163
+
164
+ https://www.contributor-covenant.org/faq
165
+
166
+ Translations are available at:
167
+
168
+ https://www.contributor-covenant.org/translations
169
+
170
+ ---
171
+
172
+ Contact
173
+ -------
174
+
175
+ For questions or concerns about this Code of Conduct, contact:
176
+
177
+ Hossein Ataee
178
+ Email: hosseinataee2009@gmail.com
179
+ Repository: https://github.com/ataee-dev/markup-plus
180
+
181
+ ---
182
+
183
+ Last updated: January 2026
184
+ Version: 0.6.0
185
+
186
+ Markup+ Non-Commercial License
187
+ Copyright 2026 Hossein Ataee