-
Notifications
You must be signed in to change notification settings - Fork 87
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hyphenate attributes with certain prefixes #737
Open
dyve
wants to merge
21
commits into
main
Choose a base branch
from
feature/hyphenate-attribute-prefixes
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
21 commits
Select commit
Hold shift + click to select a range
58cdcb3
Convert underscore to hyphens in generic attributes names
yakky 79ec0c4
Merge branch 'main' into main
yakky 9eff7a7
Merge branch 'main' into main
yakky fa66cdd
Add tests
yakky ee731a4
Merge branch 'main' into main
yakky 160c05c
Merge branch 'main' into main
yakky 0649cd9
Merge branch 'main' into main
dyve c17ca5e
Merge branch 'main' into main
dyve 3387f87
Format
dyve cbe1bb4
Clean up settings, add setting
dyve 3d63db5
With parameter
dyve f57c348
Simplify
dyve 4730bd2
Improve
dyve 893305a
Improve
dyve 580632f
Add documentation
dyve 6b784af
Update src/django_bootstrap5/html.py
dyve 91e8344
Update src/django_bootstrap5/html.py
dyve 704fcf3
Reformat
dyve c2dd052
Update src/django_bootstrap5/html.py
dyve 469f794
Add tests
dyve 8ed9f4e
Format tests
dyve File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,9 @@ | ||
from copy import copy | ||
|
||
from django.forms.utils import flatatt | ||
from django.utils.html import format_html | ||
|
||
from django_bootstrap5.core import get_bootstrap_setting | ||
from django_bootstrap5.text import text_value | ||
from django_bootstrap5.utils import get_url_attrs | ||
|
||
|
@@ -17,8 +20,24 @@ def render_link_tag(url): | |
return render_tag("link", attrs=attrs, close=False) | ||
|
||
|
||
def has_prefix(name, prefixes): | ||
"""Return whether the name has one of the given prefixes.""" | ||
return name.startswith(tuple(f"{prefix}_" for prefix in prefixes)) | ||
|
||
|
||
def hyphenate(attr_name): | ||
"""Return the hyphenated version of the attribute name.""" | ||
return attr_name.replace("_", "-") | ||
|
||
|
||
def render_tag(tag, attrs=None, content=None, close=True): | ||
"""Render an HTML tag.""" | ||
prefixes = get_bootstrap_setting("hyphenate_attribute_prefixes") or [] | ||
if attrs: | ||
for attr_name, attr_value in copy(attrs).items(): | ||
if has_prefix(attr_name, prefixes): | ||
attrs[hyphenate(attr_name)] = attr_value | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe error out or warn if the hyphenate key already exists? |
||
del attrs[attr_name] | ||
attrs_string = flatatt(attrs) if attrs else "" | ||
builder = "<{tag}{attrs}>{content}" | ||
content_string = text_value(content) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not specifying should result in the default value being used.